We exuberantly announce the release of: openstacksdk 0.99.0: An SDK for building applications to work with OpenStack This release is part of the zed release series. The source is available from: https://opendev.org/openstack/openstacksdk Download the package from: https://pypi.org/project/openstacksdk Please report issues through: https://storyboard.openstack.org/#!/project/openstack/openstacksdk For more details, please see below. 0.99.0 ^^^^^^ Prelude ******* This is a first major release of OpenStackSDK. From now on interface can be considered stable and will also in future strictly follow SemVer model. This release includes work in ensuring methods and attribute naming are consistent across the code basis and first steps in implementing even more generalizations in the processing logic. Microversion support is now considered as stable and session will be established with the highest version supported by both client and server. New Features ************ * Added support to list absolute resource limits on the shared file system service. * Add support for the Compute service's migrations API, allowing users to list all in-progress migrations for all servers. * Add support for the Compute service's server migrations API, allowing users to list all migrations for a server as well as force complete or abort in-progress migrations. * Adds support to create, update, list, get, and delete share snapshots to shared file system service. * Added revert share to snapshot to shared file system service. * Added support to create, update, list, get, and delete shares (from shared file system service). * Added support for retrieving storage pools information from the Shared File Systems service. * Add support for system role assignment. A system role assignment ultimately controls access to system-level API calls. Good examples of system-level APIs include management of the service catalog and compute hypervisors. System role assignment API reference (https://docs.openstack.org /api-ref/identity/v3/#system-role-assignments). * Add support for user group assignments in identity service. * Added support to list, get, and delete user messages on the shared file system service. * Add block storage QuotaSet resource and proxy methods. * The 2.89 API microversion is now supported for the compute service. This adds additional fields to the "os-volume_attachments" API, represented by the "openstack.compute.v2.volume_attachment.VolumeAttachment" resource. * Add support for QuotaSet in the compute service. * It is now possible to filter "openstack.image.v2.Image" resources by ID using the "id" filter. While this is of little value when used with single IDs, it can be useful when combined with operators like "in:" to e.g. filter by multiple image IDs. * Added two filtering keys to "QoSRuleType" class query mapping, used for filtering the "list" command: "all_rules", to list all network QoS rule types implemented in Neutron, and "all_supported", to list all network QoS rule types supported by at least one networking mechanism driver. * Added QoS minimum packet rate rule object and introduced support for CRUD operations. * Stop sending tenant_id attribute to Neutron. * Added support for the updated_at attribute for volume objects. Upgrade Notes ************* * The "allow_get" attribute of "openstack.resource.Resource" has been removed. Use "allow_fetch" or "allow_list" instead. * Cloud layer operations for Senlin service are dropped due to big amount of bugs there. * API metrics emitted by OpenStackSDK to StatsD now contain status_code part of the metric name in order to improve information precision. * This release includes work in enforcing consistency of the cloud layer methods. Now they all return SDK resource objects where previously Munch objects could have been returned. This leads to few important facts: * Return object types of various cloud.XXX calls now rely on proxy layer functions and strictly return SDK resources. * Some attributes of various resources may be named differently to follow SDK attribute naming convention. * Returned objects may forbid setting attributes (read-only attributes). Mentioned changes are affecting Ansible modules (which rely on OpenStackSDK). Historically Ansible modules return to the Ansible engine whatever SDK returns to it. Under some conditions Ansible may decide to unset properties (if it decides it contain sensitive information). While this is correct SDK forbids setting of some attributes what leads to errors. This release is therefore marking incompatibility with OpenStack Ansible modules in R1.X.X and the work on fixing it is being done in R2.X.X of modules repository. * Networking functions of the cloud layer return now resource objects *openstack.resource*. While those still implement Munch interface and are accessible as dictionary modification of an instance might be causing issues (i.e. forbidden). Bug Fixes ********* * It is now possible to pass *metadata* parameter directly into the create_container, create_object object_store methods and will not be ignored. Changes in openstacksdk 0.61.0..0.99.0 -------------------------------------- 360d517a Improve StatsD metric precision 1e50ea50 Add R1 summary release note 6b2f555a image: Add "id" filter for images 46db8d3b Allow to filter endpoints by region_id 975cabbd Add QoS rule type filtering keys bdccc6b7 fix: improperly encoded object names 358ddcd3 Run nodepool job 53e81c16 Add Python3 zed unit tests 194f3545 Update master for stable/yoga bdd87c70 Identity: Add support for system role assignment 4c1ffee6 Indentation of the docstrings 44c55156 network: Fix update of network provider 55eff088 Correct documentation about Load Balancer API bcd5916c Improve compute flavor handling dd892d7b Use empty read_acl for swift container 26a5d10d Restore get_compute_limits backward compatibility 1b479f0b Revive legacy job 7569cd9a Skip tests when needed extensions are disabled fe3d36f0 Cloud / Utils service - reindentation of the docstrings 827736d3 Cloud / Network service - reindentation of the docstrings 6650374b Cloud / Identity service - reindentation of the docstrings 3244abd0 tests: Centralize configuration of default flavor, image 2ee2df6b Skip qos-pps-minimum tests if extension is missing 11d89450 doc: Update testing documentation 05a83963 doc: Remove references to 'examples' test env 1f1aa4fa Add query parameters to local ip 2d69560e Cloud / Compute service - reindentation of the docstrings 441b7d0c Cloud / Dns service - reindentation of the docstrings 63aa7c00 Cloud / Coe service - reindentation of the docstrings 0ce0fddc Cloud / Baremetal service - reindentation of the docstrings 582e301b Cloud / Security group service - reindentation of the docstrings 560e1f91 Cloud / Normalize service - reindentation of the docstrings dd9b95c1 Cloud / Floating service - reindentation of the docstrings afb49692 fix creation of protected image 5e969fb4 Revert "Add "security_group_ids" to Port's query parameters" 3c8826d0 Get rid of normalization in compute CL cadee6fa Functional tests for vpn ike policy resource 3e84351c Add QoS min pps rule object and CRUD operations 4f54021e Get rid of normalization in network CL ed86ffbf Get rid of normalization in further CL services e910e6ea Get rid of normalization in identity CL f34ea0d1 Get rid of normalization in orchestration CL 6c905301 Get rid of normalization for image service fc2d56fa Object Store - reindentation of the docstrings ee24cbff Switch quota_set cloud layer BS methods to proxy efdc8c2a Switch unittests for BS to use v3 82f09b4e Reindentation of the docstrings for baremetal service 4831e22a Switch quota methods of cloud layer to proxy 29c87246 Switch create_server cloud method to proxy c0a9b64e Switch delete_server cloud method to rely on proxy 9d458860 tests: Handle overridden 'verify_delete' (kw)args f4dafb3a Switch update_server cloud layer to proxy a92ee7ae Switch rebuild_server cloud method to rely on proxy d7098876 Fix misuse of assertTrue b2bea061 Identity service - reunite :class: links on single lines 6775fb80 Block storage - reunite :class: links on single lines e94fda9e Switch cloud.compute.get_server_by_id to use proxy 104a361a Add revert share to snapshot to shared file system. 7c003e6a Shared file system - reunite :class: links on single lines da717351 Instance HA service - reunite :class: links on single lines a1263076 Load balancer - reindentation of the docstrings 831f7bd5 Network service - reunite :class: links on single lines 9290eeea Orchestration service - reunite class links (:class:) on one line 02c175db Compute - reindentation of the docstrings f5b60d2b Add Neutron Local IP CRUD 94c6131c trivial: Correct docstrings for 'delete' proxy calls 353a0ffe compute: Server group rules are dicts, not lists of dicts 41893385 Fix functional test for user message b48d0b8c Database service - reindentation of the docstrings 15da4d22 Image service - reindentation of the docstrings aa58c884 Orchestration- reindentation of the docstrings 42468112 Keep creating keystone admin endpoint for heat ef1bee16 Switch compute limits cloud to proxy 31c85038 Shared File System - reindentation of the docstrings 72c223b5 Add share snapshot to shared file system. ef587c9a compute: Add support for microversion 2.89 770a3c3e compute: Add support for migrations API 6d1321f5 compute: Add support for server migrations API 6c96faa7 compute: Regroup proxy methods bf267b0e DNS - reindentation of the docstrings e574e4dd Clustering - reindentation of the docstrings 0fc28b39 Network - reindentation of the docstrings b47652cf trivial: Typo fixes 86c85103 Remove '__unicode__' helper 58270810 exception: Correct argument 95640856 Add support for updated_at field for volume objects 894b5450 Block storage - reindentation of the docstrings 9d143ed8 Reindentation of the docstrings 4581db6c Reindentation of the docstrings c746567a Reindentation of the docstrings ef1b622b Reindentation of the docstrings 322c72ba Reindentation of the docstrings 4ad2d0d2 Reindentation of the docstrings 388a463a Reindentation of the docstrings 45f400dc resource: Rewrap function signatures 93a8258e resource: Remove deprecated 'allow_get' attribute 07eb09f6 Rely on proxy for compute.flavor cloud layer operations 15a8fc4c Support description in sg-rule creation 16e557f4 Switch Swift cloud layer to proxy fde91622 Splits class `TestSharedFileSystemProxy` d3b614ad Splits class `TestPlacementProxy` 6bdde3d1 Splits class `TestOrchestrationProxy` 93f69e42 Splits class `TestNetworkProxy` 81776e61 Add missing headers in object store 56068af2 Splits class `TestMessageProxy` 45995c88 Splits class `TestKeyManagerProxy` f5f0f9f1 Splits class `TestInstanceHaProxy` 50043daf Splits the `TestBaremetalProxy` class 290a6cf5 Add limit resource to shared file system bba9c5c5 Fix setting initial object/container metadata. 6a2420db Splits the `TestAcceleratorProxy` class a2b7c540 Optimize code by moving misc functions to utils 7f87d2ee Start splitting the `TestImageProxy` class 4914d8d7 Add user message to shared file system 67c8c191 Replace the 'try except' block d7d6464c Add user group assignment support in identity 21795acf Add a manila functional check job d62a4e60 Fix key generation for caching f7f9446d Add "security_group_ids" to Port's query parameters 88e520f5 Adds storage pools to shared file system a8c3cb29 Extend has_version function to accept version parameter 1909df1f Vpn ike policy resource 3d6aff34 Add common metadata mixin to block storage and clustering c1c8dfb7 Make metadata a common mixin f3df2095 Introduce QuotaSet in block storage service b7ebc731 Introduce QuotaSet in the compute service 94cb864d Introduce common class for QuotaSet fae7ab06 Fix import order in block_storage tests 2d56b681 Fix import order in cloud tests c6494db0 Move tag mixin into the common b59cda5c Fix import order in clustering tests adcf98c2 Fix import order in orchestration tests b86d3a8c Fix import order in identity tests 8a1d255c Switch identity roles in the cloud layer to proxy 95cec287 Fix identity role management 533ba93a Switch identiy.endpoints in the cloud layer df5f987c Add share resource to shared file system 9a038d8c Switch identity.service in cloud layer to proxy e192f215 Switch identity.domains in cloud layer 54f910f2 Switch identity groups and users in cloud layer 74fa9871 Add possibility to create subprojects in cloud layer 72aa4531 Switch project management in cloud to proxy ccc6478c Temporarily disable nodepool job d6c51c53 Add cleanup function for DNS resource f5c9653a Switch BS volume_attachment operations in cloud layer 485b53bd Switch BS backup and snapshot methods in cloud layer to proxy 734ae40f Add BS snapshot and backup actions 118cf735 Switch BS type access operations in cloud layer 8579b095 Add BS type access into proxy/resource layer d235b141 Switch block_storage.volume operations in cloud layer f9183cf4 Add block_storage.volume actions d1c9a96e Copy find_volume to block_storage.v2 proxy a3582786 Fix active status for block storage e6fed6d2 Add scheduler hints on the block_storage.volume resource 62781ae2 Sort block storage properties alphabetically c6177a47 Drop cloud layer methods for Senlin 7cee92d5 Replace deprecated inspect.getargspec call 28875355 Revert "Update TOX_CONSTRAINTS_FILE for feature/r1" 698ac14a Switch object_store cloud functions to proxy layer 70a06d99 Stop sending tenant_id to Neutron 6db391f6 Switch networking function in cloud layer to proxy 03b2b3b0 Add access to the resource attribute by server-side name 2d16931c Update TOX_CONSTRAINTS_FILE for feature/r1 7a19a5ff Update .gitreview for feature/r1 Diffstat (except docs and test files) ------------------------------------- .zuul.yaml | 91 +- create_yaml.sh | 31 - .../user/resources/block_storage/v2/quota_set.rst | 12 + .../user/resources/block_storage/v3/quota_set.rst | 12 + .../user/resources/compute/v2/server_migration.rst | 13 + .../network/v2/qos_minimum_packet_rate_rule.rst | 13 + .../user/resources/shared_file_system/index.rst | 5 + .../user/resources/shared_file_system/v2/limit.rst | 13 + .../user/resources/shared_file_system/v2/share.rst | 13 + .../shared_file_system/v2/share_snapshot.rst | 13 + .../shared_file_system/v2/storage_pool.rst | 13 + .../shared_file_system/v2/user_message.rst | 13 + openstack/accelerator/v2/_proxy.py | 62 +- openstack/accelerator/v2/deployable.py | 4 +- openstack/baremetal/v1/_proxy.py | 173 +- openstack/block_storage/v2/_proxy.py | 527 ++- openstack/block_storage/v2/backup.py | 22 +- openstack/block_storage/v2/quota_set.py | 33 + openstack/block_storage/v2/snapshot.py | 56 +- openstack/block_storage/v2/type.py | 30 +- openstack/block_storage/v2/volume.py | 183 +- openstack/block_storage/v3/_proxy.py | 756 +++- openstack/block_storage/v3/backup.py | 25 +- openstack/block_storage/v3/quota_set.py | 33 + openstack/block_storage/v3/snapshot.py | 59 +- openstack/block_storage/v3/type.py | 52 +- openstack/block_storage/v3/volume.py | 276 +- openstack/cloud/_accelerator.py | 42 +- openstack/cloud/_baremetal.py | 173 +- openstack/cloud/_block_storage.py | 435 +-- openstack/cloud/_clustering.py | 1023 +++--- openstack/cloud/_coe.py | 33 +- openstack/cloud/_compute.py | 474 +-- openstack/cloud/_dns.py | 11 +- openstack/cloud/_floating_ip.py | 76 +- openstack/cloud/_identity.py | 1078 +++--- openstack/cloud/_image.py | 21 +- openstack/cloud/_network.py | 693 ++-- openstack/cloud/_network_common.py | 18 +- openstack/cloud/_normalize.py | 35 +- openstack/cloud/_object_store.py | 533 +-- openstack/cloud/_orchestration.py | 13 +- openstack/cloud/_security_group.py | 25 +- openstack/cloud/_shared_file_system.py | 4 +- openstack/cloud/_utils.py | 81 +- openstack/cloud/meta.py | 16 +- openstack/cloud/openstackcloud.py | 6 +- openstack/clustering/v1/_proxy.py | 294 +- openstack/clustering/v1/cluster.py | 4 +- openstack/common/__init__.py | 0 openstack/common/metadata.py | 138 + openstack/common/quota_set.py | 129 + openstack/common/tag.py | 127 + openstack/compute/v2/_proxy.py | 973 +++-- openstack/compute/v2/flavor.py | 40 +- openstack/compute/v2/image.py | 5 +- openstack/compute/v2/limits.py | 55 +- openstack/compute/v2/metadata.py | 101 - openstack/compute/v2/migration.py | 72 + openstack/compute/v2/quota_set.py | 57 + openstack/compute/v2/server.py | 48 +- openstack/compute/v2/server_group.py | 12 +- openstack/compute/v2/server_migration.py | 98 + openstack/database/v1/_proxy.py | 146 +- openstack/dns/v2/_proxy.py | 89 +- openstack/exceptions.py | 5 +- openstack/identity/v2/_proxy.py | 102 +- openstack/identity/v3/_proxy.py | 839 +++-- openstack/identity/v3/domain.py | 4 +- openstack/identity/v3/endpoint.py | 2 +- openstack/identity/v3/group.py | 30 + openstack/identity/v3/project.py | 8 +- .../identity/v3/role_system_group_assignment.py | 28 + .../identity/v3/role_system_user_assignment.py | 28 + openstack/identity/v3/system.py | 75 + openstack/image/_base_proxy.py | 7 +- openstack/image/v1/_proxy.py | 60 +- openstack/image/v2/_proxy.py | 138 +- openstack/image/v2/image.py | 28 +- openstack/instance_ha/v1/_proxy.py | 87 +- openstack/key_manager/v1/_proxy.py | 118 +- openstack/load_balancer/v2/_proxy.py | 443 ++- openstack/load_balancer/v2/health_monitor.py | 6 +- openstack/load_balancer/v2/l7_policy.py | 6 +- openstack/load_balancer/v2/l7_rule.py | 6 +- openstack/load_balancer/v2/listener.py | 6 +- openstack/load_balancer/v2/load_balancer.py | 6 +- openstack/load_balancer/v2/member.py | 6 +- openstack/load_balancer/v2/pool.py | 6 +- openstack/message/v2/_proxy.py | 56 +- openstack/network/v2/_proxy.py | 2075 ++++++----- openstack/network/v2/address_group.py | 6 +- openstack/network/v2/address_scope.py | 6 +- openstack/network/v2/auto_allocated_topology.py | 4 +- openstack/network/v2/floating_ip.py | 14 +- openstack/network/v2/health_monitor.py | 7 +- openstack/network/v2/load_balancer.py | 4 +- openstack/network/v2/local_ip.py | 6 +- openstack/network/v2/local_ip_association.py | 2 +- openstack/network/v2/metering_label.py | 7 +- openstack/network/v2/metering_label_rule.py | 6 +- openstack/network/v2/network.py | 8 +- 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 | 13 +- .../network/v2/qos_minimum_packet_rate_rule.py | 37 + openstack/network/v2/qos_policy.py | 8 +- openstack/network/v2/qos_rule_type.py | 3 +- openstack/network/v2/quota.py | 2 +- openstack/network/v2/rbac_policy.py | 4 +- openstack/network/v2/router.py | 13 +- openstack/network/v2/security_group.py | 8 +- openstack/network/v2/security_group_rule.py | 9 +- openstack/network/v2/service_profile.py | 7 +- openstack/network/v2/subnet.py | 13 +- openstack/network/v2/subnet_pool.py | 13 +- openstack/network/v2/trunk.py | 12 +- openstack/network/v2/vpn_service.py | 4 +- openstack/object_store/v1/_base.py | 23 + openstack/object_store/v1/_proxy.py | 409 ++- openstack/object_store/v1/container.py | 7 + openstack/object_store/v1/obj.py | 23 +- openstack/orchestration/v1/_proxy.py | 127 +- openstack/orchestration/v1/stack.py | 4 +- openstack/proxy.py | 202 +- openstack/resource.py | 396 +- openstack/shared_file_system/v2/_proxy.py | 300 +- openstack/shared_file_system/v2/limit.py | 75 + openstack/shared_file_system/v2/share.py | 113 + openstack/shared_file_system/v2/share_snapshot.py | 58 + openstack/shared_file_system/v2/storage_pool.py | 41 + openstack/shared_file_system/v2/user_message.py | 54 + .../network/v2/test_qos_bandwidth_limit_rule.py | 5 + .../network/v2/test_qos_dscp_marking_rule.py | 5 + .../network/v2/test_qos_minimum_bandwidth_rule.py | 5 + .../v2/test_qos_minimum_packet_rate_rule.py | 94 + .../functional/network/v2/test_qos_rule_type.py | 6 + .../shared_file_system/test_availability_zone.py | 2 +- .../functional/shared_file_system/test_limit.py | 36 + .../functional/shared_file_system/test_share.py | 62 + .../shared_file_system/test_share_snapshot.py | 84 + .../shared_file_system/test_storage_pool.py | 24 + .../shared_file_system/test_user_message.py | 32 + .../block_storage/v3/test_availability_zone.py | 2 +- .../unit/block_storage/v3/test_type_encryption.py | 2 +- .../unit/cloud/test_create_volume_snapshot.py | 35 +- .../unit/cloud/test_delete_volume_snapshot.py | 20 +- .../unit/clustering/v1/test_cluster_policy.py | 3 +- .../identity/v3/test_application_credential.py | 3 +- .../unit/identity/v3/test_federation_protocol.py | 2 +- .../unit/identity/v3/test_identity_provider.py | 2 +- .../unit/identity/v3/test_registered_limit.py | 3 +- .../v3/test_role_domain_group_assignment.py | 2 +- .../v3/test_role_domain_user_assignment.py | 2 +- .../v3/test_role_project_group_assignment.py | 2 +- .../v3/test_role_project_user_assignment.py | 2 +- .../v3/test_role_system_group_assignment.py | 40 + .../v3/test_role_system_user_assignment.py | 39 + .../network/v2/test_auto_allocated_topology.py | 4 +- .../unit/network/v2/test_local_ip_association.py | 4 +- .../unit/network/v2/test_metering_label_rule.py | 6 +- .../network/v2/test_network_ip_availability.py | 8 +- .../v2/test_qos_minimum_packet_rate_rule.py | 47 + .../unit/network/v2/test_security_group_rule.py | 8 +- .../unit/orchestration/v1/test_software_config.py | 3 +- .../orchestration/v1/test_software_deployment.py | 2 +- .../orchestration/v1/test_stack_environment.py | 3 +- .../unit/orchestration/v1/test_stack_template.py | 2 +- .../shared_file_system/v2/test_share_snapshot.py | 65 + .../shared_file_system/v2/test_storage_pool.py | 74 + .../shared_file_system/v2/test_user_message.py | 74 + openstack/utils.py | 48 +- openstack/workflow/v2/_proxy.py | 40 +- .../add-limit-to-shared-file-2b443c2a00c75e6e.yaml | 5 + .../notes/add-migrations-946adf16674d4b2a.yaml | 5 + .../add-server-migrations-6e31183196f14deb.yaml | 6 + ...e-snapshot-to-shared-file-82ecedbdbed2e3c5.yaml | 5 + ...shared-file-system-shares-2e1d44a1bb882d6d.yaml | 5 + ...shared-file-system-shares-e9f356a318045607.yaml | 5 + ...orage-pool-to-shared-file-ad45da1b2510b412.yaml | 5 + ...dd-system-role-assignment-693dd3e1da33a54d.yaml | 11 + ...add-user-group-assignment-9c419b6c6bfe392c.yaml | 4 + ...er-message-to-shared-file-85d7bbccf8347c4f.yaml | 5 + .../notes/block-storage-qs-0e3b69be2e709b65.yaml | 4 + .../notes/compute-quota-set-e664412d089945d2.yaml | 4 + ...ource-allow_get-attribute-fec75b551fb79465.yaml | 5 + .../drop-senlin-cloud-layer-c06d496acc70b014.yaml | 4 + .../image-id-filter-key-b9b6b52139a27cbe.yaml | 7 + .../notes/improve-metrics-5d7ce70ce4021d72.yaml | 5 + ...work-qos-rule-filter-keys-324e3222510fd362.yaml | 7 + .../notes/qos-min-pps-rule-52df1b150b1d3f68.yaml | 5 + releasenotes/notes/r1-cab94ae7d749a1ec.yaml | 31 + .../stop-using-tenant-id-42eb35139ba9eeff.yaml | 4 + .../notes/swift-set-metadata-c18c60e440f9e4a7.yaml | 5 + .../notes/use-proxy-layer-dfc3764d52bc1f2a.yaml | 7 + .../notes/vol-updated_at-274c3a2bb94c8939.yaml | 3 + releasenotes/source/index.rst | 1 + releasenotes/source/yoga.rst | 6 + tox.ini | 25 +- 383 files changed, 17965 insertions(+), 12649 deletions(-)