## 3.5 (2019-01-16)
### New Features:
* Primary IPs can now be swapped between servers with `update server
  --swap-ips-with <server>` and all IPs can be swapped between two servers
  with `update server --swap-extra-ips --swap-ips-with <server>`


## 3.4 (2018-11-06)
### New Features:
* Discs can be moved between servers using the `update disc` command and the
  new `--new-server` flag
* Grant command can now grant privileges to users using api keys
* API keys can be used for authentication (with access restricted to
  Bytemark Cloud Server's APIs)
* API keys can be managed with the `add api key`, `delete api key`, `show
  api keys`, and `grant privilege` (with --api-key flag) and `revoke
  privilege` commands.
### Admin changes:
* `add vm default` has been added, allowing staff to create
  publicly-accessible server configurations for use in tutorials, 1-click
  installs, etc.


## 3.3 (2018-08-21)
### New Admin Features:
* `show dependant servers` command for viewing servers on a head, tail or
  storage pool at a given time
* `show dependant discs` command for viewing discs on a head, tail or
  storage pool at a given time
## Fixes:
* The `--recursive` flag is no longer required to delete non-empty groups.
* `migrate server` now outputs the VM's hostname correctly when the
  migration has been started.
* The .tar.gz files available on repo.bytemark.co.uk are now gzipped and not
  merely pretending to be.


## 3.2 (2018-05-14)
### Changes:
* `show servers` now takes a group instead of an account by default.
  `--account <account>` can be specified to list all servers on an account.
* `profiles` and `scripting` have been updated to match the 3.0+ updates.
### Fixes:
* `update config --account <account>` no longer fails if a billing account
  cannot be found for the named account (but a Bytemark Cloud account can)
* `--output-format` is no longer clobbered by `--table-fields`
* `--output-format=list` now produces a list with no lines between columns,
  nor between the header and the body of the list


## 3.1 (2018-05-08)
### Admin changes:
* `approve server`, `reject server`, `reify disc`, `reap servers` commands
  have all been removed
* ApproveVMs, RejectVMs, ReifyDisc, ReapVMs methods have all been removed
  from Client interface and bytemarkClient struct.
### Fixes:
* Authentication with a token as a user other than $USER (or the value in
  your config-dir) no longer fails with a messages about being an unexpected
  user.
* add ip command no longer makes requests to incorrect URL, causing failure


## 3.0 (2018-04-10)
### New Features:
* `assent` command has been added to mark an account as having assented to
  new terms of business.
* `restart server` (previously `restart`) and `start server` (previously
  `start`) can now start a server up in the rescue netboot appliance with
  the `--netboot` flag, or into any appliance with the `--appliance <name>`
  flag.
### New Admin Features:
* impersonation support using `--impersonate` global flag. (see `bytemark
  help`)
* `create migration` command for creating a MigrationJob. See
  the help for this command - it's really very good.
* `show migrations` command for inspecting MigrationJobs
* `show migration` command for inspecting a single MigrationJob
* `update migration` command for altering MigrationJob-style migrations
* `set iops limit` command for limiting a disc or server's IOPS
* `update billing-definition` command
* `show disc by id` command
### Changes:
* Numerous commands have been renamed / altered:
  - `config` renamed to `show config`
  - `config set` & `config unset` have been merged into `update config` (see
    `help update config`)
  - `create backup` renamed to `backup discs`
  - `create discs` renamed to `add discs`
  - `create group` renamed to `add group`
  - `create server` renamed to `add server`
  - `grant` and `revoke` renamed to `grant privilege` and `revoke privilege`
  - `list accounts` renamed to `show accounts`
  - `list backups` renamed to `show backups`
  - `list discs` renamed to `show discs`
  - `list groups` renamed to `show groups`
  - `list keys` renamed to `show keys`
  - `list servers` renamed to `show servers`
  - `overview` renamed to `show overview`
  - `resize disc` renamed to `update disc` (see `help update disc`)
  - `set cdrom`, `set cores`, `set hwprofile`, `set memory`, `lock
     hwprofile`, `unlock hwprofile` and `move` have all been merged
     into `update server` (see `help update server`)
  - `show disc` can now take a disc ID with no server specified.
  - `signup` has been removed
  - `hwprofiles` renamed to `show hwprofiles`
  - `images` renamed to `show images`
  - `storage` renamed to `show storage`
  - `zones` renamed to `show zones`
* Numerous admin commands have been renamed / altered:
  - `cancel migration disc` and `cancel migration server` merged into
    `cancel migration` (see `help cancel migration`)
  - `create user` renamed to `add user`
  - `create ip range` renamed to `add ip range`
  - `create vlan-group` renamed to `add vlan group`
  - `show stopped eligible vms` renamed to `show waiting servers`
  - `show recent vms` renamed to `show recent servers`
  - `show migrating vms` renamed to `show migrating servers`
* `add server` (previously `create server`) now outputs the group and
  account in the pre-flight check
* `debug` now outputs the response from the server to stdout
* `restart server` (previously `restart`) now cleanly shuts down the server
  before restarting it.
* `show config` (previously `config`) now supports --json and --table.
* more commands support `--json`, `--table`, `--output-format` and
  `--table-fields` (basically everything in `show` supports theme)
* RPM repository at https://repo.bytemark.co.uk/bytemark-client/rpm is now
  GPG-signed.
* RPM repo file at
  https://repo.bytemark.co.uk/bytemark-client/rpm/bytemark-client.repo now
  has gpgkey parameter to allow automatic download of the GPG public key
  from secure.bytemark.co.uk.
* Various bits of help text have been improved
Fixes:
* supplying --json or --table to show keys (prev. list keys) no longer causes
  a crash
* `show account` and `show overview` (previously `overview`) no longer
  fail when the account has no billing details.
* parsing `--account` flag no longer crashes in some circumstances


## 2.5.1 (2017-09-20)
Added tools/LICENSE.txt and tools/VERIFICATION.txt to the Chocolatey
package. This update only affects windows, and is necessary because
Chocolatey's automated validation now requires them, and bytemark-client 2.5
was not published as a result


## 2.5 (2017-09-18)
Changes:
* Fix SIGSEGV when launching a browser (bytemark console --panel)
* Remove duplicate notice that a browser is going to be launched
* A backup schedule is now added to a server's first disc by default, set
  --backup-schedules to 'none' to disable it.
Admin-only changes:
* Improve output for show migrating_discs, show head, show heads
* Add MigrationProgress, MigrationEta and MigrationSpeed fields on discs


## 2.4 (2017-06-27)
### New features
* Support for backups via the `create backup`, `delete backup`, `schedule
  backups`, `unschedule backups`, `show disc` and `list backups` commands.
* Support for longer session validities than the old default of 5 minutes.
  Use the --session-validity global flag & config variable to set your
  session validity. Otherwise, it will default to the new default of 30
  minutes.


## 2.3 (2017-06-14)
### New features
* Logging in with 2-factor authentication is now supported, but setting up
  2-factor auth is not yet ready.
* Added a new table output format using `--table` and `--table-fields` to
  most commands which support `--json` output. `--table` and `--json` are
  now aliases for the global flag `--output-format <json | table>` - which
  can also be specified using `config set output-format`. The default
  output format for most commands is 'human' - which behaves the same as
  previous versions, but is 'table' for admin-only commands.
  Table output is not intended to be machine readable and the list of
  fields displayed by default for any given command may change between
  releases of bytemark-client. Use the 'json' `--output-format` or the
  `list` commands for any scripting.
  Specify `--table-fields help` to see the available fields for a command
  There is an additional output-format called 'debug' which outputs the
  object as go code.
* Added the `commands` command, which displays a list of all the commands
  available in bytemark-client.
* `show server` will now accept a server's ID instead of a name.
* `images`, `zones`, `storage` and `hwprofiles` commands can now be output
  as JSON or tables using the `--output-format`, `--json`, or `--table`
  flags.
### Changes / Fixes
* specifying --yubikey will now prompt you to login again if your current
  auth token was not created using a yubikey
* some commands were not correctly setting a default account, forcing the
  end user to specify their server in server.group.account form, or their
  group in group.account form. This has now been fixed and should be
  consistent across all commands.
* the --group global flag / config var was being ignored. Now it gets
  used.
* 401 Unauthorized errors are now handled gracefully. These errors occur
  when your authentication token is invalid or unset, whereas 403
  Forbidden errors occur when your token is valid but you do not have
  permission to access something.
* Brain accounts without a matching billing account now show their VMs
  under show account / list servers.
* `resize disk` now works again
### New admin commands
* approve server
* cancel migration disc
* cancel migration server
* create ip_range
* create user
* create vlan_group
* delete vlan
* empty head
* empty storage_pool
* empty tail
* reap vm
* regrade disc
* reify discs
* reject server
* update head
* update migration
* update storage_pool
* update tail
### Admin-only changes
  * show ip_range now accepts CIDR representation as well as ID
  * account name defaulting behaviour on Bytemark internal/staging brains
    is now better
  * show head[s] now correctly display whether the heads are online


## 2.2.1 (2017-03-20)
### Fixes
* many commands required fully-specified groups or servers when they
  should've been more permissive and used defaulting.


## 2.2 (2017-03-16)
### New features
* Added admin-only commands accessible by adding the --admin global flag
* Added list of admin-only commands to 'bytemark help admin'
* Added grant & revoke commands for dealing with privileges
* Added show privileges command
* Added --version flag - just prints the version and exits
### Changes
* An error that shouldn't ever be seen (NilAuthError) has been made more
  user-friendly
* Debug output (written to debug.log) now has a header containing useful info
  (client version, exact invocation)
* Almost all arguments are now specifiable as flags
* Signup form now maxes out at 120 characters wide
* overview command now has a limit on how many servers per group it will
  show
* reimage and create server now check that the image requested exists
* global flags now appear in the `bytemark help` output
* improved detection of default account for 'show account' and 'overview'
* prevent users from uploading private keys in 'add key'
* add key now supports key filename being passed as an argument
### Fixes
* show account now detects default accounts decently again. This bug should
  be well and truly squashed now
* Fixed formatting on the USAGE section of help formatting
* Certain error messages from the API are now dealt with better
* HTTP 500 (Internal Server Errors) are handled much better now
* Some error messages that were output twice are now only output once


## 2.1 (2016-12-29)
### New features
* `bytemark set cdrom` has been added to set the URL of an ISO for a server.
* bytemark config set now validates values - account name typos should be
  a thing of the past :-)
### Changes
* RPM packages are now signed
* man page has been made nicer.
* man page is the same on macOS as Linux now.
* Disc labels are now generated as 'disc-N', where N is the index of the
  disc or one larger than the largest other disc with a 'disc-N' label,
  whichever is larger. This matches the panel's behaviour.
* The --no-discs flag on create server has been removed due to the endpoint
  no longer supporting it.
* The list of images in `bytemark images` and `bytemark storage grades` are
  now sorted.
### Fixes
* bytemark delete key now accepts the --user flag instead of producing an
  error
* bytemark show user now works instead of erroring.
* -v | --version now shows the current version instead of producing an error
* RPM package now contains the man page, instead of 2 copies of the client
  itself.
* Users no longer get asked to file a bug report when they enter invalid
  login details


## 2.0.1 (2016-12-20)
### Changes
  * Registering a card (such as during signup) now sends a token to SPP.


## 2.0 (2016-11-11)
### New features
* --admin flag to enable admin-mode, which adds more commands to the
  client . Admin commands can only be used by cluster admins.
* admin command: show heads. this is only an initial version and will
  change over time.
### Changes
* Input errors (not enough arguments, too many arguments, incorrect flags)
  now output only one error and don't show the help for that command,
  instead suggesting you look at the help for that command.
* add key now errors when no key is entered.
* Improve algorithm for figuring out which account is default, and make
  list commands use the same algorithm as other commands.
* Reordered address fields in the signup form
* Stabilised the order of the IP address list on each server
* Improved output when the brain returns an HTTP 400 (Bad Request)

### Fixes
* Numerous small code fixes
* Update panel URL to panel.bytemark.co.uk
* Fix address for bytemark-internal panel
* Recursive group delete now outputs correctly
* Confirmation prompts in reimage and create server commands now appears
  on own line
* --ip flag on create server now works
* Numerous typo fixes
* Remove some unintended debug output
* Fix create server erroring out every time (despite success)
* --auth-endpoint now works.
* in show and overview, servers with no discs now display correctly


## 1.1 (2016-09-20)
Prevent the following from being output to the log file during account
creation:
  * card reference
  * user password
Also prevent card references from being output to the log file whenever
account information is downloaded, and root passwords for servers being
output to the log file during reimaging and server creation.
Passwords during the authentication step have never been logged.
Temporarily this means that less debugging information is available.
A better, more precise fix for this secrets-leaking will be available in
either version 2.0 or 2.1.
No new features or other changes in this release.


## 1.0 (2016-07-11)
### New features
* overview command - shows an overview of what accounts the user can access
* move command - rename a server and/or move it between groups
### Changes: 
* show account, show group and show server now have different, prettier
  output
* prompt for confirmation on all commands that could increase cost or delete
  data (delete disc, delete group --recursive, delete server, set memory and
  set cores)
* help text is now better in many places
* 'undelete server' has been renamed to 'restore server'
* Add --ssh-args to console command, so that you can specify a different key
  to use, etc.
### Fixes
* show server: Correct IPv4 addresses are shown 
* create server: firstboot script no longer ignored
* reimage/create server: fix bug with authorized-keys-file


## 0.7.1 (2016-05-20)
* No changes; this is a repackage of 0.7.0's code with a new build pipeline


## 0.7.0 (2016-05-09)
### New features
* New commands: `signup`, `add ip`
* Add a man page (all platforms except Windows)
### Changes
* Tweak the header-line of servers in the show command
* Help command now shows subcommands (e.g. `bytemark help show` shows the
  help for show and indicates that `show server` and `show account`, etc.
  exist.
* xdg-utils no longer a dependency, is a suggested instead. (debian package
  only)
* Better help text for the `config` command
* Add confirmation step to reimage command.
* `show account` shows more (billing) details about the account
### Fixes
* Fix crash when zero arguments given
* Fix finding a default account
* Fix list servers when no account specified
* Add unit tests for lib.User and fix a terrible bug
* Ensure that create server doesn't allow memory to be 0.
* Nicer output when xdg-open can't be run.


## 0.6.0 (2016-04-08)
### New features: 
* deleted servers are shown when using `list servers`
* --json flag added to `create server`

### Changes: 

* Much better help text for all commands
* --force and --silent flags have been removed
* Mention of non-existent `delete account` command has been removed


## 0.5.0 (2016-03-10)
### New features: None!
### Changes
* MIT licensed (hooray)
* Build number no longer part of version number.
### Fixes: 
* Hook up VNC and serial commands
* console connection instructions improved for v6-only clusters
* Entering a nonexistent flag no longer produces weird output
* Accounts with no owner/tech contact no longer cause crashes
* Shutdown now keeps the VM off once run.


## 0.4.268 (2016-02-17)
* Switch to native package format & versioning


## 0.4.254-1 (2016-02-16)

* Fix issues with the change log


## 0.4.253-1 (2016-02-16)

### New features
* `show account` now shows owner & tech contact details
* last debug.log is kept as debug.log.1

### Changes
* `create vm`, `show vm`, `list vms` now use 'server' in place of 'vm'

### Fixes

* `config set` now checks whether the var you're setting is real.
* power commands output correct help info
* power commands check for too many arguments
* `create server` now takes arguments after the name, bringing it in line
  with the help.



## 0.3.0-1 (2016-02-09)
* First attempt at packaging bytemark-client for debian *properly*


