CHANGES
=======

1.22.0
------

* base64 encode user\_data sent to create server
* Remove novaclient from shade's dependencies
* Translate final nova calls to REST
* Convert remaining nova tests to requests\_mock
* Convert host aggregates calls to REST
* Convert host aggregate tests to requests\_mock
* Convert hypervisor list to REST
* Convert hypervisor test to requests\_mock
* Convert Server Groups to REST
* Convert server group tests to requests\_mock
* Convert FakeSecGroup to dict
* Remove use of FakeServer from tests
* Don't remove top-container element for user and project REST API calls
* Convert keypairs calls to REST
* Add normalization and functional tests for keypairs
* Remove future document
* Add text about microversions
* Convert keypairs tests to requests\_mock
* Convert list\_servers to REST
* Convert list servers tests to requests\_mock
* Remove some unused mocks
* Break early from volume cleanup loop
* Add some release notes we forgot to add
* Retry to fetch paginated volumes if we get 404 for next link
* docs: make the first example easier to understand
* Properly expand server dicts after rebuild and update
* Migrate non-list server interactions to REST
* Increase timeout for volume tests
* Skip pagination test for now
* Fix urljoin for neutron endpoint
* Remove py34 and pypy in tox
* Replace six.iteritems() with .items()
* Update tests for server calls that aren't list
* Convert delete server calls to REST
* Convert delete server mocks to requests\_mock
* Convert get\_server\_by\_id
* RESTify create\_server
* Don't fetch extra\_specs in functional tests
* Convert create\_server mocks to request\_mock
* Add boot from volume unit tests
* Cleanup volumes in functional tests in parallel
* De-client-ify Project Update
* De-client-ify Project Create
* De-client-ify Project Delete
* De-client-ify Project List
* Don't remove top-container element for sec group REST API calls
* Improve grant docs on when and how use domain arg
* Don't remove top-container for stack and zone REST API calls
* Updated from global requirements
* Rename obj\_to\_dict and obj\_list\_to\_dict
* Don't remove top-container element for network REST API calls
* Convert data from raw clients to Munch objects
* Remove unneeded calls to shade\_exceptions
* Don't remove top-container element for volume REST API calls
* Use get\_discovery from keystoneauth
* De-client-ify User Ops
* Add links to user list dict
* Avoid keystoneclient making yet another discovery call
* Use shade discovery for keystone
* Updated from global requirements
* Migrate dns to new discovery method
* Generalize version discovery for re-use
* Pass hints to Cinder scheduler in create\_volume
* Remove designate client from shade's dependencies
* Do less work when deleting a server and floating ips
* Remove designateclient from commands related to recordsets
* Add pagination for the list\_volumes call
* Handle ports with no 'created\_at' attribute
* Update test\_user\_update\_password to overlay clouds.yaml
* Fix legacy clients helpers
* Remove unused occ version tie
* Remove designateclient from commands related to zones
* Add documentation about shade's use of logging
* Add novaclient interactions to http\_debug
* Set some logger names explicitly
* Add logging of non-standard error message documents
* Log specific error message from RetriableConnectionFailure
* Updated from global requirements
* Fix python3 issues in functional tests
* Add time reporting to Connection Retry message
* Log cloud name on Connection retry issues
* Use catalog endpoint on any errors in image version discovery

1.21.0
------

* Pick most recent rather than first fixed address
* Allow a user to submit start and end time as strings
* Fix get\_compute\_limits error message
* Fix get\_compute\_usage normalization problem
* Find private ip addr based on fip attachment
* Add ability to run any tox env in python3
* Fix issue with list\_volumes when pagination is used
* Make sure security\_groups is always a list
* Updated from global requirements
* Remove direct uses of nova\_client in functional tests
* Updated from global requirements
* Remove designateclient mock from recordset tests
* Convert list\_server\_security\_groups to REST
* Remove two unused nova tasks
* Include error message from server if one exists
* Optimize the case of versioned image endpoint in catalog
* Fix broken version discovery endpoints
* Remove cinderclient from install-tips.sh
* Fix tips jobs and convert Nova Floating IP calls
* Convert first ironic\_client test to REST
* Move mocks of designate API discovery calls to base test class
* Fix exception when using boot\_from\_volume for create\_server
* Move legacy client constructors to mixin
* Fix pep8 errors that were lurking
* Remove cinder client
* Make deprecated client helper method
* Add 'public' as a default interface for get\_mock\_url
* Add super basic machine normalization
* Remove designateclient mock from zones tests
* Remove direct calls to cinderclient
* Add "Multi Cloud with Shade" presentation
* Use REST API for volume quotas calls
* Add pprint and pformat helper methods
* extend security\_group and \_rule with project id
* Remove neutronclient from shade's dependencies
* Remove cinderclient mocks from quotas tests
* Fix Neutron floating IP test
* Use REST API for volume snapshot calls
* Remove usage of neutron\_client from functional tests
* Enable neutron service in server create and rebuild tests
* Replace neutronclient with REST API calls in FIP commands
* Updated from global requirements
* Add assert\_calls check testing volume calls with timeout enabled
* Remove has\_service mock from Neutron FIP tests
* Remove cinderclient mocks from snapshot tests
* Remove neutronclient mocks from floating ips tests
* Use REST API for volume attach and volume backup calls
* Replace neutronclient with REST API calls in ports commands
* Don't get ports info from unavailable neutron service
* Removing unsed fake methods and classes
* Replace neutronclient with REST API calls in quotas commands
* Replace neutronclient with REST API calls in security groups commands
* Use REST API for volume delete and detach calls
* Use REST API for volume type\_access and volume create
* Refactor the test\_create\_volume\_invalidates test
* Replace neutronclient with REST API calls in router commands
* Move REST error\_messages to error\_message argument
* Remove two lines that are leftover and broken
* Convert test\_role\_assignments to requests mock
* Remove neutronclient mocks from sec groups tests
* Remove neutronclient mocks from quotas tests
* Remove neutronclient mocks from ports tests
* Add optional error\_message to adapter.request
* Add in a bunch of TODOs about interface=admin
* Set interface=admin for keystonev2 keystone tests
* Add a \_normalize\_volume\_backups method
* Use requests-mock for the volume backup tests
* Remove neutronclient mocks from router tests
* Replace neutronclient with REST API calls in subnet commands
* Define a base function to remove unneeded attributes
* Remove neutronclient mocks from subnet tests
* Replace neutronclient with REST API calls in network commands
* Move router related tests to separate module
* Updated from global requirements
* Move subnet related tests to separate module
* Fix list\_servers tests to not need a ton of neutron
* Remove neutronclient mocks from network create tests
* Remove neutronclient mocks from network exceptions tests
* Remove neutronclient mocks from network delete tests
* Remove neutronclient mocks from network list tests
* Use requests-mock for the list/add/remove volume types tests
* Fix create/rebuild tests to not need a ton of neutron
* Don't do all the network stuff in the rebuild poll
* Move unit tests for list networks to test\_network.py file
* Include two transitive dependencies to work around conflicts
* Use requests-mock for all the attach/detach/delete tests
* Remove stray line
* Strip trailing slashes in test helper method

1.20.0
------

* Clarify some variable names in glance discovery
* \_discover\_latest\_version is private and not used
* Remove extra unneeded API calls
* Change versioned\_endpoint to endpoint\_uri
* Futureproof keystone unit tests against new occ
* Actually fix the app\_name protection
* Replace nova security groups with REST
* Transition nova security group tests to REST
* Remove dead ImageSnapshotCreate task
* Pass in app\_name information to keystoneauth
* Use REST for cinder list volumes
* Upgrade list volumes tests to use requests-mock
* Updated from global requirements
* Pass shade version info to session user\_agent
* Use keystone\_session in \_get\_raw\_client
* Don't fail on security\_groups=None
* Stop defaulting container\_format to ovf for vhd
* Don't run extra server info on every server in list
* Use REST for neutron floating IP list
* Migrate create\_image\_snapshot to REST
* Add ability to configure extra\_specs to be off
* Migrate server snapshot tests to requests\_mock

1.19.0
------

* Add test to validate multi \_ heat stack\_status
* Fixed stack\_status.split() exception
* Add server security groups to shade
* Updated from global requirements
* Add bare parameter to get/list/search server
* Update tox build settings
* Take care of multiple imports and update explanation
* Reenable hacking tests that already pass
* Enable H201 - don't throw bare exceptions
* Enable H238 - classes should be subclasses of object
* Fix a few minor annoyances that snuck in
* Don't use project-id in catalog tests
* Change metadata to align with team affiliation

1.18.1
------

* Move futures to requirements

1.18.0
------

* Remove python-heatclient and replace with REST
* Replace heatclient testing with requests\_mock
* Add normalization for heat stacks
* Add list\_availability\_zone\_names method
* Switch list\_floating\_ip\_pools to REST
* Strip out novaclient extra attributes
* Convert floating\_ip\_pools unittest to requests\_mock
* Migrate get\_server\_console to REST
* Migrate server console tests to requests\_mock
* Fix old-style mocking of nova\_client
* Accept device\_id option when updating ports
* Get rid of magnumclient dependency
* attach\_volume should always return a vol attachment
* wait\_for\_server: ensure we sleep a bit when waiting for server
* delete\_server: make sure we sleep a bit when waiting for server deletion
* Convert magnum service to requests\_mock
* RESTify cluster template tests
* Add normalization for cluster templates
* Get the ball rolling on magnumclient
* Use data when the request has a non-json content type
* Cleanup some workarounds for old OCC versions
* add separate releasenotes build
* Update sphinx and turn on warnings-is-error
* Convert test\_identity\_roles to requests mock
* change test\_endpoints to use requests mock

1.17.0
------

* Depend on pbr>=2.0.0
* Convert test\_services to requests\_mock
* Only do fnmatch compilation and logging once per loop
* Put fnmatch code back, but safely this time
* Replace keystone\_client mock in test\_groups
* Use unicode match for name\_or\_id
* Raise a more specific exception on nova 400 errors
* Don't glob match name\_or\_id
* Rename ClusterTemplate in OpenStackCloud docs
* Fix OpenStack and ID misspellings
* Remove service names in OpenStackCloud docs
* Convert test\_object to use .register\_uris
* Convert use of .register\_uri to .register\_uris
* Change request\_id logging to match nova format
* Actually normalize nova usage data
* Fix several concurrent shade gate issues
* Wait for volumes to detach before deleting them
* Add accessor method to pull URLs from the catalog
* Convert use of .register\_uri to .register\_uris
* Remove keystoneclient mocks in test\_caching for users
* Remove mock of keystoneclient for test\_caching for projects
* Remove mock of keystone where single projects are consumed
* Rename demo\_cloud to user\_cloud
* Add all\_projects parameter to list and search servers
* Convert test\_project to requests\_mock
* convert test\_domain to use requests\_mock
* Move mock utilies into base
* Convert test\_users to requests\_mock
* Add request validation to user v2 test
* Convert first V3 keystone test to requests\_mock
* Cleanup new requests\_mock stuff for test\_users
* First keystone test using request\_mock

1.16.0
------

* Add test of attaching a volume at boot time
* pass -1 for boot\_index of non-boot volumes
* Pass task to post\_task\_run hook
* Rename ENDPOINT to COMPUTE\_ENDPOINT
* Transition half of test\_floating\_ip\_neutron to requests\_mock
* Start switching neutron tests
* Port in log-on-failure code from zuul v3
* Honor cloud.private in the check for public connectivity
* Support globbing in name or id checks
* Stop spamming logs with unreachable address message
* Remove troveclient from the direct dependency list
* Move nova flavor interactions to REST
* Migrate flavor usage in test\_create\_server to request\_mock
* Migrate final flavor tests to requests\_mock
* Move flavor cache tests to requests\_mock
* Transition nova flavor tests to requests\_mock
* Add ability to create image from volume

1.15.0
------

* Use port list to find missing floating ips
* Process json based on content-type
* Copy in needed template processing utils from heatclient
* Upload images to swift as application/octet-stream
* Add ability to stream object directly to file
* Update coding document to mention direct REST calls
* Skip discovery for neutron
* Add helper test method for registering REST calls
* Do neutron version discovery and change one test
* Add raw client constructors for all the things
* Replace SwiftService with direct REST uploads
* Fix spin-lock behavior in \_iterate\_timeout
* Add helper script to install branch tips
* Basic volume\_type access
* Add support to task manager for async tasks
* Added list\_flavor\_access
* Removes unnecessary utf-8 encoding
* Log request ids when debug logging is enabled
* Honor image\_endpoint\_override for image discovery
* Rework limits normalization

1.14.1
------

* Handle pagination for glance images
* Add support for using the default subnetpool
* Remove link to modindex

1.14.0
------

* Fix exception name typo
* Add failure check to node\_set\_provision\_state
* Add test to verify devstack keystone config
* Make assert\_calls a bit more readable
* Update swift exception tests to use 416
* Make delete\_object return True and False
* Switch swift calls to REST
* Stop using full\_listing in prep for REST calls
* Stop calling HEAD before DELETE for objects
* Replace mocks of swiftclient with request\_mock
* Put in magnumclient service\_type workaround
* Let use\_glance handle adding the entry to self.calls
* Combine list of calls with list of request assertions
* Extract helper methods and change test default to v3
* Make munch aware assertEqual test method
* Extract assertion method for asserting calls made
* Change get\_object\_metadata to use REST
* Update test of object metadata to mock requests
* Add release notes and an error message for release
* Add total image import time to debug log
* Clear the exception stack when we catch and continue
* Magnum's keystone id is container-infra, not container
* Stop double-reporting extra\_data in exceptions
* Pass md5 and sha256 to create\_object sanely
* Convert glance parts of task test to requests\_mock
* Collapse base classes in test\_image
* Skip volume backup tests on clouds without swift
* Add new attributes to floating ips
* Add test to trap for missing services
* Change fixtures to use https
* Honor image\_api\_version when doing version discovery
* Replace swift capabilities call with REST
* Change register\_uri to use the per-method calls
* Convert test\_create\_image\_put\_v2 to requests\_mock
* Remove caching config from test\_image
* Move image tests from caching to image test file
* Remove glanceclient and warlock from shade
* Remove a few glance client mocks we missed
* Change image update to REST
* Make available\_floating\_ips use normalized keys
* Fix \_neutron\_available\_floating\_ips filtering
* Stop telling users to check logs
* Plumb nat\_destination through for ip\_pool case
* Update image downloads to use direct REST
* Move image tasks to REST
* Add support for limits
* Tox: optimize the \`docs\` target
* Replace Image Create/Delete v2 PUT with REST calls
* Replace Image Creation v1 with direct REST calls
* Remove test of having a thundering herd
* Pull service\_type directly off of the Adapter
* Add compute usage support

1.13.2
------

* Re-add metadata to image in non-strict mode
* Added documentation for delete\_image()
* Add an e to the word therefore
* Allow server to be snapshot to be name, id or dict
* Add docstring for create\_image\_snapshot
* Allow security\_groups to be a scalar
* Remove stray debugging line
* Start using requests-mock for REST unit tests
* Have OpenStackHTTPError inherit from HTTPError
* Use REST for listing images
* Create and use a Adapter wrapper for REST in TaskManager
* Normalize volumes
* Expose visibility on images

1.13.1
------

* Be specific about protected being bool
* Remove pointless and fragile unittest
* Fail up to date check on one out of sync value
* Normalize projects
* Cache file checksums by filename and mtime
* Only generate checksums if neither is given
* Make search\_projects a special case of list\_projects
* Make a private method more privater

1.13.0
------

* Add unit test to show herd protection in action
* Refactor out the fallback-to-router logic
* Update floating ip polling to account for DOWN status
* Use floating-ip-by-router
* Don't fail on trying to delete non-existant images
* Allow server-side filtering of Neutron floating IPs
* list\_servers(): thread safety: never return bogus data
* Depend on normalization in list\_flavors
* Add unit tests for image and flavor normalization
* Add strict mode for trimming out non-API data
* list\_security\_groups: enable server-side filtering
* Don't fail image create on failure of cleanup
* Try to return working IP if we get more than one
* Add test for os\_keystone\_role Ansible module
* Document and be more explicit in normalization
* Add external\_ipv4\_floating\_networks
* Logging: avoid string interpolation when not needed
* Add a devstack plugin for shade
* Allow setting env variables for functional options
* Add test for os\_keystone\_domain Ansible module
* Add abililty to find floating IP network by subnet
* Remove useless mocking in tests/unit/test\_shade.py
* Fix TypeError in list\_router\_interfaces
* Fix a NameError exc in operatorcloud.py
* Fix some docstrings
* Fix a NameError exception in \_nat\_destination\_port
* Implement create/get/list/delete volume backups
* Move normalize\_neutron\_floating\_ips to \_normalize
* Delete image if we timeout waiting for it to upload
* Add description field to create\_user method
* Allow boolean values to pass through to glance
* Update location info to include object owner
* Move and fix security group normalization
* Add location field to flavors
* Move normalize\_flavors to \_normalize
* Move image normalize calls to \_normalize
* Add location to server record
* Start splitting normalize functions into a mixin
* Make sure we're matching image status properly
* Normalize images
* Add helper properties to generate location info
* Update simple\_logging to not not log request ids by default
* Add simple field for disabled flavors
* List py35 in the default tox env list
* remove\_router\_interface: check subnet\_id or port\_id is provided
* Add test for os\_group Ansible module
* Add support for jmespath filter expressions

1.12.1
------

* Add libffi-dev to bindep.txt

1.12.0
------

* Use list\_servers for polling rather than get\_server\_by\_id
* Fix up image and flavor by name in create\_server
* Batch calls to list\_floating\_ips
* Allow str for ip\_version param in create\_subnet
* Skip test creating provider network if one exists
* Revert per-resource dogpile.cache work
* Fix two minor bugs in generate\_task\_class
* Change naming style of submitTask
* Add submit\_function method to TaskManager
* Refactor TaskManager to be more generic
* Poll for image to be ready for PUT protocol
* Cleanup old internal/external network handling
* Support dual-stack neutron networks
* Rename \_get\_free\_fixed\_port to \_nat\_destination\_port
* Log request ids
* Detect the need for FIPs better in auto\_ip
* Delete objname in image\_delete
* Move list\_server cache to dogpile
* Ensure per-resource caches work without global cache
* Support more than one network in create\_server
* Add support for fetching console logs from servers
* Allow image and flavor by name for create\_server
* Allow object storage endpoint to return 404 for missing /info endpoint
* Batch calls to list\_floating\_ips
* Get the status of the ip with ip.get('status')
* Stop getting extra flavor specs where they're useless
* Change deprecated assertEquals to assertEqual
* Use cloud fixtures from the unittest base class
* Add debug logging to unit test base class
* Update HACKING.rst with a couple of shade specific notes
* Only run flake8 on shade directory
* Add bindep.txt file listing distro depends
* Set physical\_network to public in devstack test
* Use "image" as argument for Glance V1 upload error path
* Honor default\_interface OCC setting in create\_server
* Validate config vs reality better than length of list
* Base auto\_ip on interface\_ip not public\_v4
* Add tests to show IP inference in missed conditions

1.11.1
------

* Deal with clouds that don't have fips betterer

1.11.0
------

* Infer nova-net security groups better
* Add update\_endpoint()
* Protect cinderclient import
* Do not instantiate logging on import
* Don't supplement floating ip list on clouds without
* Move list\_ports to using dogpile.cache
* Create and return per-resource caches
* Lay the groundwork for per-resource cache

1.10.0
------

* Rename baymodel to cluster\_template
* Make shared an optional keyword param to create\_network
* Add a 'meta' passthrough parameter for glance images
* Allow creating a floating ip on an arbitrary port
* Add ability to upload duplicate images
* Fix requirements for broken os-client-config
* Add new test with betamax for create flavors
* Stop creating cloud objects in functional tests
* Move list\_magnum\_services to OperatorCloud
* Go ahead and admit that we return Munch objects
* Depend on python-heatclient>=1.0.0
* Add update\_server method
* Remove discover from test-requirements
* Update hacking version
* Change operating to interacting with in README
* Add floating IPs to server dict ourselves
* Treat DELETE\_COMPLETE stacks as NotFound
* Add support for changing metadata of compute instances
* Use keystoneauth.betamax for shade mocks
* Add network quotas support
* Add reno note for create\_object and update\_object
* Add magnum services call to shade
* Add function to update object metadata
* incorporate unit test in test\_shade.py, remove test\_router.py fix tenant\_id in router add functional test test\_create\_router\_project to functional/test\_router.py add unit/test\_router.py add project\_id to create\_router
* Add magnum baymodel calls to shade
* Make it easier to give swift objects metadata
* Add volume quotas support
* Add quotas support

1.9.0
-----

* Add error logging around FIP delete
* Be more precise in our detection of provider networks
* Rework delete\_unattached\_floating\_ips function
* Make sure Ansible tests only use cirros images
* Don't fail getting flavors if extra\_specs is off
* Add initial setup for magnum in shade
* Amend the valid fields to update on recordsets
* Move cloud fixtures to independent yaml files
* Add support for host aggregates
* Add support for server groups
* Add release note doc to dev guide

1.8.0
-----

* Add Designate recordsets support
* Add support for Designate zones
* Fail if FIP doens't have the requested port\_id
* Add public helper method for cleaning floating ips
* Rework floating ip use test to be neutron based
* Delete floating IP on nova refresh failure
* Retry floating ip deletion before deleting server
* Have delete\_server use the timed server list cache
* Document create\_stack
* delete\_stack add wait argument
* Implement update\_stack
* Fix string formatting
* Add domain\_id param to project operations
* Remove get\_extra parameter from get\_flavor
* Honor floating\_ip\_source: nova everywhere
* Use configured overrides for internal/external
* Start stamping the has\_service debug messages
* Consume floating\_ip\_source config value
* Honor default\_network for interface\_ip
* Refactor the port search logic
* Allow passing nat\_destination to get\_active\_server
* Add nat\_destination filter to floating IP creation
* Refactor guts of \_find\_interesting\_networks
* Search subnets for gateway\_ip to discover NAT dest
* Consume config values for NAT destination
* Return boolean from delete\_project
* Correct error message when domain is required
* Add release note about the swift Large Object changes
* Delete image objects after failed upload
* Delete uploaded swift objects on image delete
* Add option to control whether SLO or DLO is used
* Upload large objects as SLOs
* Set min\_segment\_size from the swift capabilities
* Don't use singleton dicts unwittingly
* Update func tests for latest devstack flavors
* Fix search\_domains when not passing filters
* Wrap stack operations in a heat\_exceptions
* Use event\_utils.poll\_for\_events for stack polling
* Follow name\_or\_id pattern on domain operations

1.7.0
-----

* Remove conditional blocking on server list
* Cache ports like servers
* Workaround multiple private network ports
* Reset network caches after network create/delete
* Fix test\_list\_servers unit test
* Fix test\_get\_server\_ip unit test
* Remove duplicate FakeServer class from unit tests
* Mutex protect internal/external network detection
* Support provider networks in public network detection
* Re-allow list of networks for FIP assignment
* Support InsecureRequestWarning == None
* Add release notes for new create\_image\_snapshot() args
* Split waiting for images into its own method

1.6.2
-----

* Add wait support to create\_image\_snapshot()
* Also add server interfaces for server get
* Import os module as it is referenced in line 2097
* Fix grant\_role docstring

1.6.1
-----

* Add default value to wait parameter

1.6.0
-----

* Use OpenStackCloudException when \_delete\_server() raises
* Always do network interface introspection
* Fix race condition in deleting volumes
* Use direct requests for flavor extra\_specs set/unset
* Fix search\_projects docstring
* Fix search\_users docstring
* Add new tasks to os\_port playbook
* Deal with is\_public and ephemeral in normalize\_flavors
* Create clouds in Functional Test base class
* Run extra specs through TaskManager and use requests
* Bug fix: Make set/unset of flavor specs work again
* Refactor unit tests to construct cloud in base
* Add constructor param to turn on inner logging
* Log inner\_exception in test runs
* Pass specific cloud to openstack\_clouds function
* Make get\_stack fetch a single full stack
* Add environment\_files to stack\_create
* Add normalize stack function for heat stack\_list
* Add wait\_for\_server API call
* Update create\_endpoint()
* Make delete\_project to call get\_project
* Test v3 params on v2.0 endpoint; Add v3 unit
* Add update\_service()
* Use network in neutron\_available\_floating\_ips
* Allow passing project\_id to create\_network

1.5.1
-----

* In the service lock, reset the service, not the lock
* Bug fix: Do not fail on routers with no ext gw

1.5.0
-----

* Mock glance v1 image with object not dict
* Use warlock in the glance v2 tests
* Fixes for latest cinder and neutron clients
* Add debug message about file hash calculation
* Pass username/password to SwiftService
* Also reset swift service object at upload time
* Invalidate volume cache when waiting for attach
* Use isinstance() for result type checking
* Add test for os\_server Ansible module
* Fix create\_server() with a named network
* os\_router playbook cleanup
* Fix heat create\_stack and delete\_stack
* Catch failures with particular clouds
* Allow testing against Ansible dev branch
* Recognize subclasses of list types
* Add ability to pass just filename to create\_image
* Add support for provider network options
* Remove mock testing of os-client-config for swift
* Add a method to download an image from glance
* Add test option to use Ansible source repo
* Add enabled flag to keystone service data
* Clarify Munch object usage in documentation
* Add docs tox target
* create\_service() should normalize return value
* Prepare functional test subunit stream for collection
* Use release version of Ansible for testing
* Modify test workaround for extra\_dhcp\_opts
* Fix for stable/liberty job
* granting and revoking privs to users and groups
* Add release note for FIP timeout fix
* include keystonev2 role assignments
* Add release note for new get\_object() API call
* Pass timeout through to floating ip creation
* Fix normalize\_role\_assignments() return value
* Remove a done todo list item
* add the ability to get an object back from swift
* allow for updating passwords in keystone v2
* Support neutron subnets without gateway IPs
* Save the adminPass if returned on server create
* Fix unit tests that validate client call arguments
* Allow inventory filtering by cloud name
* Add range search functionality

1.4.0
-----

* correct rpmlint errors
* Add tests for stack search API
* Fix filtering in search\_stacks()
* Bug fix: Cinder v2 returns bools now
* Normalize server objects
* Make server variable expansion optional
* Have inventory use os-client-config extra\_config
* Fix unittest stack status
* Fix shade tests with OCC 1.13.0
* No Mutable Defaults
* Add option to enable HTTP tracing
* Add support for querying role assignments
* Add inventory unit tests
* Fix server deletes when cinder isn't available
* Pedantic spelling correction
* Bug fix: create\_stack() fails when waiting
* Stack API improvements
* Bug fix: delete\_object() returns True/False
* Add wait support for ironic node [de]activate
* Improve test coverage: container/object list API
* Make a new swift client prior to each image upload
* Improve test coverage: volume attach/detach API
* Bug fix: Allow name update for domains
* Improve test coverage: network delete API
* Bug fix: Fix pass thru filtering in list\_networks
* Consider 'in-use' a non-pending volume for caching
* Improve test coverage: private extension API
* Improve test coverage: hypervisor list
* Use reno for release notes
* Improve test coverage: list\_router\_interfaces API
* Change the client imports to stop shadowing
* Use non-versioned cinderclient constructor
* Improve test coverage: server secgroup API
* Improve test coverage: container API

1.3.0
-----

* Improve test coverage: project API
* Improve test coverage: user API
* Provide a better comment for the object short-circuit
* Remove cinderclient version pin
* Add functional tests for boot from volume
* Enable running tests against RAX and IBM
* Don't double-print exception subjects
* Accept objects in name\_or\_id parameter
* Normalize volume objects
* Fix argument sequences for boot from volume
* Make delete\_server() return True/False
* Adjust conditions when enable\_snat is specified
* Only log errors in exceptions on demand
* Fix resource leak in test\_compute
* Clean up compute functional tests
* Stop using nova client in test\_compute
* Retry API calls if they get a Retryable failure
* Fix call to shade\_exceptions in update\_project
* Add test for os\_volume Ansible module

1.2.0
-----

* Fix for min\_disk/min\_ram in create\_image API
* Add test for os\_image Ansible module
* Fix warnings.filterwarnings call
* boot-from-volume and network params for server create
* Do not send 'router:external' unless it is set
* Add test for os\_port Ansible module
* Allow specifying cloud name to ansible tests
* Fix a 60 second unit test
* Make sure timeouts are floats
* Remove default values from innner method
* Bump os-client-config requirement
* Add test for os\_user\_group Ansible module
* Add user group assignment API
* Add test for os\_user Ansible module
* Add test for os\_nova\_flavor Ansible module
* Stop using uuid in functional tests
* Make functional object tests actually run
* Add Ansible object role
* Fix for create\_object
* Four minor fixes that make debugging better
* Add new context manager for shade exceptions, final
* Add ability to selectively run ansible tests
* Add Ansible testing infrastructure
* Add new context manager for shade exceptions, cont. again
* Pull server list cache setting via API
* Plumb fixed\_address through add\_ips\_to\_server
* Let os-client-config handle session creation
* Remove designate support
* Remove test reference to api\_versions
* Update dated project methods
* Fix incorrect variable name
* Add CRUD methods for keystone groups
* Bump ironicclient depend
* Make sure cache expiration time is an int
* Add new context manager for shade exceptions, cont
* Use the requestsexceptions library
* Don't warn on configured insecure certs
* Normalize domain data
* Normalization methods should return Munch
* Fix keystone domain searching
* Add new context manager for shade exceptions
* teach shade how to list\_hypervisors
* Update ansible router playbook
* Stop calling obj\_to\_dict everwhere
* Always return a munch from Tasks
* Make raw-requests calls behave like client calls
* Minor logging improvements
* Remove another extraneous get for create\_server
* Don't wrap wrapped exception in create\_server
* Skip an extra unneeded server get
* Don't wrap wrapped exceptions in operatorcloud.py
* Add docs for create\_server
* Update README to not reference client passthrough
* Move ironic client attribute to correct class
* Move \_neutron\_exceptions context manager to \_utils
* Fix misspelling of ironic state name
* Timeout too aggressive for inspection tests
* Split out OpenStackCloud and OperatorCloud classes
* Adds volume snapshot functionality to shade
* Fix the return values of create and delete volume
* Remove removal of jenkins clouds.yaml
* Consume /etc/openstack/clouds.yaml
* Add logic to support baremetal inspection

1.0.0
-----

* node\_set\_provision\_state wait/timeout support
* Add warning suppression for keystoneauth loggers
* Suppress Rackspace SAN warnings again
* return additional detail about servers
* expand security groups in get\_hostvars\_from\_server
* add list\_server\_security\_groups method
* Add swift object and container list functionality
* Translate task name in log message always
* Add debug logging to iterate timeout
* Change the fallback on server wait to 2 seconds
* Add entry for James Blair to .mailmap
* handle routers without an external gateway in list\_router\_interfaces
* Fix projects list/search/get interface
* Remove unused parameter from create\_stack
* Move valid\_kwargs decorator to \_utils
* Add heat support
* Abstract out the name of the name key
* Add heatclient support
* Use OCC to create clouds in inventory
* novaclient 2.32.0 does not work against rackspace
* Support private address override in inventory
* Normalize user information
* Set cache information from clouds.yaml
* Make designate record methods private for now
* Rely on devstack for clouds.yaml
* Rename identity\_domain to domain
* Rename designate domains to zones
* Replace Bunch with compatible fork Munch
* Make a few IP methods private

0.16.0
------

* Push filtering down into neutron
* Make floating IP func tests less racey
* Make router func tests less racey
* Create neutron floating ips with server info
* Undecorate cache decorated methods on null cache
* Tweak create\_server to use list\_servers cache
* Add API method to list router interfaces
* Handle list\_servers caching more directly
* Split the nova server active check out
* Pass wait to add\_ips\_to\_server
* Fix floating ip removal on delete server
* Document filters for get methods
* Add some more docstrings
* Remove shared=False from get\_internal\_network
* Make attach\_instance return updated volume object
* Tell git to ignore .eggs directory
* Align users with list/search/get interface
* Add script to document deleting private networks
* Add create/delete for keystone roles
* Accept and emit union of keystone v2/v3 service
* Use keystone v3 service type argument
* Add get/list/search methods for identity roles
* Add methods to update internal router interfaces
* Add get\_server\_by\_id optmization
* Add option to floating ip creation to not reuse
* Provide option to delete floating IP with server
* Update python-troveclient requirement
* Add a private method for nodepool server vars
* Update required ironicclient version
* Split get\_hostvars\_from\_server into two
* Invalidate image cache everytime we make a change
* Use the ipaddress library for ip calculations
* Optimize network finding
* Fix create\_image\_snapshot

0.15.0
------

* Return IPv6 address for interface\_ip on request
* Plumb wait and timout down to add\_auto\_ip
* Pass parameters correctly for image snapshots
* Fix mis-named has\_service entry
* Provide shortcut around has\_service
* Provide short-circuit for finding server networks
* Update fake to match latest OCC
* Dont throw exception on missing service
* Add functional test for private\_v4
* Attempt to use glanceclient strip\_version
* Fix baremetal port deletion

0.14.0
------

* Add router ansible test and update network role
* Trap exceptions in helper functions
* Add more info to some exceptions
* Allow more complex router updates
* Allow more complex router creation
* Allow creating externally accessible networks
* Handle glance v1 and v2 difference with is\_public
* Get defaults for image type from occ
* Use the get\_auth function from occ
* Add a NullHandler to all of our loggers
* Remove many redundant debug logs
* Make inner\_exception a private member
* Just do the error logging in the base exception
* Store the inner exception when creating an OSCException
* Start using keystoneauth for keystone sessions
* Move keystone to common identity client interface
* Bump the default API version for python-ironicclient
* Avoid 2.27.0 of novaclient
* unregister\_machine blocking logic
* Fix exception lists in functional tests
* Migrate neutron to the common client interface
* Remove last vestige of glanceclient being different
* Pass timeout to session, not constructors
* Delete floating ip by ID instead of name

0.13.0
------

* Move glanceclient to new common interface
* Addition of shade unregister\_machine timeout
* Initial support for ironic enroll state
* Add flavor access API
* Make client constructor calls consistent
* Change functional testing to use clouds.yaml
* Add a developer coding standards doc

0.12.0
------

* Add flavor functional tests
* Bug fix for obj\_to\_dict()
* Add log message for when IP addresses fail
* Add methods to set and unset flavor extra specs
* Listing flavors should pull all flavors
* Be consistent with accessing server dict
* Throw an exception on a server without an IP
* Be smarter finding private IP
* Clarify future changes in docs
* Remove meta.get\_server\_public\_ip() function
* Document create\_object
* Remove unused server functions
* Fix two typos and one readablity on shade documentation
* Pass socket timeout to swiftclient
* Process config options via os-client-config
* Update ansible subnet test
* Fix test\_object.py test class name
* Fix for swift servers older than 1.11.0
* Use disable\_vendor\_agent flags in create\_image
* Use os-client-config SSL arg processing
* Correctly pass the server ID to add\_ip\_from\_pool
* Add initial designate read-only operations
* Always use a fixed address when attaching a floating IP to a server
* Catch leaky exceptions from create\_image()

0.11.0
------

* Add flavor admin support
* Fix debug logging lines
* Account for Error 396 on Rackspace
* Fix small error in README.rst
* Allow use of admin tokens in keystone
* Fix identity domain methods
* Update ansible module playbooks
* Rework how we get domains
* Fix "Bad floatingip request" when multiple fixed IPs are present
* Add Ansible module test for subnet
* Add Ansible module test for networks
* Add a testing framework for the Ansible modules
* Support project/tenant and domain vs. None
* Add CRUD methods for Keystone domains

0.10.0
------

* Raise exception for nova egress secgroup rule
* Modify secgroup rule processing
* Make sure we are returning floating IPs in current domain
* Correctly name the functional TestImage class

0.9.0
-----

* Locking ironic API microversion
* Add Neutron/Nova Floating IP tests
* Adding SSL arguments to glance client
* Remove list\_keypair\_dicts method
* Do not use environment for Swift unit tests
* Add Neutron/Nova Floating IP attach/detach
* Fix available\_floating\_ip when using Nova network
* Skip Swift functional tests if needed
* Fix AttributeError in keystone functional tests
* Update keypair APIs to latest standards
* Add Neutron/Nova Floating IP delete (i.e. deallocate from project)
* Add Neutron/Nova Floating IP create (i.e. allocate to project)
* Convert ironicclient node.update() call to Task
* Convert ironicclient node.get() call to Task
* Move TestShadeOperator in a separate file
* Fix intermittent error in unit tests
* Pin cinderclient
* Add comment explaining why finding an IP is hard
* Add IPv6 to the server information too
* Use accessIPv4 and accessIPv6 if they're there
* Add Neutron/Nova Floating IP list/search/get

0.8.2
-----

* Catch all exceptions around port for ip finding
* Centralize exception management for Neutron

0.8.1
-----

* Fix MD5 headers regression
* Ensure that service values are strings
* Pass token and endpoint to swift os\_options
* Convert ironicclient node.validate() call to Task
* Convert ironicclient node.list() call to Task
* Return True/False for delete methods

0.8.0
-----

* Add delete method for security group rules
* Add get\_server\_external\_ipv6() to meta
* Refactor find\_nova\_addresses()
* Replace get\_server\_public\_ip() with get\_server\_external\_ipv4()
* Add get\_server\_external\_ipv4() to meta
* Add more parameters to update\_port()
* Improve documentation for create\_port()
* Correct get\_machine\_by\_mac and add test
* Add create method for secgroup rule
* Coalesce port values in secgroup rules
* Move \_utils unit testing to separate file

0.7.0
-----

* Add secgroup update API
* Add very initial support for passing in occ object
* Don't emit volume tracebacks in inventory debug
* Return new secgroup object
* Port ironic client port.get\_by\_address() to a Task
* Port ironic client port.get() to a Task
* Add inventory command to shade
* Extract logging config into a helper function
* Add create method for security groups
* Add delete method for security groups
* Switch to SwiftService for segmented uploads
* Add support to get a SwiftService object
* Add port resource methods
* Split security group list operations
* Add keystone endpoint resource methods
* Add Keystone service resource methods
* Rely on defaults being present
* Consume os\_client\_config defaults as base defaults
* Remove hacking select line
* Add design for an object interface
* Port ironic client node.list\_ports() to a Task
* Port ironic client port.list() to a Task
* Split list filtering into \_utils

0.6.5
-----

* Cast nova server object to dict after refetch
* Split iterate\_timeout into \_utils
* Cleanup OperatorCloud doc errors/warnings
* Update pbr version pins

0.6.4
-----

* Set metadata headers on object create

0.6.3
-----

* Always refresh glanceclient for tokens validity
* Don't cache keystone tokens as KSC does it for us
* Make sure glance image list actually runs in Tasks

0.6.2
-----

* Make caching work when cloud name is None
* Handle novaclient exception in delete\_server wait
* Support PUT in Image v2 API
* Make ironic use the API version system
* Catch client exceptions during list ops
* Replace ci.o.o links with docs.o.o/infra
* Pass OS\_ variables through to functional tests
* Improve error message on auth\_plugin failure
* Handle novaclient exceptions during delete\_server
* Add floating IP pool resource methods
* Don't error on missing certs

0.6.1
-----

* Stop leaking server objects
* Use fakes instead of mocks for data objects
* Update images API for get/list/search interface
* Rewrite extension checking methods
* Update server API for get/list/search interface
* Fix delete\_server when wait=True
* Return Bunch objects instead of plain dicts

0.6.0
-----

* Switch tasks vs put on a boolean config flag
* Enhance the OperatorCloud constructor
* Convert node\_set\_provision\_state to task
* Update recent Ironic exceptions
* Enhance error message in update\_machine
* Rename get\_endpoint() to get\_session\_endpoint()
* Make warlock filtering match dict filtering
* Fix exception re-raise during task execution for py34
* Add more tests for server metadata processing
* Add thread sync points to Task
* Add early service fail and active check method
* Add a method for getting an endpoint
* Raise a shade exception on broken volumes
* Split exceptions into their own file
* Add minor OperatorCloud documentation
* Allow for int or string ID comparisons
* Change ironic maintenance method to align with power method
* Add Ironic machine power state pass-through
* Update secgroup API for new get/list/search API
* Fix functional tests to run against live clouds
* Add functional tests for create\_image
* Do not cache unsteady state images
* Add tests and invalidation for glance v2 upload
* Allow complex filtering with embedded dicts
* Call super in OpenStackCloudException
* Add Ironic maintenance state pass-through
* Add update\_machine method
* Replace e.message with str(e)
* Update flavor API for new get/list/search API
* Add a docstring to the Task class
* Remove REST links from inventory metadata
* Have get\_image\_name return an image\_name
* Fix get\_hostvars\_from\_server for volume API update
* Add test for create\_image with glance v1
* Explicitly request cloud name in test\_caching
* Add test for caching in list\_images
* Test flavor cache and add invalidation
* Fix major update\_user issues
* create\_user should return the user created
* Test that deleting user invalidates user cache
* Use new getters in update\_subnet and update\_router
* Update volume API for new getters and dict retval
* Search methods for networks, subnets and routers
* Update unregister\_machine to use tasks
* Invalidate user cache on user create
* Update register\_machine to use tasks
* Add test of OperatorCloud auth\_type=None
* Allow name or ID for update\_router()
* Allow name or ID for update\_subnet()
* Add test for user\_cache
* MonkeyPatch time.sleep in unit tests to avoid wait
* Add patch\_machine method and operator unit test substrate
* Wrap ironicclient methods that leak objects
* Basic test for meta method obj\_list\_to\_dict
* Change Ironic node lookups to support names
* Add meta method obj\_list\_to\_dict
* Add test for invalidation after delete
* Deprecate use of cache in list\_volumes
* Invalidate volume list cache when creating
* Make cache key generator ignore cache argument
* Add get\_subnet() method
* Add API method update\_subnet()
* Add API method delete\_subnet()
* Add API method create\_subnet()
* Unsteady state in volume list should prevent cache
* Test volume list caching
* Allow passing config into shade.openstack\_cloud
* Refactor caching to allow per-method invalidate
* Add tests for caching
* Rename auth\_plugin to auth\_type
* Update os-client-config min version
* Fix volume operations
* Fix exception in update\_router()
* Add API auto-generation based on docstrings

0.5.0
-----

* Fix docs nit - make it clear the arg is a string
* Poll on the actual image showing up
* Add delete\_image call
* Skip passing in timeout to glance if it's not set
* Add some unit test for create\_server
* Migrate API calls to task management
* Fix naming inconsistencies in rebuild\_server tests
* Add task management framework
* Namespace caching per cloud
* Allow for passing cache class in as a parameter
* Add 'rebuild' to shade
* Let router update to specify external gw net ID
* Create swift container if it does not exist
* Fix a use of in where it should be equality
* Disable warnings about old Rackspace certificates
* Pass socket timeout to all of the Client objects
* Add methods for logical router management
* Add api-level timeout parameter
* Custom exception needs str representation

0.4.0
-----

* Add basic unit test for shade.openstack\_cloud
* Small fixes found working on ansible modules
* Disable dogpile.cache if cache\_interval is None
* Add support for keystone projects
* Fix up and document input parameters
* Handle image name for boot from volume
* Clean up race condition in functional tests
* Add initial compute functional tests to Shade
* Add cover to .gitignore
* Add ironic node deployment support
* Align cert, key, cacert and verify with requests
* Add methods to create and delete networks
* Add behavior to enable ironic noauth mode
* Reorder envlist to avoid the rm -fr .testrepository when running tox -epy34

0.3.0
-----

* Make image processing work for v2
* Utilize dogpile.cache for caching
* Add support for volume attach/detach
* Do not allow to pass \*-cache on init
* Import from v2 instead of v1\_1
* Add unit test for meta.get\_groups\_from\_server
* Add unit tests for meta module
* Add a method to create image snapshots from nova
* Return extra information for debugging on failures
* Don't try to add an IP if there is one
* Revamp README file
* Add hasExtension method to check cloud capabilities
* Don't compare images when image is None
* Add service\_catalog property
* Remove unnecessary container creation
* Make is\_object\_stale() a public method
* Fix broken object hashing
* Adds some more swift operations
* Adds get\_network() and list\_networks function
* Add support for creating/deleting volumes
* Get auth token lazily
* Pass service\_name to nova\_client constructor
* Create a neutron client
* Port to use keystone sessions and auth plugins
* Add consistent methods for returning dicts
* Add get\_flavor method
* Make get\_image return None
* Use the "iterate timeout" idiom from nodepool
* Fix obj\_to\_dict type filtering
* Adds a method to get security group
* Pull in improvements from nodepool
* Remove positional args to create\_server
* Don't include deleted images by default
* Add image upload support
* Refactor glance version call into method
* Support uploading swift objects
* Debug log any time we re-raise an exception
* Remove py26 support
* Explain obj\_to\_dict
* Fix python3 unittests
* Change meta info to be an Infra project
* Fix flake8 errors and turn off hacking
* Fix up copyright headers
* Add better caching around volumes
* Support boot from volume
* Make get\_image work on name or id
* Add some additional server meta munging
* Support injecting mount-point meta info
* Move ironic node create/delete logic into shade
* Refactor ironic commands into OperatorCloud class
* fix typo in create\_server
* Don't die if we didn't grab a floating ip
* Process flavor and image names
* Stop prefixing values with slugify
* Don't access object members on a None
* Make all of the compute logic work
* Add delete and get server name
* Fixed up a bunch of flake8 warnings
* Add in server metadata routines
* Plumb through a small name change for args
* Consume project\_name from os-client-config
* add Ironic client
* Updates to use keystone session
* Discover Trove API version
* Offload config to the os-client-config library
* Add example code to README
* Add volumes and config file parsing
* Fix log invocations
* Remove some extra lines from the README
* Add the initial library code
* Initial cookiecutter repo
