CHANGES
=======

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
