# CHANGELOG

## [17.2.3.1] - 2017-08-11
### Fixed
- Updated docs and example in `pod_clone_task`
- Add validation to `pod_clone_task`

## [17.2.3.0] - 2017-08-09
### Fixed
- Typo in `AuthenticationError` exception message

## [17.1.8.0] - 2017-06-22
### Added
- `user_account_search_iter` which combines the power of `user_account_search` with the familiarity of
  `user_account_list` but uses a generator to efficiently handle paging

### Changed
- `user_account_list` now returns a list, undoing the proceeding release change

## [17.1.6.0] - 2017-06-14
### Added
- Methods for vm snapshots
    - `PowerState` enum
    - `vm_inventory_add` method
    - `vm_snapshot_add` method
    - `vm_snapshot_edit` method
    - `vm_snapshot_get_list` method
    - `vm_snapshot_get_tree` method
    - `vm_snapshot_remove` method
    - `vm_snapshot_revert` method

### Changed
- `user_account_list` to make many small requests using user.account.search
- `user_account_list` now returns a generator

## [17.1.4.1] - 2017-06-07
### Fixed
- setup.py wasn't packaging netlab.enums module

## [17.1.4.0] - 2017-06-05
### Fixed
- Unit type to 'Percent' in PRTG sample script for CPU so that gauages work properly
- sys_maint_ends property is now a date instead of datetime
- Pod clone specs in sample.py uses dictionary syntax now, so the specs apply to all VMs in the pod

### Added
- Methods for managing timezones NETLAB+ is aware of, `system_time_timezone_get` and `system_time_timezone_list`
- `user_account_search` method and new exceptions

### Changed
- HDR Severity and Status are now Enums
- CSV types and other limted sets of values are now Enums
- `pod_clone_task` now returns HDR Result for server versions 17.1.4 and later
- Return results for `pod_remove_task` are now backwards compatible with versions below 17.1.3

### Removed
- `user_account_filter`, its functionality has been replaced with the server side method `user_account_search`

## [17.1.3.1] - 2017-04-27
### Fixed
- sample.py script for removing pods. Switched to use HDR result
- serialization of date types before sending to NETLAB+
- situations where `user_community_find` can return None

### Added
- User settings for `user_account_add`, `user_account_get`, `user_account_update`
- Sample code for creating PRTG custom sensors for CPU, Disk and Memory usage
- Server version checking. The system usage methods require a minimum server version

## [17.1.3.0] - 2017-04-13
### Added
- New methods `system.usage.cpu`, `system.usage.disk`, `system.usage.memory`
- New properties cpu_n and uptime_sec to `system.status.get`

### Removed
- notify_complete and notify_progress parameters to `pod_remove_task`

### Changed
- `pod.remove.task` refactored to use HDR result
- S3 bucket to 'netlab-py'
- properties param to use default/all style for the following methods: `class_list`, `class_get`, `class_roster_list`,
  `pod_get`, `pod_types_get`, `pod_types_list`, `user_community_get`, `user_community_list`

### Fixed
- Make sure config file path exists before writing to it.

## [17.1.2.4] - 2017-02-23
### Fixed
- Setup.py not installing all netlab modules properly

## [17.1.2.3] - 2017-02-23
### Fixed
- PC Clone specs handling of clone_snapshot to use existing VM if not specified
- Use project JSON serializer in CLI api subcommand. Handles dates and other types specific to NETLAB.

### Added
- User import sample script. Reads from a CSV file.

### Changed
- `res_timeslot_adjuster` has been changed to a static method and renamed to `reservation_timeslot_adjuster`.
  It is no longer used by `reservervation_make` and end_time must reside on a time slot boundary (hour or half hour).
- Renamed the tround_low parameter of `reservation_timeslot_adjuster` to be round_low.
- Made 'ALL' the default scope for `reservation_query`.

## [17.1.2.2] - 2017-02-13
### Fixed
- PC Clone specs handling of source_snapshot to use existing VM if not specified
- Display error if the number of PC Clone specs doesn't match the number of VMs to clone

## [17.1.2.1] - 2017-02-13
### Changed
- CLI uses proper exit codes after errors

### Fixed
- Pc Clone specs handling of clone name

## [17.1.2.0] - 2017-02-10
### Added
- Docs are built and published to S3 at same time package is built and published
- CLI api subcommand --output to change how output is displayed. Option: table, csv, tsv, json and var
- CLI config subcommand --all option to remove all settings from config.json
- Individual exceptions for each NETLAB+ error
- Add exceptions to documenation

### Changed
- `vm_datacenter_list` now uses the native API method **vm.datacenter.list**
- CHANGELOG moved to its own file

## [17.1.1.1] - 2017-02-06
### Fixed
- Documentation for properties in `ClassApiMixin.class_get`, `ClassApiMixin.class_list`, and
  `ReservationApiMixin.reservation_get`

### Removed
- No longer includes the `long_description` metadata parameter in setup.py

## [17.1.1.0] - 2017-02-06
### Added
- MIT License
- Pod ACL methods
- Spinx autogenerates docs from docstrings of API methods
- `netlab config` CLI subcommand for managing config.json
- `netlab api` CLI subcommand for interacting with the NETLAB+ API

### Fixed
- `netlab version` CLI subcommand properly returns versions now

### Changed
- All properties that should be integers are coerced to the `int` type, i.e. _acc_id_, _com_id_, etc. Previously,
  they could sometimes be returned as strings.

### Removed
- To ensure consistency with method return values, `what_if` is no longer a parameter.

## [17.1.0.0] - 2017-01-23
### Added
- All methods and documentation for initial public release.
