CHANGES
=======

1.5.1
-----

* In the service lock, reset the service, not the lock

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
* 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
