We are jazzed to announce the release of: openstacksdk 0.18.0: An SDK for building applications to work with OpenStack This release is part of the stein release series. Download the package from: https://pypi.org/project/openstacksdk For more details, please see below. 0.18.0 ^^^^^^ New Features ************ * The networking API v2 specification, which is implemented by OpenStack Neutron, features an optional routes parameter - when updating a router (PUT requests). Static routes are crucial for routers to handle traffic from subnets not directly connected to a router. The routes parameter has now been added to the OpenStackCloud.update_router method as a list of dictionaries with destination and nexthop parameters. * The "OpenStackCloud" bare metal NIC calls now support all microversions supported by the SDK. Previously version 1.6 was hardcoded. * Added "wait_for_node_reservation" to the baremetal proxy. * The bare metal operations now retry HTTP 409 and 503 by default. The number of retries can be changes via the "baremetal_status_code_retries" configuration option (defaulting to 5). * Adds support for bare metal node validation to the bare metal proxy. * Implements VIF attach/detach API for bare metal nodes. * Containers are now searchable both with a JMESPath expression or a dict of container attributes via the "openstack.connection.Connection.search_containers" function. * Implement fwaas v2 resources for managing firewall groups, rules and policies. * Added "get_object_raw" method for downloading an object from swift and returning a raw requests Response object. * The "get_machine", "update_machine" and "patch_machine" calls now support all Bare Metal API microversions supported by the SDK. Previously they used 1.6 unconditionally. * create_network now exposes the mtu api option in accordance to network v2 api. This allows the operator to adjust the given MTU value which is needed in various complex network deployments. * Add support for networks being configured as the primary nat_source in clouds.yaml. * Objects are now searchable both with a JMESPath expression or a dict of object attributes via the "openstack.connection.Connection.search_object" function. * Added "stream_object" method for getting object content in an iterator. * Added a new property, 'port_security_enabled' which is a boolean to enable or disable port_secuirty during network creation. The default behavior will enable port security, security group and anti spoofing will act as before. When the attribute is set to False, security group and anti spoofing are disabled on the ports created on this network. Upgrade Notes ************* * When using the Image API, it is no longer possible to set arbitrary properties, not known to the SDK, via "image.update_image" API. * The baremetal API now returns "available" as provision state for nodes available for deployment. Previously, "None" could be returned for API version 1.1 (early Kilo) and older. * "openstack.connection.Connection.create_object" no longer creates a container if one doesn't exist. It is the user's responsibility to create a container before using it. * In anticipation of the upcoming 1.0 release, all the things that have been marked as deprecated have been removed. * "openstack.profile.Profile" has been removed. "openstack.config" should be used directly instead. * "openstack.resource.Resource.get" has been renamed to "openstack.resource.Resource.fetch" to prevent conflicting with a "dict" method of the same name. While most consumer code is unlikely to call this method directly, this is a breaking change. * "openstack.resource.Resource.update" has been renamed to "openstack.resource.Resource.commit" to prevent conflicting with a "dict" method of the same name. While most consumer code is unlikely to call this method directly, this is a breaking change. * The base "Resource" field "location" is no longer drawn from the "Location" HTTP header, but is instead a dict containing information about cloud, domain and project. The location dict is a feature of shade objects and is being added to all objects as part of the alignment of shade and sdk. Deprecation Notes ***************** * The *OpenStackCloud* "wait_for_baremetal_node_lock" call is deprecated. Generally, users should not have to call it. The new "wait_for_node_reservation" from the baremetal proxy can be used when needed. * The "OpenStackCloud.validate_node" call was deprecated in favor of "OpenStackCloud.validate_machine". Bug Fixes ********* * Adds support for error messages from the bare metal service. * Correct updating bare metal resources. Previously an incorrect body used to be sent. * Fixed an issue where passing an iterator to the "data" parameter of "create_object" for chunked uploads failed due to attempting to calculate the length of the data. * Re-added support for *v4-fixed-ip* and *v6-fixed-ip* in the *nics* parameter to *create_server*. These are aliaes for *fixed_ip* provided by novaclient which shade used to use. The switch to REST didn't include support for these aliases, resulting in a behavior regression. Changes in openstacksdk 0.17.0..0.18.0 -------------------------------------- d91723d Support v4-fixed-ip and v6-fixed-ip in create_server a7dce7b Update sphinx extension logging d36e835 Add stackviz processing to functional tests 17230af Move wait_for_baremetal_node_lock to the baremetal proxy 41e0c46 Convert inspect_machine to use the baremetal proxy 38f6050 Adding two new regions and dynamic auth_url based on region name. 0646a73 Update ElastX cloud profile beedbcc Update Auro cloud profile c07c39b Rearrange shade image code c9e3374 Revert the Proxy metaclass 1370553 Make it clear that OpenStackCloud is a mixin 877326a Start shifting cloud object-store methods to proxy 603ba0d Remove all the deprecated stuff 25f74eb Switch bare metal NIC actions in OpenStackCloud to baremetal Proxy calls d75056a Use network proxy in openstack.cloud 5a4845c Remove duplicate code 7b8a2e0 cloud: rename with deprecation validate_node -> validate_machine af3a8f4 Wire in retries for all baremetal actions 0962342 Correct updating baremetal nodes by name or ID 3ce157c Add some warnings and clarifications for discovery 9db8bae Make RateLimitingTaskManager the TaskManager 348c9e8 Import rate limiting TaskManager from nodepool 20199e8 Remove api version default values 071e567 Use discovery instead of config to create proxies a70c291 Set endpoint_override from endpoint with noauth a030d82 Remove profile 5a99852 Support firewall service for SDK 6befbbe Clean up python3 test and split networking into a job 6b27429 Add functional tests for clustering 7721af1 Clarify error message is from nova 3f49aa3 Format URL when updating image props in Glance v1 70d665b Add compute API info and fix provider names 23c6f3a Update vendor support info for vexxhost 12a4679 Update vendor support info for switchengines 97bd7e4 Update vendor support info for ecs 943f606 Update vendor support info for catalyst b5c96c5 Restore timeout_scaling_factor d70bdeb Fix location region field in docs 1e46a95 Run all tasks through the threadpool e4ef460 Update the URL in doc fb74c7d Turn down stevedore and urllib logging f0138e4 Update .zuul.yaml 2ea35b2 Update baremetal objects with fields added up to Rocky 19124c9 Add sjc1 to vexxhost profile 595f4ca Add support for configured NAT source variable 4cdf15c Explicitly set logging levels for external libs c3e5eeb Implement network update d7470b5 Normalize security groups when using Neutron e080148 Normalize image when using PUT on Glance v2 a4f1f2f Fix typo eb92849 Consolidate cloud/base.py into functional/base.py e0c7d24 Implement volume update e40ccf7 Allow JMESPath on searching networking resources f96b132 Allow search on objects c340e20 Listing objects to return Munch objects a967956 Allow search on containers 782919e Change the method of role update cb2f9de Fix list_recordsets to deal with top-level key a748910 baremetal: implement validate_node 4dd309f Support bare metal service error messages 7488588 baremetal: support newer microversions in {get,update,patch}_machine 5abdc60 Run bifrost integration test jobs 8c2646e Listing containers to return Munch objects 46763e1 Invalidate cache upon container deletion d445987 Handle missing endpoint_data in maximum_supported_microversions edbcb6c switch documentation job to new PTI d92678a import zuul job settings from project-config 4a34f8c Alias NotFoundException to ResourceNotFound 934725d Remove the duplicated word d876240 baremetal: add support for VIF attach/detach API 04f7af7 Use the base Resource's JSON patch support in Image 14b4609 Correct update operations for baremetal ac8df03 Add simple create/show/delete functional tests for all baremetal resources 5d440e0 Fix the heat template resource more cleaner 2f97394 Make resource a dict subclass usable by shade layer d4db52f Remove special handling of stacks e3e9a9d Add computed attribute type and location to base resource 2d472ae Rename Resource get and update to not clash with dict 7590bea Add more options to enable ansible testing feature 8c2eac3 Stop using the -consumer devstack jobs 17c7a29 Fix to_dict recursion issues with circular aliases 23ace6b Stop calling get_all_types when service-type is None 75eaaab Don't wait for task in submit_task 5b8ef64 Update storyboard links to use name 3280198 fix 2 typos in documentation 6464422 Pass microversion info through from Profile a1fc820 python-shade expose MTU setting. 8eb788af Adds toggle port security on network create 7fd4c33 Add a simple baremetal functional job 4c49acd Add support for static routes f213de3 Handle image and object key metadata for shade transition 1cd992c Update config doc url to point to openstacksdk 8ccece3 Remove the auto-creation of containers in create_object 96eac6a Add support for streaming object responses de981a3 Add method for returning a raw response for an object 94b2bf0 Update create_object to handled chunked data 100fd90 Support for microversions in baremetal resources a3c1690 Support for microversions in base Resource 9281c5b Update reno for stable/rocky 73ab97c Support passing profile to get_one 71067ce Send disk_over_commit if nova api < 2.25 d9f648d Docs: Remove duplicate content in connection page 66ebf04 Docs: Include CloudRegion class 031acd9 baremetal: correct the default timeout in Node.set_provision_state 722d813 Run ansible tests against specific public cloud 850b99b Add some backoff to find_best_address 05a340d Fix filter style consistency for keystone assignment API 9b188ba Fix wait for futures append 'result' error Diffstat (except docs and test files) ------------------------------------- .zuul.yaml | 204 +++- CONTRIBUTING.rst | 2 +- HACKING.rst | 2 +- README.rst | 2 +- SHADE-MERGE-TODO.rst | 4 +- .../contributor/create/examples/resource/fake.py | 6 +- .../create/examples/resource/fake_service.py | 13 +- examples/clustering/cluster.py | 34 +- examples/connect.py | 3 +- lower-constraints.txt | 5 +- openstack/_adapter.py | 9 +- openstack/_log.py | 17 +- openstack/_meta/_proxy_templates.py | 150 --- openstack/_meta/connection.py | 53 +- openstack/_meta/proxy.py | 124 -- openstack/baremetal/baremetal_service.py | 14 +- openstack/baremetal/v1/_common.py | 9 + openstack/baremetal/v1/_proxy.py | 247 ++-- openstack/baremetal/v1/chassis.py | 13 +- openstack/baremetal/v1/driver.py | 94 +- openstack/baremetal/v1/node.py | 345 +++++- openstack/baremetal/v1/port.py | 23 +- openstack/baremetal/v1/port_group.py | 20 +- openstack/baremetal/version.py | 4 - openstack/block_storage/block_storage_service.py | 15 +- openstack/block_storage/v2/_proxy.py | 42 + openstack/block_storage/v2/snapshot.py | 6 +- openstack/block_storage/v2/stats.py | 4 +- openstack/block_storage/v2/type.py | 4 +- openstack/block_storage/v2/volume.py | 6 +- openstack/cloud/__init__.py | 39 - openstack/cloud/_utils.py | 2 +- openstack/cloud/meta.py | 35 +- openstack/cloud/openstackcloud.py | 1287 ++++++++++++-------- openstack/clustering/clustering_service.py | 17 +- openstack/clustering/v1/_proxy.py | 151 --- openstack/clustering/v1/action.py | 4 +- openstack/clustering/v1/build_info.py | 4 +- openstack/clustering/v1/cluster.py | 8 +- openstack/clustering/v1/cluster_attr.py | 2 - openstack/clustering/v1/cluster_policy.py | 4 +- openstack/clustering/v1/event.py | 4 +- openstack/clustering/v1/node.py | 12 +- openstack/clustering/v1/policy.py | 14 +- openstack/clustering/v1/policy_type.py | 4 +- openstack/clustering/v1/profile.py | 14 +- openstack/clustering/v1/profile_type.py | 4 +- openstack/clustering/v1/receiver.py | 8 +- openstack/clustering/v1/service.py | 2 - openstack/clustering/version.py | 4 - openstack/compute/compute_service.py | 14 +- openstack/compute/v2/_proxy.py | 177 ++- openstack/compute/v2/availability_zone.py | 3 - openstack/compute/v2/extension.py | 4 +- openstack/compute/v2/flavor.py | 10 +- openstack/compute/v2/hypervisor.py | 7 +- openstack/compute/v2/image.py | 6 +- openstack/compute/v2/keypair.py | 4 +- openstack/compute/v2/limits.py | 8 +- openstack/compute/v2/server.py | 27 +- openstack/compute/v2/server_group.py | 4 +- openstack/compute/v2/server_interface.py | 6 +- openstack/compute/v2/server_ip.py | 2 - openstack/compute/v2/service.py | 5 +- openstack/compute/v2/volume_attachment.py | 6 +- openstack/compute/version.py | 4 - openstack/config/cloud_region.py | 41 +- openstack/config/defaults.json | 18 +- openstack/config/loader.py | 7 +- openstack/config/schema.json | 9 - openstack/config/vendors/auro.json | 8 +- openstack/config/vendors/citycloud.json | 6 +- openstack/config/vendors/dreamhost.json | 13 - openstack/config/vendors/elastx.json | 2 +- openstack/config/vendors/vexxhost.json | 3 +- openstack/connection.py | 32 +- openstack/database/database_service.py | 14 +- openstack/database/v1/database.py | 2 - openstack/database/v1/flavor.py | 4 +- openstack/database/v1/instance.py | 6 +- openstack/database/v1/user.py | 2 - openstack/exceptions.py | 55 +- openstack/identity/identity_service.py | 26 +- openstack/identity/v2/extension.py | 4 +- openstack/identity/v2/role.py | 6 +- openstack/identity/v2/tenant.py | 6 +- openstack/identity/v2/user.py | 6 +- openstack/identity/v3/credential.py | 8 +- openstack/identity/v3/domain.py | 8 +- openstack/identity/v3/endpoint.py | 8 +- openstack/identity/v3/group.py | 8 +- openstack/identity/v3/policy.py | 8 +- openstack/identity/v3/project.py | 13 +- openstack/identity/v3/region.py | 8 +- openstack/identity/v3/role.py | 7 +- openstack/identity/v3/role_assignment.py | 5 +- .../identity/v3/role_domain_group_assignment.py | 2 - .../identity/v3/role_domain_user_assignment.py | 2 - .../identity/v3/role_project_group_assignment.py | 2 - .../identity/v3/role_project_user_assignment.py | 2 - openstack/identity/v3/service.py | 8 +- openstack/identity/v3/trust.py | 7 +- openstack/identity/v3/user.py | 8 +- openstack/identity/version.py | 4 - openstack/image/image_service.py | 19 +- openstack/image/v1/image.py | 6 +- openstack/image/v2/_proxy.py | 3 +- openstack/image/v2/image.py | 54 +- openstack/image/v2/member.py | 6 +- openstack/instance_ha/instance_ha_service.py | 14 +- openstack/instance_ha/v1/host.py | 6 +- openstack/instance_ha/v1/notification.py | 6 +- openstack/instance_ha/v1/segment.py | 6 +- openstack/key_manager/key_manager_service.py | 14 +- openstack/key_manager/v1/container.py | 6 +- openstack/key_manager/v1/order.py | 6 +- openstack/key_manager/v1/secret.py | 8 +- openstack/load_balancer/load_balancer_service.py | 16 +- openstack/load_balancer/v2/health_monitor.py | 8 +- openstack/load_balancer/v2/l7_policy.py | 8 +- openstack/load_balancer/v2/l7_rule.py | 8 +- openstack/load_balancer/v2/listener.py | 8 +- openstack/load_balancer/v2/load_balancer.py | 8 +- openstack/load_balancer/v2/member.py | 8 +- openstack/load_balancer/v2/pool.py | 8 +- openstack/load_balancer/version.py | 4 - openstack/message/message_service.py | 16 +- openstack/message/v2/claim.py | 12 +- openstack/message/v2/message.py | 6 +- openstack/message/v2/queue.py | 6 +- openstack/message/v2/subscription.py | 6 +- openstack/message/version.py | 4 - openstack/network/network_service.py | 14 +- openstack/network/v2/_proxy.py | 376 +++++- openstack/network/v2/address_scope.py | 6 +- openstack/network/v2/agent.py | 14 +- openstack/network/v2/auto_allocated_topology.py | 6 +- openstack/network/v2/availability_zone.py | 6 +- openstack/network/v2/extension.py | 4 +- openstack/network/v2/firewall_group.py | 58 + openstack/network/v2/firewall_policy.py | 95 ++ openstack/network/v2/firewall_rule.py | 66 + openstack/network/v2/flavor.py | 6 +- openstack/network/v2/floating_ip.py | 6 +- openstack/network/v2/health_monitor.py | 6 +- openstack/network/v2/listener.py | 6 +- openstack/network/v2/load_balancer.py | 6 +- openstack/network/v2/metering_label.py | 6 +- openstack/network/v2/metering_label_rule.py | 6 +- openstack/network/v2/network.py | 11 +- openstack/network/v2/network_ip_availability.py | 6 +- openstack/network/v2/pool.py | 6 +- openstack/network/v2/pool_member.py | 6 +- openstack/network/v2/port.py | 6 +- openstack/network/v2/qos_bandwidth_limit_rule.py | 6 +- openstack/network/v2/qos_dscp_marking_rule.py | 6 +- openstack/network/v2/qos_minimum_bandwidth_rule.py | 6 +- openstack/network/v2/qos_policy.py | 6 +- openstack/network/v2/qos_rule_type.py | 6 +- openstack/network/v2/quota.py | 10 +- openstack/network/v2/rbac_policy.py | 6 +- openstack/network/v2/router.py | 9 +- openstack/network/v2/security_group.py | 6 +- openstack/network/v2/security_group_rule.py | 6 +- openstack/network/v2/segment.py | 6 +- openstack/network/v2/service_profile.py | 6 +- openstack/network/v2/service_provider.py | 6 +- openstack/network/v2/subnet.py | 6 +- openstack/network/v2/subnet_pool.py | 6 +- openstack/network/v2/trunk.py | 6 +- openstack/network/v2/vpn_service.py | 6 +- openstack/network/version.py | 4 - openstack/object_store/object_store_service.py | 14 +- openstack/object_store/v1/_base.py | 4 +- openstack/object_store/v1/_proxy.py | 2 + openstack/object_store/v1/account.py | 4 +- openstack/object_store/v1/container.py | 4 +- openstack/object_store/v1/obj.py | 6 +- openstack/orchestration/orchestration_service.py | 17 +- openstack/orchestration/v1/_proxy.py | 2 +- openstack/orchestration/v1/resource.py | 4 +- openstack/orchestration/v1/software_config.py | 6 +- openstack/orchestration/v1/software_deployment.py | 10 +- openstack/orchestration/v1/stack.py | 24 +- openstack/orchestration/v1/stack_environment.py | 14 +- openstack/orchestration/v1/stack_files.py | 16 +- openstack/orchestration/v1/stack_template.py | 23 +- openstack/orchestration/v1/template.py | 6 +- openstack/orchestration/version.py | 4 - openstack/profile.py | 201 --- openstack/proxy.py | 91 +- openstack/proxy2.py | 23 - openstack/resource.py | 521 ++++++-- openstack/resource2.py | 23 - openstack/service_description.py | 200 ++- openstack/service_filter.py | 199 --- openstack/task_manager.py | 103 +- .../functional/baremetal/test_baremetal_chassis.py | 51 + .../functional/baremetal/test_baremetal_driver.py | 55 + .../functional/baremetal/test_baremetal_node.py | 159 +++ .../functional/baremetal/test_baremetal_port.py | 83 ++ .../baremetal/test_baremetal_port_group.py | 75 ++ .../functional/cloud/test_cluster_templates.py | 4 +- .../functional/cloud/test_floating_ip_pool.py | 4 +- .../cloud/test_qos_bandwidth_limit_rule.py | 4 +- .../functional/cloud/test_qos_dscp_marking_rule.py | 4 +- .../cloud/test_qos_minimum_bandwidth_rule.py | 4 +- .../functional/network/v2/test_firewall_group.py | 52 + .../functional/network/v2/test_firewall_policy.py | 52 + .../functional/network/v2/test_firewall_rule.py | 69 ++ .../v2/test_firewall_rule_insert_remove_policy.py | 91 ++ .../functional/network/v2/test_floating_ip.py | 2 + .../functional/orchestration/v1/test_stack.py | 2 +- .../block_storage/test_block_storage_service.py | 28 - .../unit/clustering/v1/test_cluster_policy.py | 3 +- .../unit/compute/v2/test_availability_zone.py | 2 - .../unit/compute/v2/test_volume_attachment.py | 5 +- .../v3/test_role_domain_group_assignment.py | 1 - .../v3/test_role_domain_user_assignment.py | 1 - .../v3/test_role_project_group_assignment.py | 1 - .../v3/test_role_project_user_assignment.py | 1 - .../unit/instance_ha/test_instance_ha_service.py | 30 - .../key_manager/test_key_management_service.py | 28 - .../unit/load_balancer/test_health_monitor.py | 7 +- .../load_balancer/test_load_balancer_service.py | 28 - .../network/v2/test_auto_allocated_topology.py | 4 +- .../unit/network/v2/test_availability_zone.py | 5 +- .../unit/network/v2/test_metering_label_rule.py | 5 +- .../network/v2/test_network_ip_availability.py | 5 +- .../network/v2/test_qos_bandwidth_limit_rule.py | 5 +- .../unit/network/v2/test_qos_dscp_marking_rule.py | 5 +- .../network/v2/test_qos_minimum_bandwidth_rule.py | 5 +- .../unit/network/v2/test_security_group_rule.py | 5 +- .../unit/object_store/test_object_store_service.py | 28 - .../orchestration/test_orchestration_service.py | 29 - .../unit/orchestration/v1/test_software_config.py | 5 +- .../orchestration/v1/test_software_deployment.py | 5 +- .../orchestration/v1/test_stack_environment.py | 5 +- .../unit/orchestration/v1/test_stack_files.py | 8 +- .../unit/orchestration/v1/test_stack_template.py | 22 +- openstack/utils.py | 85 +- openstack/workflow/v2/execution.py | 4 +- openstack/workflow/v2/workflow.py | 4 +- openstack/workflow/version.py | 4 - openstack/workflow/workflow_service.py | 16 +- playbooks/devstack/post.yaml | 1 + ...for-setting-static-routes-b3ce6cac2c5e9e51.yaml | 9 + .../notes/baremetal-errors-5cc871e8df4c9d95.yaml | 4 + .../notes/baremetal-ports-cc0f56ae0d192aba.yaml | 5 + .../baremetal-reservation-40327923092e9647.yaml | 10 + .../notes/baremetal-retries-ff8aa8f73fb97415.yaml | 6 + .../notes/baremetal-update-80effb38aae8e02d.yaml | 5 + .../notes/baremetal-validate-ccce2a37d2a20d96.yaml | 4 + .../notes/baremetal-vif-122457118c722a9b.yaml | 4 + .../notes/container-search-b0f4253ce2deeda5.yaml | 6 + .../notes/firewall-resources-c7589d288dd57e35.yaml | 5 + .../notes/get-object-raw-e58284e59c81c8ef.yaml | 5 + .../notes/image-update-76bd3bf24c1c1380.yaml | 5 + ...-get-update-microversions-4b910e63cebd65e2.yaml | 11 + .../notes/mtu-settings-8ce8b54d096580a2.yaml | 6 + .../notes/nat-source-support-92aaf6b336d0b848.yaml | 4 + .../object-chunked-data-ee619b7d4759b8d2.yaml | 6 + .../notes/object-search-a5f5ec4b2df3e045.yaml | 6 + .../remove-auto-container-527f1807605b42c0.yaml | 6 + ...removed-deprecated-things-8700fe3592c3bf18.yaml | 5 + .../notes/removed-profile-b033d870937868a1.yaml | 5 + .../rename-resource-methods-5f2a716b08156765.yaml | 12 + .../notes/shade-location-b0d2e5cae743b738.yaml | 8 + .../notes/stream-object-6ecd43511dca726b.yaml | 4 + .../toggle-port-security-f5bc606e82141feb.yaml | 9 + .../notes/v4-fixed-ip-325740fdae85ffa9.yaml | 7 + .../notes/validate-machine-dcf528b8f587e3f0.yaml | 5 + releasenotes/source/index.rst | 1 + releasenotes/source/rocky.rst | 6 + requirements.txt | 3 +- tox.ini | 16 +- 501 files changed, 7474 insertions(+), 5239 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 8eb788aa..78f7585 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,2 +11 @@ os-service-types>=1.2.0 # Apache-2.0 -keystoneauth1>=3.8.0 # Apache-2.0 -deprecation>=1.0 # Apache-2.0 +keystoneauth1>=3.11.0 # Apache-2.0
participants (1)
-
no-reply@openstack.org