From 5a12532a0e758b6b3e9d6457ee3c7f28b4164886 Mon Sep 17 00:00:00 2001
From: matteo <matteo.difazio@garr.it>
Date: Fri, 23 Feb 2024 18:29:13 +0100
Subject: [PATCH] update custom openstacksdk

---
 CONTRIBUTING.rst                              |  45 +
 HACKING.rst                                   |  63 ++
 LICENSE                                       | 175 ++++
 MANIFEST.in                                   |   6 +
 README.rst                                    | 313 +++++++
 SHADE-MERGE-TODO.rst                          | 137 +++
 babel.cfg                                     |   1 +
 bindep.txt                                    |   8 +
 devstack/plugin.sh                            |  54 ++
 doc/requirements.txt                          |   5 +
 doc/source/conf.py                            |  98 +++
 doc/source/contributor/clouds.yaml            |  37 +
 doc/source/contributor/coding.rst             | 104 +++
 doc/source/contributor/contributing.rst       |   1 +
 .../create/examples/resource/fake.py          |  26 +
 .../create/examples/resource/fake_service.py  |  12 +
 doc/source/contributor/create/resource.rst    | 186 ++++
 doc/source/contributor/history.rst            |  49 ++
 doc/source/contributor/index.rst              | 112 +++
 doc/source/contributor/layout.rst             | 104 +++
 doc/source/contributor/layout.txt             |  12 +
 doc/source/contributor/setup.rst              | 116 +++
 doc/source/contributor/testing.rst            | 108 +++
 doc/source/glossary.rst                       | 104 +++
 doc/source/index.rst                          |  45 +
 doc/source/install/index.rst                  |  17 +
 doc/source/releasenotes.rst                   |   5 +
 doc/source/user/config/configuration.rst      | 499 +++++++++++
 doc/source/user/config/index.rst              |  12 +
 doc/source/user/config/network-config.rst     |  67 ++
 doc/source/user/config/reference.rst          |  14 +
 doc/source/user/config/using.rst              |  52 ++
 doc/source/user/config/vendor-support.rst     | 348 ++++++++
 doc/source/user/connection.rst                |  26 +
 doc/source/user/examples                      |   1 +
 doc/source/user/exceptions.rst                |  15 +
 doc/source/user/guides/baremetal.rst          |  67 ++
 doc/source/user/guides/block_storage.rst      |   9 +
 doc/source/user/guides/clustering.rst         |  37 +
 doc/source/user/guides/clustering/action.rst  |  47 +
 doc/source/user/guides/clustering/cluster.rst | 193 +++++
 doc/source/user/guides/clustering/event.rst   |  47 +
 doc/source/user/guides/clustering/node.rst    | 120 +++
 doc/source/user/guides/clustering/policy.rst  | 102 +++
 .../user/guides/clustering/policy_type.rst    |  45 +
 doc/source/user/guides/clustering/profile.rst | 105 +++
 .../user/guides/clustering/profile_type.rst   |  44 +
 .../user/guides/clustering/receiver.rst       | 100 +++
 doc/source/user/guides/compute.rst            |  89 ++
 doc/source/user/guides/connect.rst            |  32 +
 .../user/guides/connect_from_config.rst       |  72 ++
 doc/source/user/guides/database.rst           |   8 +
 doc/source/user/guides/dns.rst                |  18 +
 doc/source/user/guides/identity.rst           | 111 +++
 doc/source/user/guides/image.rst              |  97 +++
 doc/source/user/guides/intro.rst              | 102 +++
 doc/source/user/guides/key_manager.rst        |  56 ++
 doc/source/user/guides/logging.rst            | 106 +++
 doc/source/user/guides/message.rst            |   8 +
 doc/source/user/guides/network.rst            | 142 +++
 doc/source/user/guides/object_store.rst       | 211 +++++
 doc/source/user/guides/orchestration.rst      |   9 +
 doc/source/user/guides/shared_file_system.rst | 200 +++++
 doc/source/user/guides/stats.rst              |  88 ++
 doc/source/user/index.rst                     | 195 +++++
 doc/source/user/microversions.rst             |  99 +++
 doc/source/user/model.rst                     |  66 ++
 doc/source/user/multi-cloud-demo.rst          | 813 ++++++++++++++++++
 doc/source/user/proxies/accelerator.rst       |  43 +
 doc/source/user/proxies/baremetal.rst         | 107 +++
 .../user/proxies/baremetal_introspection.rst  |  21 +
 doc/source/user/proxies/block_storage_v2.rst  |  76 ++
 doc/source/user/proxies/block_storage_v3.rst  | 167 ++++
 doc/source/user/proxies/clustering.rst        | 119 +++
 doc/source/user/proxies/compute.rst           | 181 ++++
 .../container_infrastructure_management.rst   |  35 +
 doc/source/user/proxies/database.rst          |  43 +
 doc/source/user/proxies/dns.rst               |  70 ++
 doc/source/user/proxies/identity_v2.rst       |  42 +
 doc/source/user/proxies/identity_v3.rst       | 124 +++
 doc/source/user/proxies/image_v1.rst          |  18 +
 doc/source/user/proxies/image_v2.rst          | 110 +++
 doc/source/user/proxies/key_manager.rst       |  39 +
 doc/source/user/proxies/load_balancer_v2.rst  | 123 +++
 doc/source/user/proxies/message_v2.rst        |  42 +
 doc/source/user/proxies/network.rst           | 359 ++++++++
 doc/source/user/proxies/object_store.rst      |  37 +
 doc/source/user/proxies/orchestration.rst     |  48 ++
 doc/source/user/proxies/placement.rst         |  49 ++
 .../user/proxies/shared_file_system.rst       | 194 +++++
 doc/source/user/proxies/workflow.rst          |  35 +
 doc/source/user/resource.rst                  |  22 +
 .../user/resources/accelerator/index.rst      |  11 +
 .../accelerator/v2/accelerator_request.rst    |  13 +
 .../resources/accelerator/v2/deployable.rst   |  13 +
 .../user/resources/accelerator/v2/device.rst  |  13 +
 .../accelerator/v2/device_profile.rst         |  14 +
 doc/source/user/resources/baremetal/index.rst |  16 +
 .../resources/baremetal/v1/allocation.rst     |  12 +
 .../user/resources/baremetal/v1/chassis.rst   |  12 +
 .../user/resources/baremetal/v1/conductor.rst |  13 +
 .../baremetal/v1/deploy_templates.rst         |  13 +
 .../user/resources/baremetal/v1/driver.rst    |  12 +
 .../user/resources/baremetal/v1/node.rst      |  35 +
 .../user/resources/baremetal/v1/port.rst      |  12 +
 .../resources/baremetal/v1/port_group.rst     |  12 +
 .../baremetal/v1/volume_connector.rst         |  13 +
 .../resources/baremetal/v1/volume_target.rst  |  13 +
 .../baremetal_introspection/index.rst         |   8 +
 .../v1/introspection.rst                      |  13 +
 .../v1/introspection_rule.rst                 |  13 +
 .../user/resources/block_storage/index.rst    |  20 +
 .../resources/block_storage/v2/backup.rst     |  12 +
 .../block_storage/v2/capabilities.rst         |  12 +
 .../resources/block_storage/v2/limits.rst     |  37 +
 .../resources/block_storage/v2/quota_set.rst  |  12 +
 .../resources/block_storage/v2/snapshot.rst   |  21 +
 .../user/resources/block_storage/v2/stats.rst |  12 +
 .../user/resources/block_storage/v2/type.rst  |  13 +
 .../resources/block_storage/v2/volume.rst     |  12 +
 .../resources/block_storage/v3/attachment.rst |  13 +
 .../block_storage/v3/availability_zone.rst    |  13 +
 .../resources/block_storage/v3/backup.rst     |  12 +
 .../v3/block_storage_summary.rst              |  14 +
 .../block_storage/v3/capabilities.rst         |  12 +
 .../resources/block_storage/v3/extension.rst  |  12 +
 .../user/resources/block_storage/v3/group.rst |  12 +
 .../block_storage/v3/group_snapshot.rst       |  13 +
 .../resources/block_storage/v3/group_type.rst |  12 +
 .../resources/block_storage/v3/limits.rst     |  37 +
 .../resources/block_storage/v3/quota_set.rst  |  12 +
 .../block_storage/v3/resource_filter.rst      |  13 +
 .../resources/block_storage/v3/service.rst    |  12 +
 .../resources/block_storage/v3/snapshot.rst   |  21 +
 .../user/resources/block_storage/v3/stats.rst |  12 +
 .../resources/block_storage/v3/transfer.rst   |  13 +
 .../user/resources/block_storage/v3/type.rst  |  21 +
 .../resources/block_storage/v3/volume.rst     |  12 +
 .../user/resources/clustering/index.rst       |  17 +
 .../user/resources/clustering/v1/action.rst   |  12 +
 .../resources/clustering/v1/build_info.rst    |  12 +
 .../user/resources/clustering/v1/cluster.rst  |  12 +
 .../clustering/v1/cluster_policy.rst          |  13 +
 .../user/resources/clustering/v1/event.rst    |  12 +
 .../user/resources/clustering/v1/node.rst     |  12 +
 .../user/resources/clustering/v1/policy.rst   |  12 +
 .../resources/clustering/v1/policy_type.rst   |  12 +
 .../user/resources/clustering/v1/profile.rst  |  12 +
 .../resources/clustering/v1/profile_type.rst  |  12 +
 .../user/resources/clustering/v1/receiver.rst |  12 +
 doc/source/user/resources/compute/index.rst   |   9 +
 .../user/resources/compute/v2/aggregate.rst   |  12 +
 .../compute/v2/availability_zone.rst          |  13 +
 .../user/resources/compute/v2/extension.rst   |  12 +
 .../user/resources/compute/v2/flavor.rst      |  21 +
 .../user/resources/compute/v2/hypervisor.rst  |  12 +
 .../user/resources/compute/v2/image.rst       |  21 +
 .../user/resources/compute/v2/keypair.rst     |  12 +
 .../user/resources/compute/v2/limits.rst      |  29 +
 .../user/resources/compute/v2/migration.rst   |  12 +
 .../user/resources/compute/v2/quota_set.rst   |  12 +
 .../user/resources/compute/v2/server.rst      |  12 +
 .../resources/compute/v2/server_action.rst    |  22 +
 .../compute/v2/server_diagnostics.rst         |  13 +
 .../resources/compute/v2/server_group.rst     |  13 +
 .../resources/compute/v2/server_interface.rst |  13 +
 .../user/resources/compute/v2/server_ip.rst   |  12 +
 .../resources/compute/v2/server_migration.rst |  13 +
 .../compute/v2/server_remote_console.rst      |  13 +
 .../user/resources/compute/v2/service.rst     |  12 +
 .../user/resources/compute/v2/usage.rst       |  20 +
 .../compute/v2/volume_attachment.rst          |  13 +
 doc/source/user/resources/compute/version.rst |  12 +
 .../cluster.rst                               |  12 +
 .../cluster_certificate.rst                   |  13 +
 .../cluster_template.rst                      |  13 +
 .../index.rst                                 |  10 +
 .../service.rst                               |  12 +
 doc/source/user/resources/database/index.rst  |  10 +
 .../user/resources/database/v1/database.rst   |  12 +
 .../user/resources/database/v1/flavor.rst     |  12 +
 .../user/resources/database/v1/instance.rst   |  12 +
 .../user/resources/database/v1/user.rst       |  12 +
 doc/source/user/resources/dns/index.rst       |  13 +
 .../user/resources/dns/v2/floating_ip.rst     |  12 +
 .../user/resources/dns/v2/recordset.rst       |  12 +
 doc/source/user/resources/dns/v2/zone.rst     |  12 +
 .../user/resources/dns/v2/zone_export.rst     |  12 +
 .../user/resources/dns/v2/zone_import.rst     |  12 +
 .../user/resources/dns/v2/zone_share.rst      |  12 +
 .../user/resources/dns/v2/zone_transfer.rst   |  20 +
 doc/source/user/resources/identity/index.rst  |  27 +
 .../user/resources/identity/v2/extension.rst  |  12 +
 .../user/resources/identity/v2/role.rst       |  12 +
 .../user/resources/identity/v2/tenant.rst     |  12 +
 .../user/resources/identity/v2/user.rst       |  12 +
 .../identity/v3/application_credential.rst    |  13 +
 .../user/resources/identity/v3/credential.rst |  12 +
 .../user/resources/identity/v3/domain.rst     |  12 +
 .../resources/identity/v3/domain_config.rst   |  12 +
 .../user/resources/identity/v3/endpoint.rst   |  12 +
 .../identity/v3/federation_protocol.rst       |  13 +
 .../user/resources/identity/v3/group.rst      |  12 +
 .../identity/v3/identity_provider.rst         |  13 +
 .../user/resources/identity/v3/limit.rst      |  12 +
 .../user/resources/identity/v3/mapping.rst    |  12 +
 .../user/resources/identity/v3/policy.rst     |  12 +
 .../user/resources/identity/v3/project.rst    |  12 +
 .../user/resources/identity/v3/region.rst     |  12 +
 .../identity/v3/registered_limit.rst          |  13 +
 .../user/resources/identity/v3/role.rst       |  12 +
 .../resources/identity/v3/role_assignment.rst |  13 +
 .../v3/role_domain_group_assignment.rst       |  13 +
 .../v3/role_domain_user_assignment.rst        |  13 +
 .../v3/role_project_group_assignment.rst      |  13 +
 .../v3/role_project_user_assignment.rst       |  13 +
 .../v3/role_system_group_assignment.rst       |  13 +
 .../v3/role_system_user_assignment.rst        |  13 +
 .../user/resources/identity/v3/service.rst    |  12 +
 .../user/resources/identity/v3/system.rst     |  12 +
 .../user/resources/identity/v3/trust.rst      |  12 +
 .../user/resources/identity/v3/user.rst       |  12 +
 .../user/resources/identity/version.rst       |  12 +
 doc/source/user/resources/image/index.rst     |  26 +
 doc/source/user/resources/image/v1/image.rst  |  12 +
 doc/source/user/resources/image/v2/image.rst  |  12 +
 doc/source/user/resources/image/v2/member.rst |  12 +
 .../resources/image/v2/metadef_namespace.rst  |  13 +
 .../resources/image/v2/metadef_object.rst     |  13 +
 .../resources/image/v2/metadef_property.rst   |  13 +
 .../image/v2/metadef_resource_type.rst        |  24 +
 .../resources/image/v2/metadef_schema.rst     |  13 +
 .../user/resources/image/v2/service_info.rst  |  20 +
 doc/source/user/resources/image/v2/task.rst   |  12 +
 .../user/resources/key_manager/index.rst      |   9 +
 .../resources/key_manager/v1/container.rst    |  12 +
 .../user/resources/key_manager/v1/order.rst   |  12 +
 .../user/resources/key_manager/v1/secret.rst  |  12 +
 .../user/resources/load_balancer/index.rst    |  20 +
 .../resources/load_balancer/v2/amphora.rst    |  30 +
 .../load_balancer/v2/availability_zone.rst    |  13 +
 .../v2/availability_zone_profile.rst          |  13 +
 .../resources/load_balancer/v2/flavor.rst     |  12 +
 .../load_balancer/v2/flavor_profile.rst       |  13 +
 .../load_balancer/v2/health_monitor.rst       |  13 +
 .../resources/load_balancer/v2/l7_policy.rst  |  12 +
 .../resources/load_balancer/v2/l7_rule.rst    |  12 +
 .../resources/load_balancer/v2/listener.rst   |  21 +
 .../load_balancer/v2/load_balancer.rst        |  30 +
 .../resources/load_balancer/v2/member.rst     |  12 +
 .../user/resources/load_balancer/v2/pool.rst  |  12 +
 .../resources/load_balancer/v2/provider.rst   |  21 +
 .../user/resources/load_balancer/v2/quota.rst |  12 +
 doc/source/user/resources/network/index.rst   |   9 +
 .../resources/network/v2/address_group.rst    |  12 +
 .../resources/network/v2/address_scope.rst    |  12 +
 .../user/resources/network/v2/agent.rst       |  12 +
 .../network/v2/auto_allocated_topology.rst    |  13 +
 .../network/v2/availability_zone.rst          |  13 +
 .../user/resources/network/v2/bgp_peer.rst    |  12 +
 .../user/resources/network/v2/bgp_speaker.rst |  12 +
 .../user/resources/network/v2/bgpvpn.rst      |  12 +
 .../network/v2/bgpvpn_network_association.rst |  13 +
 .../network/v2/bgpvpn_port_association.rst    |  13 +
 .../network/v2/bgpvpn_router_association.rst  |  13 +
 .../user/resources/network/v2/extension.rst   |  12 +
 .../user/resources/network/v2/flavor.rst      |  12 +
 .../user/resources/network/v2/floating_ip.rst |  12 +
 .../resources/network/v2/health_monitor.rst   |  13 +
 .../user/resources/network/v2/listener.rst    |  12 +
 .../resources/network/v2/load_balancer.rst    |  12 +
 .../user/resources/network/v2/local_ip.rst    |  12 +
 .../network/v2/local_ip_association.rst       |  13 +
 .../resources/network/v2/metering_label.rst   |  13 +
 .../network/v2/metering_label_rule.rst        |  13 +
 .../user/resources/network/v2/ndp_proxy.rst   |  12 +
 .../user/resources/network/v2/network.rst     |  12 +
 .../network/v2/network_ip_availability.rst    |  13 +
 .../network/v2/network_segment_range.rst      |  13 +
 doc/source/user/resources/network/v2/pool.rst |  12 +
 .../user/resources/network/v2/pool_member.rst |  12 +
 doc/source/user/resources/network/v2/port.rst |  12 +
 .../network/v2/qos_bandwidth_limit_rule.rst   |  13 +
 .../network/v2/qos_dscp_marking_rule.rst      |  13 +
 .../network/v2/qos_minimum_bandwidth_rule.rst |  13 +
 .../v2/qos_minimum_packet_rate_rule.rst       |  13 +
 .../user/resources/network/v2/qos_policy.rst  |  12 +
 .../resources/network/v2/qos_rule_type.rst    |  12 +
 .../user/resources/network/v2/quota.rst       |  12 +
 .../user/resources/network/v2/rbac_policy.rst |  12 +
 .../user/resources/network/v2/router.rst      |  12 +
 .../resources/network/v2/security_group.rst   |  13 +
 .../network/v2/security_group_rule.rst        |  13 +
 .../user/resources/network/v2/segment.rst     |  12 +
 .../resources/network/v2/service_profile.rst  |  13 +
 .../resources/network/v2/service_provider.rst |  13 +
 .../network/v2/sfc_flow_classifier.rst        |  13 +
 .../resources/network/v2/sfc_port_chain.rst   |  12 +
 .../resources/network/v2/sfc_port_pair.rst    |  12 +
 .../network/v2/sfc_port_pair_group.rst        |  13 +
 .../network/v2/sfc_service_graph.rst          |  13 +
 .../user/resources/network/v2/subnet.rst      |  12 +
 .../user/resources/network/v2/subnet_pool.rst |  12 +
 .../user/resources/network/v2/tap_flow.rst    |  12 +
 .../user/resources/network/v2/tap_service.rst |  12 +
 .../network/v2/vpn/endpoint_group.rst         |  13 +
 .../resources/network/v2/vpn/ike_policy.rst   |  13 +
 .../user/resources/network/v2/vpn/index.rst   |   8 +
 .../resources/network/v2/vpn/ipsec_policy.rst |  13 +
 .../network/v2/vpn/ipsec_site_connection.rst  |  13 +
 .../user/resources/network/v2/vpn/service.rst |  13 +
 .../user/resources/object_store/index.rst     |   9 +
 .../resources/object_store/v1/account.rst     |  12 +
 .../resources/object_store/v1/container.rst   |  12 +
 .../user/resources/object_store/v1/obj.rst    |  12 +
 .../user/resources/orchestration/index.rst    |   9 +
 .../resources/orchestration/v1/resource.rst   |  12 +
 .../user/resources/orchestration/v1/stack.rst |  12 +
 .../orchestration/v1/stack_event.rst          |  12 +
 doc/source/user/resources/placement/index.rst |  10 +
 .../resources/placement/v1/resource_class.rst |  13 +
 .../placement/v1/resource_provider.rst        |  13 +
 .../v1/resource_provider_inventory.rst        |  13 +
 .../user/resources/placement/v1/trait.rst     |  12 +
 .../resources/shared_file_system/index.rst    |  20 +
 .../v2/availability_zone.rst                  |  13 +
 .../resources/shared_file_system/v2/limit.rst |  13 +
 .../shared_file_system/v2/resource_locks.rst  |  13 +
 .../resources/shared_file_system/v2/share.rst |  13 +
 .../v2/share_access_rule.rst                  |  13 +
 .../shared_file_system/v2/share_group.rst     |  13 +
 .../v2/share_group_snapshot.rst               |  13 +
 .../shared_file_system/v2/share_instance.rst  |  13 +
 .../shared_file_system/v2/share_network.rst   |  13 +
 .../v2/share_network_subnet.rst               |  13 +
 .../shared_file_system/v2/share_snapshot.rst  |  13 +
 .../v2/share_snapshot_instance.rst            |  13 +
 .../shared_file_system/v2/storage_pool.rst    |  13 +
 .../shared_file_system/v2/user_message.rst    |  13 +
 doc/source/user/resources/workflow/index.rst  |   9 +
 .../resources/workflow/v2/crontrigger.rst     |  12 +
 .../user/resources/workflow/v2/execution.rst  |  12 +
 .../user/resources/workflow/v2/workflow.rst   |  12 +
 doc/source/user/service_description.rst       |  10 +
 doc/source/user/testing/fakes.rst             |   5 +
 doc/source/user/testing/index.rst             |   8 +
 doc/source/user/transition_from_profile.rst   | 186 ++++
 doc/source/user/utils.rst                     |   3 +
 doc/source/user/warnings.rst                  |  20 +
 docs-requirements.txt                         |   2 +
 {accelerator => examples}/__init__.py         |   0
 examples/baremetal/list.py                    |  25 +
 examples/baremetal/provisioning.py            |  33 +
 examples/cloud/cleanup-servers.py             |  26 +
 examples/cloud/create-server-dict.py          |  46 +
 examples/cloud/create-server-name-or-id.py    |  41 +
 examples/cloud/debug-logging.py               |  18 +
 examples/cloud/find-an-image.py               |  20 +
 examples/cloud/http-debug-logging.py          |  18 +
 examples/cloud/munch-dict-object.py           |  20 +
 examples/cloud/normalization.py               |  21 +
 examples/cloud/server-information.py          |  38 +
 .../cloud/service-conditional-overrides.py    |  18 +
 examples/cloud/service-conditionals.py        |  19 +
 examples/cloud/strict-mode.py                 |  21 +
 examples/cloud/upload-large-object.py         |  25 +
 examples/cloud/upload-object.py               |  25 +
 examples/cloud/user-agent.py                  |  20 +
 .../v2 => examples/clustering}/__init__.py    |   0
 examples/clustering/action.py                 |  37 +
 examples/clustering/cluster.py                | 171 ++++
 examples/clustering/event.py                  |  37 +
 examples/clustering/node.py                   |  93 ++
 examples/clustering/policy.py                 |  75 ++
 examples/clustering/policy_type.py            |  33 +
 examples/clustering/profile.py                |  81 ++
 examples/clustering/profile_type.py           |  33 +
 examples/clustering/receiver.py               |  76 ++
 {baremetal => examples/compute}/__init__.py   |   0
 examples/compute/create.py                    |  78 ++
 examples/compute/delete.py                    |  51 ++
 examples/compute/find.py                      |  50 ++
 examples/compute/list.py                      |  46 +
 examples/connect.py                           |  97 +++
 {baremetal/v1 => examples/dns}/__init__.py    |   0
 examples/dns/list.py                          |  25 +
 .../identity}/__init__.py                     |   0
 examples/identity/list.py                     | 109 +++
 .../v1 => examples/image}/__init__.py         |   0
 examples/image/create.py                      |  37 +
 examples/image/delete.py                      |  28 +
 examples/image/download.py                    |  63 ++
 examples/image/import.py                      |  40 +
 examples/image/list.py                        |  25 +
 .../key_manager}/__init__.py                  |   0
 examples/key_manager/create.py                |  27 +
 examples/key_manager/get.py                   |  26 +
 examples/key_manager/list.py                  |  31 +
 .../v2 => examples/network}/__init__.py       |   0
 examples/network/create.py                    |  38 +
 examples/network/delete.py                    |  30 +
 examples/network/find.py                      |  30 +
 examples/network/list.py                      |  60 ++
 examples/network/security_group_rules.py      |  62 ++
 .../shared_file_system}/__init__.py           |   0
 .../shared_file_system/availability_zones.py  |  24 +
 .../share_group_snapshots.py                  |  66 ++
 .../shared_file_system/share_instances.py     |  43 +
 examples/shared_file_system/share_metadata.py |  61 ++
 examples/shared_file_system/shares.py         |  56 ++
 extras/delete-network.sh                      |  14 +
 extras/run-ansible-tests.sh                   | 100 +++
 include-acceptance-regular-user.txt           |  12 +
 README.md => openstack/README.md              |   0
 __init__.py => openstack/__init__.py          |   0
 __main__.py => openstack/__main__.py          |   0
 .../__pycache__}/__init__.cpython-310.pyc     | Bin
 .../__pycache__}/__main__.cpython-310.pyc     | Bin
 .../__pycache__}/_hacking.cpython-310.pyc     | Bin
 .../__pycache__}/_log.cpython-310.pyc         | Bin
 .../_services_mixin.cpython-310.pyc           | Bin
 .../__pycache__}/connection.cpython-310.pyc   | Bin
 .../__pycache__}/exceptions.cpython-310.pyc   | Bin
 .../__pycache__}/format.cpython-310.pyc       | Bin
 .../__pycache__}/proxy.cpython-310.pyc        | Bin
 .../__pycache__}/resource.cpython-310.pyc     | Bin
 .../service_description.cpython-310.pyc       | Bin
 .../__pycache__}/utils.cpython-310.pyc        | Bin
 .../__pycache__}/version.cpython-310.pyc      | Bin
 .../__pycache__}/warnings.cpython-310.pyc     | Bin
 _hacking.py => openstack/_hacking.py          |   0
 _log.py => openstack/_log.py                  |   0
 .../_services_mixin.py                        |   0
 .../cmd => openstack/accelerator}/__init__.py |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../accelerator_service.cpython-310.pyc       | Bin
 .../__pycache__/version.cpython-310.pyc       | Bin
 .../accelerator}/accelerator_service.py       |   0
 .../accelerator/v2}/__init__.py               |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../accelerator_request.cpython-310.pyc       | Bin
 .../v2/__pycache__/deployable.cpython-310.pyc | Bin
 .../v2/__pycache__/device.cpython-310.pyc     | Bin
 .../device_profile.cpython-310.pyc            | Bin
 .../accelerator}/v2/_proxy.py                 |   0
 .../accelerator}/v2/accelerator_request.py    |   0
 .../accelerator}/v2/deployable.py             |   0
 .../accelerator}/v2/device.py                 |   0
 .../accelerator}/v2/device_profile.py         |   0
 .../accelerator}/version.py                   |   0
 .../baremetal}/__init__.py                    |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../baremetal_service.cpython-310.pyc         | Bin
 .../__pycache__/configdrive.cpython-310.pyc   | Bin
 .../__pycache__/version.cpython-310.pyc       | Bin
 .../baremetal}/baremetal_service.py           |   0
 .../baremetal}/configdrive.py                 |   0
 .../baremetal}/v1/__init__.py                 |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/_common.cpython-310.pyc    | Bin
 .../v1/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v1/__pycache__/allocation.cpython-310.pyc | Bin
 .../v1/__pycache__/chassis.cpython-310.pyc    | Bin
 .../v1/__pycache__/conductor.cpython-310.pyc  | Bin
 .../deploy_templates.cpython-310.pyc          | Bin
 .../v1/__pycache__/driver.cpython-310.pyc     | Bin
 .../v1/__pycache__/node.cpython-310.pyc       | Bin
 .../v1/__pycache__/port.cpython-310.pyc       | Bin
 .../v1/__pycache__/port_group.cpython-310.pyc | Bin
 .../volume_connector.cpython-310.pyc          | Bin
 .../__pycache__/volume_target.cpython-310.pyc | Bin
 .../baremetal}/v1/_common.py                  |   0
 .../baremetal}/v1/_proxy.py                   |   0
 .../baremetal}/v1/allocation.py               |   0
 .../baremetal}/v1/chassis.py                  |   0
 .../baremetal}/v1/conductor.py                |   0
 .../baremetal}/v1/deploy_templates.py         |   0
 .../baremetal}/v1/driver.py                   |   0
 {baremetal => openstack/baremetal}/v1/node.py |   0
 {baremetal => openstack/baremetal}/v1/port.py |   0
 .../baremetal}/v1/port_group.py               |   0
 .../baremetal}/v1/volume_connector.py         |   0
 .../baremetal}/v1/volume_target.py            |   0
 {baremetal => openstack/baremetal}/version.py |   0
 .../baremetal_introspection}/__init__.py      |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 ...etal_introspection_service.cpython-310.pyc | Bin
 .../baremetal_introspection_service.py        |   0
 .../baremetal_introspection/v1}/__init__.py   |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../__pycache__/introspection.cpython-310.pyc | Bin
 .../introspection_rule.cpython-310.pyc        | Bin
 .../baremetal_introspection}/v1/_proxy.py     |   0
 .../v1/introspection.py                       |   0
 .../v1/introspection_rule.py                  |   0
 .../block_storage}/__init__.py                |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/_base_proxy.cpython-310.pyc   | Bin
 .../block_storage_service.cpython-310.pyc     | Bin
 .../block_storage}/_base_proxy.py             |   0
 .../block_storage}/block_storage_service.py   |   0
 .../block_storage/v2}/__init__.py             |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v2/__pycache__/backup.cpython-310.pyc     | Bin
 .../__pycache__/capabilities.cpython-310.pyc  | Bin
 .../v2/__pycache__/extension.cpython-310.pyc  | Bin
 .../v2/__pycache__/limits.cpython-310.pyc     | Bin
 .../v2/__pycache__/quota_set.cpython-310.pyc  | Bin
 .../v2/__pycache__/snapshot.cpython-310.pyc   | Bin
 .../v2/__pycache__/stats.cpython-310.pyc      | Bin
 .../v2/__pycache__/type.cpython-310.pyc       | Bin
 .../v2/__pycache__/volume.cpython-310.pyc     | Bin
 .../block_storage}/v2/_proxy.py               |   0
 .../block_storage}/v2/backup.py               |   0
 .../block_storage}/v2/capabilities.py         |   0
 .../block_storage}/v2/extension.py            |   0
 .../block_storage}/v2/limits.py               |   0
 .../block_storage}/v2/quota_set.py            |   0
 .../block_storage}/v2/snapshot.py             |   0
 .../block_storage}/v2/stats.py                |   0
 .../block_storage}/v2/type.py                 |   0
 .../block_storage}/v2/volume.py               |   0
 .../block_storage/v3}/__init__.py             |   0
 .../v3/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v3/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v3/__pycache__/attachment.cpython-310.pyc | Bin
 .../availability_zone.cpython-310.pyc         | Bin
 .../v3/__pycache__/backup.cpython-310.pyc     | Bin
 .../block_storage_summary.cpython-310.pyc     | Bin
 .../__pycache__/capabilities.cpython-310.pyc  | Bin
 .../v3/__pycache__/extension.cpython-310.pyc  | Bin
 .../v3/__pycache__/group.cpython-310.pyc      | Bin
 .../group_snapshot.cpython-310.pyc            | Bin
 .../v3/__pycache__/group_type.cpython-310.pyc | Bin
 .../v3/__pycache__/limits.cpython-310.pyc     | Bin
 .../v3/__pycache__/quota_set.cpython-310.pyc  | Bin
 .../resource_filter.cpython-310.pyc           | Bin
 .../v3/__pycache__/service.cpython-310.pyc    | Bin
 .../v3/__pycache__/snapshot.cpython-310.pyc   | Bin
 .../v3/__pycache__/stats.cpython-310.pyc      | Bin
 .../v3/__pycache__/transfer.cpython-310.pyc   | Bin
 .../v3/__pycache__/type.cpython-310.pyc       | Bin
 .../v3/__pycache__/volume.cpython-310.pyc     | Bin
 .../block_storage}/v3/_proxy.py               |   0
 .../block_storage}/v3/attachment.py           |   0
 .../block_storage}/v3/availability_zone.py    |   0
 .../block_storage}/v3/backup.py               |   0
 .../v3/block_storage_summary.py               |   0
 .../block_storage}/v3/capabilities.py         |   0
 .../block_storage}/v3/extension.py            |   0
 .../block_storage}/v3/group.py                |   0
 .../block_storage}/v3/group_snapshot.py       |   0
 .../block_storage}/v3/group_type.py           |   0
 .../block_storage}/v3/limits.py               |   0
 .../block_storage}/v3/quota_set.py            |   0
 .../block_storage}/v3/resource_filter.py      |   0
 .../block_storage}/v3/service.py              |   0
 .../block_storage}/v3/snapshot.py             |   0
 .../block_storage}/v3/stats.py                |   0
 .../block_storage}/v3/transfer.py             |   0
 .../block_storage}/v3/type.py                 |   0
 .../block_storage}/v3/volume.py               |   0
 {cloud => openstack/cloud}/__init__.py        |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/_accelerator.cpython-310.pyc  | Bin
 .../__pycache__/_baremetal.cpython-310.pyc    | Bin
 .../_block_storage.cpython-310.pyc            | Bin
 .../cloud}/__pycache__/_coe.cpython-310.pyc   | Bin
 .../__pycache__/_compute.cpython-310.pyc      | Bin
 .../cloud}/__pycache__/_dns.cpython-310.pyc   | Bin
 .../__pycache__/_floating_ip.cpython-310.pyc  | Bin
 .../__pycache__/_identity.cpython-310.pyc     | Bin
 .../cloud}/__pycache__/_image.cpython-310.pyc | Bin
 .../__pycache__/_network.cpython-310.pyc      | Bin
 .../_network_common.cpython-310.pyc           | Bin
 .../__pycache__/_object_store.cpython-310.pyc | Bin
 .../_orchestration.cpython-310.pyc            | Bin
 .../_security_group.cpython-310.pyc           | Bin
 .../_shared_file_system.cpython-310.pyc       | Bin
 .../cloud}/__pycache__/_utils.cpython-310.pyc | Bin
 .../cloud}/__pycache__/exc.cpython-310.pyc    | Bin
 .../__pycache__/inventory.cpython-310.pyc     | Bin
 .../cloud}/__pycache__/meta.cpython-310.pyc   | Bin
 .../openstackcloud.cpython-310.pyc            | Bin
 {cloud => openstack/cloud}/_accelerator.py    |   0
 {cloud => openstack/cloud}/_baremetal.py      |   0
 {cloud => openstack/cloud}/_block_storage.py  |   0
 {cloud => openstack/cloud}/_coe.py            |   0
 {cloud => openstack/cloud}/_compute.py        |   0
 {cloud => openstack/cloud}/_dns.py            |   0
 {cloud => openstack/cloud}/_floating_ip.py    |   0
 {cloud => openstack/cloud}/_identity.py       |   0
 {cloud => openstack/cloud}/_image.py          |   0
 {cloud => openstack/cloud}/_network.py        |   0
 {cloud => openstack/cloud}/_network_common.py |   0
 {cloud => openstack/cloud}/_object_store.py   |   0
 {cloud => openstack/cloud}/_orchestration.py  |   0
 {cloud => openstack/cloud}/_security_group.py |   0
 .../cloud}/_shared_file_system.py             |   0
 {cloud => openstack/cloud}/_utils.py          |   0
 {database => openstack/cloud/cmd}/__init__.py |   0
 .../cmd/__pycache__/__init__.cpython-310.pyc  | Bin
 .../cmd/__pycache__/inventory.cpython-310.pyc | Bin
 {cloud => openstack/cloud}/cmd/inventory.py   |   0
 {cloud => openstack/cloud}/exc.py             |   0
 {cloud => openstack/cloud}/inventory.py       |   0
 {cloud => openstack/cloud}/meta.py            |   0
 {cloud => openstack/cloud}/openstackcloud.py  |   0
 .../v1 => openstack/cloud/tests}/__init__.py  |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 {dns => openstack/clustering}/__init__.py     |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../clustering_service.cpython-310.pyc        | Bin
 .../__pycache__/version.cpython-310.pyc       | Bin
 .../clustering}/clustering_service.py         |   0
 .../clustering/v1}/__init__.py                |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../_async_resource.cpython-310.pyc           | Bin
 .../v1/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v1/__pycache__/action.cpython-310.pyc     | Bin
 .../v1/__pycache__/build_info.cpython-310.pyc | Bin
 .../v1/__pycache__/cluster.cpython-310.pyc    | Bin
 .../__pycache__/cluster_attr.cpython-310.pyc  | Bin
 .../cluster_policy.cpython-310.pyc            | Bin
 .../v1/__pycache__/event.cpython-310.pyc      | Bin
 .../v1/__pycache__/node.cpython-310.pyc       | Bin
 .../v1/__pycache__/policy.cpython-310.pyc     | Bin
 .../__pycache__/policy_type.cpython-310.pyc   | Bin
 .../v1/__pycache__/profile.cpython-310.pyc    | Bin
 .../__pycache__/profile_type.cpython-310.pyc  | Bin
 .../v1/__pycache__/receiver.cpython-310.pyc   | Bin
 .../v1/__pycache__/service.cpython-310.pyc    | Bin
 .../clustering}/v1/_async_resource.py         |   0
 .../clustering}/v1/_proxy.py                  |   0
 .../clustering}/v1/action.py                  |   0
 .../clustering}/v1/build_info.py              |   0
 .../clustering}/v1/cluster.py                 |   0
 .../clustering}/v1/cluster_attr.py            |   0
 .../clustering}/v1/cluster_policy.py          |   0
 .../clustering}/v1/event.py                   |   0
 .../clustering}/v1/node.py                    |   0
 .../clustering}/v1/policy.py                  |   0
 .../clustering}/v1/policy_type.py             |   0
 .../clustering}/v1/profile.py                 |   0
 .../clustering}/v1/profile_type.py            |   0
 .../clustering}/v1/receiver.py                |   0
 .../clustering}/v1/service.py                 |   0
 .../clustering}/version.py                    |   0
 {fixture => openstack/common}/__init__.py     |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/metadata.cpython-310.pyc      | Bin
 .../__pycache__/quota_set.cpython-310.pyc     | Bin
 .../common}/__pycache__/tag.cpython-310.pyc   | Bin
 {common => openstack/common}/metadata.py      |   0
 {common => openstack/common}/quota_set.py     |   0
 {common => openstack/common}/tag.py           |   0
 {identity => openstack/compute}/__init__.py   |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../compute_service.cpython-310.pyc           | Bin
 .../__pycache__/version.cpython-310.pyc       | Bin
 .../compute}/compute_service.py               |   0
 .../compute}/v2/__init__.py                   |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v2/__pycache__/aggregate.cpython-310.pyc  | Bin
 .../availability_zone.cpython-310.pyc         | Bin
 .../v2/__pycache__/extension.cpython-310.pyc  | Bin
 .../v2/__pycache__/flavor.cpython-310.pyc     | Bin
 .../v2/__pycache__/hypervisor.cpython-310.pyc | Bin
 .../v2/__pycache__/image.cpython-310.pyc      | Bin
 .../v2/__pycache__/keypair.cpython-310.pyc    | Bin
 .../v2/__pycache__/limits.cpython-310.pyc     | Bin
 .../v2/__pycache__/migration.cpython-310.pyc  | Bin
 .../v2/__pycache__/quota_set.cpython-310.pyc  | Bin
 .../v2/__pycache__/server.cpython-310.pyc     | Bin
 .../__pycache__/server_action.cpython-310.pyc | Bin
 .../server_diagnostics.cpython-310.pyc        | Bin
 .../__pycache__/server_group.cpython-310.pyc  | Bin
 .../server_interface.cpython-310.pyc          | Bin
 .../v2/__pycache__/server_ip.cpython-310.pyc  | Bin
 .../server_migration.cpython-310.pyc          | Bin
 .../server_remote_console.cpython-310.pyc     | Bin
 .../v2/__pycache__/service.cpython-310.pyc    | Bin
 .../v2/__pycache__/usage.cpython-310.pyc      | Bin
 .../volume_attachment.cpython-310.pyc         | Bin
 {compute => openstack/compute}/v2/_proxy.py   |   0
 .../compute}/v2/aggregate.py                  |   0
 .../compute}/v2/availability_zone.py          |   0
 .../compute}/v2/extension.py                  |   0
 {compute => openstack/compute}/v2/flavor.py   |   0
 .../compute}/v2/hypervisor.py                 |   0
 {compute => openstack/compute}/v2/image.py    |   0
 {compute => openstack/compute}/v2/keypair.py  |   0
 {compute => openstack/compute}/v2/limits.py   |   0
 .../compute}/v2/migration.py                  |   0
 .../compute}/v2/quota_set.py                  |   0
 {compute => openstack/compute}/v2/server.py   |   0
 .../compute}/v2/server_action.py              |   0
 .../compute}/v2/server_diagnostics.py         |   0
 .../compute}/v2/server_group.py               |   0
 .../compute}/v2/server_interface.py           |   0
 .../compute}/v2/server_ip.py                  |   0
 .../compute}/v2/server_migration.py           |   0
 .../compute}/v2/server_remote_console.py      |   0
 {compute => openstack/compute}/v2/service.py  |   0
 {compute => openstack/compute}/v2/usage.py    |   0
 .../compute}/v2/volume_attachment.py          |   0
 {compute => openstack/compute}/version.py     |   0
 {config => openstack/config}/__init__.py      |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../config}/__pycache__/_util.cpython-310.pyc | Bin
 .../__pycache__/cloud_config.cpython-310.pyc  | Bin
 .../__pycache__/cloud_region.cpython-310.pyc  | Bin
 .../__pycache__/defaults.cpython-310.pyc      | Bin
 .../__pycache__/exceptions.cpython-310.pyc    | Bin
 .../__pycache__/loader.cpython-310.pyc        | Bin
 {config => openstack/config}/_util.py         |   0
 {config => openstack/config}/cloud_config.py  |   0
 {config => openstack/config}/cloud_region.py  |   0
 {config => openstack/config}/defaults.json    |   0
 {config => openstack/config}/defaults.py      |   0
 {config => openstack/config}/exceptions.py    |   0
 {config => openstack/config}/loader.py        |   0
 {config => openstack/config}/schema.json      |   0
 .../config}/vendor-schema.json                |   0
 .../config}/vendors/__init__.py               |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../config}/vendors/auro.json                 |   0
 .../config}/vendors/betacloud.json            |   0
 .../config}/vendors/bluebox.json              |   0
 .../config}/vendors/catalyst.json             |   0
 .../config}/vendors/citycloud.json            |   0
 .../config}/vendors/conoha.json               |   0
 .../config}/vendors/dreamcompute.json         |   0
 .../config}/vendors/elastx.json               |   0
 .../config}/vendors/entercloudsuite.json      |   0
 .../config}/vendors/fuga.json                 |   0
 .../config}/vendors/ibmcloud.json             |   0
 .../config}/vendors/internap.json             |   0
 .../config}/vendors/limestonenetworks.yaml    |   0
 .../config}/vendors/otc-swiss.json            |   0
 {config => openstack/config}/vendors/otc.json |   0
 .../config}/vendors/ovh-us.json               |   0
 {config => openstack/config}/vendors/ovh.json |   0
 .../config}/vendors/rackspace.json            |   0
 .../config}/vendors/switchengines.json        |   0
 .../config}/vendors/ultimum.json              |   0
 .../config}/vendors/unitedstack.json          |   0
 .../config}/vendors/vexxhost.json             |   0
 .../config}/vendors/zetta.json                |   0
 connection.py => openstack/connection.py      |   0
 .../__init__.py                               |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 ...ructure_management_service.cpython-310.pyc | Bin
 ...ainer_infrastructure_management_service.py |   0
 .../v1}/__init__.py                           |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v1/__pycache__/cluster.cpython-310.pyc    | Bin
 .../cluster_certificate.cpython-310.pyc       | Bin
 .../cluster_template.cpython-310.pyc          | Bin
 .../v1/__pycache__/service.cpython-310.pyc    | Bin
 .../v1/_proxy.py                              |   0
 .../v1/cluster.py                             |   0
 .../v1/cluster_certificate.py                 |   0
 .../v1/cluster_template.py                    |   0
 .../v1/service.py                             |   0
 {image/v1 => openstack/database}/__init__.py  |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../database_service.cpython-310.pyc          | Bin
 .../database}/database_service.py             |   0
 .../v2 => openstack/database/v1}/__init__.py  |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v1/__pycache__/database.cpython-310.pyc   | Bin
 .../v1/__pycache__/flavor.cpython-310.pyc     | Bin
 .../v1/__pycache__/instance.cpython-310.pyc   | Bin
 .../v1/__pycache__/user.cpython-310.pyc       | Bin
 {database => openstack/database}/v1/_proxy.py |   0
 .../database}/v1/database.py                  |   0
 {database => openstack/database}/v1/flavor.py |   0
 .../database}/v1/instance.py                  |   0
 {database => openstack/database}/v1/user.py   |   0
 {instance_ha => openstack/dns}/__init__.py    |   0
 .../dns}/__pycache__/__init__.cpython-310.pyc | Bin
 .../__pycache__/dns_service.cpython-310.pyc   | Bin
 .../dns}/__pycache__/version.cpython-310.pyc  | Bin
 {dns => openstack/dns}/dns_service.py         |   0
 .../v1 => openstack/dns/v2}/__init__.py       |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../dns}/v2/__pycache__/_base.cpython-310.pyc | Bin
 .../v2/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../__pycache__/floating_ip.cpython-310.pyc   | Bin
 .../v2/__pycache__/recordset.cpython-310.pyc  | Bin
 .../dns}/v2/__pycache__/zone.cpython-310.pyc  | Bin
 .../__pycache__/zone_export.cpython-310.pyc   | Bin
 .../__pycache__/zone_import.cpython-310.pyc   | Bin
 .../v2/__pycache__/zone_share.cpython-310.pyc | Bin
 .../__pycache__/zone_transfer.cpython-310.pyc | Bin
 {dns => openstack/dns}/v2/_base.py            |   0
 {dns => openstack/dns}/v2/_proxy.py           |   0
 {dns => openstack/dns}/v2/floating_ip.py      |   0
 {dns => openstack/dns}/v2/recordset.py        |   0
 {dns => openstack/dns}/v2/zone.py             |   0
 {dns => openstack/dns}/v2/zone_export.py      |   0
 {dns => openstack/dns}/v2/zone_import.py      |   0
 {dns => openstack/dns}/v2/zone_share.py       |   0
 {dns => openstack/dns}/v2/zone_transfer.py    |   0
 {dns => openstack/dns}/version.py             |   0
 exceptions.py => openstack/exceptions.py      |   0
 .../fixture}/__init__.py                      |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/connection.cpython-310.pyc    | Bin
 {fixture => openstack/fixture}/connection.py  |   0
 format.py => openstack/format.py              |   0
 .../v1 => openstack/identity}/__init__.py     |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../identity_service.cpython-310.pyc          | Bin
 .../__pycache__/version.cpython-310.pyc       | Bin
 .../identity}/identity_service.py             |   0
 .../identity/v2}/__init__.py                  |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v2/__pycache__/extension.cpython-310.pyc  | Bin
 .../v2/__pycache__/role.cpython-310.pyc       | Bin
 .../v2/__pycache__/tenant.cpython-310.pyc     | Bin
 .../v2/__pycache__/user.cpython-310.pyc       | Bin
 {identity => openstack/identity}/v2/_proxy.py |   0
 .../identity}/v2/extension.py                 |   0
 {identity => openstack/identity}/v2/role.py   |   0
 {identity => openstack/identity}/v2/tenant.py |   0
 {identity => openstack/identity}/v2/user.py   |   0
 .../v2 => openstack/identity/v3}/__init__.py  |   0
 .../v3/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v3/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../application_credential.cpython-310.pyc    | Bin
 .../v3/__pycache__/credential.cpython-310.pyc | Bin
 .../v3/__pycache__/domain.cpython-310.pyc     | Bin
 .../__pycache__/domain_config.cpython-310.pyc | Bin
 .../v3/__pycache__/endpoint.cpython-310.pyc   | Bin
 .../federation_protocol.cpython-310.pyc       | Bin
 .../v3/__pycache__/group.cpython-310.pyc      | Bin
 .../identity_provider.cpython-310.pyc         | Bin
 .../v3/__pycache__/limit.cpython-310.pyc      | Bin
 .../v3/__pycache__/mapping.cpython-310.pyc    | Bin
 .../v3/__pycache__/policy.cpython-310.pyc     | Bin
 .../v3/__pycache__/project.cpython-310.pyc    | Bin
 .../v3/__pycache__/region.cpython-310.pyc     | Bin
 .../registered_limit.cpython-310.pyc          | Bin
 .../v3/__pycache__/role.cpython-310.pyc       | Bin
 .../role_assignment.cpython-310.pyc           | Bin
 ...le_domain_group_assignment.cpython-310.pyc | Bin
 ...ole_domain_user_assignment.cpython-310.pyc | Bin
 ...e_project_group_assignment.cpython-310.pyc | Bin
 ...le_project_user_assignment.cpython-310.pyc | Bin
 ...le_system_group_assignment.cpython-310.pyc | Bin
 ...ole_system_user_assignment.cpython-310.pyc | Bin
 .../v3/__pycache__/service.cpython-310.pyc    | Bin
 .../v3/__pycache__/system.cpython-310.pyc     | Bin
 .../v3/__pycache__/trust.cpython-310.pyc      | Bin
 .../v3/__pycache__/user.cpython-310.pyc       | Bin
 {identity => openstack/identity}/v3/_proxy.py |   0
 .../identity}/v3/application_credential.py    |   0
 .../identity}/v3/credential.py                |   0
 {identity => openstack/identity}/v3/domain.py |   0
 .../identity}/v3/domain_config.py             |   0
 .../identity}/v3/endpoint.py                  |   0
 .../identity}/v3/federation_protocol.py       |   0
 {identity => openstack/identity}/v3/group.py  |   0
 .../identity}/v3/identity_provider.py         |   0
 {identity => openstack/identity}/v3/limit.py  |   0
 .../identity}/v3/mapping.py                   |   0
 {identity => openstack/identity}/v3/policy.py |   0
 .../identity}/v3/project.py                   |   0
 {identity => openstack/identity}/v3/region.py |   0
 .../identity}/v3/registered_limit.py          |   0
 {identity => openstack/identity}/v3/role.py   |   0
 .../identity}/v3/role_assignment.py           |   0
 .../v3/role_domain_group_assignment.py        |   0
 .../v3/role_domain_user_assignment.py         |   0
 .../v3/role_project_group_assignment.py       |   0
 .../v3/role_project_user_assignment.py        |   0
 .../v3/role_system_group_assignment.py        |   0
 .../v3/role_system_user_assignment.py         |   0
 .../identity}/v3/service.py                   |   0
 {identity => openstack/identity}/v3/system.py |   0
 {identity => openstack/identity}/v3/trust.py  |   0
 {identity => openstack/identity}/v3/user.py   |   0
 {identity => openstack/identity}/version.py   |   0
 {message => openstack/image}/__init__.py      |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/_download.cpython-310.pyc     | Bin
 .../__pycache__/image_service.cpython-310.pyc | Bin
 .../__pycache__/image_signer.cpython-310.pyc  | Bin
 .../iterable_chunked_file.cpython-310.pyc     | Bin
 {image => openstack/image}/_download.py       |   0
 {image => openstack/image}/image_service.py   |   0
 {image => openstack/image}/image_signer.py    |   0
 .../image}/iterable_chunked_file.py           |   0
 .../v2 => openstack/image/v1}/__init__.py     |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v1/__pycache__/image.cpython-310.pyc      | Bin
 {image => openstack/image}/v1/_proxy.py       |   0
 {image => openstack/image}/v1/image.py        |   0
 {network => openstack/image/v2}/__init__.py   |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v2/__pycache__/cache.cpython-310.pyc      | Bin
 .../v2/__pycache__/image.cpython-310.pyc      | Bin
 .../v2/__pycache__/member.cpython-310.pyc     | Bin
 .../metadef_namespace.cpython-310.pyc         | Bin
 .../metadef_object.cpython-310.pyc            | Bin
 .../metadef_property.cpython-310.pyc          | Bin
 .../metadef_resource_type.cpython-310.pyc     | Bin
 .../metadef_schema.cpython-310.pyc            | Bin
 .../v2/__pycache__/schema.cpython-310.pyc     | Bin
 .../__pycache__/service_info.cpython-310.pyc  | Bin
 .../v2/__pycache__/task.cpython-310.pyc       | Bin
 {image => openstack/image}/v2/_proxy.py       |   0
 {image => openstack/image}/v2/cache.py        |   0
 {image => openstack/image}/v2/image.py        |   0
 {image => openstack/image}/v2/member.py       |   0
 .../image}/v2/metadef_namespace.py            |   0
 .../image}/v2/metadef_object.py               |   0
 .../image}/v2/metadef_property.py             |   0
 .../image}/v2/metadef_resource_type.py        |   0
 .../image}/v2/metadef_schema.py               |   0
 {image => openstack/image}/v2/schema.py       |   0
 {image => openstack/image}/v2/service_info.py |   0
 {image => openstack/image}/v2/task.py         |   0
 .../v2 => openstack/instance_ha}/__init__.py  |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../instance_ha_service.cpython-310.pyc       | Bin
 .../instance_ha}/instance_ha_service.py       |   0
 .../instance_ha/v1}/__init__.py               |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v1/__pycache__/host.cpython-310.pyc       | Bin
 .../__pycache__/notification.cpython-310.pyc  | Bin
 .../v1/__pycache__/segment.cpython-310.pyc    | Bin
 .../v1/__pycache__/vmove.cpython-310.pyc      | Bin
 .../instance_ha}/v1/_proxy.py                 |   0
 .../instance_ha}/v1/host.py                   |   0
 .../instance_ha}/v1/notification.py           |   0
 .../instance_ha}/v1/segment.py                |   0
 .../instance_ha}/v1/vmove.py                  |   0
 .../v1 => openstack/key_manager}/__init__.py  |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../key_manager_service.cpython-310.pyc       | Bin
 .../key_manager}/key_manager_service.py       |   0
 .../key_manager/v1}/__init__.py               |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/_format.cpython-310.pyc    | Bin
 .../v1/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v1/__pycache__/container.cpython-310.pyc  | Bin
 .../v1/__pycache__/order.cpython-310.pyc      | Bin
 .../v1/__pycache__/secret.cpython-310.pyc     | Bin
 .../key_manager}/v1/_format.py                |   0
 .../key_manager}/v1/_proxy.py                 |   0
 .../key_manager}/v1/container.py              |   0
 .../key_manager}/v1/order.py                  |   0
 .../key_manager}/v1/secret.py                 |   0
 .../load_balancer}/__init__.py                |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../load_balancer_service.cpython-310.pyc     | Bin
 .../__pycache__/version.cpython-310.pyc       | Bin
 .../load_balancer}/load_balancer_service.py   |   0
 .../load_balancer/v2}/__init__.py             |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v2/__pycache__/amphora.cpython-310.pyc    | Bin
 .../availability_zone.cpython-310.pyc         | Bin
 .../availability_zone_profile.cpython-310.pyc | Bin
 .../v2/__pycache__/flavor.cpython-310.pyc     | Bin
 .../flavor_profile.cpython-310.pyc            | Bin
 .../health_monitor.cpython-310.pyc            | Bin
 .../v2/__pycache__/l7_policy.cpython-310.pyc  | Bin
 .../v2/__pycache__/l7_rule.cpython-310.pyc    | Bin
 .../v2/__pycache__/listener.cpython-310.pyc   | Bin
 .../__pycache__/load_balancer.cpython-310.pyc | Bin
 .../v2/__pycache__/member.cpython-310.pyc     | Bin
 .../v2/__pycache__/pool.cpython-310.pyc       | Bin
 .../v2/__pycache__/provider.cpython-310.pyc   | Bin
 .../v2/__pycache__/quota.cpython-310.pyc      | Bin
 .../load_balancer}/v2/_proxy.py               |   0
 .../load_balancer}/v2/amphora.py              |   0
 .../load_balancer}/v2/availability_zone.py    |   0
 .../v2/availability_zone_profile.py           |   0
 .../load_balancer}/v2/flavor.py               |   0
 .../load_balancer}/v2/flavor_profile.py       |   0
 .../load_balancer}/v2/health_monitor.py       |   0
 .../load_balancer}/v2/l7_policy.py            |   0
 .../load_balancer}/v2/l7_rule.py              |   0
 .../load_balancer}/v2/listener.py             |   0
 .../load_balancer}/v2/load_balancer.py        |   0
 .../load_balancer}/v2/member.py               |   0
 .../load_balancer}/v2/pool.py                 |   0
 .../load_balancer}/v2/provider.py             |   0
 .../load_balancer}/v2/quota.py                |   0
 .../load_balancer}/version.py                 |   0
 {placement => openstack/message}/__init__.py  |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../message_service.cpython-310.pyc           | Bin
 .../__pycache__/version.cpython-310.pyc       | Bin
 .../message}/message_service.py               |   0
 .../v1 => openstack/message/v2}/__init__.py   |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v2/__pycache__/claim.cpython-310.pyc      | Bin
 .../v2/__pycache__/message.cpython-310.pyc    | Bin
 .../v2/__pycache__/queue.cpython-310.pyc      | Bin
 .../__pycache__/subscription.cpython-310.pyc  | Bin
 {message => openstack/message}/v2/_proxy.py   |   0
 {message => openstack/message}/v2/claim.py    |   0
 {message => openstack/message}/v2/message.py  |   0
 {message => openstack/message}/v2/queue.py    |   0
 .../message}/v2/subscription.py               |   0
 {message => openstack/message}/version.py     |   0
 .../network}/__init__.py                      |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../network_service.cpython-310.pyc           | Bin
 .../__pycache__/version.cpython-310.pyc       | Bin
 .../network}/network_service.py               |   0
 .../network}/v2/__init__.py                   |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/_base.cpython-310.pyc      | Bin
 .../v2/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../__pycache__/address_group.cpython-310.pyc | Bin
 .../__pycache__/address_scope.cpython-310.pyc | Bin
 .../v2/__pycache__/agent.cpython-310.pyc      | Bin
 .../auto_allocated_topology.cpython-310.pyc   | Bin
 .../availability_zone.cpython-310.pyc         | Bin
 .../v2/__pycache__/bgp_peer.cpython-310.pyc   | Bin
 .../__pycache__/bgp_speaker.cpython-310.pyc   | Bin
 .../v2/__pycache__/bgpvpn.cpython-310.pyc     | Bin
 ...bgpvpn_network_association.cpython-310.pyc | Bin
 .../bgpvpn_port_association.cpython-310.pyc   | Bin
 .../bgpvpn_router_association.cpython-310.pyc | Bin
 ...efault_security_group_rule.cpython-310.pyc | Bin
 .../v2/__pycache__/extension.cpython-310.pyc  | Bin
 .../firewall_group.cpython-310.pyc            | Bin
 .../firewall_policy.cpython-310.pyc           | Bin
 .../__pycache__/firewall_rule.cpython-310.pyc | Bin
 .../v2/__pycache__/flavor.cpython-310.pyc     | Bin
 .../__pycache__/floating_ip.cpython-310.pyc   | Bin
 .../health_monitor.cpython-310.pyc            | Bin
 .../l3_conntrack_helper.cpython-310.pyc       | Bin
 .../v2/__pycache__/listener.cpython-310.pyc   | Bin
 .../__pycache__/load_balancer.cpython-310.pyc | Bin
 .../v2/__pycache__/local_ip.cpython-310.pyc   | Bin
 .../local_ip_association.cpython-310.pyc      | Bin
 .../metering_label.cpython-310.pyc            | Bin
 .../metering_label_rule.cpython-310.pyc       | Bin
 .../v2/__pycache__/ndp_proxy.cpython-310.pyc  | Bin
 .../v2/__pycache__/network.cpython-310.pyc    | Bin
 .../network_ip_availability.cpython-310.pyc   | Bin
 .../network_segment_range.cpython-310.pyc     | Bin
 .../v2/__pycache__/pool.cpython-310.pyc       | Bin
 .../__pycache__/pool_member.cpython-310.pyc   | Bin
 .../v2/__pycache__/port.cpython-310.pyc       | Bin
 .../port_forwarding.cpython-310.pyc           | Bin
 .../qos_bandwidth_limit_rule.cpython-310.pyc  | Bin
 .../qos_dscp_marking_rule.cpython-310.pyc     | Bin
 ...qos_minimum_bandwidth_rule.cpython-310.pyc | Bin
 ...s_minimum_packet_rate_rule.cpython-310.pyc | Bin
 .../v2/__pycache__/qos_policy.cpython-310.pyc | Bin
 .../__pycache__/qos_rule_type.cpython-310.pyc | Bin
 .../v2/__pycache__/quota.cpython-310.pyc      | Bin
 .../__pycache__/rbac_policy.cpython-310.pyc   | Bin
 .../v2/__pycache__/router.cpython-310.pyc     | Bin
 .../security_group.cpython-310.pyc            | Bin
 .../security_group_rule.cpython-310.pyc       | Bin
 .../v2/__pycache__/segment.cpython-310.pyc    | Bin
 .../service_profile.cpython-310.pyc           | Bin
 .../service_provider.cpython-310.pyc          | Bin
 .../sfc_flow_classifier.cpython-310.pyc       | Bin
 .../sfc_port_chain.cpython-310.pyc            | Bin
 .../__pycache__/sfc_port_pair.cpython-310.pyc | Bin
 .../sfc_port_pair_group.cpython-310.pyc       | Bin
 .../sfc_service_graph.cpython-310.pyc         | Bin
 .../v2/__pycache__/subnet.cpython-310.pyc     | Bin
 .../__pycache__/subnet_pool.cpython-310.pyc   | Bin
 .../v2/__pycache__/tap_flow.cpython-310.pyc   | Bin
 .../__pycache__/tap_service.cpython-310.pyc   | Bin
 .../v2/__pycache__/trunk.cpython-310.pyc      | Bin
 .../vpn_endpoint_group.cpython-310.pyc        | Bin
 .../vpn_ike_policy.cpython-310.pyc            | Bin
 .../vpn_ipsec_policy.cpython-310.pyc          | Bin
 .../vpn_ipsec_site_connection.cpython-310.pyc | Bin
 .../__pycache__/vpn_service.cpython-310.pyc   | Bin
 {network => openstack/network}/v2/_base.py    |   0
 {network => openstack/network}/v2/_proxy.py   |   0
 .../network}/v2/address_group.py              |   0
 .../network}/v2/address_scope.py              |   0
 {network => openstack/network}/v2/agent.py    |   0
 .../network}/v2/auto_allocated_topology.py    |   0
 .../network}/v2/availability_zone.py          |   0
 {network => openstack/network}/v2/bgp_peer.py |   0
 .../network}/v2/bgp_speaker.py                |   0
 {network => openstack/network}/v2/bgpvpn.py   |   0
 .../network}/v2/bgpvpn_network_association.py |   0
 .../network}/v2/bgpvpn_port_association.py    |   0
 .../network}/v2/bgpvpn_router_association.py  |   0
 .../v2/default_security_group_rule.py         |   0
 .../network}/v2/extension.py                  |   0
 .../network}/v2/firewall_group.py             |   0
 .../network}/v2/firewall_policy.py            |   0
 .../network}/v2/firewall_rule.py              |   0
 {network => openstack/network}/v2/flavor.py   |   0
 .../network}/v2/floating_ip.py                |   0
 .../network}/v2/health_monitor.py             |   0
 .../network}/v2/l3_conntrack_helper.py        |   0
 {network => openstack/network}/v2/listener.py |   0
 .../network}/v2/load_balancer.py              |   0
 {network => openstack/network}/v2/local_ip.py |   0
 .../network}/v2/local_ip_association.py       |   0
 .../network}/v2/metering_label.py             |   0
 .../network}/v2/metering_label_rule.py        |   0
 .../network}/v2/ndp_proxy.py                  |   0
 {network => openstack/network}/v2/network.py  |   0
 .../network}/v2/network_ip_availability.py    |   0
 .../network}/v2/network_segment_range.py      |   0
 {network => openstack/network}/v2/pool.py     |   0
 .../network}/v2/pool_member.py                |   0
 {network => openstack/network}/v2/port.py     |   0
 .../network}/v2/port_forwarding.py            |   0
 .../network}/v2/qos_bandwidth_limit_rule.py   |   0
 .../network}/v2/qos_dscp_marking_rule.py      |   0
 .../network}/v2/qos_minimum_bandwidth_rule.py |   0
 .../v2/qos_minimum_packet_rate_rule.py        |   0
 .../network}/v2/qos_policy.py                 |   0
 .../network}/v2/qos_rule_type.py              |   0
 {network => openstack/network}/v2/quota.py    |   0
 .../network}/v2/rbac_policy.py                |   0
 {network => openstack/network}/v2/router.py   |   0
 .../network}/v2/security_group.py             |   0
 .../network}/v2/security_group_rule.py        |   0
 {network => openstack/network}/v2/segment.py  |   0
 .../network}/v2/service_profile.py            |   0
 .../network}/v2/service_provider.py           |   0
 .../network}/v2/sfc_flow_classifier.py        |   0
 .../network}/v2/sfc_port_chain.py             |   0
 .../network}/v2/sfc_port_pair.py              |   0
 .../network}/v2/sfc_port_pair_group.py        |   0
 .../network}/v2/sfc_service_graph.py          |   0
 {network => openstack/network}/v2/subnet.py   |   0
 .../network}/v2/subnet_pool.py                |   0
 {network => openstack/network}/v2/tap_flow.py |   0
 .../network}/v2/tap_service.py                |   0
 {network => openstack/network}/v2/trunk.py    |   0
 .../network}/v2/vpn_endpoint_group.py         |   0
 .../network}/v2/vpn_ike_policy.py             |   0
 .../network}/v2/vpn_ipsec_policy.py           |   0
 .../network}/v2/vpn_ipsec_site_connection.py  |   0
 .../network}/v2/vpn_service.py                |   0
 {network => openstack/network}/version.py     |   0
 {test => openstack/object_store}/__init__.py  |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../object_store_service.cpython-310.pyc      | Bin
 .../object_store}/object_store_service.py     |   0
 .../object_store/v1}/__init__.py              |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/_base.cpython-310.pyc      | Bin
 .../v1/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v1/__pycache__/account.cpython-310.pyc    | Bin
 .../v1/__pycache__/container.cpython-310.pyc  | Bin
 .../v1/__pycache__/info.cpython-310.pyc       | Bin
 .../v1/__pycache__/obj.cpython-310.pyc        | Bin
 .../object_store}/v1/_base.py                 |   0
 .../object_store}/v1/_proxy.py                |   0
 .../object_store}/v1/account.py               |   0
 .../object_store}/v1/container.py             |   0
 .../object_store}/v1/info.py                  |   0
 .../object_store}/v1/obj.py                   |   0
 .../orchestration}/__init__.py                |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../orchestration_service.cpython-310.pyc     | Bin
 .../__pycache__/version.cpython-310.pyc       | Bin
 .../orchestration}/orchestration_service.py   |   0
 .../orchestration/util}/__init__.py           |   0
 .../util/__pycache__/__init__.cpython-310.pyc | Bin
 .../environment_format.cpython-310.pyc        | Bin
 .../__pycache__/event_utils.cpython-310.pyc   | Bin
 .../template_format.cpython-310.pyc           | Bin
 .../template_utils.cpython-310.pyc            | Bin
 .../util/__pycache__/utils.cpython-310.pyc    | Bin
 .../orchestration}/util/environment_format.py |   0
 .../orchestration}/util/event_utils.py        |   0
 .../orchestration}/util/template_format.py    |   0
 .../orchestration}/util/template_utils.py     |   0
 .../orchestration}/util/utils.py              |   0
 .../orchestration/v1}/__init__.py             |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../v1/__pycache__/resource.cpython-310.pyc   | Bin
 .../software_config.cpython-310.pyc           | Bin
 .../software_deployment.cpython-310.pyc       | Bin
 .../v1/__pycache__/stack.cpython-310.pyc      | Bin
 .../stack_environment.cpython-310.pyc         | Bin
 .../__pycache__/stack_event.cpython-310.pyc   | Bin
 .../__pycache__/stack_files.cpython-310.pyc   | Bin
 .../stack_template.cpython-310.pyc            | Bin
 .../v1/__pycache__/template.cpython-310.pyc   | Bin
 .../orchestration}/v1/_proxy.py               |   0
 .../orchestration}/v1/resource.py             |   0
 .../orchestration}/v1/software_config.py      |   0
 .../orchestration}/v1/software_deployment.py  |   0
 .../orchestration}/v1/stack.py                |   0
 .../orchestration}/v1/stack_environment.py    |   0
 .../orchestration}/v1/stack_event.py          |   0
 .../orchestration}/v1/stack_files.py          |   0
 .../orchestration}/v1/stack_template.py       |   0
 .../orchestration}/v1/template.py             |   0
 .../orchestration}/version.py                 |   0
 .../v2 => openstack/placement}/__init__.py    |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../placement_service.cpython-310.pyc         | Bin
 .../placement}/placement_service.py           |   0
 .../v3 => openstack/placement/v1}/__init__.py |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../resource_class.cpython-310.pyc            | Bin
 .../resource_provider.cpython-310.pyc         | Bin
 ...esource_provider_inventory.cpython-310.pyc | Bin
 .../v1/__pycache__/trait.cpython-310.pyc      | Bin
 .../placement}/v1/_proxy.py                   |   0
 .../placement}/v1/resource_class.py           |   0
 .../placement}/v1/resource_provider.py        |   0
 .../v1/resource_provider_inventory.py         |   0
 .../placement}/v1/trait.py                    |   0
 proxy.py => openstack/proxy.py                |   0
 py.typed => openstack/py.typed                |   0
 resource.py => openstack/resource.py          |   0
 .../service_description.py                    |   0
 .../shared_file_system}/__init__.py           |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 ...shared_file_system_service.cpython-310.pyc | Bin
 .../shared_file_system_service.py             |   0
 .../shared_file_system/v2}/__init__.py        |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../availability_zone.cpython-310.pyc         | Bin
 .../v2/__pycache__/limit.cpython-310.pyc      | Bin
 .../v2/__pycache__/share.cpython-310.pyc      | Bin
 .../share_access_rule.cpython-310.pyc         | Bin
 .../share_export_locations.cpython-310.pyc    | Bin
 .../__pycache__/share_group.cpython-310.pyc   | Bin
 .../share_group_snapshot.cpython-310.pyc      | Bin
 .../share_instance.cpython-310.pyc            | Bin
 .../__pycache__/share_network.cpython-310.pyc | Bin
 .../share_network_subnet.cpython-310.pyc      | Bin
 .../share_snapshot.cpython-310.pyc            | Bin
 .../share_snapshot_instance.cpython-310.pyc   | Bin
 .../__pycache__/storage_pool.cpython-310.pyc  | Bin
 .../__pycache__/user_message.cpython-310.pyc  | Bin
 .../shared_file_system}/v2/_proxy.py          |   0
 .../v2/availability_zone.py                   |   0
 .../shared_file_system}/v2/limit.py           |   0
 .../shared_file_system}/v2/share.py           |   0
 .../v2/share_access_rule.py                   |   0
 .../v2/share_export_locations.py              |   0
 .../shared_file_system}/v2/share_group.py     |   0
 .../v2/share_group_snapshot.py                |   0
 .../shared_file_system}/v2/share_instance.py  |   0
 .../shared_file_system}/v2/share_network.py   |   0
 .../v2/share_network_subnet.py                |   0
 .../shared_file_system}/v2/share_snapshot.py  |   0
 .../v2/share_snapshot_instance.py             |   0
 .../shared_file_system}/v2/storage_pool.py    |   0
 .../shared_file_system}/v2/user_message.py    |   0
 .../compute => openstack/test}/__init__.py    |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../test}/__pycache__/fakes.cpython-310.pyc   | Bin
 {test => openstack/test}/fakes.py             |   0
 {tests => openstack/tests}/README.rst         |   0
 .../v2 => openstack/tests}/__init__.py        |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../tests}/__pycache__/base.cpython-310.pyc   | Bin
 .../tests}/__pycache__/fakes.cpython-310.pyc  | Bin
 .../__pycache__/fixtures.cpython-310.pyc      | Bin
 {tests => openstack/tests}/ansible/README.txt |   0
 .../tests}/ansible/hooks/post_test_hook.sh    |   0
 .../tests}/ansible/roles/auth/tasks/main.yml  |   0
 .../roles/client_config/tasks/main.yml        |   0
 .../ansible/roles/group/defaults/main.yml     |   0
 .../tests}/ansible/roles/group/tasks/main.yml |   0
 .../ansible/roles/image/defaults/main.yml     |   0
 .../tests}/ansible/roles/image/tasks/main.yml |   0
 .../ansible/roles/keypair/defaults/main.yml   |   0
 .../ansible/roles/keypair/tasks/main.yml      |   0
 .../roles/keystone_domain/defaults/main.yml   |   0
 .../roles/keystone_domain/tasks/main.yml      |   0
 .../roles/keystone_role/defaults/main.yml     |   0
 .../roles/keystone_role/tasks/main.yml        |   0
 .../ansible/roles/network/defaults/main.yml   |   0
 .../ansible/roles/network/tasks/main.yml      |   0
 .../ansible/roles/nova_flavor/tasks/main.yml  |   0
 .../ansible/roles/object/tasks/main.yml       |   0
 .../ansible/roles/port/defaults/main.yml      |   0
 .../tests}/ansible/roles/port/tasks/main.yml  |   0
 .../ansible/roles/router/defaults/main.yml    |   0
 .../ansible/roles/router/tasks/main.yml       |   0
 .../roles/security_group/defaults/main.yml    |   0
 .../roles/security_group/tasks/main.yml       |   0
 .../ansible/roles/server/defaults/main.yaml   |   0
 .../ansible/roles/server/tasks/main.yml       |   0
 .../ansible/roles/subnet/defaults/main.yml    |   0
 .../ansible/roles/subnet/tasks/main.yml       |   0
 .../tests}/ansible/roles/user/tasks/main.yml  |   0
 .../ansible/roles/user_group/tasks/main.yml   |   0
 .../ansible/roles/volume/tasks/main.yml       |   0
 {tests => openstack/tests}/ansible/run.yml    |   0
 {tests => openstack/tests}/base.py            |   0
 {tests => openstack/tests}/fakes.py           |   0
 {tests => openstack/tests}/fixtures.py        |   0
 .../tests}/functional/README.rst              |   0
 .../tests/functional}/__init__.py             |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/base.cpython-310.pyc          | Bin
 .../tests/functional/baremetal}/__init__.py   |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/base.cpython-310.pyc          | Bin
 .../test_baremetal_allocation.cpython-310.pyc | Bin
 .../test_baremetal_chassis.cpython-310.pyc    | Bin
 .../test_baremetal_conductor.cpython-310.pyc  | Bin
 ...baremetal_deploy_templates.cpython-310.pyc | Bin
 .../test_baremetal_driver.cpython-310.pyc     | Bin
 .../test_baremetal_node.cpython-310.pyc       | Bin
 .../test_baremetal_port.cpython-310.pyc       | Bin
 .../test_baremetal_port_group.cpython-310.pyc | Bin
 ...baremetal_volume_connector.cpython-310.pyc | Bin
 ...st_baremetal_volume_target.cpython-310.pyc | Bin
 .../tests}/functional/baremetal/base.py       |   0
 .../baremetal/test_baremetal_allocation.py    |   0
 .../baremetal/test_baremetal_chassis.py       |   0
 .../baremetal/test_baremetal_conductor.py     |   0
 .../test_baremetal_deploy_templates.py        |   0
 .../baremetal/test_baremetal_driver.py        |   0
 .../baremetal/test_baremetal_node.py          |   0
 .../baremetal/test_baremetal_port.py          |   0
 .../baremetal/test_baremetal_port_group.py    |   0
 .../test_baremetal_volume_connector.py        |   0
 .../baremetal/test_baremetal_volume_target.py |   0
 {tests => openstack/tests}/functional/base.py |   0
 .../functional/block_storage}/__init__.py     |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../functional/block_storage/v2}/__init__.py  |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/base.cpython-310.pyc       | Bin
 .../__pycache__/test_backup.cpython-310.pyc   | Bin
 .../__pycache__/test_snapshot.cpython-310.pyc | Bin
 .../v2/__pycache__/test_stats.cpython-310.pyc | Bin
 .../v2/__pycache__/test_type.cpython-310.pyc  | Bin
 .../__pycache__/test_volume.cpython-310.pyc   | Bin
 .../functional/block_storage/v2/base.py       |   0
 .../block_storage/v2/test_backup.py           |   0
 .../block_storage/v2/test_snapshot.py         |   0
 .../functional/block_storage/v2/test_stats.py |   0
 .../functional/block_storage/v2/test_type.py  |   0
 .../block_storage/v2/test_volume.py           |   0
 .../functional/block_storage}/v3/__init__.py  |   0
 .../v3/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v3/__pycache__/base.cpython-310.pyc       | Bin
 .../test_attachment.cpython-310.pyc           | Bin
 .../test_availability_zone.cpython-310.pyc    | Bin
 .../__pycache__/test_backup.cpython-310.pyc   | Bin
 ...test_block_storage_summary.cpython-310.pyc | Bin
 .../test_capabilities.cpython-310.pyc         | Bin
 .../test_extension.cpython-310.pyc            | Bin
 .../v3/__pycache__/test_group.cpython-310.pyc | Bin
 .../__pycache__/test_limits.cpython-310.pyc   | Bin
 .../test_resource_filters.cpython-310.pyc     | Bin
 .../__pycache__/test_service.cpython-310.pyc  | Bin
 .../__pycache__/test_snapshot.cpython-310.pyc | Bin
 .../__pycache__/test_transfer.cpython-310.pyc | Bin
 .../v3/__pycache__/test_type.cpython-310.pyc  | Bin
 .../__pycache__/test_volume.cpython-310.pyc   | Bin
 .../functional/block_storage/v3/base.py       |   0
 .../block_storage/v3/test_attachment.py       |   0
 .../v3/test_availability_zone.py              |   0
 .../block_storage/v3/test_backup.py           |   0
 .../v3/test_block_storage_summary.py          |   0
 .../block_storage/v3/test_capabilities.py     |   0
 .../block_storage/v3/test_extension.py        |   0
 .../functional/block_storage/v3/test_group.py |   0
 .../block_storage/v3/test_limits.py           |   0
 .../block_storage/v3/test_resource_filters.py |   0
 .../block_storage/v3/test_service.py          |   0
 .../block_storage/v3/test_snapshot.py         |   0
 .../block_storage/v3/test_transfer.py         |   0
 .../functional/block_storage/v3/test_type.py  |   0
 .../block_storage/v3/test_volume.py           |   0
 .../tests/functional/cloud}/__init__.py       |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../test_aggregate.cpython-310.pyc            | Bin
 .../test_cluster_templates.cpython-310.pyc    | Bin
 .../test_clustering.cpython-310.pyc           | Bin
 .../test_coe_clusters.cpython-310.pyc         | Bin
 .../__pycache__/test_compute.cpython-310.pyc  | Bin
 .../__pycache__/test_devstack.cpython-310.pyc | Bin
 .../__pycache__/test_domain.cpython-310.pyc   | Bin
 .../test_endpoints.cpython-310.pyc            | Bin
 .../__pycache__/test_flavor.cpython-310.pyc   | Bin
 .../test_floating_ip.cpython-310.pyc          | Bin
 .../test_floating_ip_pool.cpython-310.pyc     | Bin
 .../__pycache__/test_groups.cpython-310.pyc   | Bin
 .../__pycache__/test_identity.cpython-310.pyc | Bin
 .../__pycache__/test_image.cpython-310.pyc    | Bin
 .../test_inventory.cpython-310.pyc            | Bin
 .../__pycache__/test_keypairs.cpython-310.pyc | Bin
 .../__pycache__/test_limits.cpython-310.pyc   | Bin
 .../test_magnum_services.cpython-310.pyc      | Bin
 .../__pycache__/test_network.cpython-310.pyc  | Bin
 .../__pycache__/test_object.cpython-310.pyc   | Bin
 .../__pycache__/test_port.cpython-310.pyc     | Bin
 .../__pycache__/test_project.cpython-310.pyc  | Bin
 .../test_project_cleanup.cpython-310.pyc      | Bin
 ...t_qos_bandwidth_limit_rule.cpython-310.pyc | Bin
 ...test_qos_dscp_marking_rule.cpython-310.pyc | Bin
 ...qos_minimum_bandwidth_rule.cpython-310.pyc | Bin
 .../test_qos_policy.cpython-310.pyc           | Bin
 .../__pycache__/test_quotas.cpython-310.pyc   | Bin
 .../test_range_search.cpython-310.pyc         | Bin
 .../test_recordset.cpython-310.pyc            | Bin
 .../__pycache__/test_router.cpython-310.pyc   | Bin
 .../test_security_groups.cpython-310.pyc      | Bin
 .../test_server_group.cpython-310.pyc         | Bin
 .../__pycache__/test_services.cpython-310.pyc | Bin
 .../__pycache__/test_stack.cpython-310.pyc    | Bin
 .../__pycache__/test_users.cpython-310.pyc    | Bin
 .../__pycache__/test_volume.cpython-310.pyc   | Bin
 .../test_volume_backup.cpython-310.pyc        | Bin
 .../test_volume_type.cpython-310.pyc          | Bin
 .../__pycache__/test_zone.cpython-310.pyc     | Bin
 .../tests}/functional/cloud/test_aggregate.py |   0
 .../cloud/test_cluster_templates.py           |   0
 .../functional/cloud/test_clustering.py       |   0
 .../functional/cloud/test_coe_clusters.py     |   0
 .../tests}/functional/cloud/test_compute.py   |   0
 .../tests}/functional/cloud/test_devstack.py  |   0
 .../tests}/functional/cloud/test_domain.py    |   0
 .../tests}/functional/cloud/test_endpoints.py |   0
 .../tests}/functional/cloud/test_flavor.py    |   0
 .../functional/cloud/test_floating_ip.py      |   0
 .../functional/cloud/test_floating_ip_pool.py |   0
 .../tests}/functional/cloud/test_groups.py    |   0
 .../tests}/functional/cloud/test_identity.py  |   0
 .../tests}/functional/cloud/test_image.py     |   0
 .../tests}/functional/cloud/test_inventory.py |   0
 .../tests}/functional/cloud/test_keypairs.py  |   0
 .../tests}/functional/cloud/test_limits.py    |   0
 .../functional/cloud/test_magnum_services.py  |   0
 .../tests}/functional/cloud/test_network.py   |   0
 .../tests}/functional/cloud/test_object.py    |   0
 .../tests}/functional/cloud/test_port.py      |   0
 .../tests}/functional/cloud/test_project.py   |   0
 .../functional/cloud/test_project_cleanup.py  |   0
 .../cloud/test_qos_bandwidth_limit_rule.py    |   0
 .../cloud/test_qos_dscp_marking_rule.py       |   0
 .../cloud/test_qos_minimum_bandwidth_rule.py  |   0
 .../functional/cloud/test_qos_policy.py       |   0
 .../tests}/functional/cloud/test_quotas.py    |   0
 .../functional/cloud/test_range_search.py     |   0
 .../tests}/functional/cloud/test_recordset.py |   0
 .../tests}/functional/cloud/test_router.py    |   0
 .../functional/cloud/test_security_groups.py  |   0
 .../functional/cloud/test_server_group.py     |   0
 .../tests}/functional/cloud/test_services.py  |   0
 .../tests}/functional/cloud/test_stack.py     |   0
 .../tests}/functional/cloud/test_users.py     |   0
 .../tests}/functional/cloud/test_volume.py    |   0
 .../functional/cloud/test_volume_backup.py    |   0
 .../functional/cloud/test_volume_type.py      |   0
 .../tests}/functional/cloud/test_zone.py      |   0
 .../tests/functional/clustering}/__init__.py  |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/test_cluster.cpython-310.pyc  | Bin
 .../functional/clustering/test_cluster.py     |   0
 .../tests/functional/compute}/__init__.py     |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../compute/__pycache__/base.cpython-310.pyc  | Bin
 .../tests}/functional/compute/base.py         |   0
 .../tests/functional/compute/v2}/__init__.py  |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../test_extension.cpython-310.pyc            | Bin
 .../__pycache__/test_flavor.cpython-310.pyc   | Bin
 .../test_hypervisor.cpython-310.pyc           | Bin
 .../v2/__pycache__/test_image.cpython-310.pyc | Bin
 .../__pycache__/test_keypair.cpython-310.pyc  | Bin
 .../__pycache__/test_limits.cpython-310.pyc   | Bin
 .../test_quota_set.cpython-310.pyc            | Bin
 .../__pycache__/test_server.cpython-310.pyc   | Bin
 .../__pycache__/test_service.cpython-310.pyc  | Bin
 .../test_volume_attachment.cpython-310.pyc    | Bin
 .../functional/compute/v2/test_extension.py   |   0
 .../functional/compute/v2/test_flavor.py      |   0
 .../functional/compute/v2/test_hypervisor.py  |   0
 .../functional/compute/v2/test_image.py       |   0
 .../functional/compute/v2/test_keypair.py     |   0
 .../functional/compute/v2/test_limits.py      |   0
 .../functional/compute/v2/test_quota_set.py   |   0
 .../functional/compute/v2/test_server.py      |   0
 .../functional/compute/v2/test_service.py     |   0
 .../compute/v2/test_volume_attachment.py      |   0
 .../tests/functional/dns}/__init__.py         |   0
 .../dns/__pycache__/__init__.cpython-310.pyc  | Bin
 .../tests/functional/dns/v2}/__init__.py      |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/test_zone.cpython-310.pyc  | Bin
 .../test_zone_share.cpython-310.pyc           | Bin
 .../tests}/functional/dns/v2/test_zone.py     |   0
 .../functional/dns/v2/test_zone_share.py      |   0
 .../tests/functional/examples}/__init__.py    |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/test_compute.cpython-310.pyc  | Bin
 .../__pycache__/test_identity.cpython-310.pyc | Bin
 .../__pycache__/test_image.cpython-310.pyc    | Bin
 .../__pycache__/test_network.cpython-310.pyc  | Bin
 .../functional/examples/test_compute.py       |   0
 .../functional/examples/test_identity.py      |   0
 .../tests}/functional/examples/test_image.py  |   0
 .../functional/examples/test_network.py       |   0
 .../tests/functional/identity}/__init__.py    |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../tests/functional/identity/v3}/__init__.py |   0
 .../v3/__pycache__/__init__.cpython-310.pyc   | Bin
 ...est_application_credential.cpython-310.pyc | Bin
 .../test_domain_config.cpython-310.pyc        | Bin
 .../v3/test_application_credential.py         |   0
 .../identity/v3/test_domain_config.py         |   0
 .../tests/functional/image}/__init__.py       |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../tests/functional/image/v2}/__init__.py    |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../image/v2/__pycache__/base.cpython-310.pyc | Bin
 .../v2/__pycache__/test_image.cpython-310.pyc | Bin
 .../test_metadef_namespace.cpython-310.pyc    | Bin
 .../test_metadef_object.cpython-310.pyc       | Bin
 .../test_metadef_property.cpython-310.pyc     | Bin
 ...test_metadef_resource_type.cpython-310.pyc | Bin
 .../test_metadef_schema.cpython-310.pyc       | Bin
 .../__pycache__/test_schema.cpython-310.pyc   | Bin
 .../v2/__pycache__/test_task.cpython-310.pyc  | Bin
 .../tests}/functional/image/v2/base.py        |   0
 .../tests}/functional/image/v2/test_image.py  |   0
 .../image/v2/test_metadef_namespace.py        |   0
 .../image/v2/test_metadef_object.py           |   0
 .../image/v2/test_metadef_property.py         |   0
 .../image/v2/test_metadef_resource_type.py    |   0
 .../image/v2/test_metadef_schema.py           |   0
 .../tests}/functional/image/v2/test_schema.py |   0
 .../tests}/functional/image/v2/test_task.py   |   0
 .../tests/functional/instance_ha}/__init__.py |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/test_host.cpython-310.pyc     | Bin
 .../__pycache__/test_segment.cpython-310.pyc  | Bin
 .../functional/instance_ha/test_host.py       |   0
 .../functional/instance_ha/test_segment.py    |   0
 .../functional/load_balancer}/__init__.py     |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../functional/load_balancer/v2}/__init__.py  |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../test_load_balancer.cpython-310.pyc        | Bin
 .../load_balancer/v2/test_load_balancer.py    |   0
 .../tests/functional/network}/__init__.py     |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../tests/functional/network/v2}/__init__.py  |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../test_address_group.cpython-310.pyc        | Bin
 .../test_address_scope.cpython-310.pyc        | Bin
 .../v2/__pycache__/test_agent.cpython-310.pyc | Bin
 ...t_agent_add_remove_network.cpython-310.pyc | Bin
 ...st_agent_add_remove_router.cpython-310.pyc | Bin
 ...st_auto_allocated_topology.cpython-310.pyc | Bin
 .../test_availability_zone.cpython-310.pyc    | Bin
 .../v2/__pycache__/test_bgp.cpython-310.pyc   | Bin
 .../__pycache__/test_bgpvpn.cpython-310.pyc   | Bin
 ...efault_security_group_rule.cpython-310.pyc | Bin
 .../test_dvr_router.cpython-310.pyc           | Bin
 .../test_extension.cpython-310.pyc            | Bin
 .../test_firewall_group.cpython-310.pyc       | Bin
 .../test_firewall_policy.cpython-310.pyc      | Bin
 .../test_firewall_rule.cpython-310.pyc        | Bin
 ..._rule_insert_remove_policy.cpython-310.pyc | Bin
 .../__pycache__/test_flavor.cpython-310.pyc   | Bin
 .../test_floating_ip.cpython-310.pyc          | Bin
 .../test_l3_conntrack_helper.cpython-310.pyc  | Bin
 .../__pycache__/test_local_ip.cpython-310.pyc | Bin
 .../test_local_ip_association.cpython-310.pyc | Bin
 .../test_ndp_proxy.cpython-310.pyc            | Bin
 .../__pycache__/test_network.cpython-310.pyc  | Bin
 ...st_network_ip_availability.cpython-310.pyc | Bin
 ...test_network_segment_range.cpython-310.pyc | Bin
 .../v2/__pycache__/test_port.cpython-310.pyc  | Bin
 .../test_port_forwarding.cpython-310.pyc      | Bin
 ...t_qos_bandwidth_limit_rule.cpython-310.pyc | Bin
 ...test_qos_dscp_marking_rule.cpython-310.pyc | Bin
 ...qos_minimum_bandwidth_rule.cpython-310.pyc | Bin
 ...s_minimum_packet_rate_rule.cpython-310.pyc | Bin
 .../test_qos_policy.cpython-310.pyc           | Bin
 .../test_qos_rule_type.cpython-310.pyc        | Bin
 .../v2/__pycache__/test_quota.cpython-310.pyc | Bin
 .../test_rbac_policy.cpython-310.pyc          | Bin
 .../__pycache__/test_router.cpython-310.pyc   | Bin
 ...outer_add_remove_interface.cpython-310.pyc | Bin
 .../test_security_group.cpython-310.pyc       | Bin
 .../test_security_group_rule.cpython-310.pyc  | Bin
 .../__pycache__/test_segment.cpython-310.pyc  | Bin
 .../test_service_profile.cpython-310.pyc      | Bin
 .../test_service_provider.cpython-310.pyc     | Bin
 .../v2/__pycache__/test_sfc.cpython-310.pyc   | Bin
 .../__pycache__/test_subnet.cpython-310.pyc   | Bin
 ...st_subnet_from_subnet_pool.cpython-310.pyc | Bin
 .../test_subnet_pool.cpython-310.pyc          | Bin
 .../v2/__pycache__/test_taas.cpython-310.pyc  | Bin
 .../v2/__pycache__/test_trunk.cpython-310.pyc | Bin
 .../__pycache__/test_vpnaas.cpython-310.pyc   | Bin
 .../network/v2/test_address_group.py          |   0
 .../network/v2/test_address_scope.py          |   0
 .../functional/network/v2/test_agent.py       |   0
 .../v2/test_agent_add_remove_network.py       |   0
 .../v2/test_agent_add_remove_router.py        |   0
 .../v2/test_auto_allocated_topology.py        |   0
 .../network/v2/test_availability_zone.py      |   0
 .../tests}/functional/network/v2/test_bgp.py  |   0
 .../functional/network/v2/test_bgpvpn.py      |   0
 .../v2/test_default_security_group_rule.py    |   0
 .../functional/network/v2/test_dvr_router.py  |   0
 .../functional/network/v2/test_extension.py   |   0
 .../network/v2/test_firewall_group.py         |   0
 .../network/v2/test_firewall_policy.py        |   0
 .../network/v2/test_firewall_rule.py          |   0
 ...test_firewall_rule_insert_remove_policy.py |   0
 .../functional/network/v2/test_flavor.py      |   0
 .../functional/network/v2/test_floating_ip.py |   0
 .../network/v2/test_l3_conntrack_helper.py    |   0
 .../functional/network/v2/test_local_ip.py    |   0
 .../network/v2/test_local_ip_association.py   |   0
 .../functional/network/v2/test_ndp_proxy.py   |   0
 .../functional/network/v2/test_network.py     |   0
 .../v2/test_network_ip_availability.py        |   0
 .../network/v2/test_network_segment_range.py  |   0
 .../tests}/functional/network/v2/test_port.py |   0
 .../network/v2/test_port_forwarding.py        |   0
 .../v2/test_qos_bandwidth_limit_rule.py       |   0
 .../network/v2/test_qos_dscp_marking_rule.py  |   0
 .../v2/test_qos_minimum_bandwidth_rule.py     |   0
 .../v2/test_qos_minimum_packet_rate_rule.py   |   0
 .../functional/network/v2/test_qos_policy.py  |   0
 .../network/v2/test_qos_rule_type.py          |   0
 .../functional/network/v2/test_quota.py       |   0
 .../functional/network/v2/test_rbac_policy.py |   0
 .../functional/network/v2/test_router.py      |   0
 .../v2/test_router_add_remove_interface.py    |   0
 .../network/v2/test_security_group.py         |   0
 .../network/v2/test_security_group_rule.py    |   0
 .../functional/network/v2/test_segment.py     |   0
 .../network/v2/test_service_profile.py        |   0
 .../network/v2/test_service_provider.py       |   0
 .../tests}/functional/network/v2/test_sfc.py  |   0
 .../functional/network/v2/test_subnet.py      |   0
 .../v2/test_subnet_from_subnet_pool.py        |   0
 .../functional/network/v2/test_subnet_pool.py |   0
 .../tests}/functional/network/v2/test_taas.py |   0
 .../functional/network/v2/test_trunk.py       |   0
 .../functional/network/v2/test_vpnaas.py      |   0
 .../functional/object_store}/__init__.py      |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../functional/object_store/v1}/__init__.py   |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../__pycache__/test_account.cpython-310.pyc  | Bin
 .../test_container.cpython-310.pyc            | Bin
 .../v1/__pycache__/test_obj.cpython-310.pyc   | Bin
 .../object_store/v1/test_account.py           |   0
 .../object_store/v1/test_container.py         |   0
 .../functional/object_store/v1/test_obj.py    |   0
 .../functional/orchestration}/__init__.py     |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../functional/orchestration/v1}/__init__.py  |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/test_stack.cpython-310.pyc | Bin
 .../orchestration/v1/hello_world.yaml         |   0
 .../functional/orchestration/v1/test_stack.py |   0
 .../tests/functional/placement}/__init__.py   |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../functional/placement/v1}/__init__.py      |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../test_resource_provider.cpython-310.pyc    | Bin
 ...esource_provider_inventory.cpython-310.pyc | Bin
 .../v1/__pycache__/test_trait.cpython-310.pyc | Bin
 .../placement/v1/test_resource_provider.py    |   0
 .../v1/test_resource_provider_inventory.py    |   0
 .../functional/placement/v1/test_trait.py     |   0
 .../shared_file_system}/__init__.py           |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/base.cpython-310.pyc          | Bin
 .../test_availability_zone.cpython-310.pyc    | Bin
 .../test_export_locations.cpython-310.pyc     | Bin
 .../__pycache__/test_limit.cpython-310.pyc    | Bin
 .../__pycache__/test_share.cpython-310.pyc    | Bin
 .../test_share_access_rule.cpython-310.pyc    | Bin
 .../test_share_group.cpython-310.pyc          | Bin
 .../test_share_group_snapshot.cpython-310.pyc | Bin
 .../test_share_instance.cpython-310.pyc       | Bin
 .../test_share_metadata.cpython-310.pyc       | Bin
 .../test_share_network.cpython-310.pyc        | Bin
 .../test_share_network_subnet.cpython-310.pyc | Bin
 .../test_share_snapshot.cpython-310.pyc       | Bin
 ...st_share_snapshot_instance.cpython-310.pyc | Bin
 .../test_storage_pool.cpython-310.pyc         | Bin
 .../test_user_message.cpython-310.pyc         | Bin
 .../functional/shared_file_system/base.py     |   0
 .../test_availability_zone.py                 |   0
 .../test_export_locations.py                  |   0
 .../shared_file_system/test_limit.py          |   0
 .../shared_file_system/test_share.py          |   0
 .../test_share_access_rule.py                 |   0
 .../shared_file_system/test_share_group.py    |   0
 .../test_share_group_snapshot.py              |   0
 .../shared_file_system/test_share_instance.py |   0
 .../shared_file_system/test_share_metadata.py |   0
 .../shared_file_system/test_share_network.py  |   0
 .../test_share_network_subnet.py              |   0
 .../shared_file_system/test_share_snapshot.py |   0
 .../test_share_snapshot_instance.py           |   0
 .../shared_file_system/test_storage_pool.py   |   0
 .../shared_file_system/test_user_message.py   |   0
 {tests => openstack/tests}/unit/README.rst    |   0
 .../v3 => openstack/tests/unit}/__init__.py   |   0
 .../unit/__pycache__/__init__.cpython-310.pyc | Bin
 .../unit/__pycache__/base.cpython-310.pyc     | Bin
 .../unit/__pycache__/fakes.cpython-310.pyc    | Bin
 .../test_connection.cpython-310.pyc           | Bin
 .../test_exceptions.cpython-310.pyc           | Bin
 .../__pycache__/test_fakes.cpython-310.pyc    | Bin
 .../__pycache__/test_format.cpython-310.pyc   | Bin
 .../__pycache__/test_hacking.cpython-310.pyc  | Bin
 .../test_microversions.cpython-310.pyc        | Bin
 .../test_missing_version.cpython-310.pyc      | Bin
 .../test_placement_rest.cpython-310.pyc       | Bin
 .../__pycache__/test_proxy.cpython-310.pyc    | Bin
 .../test_proxy_base.cpython-310.pyc           | Bin
 .../__pycache__/test_resource.cpython-310.pyc | Bin
 .../__pycache__/test_stats.cpython-310.pyc    | Bin
 .../__pycache__/test_utils.cpython-310.pyc    | Bin
 .../tests/unit/accelerator}/__init__.py       |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/test_version.cpython-310.pyc  | Bin
 .../tests}/unit/accelerator/test_version.py   |   0
 .../tests/unit/accelerator/v2}/__init__.py    |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../test_accelerator_request.cpython-310.pyc  | Bin
 .../test_deployable.cpython-310.pyc           | Bin
 .../__pycache__/test_device.cpython-310.pyc   | Bin
 .../test_device_profile.cpython-310.pyc       | Bin
 .../v2/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../v2/test_accelerator_request.py            |   0
 .../unit/accelerator/v2/test_deployable.py    |   0
 .../tests}/unit/accelerator/v2/test_device.py |   0
 .../accelerator/v2/test_device_profile.py     |   0
 .../tests}/unit/accelerator/v2/test_proxy.py  |   0
 .../tests/unit/baremetal}/__init__.py         |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../test_configdrive.cpython-310.pyc          | Bin
 .../__pycache__/test_version.cpython-310.pyc  | Bin
 .../tests}/unit/baremetal/test_configdrive.py |   0
 .../tests}/unit/baremetal/test_version.py     |   0
 .../tests/unit/baremetal/v1}/__init__.py      |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../test_allocation.cpython-310.pyc           | Bin
 .../__pycache__/test_chassis.cpython-310.pyc  | Bin
 .../test_conductor.cpython-310.pyc            | Bin
 .../test_deploy_templates.cpython-310.pyc     | Bin
 .../__pycache__/test_driver.cpython-310.pyc   | Bin
 .../v1/__pycache__/test_node.cpython-310.pyc  | Bin
 .../v1/__pycache__/test_port.cpython-310.pyc  | Bin
 .../test_port_group.cpython-310.pyc           | Bin
 .../v1/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../test_volume_connector.cpython-310.pyc     | Bin
 .../test_volume_target.cpython-310.pyc        | Bin
 .../unit/baremetal/v1/test_allocation.py      |   0
 .../tests}/unit/baremetal/v1/test_chassis.py  |   0
 .../unit/baremetal/v1/test_conductor.py       |   0
 .../baremetal/v1/test_deploy_templates.py     |   0
 .../tests}/unit/baremetal/v1/test_driver.py   |   0
 .../tests}/unit/baremetal/v1/test_node.py     |   0
 .../tests}/unit/baremetal/v1/test_port.py     |   0
 .../unit/baremetal/v1/test_port_group.py      |   0
 .../tests}/unit/baremetal/v1/test_proxy.py    |   0
 .../baremetal/v1/test_volume_connector.py     |   0
 .../unit/baremetal/v1/test_volume_target.py   |   0
 .../unit/baremetal_introspection}/__init__.py |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../baremetal_introspection/v1}/__init__.py   |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../test_introspection_rule.cpython-310.pyc   | Bin
 .../v1/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../v1/test_introspection_rule.py             |   0
 .../baremetal_introspection/v1/test_proxy.py  |   0
 {tests => openstack/tests}/unit/base.py       |   0
 .../tests/unit/block_storage}/__init__.py     |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../tests/unit/block_storage/v2}/__init__.py  |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../__pycache__/test_backup.cpython-310.pyc   | Bin
 .../test_capabilities.cpython-310.pyc         | Bin
 .../test_extension.cpython-310.pyc            | Bin
 .../__pycache__/test_limits.cpython-310.pyc   | Bin
 .../v2/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../__pycache__/test_snapshot.cpython-310.pyc | Bin
 .../v2/__pycache__/test_stats.cpython-310.pyc | Bin
 .../v2/__pycache__/test_type.cpython-310.pyc  | Bin
 .../__pycache__/test_volume.cpython-310.pyc   | Bin
 .../unit/block_storage/v2/test_backup.py      |   0
 .../block_storage/v2/test_capabilities.py     |   0
 .../unit/block_storage/v2/test_extension.py   |   0
 .../unit/block_storage/v2/test_limits.py      |   0
 .../unit/block_storage/v2/test_proxy.py       |   0
 .../unit/block_storage/v2/test_snapshot.py    |   0
 .../unit/block_storage/v2/test_stats.py       |   0
 .../tests}/unit/block_storage/v2/test_type.py |   0
 .../unit/block_storage/v2/test_volume.py      |   0
 .../tests/unit/block_storage/v3}/__init__.py  |   0
 .../v3/__pycache__/__init__.cpython-310.pyc   | Bin
 .../test_attachment.cpython-310.pyc           | Bin
 .../test_availability_zone.cpython-310.pyc    | Bin
 .../__pycache__/test_backup.cpython-310.pyc   | Bin
 ...test_block_storage_summary.cpython-310.pyc | Bin
 .../test_capabilities.cpython-310.pyc         | Bin
 .../test_extension.cpython-310.pyc            | Bin
 .../v3/__pycache__/test_group.cpython-310.pyc | Bin
 .../test_group_snapshot.cpython-310.pyc       | Bin
 .../test_group_type.cpython-310.pyc           | Bin
 .../__pycache__/test_limits.cpython-310.pyc   | Bin
 .../v3/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../test_resource_filter.cpython-310.pyc      | Bin
 .../__pycache__/test_service.cpython-310.pyc  | Bin
 .../__pycache__/test_snapshot.cpython-310.pyc | Bin
 .../__pycache__/test_transfer.cpython-310.pyc | Bin
 .../v3/__pycache__/test_type.cpython-310.pyc  | Bin
 .../test_type_encryption.cpython-310.pyc      | Bin
 .../__pycache__/test_volume.cpython-310.pyc   | Bin
 .../unit/block_storage/v3/test_attachment.py  |   0
 .../v3/test_availability_zone.py              |   0
 .../unit/block_storage/v3/test_backup.py      |   0
 .../v3/test_block_storage_summary.py          |   0
 .../block_storage/v3/test_capabilities.py     |   0
 .../unit/block_storage/v3/test_extension.py   |   0
 .../unit/block_storage/v3/test_group.py       |   0
 .../block_storage/v3/test_group_snapshot.py   |   0
 .../unit/block_storage/v3/test_group_type.py  |   0
 .../unit/block_storage/v3/test_limits.py      |   0
 .../unit/block_storage/v3/test_proxy.py       |   0
 .../block_storage/v3/test_resource_filter.py  |   0
 .../unit/block_storage/v3/test_service.py     |   0
 .../unit/block_storage/v3/test_snapshot.py    |   0
 .../unit/block_storage/v3/test_transfer.py    |   0
 .../tests}/unit/block_storage/v3/test_type.py |   0
 .../block_storage/v3/test_type_encryption.py  |   0
 .../unit/block_storage/v3/test_volume.py      |   0
 .../tests/unit/cloud}/__init__.py             |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/test__utils.cpython-310.pyc   | Bin
 .../test_accelerator.cpython-310.pyc          | Bin
 .../test_aggregate.cpython-310.pyc            | Bin
 .../test_availability_zones.cpython-310.pyc   | Bin
 .../test_baremetal_node.cpython-310.pyc       | Bin
 .../test_baremetal_ports.cpython-310.pyc      | Bin
 .../__pycache__/test_cloud.cpython-310.pyc    | Bin
 .../test_cluster_templates.cpython-310.pyc    | Bin
 .../test_clustering.cpython-310.pyc           | Bin
 .../test_coe_clusters.cpython-310.pyc         | Bin
 ...t_coe_clusters_certificate.cpython-310.pyc | Bin
 .../__pycache__/test_compute.cpython-310.pyc  | Bin
 .../test_create_server.cpython-310.pyc        | Bin
 ...est_create_volume_snapshot.cpython-310.pyc | Bin
 .../test_delete_server.cpython-310.pyc        | Bin
 ...est_delete_volume_snapshot.cpython-310.pyc | Bin
 .../test_domain_params.cpython-310.pyc        | Bin
 .../__pycache__/test_domains.cpython-310.pyc  | Bin
 .../test_endpoints.cpython-310.pyc            | Bin
 .../__pycache__/test_flavors.cpython-310.pyc  | Bin
 .../test_floating_ip_common.cpython-310.pyc   | Bin
 .../test_floating_ip_neutron.cpython-310.pyc  | Bin
 .../test_floating_ip_nova.cpython-310.pyc     | Bin
 .../test_floating_ip_pool.cpython-310.pyc     | Bin
 .../__pycache__/test_fwaas.cpython-310.pyc    | Bin
 .../__pycache__/test_groups.cpython-310.pyc   | Bin
 .../test_identity_roles.cpython-310.pyc       | Bin
 .../test_identity_users.cpython-310.pyc       | Bin
 .../__pycache__/test_image.cpython-310.pyc    | Bin
 .../test_image_snapshot.cpython-310.pyc       | Bin
 .../test_inventory.cpython-310.pyc            | Bin
 .../__pycache__/test_keypair.cpython-310.pyc  | Bin
 .../__pycache__/test_limits.cpython-310.pyc   | Bin
 .../test_magnum_services.cpython-310.pyc      | Bin
 .../__pycache__/test_meta.cpython-310.pyc     | Bin
 .../__pycache__/test_network.cpython-310.pyc  | Bin
 .../__pycache__/test_object.cpython-310.pyc   | Bin
 .../test_openstackcloud.cpython-310.pyc       | Bin
 .../__pycache__/test_operator.cpython-310.pyc | Bin
 .../test_operator_noauth.cpython-310.pyc      | Bin
 .../__pycache__/test_port.cpython-310.pyc     | Bin
 .../__pycache__/test_project.cpython-310.pyc  | Bin
 ...t_qos_bandwidth_limit_rule.cpython-310.pyc | Bin
 ...test_qos_dscp_marking_rule.cpython-310.pyc | Bin
 ...qos_minimum_bandwidth_rule.cpython-310.pyc | Bin
 .../test_qos_policy.cpython-310.pyc           | Bin
 .../test_qos_rule_type.cpython-310.pyc        | Bin
 .../__pycache__/test_quotas.cpython-310.pyc   | Bin
 .../test_rebuild_server.cpython-310.pyc       | Bin
 .../test_recordset.cpython-310.pyc            | Bin
 .../test_role_assignment.cpython-310.pyc      | Bin
 .../__pycache__/test_router.cpython-310.pyc   | Bin
 .../test_security_groups.cpython-310.pyc      | Bin
 .../test_server_console.cpython-310.pyc       | Bin
 ...est_server_delete_metadata.cpython-310.pyc | Bin
 .../test_server_group.cpython-310.pyc         | Bin
 .../test_server_set_metadata.cpython-310.pyc  | Bin
 .../__pycache__/test_services.cpython-310.pyc | Bin
 .../test_shared_file_system.cpython-310.pyc   | Bin
 .../__pycache__/test_stack.cpython-310.pyc    | Bin
 .../__pycache__/test_subnet.cpython-310.pyc   | Bin
 .../test_update_server.cpython-310.pyc        | Bin
 .../__pycache__/test_usage.cpython-310.pyc    | Bin
 .../__pycache__/test_users.cpython-310.pyc    | Bin
 .../__pycache__/test_volume.cpython-310.pyc   | Bin
 .../test_volume_access.cpython-310.pyc        | Bin
 .../test_volume_backups.cpython-310.pyc       | Bin
 .../__pycache__/test_zone.cpython-310.pyc     | Bin
 .../tests}/unit/cloud/test__utils.py          |   0
 .../tests}/unit/cloud/test_accelerator.py     |   0
 .../tests}/unit/cloud/test_aggregate.py       |   0
 .../unit/cloud/test_availability_zones.py     |   0
 .../tests}/unit/cloud/test_baremetal_node.py  |   0
 .../tests}/unit/cloud/test_baremetal_ports.py |   0
 .../tests}/unit/cloud/test_cloud.py           |   0
 .../unit/cloud/test_cluster_templates.py      |   0
 .../tests}/unit/cloud/test_clustering.py      |   0
 .../tests}/unit/cloud/test_coe_clusters.py    |   0
 .../cloud/test_coe_clusters_certificate.py    |   0
 .../tests}/unit/cloud/test_compute.py         |   0
 .../tests}/unit/cloud/test_create_server.py   |   0
 .../unit/cloud/test_create_volume_snapshot.py |   0
 .../tests}/unit/cloud/test_delete_server.py   |   0
 .../unit/cloud/test_delete_volume_snapshot.py |   0
 .../tests}/unit/cloud/test_domain_params.py   |   0
 .../tests}/unit/cloud/test_domains.py         |   0
 .../tests}/unit/cloud/test_endpoints.py       |   0
 .../tests}/unit/cloud/test_flavors.py         |   0
 .../unit/cloud/test_floating_ip_common.py     |   0
 .../unit/cloud/test_floating_ip_neutron.py    |   0
 .../unit/cloud/test_floating_ip_nova.py       |   0
 .../unit/cloud/test_floating_ip_pool.py       |   0
 .../tests}/unit/cloud/test_fwaas.py           |   0
 .../tests}/unit/cloud/test_groups.py          |   0
 .../tests}/unit/cloud/test_identity_roles.py  |   0
 .../tests}/unit/cloud/test_identity_users.py  |   0
 .../tests}/unit/cloud/test_image.py           |   0
 .../tests}/unit/cloud/test_image_snapshot.py  |   0
 .../tests}/unit/cloud/test_inventory.py       |   0
 .../tests}/unit/cloud/test_keypair.py         |   0
 .../tests}/unit/cloud/test_limits.py          |   0
 .../tests}/unit/cloud/test_magnum_services.py |   0
 .../tests}/unit/cloud/test_meta.py            |   0
 .../tests}/unit/cloud/test_network.py         |   0
 .../tests}/unit/cloud/test_object.py          |   0
 .../tests}/unit/cloud/test_openstackcloud.py  |   0
 .../tests}/unit/cloud/test_operator.py        |   0
 .../tests}/unit/cloud/test_operator_noauth.py |   0
 .../tests}/unit/cloud/test_port.py            |   0
 .../tests}/unit/cloud/test_project.py         |   0
 .../cloud/test_qos_bandwidth_limit_rule.py    |   0
 .../unit/cloud/test_qos_dscp_marking_rule.py  |   0
 .../cloud/test_qos_minimum_bandwidth_rule.py  |   0
 .../tests}/unit/cloud/test_qos_policy.py      |   0
 .../tests}/unit/cloud/test_qos_rule_type.py   |   0
 .../tests}/unit/cloud/test_quotas.py          |   0
 .../tests}/unit/cloud/test_rebuild_server.py  |   0
 .../tests}/unit/cloud/test_recordset.py       |   0
 .../tests}/unit/cloud/test_role_assignment.py |   0
 .../tests}/unit/cloud/test_router.py          |   0
 .../tests}/unit/cloud/test_security_groups.py |   0
 .../tests}/unit/cloud/test_server_console.py  |   0
 .../unit/cloud/test_server_delete_metadata.py |   0
 .../tests}/unit/cloud/test_server_group.py    |   0
 .../unit/cloud/test_server_set_metadata.py    |   0
 .../tests}/unit/cloud/test_services.py        |   0
 .../unit/cloud/test_shared_file_system.py     |   0
 .../tests}/unit/cloud/test_stack.py           |   0
 .../tests}/unit/cloud/test_subnet.py          |   0
 .../tests}/unit/cloud/test_update_server.py   |   0
 .../tests}/unit/cloud/test_usage.py           |   0
 .../tests}/unit/cloud/test_users.py           |   0
 .../tests}/unit/cloud/test_volume.py          |   0
 .../tests}/unit/cloud/test_volume_access.py   |   0
 .../tests}/unit/cloud/test_volume_backups.py  |   0
 .../tests}/unit/cloud/test_zone.py            |   0
 .../tests/unit/clustering}/__init__.py        |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/test_version.cpython-310.pyc  | Bin
 .../tests}/unit/clustering/test_version.py    |   0
 .../tests/unit/clustering/v1}/__init__.py     |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../__pycache__/test_action.cpython-310.pyc   | Bin
 .../test_build_info.cpython-310.pyc           | Bin
 .../__pycache__/test_cluster.cpython-310.pyc  | Bin
 .../test_cluster_attr.cpython-310.pyc         | Bin
 .../test_cluster_policy.cpython-310.pyc       | Bin
 .../v1/__pycache__/test_event.cpython-310.pyc | Bin
 .../v1/__pycache__/test_node.cpython-310.pyc  | Bin
 .../__pycache__/test_policy.cpython-310.pyc   | Bin
 .../test_policy_type.cpython-310.pyc          | Bin
 .../__pycache__/test_profile.cpython-310.pyc  | Bin
 .../test_profile_type.cpython-310.pyc         | Bin
 .../v1/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../__pycache__/test_receiver.cpython-310.pyc | Bin
 .../__pycache__/test_service.cpython-310.pyc  | Bin
 .../tests}/unit/clustering/v1/test_action.py  |   0
 .../unit/clustering/v1/test_build_info.py     |   0
 .../tests}/unit/clustering/v1/test_cluster.py |   0
 .../unit/clustering/v1/test_cluster_attr.py   |   0
 .../unit/clustering/v1/test_cluster_policy.py |   0
 .../tests}/unit/clustering/v1/test_event.py   |   0
 .../tests}/unit/clustering/v1/test_node.py    |   0
 .../tests}/unit/clustering/v1/test_policy.py  |   0
 .../unit/clustering/v1/test_policy_type.py    |   0
 .../tests}/unit/clustering/v1/test_profile.py |   0
 .../unit/clustering/v1/test_profile_type.py   |   0
 .../tests}/unit/clustering/v1/test_proxy.py   |   0
 .../unit/clustering/v1/test_receiver.py       |   0
 .../tests}/unit/clustering/v1/test_service.py |   0
 .../tests/unit/common}/__init__.py            |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/test_metadata.cpython-310.pyc | Bin
 .../test_quota_set.cpython-310.pyc            | Bin
 .../__pycache__/test_tag.cpython-310.pyc      | Bin
 .../tests}/unit/common/test_metadata.py       |   0
 .../tests}/unit/common/test_quota_set.py      |   0
 .../tests}/unit/common/test_tag.py            |   0
 .../tests/unit/compute}/__init__.py           |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/test_version.cpython-310.pyc  | Bin
 .../tests}/unit/compute/test_version.py       |   0
 .../tests/unit/compute/v2}/__init__.py        |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../test_aggregate.cpython-310.pyc            | Bin
 .../test_availability_zone.cpython-310.pyc    | Bin
 .../test_extension.cpython-310.pyc            | Bin
 .../__pycache__/test_flavor.cpython-310.pyc   | Bin
 .../test_hypervisor.cpython-310.pyc           | Bin
 .../v2/__pycache__/test_image.cpython-310.pyc | Bin
 .../__pycache__/test_keypair.cpython-310.pyc  | Bin
 .../__pycache__/test_limits.cpython-310.pyc   | Bin
 .../test_migration.cpython-310.pyc            | Bin
 .../v2/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../__pycache__/test_server.cpython-310.pyc   | Bin
 .../test_server_actions.cpython-310.pyc       | Bin
 .../test_server_diagnostics.cpython-310.pyc   | Bin
 .../test_server_group.cpython-310.pyc         | Bin
 .../test_server_interface.cpython-310.pyc     | Bin
 .../test_server_ip.cpython-310.pyc            | Bin
 .../test_server_migration.cpython-310.pyc     | Bin
 ...test_server_remote_console.cpython-310.pyc | Bin
 .../__pycache__/test_service.cpython-310.pyc  | Bin
 .../v2/__pycache__/test_usage.cpython-310.pyc | Bin
 .../test_volume_attachment.cpython-310.pyc    | Bin
 .../tests}/unit/compute/v2/test_aggregate.py  |   0
 .../unit/compute/v2/test_availability_zone.py |   0
 .../tests}/unit/compute/v2/test_extension.py  |   0
 .../tests}/unit/compute/v2/test_flavor.py     |   0
 .../tests}/unit/compute/v2/test_hypervisor.py |   0
 .../tests}/unit/compute/v2/test_image.py      |   0
 .../tests}/unit/compute/v2/test_keypair.py    |   0
 .../tests}/unit/compute/v2/test_limits.py     |   0
 .../tests}/unit/compute/v2/test_migration.py  |   0
 .../tests}/unit/compute/v2/test_proxy.py      |   0
 .../tests}/unit/compute/v2/test_server.py     |   0
 .../unit/compute/v2/test_server_actions.py    |   0
 .../compute/v2/test_server_diagnostics.py     |   0
 .../unit/compute/v2/test_server_group.py      |   0
 .../unit/compute/v2/test_server_interface.py  |   0
 .../tests}/unit/compute/v2/test_server_ip.py  |   0
 .../unit/compute/v2/test_server_migration.py  |   0
 .../compute/v2/test_server_remote_console.py  |   0
 .../tests}/unit/compute/v2/test_service.py    |   0
 .../tests}/unit/compute/v2/test_usage.py      |   0
 .../unit/compute/v2/test_volume_attachment.py |   0
 .../tests/unit/config}/__init__.py            |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../config/__pycache__/base.cpython-310.pyc   | Bin
 .../test_cloud_config.cpython-310.pyc         | Bin
 .../__pycache__/test_config.cpython-310.pyc   | Bin
 .../__pycache__/test_environ.cpython-310.pyc  | Bin
 .../test_from_conf.cpython-310.pyc            | Bin
 .../test_from_session.cpython-310.pyc         | Bin
 .../__pycache__/test_init.cpython-310.pyc     | Bin
 .../__pycache__/test_json.cpython-310.pyc     | Bin
 .../__pycache__/test_loader.cpython-310.pyc   | Bin
 .../tests}/unit/config/base.py                |   0
 .../tests}/unit/config/test_cloud_config.py   |   0
 .../tests}/unit/config/test_config.py         |   0
 .../tests}/unit/config/test_environ.py        |   0
 .../tests}/unit/config/test_from_conf.py      |   0
 .../tests}/unit/config/test_from_session.py   |   0
 .../tests}/unit/config/test_init.py           |   0
 .../tests}/unit/config/test_json.py           |   0
 .../tests}/unit/config/test_loader.py         |   0
 .../__init__.py                               |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../v1}/__init__.py                           |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../__pycache__/test_cluster.cpython-310.pyc  | Bin
 .../test_cluster_certificate.cpython-310.pyc  | Bin
 .../test_cluster_template.cpython-310.pyc     | Bin
 .../v1/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../__pycache__/test_service.cpython-310.pyc  | Bin
 .../v1/test_cluster.py                        |   0
 .../v1/test_cluster_certificate.py            |   0
 .../v1/test_cluster_template.py               |   0
 .../v1/test_proxy.py                          |   0
 .../v1/test_service.py                        |   0
 .../tests/unit/database}/__init__.py          |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../tests/unit/database/v1}/__init__.py       |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../__pycache__/test_database.cpython-310.pyc | Bin
 .../__pycache__/test_flavor.cpython-310.pyc   | Bin
 .../__pycache__/test_instance.cpython-310.pyc | Bin
 .../v1/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../v1/__pycache__/test_user.cpython-310.pyc  | Bin
 .../tests}/unit/database/v1/test_database.py  |   0
 .../tests}/unit/database/v1/test_flavor.py    |   0
 .../tests}/unit/database/v1/test_instance.py  |   0
 .../tests}/unit/database/v1/test_proxy.py     |   0
 .../tests}/unit/database/v1/test_user.py      |   0
 .../tests/unit/dns}/__init__.py               |   0
 .../dns/__pycache__/__init__.cpython-310.pyc  | Bin
 .../__pycache__/test_version.cpython-310.pyc  | Bin
 .../tests}/unit/dns/test_version.py           |   0
 .../tests/unit/dns}/v2/__init__.py            |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../test_floating_ip.cpython-310.pyc          | Bin
 .../v2/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../test_recordset.cpython-310.pyc            | Bin
 .../v2/__pycache__/test_zone.cpython-310.pyc  | Bin
 .../test_zone_export.cpython-310.pyc          | Bin
 .../test_zone_import.cpython-310.pyc          | Bin
 .../test_zone_share.cpython-310.pyc           | Bin
 .../test_zone_transfer.cpython-310.pyc        | Bin
 .../tests}/unit/dns/v2/test_floating_ip.py    |   0
 .../tests}/unit/dns/v2/test_proxy.py          |   0
 .../tests}/unit/dns/v2/test_recordset.py      |   0
 .../tests}/unit/dns/v2/test_zone.py           |   0
 .../tests}/unit/dns/v2/test_zone_export.py    |   0
 .../tests}/unit/dns/v2/test_zone_import.py    |   0
 .../tests}/unit/dns/v2/test_zone_share.py     |   0
 .../tests}/unit/dns/v2/test_zone_transfer.py  |   0
 .../tests/unit/fake}/__init__.py              |   0
 .../fake/__pycache__/__init__.cpython-310.pyc | Bin
 .../__pycache__/fake_service.cpython-310.pyc  | Bin
 .../tests}/unit/fake/fake_service.py          |   0
 .../tests/unit/fake}/v1/__init__.py           |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../fake/v1/__pycache__/fake.cpython-310.pyc  | Bin
 .../tests}/unit/fake/v1/_proxy.py             |   0
 .../tests}/unit/fake/v1/fake.py               |   0
 .../tests/unit/fake/v2}/__init__.py           |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../fake/v2/__pycache__/fake.cpython-310.pyc  | Bin
 .../tests}/unit/fake/v2/_proxy.py             |   0
 .../tests}/unit/fake/v2/fake.py               |   0
 {tests => openstack/tests}/unit/fakes.py      |   0
 .../tests}/unit/fixtures/accelerator.json     |   0
 .../unit/fixtures/bad-glance-version.json     |   0
 .../tests}/unit/fixtures/bad-placement.json   |   0
 .../tests}/unit/fixtures/baremetal.json       |   0
 .../unit/fixtures/block-storage-version.json  |   0
 .../tests}/unit/fixtures/clouds/clouds.yaml   |   0
 .../unit/fixtures/clouds/clouds_cache.yaml    |   0
 .../tests}/unit/fixtures/clustering.json      |   0
 .../tests}/unit/fixtures/compute-version.json |   0
 .../tests}/unit/fixtures/discovery.json       |   0
 .../tests}/unit/fixtures/dns.json             |   0
 .../unit/fixtures/image-version-broken.json   |   0
 .../unit/fixtures/image-version-suburl.json   |   0
 .../unit/fixtures/image-version-v1.json       |   0
 .../unit/fixtures/image-version-v2.json       |   0
 .../tests}/unit/fixtures/image-version.json   |   0
 .../unit/fixtures/old-compute-version.json    |   0
 .../tests}/unit/fixtures/placement.json       |   0
 .../unit/fixtures/shared-file-system.json     |   0
 .../tests/unit/identity}/__init__.py          |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/test_version.cpython-310.pyc  | Bin
 .../tests}/unit/identity/test_version.py      |   0
 .../tests/unit/identity/v2}/__init__.py       |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../test_extension.cpython-310.pyc            | Bin
 .../v2/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../v2/__pycache__/test_role.cpython-310.pyc  | Bin
 .../__pycache__/test_tenant.cpython-310.pyc   | Bin
 .../v2/__pycache__/test_user.cpython-310.pyc  | Bin
 .../tests}/unit/identity/v2/test_extension.py |   0
 .../tests}/unit/identity/v2/test_proxy.py     |   0
 .../tests}/unit/identity/v2/test_role.py      |   0
 .../tests}/unit/identity/v2/test_tenant.py    |   0
 .../tests}/unit/identity/v2/test_user.py      |   0
 .../tests/unit/identity/v3}/__init__.py       |   0
 .../v3/__pycache__/__init__.cpython-310.pyc   | Bin
 ...est_application_credential.cpython-310.pyc | Bin
 .../test_credential.cpython-310.pyc           | Bin
 .../__pycache__/test_domain.cpython-310.pyc   | Bin
 .../test_domain_config.cpython-310.pyc        | Bin
 .../__pycache__/test_endpoint.cpython-310.pyc | Bin
 .../test_federation_protocol.cpython-310.pyc  | Bin
 .../v3/__pycache__/test_group.cpython-310.pyc | Bin
 .../test_identity_provider.cpython-310.pyc    | Bin
 .../v3/__pycache__/test_limit.cpython-310.pyc | Bin
 .../__pycache__/test_mapping.cpython-310.pyc  | Bin
 .../__pycache__/test_policy.cpython-310.pyc   | Bin
 .../__pycache__/test_project.cpython-310.pyc  | Bin
 .../v3/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../__pycache__/test_region.cpython-310.pyc   | Bin
 .../test_registered_limit.cpython-310.pyc     | Bin
 .../v3/__pycache__/test_role.cpython-310.pyc  | Bin
 .../test_role_assignment.cpython-310.pyc      | Bin
 ...le_domain_group_assignment.cpython-310.pyc | Bin
 ...ole_domain_user_assignment.cpython-310.pyc | Bin
 ...e_project_group_assignment.cpython-310.pyc | Bin
 ...le_project_user_assignment.cpython-310.pyc | Bin
 ...le_system_group_assignment.cpython-310.pyc | Bin
 ...ole_system_user_assignment.cpython-310.pyc | Bin
 .../__pycache__/test_service.cpython-310.pyc  | Bin
 .../v3/__pycache__/test_trust.cpython-310.pyc | Bin
 .../v3/__pycache__/test_user.cpython-310.pyc  | Bin
 .../v3/test_application_credential.py         |   0
 .../unit/identity/v3/test_credential.py       |   0
 .../tests}/unit/identity/v3/test_domain.py    |   0
 .../unit/identity/v3/test_domain_config.py    |   0
 .../tests}/unit/identity/v3/test_endpoint.py  |   0
 .../identity/v3/test_federation_protocol.py   |   0
 .../tests}/unit/identity/v3/test_group.py     |   0
 .../identity/v3/test_identity_provider.py     |   0
 .../tests}/unit/identity/v3/test_limit.py     |   0
 .../tests}/unit/identity/v3/test_mapping.py   |   0
 .../tests}/unit/identity/v3/test_policy.py    |   0
 .../tests}/unit/identity/v3/test_project.py   |   0
 .../tests}/unit/identity/v3/test_proxy.py     |   0
 .../tests}/unit/identity/v3/test_region.py    |   0
 .../unit/identity/v3/test_registered_limit.py |   0
 .../tests}/unit/identity/v3/test_role.py      |   0
 .../unit/identity/v3/test_role_assignment.py  |   0
 .../v3/test_role_domain_group_assignment.py   |   0
 .../v3/test_role_domain_user_assignment.py    |   0
 .../v3/test_role_project_group_assignment.py  |   0
 .../v3/test_role_project_user_assignment.py   |   0
 .../v3/test_role_system_group_assignment.py   |   0
 .../v3/test_role_system_user_assignment.py    |   0
 .../tests}/unit/identity/v3/test_service.py   |   0
 .../tests}/unit/identity/v3/test_trust.py     |   0
 .../tests}/unit/identity/v3/test_user.py      |   0
 .../tests/unit/image}/__init__.py             |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../tests/unit/image/v1}/__init__.py          |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/test_image.cpython-310.pyc | Bin
 .../v1/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../tests}/unit/image/v1/test_image.py        |   0
 .../tests}/unit/image/v1/test_proxy.py        |   0
 .../tests/unit/image/v2}/__init__.py          |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/test_cache.cpython-310.pyc | Bin
 .../v2/__pycache__/test_image.cpython-310.pyc | Bin
 .../__pycache__/test_member.cpython-310.pyc   | Bin
 .../test_metadef_namespace.cpython-310.pyc    | Bin
 .../test_metadef_object.cpython-310.pyc       | Bin
 .../test_metadef_property.cpython-310.pyc     | Bin
 ...test_metadef_resource_type.cpython-310.pyc | Bin
 ..._resource_type_association.cpython-310.pyc | Bin
 .../test_metadef_schema.cpython-310.pyc       | Bin
 .../v2/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../__pycache__/test_schema.cpython-310.pyc   | Bin
 .../test_service_info.cpython-310.pyc         | Bin
 .../v2/__pycache__/test_task.cpython-310.pyc  | Bin
 .../tests}/unit/image/v2/test_cache.py        |   0
 .../tests}/unit/image/v2/test_image.py        |   0
 .../tests}/unit/image/v2/test_member.py       |   0
 .../unit/image/v2/test_metadef_namespace.py   |   0
 .../unit/image/v2/test_metadef_object.py      |   0
 .../unit/image/v2/test_metadef_property.py    |   0
 .../image/v2/test_metadef_resource_type.py    |   0
 .../test_metadef_resource_type_association.py |   0
 .../unit/image/v2/test_metadef_schema.py      |   0
 .../tests}/unit/image/v2/test_proxy.py        |   0
 .../tests}/unit/image/v2/test_schema.py       |   0
 .../tests}/unit/image/v2/test_service_info.py |   0
 .../tests}/unit/image/v2/test_task.py         |   0
 .../tests/unit/instance_ha}/__init__.py       |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../tests/unit/instance_ha/v1}/__init__.py    |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/test_host.cpython-310.pyc  | Bin
 .../test_notification.cpython-310.pyc         | Bin
 .../v1/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../__pycache__/test_segment.cpython-310.pyc  | Bin
 .../v1/__pycache__/test_vmove.cpython-310.pyc | Bin
 .../tests}/unit/instance_ha/v1/test_host.py   |   0
 .../unit/instance_ha/v1/test_notification.py  |   0
 .../tests}/unit/instance_ha/v1/test_proxy.py  |   0
 .../unit/instance_ha/v1/test_segment.py       |   0
 .../tests}/unit/instance_ha/v1/test_vmove.py  |   0
 .../tests/unit/key_manager}/__init__.py       |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../tests/unit/key_manager/v1}/__init__.py    |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../test_container.cpython-310.pyc            | Bin
 .../v1/__pycache__/test_order.cpython-310.pyc | Bin
 .../v1/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../__pycache__/test_secret.cpython-310.pyc   | Bin
 .../unit/key_manager/v1/test_container.py     |   0
 .../tests}/unit/key_manager/v1/test_order.py  |   0
 .../tests}/unit/key_manager/v1/test_proxy.py  |   0
 .../tests}/unit/key_manager/v1/test_secret.py |   0
 .../tests/unit/load_balancer}/__init__.py     |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/test_amphora.cpython-310.pyc  | Bin
 .../test_availability_zone.cpython-310.pyc    | Bin
 ..._availability_zone_profile.cpython-310.pyc | Bin
 .../__pycache__/test_flavor.cpython-310.pyc   | Bin
 .../test_flavor_profile.cpython-310.pyc       | Bin
 .../test_health_monitor.cpython-310.pyc       | Bin
 .../__pycache__/test_l7policy.cpython-310.pyc | Bin
 .../__pycache__/test_l7rule.cpython-310.pyc   | Bin
 .../__pycache__/test_listener.cpython-310.pyc | Bin
 .../test_load_balancer.cpython-310.pyc        | Bin
 .../__pycache__/test_member.cpython-310.pyc   | Bin
 .../__pycache__/test_pool.cpython-310.pyc     | Bin
 .../__pycache__/test_provider.cpython-310.pyc | Bin
 .../__pycache__/test_quota.cpython-310.pyc    | Bin
 .../__pycache__/test_version.cpython-310.pyc  | Bin
 .../tests}/unit/load_balancer/test_amphora.py |   0
 .../load_balancer/test_availability_zone.py   |   0
 .../test_availability_zone_profile.py         |   0
 .../tests}/unit/load_balancer/test_flavor.py  |   0
 .../unit/load_balancer/test_flavor_profile.py |   0
 .../unit/load_balancer/test_health_monitor.py |   0
 .../unit/load_balancer/test_l7policy.py       |   0
 .../tests}/unit/load_balancer/test_l7rule.py  |   0
 .../unit/load_balancer/test_listener.py       |   0
 .../unit/load_balancer/test_load_balancer.py  |   0
 .../tests}/unit/load_balancer/test_member.py  |   0
 .../tests}/unit/load_balancer/test_pool.py    |   0
 .../unit/load_balancer/test_provider.py       |   0
 .../tests}/unit/load_balancer/test_quota.py   |   0
 .../tests}/unit/load_balancer/test_version.py |   0
 .../tests/unit/load_balancer/v2}/__init__.py  |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../unit/load_balancer/v2/test_proxy.py       |   0
 .../tests/unit/message}/__init__.py           |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/test_version.cpython-310.pyc  | Bin
 .../tests}/unit/message/test_version.py       |   0
 .../tests/unit/message/v2}/__init__.py        |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/test_claim.cpython-310.pyc | Bin
 .../__pycache__/test_message.cpython-310.pyc  | Bin
 .../v2/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../v2/__pycache__/test_queue.cpython-310.pyc | Bin
 .../test_subscription.cpython-310.pyc         | Bin
 .../tests}/unit/message/v2/test_claim.py      |   0
 .../tests}/unit/message/v2/test_message.py    |   0
 .../tests}/unit/message/v2/test_proxy.py      |   0
 .../tests}/unit/message/v2/test_queue.py      |   0
 .../unit/message/v2/test_subscription.py      |   0
 .../tests/unit/network}/__init__.py           |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/test_version.cpython-310.pyc  | Bin
 .../tests}/unit/network/test_version.py       |   0
 .../tests/unit/network/v2}/__init__.py        |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../test_address_group.cpython-310.pyc        | Bin
 .../test_address_scope.cpython-310.pyc        | Bin
 .../v2/__pycache__/test_agent.cpython-310.pyc | Bin
 ...st_auto_allocated_topology.cpython-310.pyc | Bin
 .../test_availability_zone.cpython-310.pyc    | Bin
 .../__pycache__/test_bgp_peer.cpython-310.pyc | Bin
 .../test_bgp_speaker.cpython-310.pyc          | Bin
 .../__pycache__/test_bgpvpn.cpython-310.pyc   | Bin
 ...efault_security_group_rule.cpython-310.pyc | Bin
 .../test_extension.cpython-310.pyc            | Bin
 .../test_firewall_group.cpython-310.pyc       | Bin
 .../test_firewall_policy.cpython-310.pyc      | Bin
 .../test_firewall_rule.cpython-310.pyc        | Bin
 .../__pycache__/test_flavor.cpython-310.pyc   | Bin
 .../test_floating_ip.cpython-310.pyc          | Bin
 .../test_health_monitor.cpython-310.pyc       | Bin
 .../test_l3_conntrack_helper.cpython-310.pyc  | Bin
 .../__pycache__/test_listener.cpython-310.pyc | Bin
 .../test_load_balancer.cpython-310.pyc        | Bin
 .../__pycache__/test_local_ip.cpython-310.pyc | Bin
 .../test_local_ip_association.cpython-310.pyc | Bin
 .../test_metering_label.cpython-310.pyc       | Bin
 .../test_metering_label_rule.cpython-310.pyc  | Bin
 .../test_ndp_proxy.cpython-310.pyc            | Bin
 .../__pycache__/test_network.cpython-310.pyc  | Bin
 ...st_network_ip_availability.cpython-310.pyc | Bin
 ...test_network_segment_range.cpython-310.pyc | Bin
 .../v2/__pycache__/test_pool.cpython-310.pyc  | Bin
 .../test_pool_member.cpython-310.pyc          | Bin
 .../v2/__pycache__/test_port.cpython-310.pyc  | Bin
 .../test_port_forwarding.cpython-310.pyc      | Bin
 .../v2/__pycache__/test_proxy.cpython-310.pyc | Bin
 ...t_qos_bandwidth_limit_rule.cpython-310.pyc | Bin
 ...test_qos_dscp_marking_rule.cpython-310.pyc | Bin
 ...qos_minimum_bandwidth_rule.cpython-310.pyc | Bin
 ...s_minimum_packet_rate_rule.cpython-310.pyc | Bin
 .../test_qos_policy.cpython-310.pyc           | Bin
 .../test_qos_rule_type.cpython-310.pyc        | Bin
 .../v2/__pycache__/test_quota.cpython-310.pyc | Bin
 .../test_rbac_policy.cpython-310.pyc          | Bin
 .../__pycache__/test_router.cpython-310.pyc   | Bin
 .../test_security_group.cpython-310.pyc       | Bin
 .../test_security_group_rule.cpython-310.pyc  | Bin
 .../__pycache__/test_segment.cpython-310.pyc  | Bin
 .../test_service_profile.cpython-310.pyc      | Bin
 .../test_service_provider.cpython-310.pyc     | Bin
 .../test_sfc_flow_classifier.cpython-310.pyc  | Bin
 .../test_sfc_port_chain.cpython-310.pyc       | Bin
 .../test_sfc_port_pair.cpython-310.pyc        | Bin
 .../test_sfc_port_pair_group.cpython-310.pyc  | Bin
 .../test_sfc_service_graph.cpython-310.pyc    | Bin
 .../__pycache__/test_subnet.cpython-310.pyc   | Bin
 .../test_subnet_pool.cpython-310.pyc          | Bin
 .../__pycache__/test_tap_flow.cpython-310.pyc | Bin
 .../test_tap_service.cpython-310.pyc          | Bin
 .../v2/__pycache__/test_trunk.cpython-310.pyc | Bin
 .../test_vpn_endpoint_group.cpython-310.pyc   | Bin
 .../test_vpn_ikepolicy.cpython-310.pyc        | Bin
 ..._vpn_ipsec_site_connection.cpython-310.pyc | Bin
 .../test_vpn_ipsecpolicy.cpython-310.pyc      | Bin
 .../test_vpn_service.cpython-310.pyc          | Bin
 .../unit/network/v2/test_address_group.py     |   0
 .../unit/network/v2/test_address_scope.py     |   0
 .../tests}/unit/network/v2/test_agent.py      |   0
 .../v2/test_auto_allocated_topology.py        |   0
 .../unit/network/v2/test_availability_zone.py |   0
 .../tests}/unit/network/v2/test_bgp_peer.py   |   0
 .../unit/network/v2/test_bgp_speaker.py       |   0
 .../tests}/unit/network/v2/test_bgpvpn.py     |   0
 .../v2/test_default_security_group_rule.py    |   0
 .../tests}/unit/network/v2/test_extension.py  |   0
 .../unit/network/v2/test_firewall_group.py    |   0
 .../unit/network/v2/test_firewall_policy.py   |   0
 .../unit/network/v2/test_firewall_rule.py     |   0
 .../tests}/unit/network/v2/test_flavor.py     |   0
 .../unit/network/v2/test_floating_ip.py       |   0
 .../unit/network/v2/test_health_monitor.py    |   0
 .../network/v2/test_l3_conntrack_helper.py    |   0
 .../tests}/unit/network/v2/test_listener.py   |   0
 .../unit/network/v2/test_load_balancer.py     |   0
 .../tests}/unit/network/v2/test_local_ip.py   |   0
 .../network/v2/test_local_ip_association.py   |   0
 .../unit/network/v2/test_metering_label.py    |   0
 .../network/v2/test_metering_label_rule.py    |   0
 .../tests}/unit/network/v2/test_ndp_proxy.py  |   0
 .../tests}/unit/network/v2/test_network.py    |   0
 .../v2/test_network_ip_availability.py        |   0
 .../network/v2/test_network_segment_range.py  |   0
 .../tests}/unit/network/v2/test_pool.py       |   0
 .../unit/network/v2/test_pool_member.py       |   0
 .../tests}/unit/network/v2/test_port.py       |   0
 .../unit/network/v2/test_port_forwarding.py   |   0
 .../tests}/unit/network/v2/test_proxy.py      |   0
 .../v2/test_qos_bandwidth_limit_rule.py       |   0
 .../network/v2/test_qos_dscp_marking_rule.py  |   0
 .../v2/test_qos_minimum_bandwidth_rule.py     |   0
 .../v2/test_qos_minimum_packet_rate_rule.py   |   0
 .../tests}/unit/network/v2/test_qos_policy.py |   0
 .../unit/network/v2/test_qos_rule_type.py     |   0
 .../tests}/unit/network/v2/test_quota.py      |   0
 .../unit/network/v2/test_rbac_policy.py       |   0
 .../tests}/unit/network/v2/test_router.py     |   0
 .../unit/network/v2/test_security_group.py    |   0
 .../network/v2/test_security_group_rule.py    |   0
 .../tests}/unit/network/v2/test_segment.py    |   0
 .../unit/network/v2/test_service_profile.py   |   0
 .../unit/network/v2/test_service_provider.py  |   0
 .../network/v2/test_sfc_flow_classifier.py    |   0
 .../unit/network/v2/test_sfc_port_chain.py    |   0
 .../unit/network/v2/test_sfc_port_pair.py     |   0
 .../network/v2/test_sfc_port_pair_group.py    |   0
 .../unit/network/v2/test_sfc_service_graph.py |   0
 .../tests}/unit/network/v2/test_subnet.py     |   0
 .../unit/network/v2/test_subnet_pool.py       |   0
 .../tests}/unit/network/v2/test_tap_flow.py   |   0
 .../unit/network/v2/test_tap_service.py       |   0
 .../tests}/unit/network/v2/test_trunk.py      |   0
 .../network/v2/test_vpn_endpoint_group.py     |   0
 .../unit/network/v2/test_vpn_ikepolicy.py     |   0
 .../v2/test_vpn_ipsec_site_connection.py      |   0
 .../unit/network/v2/test_vpn_ipsecpolicy.py   |   0
 .../unit/network/v2/test_vpn_service.py       |   0
 .../tests/unit/object_store}/__init__.py      |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../tests/unit/object_store/v1}/__init__.py   |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../__pycache__/test_account.cpython-310.pyc  | Bin
 .../test_container.cpython-310.pyc            | Bin
 .../v1/__pycache__/test_info.cpython-310.pyc  | Bin
 .../v1/__pycache__/test_obj.cpython-310.pyc   | Bin
 .../v1/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../unit/object_store/v1/test_account.py      |   0
 .../unit/object_store/v1/test_container.py    |   0
 .../tests}/unit/object_store/v1/test_info.py  |   0
 .../tests}/unit/object_store/v1/test_obj.py   |   0
 .../tests}/unit/object_store/v1/test_proxy.py |   0
 .../tests/unit/orchestration}/__init__.py     |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/test_version.cpython-310.pyc  | Bin
 .../tests}/unit/orchestration/test_version.py |   0
 .../tests/unit/orchestration/v1/__init__.py   |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../__pycache__/test_resource.cpython-310.pyc | Bin
 .../test_software_config.cpython-310.pyc      | Bin
 .../test_software_deployment.cpython-310.pyc  | Bin
 .../v1/__pycache__/test_stack.cpython-310.pyc | Bin
 .../test_stack_environment.cpython-310.pyc    | Bin
 .../test_stack_event.cpython-310.pyc          | Bin
 .../test_stack_files.cpython-310.pyc          | Bin
 .../test_stack_template.cpython-310.pyc       | Bin
 .../__pycache__/test_template.cpython-310.pyc | Bin
 .../unit/orchestration/v1/hello_world.yaml    |   0
 .../unit/orchestration/v1/helloworld.txt      |   0
 .../unit/orchestration/v1/test_proxy.py       |   0
 .../unit/orchestration/v1/test_resource.py    |   0
 .../orchestration/v1/test_software_config.py  |   0
 .../v1/test_software_deployment.py            |   0
 .../unit/orchestration/v1/test_stack.py       |   0
 .../v1/test_stack_environment.py              |   0
 .../unit/orchestration/v1/test_stack_event.py |   0
 .../unit/orchestration/v1/test_stack_files.py |   0
 .../orchestration/v1/test_stack_template.py   |   0
 .../unit/orchestration/v1/test_template.py    |   0
 openstack/tests/unit/placement/__init__.py    |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 openstack/tests/unit/placement/v1/__init__.py |   0
 .../v1/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v1/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../test_resource_class.cpython-310.pyc       | Bin
 .../test_resource_provider.cpython-310.pyc    | Bin
 ...esource_provider_inventory.cpython-310.pyc | Bin
 .../v1/__pycache__/test_trait.cpython-310.pyc | Bin
 .../tests}/unit/placement/v1/test_proxy.py    |   0
 .../unit/placement/v1/test_resource_class.py  |   0
 .../placement/v1/test_resource_provider.py    |   0
 .../v1/test_resource_provider_inventory.py    |   0
 .../tests}/unit/placement/v1/test_trait.py    |   0
 .../tests/unit/shared_file_system/__init__.py |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../unit/shared_file_system/v2/__init__.py    |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../test_availability_zone.cpython-310.pyc    | Bin
 .../v2/__pycache__/test_limit.cpython-310.pyc | Bin
 .../v2/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../v2/__pycache__/test_share.cpython-310.pyc | Bin
 .../test_share_access_rule.cpython-310.pyc    | Bin
 ...est_share_export_locations.cpython-310.pyc | Bin
 .../test_share_group.cpython-310.pyc          | Bin
 .../test_share_group_snapshot.cpython-310.pyc | Bin
 .../test_share_instance.cpython-310.pyc       | Bin
 .../test_share_network.cpython-310.pyc        | Bin
 .../test_share_network_subnet.cpython-310.pyc | Bin
 .../test_share_snapshot.cpython-310.pyc       | Bin
 ...st_share_snapshot_instance.cpython-310.pyc | Bin
 .../test_storage_pool.cpython-310.pyc         | Bin
 .../test_user_message.cpython-310.pyc         | Bin
 .../v2/test_availability_zone.py              |   0
 .../unit/shared_file_system/v2/test_limit.py  |   0
 .../unit/shared_file_system/v2/test_proxy.py  |   0
 .../unit/shared_file_system/v2/test_share.py  |   0
 .../v2/test_share_access_rule.py              |   0
 .../v2/test_share_export_locations.py         |   0
 .../shared_file_system/v2/test_share_group.py |   0
 .../v2/test_share_group_snapshot.py           |   0
 .../v2/test_share_instance.py                 |   0
 .../v2/test_share_network.py                  |   0
 .../v2/test_share_network_subnet.py           |   0
 .../v2/test_share_snapshot.py                 |   0
 .../v2/test_share_snapshot_instance.py        |   0
 .../v2/test_storage_pool.py                   |   0
 .../v2/test_user_message.py                   |   0
 .../tests}/unit/test_connection.py            |   0
 .../tests}/unit/test_exceptions.py            |   0
 {tests => openstack/tests}/unit/test_fakes.py |   0
 .../tests}/unit/test_format.py                |   0
 .../tests}/unit/test_hacking.py               |   0
 .../tests}/unit/test_microversions.py         |   0
 .../tests}/unit/test_missing_version.py       |   0
 .../tests}/unit/test_placement_rest.py        |   0
 {tests => openstack/tests}/unit/test_proxy.py |   0
 .../tests}/unit/test_proxy_base.py            |   0
 .../tests}/unit/test_resource.py              |   0
 {tests => openstack/tests}/unit/test_stats.py |   0
 {tests => openstack/tests}/unit/test_utils.py |   0
 openstack/tests/unit/workflow/__init__.py     |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../test_cron_trigger.cpython-310.pyc         | Bin
 .../test_execution.cpython-310.pyc            | Bin
 .../__pycache__/test_version.cpython-310.pyc  | Bin
 .../__pycache__/test_workflow.cpython-310.pyc | Bin
 .../tests}/unit/workflow/test_cron_trigger.py |   0
 .../tests}/unit/workflow/test_execution.py    |   0
 .../tests}/unit/workflow/test_version.py      |   0
 .../tests}/unit/workflow/test_workflow.py     |   0
 openstack/tests/unit/workflow/v2/__init__.py  |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/test_proxy.cpython-310.pyc | Bin
 .../tests}/unit/workflow/v2/test_proxy.py     |   0
 utils.py => openstack/utils.py                |   0
 version.py => openstack/version.py            |   0
 warnings.py => openstack/warnings.py          |   0
 openstack/workflow/__init__.py                |   0
 .../__pycache__/__init__.cpython-310.pyc      | Bin
 .../__pycache__/version.cpython-310.pyc       | Bin
 .../workflow_service.cpython-310.pyc          | Bin
 openstack/workflow/v2/__init__.py             |   0
 .../v2/__pycache__/__init__.cpython-310.pyc   | Bin
 .../v2/__pycache__/_proxy.cpython-310.pyc     | Bin
 .../__pycache__/cron_trigger.cpython-310.pyc  | Bin
 .../v2/__pycache__/execution.cpython-310.pyc  | Bin
 .../v2/__pycache__/workflow.cpython-310.pyc   | Bin
 {workflow => openstack/workflow}/v2/_proxy.py |   0
 .../workflow}/v2/cron_trigger.py              |   0
 .../workflow}/v2/execution.py                 |   0
 .../workflow}/v2/workflow.py                  |   0
 {workflow => openstack/workflow}/version.py   |   0
 .../workflow}/workflow_service.py             |   0
 playbooks/acceptance/post.yaml                |  42 +
 playbooks/acceptance/pre.yaml                 |  69 ++
 playbooks/acceptance/run-with-devstack.yaml   |  19 +
 playbooks/devstack/legacy-git.yaml            |  11 +
 playbooks/devstack/post.yaml                  |   9 +
 post_test_hook.sh                             |  35 +
 .../add-aggregates-fc563e237755112e.yaml      |   5 +
 ...lication-credentials-abab9106dea10c11.yaml |   5 +
 ...d-az-to-loadbalancer-da9bf1baaedc89a4.yaml |   5 +
 ...rage-group-snapshots-954cc869227317c3.yaml |   4 +
 ...oup-type-group-specs-d07047167224ec83.yaml |   5 +
 ...block-storage-groups-bf5f1af714c9e505.yaml |   4 +
 ...rage-service-support-ce03092ce2d7e7b9.yaml |   4 +
 ...rage-summary-support-dd00d424c4e6a3b1.yaml |   5 +
 ...ulk-create-resources-12192ec9d76c7716.yaml |   5 +
 ...t-support-to-octavia-b6b2b0053ca6b184.yaml |   6 +
 ...d-compute-flavor-ops-12149e58299c413e.yaml |   5 +
 .../add-current-user-id-49b6463e6bcc3b31.yaml |   4 +
 .../add-cyborg-support-b9afca69f709c048.yaml  |   3 +
 .../notes/add-dns-606cc018e01d40fa.yaml       |   5 +
 ...ain-support-for-port-3fa4568330dda07e.yaml |   5 +
 ...d-dns-zone-share-api-374e71cac504917f.yaml |   4 +
 .../add-fakes-generator-72c53d34c995fcb2.yaml |   5 +
 ...kup-find-snapshot-v2-756a05ccd150db82.yaml |   6 +
 ...rtforwarding-methods-cffc14a6283cedfb.yaml |   4 +
 ...domain-configuration-2e8bcaa20736b379.yaml |   5 +
 ...p-users-proxy-method-e37f8983b2406819.yaml |   4 +
 ...add-image-attributes-05b820a85cd09806.yaml |   3 +
 ...-image-cache-support-3f8c13550a84d749.yaml |   4 +
 ...-image-cache-support-78477e1686c52e56.yaml |   4 +
 ...ef-namespace-support-b93557afdcf4272c.yaml |   4 +
 ...age-metadef-property-fb87e5a7090e73ac.yaml |   4 +
 ...image-metadef-schema-b463825481bdf954.yaml |   3 +
 .../add-image-schema-9c07c2789490718a.yaml    |   3 +
 ...d-image-service-info-90d6063b5ba0735d.yaml |   3 +
 .../add-image-stage-1dbc3844a042fd26.yaml     |   4 +
 ...add-jmespath-support-f47b7a503dbbfda1.yaml |   4 +
 ...limit-to-shared-file-2b443c2a00c75e6e.yaml |   5 +
 ...d-list_flavor_access-e038253e953e6586.yaml |   4 +
 ...-balancer-flavor-api-d2598e30347a19fc.yaml |   4 +
 ...r-flavor-profile-api-e5a15157563eb75f.yaml |   4 +
 ...tener-alpn-protocols-ded816c78bf2080c.yaml |   3 +
 ...-pool-alpn-protocols-77f0c7015f176369.yaml |   3 +
 ...alancer-provider-api-08bcfb72ddf5b247.yaml |   4 +
 ...gnum-cluster-support-843fe2709b8f4789.yaml |   4 +
 ...anage-volume-support-a4fd90e3ff2fa0d0.yaml |   4 +
 ...add-masakara-support-3f7df4436ac869cf.yaml |   5 +
 ...i-enabled-to-segment-0e83da869d2ab03f.yaml |   4 +
 .../add-masakari-vmoves-873ad67830c92254.yaml |   4 +
 .../add-metadef-object-5eec168baf039e80.yaml  |   4 +
 .../add-migrations-946adf16674d4b2a.yaml      |   5 +
 ...otification-resource-f7871acb6ffd46dc.yaml |   7 +
 .../add-node-boot-mode-5f49882fdd86f35b.yaml  |   5 +
 ...d-node-boot-mode-set-5718a8d6511b4826.yaml |   5 +
 .../add-node-inventory-52f54e16777814e7.yaml  |   5 +
 ...node-vendor_passthru-29b384cadf795b48.yaml |   4 +
 ...-octavia-amphora-api-7f3586f6a4f31de4.yaml |   4 +
 ...-octavia-lb-failover-9a34c9577d78ad34.yaml |   4 +
 ...ia-lb-listener-stats-1538cc6e4f734353.yaml |   4 +
 ...listener-hsts-fields-50c621b71e56dc13.yaml |   5 +
 ...octavia-tags-support-1c1cf94184e6ebb7.yaml |  10 +
 ...ement-resource-class-e1c644d978b886bc.yaml |   4 +
 ...-provider-aggregates-1310c0be6a4097d3.yaml |   4 +
 ...e-provider-inventory-8714cafefae74810.yaml |   4 +
 ...dd-placement-support-a2011eb1e900804d.yaml |   7 +
 .../add-placement-trait-29957d2c03edbfb9.yaml |   4 +
 ...ardware-offload-type-1232c5ae3f62d7df.yaml |   7 +
 ...numa-affinity-policy-b42a85dbe26560d2.yaml |   6 +
 ...plink_status-to-port-0152d476c65979e3.yaml |  12 +
 .../add-server-console-078ed2696e5b04d9.yaml  |   6 +
 ...dd-server-migrations-6e31183196f14deb.yaml |   6 +
 .../notes/add-service-0bcc16eb026eade3.yaml   |   5 +
 .../add-sg-rules-bulk-f36a3e2326d74867.yaml   |   5 +
 ...rules-to-shared-file-362bee34f7331186.yaml |   5 +
 ...ubnet-to-shared-file-b5de3ce6ca723209.yaml |   5 +
 ...twork-to-shared-file-c5c9a6b8ccf1d958.yaml |   5 +
 ...tance-to-shared-file-4d935f12d67bf59d.yaml |   5 +
 ...pshot-to-shared-file-82ecedbdbed2e3c5.yaml |   5 +
 ...group-to-shared-file-8cee20d8aa2afbb7.yaml |   5 +
 ...syste-share_instance-fffaea2d3a77ba24.yaml |   6 +
 ...system-locks-support-4859ca93f93a1056.yaml |   8 +
 ...anage-unmanage-share-830e313f96e5fd2b.yaml |   5 +
 ...share-group-snapshot-c5099e6c8accf077.yaml |   5 +
 ...ystem-share-metadata-e0415bb71d8a0a48.yaml |   6 +
 ...-system-share-resize-ddd650c2e32fed34.yaml |   4 +
 ...d-file-system-shares-2e1d44a1bb882d6d.yaml |   5 +
 ...d-file-system-shares-e9f356a318045607.yaml |   5 +
 ...-shared-file-systems-83a3767429fd5e8c.yaml |   8 +
 ...tems-export-location-a27c1741880c384b.yaml |   5 +
 .../add-shelve_offload-427f6550fc55e622.yaml  |   4 +
 ...show-all-images-flag-352748b6c3d99f3f.yaml |   9 +
 .../add-stack-events-b8674d7bb657e789.yaml    |   5 +
 .../add-stack-export-3ace746a8c80d766.yaml    |   4 +
 ...k-suspend-and-resume-26d4fc5904291d5d.yaml |   4 +
 ...-pool-to-shared-file-ad45da1b2510b412.yaml |   5 +
 ...oadbalancer-listener-809e523a8bd6a7d5.yaml |   3 +
 ...ty_zone-loadbalancer-a18aa1708d7859e2.yaml |   3 +
 ...etting-static-routes-b3ce6cac2c5e9e51.yaml |   9 +
 ...stem-role-assignment-693dd3e1da33a54d.yaml |  11 +
 ...ms-for-octavia-pools-76f295cd2daa7f53.yaml |   6 +
 ...-support-for-octavia-7ecb372e6fb58101.yaml |   6 +
 ...er-for-octavia-pools-f0a23436d826b313.yaml |   5 +
 .../add-unified-limit-5ac334a08e137a70.yaml   |   5 +
 ...ser-group-assignment-9c419b6c6bfe392c.yaml |   4 +
 ...ssage-to-shared-file-85d7bbccf8347c4f.yaml |   5 +
 ...e-attachment-support-b5f9a9e78ba88355.yaml |  11 +
 ...olume-extend-support-86e5c8cff5d6874e.yaml |   3 +
 ...age-unmanage-support-fc0be2a3fb4427d1.yaml |   5 +
 ...ume-transfer-support-28bf34a243d96e1b.yaml |   5 +
 ...d-volume-type-update-b84f50b7fa3b061d.yaml |   3 +
 ...cription_create_user-0ddc9a0ef4da840d.yaml |   3 +
 ...e_recordsets_support-69af0a6b317073e7.yaml |   4 +
 ...ignate_zones_support-35fa9b8b09995b43.yaml |   4 +
 ...add_heat_tag_support-135aa43ba1dce3bb.yaml |   7 +
 ...st_aggregate_support-471623faf45ec3c3.yaml |   4 +
 ...image_import_support-6cea2e7d7a781071.yaml |   7 +
 .../add_influxdb_stats-665714d715302ad5.yaml  |   4 +
 ...num_baymodel_support-e35e5aab0b14ff75.yaml |   7 +
 ...num_services_support-3d95f9dcc60b5573.yaml |   3 +
 .../add_project_cleanup-39c3517b25a5372e.yaml |   8 +
 ...server_group_support-dfa472e3dae7d34d.yaml |   3 +
 ...t_port_binding_attrs-c70966724eb970f3.yaml |   5 +
 .../add_update_server-8761059d6de7e68b.yaml   |   3 +
 .../add_update_service-28e590a7a7524053.yaml  |   6 +
 .../add_vendor_hook-e87b6afb7f215a30.yaml     |   8 +
 ...d-federation-support-3b65e531e57211f5.yaml |   5 +
 ...added-senlin-support-1eb4e47c31258f66.yaml |   3 +
 .../allocation-api-04f6b3b7a0ccc850.yaml      |   4 +
 .../allocation-update-910c36c1290e5121.yaml   |   4 +
 ...ternate-auth-context-3939f1492a0e1355.yaml |   5 +
 ...il-cluster-templates-3eb4b5744ba327ac.yaml |   5 +
 .../auth-url-vexxhost-8d63cd17bde21320.yaml   |   9 +
 ...il-on-failed-service-cf299c37d5647b08.yaml |   6 +
 ...ve-mkisofs-xorrisofs-075db4d7d80e5a13.yaml |   8 +
 .../baremetal-details-09b27fba82111cfb.yaml   |  12 +
 .../baremetal-errors-5cc871e8df4c9d95.yaml    |   4 +
 .../baremetal-fields-1f6fbcd8bd1ea2aa.yaml    |   4 +
 .../baremetal-fields-624546fa533a8287.yaml    |   5 +
 ...metal-fields-convert-857b8804327f1e86.yaml |   5 +
 ...emetal-introspection-973351b3ee76309e.yaml |   4 +
 ...aremetal-maintenance-5cb95c6d898d4d72.yaml |   4 +
 .../baremetal-patch-feebd96b1b92f3b9.yaml     |  13 +
 .../baremetal-ports-cc0f56ae0d192aba.yaml     |   5 +
 ...aremetal-reservation-40327923092e9647.yaml |  10 +
 ...metal-retired-fields-f56a4632ad4797d7.yaml |   4 +
 .../baremetal-retries-804f553b4e22b3bf.yaml   |   8 +
 .../baremetal-retries-ff8aa8f73fb97415.yaml   |   6 +
 .../baremetal-traits-d1137318db33b8d1.yaml    |   4 +
 .../baremetal-update-80effb38aae8e02d.yaml    |   5 +
 .../baremetal-validate-ccce2a37d2a20d96.yaml  |   4 +
 .../notes/baremetal-vif-122457118c722a9b.yaml |   4 +
 .../baremetal-wait-e4571cdb150b188a.yaml      |   7 +
 .../basic-api-cache-4ad8cf2754b004d1.yaml     |   4 +
 ...block-storage-backup-5886e91fd6e423bf.yaml |   3 +
 ...-storage-init-return-95b465b4755f03ca.yaml |   7 +
 .../block-storage-qs-0e3b69be2e709b65.yaml    |   4 +
 .../block-storage-v3-9798d584d088c048.yaml    |   4 +
 ...rage-type_encryption-121f8a222c822fb5.yaml |   3 +
 ...boot-on-server-group-a80e51850db24b3d.yaml |   4 +
 .../notes/bug-2001080-de52ead3c5466792.yaml   |   7 +
 .../notes/bug-2010898-430da335e4df0efe.yaml   |   5 +
 ...ache-auth-in-keyring-773dd5f682cd1610.yaml |   5 +
 ...cache-in-use-volumes-c7fa8bb378106fe3.yaml |   4 +
 ...tch-up-release-notes-e385fad34e9f3d6e.yaml |  15 +
 ...ach-vol-return-value-4834a1f78392abb1.yaml |   8 +
 ...lume_backups_support-6f7ceab440853833.yaml |   4 +
 .../cinderv2-norm-fix-037189c60b43089f.yaml   |   3 +
 .../cleanup-objects-f99aeecf22ac13dd.yaml     |   6 +
 ...cloud-profile-status-e0d29b5e2f10e95c.yaml |   6 +
 ...ng-resource-deletion-bed869ba47c2aac1.yaml |  13 +
 ...-aggregate-functions-45d5f2beeeac2b48.yaml |   6 +
 ...te-microversion-2-17-b05cb87580b8d56a.yaml |   6 +
 ...te-microversion-2-73-abae1d0c3740f76e.yaml |   5 +
 ...te-microversion-2-89-8c5187cc3bf6bd02.yaml |   7 +
 .../compute-quota-set-e664412d089945d2.yaml   |   4 +
 .../compute-quotas-b07a0f24dfac8444.yaml      |   3 +
 ...mpute-restore-server-020bf091acc9f8df.yaml |   6 +
 ...compute-service-zone-2b25ec705b0156c4.yaml |   7 +
 ...mpute-usage-defaults-5f5b2936f17ff400.yaml |   9 +
 ...-proxy-method-rework-dc35fe9ca3af1c16.yaml |  13 +
 .../conf-object-ctr-c0e1da0a67dad841.yaml     |   6 +
 .../config-aliases-0f6297eafd05c07c.yaml      |   7 +
 .../config-flavor-specs-ca712e17971482b6.yaml |   4 +
 .../notes/configdrive-f8ca9f94b2981db7.yaml   |   5 +
 .../container-search-b0f4253ce2deeda5.yaml    |   6 +
 .../create-object-data-870cb543543aa983.yaml  |   5 +
 ...ate-object-directory-98e2cae175cc5082.yaml |   7 +
 .../create-stack-fix-12dbb59a48ac7442.yaml    |   4 +
 ...subnet-by-subnetpool-eba1129c67ed4d96.yaml |   5 +
 ...e_server_network_fix-c4a56b31d2850a4b.yaml |   6 +
 .../create_service_norm-319a97433d68fa6a.yaml |   3 +
 .../cron_triggers_proxy-51aa89e91bbb9798.yaml |   4 +
 .../notes/data-model-cf50d86982646370.yaml    |   8 +
 .../notes/default-cloud-7ee0bcb9e5dd24b9.yaml |   7 +
 ...default-microversion-b2401727cb591002.yaml |   7 +
 .../delete-autocreated-1839187b0aa35022.yaml  |   5 +
 ...delete-image-objects-9d4b4e0fff36a23f.yaml |  18 +
 .../delete-obj-return-a3ecf0415b7a2989.yaml   |   5 +
 .../delete_project-399f9b3107014dde.yaml      |   5 +
 ...metering-label-rules-843d5a962e4e428c.yaml |   7 +
 ...ute-image-proxy-apis-986263f6aa1b1b25.yaml |  12 +
 .../deprecated-profile-762afdef0e8fc9e8.yaml  |   6 +
 .../disable-service-39df96ef8a817785.yaml     |  12 +
 ...dns-domain-parameter-d3acfc3287a9d632.yaml |   5 +
 ...perations_name_or_id-baba4cac5b67234d.yaml |   4 +
 ...-allow_get-attribute-fec75b551fb79465.yaml |   5 +
 ...ormatter-deserialize-30b19956fb79bb8d.yaml |   5 +
 .../notes/drop-python27-b824f9ce51cb1ab7.yaml |   3 +
 ...p-senlin-cloud-layer-c06d496acc70b014.yaml |   4 +
 .../dropped-python-3.5-b154887cce87947c.yaml  |   4 +
 .../dual-stack-networks-8a81941c97d28deb.yaml |   8 +
 ...ndpoint-from-catalog-bad36cb0409a4e6a.yaml |   4 +
 ...ient-side-rate-limit-ddb82df7cb92091c.yaml |   8 +
 ...-not-attribute-error-49484d0fdc61f75d.yaml |   6 +
 ...ture-server-metadata-50caf18cec532160.yaml |   3 +
 ...d_server-use-details-9a22e83ec6540c98.yaml |   4 +
 .../notes/fip_timeout-035c4bb3ff92fa1f.yaml   |   4 +
 .../firewall-resources-c7589d288dd57e35.yaml  |   5 +
 ...ith-old-keystoneauth-66e11ee9d008b962.yaml |   7 +
 .../fix-config-drive-a148b7589f7e1022.yaml    |   6 +
 .../fix-delete-ips-1d4eebf7bc4d4733.yaml      |   6 +
 .../fix-dns-return-c810d5e6736322f1.yaml      |   7 +
 ...ix-endpoint-override-ac41baeec9549ab3.yaml |   5 +
 ...-ip-private-matching-84e369eee380a185.yaml |   6 +
 ...fix-for-microversion-70cd686b6d6e3fd0.yaml |  14 +
 ...-hw_qemu_guest_agent-bf1147e52c84b5e8.yaml |   5 +
 .../fix-image-task-ae79502dd5c7ecba.yaml      |   6 +
 .../fix-list-networks-a592725df64c306e.yaml   |   3 +
 .../fix-microversion-354dc70deb2b2f0b.yaml    |   8 +
 .../fix-missing-futures-a0617a1c1ce6e659.yaml |   5 +
 ...on-endpoint-mangling-a9dd89dd09bc71ec.yaml |   5 +
 ...h_type-v3multifactor-049cf52573d9e00e.yaml |  12 +
 ...perties-key-conflict-2161ca1faaad6731.yaml |   4 +
 ...ix-supplemental-fips-c9cd58aac12eb30e.yaml |   7 +
 .../fix-task-timing-048afea680adc62e.yaml     |   5 +
 .../fix-update-domain-af47b066ac52eb7f.yaml   |   3 +
 .../notes/fix-yaml-load-3e6bd852afe549b4.yaml |   5 +
 .../fixed-magnum-type-7406f0a60525f858.yaml   |   6 +
 .../flavor-cloud-layer-0b4d130ac1c5e7c4.yaml  |   4 +
 .../notes/flavor_fix-a53c6b326dc34a2c.yaml    |   7 +
 ...ing_ip_normalization-41e0edcdb0c98aee.yaml |  10 +
 .../fnmatch-name-or-id-f658fe26f84086c8.yaml  |   5 +
 ...ipv4_no_ipv6_address-9842168b5d05d262.yaml |   6 +
 .../notes/futurist-b54b0f449d410997.yaml      |   8 +
 ...erate-form-signature-294ca46812f291d6.yaml |   5 +
 .../notes/get-limits-c383c512f8e01873.yaml    |   3 +
 .../get-object-raw-e58284e59c81c8ef.yaml      |   5 +
 ...et-server-by-id-none-3e8538800fa09d82.yaml |   7 +
 .../notes/get-usage-72d249ff790d1b8f.yaml     |   3 +
 .../get_compute_usage-01811dccd60dc92a.yaml   |   5 +
 .../get_object_api-968483adb016bce1.yaml      |   3 +
 ...nce-image-pagination-0b4dfef22b25852b.yaml |   4 +
 .../glance-image-stores-2baa66e6743a2f2d.yaml |   4 +
 .../global-request-id-d7c0736f43929165.yaml   |  11 +
 ...t-revoke-assignments-231d3f9596a1ae75.yaml |   3 +
 .../identity-auth-url-f3ae8ef22d2bcab6.yaml   |   7 +
 ...image-flavor-by-name-54865b00ebbf1004.yaml |   9 +
 .../image-from-volume-9acf7379f5995b5b.yaml   |   3 +
 .../image-id-filter-key-b9b6b52139a27cbe.yaml |   7 +
 ...-import-proxy-params-f19d8b6166104ebe.yaml |  12 +
 ...image-import-support-97052cdbc8ce449b.yaml |   6 +
 ...kwarg-only-arguments-94c9b2033d386160.yaml |   5 +
 .../notes/image-update-76bd3bf24c1c1380.yaml  |   5 +
 .../improve-metrics-5d7ce70ce4021d72.yaml     |   5 +
 ...nfer-secgroup-source-58d840aaf1a1f485.yaml |   9 +
 ...metering-label-rules-e04b797adac5d0d0.yaml |   5 +
 .../introspection-node-6a3b7d55839ef82c.yaml  |   4 +
 ...c-conductors-support-3bf27e8b2f0299ba.yaml |   4 +
 .../ironic-deploy-steps-2c0f39d7d2a13289.yaml |   4 +
 ...loy-template-support-fa56005365ed6e4d.yaml |   4 +
 ...ection_rules_support-18b0488a76800122.yaml |   3 +
 .../ironic-microversion-ba5b0f36f11196a6.yaml |   4 +
 .../ironic-node-shard-35f2557c3dbfff1d.yaml   |   4 +
 ...olume_target-support-8130361804366787.yaml |   4 +
 .../notes/ksa-discovery-86a4ef00d85ea87f.yaml |   5 +
 .../less-file-hashing-d2497337da5acbef.yaml   |   5 +
 ...-all_projects-filter-27f1d471a7848507.yaml |  33 +
 .../notes/list-az-names-a38c277d1192471b.yaml |   3 +
 ...resources-empty-list-6aa760c01e7d97d7.yaml |   5 +
 ...ignments-keystone-v2-b127b12b4860f50c.yaml |   3 +
 ...servers-all-projects-349e6dc665ba2e8d.yaml |   6 +
 .../notes/load-yaml-3177efca78e5c67a.yaml     |   7 +
 ...tion-server-resource-af77fdab5d35d421.yaml |   6 +
 .../log-request-ids-37507cb6eed9a7da.yaml     |   5 +
 ...update-microversions-4b910e63cebd65e2.yaml |  11 +
 .../notes/magic-fixes-dca4ae4dac2441a8.yaml   |   6 +
 ...ud-region-standalone-848a2c4b5f3ebc29.yaml |   6 +
 .../make-rest-client-dd3d365632a26fa0.yaml    |   4 +
 ...nt-version-discovery-84125700f159491a.yaml |   6 +
 ...metadata_easier.yaml-e9751723e002e06f.yaml |   5 +
 ...ade-os-client-config-29878734ad643e33.yaml |   4 +
 .../meta-passthrough-d695bff4f9366b65.yaml    |   7 +
 ...data-key-name-bugfix-77612a825c5145d7.yaml |   4 +
 ...n-max-legacy-version-301242466ddefa93.yaml |  15 +
 .../notes/mtu-settings-8ce8b54d096580a2.yaml  |   6 +
 .../multiple-updates-b48cc2f6db2e526d.yaml    |  14 +
 .../munch-sub-dict-e1619c71c26879cb.yaml      |   5 +
 .../nat-source-field-7c7db2a724616d59.yaml    |   6 +
 .../nat-source-support-92aaf6b336d0b848.yaml  |   4 +
 .../notes/net_provider-dd64b697476b7094.yaml  |   3 +
 .../notes/network-data-bd94e4a499ba3e0d.yaml  |   5 +
 .../notes/network-data-deb5772edc111428.yaml  |   6 +
 .../notes/network-list-e6e9dafdd8446263.yaml  |  10 +
 ...qos-rule-filter-keys-324e3222510fd362.yaml |   7 +
 .../network-quotas-b98cce9ffeffdbf4.yaml      |   3 +
 ...p-query-parameter-id-f6dda45b2c09dbaa.yaml |   9 +
 ...rk_add_bgp_resources-c182dc2873d6db18.yaml |  10 +
 ...add_bgpvpn_resources-b3bd0b568c3c99db.yaml |   7 +
 ...rk_add_sfc_resources-8a52c0c8c1f8e932.yaml |   6 +
 ...k_add_taas_resources-86a947265e11ce84.yaml |   5 +
 .../neutron-discovery-54399116d5f810ee.yaml   |   5 +
 ...ility_zone_extension-675c2460ebb50a09.yaml |   8 +
 ...-floating-attributes-213cdf5681d337e1.yaml |   4 +
 .../no-import-fallback-a09b5d5a11299933.yaml  |   5 +
 ...o-inspect-associated-563e272785bb6016.yaml |   5 +
 .../no-more-troveclient-0a4739c21432ac63.yaml |   6 +
 ...o-start-task-manager-56773f3ea5eb3a59.yaml |   6 +
 .../node-boot-devices-2ab4991d75a2ab52.yaml   |   8 +
 .../notes/node-consoles-63589f22da98a689.yaml |   8 +
 .../notes/node-create-027ea99193f344ef.yaml   |   9 +
 .../node-inject-nmi-53d12681026e0b6c.yaml     |   6 +
 .../notes/node-owner-7f4b083ff9da8cce.yaml    |   7 +
 ...-set-provision-state-3472cbd81c47458f.yaml |  11 +
 ...orm_role_assignments-a13f41768e62d40c.yaml |   4 +
 .../normalize-images-1331bea7bfffa36a.yaml    |   6 +
 .../normalize-machine-290d9f2a3b3a7ef0.yaml   |   4 +
 .../nova-flavor-to-rest-0a5757e35714a690.yaml |   5 +
 ...ova-old-microversion-5e4b8e239ba44096.yaml |   5 +
 ...-checksum-generation-ea1c1e47d2290054.yaml |   4 +
 .../object-chunked-data-ee619b7d4759b8d2.yaml |   6 +
 .../notes/object-search-a5f5ec4b2df3e045.yaml |   6 +
 .../notes/old-placement-4b3c34abb8fe7b81.yaml |   6 +
 ...imize-server-console-1d27c107b9a1cdc3.yaml |   6 +
 .../option-precedence-1fecab21fdfb2c33.yaml   |   7 +
 .../port-device-profile-af91e25c45321691.yaml |   5 +
 .../notes/power-wait-751083852f958cb4.yaml    |   4 +
 ...eanup-exclude-option-65cba962eaa5b61a.yaml |   6 +
 ...roject-cleanup-swift-f67615e5c3ab8fd8.yaml |   6 +
 ...on-state-negotiation-0155b4d0e932054c.yaml |  12 +
 .../notes/python-3.5-629817cec092d528.yaml    |   8 +
 .../qos-min-pps-rule-52df1b150b1d3f68.yaml    |   5 +
 ...-port-network-policy-cab43faa0f8bc036.yaml |   5 +
 releasenotes/notes/r1-cab94ae7d749a1ec.yaml   |  31 +
 releasenotes/notes/r1-d4efe289ebf0cbcd.yaml   |  40 +
 ...ace-block-storage-v2-fe0dd69b9e037599.yaml |   6 +
 .../register-machine-72ac3e65a1ed55b1.yaml    |   6 +
 ...ote-address-group-id-6291816888cb3de7.yaml |   6 +
 .../remote-profile-100218d08b25019d.yaml      |   7 +
 ...emove-auto-container-527f1807605b42c0.yaml |   6 +
 ...tore-details-classes-158ab1f46655320a.yaml |   6 +
 ...-cloud-caching-layer-2b0384870a45e8a3.yaml |   7 +
 .../remove-magnumclient-875b3e513f98f57c.yaml |   4 +
 .../notes/remove-metric-fe5ddfd52b43c852.yaml |   5 +
 .../remove-novaclient-3f8d4db20d5f9582.yaml   |   5 +
 ...rverdetails-resource-f66cb278b224627d.yaml |   5 +
 ...ed-deprecated-things-8700fe3592c3bf18.yaml |   5 +
 ...removed-glanceclient-105c7fba9481b9be.yaml |  28 +
 .../notes/removed-meter-6f6651b6e452e000.yaml |   5 +
 .../removed-profile-437f3038025b0fb3.yaml     |   8 +
 .../removed-profile-b033d870937868a1.yaml     |   5 +
 .../removed-swiftclient-aff22bfaeee5f59f.yaml |   5 +
 .../rename-base-proxy-b9fcb22d373864a2.yaml   |   5 +
 ...ame-resource-methods-5f2a716b08156765.yaml |  12 +
 ...e-service-force-down-6f462d62959a5315.yaml |   9 +
 .../renamed-bare-metal-b1cdbc52af14e042.yaml  |   4 +
 .../renamed-block-store-bc5e0a7315bfeb67.yaml |   4 +
 .../renamed-cluster-743da6d321fffcba.yaml     |   4 +
 .../renamed-telemetry-c08ae3e72afca24f.yaml   |   4 +
 ...rs-with-platformdirs-d3f5bcbe726b7829.yaml |   8 +
 .../notes/request-stats-9d70480bebbdb4d6.yaml |   5 +
 ...-find-filter-by-name-e647e5c507ff4b6c.yaml |   7 +
 .../resource2-migration-835590b300bef621.yaml |  11 +
 ...r-find-proxy-methods-947a3280732c448a.yaml |  25 +
 .../revert-futurist-34acc42fd3f0e7f3.yaml     |   8 +
 ...k-compute-hypervisor-a62f275a0fd1f074.yaml |   5 +
 ...er-extraroute-atomic-1a0c84c3fd90ceb1.yaml |   4 +
 .../notes/router_ext_gw-b86582317bca8b39.yaml |   4 +
 .../notes/sdk-helper-41f8d815cfbcfb00.yaml    |   4 +
 .../search_resource-b9c2f772e01d3b2c.yaml     |   7 +
 ...microversion-support-f14b293d9c3d3d5e.yaml |   5 +
 ...rver-create-error-id-66c698c7e633fb8b.yaml |   4 +
 ...rver-security-groups-840ab28c04f359de.yaml |   4 +
 ...service_enabled_flag-c917b305d3f2e8fd.yaml |   5 +
 .../session-client-b581a6e5d18c8f04.yaml      |   6 +
 .../set-bootable-volume-454a7a41e7e77d08.yaml |   4 +
 .../notes/shade-helper-568f8cb372eef6d9.yaml  |   4 +
 ...hade-into-connection-81191fb3d0ddaf6e.yaml |   5 +
 .../shade-location-b0d2e5cae743b738.yaml      |   8 +
 .../snap-updated_at-a46711b6160e3a26.yaml     |   3 +
 .../notes/stack-update-5886e91fd6e423bf.yaml  |   4 +
 .../started-using-reno-242e2b0cd27f9480.yaml  |   3 +
 ...teful-security-group-f32a78b9bbb49874.yaml |   4 +
 ...stop-using-tenant-id-42eb35139ba9eeff.yaml |   4 +
 .../notes/story-2010784-21d23043155497f5.yaml |  33 +
 .../notes/stream-object-6ecd43511dca726b.yaml |   4 +
 .../stream-to-file-91f48d6dcea399c6.yaml      |   3 +
 .../notes/strict-mode-d493abc0c3e87945.yaml   |   6 +
 .../strict-proxies-4a315f68f387ee89.yaml      |   8 +
 ...t_stdin_image_upload-305c04fb2daeb32c.yaml |   4 +
 .../swift-set-metadata-c18c60e440f9e4a7.yaml  |   5 +
 .../swift-upload-lock-d18f3d42b3a0719a.yaml   |   5 +
 .../switch-coe-to-proxy-c18789ed27cc1d95.yaml |   5 +
 ...h-nova-to-created_at-45b7b50af6a2d59e.yaml |   5 +
 .../switch-to-warnings-333955d19afc99ca.yaml  |   7 +
 ...sk-manager-parameter-c6606653532248f2.yaml |   6 +
 ...toggle-port-security-f5bc606e82141feb.yaml |   9 +
 .../notes/unprocessed-2d75133911945869.yaml   |   5 +
 ...lve-to-specific-host-84666d440dce4a73.yaml |   7 +
 ...update-role-property-b16e902e913c7b25.yaml |   5 +
 .../update_endpoint-f87c1f42d0c0d1ef.yaml     |   8 +
 .../update_workflow-ecdef6056ef2687b.yaml     |   3 +
 .../use-interface-ip-c5cb3e7c91150096.yaml    |  13 +
 .../use-proxy-layer-dfc3764d52bc1f2a.yaml     |   7 +
 .../notes/v4-fixed-ip-325740fdae85ffa9.yaml   |   7 +
 .../validate-machine-dcf528b8f587e3f0.yaml    |   5 +
 ...vendor-add-betacloud-03872c3485104853.yaml |   3 +
 ...dd-limestonenetworks-99b2ffab9fc23b08.yaml |   4 +
 ...dor-update-betacloud-37dac22d8d91a3c5.yaml |   3 +
 .../vendor-updates-f11184ba56bb27cf.yaml      |   4 +
 .../version-command-70c37dd7f880e9ae.yaml     |   4 +
 .../version-discovery-a501c4e9e9869f77.yaml   |  13 +
 .../vol-updated_at-274c3a2bb94c8939.yaml      |   3 +
 .../notes/volume-quotas-5b674ee8c1f71eb6.yaml |   3 +
 .../notes/volume-types-a07a14ae668e7dd2.yaml  |   4 +
 .../notes/volume-update-876e6540c8471440.yaml |   4 +
 ...volume_connector-api-f001e6f5fc4d1688.yaml |   4 +
 ...it-on-image-snapshot-27cd2eacab2fabd8.yaml |   7 +
 ...vision-state-no-fail-efa74dd39f687df8.yaml |   6 +
 .../wait_for_server-8dc8446b7c673d36.yaml     |   3 +
 ...elete_callback_param-68d30161e23340bb.yaml |   8 +
 .../wire-in-retries-10898f7bc81e2269.yaml     |   7 +
 ...ound-transitive-deps-1e7a214f3256b77e.yaml |   9 +
 .../xenapi-use-agent-ecc33e520da81ffa.yaml    |   7 +
 releasenotes/source/2023.1.rst                |   6 +
 releasenotes/source/2023.2.rst                |   6 +
 releasenotes/source/_static/.placeholder      |   0
 releasenotes/source/_templates/.placeholder   |   0
 releasenotes/source/conf.py                   | 278 ++++++
 releasenotes/source/index.rst                 |  22 +
 releasenotes/source/ocata.rst                 |   6 +
 releasenotes/source/pike.rst                  |   6 +
 releasenotes/source/queens.rst                |   6 +
 releasenotes/source/rocky.rst                 |   6 +
 releasenotes/source/stein.rst                 |   6 +
 releasenotes/source/train.rst                 |   6 +
 releasenotes/source/unreleased.rst            |   5 +
 releasenotes/source/ussuri.rst                |   6 +
 releasenotes/source/victoria.rst              |   6 +
 releasenotes/source/wallaby.rst               |   6 +
 releasenotes/source/xena.rst                  |   6 +
 releasenotes/source/yoga.rst                  |   6 +
 releasenotes/source/zed.rst                   |   6 +
 requirements.txt                              |  13 +
 roles/deploy-clouds-config/README.rst         |   0
 roles/deploy-clouds-config/defaults/main.yaml |   1 +
 roles/deploy-clouds-config/tasks/main.yaml    |  11 +
 .../templates/clouds.yaml.j2                  |   2 +
 setup.cfg                                     |  55 ++
 setup.py                                      |  19 +
 test-requirements.txt                         |  13 +
 tools/keystone_version.py                     |  92 ++
 tools/nova_version.py                         |  61 ++
 tools/print-services.py                       | 135 +++
 tox.ini                                       | 166 ++++
 zuul.d/acceptance-jobs.yaml                   | 156 ++++
 zuul.d/functional-jobs.yaml                   | 469 ++++++++++
 zuul.d/metal-jobs.yaml                        |  32 +
 zuul.d/project.yaml                           |  48 ++
 3114 files changed, 18925 insertions(+)
 create mode 100644 CONTRIBUTING.rst
 create mode 100644 HACKING.rst
 create mode 100644 LICENSE
 create mode 100644 MANIFEST.in
 create mode 100644 README.rst
 create mode 100644 SHADE-MERGE-TODO.rst
 create mode 100644 babel.cfg
 create mode 100644 bindep.txt
 create mode 100644 devstack/plugin.sh
 create mode 100644 doc/requirements.txt
 create mode 100644 doc/source/conf.py
 create mode 100644 doc/source/contributor/clouds.yaml
 create mode 100644 doc/source/contributor/coding.rst
 create mode 100644 doc/source/contributor/contributing.rst
 create mode 100644 doc/source/contributor/create/examples/resource/fake.py
 create mode 100644 doc/source/contributor/create/examples/resource/fake_service.py
 create mode 100644 doc/source/contributor/create/resource.rst
 create mode 100644 doc/source/contributor/history.rst
 create mode 100644 doc/source/contributor/index.rst
 create mode 100644 doc/source/contributor/layout.rst
 create mode 100644 doc/source/contributor/layout.txt
 create mode 100644 doc/source/contributor/setup.rst
 create mode 100644 doc/source/contributor/testing.rst
 create mode 100644 doc/source/glossary.rst
 create mode 100644 doc/source/index.rst
 create mode 100644 doc/source/install/index.rst
 create mode 100644 doc/source/releasenotes.rst
 create mode 100644 doc/source/user/config/configuration.rst
 create mode 100644 doc/source/user/config/index.rst
 create mode 100644 doc/source/user/config/network-config.rst
 create mode 100644 doc/source/user/config/reference.rst
 create mode 100644 doc/source/user/config/using.rst
 create mode 100644 doc/source/user/config/vendor-support.rst
 create mode 100644 doc/source/user/connection.rst
 create mode 120000 doc/source/user/examples
 create mode 100644 doc/source/user/exceptions.rst
 create mode 100644 doc/source/user/guides/baremetal.rst
 create mode 100644 doc/source/user/guides/block_storage.rst
 create mode 100644 doc/source/user/guides/clustering.rst
 create mode 100644 doc/source/user/guides/clustering/action.rst
 create mode 100644 doc/source/user/guides/clustering/cluster.rst
 create mode 100644 doc/source/user/guides/clustering/event.rst
 create mode 100644 doc/source/user/guides/clustering/node.rst
 create mode 100644 doc/source/user/guides/clustering/policy.rst
 create mode 100644 doc/source/user/guides/clustering/policy_type.rst
 create mode 100644 doc/source/user/guides/clustering/profile.rst
 create mode 100644 doc/source/user/guides/clustering/profile_type.rst
 create mode 100644 doc/source/user/guides/clustering/receiver.rst
 create mode 100644 doc/source/user/guides/compute.rst
 create mode 100644 doc/source/user/guides/connect.rst
 create mode 100644 doc/source/user/guides/connect_from_config.rst
 create mode 100644 doc/source/user/guides/database.rst
 create mode 100644 doc/source/user/guides/dns.rst
 create mode 100644 doc/source/user/guides/identity.rst
 create mode 100644 doc/source/user/guides/image.rst
 create mode 100644 doc/source/user/guides/intro.rst
 create mode 100644 doc/source/user/guides/key_manager.rst
 create mode 100644 doc/source/user/guides/logging.rst
 create mode 100644 doc/source/user/guides/message.rst
 create mode 100644 doc/source/user/guides/network.rst
 create mode 100644 doc/source/user/guides/object_store.rst
 create mode 100644 doc/source/user/guides/orchestration.rst
 create mode 100644 doc/source/user/guides/shared_file_system.rst
 create mode 100644 doc/source/user/guides/stats.rst
 create mode 100644 doc/source/user/index.rst
 create mode 100644 doc/source/user/microversions.rst
 create mode 100644 doc/source/user/model.rst
 create mode 100644 doc/source/user/multi-cloud-demo.rst
 create mode 100644 doc/source/user/proxies/accelerator.rst
 create mode 100644 doc/source/user/proxies/baremetal.rst
 create mode 100644 doc/source/user/proxies/baremetal_introspection.rst
 create mode 100644 doc/source/user/proxies/block_storage_v2.rst
 create mode 100644 doc/source/user/proxies/block_storage_v3.rst
 create mode 100644 doc/source/user/proxies/clustering.rst
 create mode 100644 doc/source/user/proxies/compute.rst
 create mode 100644 doc/source/user/proxies/container_infrastructure_management.rst
 create mode 100644 doc/source/user/proxies/database.rst
 create mode 100644 doc/source/user/proxies/dns.rst
 create mode 100644 doc/source/user/proxies/identity_v2.rst
 create mode 100644 doc/source/user/proxies/identity_v3.rst
 create mode 100644 doc/source/user/proxies/image_v1.rst
 create mode 100644 doc/source/user/proxies/image_v2.rst
 create mode 100644 doc/source/user/proxies/key_manager.rst
 create mode 100644 doc/source/user/proxies/load_balancer_v2.rst
 create mode 100644 doc/source/user/proxies/message_v2.rst
 create mode 100644 doc/source/user/proxies/network.rst
 create mode 100644 doc/source/user/proxies/object_store.rst
 create mode 100644 doc/source/user/proxies/orchestration.rst
 create mode 100644 doc/source/user/proxies/placement.rst
 create mode 100644 doc/source/user/proxies/shared_file_system.rst
 create mode 100644 doc/source/user/proxies/workflow.rst
 create mode 100644 doc/source/user/resource.rst
 create mode 100644 doc/source/user/resources/accelerator/index.rst
 create mode 100644 doc/source/user/resources/accelerator/v2/accelerator_request.rst
 create mode 100644 doc/source/user/resources/accelerator/v2/deployable.rst
 create mode 100644 doc/source/user/resources/accelerator/v2/device.rst
 create mode 100644 doc/source/user/resources/accelerator/v2/device_profile.rst
 create mode 100644 doc/source/user/resources/baremetal/index.rst
 create mode 100644 doc/source/user/resources/baremetal/v1/allocation.rst
 create mode 100644 doc/source/user/resources/baremetal/v1/chassis.rst
 create mode 100644 doc/source/user/resources/baremetal/v1/conductor.rst
 create mode 100644 doc/source/user/resources/baremetal/v1/deploy_templates.rst
 create mode 100644 doc/source/user/resources/baremetal/v1/driver.rst
 create mode 100644 doc/source/user/resources/baremetal/v1/node.rst
 create mode 100644 doc/source/user/resources/baremetal/v1/port.rst
 create mode 100644 doc/source/user/resources/baremetal/v1/port_group.rst
 create mode 100644 doc/source/user/resources/baremetal/v1/volume_connector.rst
 create mode 100644 doc/source/user/resources/baremetal/v1/volume_target.rst
 create mode 100644 doc/source/user/resources/baremetal_introspection/index.rst
 create mode 100644 doc/source/user/resources/baremetal_introspection/v1/introspection.rst
 create mode 100644 doc/source/user/resources/baremetal_introspection/v1/introspection_rule.rst
 create mode 100644 doc/source/user/resources/block_storage/index.rst
 create mode 100644 doc/source/user/resources/block_storage/v2/backup.rst
 create mode 100644 doc/source/user/resources/block_storage/v2/capabilities.rst
 create mode 100644 doc/source/user/resources/block_storage/v2/limits.rst
 create mode 100644 doc/source/user/resources/block_storage/v2/quota_set.rst
 create mode 100644 doc/source/user/resources/block_storage/v2/snapshot.rst
 create mode 100644 doc/source/user/resources/block_storage/v2/stats.rst
 create mode 100644 doc/source/user/resources/block_storage/v2/type.rst
 create mode 100644 doc/source/user/resources/block_storage/v2/volume.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/attachment.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/availability_zone.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/backup.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/block_storage_summary.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/capabilities.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/extension.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/group.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/group_snapshot.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/group_type.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/limits.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/quota_set.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/resource_filter.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/service.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/snapshot.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/stats.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/transfer.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/type.rst
 create mode 100644 doc/source/user/resources/block_storage/v3/volume.rst
 create mode 100644 doc/source/user/resources/clustering/index.rst
 create mode 100644 doc/source/user/resources/clustering/v1/action.rst
 create mode 100644 doc/source/user/resources/clustering/v1/build_info.rst
 create mode 100644 doc/source/user/resources/clustering/v1/cluster.rst
 create mode 100644 doc/source/user/resources/clustering/v1/cluster_policy.rst
 create mode 100644 doc/source/user/resources/clustering/v1/event.rst
 create mode 100644 doc/source/user/resources/clustering/v1/node.rst
 create mode 100644 doc/source/user/resources/clustering/v1/policy.rst
 create mode 100644 doc/source/user/resources/clustering/v1/policy_type.rst
 create mode 100644 doc/source/user/resources/clustering/v1/profile.rst
 create mode 100644 doc/source/user/resources/clustering/v1/profile_type.rst
 create mode 100644 doc/source/user/resources/clustering/v1/receiver.rst
 create mode 100644 doc/source/user/resources/compute/index.rst
 create mode 100644 doc/source/user/resources/compute/v2/aggregate.rst
 create mode 100644 doc/source/user/resources/compute/v2/availability_zone.rst
 create mode 100644 doc/source/user/resources/compute/v2/extension.rst
 create mode 100644 doc/source/user/resources/compute/v2/flavor.rst
 create mode 100644 doc/source/user/resources/compute/v2/hypervisor.rst
 create mode 100644 doc/source/user/resources/compute/v2/image.rst
 create mode 100644 doc/source/user/resources/compute/v2/keypair.rst
 create mode 100644 doc/source/user/resources/compute/v2/limits.rst
 create mode 100644 doc/source/user/resources/compute/v2/migration.rst
 create mode 100644 doc/source/user/resources/compute/v2/quota_set.rst
 create mode 100644 doc/source/user/resources/compute/v2/server.rst
 create mode 100644 doc/source/user/resources/compute/v2/server_action.rst
 create mode 100644 doc/source/user/resources/compute/v2/server_diagnostics.rst
 create mode 100644 doc/source/user/resources/compute/v2/server_group.rst
 create mode 100644 doc/source/user/resources/compute/v2/server_interface.rst
 create mode 100644 doc/source/user/resources/compute/v2/server_ip.rst
 create mode 100644 doc/source/user/resources/compute/v2/server_migration.rst
 create mode 100644 doc/source/user/resources/compute/v2/server_remote_console.rst
 create mode 100644 doc/source/user/resources/compute/v2/service.rst
 create mode 100644 doc/source/user/resources/compute/v2/usage.rst
 create mode 100644 doc/source/user/resources/compute/v2/volume_attachment.rst
 create mode 100644 doc/source/user/resources/compute/version.rst
 create mode 100644 doc/source/user/resources/container_infrastructure_management/cluster.rst
 create mode 100644 doc/source/user/resources/container_infrastructure_management/cluster_certificate.rst
 create mode 100644 doc/source/user/resources/container_infrastructure_management/cluster_template.rst
 create mode 100644 doc/source/user/resources/container_infrastructure_management/index.rst
 create mode 100644 doc/source/user/resources/container_infrastructure_management/service.rst
 create mode 100644 doc/source/user/resources/database/index.rst
 create mode 100644 doc/source/user/resources/database/v1/database.rst
 create mode 100644 doc/source/user/resources/database/v1/flavor.rst
 create mode 100644 doc/source/user/resources/database/v1/instance.rst
 create mode 100644 doc/source/user/resources/database/v1/user.rst
 create mode 100644 doc/source/user/resources/dns/index.rst
 create mode 100644 doc/source/user/resources/dns/v2/floating_ip.rst
 create mode 100644 doc/source/user/resources/dns/v2/recordset.rst
 create mode 100644 doc/source/user/resources/dns/v2/zone.rst
 create mode 100644 doc/source/user/resources/dns/v2/zone_export.rst
 create mode 100644 doc/source/user/resources/dns/v2/zone_import.rst
 create mode 100644 doc/source/user/resources/dns/v2/zone_share.rst
 create mode 100644 doc/source/user/resources/dns/v2/zone_transfer.rst
 create mode 100644 doc/source/user/resources/identity/index.rst
 create mode 100644 doc/source/user/resources/identity/v2/extension.rst
 create mode 100644 doc/source/user/resources/identity/v2/role.rst
 create mode 100644 doc/source/user/resources/identity/v2/tenant.rst
 create mode 100644 doc/source/user/resources/identity/v2/user.rst
 create mode 100644 doc/source/user/resources/identity/v3/application_credential.rst
 create mode 100644 doc/source/user/resources/identity/v3/credential.rst
 create mode 100644 doc/source/user/resources/identity/v3/domain.rst
 create mode 100644 doc/source/user/resources/identity/v3/domain_config.rst
 create mode 100644 doc/source/user/resources/identity/v3/endpoint.rst
 create mode 100644 doc/source/user/resources/identity/v3/federation_protocol.rst
 create mode 100644 doc/source/user/resources/identity/v3/group.rst
 create mode 100644 doc/source/user/resources/identity/v3/identity_provider.rst
 create mode 100644 doc/source/user/resources/identity/v3/limit.rst
 create mode 100644 doc/source/user/resources/identity/v3/mapping.rst
 create mode 100644 doc/source/user/resources/identity/v3/policy.rst
 create mode 100644 doc/source/user/resources/identity/v3/project.rst
 create mode 100644 doc/source/user/resources/identity/v3/region.rst
 create mode 100644 doc/source/user/resources/identity/v3/registered_limit.rst
 create mode 100644 doc/source/user/resources/identity/v3/role.rst
 create mode 100644 doc/source/user/resources/identity/v3/role_assignment.rst
 create mode 100644 doc/source/user/resources/identity/v3/role_domain_group_assignment.rst
 create mode 100644 doc/source/user/resources/identity/v3/role_domain_user_assignment.rst
 create mode 100644 doc/source/user/resources/identity/v3/role_project_group_assignment.rst
 create mode 100644 doc/source/user/resources/identity/v3/role_project_user_assignment.rst
 create mode 100644 doc/source/user/resources/identity/v3/role_system_group_assignment.rst
 create mode 100644 doc/source/user/resources/identity/v3/role_system_user_assignment.rst
 create mode 100644 doc/source/user/resources/identity/v3/service.rst
 create mode 100644 doc/source/user/resources/identity/v3/system.rst
 create mode 100644 doc/source/user/resources/identity/v3/trust.rst
 create mode 100644 doc/source/user/resources/identity/v3/user.rst
 create mode 100644 doc/source/user/resources/identity/version.rst
 create mode 100644 doc/source/user/resources/image/index.rst
 create mode 100644 doc/source/user/resources/image/v1/image.rst
 create mode 100644 doc/source/user/resources/image/v2/image.rst
 create mode 100644 doc/source/user/resources/image/v2/member.rst
 create mode 100644 doc/source/user/resources/image/v2/metadef_namespace.rst
 create mode 100644 doc/source/user/resources/image/v2/metadef_object.rst
 create mode 100644 doc/source/user/resources/image/v2/metadef_property.rst
 create mode 100644 doc/source/user/resources/image/v2/metadef_resource_type.rst
 create mode 100644 doc/source/user/resources/image/v2/metadef_schema.rst
 create mode 100644 doc/source/user/resources/image/v2/service_info.rst
 create mode 100644 doc/source/user/resources/image/v2/task.rst
 create mode 100644 doc/source/user/resources/key_manager/index.rst
 create mode 100644 doc/source/user/resources/key_manager/v1/container.rst
 create mode 100644 doc/source/user/resources/key_manager/v1/order.rst
 create mode 100644 doc/source/user/resources/key_manager/v1/secret.rst
 create mode 100644 doc/source/user/resources/load_balancer/index.rst
 create mode 100644 doc/source/user/resources/load_balancer/v2/amphora.rst
 create mode 100644 doc/source/user/resources/load_balancer/v2/availability_zone.rst
 create mode 100644 doc/source/user/resources/load_balancer/v2/availability_zone_profile.rst
 create mode 100644 doc/source/user/resources/load_balancer/v2/flavor.rst
 create mode 100644 doc/source/user/resources/load_balancer/v2/flavor_profile.rst
 create mode 100644 doc/source/user/resources/load_balancer/v2/health_monitor.rst
 create mode 100644 doc/source/user/resources/load_balancer/v2/l7_policy.rst
 create mode 100644 doc/source/user/resources/load_balancer/v2/l7_rule.rst
 create mode 100644 doc/source/user/resources/load_balancer/v2/listener.rst
 create mode 100644 doc/source/user/resources/load_balancer/v2/load_balancer.rst
 create mode 100644 doc/source/user/resources/load_balancer/v2/member.rst
 create mode 100644 doc/source/user/resources/load_balancer/v2/pool.rst
 create mode 100644 doc/source/user/resources/load_balancer/v2/provider.rst
 create mode 100644 doc/source/user/resources/load_balancer/v2/quota.rst
 create mode 100644 doc/source/user/resources/network/index.rst
 create mode 100644 doc/source/user/resources/network/v2/address_group.rst
 create mode 100644 doc/source/user/resources/network/v2/address_scope.rst
 create mode 100644 doc/source/user/resources/network/v2/agent.rst
 create mode 100644 doc/source/user/resources/network/v2/auto_allocated_topology.rst
 create mode 100644 doc/source/user/resources/network/v2/availability_zone.rst
 create mode 100644 doc/source/user/resources/network/v2/bgp_peer.rst
 create mode 100644 doc/source/user/resources/network/v2/bgp_speaker.rst
 create mode 100644 doc/source/user/resources/network/v2/bgpvpn.rst
 create mode 100644 doc/source/user/resources/network/v2/bgpvpn_network_association.rst
 create mode 100644 doc/source/user/resources/network/v2/bgpvpn_port_association.rst
 create mode 100644 doc/source/user/resources/network/v2/bgpvpn_router_association.rst
 create mode 100644 doc/source/user/resources/network/v2/extension.rst
 create mode 100644 doc/source/user/resources/network/v2/flavor.rst
 create mode 100644 doc/source/user/resources/network/v2/floating_ip.rst
 create mode 100644 doc/source/user/resources/network/v2/health_monitor.rst
 create mode 100644 doc/source/user/resources/network/v2/listener.rst
 create mode 100644 doc/source/user/resources/network/v2/load_balancer.rst
 create mode 100644 doc/source/user/resources/network/v2/local_ip.rst
 create mode 100644 doc/source/user/resources/network/v2/local_ip_association.rst
 create mode 100644 doc/source/user/resources/network/v2/metering_label.rst
 create mode 100644 doc/source/user/resources/network/v2/metering_label_rule.rst
 create mode 100644 doc/source/user/resources/network/v2/ndp_proxy.rst
 create mode 100644 doc/source/user/resources/network/v2/network.rst
 create mode 100644 doc/source/user/resources/network/v2/network_ip_availability.rst
 create mode 100644 doc/source/user/resources/network/v2/network_segment_range.rst
 create mode 100644 doc/source/user/resources/network/v2/pool.rst
 create mode 100644 doc/source/user/resources/network/v2/pool_member.rst
 create mode 100644 doc/source/user/resources/network/v2/port.rst
 create mode 100644 doc/source/user/resources/network/v2/qos_bandwidth_limit_rule.rst
 create mode 100644 doc/source/user/resources/network/v2/qos_dscp_marking_rule.rst
 create mode 100644 doc/source/user/resources/network/v2/qos_minimum_bandwidth_rule.rst
 create mode 100644 doc/source/user/resources/network/v2/qos_minimum_packet_rate_rule.rst
 create mode 100644 doc/source/user/resources/network/v2/qos_policy.rst
 create mode 100644 doc/source/user/resources/network/v2/qos_rule_type.rst
 create mode 100644 doc/source/user/resources/network/v2/quota.rst
 create mode 100644 doc/source/user/resources/network/v2/rbac_policy.rst
 create mode 100644 doc/source/user/resources/network/v2/router.rst
 create mode 100644 doc/source/user/resources/network/v2/security_group.rst
 create mode 100644 doc/source/user/resources/network/v2/security_group_rule.rst
 create mode 100644 doc/source/user/resources/network/v2/segment.rst
 create mode 100644 doc/source/user/resources/network/v2/service_profile.rst
 create mode 100644 doc/source/user/resources/network/v2/service_provider.rst
 create mode 100644 doc/source/user/resources/network/v2/sfc_flow_classifier.rst
 create mode 100644 doc/source/user/resources/network/v2/sfc_port_chain.rst
 create mode 100644 doc/source/user/resources/network/v2/sfc_port_pair.rst
 create mode 100644 doc/source/user/resources/network/v2/sfc_port_pair_group.rst
 create mode 100644 doc/source/user/resources/network/v2/sfc_service_graph.rst
 create mode 100644 doc/source/user/resources/network/v2/subnet.rst
 create mode 100644 doc/source/user/resources/network/v2/subnet_pool.rst
 create mode 100644 doc/source/user/resources/network/v2/tap_flow.rst
 create mode 100644 doc/source/user/resources/network/v2/tap_service.rst
 create mode 100644 doc/source/user/resources/network/v2/vpn/endpoint_group.rst
 create mode 100644 doc/source/user/resources/network/v2/vpn/ike_policy.rst
 create mode 100644 doc/source/user/resources/network/v2/vpn/index.rst
 create mode 100644 doc/source/user/resources/network/v2/vpn/ipsec_policy.rst
 create mode 100644 doc/source/user/resources/network/v2/vpn/ipsec_site_connection.rst
 create mode 100644 doc/source/user/resources/network/v2/vpn/service.rst
 create mode 100644 doc/source/user/resources/object_store/index.rst
 create mode 100644 doc/source/user/resources/object_store/v1/account.rst
 create mode 100644 doc/source/user/resources/object_store/v1/container.rst
 create mode 100644 doc/source/user/resources/object_store/v1/obj.rst
 create mode 100644 doc/source/user/resources/orchestration/index.rst
 create mode 100644 doc/source/user/resources/orchestration/v1/resource.rst
 create mode 100644 doc/source/user/resources/orchestration/v1/stack.rst
 create mode 100644 doc/source/user/resources/orchestration/v1/stack_event.rst
 create mode 100644 doc/source/user/resources/placement/index.rst
 create mode 100644 doc/source/user/resources/placement/v1/resource_class.rst
 create mode 100644 doc/source/user/resources/placement/v1/resource_provider.rst
 create mode 100644 doc/source/user/resources/placement/v1/resource_provider_inventory.rst
 create mode 100644 doc/source/user/resources/placement/v1/trait.rst
 create mode 100644 doc/source/user/resources/shared_file_system/index.rst
 create mode 100644 doc/source/user/resources/shared_file_system/v2/availability_zone.rst
 create mode 100644 doc/source/user/resources/shared_file_system/v2/limit.rst
 create mode 100644 doc/source/user/resources/shared_file_system/v2/resource_locks.rst
 create mode 100644 doc/source/user/resources/shared_file_system/v2/share.rst
 create mode 100644 doc/source/user/resources/shared_file_system/v2/share_access_rule.rst
 create mode 100644 doc/source/user/resources/shared_file_system/v2/share_group.rst
 create mode 100644 doc/source/user/resources/shared_file_system/v2/share_group_snapshot.rst
 create mode 100644 doc/source/user/resources/shared_file_system/v2/share_instance.rst
 create mode 100644 doc/source/user/resources/shared_file_system/v2/share_network.rst
 create mode 100644 doc/source/user/resources/shared_file_system/v2/share_network_subnet.rst
 create mode 100644 doc/source/user/resources/shared_file_system/v2/share_snapshot.rst
 create mode 100644 doc/source/user/resources/shared_file_system/v2/share_snapshot_instance.rst
 create mode 100644 doc/source/user/resources/shared_file_system/v2/storage_pool.rst
 create mode 100644 doc/source/user/resources/shared_file_system/v2/user_message.rst
 create mode 100644 doc/source/user/resources/workflow/index.rst
 create mode 100644 doc/source/user/resources/workflow/v2/crontrigger.rst
 create mode 100644 doc/source/user/resources/workflow/v2/execution.rst
 create mode 100644 doc/source/user/resources/workflow/v2/workflow.rst
 create mode 100644 doc/source/user/service_description.rst
 create mode 100644 doc/source/user/testing/fakes.rst
 create mode 100644 doc/source/user/testing/index.rst
 create mode 100644 doc/source/user/transition_from_profile.rst
 create mode 100644 doc/source/user/utils.rst
 create mode 100644 doc/source/user/warnings.rst
 create mode 100644 docs-requirements.txt
 rename {accelerator => examples}/__init__.py (100%)
 create mode 100644 examples/baremetal/list.py
 create mode 100644 examples/baremetal/provisioning.py
 create mode 100644 examples/cloud/cleanup-servers.py
 create mode 100644 examples/cloud/create-server-dict.py
 create mode 100644 examples/cloud/create-server-name-or-id.py
 create mode 100644 examples/cloud/debug-logging.py
 create mode 100644 examples/cloud/find-an-image.py
 create mode 100644 examples/cloud/http-debug-logging.py
 create mode 100644 examples/cloud/munch-dict-object.py
 create mode 100644 examples/cloud/normalization.py
 create mode 100644 examples/cloud/server-information.py
 create mode 100644 examples/cloud/service-conditional-overrides.py
 create mode 100644 examples/cloud/service-conditionals.py
 create mode 100644 examples/cloud/strict-mode.py
 create mode 100644 examples/cloud/upload-large-object.py
 create mode 100644 examples/cloud/upload-object.py
 create mode 100644 examples/cloud/user-agent.py
 rename {accelerator/v2 => examples/clustering}/__init__.py (100%)
 create mode 100644 examples/clustering/action.py
 create mode 100644 examples/clustering/cluster.py
 create mode 100644 examples/clustering/event.py
 create mode 100644 examples/clustering/node.py
 create mode 100644 examples/clustering/policy.py
 create mode 100644 examples/clustering/policy_type.py
 create mode 100644 examples/clustering/profile.py
 create mode 100644 examples/clustering/profile_type.py
 create mode 100644 examples/clustering/receiver.py
 rename {baremetal => examples/compute}/__init__.py (100%)
 create mode 100644 examples/compute/create.py
 create mode 100644 examples/compute/delete.py
 create mode 100644 examples/compute/find.py
 create mode 100644 examples/compute/list.py
 create mode 100644 examples/connect.py
 rename {baremetal/v1 => examples/dns}/__init__.py (100%)
 create mode 100644 examples/dns/list.py
 rename {baremetal_introspection => examples/identity}/__init__.py (100%)
 create mode 100644 examples/identity/list.py
 rename {baremetal_introspection/v1 => examples/image}/__init__.py (100%)
 create mode 100644 examples/image/create.py
 create mode 100644 examples/image/delete.py
 create mode 100644 examples/image/download.py
 create mode 100644 examples/image/import.py
 create mode 100644 examples/image/list.py
 rename {block_storage => examples/key_manager}/__init__.py (100%)
 create mode 100644 examples/key_manager/create.py
 create mode 100644 examples/key_manager/get.py
 create mode 100644 examples/key_manager/list.py
 rename {block_storage/v2 => examples/network}/__init__.py (100%)
 create mode 100644 examples/network/create.py
 create mode 100644 examples/network/delete.py
 create mode 100644 examples/network/find.py
 create mode 100644 examples/network/list.py
 create mode 100644 examples/network/security_group_rules.py
 rename {block_storage/v3 => examples/shared_file_system}/__init__.py (100%)
 create mode 100644 examples/shared_file_system/availability_zones.py
 create mode 100644 examples/shared_file_system/share_group_snapshots.py
 create mode 100644 examples/shared_file_system/share_instances.py
 create mode 100644 examples/shared_file_system/share_metadata.py
 create mode 100644 examples/shared_file_system/shares.py
 create mode 100644 extras/delete-network.sh
 create mode 100755 extras/run-ansible-tests.sh
 create mode 100644 include-acceptance-regular-user.txt
 rename README.md => openstack/README.md (100%)
 rename __init__.py => openstack/__init__.py (100%)
 rename __main__.py => openstack/__main__.py (100%)
 rename {__pycache__ => openstack/__pycache__}/__init__.cpython-310.pyc (100%)
 rename {__pycache__ => openstack/__pycache__}/__main__.cpython-310.pyc (100%)
 rename {__pycache__ => openstack/__pycache__}/_hacking.cpython-310.pyc (100%)
 rename {__pycache__ => openstack/__pycache__}/_log.cpython-310.pyc (100%)
 rename {__pycache__ => openstack/__pycache__}/_services_mixin.cpython-310.pyc (100%)
 rename {__pycache__ => openstack/__pycache__}/connection.cpython-310.pyc (100%)
 rename {__pycache__ => openstack/__pycache__}/exceptions.cpython-310.pyc (100%)
 rename {__pycache__ => openstack/__pycache__}/format.cpython-310.pyc (100%)
 rename {__pycache__ => openstack/__pycache__}/proxy.cpython-310.pyc (100%)
 rename {__pycache__ => openstack/__pycache__}/resource.cpython-310.pyc (100%)
 rename {__pycache__ => openstack/__pycache__}/service_description.cpython-310.pyc (100%)
 rename {__pycache__ => openstack/__pycache__}/utils.cpython-310.pyc (100%)
 rename {__pycache__ => openstack/__pycache__}/version.cpython-310.pyc (100%)
 rename {__pycache__ => openstack/__pycache__}/warnings.cpython-310.pyc (100%)
 rename _hacking.py => openstack/_hacking.py (100%)
 rename _log.py => openstack/_log.py (100%)
 rename _services_mixin.py => openstack/_services_mixin.py (100%)
 rename {cloud/cmd => openstack/accelerator}/__init__.py (100%)
 rename {accelerator => openstack/accelerator}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {accelerator => openstack/accelerator}/__pycache__/accelerator_service.cpython-310.pyc (100%)
 rename {accelerator => openstack/accelerator}/__pycache__/version.cpython-310.pyc (100%)
 rename {accelerator => openstack/accelerator}/accelerator_service.py (100%)
 rename {cloud/tests => openstack/accelerator/v2}/__init__.py (100%)
 rename {accelerator => openstack/accelerator}/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {accelerator => openstack/accelerator}/v2/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {accelerator => openstack/accelerator}/v2/__pycache__/accelerator_request.cpython-310.pyc (100%)
 rename {accelerator => openstack/accelerator}/v2/__pycache__/deployable.cpython-310.pyc (100%)
 rename {accelerator => openstack/accelerator}/v2/__pycache__/device.cpython-310.pyc (100%)
 rename {accelerator => openstack/accelerator}/v2/__pycache__/device_profile.cpython-310.pyc (100%)
 rename {accelerator => openstack/accelerator}/v2/_proxy.py (100%)
 rename {accelerator => openstack/accelerator}/v2/accelerator_request.py (100%)
 rename {accelerator => openstack/accelerator}/v2/deployable.py (100%)
 rename {accelerator => openstack/accelerator}/v2/device.py (100%)
 rename {accelerator => openstack/accelerator}/v2/device_profile.py (100%)
 rename {accelerator => openstack/accelerator}/version.py (100%)
 rename {clustering => openstack/baremetal}/__init__.py (100%)
 rename {baremetal => openstack/baremetal}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/__pycache__/baremetal_service.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/__pycache__/configdrive.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/__pycache__/version.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/baremetal_service.py (100%)
 rename {baremetal => openstack/baremetal}/configdrive.py (100%)
 rename {clustering => openstack/baremetal}/v1/__init__.py (100%)
 rename {baremetal => openstack/baremetal}/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/v1/__pycache__/_common.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/v1/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/v1/__pycache__/allocation.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/v1/__pycache__/chassis.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/v1/__pycache__/conductor.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/v1/__pycache__/deploy_templates.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/v1/__pycache__/driver.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/v1/__pycache__/node.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/v1/__pycache__/port.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/v1/__pycache__/port_group.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/v1/__pycache__/volume_connector.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/v1/__pycache__/volume_target.cpython-310.pyc (100%)
 rename {baremetal => openstack/baremetal}/v1/_common.py (100%)
 rename {baremetal => openstack/baremetal}/v1/_proxy.py (100%)
 rename {baremetal => openstack/baremetal}/v1/allocation.py (100%)
 rename {baremetal => openstack/baremetal}/v1/chassis.py (100%)
 rename {baremetal => openstack/baremetal}/v1/conductor.py (100%)
 rename {baremetal => openstack/baremetal}/v1/deploy_templates.py (100%)
 rename {baremetal => openstack/baremetal}/v1/driver.py (100%)
 rename {baremetal => openstack/baremetal}/v1/node.py (100%)
 rename {baremetal => openstack/baremetal}/v1/port.py (100%)
 rename {baremetal => openstack/baremetal}/v1/port_group.py (100%)
 rename {baremetal => openstack/baremetal}/v1/volume_connector.py (100%)
 rename {baremetal => openstack/baremetal}/v1/volume_target.py (100%)
 rename {baremetal => openstack/baremetal}/version.py (100%)
 rename {common => openstack/baremetal_introspection}/__init__.py (100%)
 rename {baremetal_introspection => openstack/baremetal_introspection}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {baremetal_introspection => openstack/baremetal_introspection}/__pycache__/baremetal_introspection_service.cpython-310.pyc (100%)
 rename {baremetal_introspection => openstack/baremetal_introspection}/baremetal_introspection_service.py (100%)
 rename {compute => openstack/baremetal_introspection/v1}/__init__.py (100%)
 rename {baremetal_introspection => openstack/baremetal_introspection}/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {baremetal_introspection => openstack/baremetal_introspection}/v1/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {baremetal_introspection => openstack/baremetal_introspection}/v1/__pycache__/introspection.cpython-310.pyc (100%)
 rename {baremetal_introspection => openstack/baremetal_introspection}/v1/__pycache__/introspection_rule.cpython-310.pyc (100%)
 rename {baremetal_introspection => openstack/baremetal_introspection}/v1/_proxy.py (100%)
 rename {baremetal_introspection => openstack/baremetal_introspection}/v1/introspection.py (100%)
 rename {baremetal_introspection => openstack/baremetal_introspection}/v1/introspection_rule.py (100%)
 rename {compute/v2 => openstack/block_storage}/__init__.py (100%)
 rename {block_storage => openstack/block_storage}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/__pycache__/_base_proxy.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/__pycache__/block_storage_service.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/_base_proxy.py (100%)
 rename {block_storage => openstack/block_storage}/block_storage_service.py (100%)
 rename {container_infrastructure_management => openstack/block_storage/v2}/__init__.py (100%)
 rename {block_storage => openstack/block_storage}/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v2/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v2/__pycache__/backup.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v2/__pycache__/capabilities.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v2/__pycache__/extension.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v2/__pycache__/limits.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v2/__pycache__/quota_set.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v2/__pycache__/snapshot.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v2/__pycache__/stats.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v2/__pycache__/type.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v2/__pycache__/volume.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v2/_proxy.py (100%)
 rename {block_storage => openstack/block_storage}/v2/backup.py (100%)
 rename {block_storage => openstack/block_storage}/v2/capabilities.py (100%)
 rename {block_storage => openstack/block_storage}/v2/extension.py (100%)
 rename {block_storage => openstack/block_storage}/v2/limits.py (100%)
 rename {block_storage => openstack/block_storage}/v2/quota_set.py (100%)
 rename {block_storage => openstack/block_storage}/v2/snapshot.py (100%)
 rename {block_storage => openstack/block_storage}/v2/stats.py (100%)
 rename {block_storage => openstack/block_storage}/v2/type.py (100%)
 rename {block_storage => openstack/block_storage}/v2/volume.py (100%)
 rename {container_infrastructure_management/v1 => openstack/block_storage/v3}/__init__.py (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/__init__.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/attachment.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/availability_zone.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/backup.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/block_storage_summary.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/capabilities.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/extension.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/group.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/group_snapshot.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/group_type.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/limits.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/quota_set.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/resource_filter.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/service.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/snapshot.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/stats.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/transfer.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/type.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/__pycache__/volume.cpython-310.pyc (100%)
 rename {block_storage => openstack/block_storage}/v3/_proxy.py (100%)
 rename {block_storage => openstack/block_storage}/v3/attachment.py (100%)
 rename {block_storage => openstack/block_storage}/v3/availability_zone.py (100%)
 rename {block_storage => openstack/block_storage}/v3/backup.py (100%)
 rename {block_storage => openstack/block_storage}/v3/block_storage_summary.py (100%)
 rename {block_storage => openstack/block_storage}/v3/capabilities.py (100%)
 rename {block_storage => openstack/block_storage}/v3/extension.py (100%)
 rename {block_storage => openstack/block_storage}/v3/group.py (100%)
 rename {block_storage => openstack/block_storage}/v3/group_snapshot.py (100%)
 rename {block_storage => openstack/block_storage}/v3/group_type.py (100%)
 rename {block_storage => openstack/block_storage}/v3/limits.py (100%)
 rename {block_storage => openstack/block_storage}/v3/quota_set.py (100%)
 rename {block_storage => openstack/block_storage}/v3/resource_filter.py (100%)
 rename {block_storage => openstack/block_storage}/v3/service.py (100%)
 rename {block_storage => openstack/block_storage}/v3/snapshot.py (100%)
 rename {block_storage => openstack/block_storage}/v3/stats.py (100%)
 rename {block_storage => openstack/block_storage}/v3/transfer.py (100%)
 rename {block_storage => openstack/block_storage}/v3/type.py (100%)
 rename {block_storage => openstack/block_storage}/v3/volume.py (100%)
 rename {cloud => openstack/cloud}/__init__.py (100%)
 rename {cloud => openstack/cloud}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_accelerator.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_baremetal.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_block_storage.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_coe.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_compute.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_dns.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_floating_ip.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_identity.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_image.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_network.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_network_common.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_object_store.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_orchestration.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_security_group.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_shared_file_system.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/_utils.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/exc.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/inventory.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/meta.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/__pycache__/openstackcloud.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/_accelerator.py (100%)
 rename {cloud => openstack/cloud}/_baremetal.py (100%)
 rename {cloud => openstack/cloud}/_block_storage.py (100%)
 rename {cloud => openstack/cloud}/_coe.py (100%)
 rename {cloud => openstack/cloud}/_compute.py (100%)
 rename {cloud => openstack/cloud}/_dns.py (100%)
 rename {cloud => openstack/cloud}/_floating_ip.py (100%)
 rename {cloud => openstack/cloud}/_identity.py (100%)
 rename {cloud => openstack/cloud}/_image.py (100%)
 rename {cloud => openstack/cloud}/_network.py (100%)
 rename {cloud => openstack/cloud}/_network_common.py (100%)
 rename {cloud => openstack/cloud}/_object_store.py (100%)
 rename {cloud => openstack/cloud}/_orchestration.py (100%)
 rename {cloud => openstack/cloud}/_security_group.py (100%)
 rename {cloud => openstack/cloud}/_shared_file_system.py (100%)
 rename {cloud => openstack/cloud}/_utils.py (100%)
 rename {database => openstack/cloud/cmd}/__init__.py (100%)
 rename {cloud => openstack/cloud}/cmd/__pycache__/__init__.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/cmd/__pycache__/inventory.cpython-310.pyc (100%)
 rename {cloud => openstack/cloud}/cmd/inventory.py (100%)
 rename {cloud => openstack/cloud}/exc.py (100%)
 rename {cloud => openstack/cloud}/inventory.py (100%)
 rename {cloud => openstack/cloud}/meta.py (100%)
 rename {cloud => openstack/cloud}/openstackcloud.py (100%)
 rename {database/v1 => openstack/cloud/tests}/__init__.py (100%)
 rename {cloud => openstack/cloud}/tests/__pycache__/__init__.cpython-310.pyc (100%)
 rename {dns => openstack/clustering}/__init__.py (100%)
 rename {clustering => openstack/clustering}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/__pycache__/clustering_service.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/__pycache__/version.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/clustering_service.py (100%)
 rename {dns/v2 => openstack/clustering/v1}/__init__.py (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/_async_resource.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/action.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/build_info.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/cluster.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/cluster_attr.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/cluster_policy.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/event.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/node.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/policy.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/policy_type.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/profile.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/profile_type.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/receiver.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/__pycache__/service.cpython-310.pyc (100%)
 rename {clustering => openstack/clustering}/v1/_async_resource.py (100%)
 rename {clustering => openstack/clustering}/v1/_proxy.py (100%)
 rename {clustering => openstack/clustering}/v1/action.py (100%)
 rename {clustering => openstack/clustering}/v1/build_info.py (100%)
 rename {clustering => openstack/clustering}/v1/cluster.py (100%)
 rename {clustering => openstack/clustering}/v1/cluster_attr.py (100%)
 rename {clustering => openstack/clustering}/v1/cluster_policy.py (100%)
 rename {clustering => openstack/clustering}/v1/event.py (100%)
 rename {clustering => openstack/clustering}/v1/node.py (100%)
 rename {clustering => openstack/clustering}/v1/policy.py (100%)
 rename {clustering => openstack/clustering}/v1/policy_type.py (100%)
 rename {clustering => openstack/clustering}/v1/profile.py (100%)
 rename {clustering => openstack/clustering}/v1/profile_type.py (100%)
 rename {clustering => openstack/clustering}/v1/receiver.py (100%)
 rename {clustering => openstack/clustering}/v1/service.py (100%)
 rename {clustering => openstack/clustering}/version.py (100%)
 rename {fixture => openstack/common}/__init__.py (100%)
 rename {common => openstack/common}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {common => openstack/common}/__pycache__/metadata.cpython-310.pyc (100%)
 rename {common => openstack/common}/__pycache__/quota_set.cpython-310.pyc (100%)
 rename {common => openstack/common}/__pycache__/tag.cpython-310.pyc (100%)
 rename {common => openstack/common}/metadata.py (100%)
 rename {common => openstack/common}/quota_set.py (100%)
 rename {common => openstack/common}/tag.py (100%)
 rename {identity => openstack/compute}/__init__.py (100%)
 rename {compute => openstack/compute}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/__pycache__/compute_service.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/__pycache__/version.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/compute_service.py (100%)
 rename {identity => openstack/compute}/v2/__init__.py (100%)
 rename {compute => openstack/compute}/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/aggregate.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/availability_zone.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/extension.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/flavor.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/hypervisor.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/image.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/keypair.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/limits.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/migration.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/quota_set.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/server.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/server_action.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/server_diagnostics.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/server_group.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/server_interface.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/server_ip.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/server_migration.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/server_remote_console.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/service.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/usage.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/__pycache__/volume_attachment.cpython-310.pyc (100%)
 rename {compute => openstack/compute}/v2/_proxy.py (100%)
 rename {compute => openstack/compute}/v2/aggregate.py (100%)
 rename {compute => openstack/compute}/v2/availability_zone.py (100%)
 rename {compute => openstack/compute}/v2/extension.py (100%)
 rename {compute => openstack/compute}/v2/flavor.py (100%)
 rename {compute => openstack/compute}/v2/hypervisor.py (100%)
 rename {compute => openstack/compute}/v2/image.py (100%)
 rename {compute => openstack/compute}/v2/keypair.py (100%)
 rename {compute => openstack/compute}/v2/limits.py (100%)
 rename {compute => openstack/compute}/v2/migration.py (100%)
 rename {compute => openstack/compute}/v2/quota_set.py (100%)
 rename {compute => openstack/compute}/v2/server.py (100%)
 rename {compute => openstack/compute}/v2/server_action.py (100%)
 rename {compute => openstack/compute}/v2/server_diagnostics.py (100%)
 rename {compute => openstack/compute}/v2/server_group.py (100%)
 rename {compute => openstack/compute}/v2/server_interface.py (100%)
 rename {compute => openstack/compute}/v2/server_ip.py (100%)
 rename {compute => openstack/compute}/v2/server_migration.py (100%)
 rename {compute => openstack/compute}/v2/server_remote_console.py (100%)
 rename {compute => openstack/compute}/v2/service.py (100%)
 rename {compute => openstack/compute}/v2/usage.py (100%)
 rename {compute => openstack/compute}/v2/volume_attachment.py (100%)
 rename {compute => openstack/compute}/version.py (100%)
 rename {config => openstack/config}/__init__.py (100%)
 rename {config => openstack/config}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {config => openstack/config}/__pycache__/_util.cpython-310.pyc (100%)
 rename {config => openstack/config}/__pycache__/cloud_config.cpython-310.pyc (100%)
 rename {config => openstack/config}/__pycache__/cloud_region.cpython-310.pyc (100%)
 rename {config => openstack/config}/__pycache__/defaults.cpython-310.pyc (100%)
 rename {config => openstack/config}/__pycache__/exceptions.cpython-310.pyc (100%)
 rename {config => openstack/config}/__pycache__/loader.cpython-310.pyc (100%)
 rename {config => openstack/config}/_util.py (100%)
 rename {config => openstack/config}/cloud_config.py (100%)
 rename {config => openstack/config}/cloud_region.py (100%)
 rename {config => openstack/config}/defaults.json (100%)
 rename {config => openstack/config}/defaults.py (100%)
 rename {config => openstack/config}/exceptions.py (100%)
 rename {config => openstack/config}/loader.py (100%)
 rename {config => openstack/config}/schema.json (100%)
 rename {config => openstack/config}/vendor-schema.json (100%)
 rename {config => openstack/config}/vendors/__init__.py (100%)
 rename {config => openstack/config}/vendors/__pycache__/__init__.cpython-310.pyc (100%)
 rename {config => openstack/config}/vendors/auro.json (100%)
 rename {config => openstack/config}/vendors/betacloud.json (100%)
 rename {config => openstack/config}/vendors/bluebox.json (100%)
 rename {config => openstack/config}/vendors/catalyst.json (100%)
 rename {config => openstack/config}/vendors/citycloud.json (100%)
 rename {config => openstack/config}/vendors/conoha.json (100%)
 rename {config => openstack/config}/vendors/dreamcompute.json (100%)
 rename {config => openstack/config}/vendors/elastx.json (100%)
 rename {config => openstack/config}/vendors/entercloudsuite.json (100%)
 rename {config => openstack/config}/vendors/fuga.json (100%)
 rename {config => openstack/config}/vendors/ibmcloud.json (100%)
 rename {config => openstack/config}/vendors/internap.json (100%)
 rename {config => openstack/config}/vendors/limestonenetworks.yaml (100%)
 rename {config => openstack/config}/vendors/otc-swiss.json (100%)
 rename {config => openstack/config}/vendors/otc.json (100%)
 rename {config => openstack/config}/vendors/ovh-us.json (100%)
 rename {config => openstack/config}/vendors/ovh.json (100%)
 rename {config => openstack/config}/vendors/rackspace.json (100%)
 rename {config => openstack/config}/vendors/switchengines.json (100%)
 rename {config => openstack/config}/vendors/ultimum.json (100%)
 rename {config => openstack/config}/vendors/unitedstack.json (100%)
 rename {config => openstack/config}/vendors/vexxhost.json (100%)
 rename {config => openstack/config}/vendors/zetta.json (100%)
 rename connection.py => openstack/connection.py (100%)
 rename {identity/v3 => openstack/container_infrastructure_management}/__init__.py (100%)
 rename {container_infrastructure_management => openstack/container_infrastructure_management}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {container_infrastructure_management => openstack/container_infrastructure_management}/__pycache__/container_infrastructure_management_service.cpython-310.pyc (100%)
 rename {container_infrastructure_management => openstack/container_infrastructure_management}/container_infrastructure_management_service.py (100%)
 rename {image => openstack/container_infrastructure_management/v1}/__init__.py (100%)
 rename {container_infrastructure_management => openstack/container_infrastructure_management}/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {container_infrastructure_management => openstack/container_infrastructure_management}/v1/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {container_infrastructure_management => openstack/container_infrastructure_management}/v1/__pycache__/cluster.cpython-310.pyc (100%)
 rename {container_infrastructure_management => openstack/container_infrastructure_management}/v1/__pycache__/cluster_certificate.cpython-310.pyc (100%)
 rename {container_infrastructure_management => openstack/container_infrastructure_management}/v1/__pycache__/cluster_template.cpython-310.pyc (100%)
 rename {container_infrastructure_management => openstack/container_infrastructure_management}/v1/__pycache__/service.cpython-310.pyc (100%)
 rename {container_infrastructure_management => openstack/container_infrastructure_management}/v1/_proxy.py (100%)
 rename {container_infrastructure_management => openstack/container_infrastructure_management}/v1/cluster.py (100%)
 rename {container_infrastructure_management => openstack/container_infrastructure_management}/v1/cluster_certificate.py (100%)
 rename {container_infrastructure_management => openstack/container_infrastructure_management}/v1/cluster_template.py (100%)
 rename {container_infrastructure_management => openstack/container_infrastructure_management}/v1/service.py (100%)
 rename {image/v1 => openstack/database}/__init__.py (100%)
 rename {database => openstack/database}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {database => openstack/database}/__pycache__/database_service.cpython-310.pyc (100%)
 rename {database => openstack/database}/database_service.py (100%)
 rename {image/v2 => openstack/database/v1}/__init__.py (100%)
 rename {database => openstack/database}/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {database => openstack/database}/v1/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {database => openstack/database}/v1/__pycache__/database.cpython-310.pyc (100%)
 rename {database => openstack/database}/v1/__pycache__/flavor.cpython-310.pyc (100%)
 rename {database => openstack/database}/v1/__pycache__/instance.cpython-310.pyc (100%)
 rename {database => openstack/database}/v1/__pycache__/user.cpython-310.pyc (100%)
 rename {database => openstack/database}/v1/_proxy.py (100%)
 rename {database => openstack/database}/v1/database.py (100%)
 rename {database => openstack/database}/v1/flavor.py (100%)
 rename {database => openstack/database}/v1/instance.py (100%)
 rename {database => openstack/database}/v1/user.py (100%)
 rename {instance_ha => openstack/dns}/__init__.py (100%)
 rename {dns => openstack/dns}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {dns => openstack/dns}/__pycache__/dns_service.cpython-310.pyc (100%)
 rename {dns => openstack/dns}/__pycache__/version.cpython-310.pyc (100%)
 rename {dns => openstack/dns}/dns_service.py (100%)
 rename {instance_ha/v1 => openstack/dns/v2}/__init__.py (100%)
 rename {dns => openstack/dns}/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {dns => openstack/dns}/v2/__pycache__/_base.cpython-310.pyc (100%)
 rename {dns => openstack/dns}/v2/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {dns => openstack/dns}/v2/__pycache__/floating_ip.cpython-310.pyc (100%)
 rename {dns => openstack/dns}/v2/__pycache__/recordset.cpython-310.pyc (100%)
 rename {dns => openstack/dns}/v2/__pycache__/zone.cpython-310.pyc (100%)
 rename {dns => openstack/dns}/v2/__pycache__/zone_export.cpython-310.pyc (100%)
 rename {dns => openstack/dns}/v2/__pycache__/zone_import.cpython-310.pyc (100%)
 rename {dns => openstack/dns}/v2/__pycache__/zone_share.cpython-310.pyc (100%)
 rename {dns => openstack/dns}/v2/__pycache__/zone_transfer.cpython-310.pyc (100%)
 rename {dns => openstack/dns}/v2/_base.py (100%)
 rename {dns => openstack/dns}/v2/_proxy.py (100%)
 rename {dns => openstack/dns}/v2/floating_ip.py (100%)
 rename {dns => openstack/dns}/v2/recordset.py (100%)
 rename {dns => openstack/dns}/v2/zone.py (100%)
 rename {dns => openstack/dns}/v2/zone_export.py (100%)
 rename {dns => openstack/dns}/v2/zone_import.py (100%)
 rename {dns => openstack/dns}/v2/zone_share.py (100%)
 rename {dns => openstack/dns}/v2/zone_transfer.py (100%)
 rename {dns => openstack/dns}/version.py (100%)
 rename exceptions.py => openstack/exceptions.py (100%)
 rename {key_manager => openstack/fixture}/__init__.py (100%)
 rename {fixture => openstack/fixture}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {fixture => openstack/fixture}/__pycache__/connection.cpython-310.pyc (100%)
 rename {fixture => openstack/fixture}/connection.py (100%)
 rename format.py => openstack/format.py (100%)
 rename {key_manager/v1 => openstack/identity}/__init__.py (100%)
 rename {identity => openstack/identity}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/__pycache__/identity_service.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/__pycache__/version.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/identity_service.py (100%)
 rename {load_balancer => openstack/identity/v2}/__init__.py (100%)
 rename {identity => openstack/identity}/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v2/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v2/__pycache__/extension.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v2/__pycache__/role.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v2/__pycache__/tenant.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v2/__pycache__/user.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v2/_proxy.py (100%)
 rename {identity => openstack/identity}/v2/extension.py (100%)
 rename {identity => openstack/identity}/v2/role.py (100%)
 rename {identity => openstack/identity}/v2/tenant.py (100%)
 rename {identity => openstack/identity}/v2/user.py (100%)
 rename {load_balancer/v2 => openstack/identity/v3}/__init__.py (100%)
 rename {identity => openstack/identity}/v3/__pycache__/__init__.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/application_credential.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/credential.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/domain.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/domain_config.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/endpoint.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/federation_protocol.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/group.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/identity_provider.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/limit.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/mapping.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/policy.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/project.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/region.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/registered_limit.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/role.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/role_assignment.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/role_domain_group_assignment.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/role_domain_user_assignment.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/role_project_group_assignment.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/role_project_user_assignment.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/role_system_group_assignment.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/role_system_user_assignment.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/service.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/system.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/trust.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/__pycache__/user.cpython-310.pyc (100%)
 rename {identity => openstack/identity}/v3/_proxy.py (100%)
 rename {identity => openstack/identity}/v3/application_credential.py (100%)
 rename {identity => openstack/identity}/v3/credential.py (100%)
 rename {identity => openstack/identity}/v3/domain.py (100%)
 rename {identity => openstack/identity}/v3/domain_config.py (100%)
 rename {identity => openstack/identity}/v3/endpoint.py (100%)
 rename {identity => openstack/identity}/v3/federation_protocol.py (100%)
 rename {identity => openstack/identity}/v3/group.py (100%)
 rename {identity => openstack/identity}/v3/identity_provider.py (100%)
 rename {identity => openstack/identity}/v3/limit.py (100%)
 rename {identity => openstack/identity}/v3/mapping.py (100%)
 rename {identity => openstack/identity}/v3/policy.py (100%)
 rename {identity => openstack/identity}/v3/project.py (100%)
 rename {identity => openstack/identity}/v3/region.py (100%)
 rename {identity => openstack/identity}/v3/registered_limit.py (100%)
 rename {identity => openstack/identity}/v3/role.py (100%)
 rename {identity => openstack/identity}/v3/role_assignment.py (100%)
 rename {identity => openstack/identity}/v3/role_domain_group_assignment.py (100%)
 rename {identity => openstack/identity}/v3/role_domain_user_assignment.py (100%)
 rename {identity => openstack/identity}/v3/role_project_group_assignment.py (100%)
 rename {identity => openstack/identity}/v3/role_project_user_assignment.py (100%)
 rename {identity => openstack/identity}/v3/role_system_group_assignment.py (100%)
 rename {identity => openstack/identity}/v3/role_system_user_assignment.py (100%)
 rename {identity => openstack/identity}/v3/service.py (100%)
 rename {identity => openstack/identity}/v3/system.py (100%)
 rename {identity => openstack/identity}/v3/trust.py (100%)
 rename {identity => openstack/identity}/v3/user.py (100%)
 rename {identity => openstack/identity}/version.py (100%)
 rename {message => openstack/image}/__init__.py (100%)
 rename {image => openstack/image}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {image => openstack/image}/__pycache__/_download.cpython-310.pyc (100%)
 rename {image => openstack/image}/__pycache__/image_service.cpython-310.pyc (100%)
 rename {image => openstack/image}/__pycache__/image_signer.cpython-310.pyc (100%)
 rename {image => openstack/image}/__pycache__/iterable_chunked_file.cpython-310.pyc (100%)
 rename {image => openstack/image}/_download.py (100%)
 rename {image => openstack/image}/image_service.py (100%)
 rename {image => openstack/image}/image_signer.py (100%)
 rename {image => openstack/image}/iterable_chunked_file.py (100%)
 rename {message/v2 => openstack/image/v1}/__init__.py (100%)
 rename {image => openstack/image}/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {image => openstack/image}/v1/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {image => openstack/image}/v1/__pycache__/image.cpython-310.pyc (100%)
 rename {image => openstack/image}/v1/_proxy.py (100%)
 rename {image => openstack/image}/v1/image.py (100%)
 rename {network => openstack/image/v2}/__init__.py (100%)
 rename {image => openstack/image}/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {image => openstack/image}/v2/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {image => openstack/image}/v2/__pycache__/cache.cpython-310.pyc (100%)
 rename {image => openstack/image}/v2/__pycache__/image.cpython-310.pyc (100%)
 rename {image => openstack/image}/v2/__pycache__/member.cpython-310.pyc (100%)
 rename {image => openstack/image}/v2/__pycache__/metadef_namespace.cpython-310.pyc (100%)
 rename {image => openstack/image}/v2/__pycache__/metadef_object.cpython-310.pyc (100%)
 rename {image => openstack/image}/v2/__pycache__/metadef_property.cpython-310.pyc (100%)
 rename {image => openstack/image}/v2/__pycache__/metadef_resource_type.cpython-310.pyc (100%)
 rename {image => openstack/image}/v2/__pycache__/metadef_schema.cpython-310.pyc (100%)
 rename {image => openstack/image}/v2/__pycache__/schema.cpython-310.pyc (100%)
 rename {image => openstack/image}/v2/__pycache__/service_info.cpython-310.pyc (100%)
 rename {image => openstack/image}/v2/__pycache__/task.cpython-310.pyc (100%)
 rename {image => openstack/image}/v2/_proxy.py (100%)
 rename {image => openstack/image}/v2/cache.py (100%)
 rename {image => openstack/image}/v2/image.py (100%)
 rename {image => openstack/image}/v2/member.py (100%)
 rename {image => openstack/image}/v2/metadef_namespace.py (100%)
 rename {image => openstack/image}/v2/metadef_object.py (100%)
 rename {image => openstack/image}/v2/metadef_property.py (100%)
 rename {image => openstack/image}/v2/metadef_resource_type.py (100%)
 rename {image => openstack/image}/v2/metadef_schema.py (100%)
 rename {image => openstack/image}/v2/schema.py (100%)
 rename {image => openstack/image}/v2/service_info.py (100%)
 rename {image => openstack/image}/v2/task.py (100%)
 rename {network/v2 => openstack/instance_ha}/__init__.py (100%)
 rename {instance_ha => openstack/instance_ha}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {instance_ha => openstack/instance_ha}/__pycache__/instance_ha_service.cpython-310.pyc (100%)
 rename {instance_ha => openstack/instance_ha}/instance_ha_service.py (100%)
 rename {object_store => openstack/instance_ha/v1}/__init__.py (100%)
 rename {instance_ha => openstack/instance_ha}/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {instance_ha => openstack/instance_ha}/v1/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {instance_ha => openstack/instance_ha}/v1/__pycache__/host.cpython-310.pyc (100%)
 rename {instance_ha => openstack/instance_ha}/v1/__pycache__/notification.cpython-310.pyc (100%)
 rename {instance_ha => openstack/instance_ha}/v1/__pycache__/segment.cpython-310.pyc (100%)
 rename {instance_ha => openstack/instance_ha}/v1/__pycache__/vmove.cpython-310.pyc (100%)
 rename {instance_ha => openstack/instance_ha}/v1/_proxy.py (100%)
 rename {instance_ha => openstack/instance_ha}/v1/host.py (100%)
 rename {instance_ha => openstack/instance_ha}/v1/notification.py (100%)
 rename {instance_ha => openstack/instance_ha}/v1/segment.py (100%)
 rename {instance_ha => openstack/instance_ha}/v1/vmove.py (100%)
 rename {object_store/v1 => openstack/key_manager}/__init__.py (100%)
 rename {key_manager => openstack/key_manager}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {key_manager => openstack/key_manager}/__pycache__/key_manager_service.cpython-310.pyc (100%)
 rename {key_manager => openstack/key_manager}/key_manager_service.py (100%)
 rename {orchestration => openstack/key_manager/v1}/__init__.py (100%)
 rename {key_manager => openstack/key_manager}/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {key_manager => openstack/key_manager}/v1/__pycache__/_format.cpython-310.pyc (100%)
 rename {key_manager => openstack/key_manager}/v1/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {key_manager => openstack/key_manager}/v1/__pycache__/container.cpython-310.pyc (100%)
 rename {key_manager => openstack/key_manager}/v1/__pycache__/order.cpython-310.pyc (100%)
 rename {key_manager => openstack/key_manager}/v1/__pycache__/secret.cpython-310.pyc (100%)
 rename {key_manager => openstack/key_manager}/v1/_format.py (100%)
 rename {key_manager => openstack/key_manager}/v1/_proxy.py (100%)
 rename {key_manager => openstack/key_manager}/v1/container.py (100%)
 rename {key_manager => openstack/key_manager}/v1/order.py (100%)
 rename {key_manager => openstack/key_manager}/v1/secret.py (100%)
 rename {orchestration/util => openstack/load_balancer}/__init__.py (100%)
 rename {load_balancer => openstack/load_balancer}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/__pycache__/load_balancer_service.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/__pycache__/version.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/load_balancer_service.py (100%)
 rename {orchestration/v1 => openstack/load_balancer/v2}/__init__.py (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/amphora.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/availability_zone.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/availability_zone_profile.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/flavor.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/flavor_profile.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/health_monitor.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/l7_policy.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/l7_rule.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/listener.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/load_balancer.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/member.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/pool.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/provider.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/__pycache__/quota.cpython-310.pyc (100%)
 rename {load_balancer => openstack/load_balancer}/v2/_proxy.py (100%)
 rename {load_balancer => openstack/load_balancer}/v2/amphora.py (100%)
 rename {load_balancer => openstack/load_balancer}/v2/availability_zone.py (100%)
 rename {load_balancer => openstack/load_balancer}/v2/availability_zone_profile.py (100%)
 rename {load_balancer => openstack/load_balancer}/v2/flavor.py (100%)
 rename {load_balancer => openstack/load_balancer}/v2/flavor_profile.py (100%)
 rename {load_balancer => openstack/load_balancer}/v2/health_monitor.py (100%)
 rename {load_balancer => openstack/load_balancer}/v2/l7_policy.py (100%)
 rename {load_balancer => openstack/load_balancer}/v2/l7_rule.py (100%)
 rename {load_balancer => openstack/load_balancer}/v2/listener.py (100%)
 rename {load_balancer => openstack/load_balancer}/v2/load_balancer.py (100%)
 rename {load_balancer => openstack/load_balancer}/v2/member.py (100%)
 rename {load_balancer => openstack/load_balancer}/v2/pool.py (100%)
 rename {load_balancer => openstack/load_balancer}/v2/provider.py (100%)
 rename {load_balancer => openstack/load_balancer}/v2/quota.py (100%)
 rename {load_balancer => openstack/load_balancer}/version.py (100%)
 rename {placement => openstack/message}/__init__.py (100%)
 rename {message => openstack/message}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {message => openstack/message}/__pycache__/message_service.cpython-310.pyc (100%)
 rename {message => openstack/message}/__pycache__/version.cpython-310.pyc (100%)
 rename {message => openstack/message}/message_service.py (100%)
 rename {placement/v1 => openstack/message/v2}/__init__.py (100%)
 rename {message => openstack/message}/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {message => openstack/message}/v2/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {message => openstack/message}/v2/__pycache__/claim.cpython-310.pyc (100%)
 rename {message => openstack/message}/v2/__pycache__/message.cpython-310.pyc (100%)
 rename {message => openstack/message}/v2/__pycache__/queue.cpython-310.pyc (100%)
 rename {message => openstack/message}/v2/__pycache__/subscription.cpython-310.pyc (100%)
 rename {message => openstack/message}/v2/_proxy.py (100%)
 rename {message => openstack/message}/v2/claim.py (100%)
 rename {message => openstack/message}/v2/message.py (100%)
 rename {message => openstack/message}/v2/queue.py (100%)
 rename {message => openstack/message}/v2/subscription.py (100%)
 rename {message => openstack/message}/version.py (100%)
 rename {shared_file_system => openstack/network}/__init__.py (100%)
 rename {network => openstack/network}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {network => openstack/network}/__pycache__/network_service.cpython-310.pyc (100%)
 rename {network => openstack/network}/__pycache__/version.cpython-310.pyc (100%)
 rename {network => openstack/network}/network_service.py (100%)
 rename {shared_file_system => openstack/network}/v2/__init__.py (100%)
 rename {network => openstack/network}/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/_base.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/address_group.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/address_scope.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/agent.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/auto_allocated_topology.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/availability_zone.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/bgp_peer.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/bgp_speaker.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/bgpvpn.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/bgpvpn_network_association.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/bgpvpn_port_association.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/bgpvpn_router_association.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/default_security_group_rule.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/extension.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/firewall_group.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/firewall_policy.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/firewall_rule.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/flavor.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/floating_ip.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/health_monitor.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/l3_conntrack_helper.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/listener.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/load_balancer.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/local_ip.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/local_ip_association.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/metering_label.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/metering_label_rule.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/ndp_proxy.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/network.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/network_ip_availability.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/network_segment_range.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/pool.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/pool_member.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/port.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/port_forwarding.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/qos_bandwidth_limit_rule.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/qos_dscp_marking_rule.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/qos_minimum_bandwidth_rule.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/qos_minimum_packet_rate_rule.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/qos_policy.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/qos_rule_type.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/quota.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/rbac_policy.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/router.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/security_group.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/security_group_rule.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/segment.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/service_profile.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/service_provider.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/sfc_flow_classifier.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/sfc_port_chain.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/sfc_port_pair.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/sfc_port_pair_group.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/sfc_service_graph.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/subnet.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/subnet_pool.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/tap_flow.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/tap_service.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/trunk.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/vpn_endpoint_group.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/vpn_ike_policy.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/vpn_ipsec_policy.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/vpn_ipsec_site_connection.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/__pycache__/vpn_service.cpython-310.pyc (100%)
 rename {network => openstack/network}/v2/_base.py (100%)
 rename {network => openstack/network}/v2/_proxy.py (100%)
 rename {network => openstack/network}/v2/address_group.py (100%)
 rename {network => openstack/network}/v2/address_scope.py (100%)
 rename {network => openstack/network}/v2/agent.py (100%)
 rename {network => openstack/network}/v2/auto_allocated_topology.py (100%)
 rename {network => openstack/network}/v2/availability_zone.py (100%)
 rename {network => openstack/network}/v2/bgp_peer.py (100%)
 rename {network => openstack/network}/v2/bgp_speaker.py (100%)
 rename {network => openstack/network}/v2/bgpvpn.py (100%)
 rename {network => openstack/network}/v2/bgpvpn_network_association.py (100%)
 rename {network => openstack/network}/v2/bgpvpn_port_association.py (100%)
 rename {network => openstack/network}/v2/bgpvpn_router_association.py (100%)
 rename {network => openstack/network}/v2/default_security_group_rule.py (100%)
 rename {network => openstack/network}/v2/extension.py (100%)
 rename {network => openstack/network}/v2/firewall_group.py (100%)
 rename {network => openstack/network}/v2/firewall_policy.py (100%)
 rename {network => openstack/network}/v2/firewall_rule.py (100%)
 rename {network => openstack/network}/v2/flavor.py (100%)
 rename {network => openstack/network}/v2/floating_ip.py (100%)
 rename {network => openstack/network}/v2/health_monitor.py (100%)
 rename {network => openstack/network}/v2/l3_conntrack_helper.py (100%)
 rename {network => openstack/network}/v2/listener.py (100%)
 rename {network => openstack/network}/v2/load_balancer.py (100%)
 rename {network => openstack/network}/v2/local_ip.py (100%)
 rename {network => openstack/network}/v2/local_ip_association.py (100%)
 rename {network => openstack/network}/v2/metering_label.py (100%)
 rename {network => openstack/network}/v2/metering_label_rule.py (100%)
 rename {network => openstack/network}/v2/ndp_proxy.py (100%)
 rename {network => openstack/network}/v2/network.py (100%)
 rename {network => openstack/network}/v2/network_ip_availability.py (100%)
 rename {network => openstack/network}/v2/network_segment_range.py (100%)
 rename {network => openstack/network}/v2/pool.py (100%)
 rename {network => openstack/network}/v2/pool_member.py (100%)
 rename {network => openstack/network}/v2/port.py (100%)
 rename {network => openstack/network}/v2/port_forwarding.py (100%)
 rename {network => openstack/network}/v2/qos_bandwidth_limit_rule.py (100%)
 rename {network => openstack/network}/v2/qos_dscp_marking_rule.py (100%)
 rename {network => openstack/network}/v2/qos_minimum_bandwidth_rule.py (100%)
 rename {network => openstack/network}/v2/qos_minimum_packet_rate_rule.py (100%)
 rename {network => openstack/network}/v2/qos_policy.py (100%)
 rename {network => openstack/network}/v2/qos_rule_type.py (100%)
 rename {network => openstack/network}/v2/quota.py (100%)
 rename {network => openstack/network}/v2/rbac_policy.py (100%)
 rename {network => openstack/network}/v2/router.py (100%)
 rename {network => openstack/network}/v2/security_group.py (100%)
 rename {network => openstack/network}/v2/security_group_rule.py (100%)
 rename {network => openstack/network}/v2/segment.py (100%)
 rename {network => openstack/network}/v2/service_profile.py (100%)
 rename {network => openstack/network}/v2/service_provider.py (100%)
 rename {network => openstack/network}/v2/sfc_flow_classifier.py (100%)
 rename {network => openstack/network}/v2/sfc_port_chain.py (100%)
 rename {network => openstack/network}/v2/sfc_port_pair.py (100%)
 rename {network => openstack/network}/v2/sfc_port_pair_group.py (100%)
 rename {network => openstack/network}/v2/sfc_service_graph.py (100%)
 rename {network => openstack/network}/v2/subnet.py (100%)
 rename {network => openstack/network}/v2/subnet_pool.py (100%)
 rename {network => openstack/network}/v2/tap_flow.py (100%)
 rename {network => openstack/network}/v2/tap_service.py (100%)
 rename {network => openstack/network}/v2/trunk.py (100%)
 rename {network => openstack/network}/v2/vpn_endpoint_group.py (100%)
 rename {network => openstack/network}/v2/vpn_ike_policy.py (100%)
 rename {network => openstack/network}/v2/vpn_ipsec_policy.py (100%)
 rename {network => openstack/network}/v2/vpn_ipsec_site_connection.py (100%)
 rename {network => openstack/network}/v2/vpn_service.py (100%)
 rename {network => openstack/network}/version.py (100%)
 rename {test => openstack/object_store}/__init__.py (100%)
 rename {object_store => openstack/object_store}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {object_store => openstack/object_store}/__pycache__/object_store_service.cpython-310.pyc (100%)
 rename {object_store => openstack/object_store}/object_store_service.py (100%)
 rename {tests => openstack/object_store/v1}/__init__.py (100%)
 rename {object_store => openstack/object_store}/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {object_store => openstack/object_store}/v1/__pycache__/_base.cpython-310.pyc (100%)
 rename {object_store => openstack/object_store}/v1/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {object_store => openstack/object_store}/v1/__pycache__/account.cpython-310.pyc (100%)
 rename {object_store => openstack/object_store}/v1/__pycache__/container.cpython-310.pyc (100%)
 rename {object_store => openstack/object_store}/v1/__pycache__/info.cpython-310.pyc (100%)
 rename {object_store => openstack/object_store}/v1/__pycache__/obj.cpython-310.pyc (100%)
 rename {object_store => openstack/object_store}/v1/_base.py (100%)
 rename {object_store => openstack/object_store}/v1/_proxy.py (100%)
 rename {object_store => openstack/object_store}/v1/account.py (100%)
 rename {object_store => openstack/object_store}/v1/container.py (100%)
 rename {object_store => openstack/object_store}/v1/info.py (100%)
 rename {object_store => openstack/object_store}/v1/obj.py (100%)
 rename {tests/functional => openstack/orchestration}/__init__.py (100%)
 rename {orchestration => openstack/orchestration}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/__pycache__/orchestration_service.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/__pycache__/version.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/orchestration_service.py (100%)
 rename {tests/functional/baremetal => openstack/orchestration/util}/__init__.py (100%)
 rename {orchestration => openstack/orchestration}/util/__pycache__/__init__.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/util/__pycache__/environment_format.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/util/__pycache__/event_utils.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/util/__pycache__/template_format.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/util/__pycache__/template_utils.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/util/__pycache__/utils.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/util/environment_format.py (100%)
 rename {orchestration => openstack/orchestration}/util/event_utils.py (100%)
 rename {orchestration => openstack/orchestration}/util/template_format.py (100%)
 rename {orchestration => openstack/orchestration}/util/template_utils.py (100%)
 rename {orchestration => openstack/orchestration}/util/utils.py (100%)
 rename {tests/functional/block_storage => openstack/orchestration/v1}/__init__.py (100%)
 rename {orchestration => openstack/orchestration}/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/v1/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/v1/__pycache__/resource.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/v1/__pycache__/software_config.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/v1/__pycache__/software_deployment.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/v1/__pycache__/stack.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/v1/__pycache__/stack_environment.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/v1/__pycache__/stack_event.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/v1/__pycache__/stack_files.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/v1/__pycache__/stack_template.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/v1/__pycache__/template.cpython-310.pyc (100%)
 rename {orchestration => openstack/orchestration}/v1/_proxy.py (100%)
 rename {orchestration => openstack/orchestration}/v1/resource.py (100%)
 rename {orchestration => openstack/orchestration}/v1/software_config.py (100%)
 rename {orchestration => openstack/orchestration}/v1/software_deployment.py (100%)
 rename {orchestration => openstack/orchestration}/v1/stack.py (100%)
 rename {orchestration => openstack/orchestration}/v1/stack_environment.py (100%)
 rename {orchestration => openstack/orchestration}/v1/stack_event.py (100%)
 rename {orchestration => openstack/orchestration}/v1/stack_files.py (100%)
 rename {orchestration => openstack/orchestration}/v1/stack_template.py (100%)
 rename {orchestration => openstack/orchestration}/v1/template.py (100%)
 rename {orchestration => openstack/orchestration}/version.py (100%)
 rename {tests/functional/block_storage/v2 => openstack/placement}/__init__.py (100%)
 rename {placement => openstack/placement}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {placement => openstack/placement}/__pycache__/placement_service.cpython-310.pyc (100%)
 rename {placement => openstack/placement}/placement_service.py (100%)
 rename {tests/functional/block_storage/v3 => openstack/placement/v1}/__init__.py (100%)
 rename {placement => openstack/placement}/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {placement => openstack/placement}/v1/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {placement => openstack/placement}/v1/__pycache__/resource_class.cpython-310.pyc (100%)
 rename {placement => openstack/placement}/v1/__pycache__/resource_provider.cpython-310.pyc (100%)
 rename {placement => openstack/placement}/v1/__pycache__/resource_provider_inventory.cpython-310.pyc (100%)
 rename {placement => openstack/placement}/v1/__pycache__/trait.cpython-310.pyc (100%)
 rename {placement => openstack/placement}/v1/_proxy.py (100%)
 rename {placement => openstack/placement}/v1/resource_class.py (100%)
 rename {placement => openstack/placement}/v1/resource_provider.py (100%)
 rename {placement => openstack/placement}/v1/resource_provider_inventory.py (100%)
 rename {placement => openstack/placement}/v1/trait.py (100%)
 rename proxy.py => openstack/proxy.py (100%)
 rename py.typed => openstack/py.typed (100%)
 rename resource.py => openstack/resource.py (100%)
 rename service_description.py => openstack/service_description.py (100%)
 rename {tests/functional/cloud => openstack/shared_file_system}/__init__.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/__pycache__/shared_file_system_service.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/shared_file_system_service.py (100%)
 rename {tests/functional/clustering => openstack/shared_file_system/v2}/__init__.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/availability_zone.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/limit.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/share.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/share_access_rule.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/share_export_locations.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/share_group.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/share_group_snapshot.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/share_instance.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/share_network.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/share_network_subnet.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/share_snapshot.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/share_snapshot_instance.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/storage_pool.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/__pycache__/user_message.cpython-310.pyc (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/_proxy.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/availability_zone.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/limit.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/share.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/share_access_rule.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/share_export_locations.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/share_group.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/share_group_snapshot.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/share_instance.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/share_network.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/share_network_subnet.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/share_snapshot.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/share_snapshot_instance.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/storage_pool.py (100%)
 rename {shared_file_system => openstack/shared_file_system}/v2/user_message.py (100%)
 rename {tests/functional/compute => openstack/test}/__init__.py (100%)
 rename {test => openstack/test}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {test => openstack/test}/__pycache__/fakes.cpython-310.pyc (100%)
 rename {test => openstack/test}/fakes.py (100%)
 rename {tests => openstack/tests}/README.rst (100%)
 rename {tests/functional/compute/v2 => openstack/tests}/__init__.py (100%)
 rename {tests => openstack/tests}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/__pycache__/base.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/__pycache__/fakes.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/__pycache__/fixtures.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/ansible/README.txt (100%)
 rename {tests => openstack/tests}/ansible/hooks/post_test_hook.sh (100%)
 rename {tests => openstack/tests}/ansible/roles/auth/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/client_config/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/group/defaults/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/group/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/image/defaults/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/image/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/keypair/defaults/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/keypair/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/keystone_domain/defaults/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/keystone_domain/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/keystone_role/defaults/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/keystone_role/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/network/defaults/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/network/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/nova_flavor/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/object/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/port/defaults/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/port/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/router/defaults/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/router/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/security_group/defaults/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/security_group/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/server/defaults/main.yaml (100%)
 rename {tests => openstack/tests}/ansible/roles/server/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/subnet/defaults/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/subnet/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/user/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/user_group/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/roles/volume/tasks/main.yml (100%)
 rename {tests => openstack/tests}/ansible/run.yml (100%)
 rename {tests => openstack/tests}/base.py (100%)
 rename {tests => openstack/tests}/fakes.py (100%)
 rename {tests => openstack/tests}/fixtures.py (100%)
 rename {tests => openstack/tests}/functional/README.rst (100%)
 rename {tests/functional/dns => openstack/tests/functional}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/__pycache__/base.cpython-310.pyc (100%)
 rename {tests/functional/dns/v2 => openstack/tests/functional/baremetal}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/baremetal/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/baremetal/__pycache__/base.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/baremetal/__pycache__/test_baremetal_allocation.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/baremetal/__pycache__/test_baremetal_chassis.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/baremetal/__pycache__/test_baremetal_conductor.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/baremetal/__pycache__/test_baremetal_deploy_templates.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/baremetal/__pycache__/test_baremetal_driver.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/baremetal/__pycache__/test_baremetal_node.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/baremetal/__pycache__/test_baremetal_port.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/baremetal/__pycache__/test_baremetal_port_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/baremetal/__pycache__/test_baremetal_volume_connector.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/baremetal/__pycache__/test_baremetal_volume_target.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/baremetal/base.py (100%)
 rename {tests => openstack/tests}/functional/baremetal/test_baremetal_allocation.py (100%)
 rename {tests => openstack/tests}/functional/baremetal/test_baremetal_chassis.py (100%)
 rename {tests => openstack/tests}/functional/baremetal/test_baremetal_conductor.py (100%)
 rename {tests => openstack/tests}/functional/baremetal/test_baremetal_deploy_templates.py (100%)
 rename {tests => openstack/tests}/functional/baremetal/test_baremetal_driver.py (100%)
 rename {tests => openstack/tests}/functional/baremetal/test_baremetal_node.py (100%)
 rename {tests => openstack/tests}/functional/baremetal/test_baremetal_port.py (100%)
 rename {tests => openstack/tests}/functional/baremetal/test_baremetal_port_group.py (100%)
 rename {tests => openstack/tests}/functional/baremetal/test_baremetal_volume_connector.py (100%)
 rename {tests => openstack/tests}/functional/baremetal/test_baremetal_volume_target.py (100%)
 rename {tests => openstack/tests}/functional/base.py (100%)
 rename {tests/functional/examples => openstack/tests/functional/block_storage}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/functional/identity => openstack/tests/functional/block_storage/v2}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v2/__pycache__/base.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v2/__pycache__/test_backup.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v2/__pycache__/test_stats.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v2/__pycache__/test_type.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v2/__pycache__/test_volume.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v2/base.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v2/test_backup.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v2/test_snapshot.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v2/test_stats.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v2/test_type.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v2/test_volume.py (100%)
 rename {tests/functional/identity => openstack/tests/functional/block_storage}/v3/__init__.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/base.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/test_availability_zone.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/test_backup.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/test_block_storage_summary.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/test_extension.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/test_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/test_limits.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/test_resource_filters.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/test_service.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/test_type.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/__pycache__/test_volume.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/base.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/test_attachment.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/test_availability_zone.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/test_backup.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/test_block_storage_summary.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/test_capabilities.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/test_extension.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/test_group.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/test_limits.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/test_resource_filters.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/test_service.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/test_snapshot.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/test_transfer.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/test_type.py (100%)
 rename {tests => openstack/tests}/functional/block_storage/v3/test_volume.py (100%)
 rename {tests/functional/image => openstack/tests/functional/cloud}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_aggregate.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_cluster_templates.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_clustering.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_coe_clusters.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_compute.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_devstack.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_domain.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_endpoints.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_flavor.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_floating_ip.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_groups.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_identity.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_image.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_inventory.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_keypairs.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_limits.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_magnum_services.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_network.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_object.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_port.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_project.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_project_cleanup.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_qos_policy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_quotas.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_range_search.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_recordset.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_router.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_security_groups.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_server_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_services.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_stack.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_users.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_volume.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_volume_backup.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_volume_type.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/__pycache__/test_zone.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/cloud/test_aggregate.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_cluster_templates.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_clustering.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_coe_clusters.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_compute.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_devstack.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_domain.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_endpoints.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_flavor.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_floating_ip.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_floating_ip_pool.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_groups.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_identity.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_image.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_inventory.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_keypairs.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_limits.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_magnum_services.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_network.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_object.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_port.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_project.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_project_cleanup.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_qos_bandwidth_limit_rule.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_qos_dscp_marking_rule.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_qos_minimum_bandwidth_rule.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_qos_policy.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_quotas.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_range_search.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_recordset.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_router.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_security_groups.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_server_group.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_services.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_stack.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_users.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_volume.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_volume_backup.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_volume_type.py (100%)
 rename {tests => openstack/tests}/functional/cloud/test_zone.py (100%)
 rename {tests/functional/image/v2 => openstack/tests/functional/clustering}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/clustering/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/clustering/__pycache__/test_cluster.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/clustering/test_cluster.py (100%)
 rename {tests/functional/instance_ha => openstack/tests/functional/compute}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/compute/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/compute/__pycache__/base.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/compute/base.py (100%)
 rename {tests/functional/load_balancer => openstack/tests/functional/compute/v2}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/compute/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/compute/v2/__pycache__/test_extension.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/compute/v2/__pycache__/test_flavor.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/compute/v2/__pycache__/test_image.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/compute/v2/__pycache__/test_keypair.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/compute/v2/__pycache__/test_limits.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/compute/v2/__pycache__/test_quota_set.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/compute/v2/__pycache__/test_server.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/compute/v2/__pycache__/test_service.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/compute/v2/test_extension.py (100%)
 rename {tests => openstack/tests}/functional/compute/v2/test_flavor.py (100%)
 rename {tests => openstack/tests}/functional/compute/v2/test_hypervisor.py (100%)
 rename {tests => openstack/tests}/functional/compute/v2/test_image.py (100%)
 rename {tests => openstack/tests}/functional/compute/v2/test_keypair.py (100%)
 rename {tests => openstack/tests}/functional/compute/v2/test_limits.py (100%)
 rename {tests => openstack/tests}/functional/compute/v2/test_quota_set.py (100%)
 rename {tests => openstack/tests}/functional/compute/v2/test_server.py (100%)
 rename {tests => openstack/tests}/functional/compute/v2/test_service.py (100%)
 rename {tests => openstack/tests}/functional/compute/v2/test_volume_attachment.py (100%)
 rename {tests/functional/load_balancer/v2 => openstack/tests/functional/dns}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/dns/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/functional/network => openstack/tests/functional/dns/v2}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/dns/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/dns/v2/__pycache__/test_zone.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/dns/v2/__pycache__/test_zone_share.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/dns/v2/test_zone.py (100%)
 rename {tests => openstack/tests}/functional/dns/v2/test_zone_share.py (100%)
 rename {tests/functional/network/v2 => openstack/tests/functional/examples}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/examples/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/examples/__pycache__/test_compute.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/examples/__pycache__/test_identity.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/examples/__pycache__/test_image.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/examples/__pycache__/test_network.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/examples/test_compute.py (100%)
 rename {tests => openstack/tests}/functional/examples/test_identity.py (100%)
 rename {tests => openstack/tests}/functional/examples/test_image.py (100%)
 rename {tests => openstack/tests}/functional/examples/test_network.py (100%)
 rename {tests/functional/object_store => openstack/tests/functional/identity}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/identity/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/functional/object_store/v1 => openstack/tests/functional/identity/v3}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/identity/v3/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/identity/v3/__pycache__/test_application_credential.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/identity/v3/__pycache__/test_domain_config.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/identity/v3/test_application_credential.py (100%)
 rename {tests => openstack/tests}/functional/identity/v3/test_domain_config.py (100%)
 rename {tests/functional/orchestration => openstack/tests/functional/image}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/image/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/functional/orchestration/v1 => openstack/tests/functional/image/v2}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/image/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/image/v2/__pycache__/base.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/image/v2/__pycache__/test_image.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/image/v2/__pycache__/test_metadef_object.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/image/v2/__pycache__/test_metadef_property.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/image/v2/__pycache__/test_metadef_resource_type.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/image/v2/__pycache__/test_schema.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/image/v2/__pycache__/test_task.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/image/v2/base.py (100%)
 rename {tests => openstack/tests}/functional/image/v2/test_image.py (100%)
 rename {tests => openstack/tests}/functional/image/v2/test_metadef_namespace.py (100%)
 rename {tests => openstack/tests}/functional/image/v2/test_metadef_object.py (100%)
 rename {tests => openstack/tests}/functional/image/v2/test_metadef_property.py (100%)
 rename {tests => openstack/tests}/functional/image/v2/test_metadef_resource_type.py (100%)
 rename {tests => openstack/tests}/functional/image/v2/test_metadef_schema.py (100%)
 rename {tests => openstack/tests}/functional/image/v2/test_schema.py (100%)
 rename {tests => openstack/tests}/functional/image/v2/test_task.py (100%)
 rename {tests/functional/placement => openstack/tests/functional/instance_ha}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/instance_ha/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/instance_ha/__pycache__/test_host.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/instance_ha/__pycache__/test_segment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/instance_ha/test_host.py (100%)
 rename {tests => openstack/tests}/functional/instance_ha/test_segment.py (100%)
 rename {tests/functional/placement/v1 => openstack/tests/functional/load_balancer}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/load_balancer/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/functional/shared_file_system => openstack/tests/functional/load_balancer/v2}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/load_balancer/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/load_balancer/v2/__pycache__/test_load_balancer.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/load_balancer/v2/test_load_balancer.py (100%)
 rename {tests/unit => openstack/tests/functional/network}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/network/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/unit/accelerator => openstack/tests/functional/network/v2}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_address_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_address_scope.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_agent.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_agent_add_remove_network.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_agent_add_remove_router.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_auto_allocated_topology.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_availability_zone.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_bgp.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_default_security_group_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_dvr_router.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_extension.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_firewall_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_firewall_rule_insert_remove_policy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_flavor.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_floating_ip.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_l3_conntrack_helper.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_local_ip.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_local_ip_association.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_network.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_network_ip_availability.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_network_segment_range.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_port.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_qos_minimum_packet_rate_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_qos_policy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_qos_rule_type.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_quota.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_router.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_router_add_remove_interface.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_security_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_security_group_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_segment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_service_profile.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_service_provider.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_sfc.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_subnet.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_subnet_from_subnet_pool.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_taas.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_trunk.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/__pycache__/test_vpnaas.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_address_group.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_address_scope.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_agent.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_agent_add_remove_network.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_agent_add_remove_router.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_auto_allocated_topology.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_availability_zone.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_bgp.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_bgpvpn.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_default_security_group_rule.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_dvr_router.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_extension.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_firewall_group.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_firewall_policy.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_firewall_rule.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_firewall_rule_insert_remove_policy.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_flavor.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_floating_ip.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_l3_conntrack_helper.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_local_ip.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_local_ip_association.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_ndp_proxy.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_network.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_network_ip_availability.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_network_segment_range.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_port.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_port_forwarding.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_qos_bandwidth_limit_rule.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_qos_dscp_marking_rule.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_qos_minimum_bandwidth_rule.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_qos_minimum_packet_rate_rule.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_qos_policy.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_qos_rule_type.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_quota.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_rbac_policy.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_router.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_router_add_remove_interface.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_security_group.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_security_group_rule.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_segment.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_service_profile.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_service_provider.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_sfc.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_subnet.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_subnet_from_subnet_pool.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_subnet_pool.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_taas.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_trunk.py (100%)
 rename {tests => openstack/tests}/functional/network/v2/test_vpnaas.py (100%)
 rename {tests/unit/accelerator/v2 => openstack/tests/functional/object_store}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/object_store/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/unit/baremetal => openstack/tests/functional/object_store/v1}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/object_store/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/object_store/v1/__pycache__/test_account.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/object_store/v1/__pycache__/test_container.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/object_store/v1/__pycache__/test_obj.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/object_store/v1/test_account.py (100%)
 rename {tests => openstack/tests}/functional/object_store/v1/test_container.py (100%)
 rename {tests => openstack/tests}/functional/object_store/v1/test_obj.py (100%)
 rename {tests/unit/baremetal/v1 => openstack/tests/functional/orchestration}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/orchestration/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/unit/baremetal_introspection => openstack/tests/functional/orchestration/v1}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/orchestration/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/orchestration/v1/__pycache__/test_stack.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/orchestration/v1/hello_world.yaml (100%)
 rename {tests => openstack/tests}/functional/orchestration/v1/test_stack.py (100%)
 rename {tests/unit/baremetal_introspection/v1 => openstack/tests/functional/placement}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/placement/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/unit/block_storage => openstack/tests/functional/placement/v1}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/placement/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/placement/v1/__pycache__/test_resource_provider_inventory.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/placement/v1/__pycache__/test_trait.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/placement/v1/test_resource_provider.py (100%)
 rename {tests => openstack/tests}/functional/placement/v1/test_resource_provider_inventory.py (100%)
 rename {tests => openstack/tests}/functional/placement/v1/test_trait.py (100%)
 rename {tests/unit/block_storage/v2 => openstack/tests/functional/shared_file_system}/__init__.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/base.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/test_availability_zone.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/test_export_locations.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/test_limit.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/test_share.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/test_share_access_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/test_share_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/test_share_group_snapshot.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/test_share_instance.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/test_share_metadata.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/test_share_network.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/test_share_network_subnet.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/test_share_snapshot.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/test_share_snapshot_instance.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/test_storage_pool.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/__pycache__/test_user_message.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/base.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/test_availability_zone.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/test_export_locations.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/test_limit.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/test_share.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/test_share_access_rule.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/test_share_group.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/test_share_group_snapshot.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/test_share_instance.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/test_share_metadata.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/test_share_network.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/test_share_network_subnet.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/test_share_snapshot.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/test_share_snapshot_instance.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/test_storage_pool.py (100%)
 rename {tests => openstack/tests}/functional/shared_file_system/test_user_message.py (100%)
 rename {tests => openstack/tests}/unit/README.rst (100%)
 rename {tests/unit/block_storage/v3 => openstack/tests/unit}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/__pycache__/base.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/__pycache__/fakes.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/__pycache__/test_connection.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/__pycache__/test_exceptions.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/__pycache__/test_fakes.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/__pycache__/test_format.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/__pycache__/test_hacking.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/__pycache__/test_microversions.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/__pycache__/test_missing_version.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/__pycache__/test_placement_rest.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/__pycache__/test_proxy_base.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/__pycache__/test_resource.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/__pycache__/test_stats.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/__pycache__/test_utils.cpython-310.pyc (100%)
 rename {tests/unit/cloud => openstack/tests/unit/accelerator}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/accelerator/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/accelerator/__pycache__/test_version.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/accelerator/test_version.py (100%)
 rename {tests/unit/clustering => openstack/tests/unit/accelerator/v2}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/accelerator/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/accelerator/v2/__pycache__/test_accelerator_request.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/accelerator/v2/__pycache__/test_deployable.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/accelerator/v2/__pycache__/test_device.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/accelerator/v2/__pycache__/test_device_profile.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/accelerator/v2/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/accelerator/v2/test_accelerator_request.py (100%)
 rename {tests => openstack/tests}/unit/accelerator/v2/test_deployable.py (100%)
 rename {tests => openstack/tests}/unit/accelerator/v2/test_device.py (100%)
 rename {tests => openstack/tests}/unit/accelerator/v2/test_device_profile.py (100%)
 rename {tests => openstack/tests}/unit/accelerator/v2/test_proxy.py (100%)
 rename {tests/unit/clustering/v1 => openstack/tests/unit/baremetal}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/baremetal/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal/__pycache__/test_configdrive.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal/__pycache__/test_version.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal/test_configdrive.py (100%)
 rename {tests => openstack/tests}/unit/baremetal/test_version.py (100%)
 rename {tests/unit/common => openstack/tests/unit/baremetal/v1}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/__pycache__/test_allocation.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/__pycache__/test_chassis.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/__pycache__/test_conductor.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/__pycache__/test_deploy_templates.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/__pycache__/test_driver.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/__pycache__/test_node.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/__pycache__/test_port.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/__pycache__/test_port_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/__pycache__/test_volume_connector.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/__pycache__/test_volume_target.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/test_allocation.py (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/test_chassis.py (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/test_conductor.py (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/test_deploy_templates.py (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/test_driver.py (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/test_node.py (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/test_port.py (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/test_port_group.py (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/test_volume_connector.py (100%)
 rename {tests => openstack/tests}/unit/baremetal/v1/test_volume_target.py (100%)
 rename {tests/unit/compute => openstack/tests/unit/baremetal_introspection}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/baremetal_introspection/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/unit/compute/v2 => openstack/tests/unit/baremetal_introspection/v1}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/baremetal_introspection/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal_introspection/v1/__pycache__/test_introspection_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal_introspection/v1/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/baremetal_introspection/v1/test_introspection_rule.py (100%)
 rename {tests => openstack/tests}/unit/baremetal_introspection/v1/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/base.py (100%)
 rename {tests/unit/config => openstack/tests/unit/block_storage}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/unit/container_infrastructure_management => openstack/tests/unit/block_storage/v2}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/__pycache__/test_backup.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/__pycache__/test_capabilities.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/__pycache__/test_extension.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/__pycache__/test_limits.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/__pycache__/test_stats.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/__pycache__/test_type.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/__pycache__/test_volume.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/test_backup.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/test_capabilities.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/test_extension.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/test_limits.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/test_snapshot.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/test_stats.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/test_type.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v2/test_volume.py (100%)
 rename {tests/unit/container_infrastructure_management/v1 => openstack/tests/unit/block_storage/v3}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_availability_zone.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_backup.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_block_storage_summary.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_extension.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_group_snapshot.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_group_type.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_limits.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_resource_filter.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_service.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_type.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_type_encryption.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/__pycache__/test_volume.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_attachment.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_availability_zone.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_backup.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_block_storage_summary.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_capabilities.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_extension.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_group.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_group_snapshot.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_group_type.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_limits.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_resource_filter.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_service.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_snapshot.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_transfer.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_type.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_type_encryption.py (100%)
 rename {tests => openstack/tests}/unit/block_storage/v3/test_volume.py (100%)
 rename {tests/unit/database => openstack/tests/unit/cloud}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test__utils.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_accelerator.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_aggregate.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_availability_zones.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_baremetal_node.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_baremetal_ports.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_cloud.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_cluster_templates.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_clustering.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_coe_clusters.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_coe_clusters_certificate.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_compute.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_create_server.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_create_volume_snapshot.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_delete_server.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_delete_volume_snapshot.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_domain_params.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_domains.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_endpoints.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_flavors.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_floating_ip_common.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_floating_ip_neutron.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_floating_ip_nova.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_fwaas.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_groups.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_identity_roles.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_identity_users.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_image.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_image_snapshot.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_inventory.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_keypair.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_limits.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_magnum_services.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_meta.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_network.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_object.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_openstackcloud.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_operator.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_operator_noauth.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_port.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_project.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_qos_policy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_qos_rule_type.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_quotas.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_rebuild_server.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_recordset.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_role_assignment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_router.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_security_groups.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_server_console.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_server_delete_metadata.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_server_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_server_set_metadata.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_services.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_shared_file_system.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_stack.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_subnet.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_update_server.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_usage.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_users.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_volume.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_volume_access.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_volume_backups.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/__pycache__/test_zone.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/cloud/test__utils.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_accelerator.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_aggregate.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_availability_zones.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_baremetal_node.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_baremetal_ports.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_cloud.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_cluster_templates.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_clustering.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_coe_clusters.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_coe_clusters_certificate.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_compute.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_create_server.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_create_volume_snapshot.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_delete_server.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_delete_volume_snapshot.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_domain_params.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_domains.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_endpoints.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_flavors.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_floating_ip_common.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_floating_ip_neutron.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_floating_ip_nova.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_floating_ip_pool.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_fwaas.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_groups.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_identity_roles.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_identity_users.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_image.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_image_snapshot.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_inventory.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_keypair.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_limits.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_magnum_services.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_meta.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_network.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_object.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_openstackcloud.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_operator.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_operator_noauth.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_port.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_project.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_qos_bandwidth_limit_rule.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_qos_dscp_marking_rule.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_qos_minimum_bandwidth_rule.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_qos_policy.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_qos_rule_type.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_quotas.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_rebuild_server.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_recordset.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_role_assignment.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_router.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_security_groups.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_server_console.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_server_delete_metadata.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_server_group.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_server_set_metadata.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_services.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_shared_file_system.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_stack.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_subnet.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_update_server.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_usage.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_users.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_volume.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_volume_access.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_volume_backups.py (100%)
 rename {tests => openstack/tests}/unit/cloud/test_zone.py (100%)
 rename {tests/unit/database/v1 => openstack/tests/unit/clustering}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/clustering/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/__pycache__/test_version.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/test_version.py (100%)
 rename {tests/unit/dns => openstack/tests/unit/clustering/v1}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/__pycache__/test_action.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/__pycache__/test_build_info.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/__pycache__/test_cluster.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/__pycache__/test_cluster_attr.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/__pycache__/test_cluster_policy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/__pycache__/test_event.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/__pycache__/test_node.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/__pycache__/test_policy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/__pycache__/test_policy_type.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/__pycache__/test_profile.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/__pycache__/test_profile_type.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/__pycache__/test_receiver.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/__pycache__/test_service.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/test_action.py (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/test_build_info.py (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/test_cluster.py (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/test_cluster_attr.py (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/test_cluster_policy.py (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/test_event.py (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/test_node.py (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/test_policy.py (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/test_policy_type.py (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/test_profile.py (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/test_profile_type.py (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/test_receiver.py (100%)
 rename {tests => openstack/tests}/unit/clustering/v1/test_service.py (100%)
 rename {tests/unit/dns/v2 => openstack/tests/unit/common}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/common/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/common/__pycache__/test_metadata.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/common/__pycache__/test_quota_set.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/common/__pycache__/test_tag.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/common/test_metadata.py (100%)
 rename {tests => openstack/tests}/unit/common/test_quota_set.py (100%)
 rename {tests => openstack/tests}/unit/common/test_tag.py (100%)
 rename {tests/unit/fake => openstack/tests/unit/compute}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/compute/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/__pycache__/test_version.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/test_version.py (100%)
 rename {tests/unit/fake/v1 => openstack/tests/unit/compute/v2}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_aggregate.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_availability_zone.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_extension.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_flavor.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_image.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_keypair.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_limits.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_migration.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_server.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_server_actions.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_server_diagnostics.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_server_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_server_interface.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_server_ip.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_server_migration.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_server_remote_console.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_service.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_usage.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_aggregate.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_availability_zone.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_extension.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_flavor.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_hypervisor.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_image.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_keypair.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_limits.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_migration.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_server.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_server_actions.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_server_diagnostics.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_server_group.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_server_interface.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_server_ip.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_server_migration.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_server_remote_console.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_service.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_usage.py (100%)
 rename {tests => openstack/tests}/unit/compute/v2/test_volume_attachment.py (100%)
 rename {tests/unit/fake/v2 => openstack/tests/unit/config}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/config/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/config/__pycache__/base.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/config/__pycache__/test_cloud_config.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/config/__pycache__/test_config.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/config/__pycache__/test_environ.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/config/__pycache__/test_from_conf.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/config/__pycache__/test_from_session.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/config/__pycache__/test_init.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/config/__pycache__/test_json.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/config/__pycache__/test_loader.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/config/base.py (100%)
 rename {tests => openstack/tests}/unit/config/test_cloud_config.py (100%)
 rename {tests => openstack/tests}/unit/config/test_config.py (100%)
 rename {tests => openstack/tests}/unit/config/test_environ.py (100%)
 rename {tests => openstack/tests}/unit/config/test_from_conf.py (100%)
 rename {tests => openstack/tests}/unit/config/test_from_session.py (100%)
 rename {tests => openstack/tests}/unit/config/test_init.py (100%)
 rename {tests => openstack/tests}/unit/config/test_json.py (100%)
 rename {tests => openstack/tests}/unit/config/test_loader.py (100%)
 rename {tests/unit/identity => openstack/tests/unit/container_infrastructure_management}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/container_infrastructure_management/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/unit/identity/v2 => openstack/tests/unit/container_infrastructure_management/v1}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/container_infrastructure_management/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/container_infrastructure_management/v1/__pycache__/test_cluster.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/container_infrastructure_management/v1/__pycache__/test_cluster_certificate.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/container_infrastructure_management/v1/__pycache__/test_cluster_template.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/container_infrastructure_management/v1/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/container_infrastructure_management/v1/__pycache__/test_service.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/container_infrastructure_management/v1/test_cluster.py (100%)
 rename {tests => openstack/tests}/unit/container_infrastructure_management/v1/test_cluster_certificate.py (100%)
 rename {tests => openstack/tests}/unit/container_infrastructure_management/v1/test_cluster_template.py (100%)
 rename {tests => openstack/tests}/unit/container_infrastructure_management/v1/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/container_infrastructure_management/v1/test_service.py (100%)
 rename {tests/unit/identity/v3 => openstack/tests/unit/database}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/database/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/unit/image => openstack/tests/unit/database/v1}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/database/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/database/v1/__pycache__/test_database.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/database/v1/__pycache__/test_flavor.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/database/v1/__pycache__/test_instance.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/database/v1/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/database/v1/__pycache__/test_user.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/database/v1/test_database.py (100%)
 rename {tests => openstack/tests}/unit/database/v1/test_flavor.py (100%)
 rename {tests => openstack/tests}/unit/database/v1/test_instance.py (100%)
 rename {tests => openstack/tests}/unit/database/v1/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/database/v1/test_user.py (100%)
 rename {tests/unit/image/v1 => openstack/tests/unit/dns}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/dns/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/dns/__pycache__/test_version.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/dns/test_version.py (100%)
 rename {tests/unit/image => openstack/tests/unit/dns}/v2/__init__.py (100%)
 rename {tests => openstack/tests}/unit/dns/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/dns/v2/__pycache__/test_floating_ip.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/dns/v2/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/dns/v2/__pycache__/test_recordset.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/dns/v2/__pycache__/test_zone.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/dns/v2/__pycache__/test_zone_export.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/dns/v2/__pycache__/test_zone_import.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/dns/v2/__pycache__/test_zone_share.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/dns/v2/__pycache__/test_zone_transfer.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/dns/v2/test_floating_ip.py (100%)
 rename {tests => openstack/tests}/unit/dns/v2/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/dns/v2/test_recordset.py (100%)
 rename {tests => openstack/tests}/unit/dns/v2/test_zone.py (100%)
 rename {tests => openstack/tests}/unit/dns/v2/test_zone_export.py (100%)
 rename {tests => openstack/tests}/unit/dns/v2/test_zone_import.py (100%)
 rename {tests => openstack/tests}/unit/dns/v2/test_zone_share.py (100%)
 rename {tests => openstack/tests}/unit/dns/v2/test_zone_transfer.py (100%)
 rename {tests/unit/instance_ha => openstack/tests/unit/fake}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/fake/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/fake/__pycache__/fake_service.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/fake/fake_service.py (100%)
 rename {tests/unit/instance_ha => openstack/tests/unit/fake}/v1/__init__.py (100%)
 rename {tests => openstack/tests}/unit/fake/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/fake/v1/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/fake/v1/__pycache__/fake.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/fake/v1/_proxy.py (100%)
 rename {tests => openstack/tests}/unit/fake/v1/fake.py (100%)
 rename {tests/unit/key_manager => openstack/tests/unit/fake/v2}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/fake/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/fake/v2/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/fake/v2/__pycache__/fake.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/fake/v2/_proxy.py (100%)
 rename {tests => openstack/tests}/unit/fake/v2/fake.py (100%)
 rename {tests => openstack/tests}/unit/fakes.py (100%)
 rename {tests => openstack/tests}/unit/fixtures/accelerator.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/bad-glance-version.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/bad-placement.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/baremetal.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/block-storage-version.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/clouds/clouds.yaml (100%)
 rename {tests => openstack/tests}/unit/fixtures/clouds/clouds_cache.yaml (100%)
 rename {tests => openstack/tests}/unit/fixtures/clustering.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/compute-version.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/discovery.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/dns.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/image-version-broken.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/image-version-suburl.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/image-version-v1.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/image-version-v2.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/image-version.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/old-compute-version.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/placement.json (100%)
 rename {tests => openstack/tests}/unit/fixtures/shared-file-system.json (100%)
 rename {tests/unit/key_manager/v1 => openstack/tests/unit/identity}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/identity/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/__pycache__/test_version.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/test_version.py (100%)
 rename {tests/unit/load_balancer => openstack/tests/unit/identity/v2}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/identity/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v2/__pycache__/test_extension.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v2/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v2/__pycache__/test_role.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v2/__pycache__/test_tenant.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v2/__pycache__/test_user.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v2/test_extension.py (100%)
 rename {tests => openstack/tests}/unit/identity/v2/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/identity/v2/test_role.py (100%)
 rename {tests => openstack/tests}/unit/identity/v2/test_tenant.py (100%)
 rename {tests => openstack/tests}/unit/identity/v2/test_user.py (100%)
 rename {tests/unit/load_balancer/v2 => openstack/tests/unit/identity/v3}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_application_credential.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_credential.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_domain.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_domain_config.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_endpoint.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_federation_protocol.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_identity_provider.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_limit.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_mapping.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_policy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_project.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_region.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_registered_limit.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_role.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_role_assignment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_role_domain_group_assignment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_role_domain_user_assignment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_role_project_group_assignment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_role_project_user_assignment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_role_system_group_assignment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_role_system_user_assignment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_service.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_trust.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/__pycache__/test_user.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_application_credential.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_credential.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_domain.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_domain_config.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_endpoint.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_federation_protocol.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_group.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_identity_provider.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_limit.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_mapping.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_policy.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_project.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_region.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_registered_limit.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_role.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_role_assignment.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_role_domain_group_assignment.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_role_domain_user_assignment.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_role_project_group_assignment.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_role_project_user_assignment.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_role_system_group_assignment.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_role_system_user_assignment.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_service.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_trust.py (100%)
 rename {tests => openstack/tests}/unit/identity/v3/test_user.py (100%)
 rename {tests/unit/message => openstack/tests/unit/image}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/image/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/unit/message/v2 => openstack/tests/unit/image/v1}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/image/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v1/__pycache__/test_image.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v1/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v1/test_image.py (100%)
 rename {tests => openstack/tests}/unit/image/v1/test_proxy.py (100%)
 rename {tests/unit/network => openstack/tests/unit/image/v2}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/image/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v2/__pycache__/test_cache.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v2/__pycache__/test_image.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v2/__pycache__/test_member.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v2/__pycache__/test_metadef_object.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v2/__pycache__/test_metadef_property.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v2/__pycache__/test_metadef_resource_type.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v2/__pycache__/test_metadef_resource_type_association.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v2/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v2/__pycache__/test_schema.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v2/__pycache__/test_service_info.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v2/__pycache__/test_task.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/image/v2/test_cache.py (100%)
 rename {tests => openstack/tests}/unit/image/v2/test_image.py (100%)
 rename {tests => openstack/tests}/unit/image/v2/test_member.py (100%)
 rename {tests => openstack/tests}/unit/image/v2/test_metadef_namespace.py (100%)
 rename {tests => openstack/tests}/unit/image/v2/test_metadef_object.py (100%)
 rename {tests => openstack/tests}/unit/image/v2/test_metadef_property.py (100%)
 rename {tests => openstack/tests}/unit/image/v2/test_metadef_resource_type.py (100%)
 rename {tests => openstack/tests}/unit/image/v2/test_metadef_resource_type_association.py (100%)
 rename {tests => openstack/tests}/unit/image/v2/test_metadef_schema.py (100%)
 rename {tests => openstack/tests}/unit/image/v2/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/image/v2/test_schema.py (100%)
 rename {tests => openstack/tests}/unit/image/v2/test_service_info.py (100%)
 rename {tests => openstack/tests}/unit/image/v2/test_task.py (100%)
 rename {tests/unit/network/v2 => openstack/tests/unit/instance_ha}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/instance_ha/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/unit/object_store => openstack/tests/unit/instance_ha/v1}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/instance_ha/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/instance_ha/v1/__pycache__/test_host.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/instance_ha/v1/__pycache__/test_notification.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/instance_ha/v1/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/instance_ha/v1/__pycache__/test_segment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/instance_ha/v1/__pycache__/test_vmove.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/instance_ha/v1/test_host.py (100%)
 rename {tests => openstack/tests}/unit/instance_ha/v1/test_notification.py (100%)
 rename {tests => openstack/tests}/unit/instance_ha/v1/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/instance_ha/v1/test_segment.py (100%)
 rename {tests => openstack/tests}/unit/instance_ha/v1/test_vmove.py (100%)
 rename {tests/unit/object_store/v1 => openstack/tests/unit/key_manager}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/key_manager/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests/unit/orchestration => openstack/tests/unit/key_manager/v1}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/key_manager/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/key_manager/v1/__pycache__/test_container.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/key_manager/v1/__pycache__/test_order.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/key_manager/v1/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/key_manager/v1/__pycache__/test_secret.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/key_manager/v1/test_container.py (100%)
 rename {tests => openstack/tests}/unit/key_manager/v1/test_order.py (100%)
 rename {tests => openstack/tests}/unit/key_manager/v1/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/key_manager/v1/test_secret.py (100%)
 rename {tests/unit/orchestration/v1 => openstack/tests/unit/load_balancer}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/test_amphora.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/test_availability_zone.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/test_availability_zone_profile.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/test_flavor.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/test_flavor_profile.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/test_health_monitor.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/test_l7policy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/test_l7rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/test_listener.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/test_load_balancer.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/test_member.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/test_pool.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/test_provider.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/test_quota.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/__pycache__/test_version.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/test_amphora.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/test_availability_zone.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/test_availability_zone_profile.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/test_flavor.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/test_flavor_profile.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/test_health_monitor.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/test_l7policy.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/test_l7rule.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/test_listener.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/test_load_balancer.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/test_member.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/test_pool.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/test_provider.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/test_quota.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/test_version.py (100%)
 rename {tests/unit/placement => openstack/tests/unit/load_balancer/v2}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/load_balancer/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/v2/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/load_balancer/v2/test_proxy.py (100%)
 rename {tests/unit/placement/v1 => openstack/tests/unit/message}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/message/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/message/__pycache__/test_version.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/message/test_version.py (100%)
 rename {tests/unit/shared_file_system => openstack/tests/unit/message/v2}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/message/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/message/v2/__pycache__/test_claim.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/message/v2/__pycache__/test_message.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/message/v2/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/message/v2/__pycache__/test_queue.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/message/v2/__pycache__/test_subscription.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/message/v2/test_claim.py (100%)
 rename {tests => openstack/tests}/unit/message/v2/test_message.py (100%)
 rename {tests => openstack/tests}/unit/message/v2/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/message/v2/test_queue.py (100%)
 rename {tests => openstack/tests}/unit/message/v2/test_subscription.py (100%)
 rename {tests/unit/shared_file_system/v2 => openstack/tests/unit/network}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/network/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/__pycache__/test_version.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/test_version.py (100%)
 rename {tests/unit/workflow => openstack/tests/unit/network/v2}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_address_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_address_scope.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_agent.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_auto_allocated_topology.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_availability_zone.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_bgp_peer.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_bgp_speaker.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_default_security_group_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_extension.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_firewall_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_flavor.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_floating_ip.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_health_monitor.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_l3_conntrack_helper.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_listener.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_load_balancer.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_local_ip.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_local_ip_association.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_metering_label.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_metering_label_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_network.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_network_ip_availability.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_network_segment_range.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_pool.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_pool_member.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_port.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_qos_minimum_packet_rate_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_qos_policy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_qos_rule_type.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_quota.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_router.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_security_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_security_group_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_segment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_service_profile.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_service_provider.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_sfc_flow_classifier.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_sfc_port_chain.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_sfc_port_pair.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_sfc_port_pair_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_sfc_service_graph.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_subnet.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_tap_flow.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_tap_service.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_trunk.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_vpn_endpoint_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_vpn_ikepolicy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_vpn_ipsec_site_connection.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_vpn_ipsecpolicy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/__pycache__/test_vpn_service.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_address_group.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_address_scope.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_agent.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_auto_allocated_topology.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_availability_zone.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_bgp_peer.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_bgp_speaker.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_bgpvpn.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_default_security_group_rule.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_extension.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_firewall_group.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_firewall_policy.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_firewall_rule.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_flavor.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_floating_ip.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_health_monitor.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_l3_conntrack_helper.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_listener.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_load_balancer.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_local_ip.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_local_ip_association.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_metering_label.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_metering_label_rule.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_ndp_proxy.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_network.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_network_ip_availability.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_network_segment_range.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_pool.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_pool_member.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_port.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_port_forwarding.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_qos_bandwidth_limit_rule.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_qos_dscp_marking_rule.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_qos_minimum_bandwidth_rule.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_qos_minimum_packet_rate_rule.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_qos_policy.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_qos_rule_type.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_quota.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_rbac_policy.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_router.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_security_group.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_security_group_rule.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_segment.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_service_profile.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_service_provider.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_sfc_flow_classifier.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_sfc_port_chain.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_sfc_port_pair.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_sfc_port_pair_group.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_sfc_service_graph.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_subnet.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_subnet_pool.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_tap_flow.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_tap_service.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_trunk.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_vpn_endpoint_group.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_vpn_ikepolicy.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_vpn_ipsec_site_connection.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_vpn_ipsecpolicy.py (100%)
 rename {tests => openstack/tests}/unit/network/v2/test_vpn_service.py (100%)
 rename {tests/unit/workflow/v2 => openstack/tests/unit/object_store}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/object_store/__pycache__/__init__.cpython-310.pyc (100%)
 rename {workflow => openstack/tests/unit/object_store/v1}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/object_store/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/object_store/v1/__pycache__/test_account.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/object_store/v1/__pycache__/test_container.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/object_store/v1/__pycache__/test_info.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/object_store/v1/__pycache__/test_obj.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/object_store/v1/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/object_store/v1/test_account.py (100%)
 rename {tests => openstack/tests}/unit/object_store/v1/test_container.py (100%)
 rename {tests => openstack/tests}/unit/object_store/v1/test_info.py (100%)
 rename {tests => openstack/tests}/unit/object_store/v1/test_obj.py (100%)
 rename {tests => openstack/tests}/unit/object_store/v1/test_proxy.py (100%)
 rename {workflow/v2 => openstack/tests/unit/orchestration}/__init__.py (100%)
 rename {tests => openstack/tests}/unit/orchestration/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/orchestration/__pycache__/test_version.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/orchestration/test_version.py (100%)
 create mode 100644 openstack/tests/unit/orchestration/v1/__init__.py
 rename {tests => openstack/tests}/unit/orchestration/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/__pycache__/test_resource.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/__pycache__/test_software_config.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/__pycache__/test_software_deployment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/__pycache__/test_stack.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/__pycache__/test_stack_environment.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/__pycache__/test_stack_event.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/__pycache__/test_stack_files.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/__pycache__/test_stack_template.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/__pycache__/test_template.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/hello_world.yaml (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/helloworld.txt (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/test_resource.py (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/test_software_config.py (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/test_software_deployment.py (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/test_stack.py (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/test_stack_environment.py (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/test_stack_event.py (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/test_stack_files.py (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/test_stack_template.py (100%)
 rename {tests => openstack/tests}/unit/orchestration/v1/test_template.py (100%)
 create mode 100644 openstack/tests/unit/placement/__init__.py
 rename {tests => openstack/tests}/unit/placement/__pycache__/__init__.cpython-310.pyc (100%)
 create mode 100644 openstack/tests/unit/placement/v1/__init__.py
 rename {tests => openstack/tests}/unit/placement/v1/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/placement/v1/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/placement/v1/__pycache__/test_resource_class.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/placement/v1/__pycache__/test_resource_provider_inventory.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/placement/v1/__pycache__/test_trait.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/placement/v1/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/placement/v1/test_resource_class.py (100%)
 rename {tests => openstack/tests}/unit/placement/v1/test_resource_provider.py (100%)
 rename {tests => openstack/tests}/unit/placement/v1/test_resource_provider_inventory.py (100%)
 rename {tests => openstack/tests}/unit/placement/v1/test_trait.py (100%)
 create mode 100644 openstack/tests/unit/shared_file_system/__init__.py
 rename {tests => openstack/tests}/unit/shared_file_system/__pycache__/__init__.cpython-310.pyc (100%)
 create mode 100644 openstack/tests/unit/shared_file_system/v2/__init__.py
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/test_availability_zone.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/test_limit.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/test_share.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/test_share_access_rule.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/test_share_export_locations.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/test_share_group.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/test_share_group_snapshot.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/test_share_instance.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/test_share_network.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/test_share_network_subnet.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/test_share_snapshot.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/test_share_snapshot_instance.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/test_storage_pool.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/__pycache__/test_user_message.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/test_availability_zone.py (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/test_limit.py (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/test_share.py (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/test_share_access_rule.py (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/test_share_export_locations.py (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/test_share_group.py (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/test_share_group_snapshot.py (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/test_share_instance.py (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/test_share_network.py (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/test_share_network_subnet.py (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/test_share_snapshot.py (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/test_share_snapshot_instance.py (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/test_storage_pool.py (100%)
 rename {tests => openstack/tests}/unit/shared_file_system/v2/test_user_message.py (100%)
 rename {tests => openstack/tests}/unit/test_connection.py (100%)
 rename {tests => openstack/tests}/unit/test_exceptions.py (100%)
 rename {tests => openstack/tests}/unit/test_fakes.py (100%)
 rename {tests => openstack/tests}/unit/test_format.py (100%)
 rename {tests => openstack/tests}/unit/test_hacking.py (100%)
 rename {tests => openstack/tests}/unit/test_microversions.py (100%)
 rename {tests => openstack/tests}/unit/test_missing_version.py (100%)
 rename {tests => openstack/tests}/unit/test_placement_rest.py (100%)
 rename {tests => openstack/tests}/unit/test_proxy.py (100%)
 rename {tests => openstack/tests}/unit/test_proxy_base.py (100%)
 rename {tests => openstack/tests}/unit/test_resource.py (100%)
 rename {tests => openstack/tests}/unit/test_stats.py (100%)
 rename {tests => openstack/tests}/unit/test_utils.py (100%)
 create mode 100644 openstack/tests/unit/workflow/__init__.py
 rename {tests => openstack/tests}/unit/workflow/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/workflow/__pycache__/test_cron_trigger.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/workflow/__pycache__/test_execution.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/workflow/__pycache__/test_version.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/workflow/__pycache__/test_workflow.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/workflow/test_cron_trigger.py (100%)
 rename {tests => openstack/tests}/unit/workflow/test_execution.py (100%)
 rename {tests => openstack/tests}/unit/workflow/test_version.py (100%)
 rename {tests => openstack/tests}/unit/workflow/test_workflow.py (100%)
 create mode 100644 openstack/tests/unit/workflow/v2/__init__.py
 rename {tests => openstack/tests}/unit/workflow/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/workflow/v2/__pycache__/test_proxy.cpython-310.pyc (100%)
 rename {tests => openstack/tests}/unit/workflow/v2/test_proxy.py (100%)
 rename utils.py => openstack/utils.py (100%)
 rename version.py => openstack/version.py (100%)
 rename warnings.py => openstack/warnings.py (100%)
 create mode 100644 openstack/workflow/__init__.py
 rename {workflow => openstack/workflow}/__pycache__/__init__.cpython-310.pyc (100%)
 rename {workflow => openstack/workflow}/__pycache__/version.cpython-310.pyc (100%)
 rename {workflow => openstack/workflow}/__pycache__/workflow_service.cpython-310.pyc (100%)
 create mode 100644 openstack/workflow/v2/__init__.py
 rename {workflow => openstack/workflow}/v2/__pycache__/__init__.cpython-310.pyc (100%)
 rename {workflow => openstack/workflow}/v2/__pycache__/_proxy.cpython-310.pyc (100%)
 rename {workflow => openstack/workflow}/v2/__pycache__/cron_trigger.cpython-310.pyc (100%)
 rename {workflow => openstack/workflow}/v2/__pycache__/execution.cpython-310.pyc (100%)
 rename {workflow => openstack/workflow}/v2/__pycache__/workflow.cpython-310.pyc (100%)
 rename {workflow => openstack/workflow}/v2/_proxy.py (100%)
 rename {workflow => openstack/workflow}/v2/cron_trigger.py (100%)
 rename {workflow => openstack/workflow}/v2/execution.py (100%)
 rename {workflow => openstack/workflow}/v2/workflow.py (100%)
 rename {workflow => openstack/workflow}/version.py (100%)
 rename {workflow => openstack/workflow}/workflow_service.py (100%)
 create mode 100644 playbooks/acceptance/post.yaml
 create mode 100644 playbooks/acceptance/pre.yaml
 create mode 100644 playbooks/acceptance/run-with-devstack.yaml
 create mode 100644 playbooks/devstack/legacy-git.yaml
 create mode 100644 playbooks/devstack/post.yaml
 create mode 100755 post_test_hook.sh
 create mode 100644 releasenotes/notes/add-aggregates-fc563e237755112e.yaml
 create mode 100644 releasenotes/notes/add-application-credentials-abab9106dea10c11.yaml
 create mode 100644 releasenotes/notes/add-az-to-loadbalancer-da9bf1baaedc89a4.yaml
 create mode 100644 releasenotes/notes/add-block-storage-group-snapshots-954cc869227317c3.yaml
 create mode 100644 releasenotes/notes/add-block-storage-group-type-group-specs-d07047167224ec83.yaml
 create mode 100644 releasenotes/notes/add-block-storage-groups-bf5f1af714c9e505.yaml
 create mode 100644 releasenotes/notes/add-block-storage-service-support-ce03092ce2d7e7b9.yaml
 create mode 100644 releasenotes/notes/add-block-storage-summary-support-dd00d424c4e6a3b1.yaml
 create mode 100644 releasenotes/notes/add-bulk-create-resources-12192ec9d76c7716.yaml
 create mode 100644 releasenotes/notes/add-cipher-list-support-to-octavia-b6b2b0053ca6b184.yaml
 create mode 100644 releasenotes/notes/add-compute-flavor-ops-12149e58299c413e.yaml
 create mode 100644 releasenotes/notes/add-current-user-id-49b6463e6bcc3b31.yaml
 create mode 100644 releasenotes/notes/add-cyborg-support-b9afca69f709c048.yaml
 create mode 100644 releasenotes/notes/add-dns-606cc018e01d40fa.yaml
 create mode 100644 releasenotes/notes/add-dns-domain-support-for-port-3fa4568330dda07e.yaml
 create mode 100644 releasenotes/notes/add-dns-zone-share-api-374e71cac504917f.yaml
 create mode 100644 releasenotes/notes/add-fakes-generator-72c53d34c995fcb2.yaml
 create mode 100644 releasenotes/notes/add-find-backup-find-snapshot-v2-756a05ccd150db82.yaml
 create mode 100644 releasenotes/notes/add-fip-portforwarding-methods-cffc14a6283cedfb.yaml
 create mode 100644 releasenotes/notes/add-identity-domain-configuration-2e8bcaa20736b379.yaml
 create mode 100644 releasenotes/notes/add-identity-group-users-proxy-method-e37f8983b2406819.yaml
 create mode 100644 releasenotes/notes/add-image-attributes-05b820a85cd09806.yaml
 create mode 100644 releasenotes/notes/add-image-cache-support-3f8c13550a84d749.yaml
 create mode 100644 releasenotes/notes/add-image-cache-support-78477e1686c52e56.yaml
 create mode 100644 releasenotes/notes/add-image-metadef-namespace-support-b93557afdcf4272c.yaml
 create mode 100644 releasenotes/notes/add-image-metadef-property-fb87e5a7090e73ac.yaml
 create mode 100644 releasenotes/notes/add-image-metadef-schema-b463825481bdf954.yaml
 create mode 100644 releasenotes/notes/add-image-schema-9c07c2789490718a.yaml
 create mode 100644 releasenotes/notes/add-image-service-info-90d6063b5ba0735d.yaml
 create mode 100644 releasenotes/notes/add-image-stage-1dbc3844a042fd26.yaml
 create mode 100644 releasenotes/notes/add-jmespath-support-f47b7a503dbbfda1.yaml
 create mode 100644 releasenotes/notes/add-limit-to-shared-file-2b443c2a00c75e6e.yaml
 create mode 100644 releasenotes/notes/add-list_flavor_access-e038253e953e6586.yaml
 create mode 100644 releasenotes/notes/add-load-balancer-flavor-api-d2598e30347a19fc.yaml
 create mode 100644 releasenotes/notes/add-load-balancer-flavor-profile-api-e5a15157563eb75f.yaml
 create mode 100644 releasenotes/notes/add-load-balancer-listener-alpn-protocols-ded816c78bf2080c.yaml
 create mode 100644 releasenotes/notes/add-load-balancer-pool-alpn-protocols-77f0c7015f176369.yaml
 create mode 100644 releasenotes/notes/add-load-balancer-provider-api-08bcfb72ddf5b247.yaml
 create mode 100644 releasenotes/notes/add-magnum-cluster-support-843fe2709b8f4789.yaml
 create mode 100644 releasenotes/notes/add-manage-volume-support-a4fd90e3ff2fa0d0.yaml
 create mode 100644 releasenotes/notes/add-masakara-support-3f7df4436ac869cf.yaml
 create mode 100644 releasenotes/notes/add-masakari-enabled-to-segment-0e83da869d2ab03f.yaml
 create mode 100644 releasenotes/notes/add-masakari-vmoves-873ad67830c92254.yaml
 create mode 100644 releasenotes/notes/add-metadef-object-5eec168baf039e80.yaml
 create mode 100644 releasenotes/notes/add-migrations-946adf16674d4b2a.yaml
 create mode 100644 releasenotes/notes/add-new-field-progress-details-in-notification-resource-f7871acb6ffd46dc.yaml
 create mode 100644 releasenotes/notes/add-node-boot-mode-5f49882fdd86f35b.yaml
 create mode 100644 releasenotes/notes/add-node-boot-mode-set-5718a8d6511b4826.yaml
 create mode 100644 releasenotes/notes/add-node-inventory-52f54e16777814e7.yaml
 create mode 100644 releasenotes/notes/add-node-vendor_passthru-29b384cadf795b48.yaml
 create mode 100644 releasenotes/notes/add-octavia-amphora-api-7f3586f6a4f31de4.yaml
 create mode 100644 releasenotes/notes/add-octavia-lb-failover-9a34c9577d78ad34.yaml
 create mode 100644 releasenotes/notes/add-octavia-lb-listener-stats-1538cc6e4f734353.yaml
 create mode 100644 releasenotes/notes/add-octavia-listener-hsts-fields-50c621b71e56dc13.yaml
 create mode 100644 releasenotes/notes/add-octavia-tags-support-1c1cf94184e6ebb7.yaml
 create mode 100644 releasenotes/notes/add-placement-resource-class-e1c644d978b886bc.yaml
 create mode 100644 releasenotes/notes/add-placement-resource-provider-aggregates-1310c0be6a4097d3.yaml
 create mode 100644 releasenotes/notes/add-placement-resource-provider-inventory-8714cafefae74810.yaml
 create mode 100644 releasenotes/notes/add-placement-support-a2011eb1e900804d.yaml
 create mode 100644 releasenotes/notes/add-placement-trait-29957d2c03edbfb9.yaml
 create mode 100644 releasenotes/notes/add-port-hardware-offload-type-1232c5ae3f62d7df.yaml
 create mode 100644 releasenotes/notes/add-port-numa-affinity-policy-b42a85dbe26560d2.yaml
 create mode 100644 releasenotes/notes/add-propagate_uplink_status-to-port-0152d476c65979e3.yaml
 create mode 100644 releasenotes/notes/add-server-console-078ed2696e5b04d9.yaml
 create mode 100644 releasenotes/notes/add-server-migrations-6e31183196f14deb.yaml
 create mode 100644 releasenotes/notes/add-service-0bcc16eb026eade3.yaml
 create mode 100644 releasenotes/notes/add-sg-rules-bulk-f36a3e2326d74867.yaml
 create mode 100644 releasenotes/notes/add-share-access-rules-to-shared-file-362bee34f7331186.yaml
 create mode 100644 releasenotes/notes/add-share-network-subnet-to-shared-file-b5de3ce6ca723209.yaml
 create mode 100644 releasenotes/notes/add-share-network-to-shared-file-c5c9a6b8ccf1d958.yaml
 create mode 100644 releasenotes/notes/add-share-snapshot-instance-to-shared-file-4d935f12d67bf59d.yaml
 create mode 100644 releasenotes/notes/add-share-snapshot-to-shared-file-82ecedbdbed2e3c5.yaml
 create mode 100644 releasenotes/notes/add-share_group-to-shared-file-8cee20d8aa2afbb7.yaml
 create mode 100644 releasenotes/notes/add-shared-file-syste-share_instance-fffaea2d3a77ba24.yaml
 create mode 100644 releasenotes/notes/add-shared-file-system-locks-support-4859ca93f93a1056.yaml
 create mode 100644 releasenotes/notes/add-shared-file-system-manage-unmanage-share-830e313f96e5fd2b.yaml
 create mode 100644 releasenotes/notes/add-shared-file-system-share-group-snapshot-c5099e6c8accf077.yaml
 create mode 100644 releasenotes/notes/add-shared-file-system-share-metadata-e0415bb71d8a0a48.yaml
 create mode 100644 releasenotes/notes/add-shared-file-system-share-resize-ddd650c2e32fed34.yaml
 create mode 100644 releasenotes/notes/add-shared-file-system-shares-2e1d44a1bb882d6d.yaml
 create mode 100644 releasenotes/notes/add-shared-file-system-shares-e9f356a318045607.yaml
 create mode 100644 releasenotes/notes/add-shared-file-systems-83a3767429fd5e8c.yaml
 create mode 100644 releasenotes/notes/add-shared-file-systems-export-location-a27c1741880c384b.yaml
 create mode 100644 releasenotes/notes/add-shelve_offload-427f6550fc55e622.yaml
 create mode 100644 releasenotes/notes/add-show-all-images-flag-352748b6c3d99f3f.yaml
 create mode 100644 releasenotes/notes/add-stack-events-b8674d7bb657e789.yaml
 create mode 100644 releasenotes/notes/add-stack-export-3ace746a8c80d766.yaml
 create mode 100644 releasenotes/notes/add-stack-suspend-and-resume-26d4fc5904291d5d.yaml
 create mode 100644 releasenotes/notes/add-storage-pool-to-shared-file-ad45da1b2510b412.yaml
 create mode 100644 releasenotes/notes/add-support-allowed-cidrs-loadbalancer-listener-809e523a8bd6a7d5.yaml
 create mode 100644 releasenotes/notes/add-support-availability_zone-loadbalancer-a18aa1708d7859e2.yaml
 create mode 100644 releasenotes/notes/add-support-for-setting-static-routes-b3ce6cac2c5e9e51.yaml
 create mode 100644 releasenotes/notes/add-system-role-assignment-693dd3e1da33a54d.yaml
 create mode 100644 releasenotes/notes/add-tls-container-refs-params-for-octavia-pools-76f295cd2daa7f53.yaml
 create mode 100644 releasenotes/notes/add-tls-version-support-for-octavia-7ecb372e6fb58101.yaml
 create mode 100644 releasenotes/notes/add-tls_enabled-parameter-for-octavia-pools-f0a23436d826b313.yaml
 create mode 100644 releasenotes/notes/add-unified-limit-5ac334a08e137a70.yaml
 create mode 100644 releasenotes/notes/add-user-group-assignment-9c419b6c6bfe392c.yaml
 create mode 100644 releasenotes/notes/add-user-message-to-shared-file-85d7bbccf8347c4f.yaml
 create mode 100644 releasenotes/notes/add-volume-attachment-support-b5f9a9e78ba88355.yaml
 create mode 100644 releasenotes/notes/add-volume-extend-support-86e5c8cff5d6874e.yaml
 create mode 100644 releasenotes/notes/add-volume-snapshot-manage-unmanage-support-fc0be2a3fb4427d1.yaml
 create mode 100644 releasenotes/notes/add-volume-transfer-support-28bf34a243d96e1b.yaml
 create mode 100644 releasenotes/notes/add-volume-type-update-b84f50b7fa3b061d.yaml
 create mode 100644 releasenotes/notes/add_description_create_user-0ddc9a0ef4da840d.yaml
 create mode 100644 releasenotes/notes/add_designate_recordsets_support-69af0a6b317073e7.yaml
 create mode 100644 releasenotes/notes/add_designate_zones_support-35fa9b8b09995b43.yaml
 create mode 100644 releasenotes/notes/add_heat_tag_support-135aa43ba1dce3bb.yaml
 create mode 100644 releasenotes/notes/add_host_aggregate_support-471623faf45ec3c3.yaml
 create mode 100644 releasenotes/notes/add_image_import_support-6cea2e7d7a781071.yaml
 create mode 100644 releasenotes/notes/add_influxdb_stats-665714d715302ad5.yaml
 create mode 100644 releasenotes/notes/add_magnum_baymodel_support-e35e5aab0b14ff75.yaml
 create mode 100644 releasenotes/notes/add_magnum_services_support-3d95f9dcc60b5573.yaml
 create mode 100644 releasenotes/notes/add_project_cleanup-39c3517b25a5372e.yaml
 create mode 100644 releasenotes/notes/add_server_group_support-dfa472e3dae7d34d.yaml
 create mode 100644 releasenotes/notes/add_support_port_binding_attrs-c70966724eb970f3.yaml
 create mode 100644 releasenotes/notes/add_update_server-8761059d6de7e68b.yaml
 create mode 100644 releasenotes/notes/add_update_service-28e590a7a7524053.yaml
 create mode 100644 releasenotes/notes/add_vendor_hook-e87b6afb7f215a30.yaml
 create mode 100644 releasenotes/notes/added-federation-support-3b65e531e57211f5.yaml
 create mode 100644 releasenotes/notes/added-senlin-support-1eb4e47c31258f66.yaml
 create mode 100644 releasenotes/notes/allocation-api-04f6b3b7a0ccc850.yaml
 create mode 100644 releasenotes/notes/allocation-update-910c36c1290e5121.yaml
 create mode 100644 releasenotes/notes/alternate-auth-context-3939f1492a0e1355.yaml
 create mode 100644 releasenotes/notes/always-detail-cluster-templates-3eb4b5744ba327ac.yaml
 create mode 100644 releasenotes/notes/auth-url-vexxhost-8d63cd17bde21320.yaml
 create mode 100644 releasenotes/notes/bail-on-failed-service-cf299c37d5647b08.yaml
 create mode 100644 releasenotes/notes/baremetal-configdrive-mkisofs-xorrisofs-075db4d7d80e5a13.yaml
 create mode 100644 releasenotes/notes/baremetal-details-09b27fba82111cfb.yaml
 create mode 100644 releasenotes/notes/baremetal-errors-5cc871e8df4c9d95.yaml
 create mode 100644 releasenotes/notes/baremetal-fields-1f6fbcd8bd1ea2aa.yaml
 create mode 100644 releasenotes/notes/baremetal-fields-624546fa533a8287.yaml
 create mode 100644 releasenotes/notes/baremetal-fields-convert-857b8804327f1e86.yaml
 create mode 100644 releasenotes/notes/baremetal-introspection-973351b3ee76309e.yaml
 create mode 100644 releasenotes/notes/baremetal-maintenance-5cb95c6d898d4d72.yaml
 create mode 100644 releasenotes/notes/baremetal-patch-feebd96b1b92f3b9.yaml
 create mode 100644 releasenotes/notes/baremetal-ports-cc0f56ae0d192aba.yaml
 create mode 100644 releasenotes/notes/baremetal-reservation-40327923092e9647.yaml
 create mode 100644 releasenotes/notes/baremetal-retired-fields-f56a4632ad4797d7.yaml
 create mode 100644 releasenotes/notes/baremetal-retries-804f553b4e22b3bf.yaml
 create mode 100644 releasenotes/notes/baremetal-retries-ff8aa8f73fb97415.yaml
 create mode 100644 releasenotes/notes/baremetal-traits-d1137318db33b8d1.yaml
 create mode 100644 releasenotes/notes/baremetal-update-80effb38aae8e02d.yaml
 create mode 100644 releasenotes/notes/baremetal-validate-ccce2a37d2a20d96.yaml
 create mode 100644 releasenotes/notes/baremetal-vif-122457118c722a9b.yaml
 create mode 100644 releasenotes/notes/baremetal-wait-e4571cdb150b188a.yaml
 create mode 100644 releasenotes/notes/basic-api-cache-4ad8cf2754b004d1.yaml
 create mode 100644 releasenotes/notes/block-storage-backup-5886e91fd6e423bf.yaml
 create mode 100644 releasenotes/notes/block-storage-init-return-95b465b4755f03ca.yaml
 create mode 100644 releasenotes/notes/block-storage-qs-0e3b69be2e709b65.yaml
 create mode 100644 releasenotes/notes/block-storage-v3-9798d584d088c048.yaml
 create mode 100644 releasenotes/notes/block_storage-type_encryption-121f8a222c822fb5.yaml
 create mode 100644 releasenotes/notes/boot-on-server-group-a80e51850db24b3d.yaml
 create mode 100644 releasenotes/notes/bug-2001080-de52ead3c5466792.yaml
 create mode 100644 releasenotes/notes/bug-2010898-430da335e4df0efe.yaml
 create mode 100644 releasenotes/notes/cache-auth-in-keyring-773dd5f682cd1610.yaml
 create mode 100644 releasenotes/notes/cache-in-use-volumes-c7fa8bb378106fe3.yaml
 create mode 100644 releasenotes/notes/catch-up-release-notes-e385fad34e9f3d6e.yaml
 create mode 100644 releasenotes/notes/change-attach-vol-return-value-4834a1f78392abb1.yaml
 create mode 100644 releasenotes/notes/cinder_volume_backups_support-6f7ceab440853833.yaml
 create mode 100644 releasenotes/notes/cinderv2-norm-fix-037189c60b43089f.yaml
 create mode 100644 releasenotes/notes/cleanup-objects-f99aeecf22ac13dd.yaml
 create mode 100644 releasenotes/notes/cloud-profile-status-e0d29b5e2f10e95c.yaml
 create mode 100644 releasenotes/notes/clustering-resource-deletion-bed869ba47c2aac1.yaml
 create mode 100644 releasenotes/notes/complete-aggregate-functions-45d5f2beeeac2b48.yaml
 create mode 100644 releasenotes/notes/compute-microversion-2-17-b05cb87580b8d56a.yaml
 create mode 100644 releasenotes/notes/compute-microversion-2-73-abae1d0c3740f76e.yaml
 create mode 100644 releasenotes/notes/compute-microversion-2-89-8c5187cc3bf6bd02.yaml
 create mode 100644 releasenotes/notes/compute-quota-set-e664412d089945d2.yaml
 create mode 100644 releasenotes/notes/compute-quotas-b07a0f24dfac8444.yaml
 create mode 100644 releasenotes/notes/compute-restore-server-020bf091acc9f8df.yaml
 create mode 100644 releasenotes/notes/compute-service-zone-2b25ec705b0156c4.yaml
 create mode 100644 releasenotes/notes/compute-usage-defaults-5f5b2936f17ff400.yaml
 create mode 100644 releasenotes/notes/compute-volume-attachment-proxy-method-rework-dc35fe9ca3af1c16.yaml
 create mode 100644 releasenotes/notes/conf-object-ctr-c0e1da0a67dad841.yaml
 create mode 100644 releasenotes/notes/config-aliases-0f6297eafd05c07c.yaml
 create mode 100644 releasenotes/notes/config-flavor-specs-ca712e17971482b6.yaml
 create mode 100644 releasenotes/notes/configdrive-f8ca9f94b2981db7.yaml
 create mode 100644 releasenotes/notes/container-search-b0f4253ce2deeda5.yaml
 create mode 100644 releasenotes/notes/create-object-data-870cb543543aa983.yaml
 create mode 100644 releasenotes/notes/create-object-directory-98e2cae175cc5082.yaml
 create mode 100644 releasenotes/notes/create-stack-fix-12dbb59a48ac7442.yaml
 create mode 100644 releasenotes/notes/create-subnet-by-subnetpool-eba1129c67ed4d96.yaml
 create mode 100644 releasenotes/notes/create_server_network_fix-c4a56b31d2850a4b.yaml
 create mode 100644 releasenotes/notes/create_service_norm-319a97433d68fa6a.yaml
 create mode 100644 releasenotes/notes/cron_triggers_proxy-51aa89e91bbb9798.yaml
 create mode 100644 releasenotes/notes/data-model-cf50d86982646370.yaml
 create mode 100644 releasenotes/notes/default-cloud-7ee0bcb9e5dd24b9.yaml
 create mode 100644 releasenotes/notes/default-microversion-b2401727cb591002.yaml
 create mode 100644 releasenotes/notes/delete-autocreated-1839187b0aa35022.yaml
 create mode 100644 releasenotes/notes/delete-image-objects-9d4b4e0fff36a23f.yaml
 create mode 100644 releasenotes/notes/delete-obj-return-a3ecf0415b7a2989.yaml
 create mode 100644 releasenotes/notes/delete_project-399f9b3107014dde.yaml
 create mode 100644 releasenotes/notes/deprecate-remote_ip_prefix-metering-label-rules-843d5a962e4e428c.yaml
 create mode 100644 releasenotes/notes/deprecated-compute-image-proxy-apis-986263f6aa1b1b25.yaml
 create mode 100644 releasenotes/notes/deprecated-profile-762afdef0e8fc9e8.yaml
 create mode 100644 releasenotes/notes/disable-service-39df96ef8a817785.yaml
 create mode 100644 releasenotes/notes/dns-domain-parameter-d3acfc3287a9d632.yaml
 create mode 100644 releasenotes/notes/domain_operations_name_or_id-baba4cac5b67234d.yaml
 create mode 100644 releasenotes/notes/drop-Resource-allow_get-attribute-fec75b551fb79465.yaml
 create mode 100644 releasenotes/notes/drop-formatter-deserialize-30b19956fb79bb8d.yaml
 create mode 100644 releasenotes/notes/drop-python27-b824f9ce51cb1ab7.yaml
 create mode 100644 releasenotes/notes/drop-senlin-cloud-layer-c06d496acc70b014.yaml
 create mode 100644 releasenotes/notes/dropped-python-3.5-b154887cce87947c.yaml
 create mode 100644 releasenotes/notes/dual-stack-networks-8a81941c97d28deb.yaml
 create mode 100644 releasenotes/notes/endpoint-from-catalog-bad36cb0409a4e6a.yaml
 create mode 100644 releasenotes/notes/expose-client-side-rate-limit-ddb82df7cb92091c.yaml
 create mode 100644 releasenotes/notes/false-not-attribute-error-49484d0fdc61f75d.yaml
 create mode 100644 releasenotes/notes/feature-server-metadata-50caf18cec532160.yaml
 create mode 100644 releasenotes/notes/find_server-use-details-9a22e83ec6540c98.yaml
 create mode 100644 releasenotes/notes/fip_timeout-035c4bb3ff92fa1f.yaml
 create mode 100644 releasenotes/notes/firewall-resources-c7589d288dd57e35.yaml
 create mode 100644 releasenotes/notes/fix-compat-with-old-keystoneauth-66e11ee9d008b962.yaml
 create mode 100644 releasenotes/notes/fix-config-drive-a148b7589f7e1022.yaml
 create mode 100644 releasenotes/notes/fix-delete-ips-1d4eebf7bc4d4733.yaml
 create mode 100644 releasenotes/notes/fix-dns-return-c810d5e6736322f1.yaml
 create mode 100644 releasenotes/notes/fix-endpoint-override-ac41baeec9549ab3.yaml
 create mode 100644 releasenotes/notes/fix-floating-ip-private-matching-84e369eee380a185.yaml
 create mode 100644 releasenotes/notes/fix-for-microversion-70cd686b6d6e3fd0.yaml
 create mode 100644 releasenotes/notes/fix-image-hw_qemu_guest_agent-bf1147e52c84b5e8.yaml
 create mode 100644 releasenotes/notes/fix-image-task-ae79502dd5c7ecba.yaml
 create mode 100644 releasenotes/notes/fix-list-networks-a592725df64c306e.yaml
 create mode 100644 releasenotes/notes/fix-microversion-354dc70deb2b2f0b.yaml
 create mode 100644 releasenotes/notes/fix-missing-futures-a0617a1c1ce6e659.yaml
 create mode 100644 releasenotes/notes/fix-neutron-endpoint-mangling-a9dd89dd09bc71ec.yaml
 create mode 100644 releasenotes/notes/fix-os_auth_type-v3multifactor-049cf52573d9e00e.yaml
 create mode 100644 releasenotes/notes/fix-properties-key-conflict-2161ca1faaad6731.yaml
 create mode 100644 releasenotes/notes/fix-supplemental-fips-c9cd58aac12eb30e.yaml
 create mode 100644 releasenotes/notes/fix-task-timing-048afea680adc62e.yaml
 create mode 100644 releasenotes/notes/fix-update-domain-af47b066ac52eb7f.yaml
 create mode 100644 releasenotes/notes/fix-yaml-load-3e6bd852afe549b4.yaml
 create mode 100644 releasenotes/notes/fixed-magnum-type-7406f0a60525f858.yaml
 create mode 100644 releasenotes/notes/flavor-cloud-layer-0b4d130ac1c5e7c4.yaml
 create mode 100644 releasenotes/notes/flavor_fix-a53c6b326dc34a2c.yaml
 create mode 100644 releasenotes/notes/floating_ip_normalization-41e0edcdb0c98aee.yaml
 create mode 100644 releasenotes/notes/fnmatch-name-or-id-f658fe26f84086c8.yaml
 create mode 100644 releasenotes/notes/force_ipv4_no_ipv6_address-9842168b5d05d262.yaml
 create mode 100644 releasenotes/notes/futurist-b54b0f449d410997.yaml
 create mode 100644 releasenotes/notes/generate-form-signature-294ca46812f291d6.yaml
 create mode 100644 releasenotes/notes/get-limits-c383c512f8e01873.yaml
 create mode 100644 releasenotes/notes/get-object-raw-e58284e59c81c8ef.yaml
 create mode 100644 releasenotes/notes/get-server-by-id-none-3e8538800fa09d82.yaml
 create mode 100644 releasenotes/notes/get-usage-72d249ff790d1b8f.yaml
 create mode 100644 releasenotes/notes/get_compute_usage-01811dccd60dc92a.yaml
 create mode 100644 releasenotes/notes/get_object_api-968483adb016bce1.yaml
 create mode 100644 releasenotes/notes/glance-image-pagination-0b4dfef22b25852b.yaml
 create mode 100644 releasenotes/notes/glance-image-stores-2baa66e6743a2f2d.yaml
 create mode 100644 releasenotes/notes/global-request-id-d7c0736f43929165.yaml
 create mode 100644 releasenotes/notes/grant-revoke-assignments-231d3f9596a1ae75.yaml
 create mode 100644 releasenotes/notes/identity-auth-url-f3ae8ef22d2bcab6.yaml
 create mode 100644 releasenotes/notes/image-flavor-by-name-54865b00ebbf1004.yaml
 create mode 100644 releasenotes/notes/image-from-volume-9acf7379f5995b5b.yaml
 create mode 100644 releasenotes/notes/image-id-filter-key-b9b6b52139a27cbe.yaml
 create mode 100644 releasenotes/notes/image-import-proxy-params-f19d8b6166104ebe.yaml
 create mode 100644 releasenotes/notes/image-import-support-97052cdbc8ce449b.yaml
 create mode 100644 releasenotes/notes/image-proxy-layer-kwarg-only-arguments-94c9b2033d386160.yaml
 create mode 100644 releasenotes/notes/image-update-76bd3bf24c1c1380.yaml
 create mode 100644 releasenotes/notes/improve-metrics-5d7ce70ce4021d72.yaml
 create mode 100644 releasenotes/notes/infer-secgroup-source-58d840aaf1a1f485.yaml
 create mode 100644 releasenotes/notes/introduce-source-and-destination-ip-prefixes-into-metering-label-rules-e04b797adac5d0d0.yaml
 create mode 100644 releasenotes/notes/introspection-node-6a3b7d55839ef82c.yaml
 create mode 100644 releasenotes/notes/ironic-conductors-support-3bf27e8b2f0299ba.yaml
 create mode 100644 releasenotes/notes/ironic-deploy-steps-2c0f39d7d2a13289.yaml
 create mode 100644 releasenotes/notes/ironic-deploy-template-support-fa56005365ed6e4d.yaml
 create mode 100644 releasenotes/notes/ironic-introspection_rules_support-18b0488a76800122.yaml
 create mode 100644 releasenotes/notes/ironic-microversion-ba5b0f36f11196a6.yaml
 create mode 100644 releasenotes/notes/ironic-node-shard-35f2557c3dbfff1d.yaml
 create mode 100644 releasenotes/notes/ironic-volume_target-support-8130361804366787.yaml
 create mode 100644 releasenotes/notes/ksa-discovery-86a4ef00d85ea87f.yaml
 create mode 100644 releasenotes/notes/less-file-hashing-d2497337da5acbef.yaml
 create mode 100644 releasenotes/notes/list-all_projects-filter-27f1d471a7848507.yaml
 create mode 100644 releasenotes/notes/list-az-names-a38c277d1192471b.yaml
 create mode 100644 releasenotes/notes/list-network-resources-empty-list-6aa760c01e7d97d7.yaml
 create mode 100644 releasenotes/notes/list-role-assignments-keystone-v2-b127b12b4860f50c.yaml
 create mode 100644 releasenotes/notes/list-servers-all-projects-349e6dc665ba2e8d.yaml
 create mode 100644 releasenotes/notes/load-yaml-3177efca78e5c67a.yaml
 create mode 100644 releasenotes/notes/location-server-resource-af77fdab5d35d421.yaml
 create mode 100644 releasenotes/notes/log-request-ids-37507cb6eed9a7da.yaml
 create mode 100644 releasenotes/notes/machine-get-update-microversions-4b910e63cebd65e2.yaml
 create mode 100644 releasenotes/notes/magic-fixes-dca4ae4dac2441a8.yaml
 create mode 100644 releasenotes/notes/make-cloud-region-standalone-848a2c4b5f3ebc29.yaml
 create mode 100644 releasenotes/notes/make-rest-client-dd3d365632a26fa0.yaml
 create mode 100644 releasenotes/notes/make-rest-client-version-discovery-84125700f159491a.yaml
 create mode 100644 releasenotes/notes/make_object_metadata_easier.yaml-e9751723e002e06f.yaml
 create mode 100644 releasenotes/notes/merge-shade-os-client-config-29878734ad643e33.yaml
 create mode 100644 releasenotes/notes/meta-passthrough-d695bff4f9366b65.yaml
 create mode 100644 releasenotes/notes/metadata-key-name-bugfix-77612a825c5145d7.yaml
 create mode 100644 releasenotes/notes/min-max-legacy-version-301242466ddefa93.yaml
 create mode 100644 releasenotes/notes/mtu-settings-8ce8b54d096580a2.yaml
 create mode 100644 releasenotes/notes/multiple-updates-b48cc2f6db2e526d.yaml
 create mode 100644 releasenotes/notes/munch-sub-dict-e1619c71c26879cb.yaml
 create mode 100644 releasenotes/notes/nat-source-field-7c7db2a724616d59.yaml
 create mode 100644 releasenotes/notes/nat-source-support-92aaf6b336d0b848.yaml
 create mode 100644 releasenotes/notes/net_provider-dd64b697476b7094.yaml
 create mode 100644 releasenotes/notes/network-data-bd94e4a499ba3e0d.yaml
 create mode 100644 releasenotes/notes/network-data-deb5772edc111428.yaml
 create mode 100644 releasenotes/notes/network-list-e6e9dafdd8446263.yaml
 create mode 100644 releasenotes/notes/network-qos-rule-filter-keys-324e3222510fd362.yaml
 create mode 100644 releasenotes/notes/network-quotas-b98cce9ffeffdbf4.yaml
 create mode 100644 releasenotes/notes/network-security-group-query-parameter-id-f6dda45b2c09dbaa.yaml
 create mode 100644 releasenotes/notes/network_add_bgp_resources-c182dc2873d6db18.yaml
 create mode 100644 releasenotes/notes/network_add_bgpvpn_resources-b3bd0b568c3c99db.yaml
 create mode 100644 releasenotes/notes/network_add_sfc_resources-8a52c0c8c1f8e932.yaml
 create mode 100644 releasenotes/notes/network_add_taas_resources-86a947265e11ce84.yaml
 create mode 100644 releasenotes/notes/neutron-discovery-54399116d5f810ee.yaml
 create mode 100644 releasenotes/notes/neutron_availability_zone_extension-675c2460ebb50a09.yaml
 create mode 100644 releasenotes/notes/new-floating-attributes-213cdf5681d337e1.yaml
 create mode 100644 releasenotes/notes/no-import-fallback-a09b5d5a11299933.yaml
 create mode 100644 releasenotes/notes/no-inspect-associated-563e272785bb6016.yaml
 create mode 100644 releasenotes/notes/no-more-troveclient-0a4739c21432ac63.yaml
 create mode 100644 releasenotes/notes/no-start-task-manager-56773f3ea5eb3a59.yaml
 create mode 100644 releasenotes/notes/node-boot-devices-2ab4991d75a2ab52.yaml
 create mode 100644 releasenotes/notes/node-consoles-63589f22da98a689.yaml
 create mode 100644 releasenotes/notes/node-create-027ea99193f344ef.yaml
 create mode 100644 releasenotes/notes/node-inject-nmi-53d12681026e0b6c.yaml
 create mode 100644 releasenotes/notes/node-owner-7f4b083ff9da8cce.yaml
 create mode 100644 releasenotes/notes/node-set-provision-state-3472cbd81c47458f.yaml
 create mode 100644 releasenotes/notes/norm_role_assignments-a13f41768e62d40c.yaml
 create mode 100644 releasenotes/notes/normalize-images-1331bea7bfffa36a.yaml
 create mode 100644 releasenotes/notes/normalize-machine-290d9f2a3b3a7ef0.yaml
 create mode 100644 releasenotes/notes/nova-flavor-to-rest-0a5757e35714a690.yaml
 create mode 100644 releasenotes/notes/nova-old-microversion-5e4b8e239ba44096.yaml
 create mode 100644 releasenotes/notes/object-checksum-generation-ea1c1e47d2290054.yaml
 create mode 100644 releasenotes/notes/object-chunked-data-ee619b7d4759b8d2.yaml
 create mode 100644 releasenotes/notes/object-search-a5f5ec4b2df3e045.yaml
 create mode 100644 releasenotes/notes/old-placement-4b3c34abb8fe7b81.yaml
 create mode 100644 releasenotes/notes/optimize-server-console-1d27c107b9a1cdc3.yaml
 create mode 100644 releasenotes/notes/option-precedence-1fecab21fdfb2c33.yaml
 create mode 100644 releasenotes/notes/port-device-profile-af91e25c45321691.yaml
 create mode 100644 releasenotes/notes/power-wait-751083852f958cb4.yaml
 create mode 100644 releasenotes/notes/project-cleanup-exclude-option-65cba962eaa5b61a.yaml
 create mode 100644 releasenotes/notes/project-cleanup-swift-f67615e5c3ab8fd8.yaml
 create mode 100644 releasenotes/notes/provision-state-negotiation-0155b4d0e932054c.yaml
 create mode 100644 releasenotes/notes/python-3.5-629817cec092d528.yaml
 create mode 100644 releasenotes/notes/qos-min-pps-rule-52df1b150b1d3f68.yaml
 create mode 100644 releasenotes/notes/qos-port-network-policy-cab43faa0f8bc036.yaml
 create mode 100644 releasenotes/notes/r1-cab94ae7d749a1ec.yaml
 create mode 100644 releasenotes/notes/r1-d4efe289ebf0cbcd.yaml
 create mode 100644 releasenotes/notes/rackspace-block-storage-v2-fe0dd69b9e037599.yaml
 create mode 100644 releasenotes/notes/register-machine-72ac3e65a1ed55b1.yaml
 create mode 100644 releasenotes/notes/remote-address-group-id-6291816888cb3de7.yaml
 create mode 100644 releasenotes/notes/remote-profile-100218d08b25019d.yaml
 create mode 100644 releasenotes/notes/remove-auto-container-527f1807605b42c0.yaml
 create mode 100644 releasenotes/notes/remove-block-store-details-classes-158ab1f46655320a.yaml
 create mode 100644 releasenotes/notes/remove-cloud-caching-layer-2b0384870a45e8a3.yaml
 create mode 100644 releasenotes/notes/remove-magnumclient-875b3e513f98f57c.yaml
 create mode 100644 releasenotes/notes/remove-metric-fe5ddfd52b43c852.yaml
 create mode 100644 releasenotes/notes/remove-novaclient-3f8d4db20d5f9582.yaml
 create mode 100644 releasenotes/notes/remove-serverdetails-resource-f66cb278b224627d.yaml
 create mode 100644 releasenotes/notes/removed-deprecated-things-8700fe3592c3bf18.yaml
 create mode 100644 releasenotes/notes/removed-glanceclient-105c7fba9481b9be.yaml
 create mode 100644 releasenotes/notes/removed-meter-6f6651b6e452e000.yaml
 create mode 100644 releasenotes/notes/removed-profile-437f3038025b0fb3.yaml
 create mode 100644 releasenotes/notes/removed-profile-b033d870937868a1.yaml
 create mode 100644 releasenotes/notes/removed-swiftclient-aff22bfaeee5f59f.yaml
 create mode 100644 releasenotes/notes/rename-base-proxy-b9fcb22d373864a2.yaml
 create mode 100644 releasenotes/notes/rename-resource-methods-5f2a716b08156765.yaml
 create mode 100644 releasenotes/notes/rename-service-force-down-6f462d62959a5315.yaml
 create mode 100644 releasenotes/notes/renamed-bare-metal-b1cdbc52af14e042.yaml
 create mode 100644 releasenotes/notes/renamed-block-store-bc5e0a7315bfeb67.yaml
 create mode 100644 releasenotes/notes/renamed-cluster-743da6d321fffcba.yaml
 create mode 100644 releasenotes/notes/renamed-telemetry-c08ae3e72afca24f.yaml
 create mode 100644 releasenotes/notes/replace-appdirs-with-platformdirs-d3f5bcbe726b7829.yaml
 create mode 100644 releasenotes/notes/request-stats-9d70480bebbdb4d6.yaml
 create mode 100644 releasenotes/notes/resource-find-filter-by-name-e647e5c507ff4b6c.yaml
 create mode 100644 releasenotes/notes/resource2-migration-835590b300bef621.yaml
 create mode 100644 releasenotes/notes/retrieve-detailed-view-for-find-proxy-methods-947a3280732c448a.yaml
 create mode 100644 releasenotes/notes/revert-futurist-34acc42fd3f0e7f3.yaml
 create mode 100644 releasenotes/notes/rework-compute-hypervisor-a62f275a0fd1f074.yaml
 create mode 100644 releasenotes/notes/router-extraroute-atomic-1a0c84c3fd90ceb1.yaml
 create mode 100644 releasenotes/notes/router_ext_gw-b86582317bca8b39.yaml
 create mode 100644 releasenotes/notes/sdk-helper-41f8d815cfbcfb00.yaml
 create mode 100644 releasenotes/notes/search_resource-b9c2f772e01d3b2c.yaml
 create mode 100644 releasenotes/notes/server-actions-microversion-support-f14b293d9c3d3d5e.yaml
 create mode 100644 releasenotes/notes/server-create-error-id-66c698c7e633fb8b.yaml
 create mode 100644 releasenotes/notes/server-security-groups-840ab28c04f359de.yaml
 create mode 100644 releasenotes/notes/service_enabled_flag-c917b305d3f2e8fd.yaml
 create mode 100644 releasenotes/notes/session-client-b581a6e5d18c8f04.yaml
 create mode 100644 releasenotes/notes/set-bootable-volume-454a7a41e7e77d08.yaml
 create mode 100644 releasenotes/notes/shade-helper-568f8cb372eef6d9.yaml
 create mode 100644 releasenotes/notes/shade-into-connection-81191fb3d0ddaf6e.yaml
 create mode 100644 releasenotes/notes/shade-location-b0d2e5cae743b738.yaml
 create mode 100644 releasenotes/notes/snap-updated_at-a46711b6160e3a26.yaml
 create mode 100644 releasenotes/notes/stack-update-5886e91fd6e423bf.yaml
 create mode 100644 releasenotes/notes/started-using-reno-242e2b0cd27f9480.yaml
 create mode 100644 releasenotes/notes/stateful-security-group-f32a78b9bbb49874.yaml
 create mode 100644 releasenotes/notes/stop-using-tenant-id-42eb35139ba9eeff.yaml
 create mode 100644 releasenotes/notes/story-2010784-21d23043155497f5.yaml
 create mode 100644 releasenotes/notes/stream-object-6ecd43511dca726b.yaml
 create mode 100644 releasenotes/notes/stream-to-file-91f48d6dcea399c6.yaml
 create mode 100644 releasenotes/notes/strict-mode-d493abc0c3e87945.yaml
 create mode 100644 releasenotes/notes/strict-proxies-4a315f68f387ee89.yaml
 create mode 100644 releasenotes/notes/support_stdin_image_upload-305c04fb2daeb32c.yaml
 create mode 100644 releasenotes/notes/swift-set-metadata-c18c60e440f9e4a7.yaml
 create mode 100644 releasenotes/notes/swift-upload-lock-d18f3d42b3a0719a.yaml
 create mode 100644 releasenotes/notes/switch-coe-to-proxy-c18789ed27cc1d95.yaml
 create mode 100644 releasenotes/notes/switch-nova-to-created_at-45b7b50af6a2d59e.yaml
 create mode 100644 releasenotes/notes/switch-to-warnings-333955d19afc99ca.yaml
 create mode 100644 releasenotes/notes/task-manager-parameter-c6606653532248f2.yaml
 create mode 100644 releasenotes/notes/toggle-port-security-f5bc606e82141feb.yaml
 create mode 100644 releasenotes/notes/unprocessed-2d75133911945869.yaml
 create mode 100644 releasenotes/notes/unshelve-to-specific-host-84666d440dce4a73.yaml
 create mode 100644 releasenotes/notes/update-role-property-b16e902e913c7b25.yaml
 create mode 100644 releasenotes/notes/update_endpoint-f87c1f42d0c0d1ef.yaml
 create mode 100644 releasenotes/notes/update_workflow-ecdef6056ef2687b.yaml
 create mode 100644 releasenotes/notes/use-interface-ip-c5cb3e7c91150096.yaml
 create mode 100644 releasenotes/notes/use-proxy-layer-dfc3764d52bc1f2a.yaml
 create mode 100644 releasenotes/notes/v4-fixed-ip-325740fdae85ffa9.yaml
 create mode 100644 releasenotes/notes/validate-machine-dcf528b8f587e3f0.yaml
 create mode 100644 releasenotes/notes/vendor-add-betacloud-03872c3485104853.yaml
 create mode 100644 releasenotes/notes/vendor-add-limestonenetworks-99b2ffab9fc23b08.yaml
 create mode 100644 releasenotes/notes/vendor-update-betacloud-37dac22d8d91a3c5.yaml
 create mode 100644 releasenotes/notes/vendor-updates-f11184ba56bb27cf.yaml
 create mode 100644 releasenotes/notes/version-command-70c37dd7f880e9ae.yaml
 create mode 100644 releasenotes/notes/version-discovery-a501c4e9e9869f77.yaml
 create mode 100644 releasenotes/notes/vol-updated_at-274c3a2bb94c8939.yaml
 create mode 100644 releasenotes/notes/volume-quotas-5b674ee8c1f71eb6.yaml
 create mode 100644 releasenotes/notes/volume-types-a07a14ae668e7dd2.yaml
 create mode 100644 releasenotes/notes/volume-update-876e6540c8471440.yaml
 create mode 100644 releasenotes/notes/volume_connector-api-f001e6f5fc4d1688.yaml
 create mode 100644 releasenotes/notes/wait-on-image-snapshot-27cd2eacab2fabd8.yaml
 create mode 100644 releasenotes/notes/wait-provision-state-no-fail-efa74dd39f687df8.yaml
 create mode 100644 releasenotes/notes/wait_for_server-8dc8446b7c673d36.yaml
 create mode 100644 releasenotes/notes/wait_for_status_delete_callback_param-68d30161e23340bb.yaml
 create mode 100644 releasenotes/notes/wire-in-retries-10898f7bc81e2269.yaml
 create mode 100644 releasenotes/notes/workaround-transitive-deps-1e7a214f3256b77e.yaml
 create mode 100644 releasenotes/notes/xenapi-use-agent-ecc33e520da81ffa.yaml
 create mode 100644 releasenotes/source/2023.1.rst
 create mode 100644 releasenotes/source/2023.2.rst
 create mode 100644 releasenotes/source/_static/.placeholder
 create mode 100644 releasenotes/source/_templates/.placeholder
 create mode 100644 releasenotes/source/conf.py
 create mode 100644 releasenotes/source/index.rst
 create mode 100644 releasenotes/source/ocata.rst
 create mode 100644 releasenotes/source/pike.rst
 create mode 100644 releasenotes/source/queens.rst
 create mode 100644 releasenotes/source/rocky.rst
 create mode 100644 releasenotes/source/stein.rst
 create mode 100644 releasenotes/source/train.rst
 create mode 100644 releasenotes/source/unreleased.rst
 create mode 100644 releasenotes/source/ussuri.rst
 create mode 100644 releasenotes/source/victoria.rst
 create mode 100644 releasenotes/source/wallaby.rst
 create mode 100644 releasenotes/source/xena.rst
 create mode 100644 releasenotes/source/yoga.rst
 create mode 100644 releasenotes/source/zed.rst
 create mode 100644 requirements.txt
 create mode 100644 roles/deploy-clouds-config/README.rst
 create mode 100644 roles/deploy-clouds-config/defaults/main.yaml
 create mode 100644 roles/deploy-clouds-config/tasks/main.yaml
 create mode 100644 roles/deploy-clouds-config/templates/clouds.yaml.j2
 create mode 100644 setup.cfg
 create mode 100644 setup.py
 create mode 100644 test-requirements.txt
 create mode 100644 tools/keystone_version.py
 create mode 100644 tools/nova_version.py
 create mode 100644 tools/print-services.py
 create mode 100644 tox.ini
 create mode 100644 zuul.d/acceptance-jobs.yaml
 create mode 100644 zuul.d/functional-jobs.yaml
 create mode 100644 zuul.d/metal-jobs.yaml
 create mode 100644 zuul.d/project.yaml

diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
new file mode 100644
index 0000000..790776c
--- /dev/null
+++ b/CONTRIBUTING.rst
@@ -0,0 +1,45 @@
+.. _contributing:
+
+============================
+Contributing to openstacksdk
+============================
+
+If you're interested in contributing to the openstacksdk project,
+the following will help get you started.
+
+Contributor License Agreement
+-----------------------------
+
+.. index::
+   single: license; agreement
+
+In order to contribute to the openstacksdk project, you need to have
+signed OpenStack's contributor's agreement.
+
+Please read `DeveloperWorkflow`_ before sending your first patch for review.
+Pull requests submitted through GitHub will be ignored.
+
+.. seealso::
+
+   * https://wiki.openstack.org/wiki/How_To_Contribute
+   * https://wiki.openstack.org/wiki/CLA
+
+.. _DeveloperWorkflow: https://docs.openstack.org/infra/manual/developers.html#development-workflow
+
+Project Hosting Details
+-----------------------
+
+Project Documentation
+    https://docs.openstack.org/openstacksdk/latest/
+
+Bug tracker
+    https://bugs.launchpad.net/openstacksdk
+
+Mailing list (prefix subjects with ``[sdk]`` for faster responses)
+    https://lists.openstack.org/mailman3/lists/openstack-discuss.lists.openstack.org/
+
+Code Hosting
+    https://opendev.org/openstack/openstacksdk
+
+Code Review
+    https://review.opendev.org/#/q/status:open+project:openstack/openstacksdk,n,z
diff --git a/HACKING.rst b/HACKING.rst
new file mode 100644
index 0000000..cf66c36
--- /dev/null
+++ b/HACKING.rst
@@ -0,0 +1,63 @@
+openstacksdk Style Commandments
+===============================
+
+Read the OpenStack Style Commandments
+https://docs.openstack.org/hacking/latest/
+
+Indentation
+-----------
+
+PEP-8 allows for 'visual' indentation. **Do not use it**.
+Visual indentation looks like this:
+
+.. code-block:: python
+
+  return_value = self.some_method(arg1, arg1,
+                                  arg3, arg4)
+
+Visual indentation makes refactoring the code base unnecessarily hard.
+
+Instead of visual indentation, use this:
+
+.. code-block:: python
+
+  return_value = self.some_method(
+      arg1, arg1, arg3, arg4)
+
+That way, if some_method ever needs to be renamed, the only line that needs
+to be touched is the line with some_method.
+
+Additionally, if you need to line break at the top of a block, please indent
+the continuation line an additional 4 spaces, like this:
+
+.. code-block:: python
+
+  for val in self.some_method(
+          arg1, arg1, arg3, arg4):
+      self.do_something_awesome()
+
+Neither of these are 'mandated' by PEP-8. However, they are prevailing styles
+within this code base.
+
+Unit Tests
+----------
+
+Unit tests should be virtually instant. If a unit test takes more than 1 second
+to run, it is a bad unit test. Honestly, 1 second is too slow.
+
+All unit test classes should subclass `openstack.tests.unit.base.TestCase`. The
+base TestCase class takes care of properly creating `Connection` objects
+in a way that protects against local environment.
+
+Test cases should use requests-mock to mock out HTTP interactions rather than
+using mock to mock out object access.
+
+Don't Use setUpClass
+--------------------
+
+setUpClass looks like it runs once for the class. In parallel test execution
+environments though, it runs once per execution context. This makes reasoning
+about when it is going to actually run and what is going to happen extremely
+difficult and can produce hard to debug test issues.
+
+Don't ever use it. It makes baby pandas cry.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..67db858
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,175 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..90f8a7a
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,6 @@
+include AUTHORS
+include ChangeLog
+exclude .gitignore
+exclude .gitreview
+
+global-exclude *.pyc
\ No newline at end of file
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..a3a0625
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,313 @@
+============
+openstacksdk
+============
+
+openstacksdk is a client library for building applications to work
+with OpenStack clouds. The project aims to provide a consistent and
+complete set of interactions with OpenStack's many services, along with
+complete documentation, examples, and tools.
+
+It also contains an abstraction interface layer. Clouds can do many things, but
+there are probably only about 10 of them that most people care about with any
+regularity. If you want to do complicated things, the per-service oriented
+portions of the SDK are for you. However, if what you want is to be able to
+write an application that talks to any OpenStack cloud regardless of
+configuration, then the Cloud Abstraction layer is for you.
+
+More information about the history of openstacksdk can be found at
+https://docs.openstack.org/openstacksdk/latest/contributor/history.html
+
+Getting started
+---------------
+
+openstacksdk aims to talk to any OpenStack cloud. To do this, it requires a
+configuration file. openstacksdk favours ``clouds.yaml`` files, but can also
+use environment variables. The ``clouds.yaml`` file should be provided by your
+cloud provider or deployment tooling. An example:
+
+.. code-block:: yaml
+
+    clouds:
+      mordred:
+        region_name: Dallas
+        auth:
+          username: 'mordred'
+          password: XXXXXXX
+          project_name: 'demo'
+          auth_url: 'https://identity.example.com'
+
+openstacksdk will look for ``clouds.yaml`` files in the following locations:
+
+* ``.`` (the current directory)
+* ``$HOME/.config/openstack``
+* ``/etc/openstack``
+
+openstacksdk consists of three layers. Most users will make use of the *proxy*
+layer. Using the above ``clouds.yaml``, consider listing servers:
+
+.. code-block:: python
+
+    import openstack
+
+    # Initialize and turn on debug logging
+    openstack.enable_logging(debug=True)
+
+    # Initialize connection
+    conn = openstack.connect(cloud='mordred')
+
+    # List the servers
+    for server in conn.compute.servers():
+        print(server.to_dict())
+
+openstacksdk also contains a higher-level *cloud* layer based on logical
+operations:
+
+.. code-block:: python
+
+    import openstack
+
+    # Initialize and turn on debug logging
+    openstack.enable_logging(debug=True)
+
+    # Initialize connection
+    conn = openstack.connect(cloud='mordred')
+
+    # List the servers
+    for server in conn.list_servers():
+        print(server.to_dict())
+
+The benefit of this layer is mostly seen in more complicated operations that
+take multiple steps and where the steps vary across providers. For example:
+
+.. code-block:: python
+
+    import openstack
+
+    # Initialize and turn on debug logging
+    openstack.enable_logging(debug=True)
+
+    # Initialize connection
+    conn = openstack.connect(cloud='mordred')
+
+    # Upload an image to the cloud
+    image = conn.create_image(
+        'ubuntu-trusty', filename='ubuntu-trusty.qcow2', wait=True)
+
+    # Find a flavor with at least 512M of RAM
+    flavor = conn.get_flavor_by_ram(512)
+
+    # Boot a server, wait for it to boot, and then do whatever is needed
+    # to get a public IP address for it.
+    conn.create_server(
+        'my-server', image=image, flavor=flavor, wait=True, auto_ip=True)
+
+Finally, there is the low-level *resource* layer. This provides support for the
+basic CRUD operations supported by REST APIs and is the base building block for
+the other layers. You typically will not need to use this directly:
+
+.. code-block:: python
+
+    import openstack
+    import openstack.config.loader
+    import openstack.compute.v2.server
+
+    # Initialize and turn on debug logging
+    openstack.enable_logging(debug=True)
+
+    # Initialize connection
+    conn = openstack.connect(cloud='mordred')
+
+    # List the servers
+    for server in openstack.compute.v2.server.Server.list(session=conn.compute):
+        print(server.to_dict())
+
+.. _openstack.config:
+
+Configuration
+-------------
+
+openstacksdk uses the ``openstack.config`` module to parse configuration.
+``openstack.config`` will find cloud configuration for as few as one cloud and
+as many as you want to put in a config file. It will read environment variables
+and config files, and it also contains some vendor specific default values so
+that you don't have to know extra info to use OpenStack
+
+* If you have a config file, you will get the clouds listed in it
+* If you have environment variables, you will get a cloud named `envvars`
+* If you have neither, you will get a cloud named `defaults` with base defaults
+
+You can view the configuration identified by openstacksdk in your current
+environment by running ``openstack.config.loader``. For example:
+
+.. code-block:: bash
+
+   $ python -m openstack.config.loader
+
+More information at https://docs.openstack.org/openstacksdk/latest/user/config/configuration.html
+
+Supported services
+------------------
+
+The following services are currently supported. A full list of all available
+OpenStack service can be found in the `Project Navigator`__.
+
+.. __: https://www.openstack.org/software/project-navigator/openstack-components#openstack-services
+
+.. note::
+
+   Support here does not guarantee full-support for all APIs. It simply means
+   some aspect of the project is supported.
+
+.. list-table:: Supported services
+   :widths: 15 25 10 40
+   :header-rows: 1
+
+   * - Service
+     - Description
+     - Cloud Layer
+     - Proxy & Resource Layer
+
+   * - **Compute**
+     -
+     -
+     -
+
+   * - Nova
+     - Compute
+     - ✔
+     - ✔ (``openstack.compute``)
+
+   * - **Hardware Lifecycle**
+     -
+     -
+     -
+
+   * - Ironic
+     - Bare metal provisioning
+     - ✔
+     - ✔ (``openstack.baremetal``, ``openstack.baremetal_introspection``)
+
+   * - Cyborg
+     - Lifecycle management of accelerators
+     - ✔
+     - ✔ (``openstack.accelerator``)
+
+   * - **Storage**
+     -
+     -
+     -
+
+   * - Cinder
+     - Block storage
+     - ✔
+     - ✔ (``openstack.block_storage``)
+
+   * - Swift
+     - Object store
+     - ✔
+     - ✔ (``openstack.object_store``)
+
+   * - Cinder
+     - Shared filesystems
+     - ✔
+     - ✔ (``openstack.shared_file_system``)
+
+   * - **Networking**
+     -
+     -
+     -
+
+   * - Neutron
+     - Networking
+     - ✔
+     - ✔ (``openstack.network``)
+
+   * - Octavia
+     - Load balancing
+     - ✔
+     - ✔ (``openstack.load_balancer``)
+
+   * - Designate
+     - DNS
+     - ✔
+     - ✔ (``openstack.dns``)
+
+   * - **Shared services**
+     -
+     -
+     -
+
+   * - Keystone
+     - Identity
+     - ✔
+     - ✔ (``openstack.identity``)
+
+   * - Placement
+     - Placement
+     - ✔
+     - ✔ (``openstack.placement``)
+
+   * - Glance
+     - Image storage
+     - ✔
+     - ✔ (``openstack.image``)
+
+   * - Barbican
+     - Key management
+     - ✔
+     - ✔ (``openstack.key_manager``)
+
+   * - **Workload provisioning**
+     -
+     -
+     -
+
+   * - Magnum
+     - Container orchestration engine provisioning
+     - ✔
+     - ✔ (``openstack.container_infrastructure_management``)
+
+   * - **Orchestration**
+     -
+     -
+     -
+
+   * - Heat
+     - Orchestration
+     - ✔
+     - ✔ (``openstack.orchestration``)
+
+   * - Senlin
+     - Clustering
+     - ✔
+     - ✔ (``openstack.clustering``)
+
+   * - Mistral
+     - Workflow
+     - ✔
+     - ✔ (``openstack.workflow``)
+
+   * - Zaqar
+     - Messaging
+     - ✔
+     - ✔ (``openstack.message``)
+
+   * - **Application lifecycle**
+     -
+     -
+     -
+
+   * - Masakari
+     - Instances high availability service
+     - ✔
+     - ✔ (``openstack.instance_ha``)
+
+Links
+-----
+
+* `Issue Tracker <https://bugs.launchpad.net/openstacksdk>`_
+* `Code Review <https://review.opendev.org/#/q/status:open+project:openstack/openstacksdk,n,z>`_
+* `Documentation <https://docs.openstack.org/openstacksdk/latest/>`_
+* `PyPI <https://pypi.org/project/openstacksdk/>`_
+* `Mailing list <https://lists.openstack.org/mailman3/lists/openstack-discuss.lists.openstack.org/>`_
+* `Release Notes <https://docs.openstack.org/releasenotes/openstacksdk>`_
diff --git a/SHADE-MERGE-TODO.rst b/SHADE-MERGE-TODO.rst
new file mode 100644
index 0000000..e34d878
--- /dev/null
+++ b/SHADE-MERGE-TODO.rst
@@ -0,0 +1,137 @@
+Tasks Needed for rationalizing shade and openstacksdk
+=====================================================
+
+A large portion of the important things have already been done and landed
+already. For reference, those are:
+
+* shade and os-client-config library content have been merged into the tree.
+* Use official service-type names from Service Types Authority via
+  os-service-types to refer to services and proxies.
+* Automatically also add properties to the connection for every known alias
+  for each service-type.
+* Made openstack.proxy.Proxy a subclass of keystoneauth1.adapter.Adapter.
+  Removed local logic that duplicates keystoneauth logic. This means every
+  proxy also has direct REST primitives available. For example:
+
+  .. code-block:: python
+
+    connection = connection.Connection()
+    servers = connection.compute.servers()
+    server_response = connection.compute.get('/servers')
+
+* Removed the Profile object in favor of openstack.config.
+* Removed the Session object in favor of using keystoneauth.
+* Plumbed Proxy use of Adapter through the Adapter subclass from shade that
+  uses the TaskManager to run REST calls.
+* Finish migrating to Resource2 and Proxy2, rename them to Resource and Proxy.
+* Merge OpenStackCloud into Connection. This should result
+  in being able to use the connection interact with the cloud using all three
+  interfaces. For instance:
+
+  .. code-block:: python
+
+    conn = connection.Connection()
+    servers = conn.list_servers()  # High-level resource interface from shade
+    servers = conn.compute.servers()  # SDK Service/Object Interface
+    response = conn.compute.get('/servers')  # REST passthrough
+* Removed ServiceFilter and the various Service objects in favor of discovery.
+
+Next steps
+==========
+
+* Maybe rename self.session and session parameter in all usage in proxy and
+  resource to self.adapter. They are Adapters not Sessions, but that may not
+  mean anything to people.
+* Migrate unit tests to requests-mock instead of mocking python calls to
+  session.
+* Replace _prepare_request with requests.Session.prepare_request.
+
+shade integration
+-----------------
+
+* Invent some terminology that is clear and makes sense to distinguish between
+  the object interface that came originally from openstacksdk and the
+  interface that came from shade.
+* Shift the shade interface methods to use the Object Interface for their
+  operations. It's possible there may be cases where the REST layer needs to
+  be used instead, but we should try to sort those out.
+* Investigate options and then make a plan as to whether shade methods should
+  return SDK objects or return dicts/munches as they do today. Should we make
+  Resource objects extend dict/munch so they can be used like the shade ones
+  today? Or should we just have the external shade shim library get objects
+  from the high-level SDK 'shade' interface and call to_dict() on them all?
+* Add support for shade expressing normalization model/contract into Resource,
+  or for just leveraging what's in Resource for shade-layer normalization.
+* Make a plan for normalization supporting shade users continuing
+  to get shade normalized resource Munch objects from shade API calls, sdk
+  proxy/resource users getting SDK objects, and both of them being able to opt
+  in to "strict" normalization at Connection constructor time. Perhaps making
+  Resource subclass Munch would allow mixed use? Needs investigation.
+* Investigate auto-generating the bulk of shade's API based on introspection of
+  SDK objects, leaving only the code with extra special logic in the shade
+  layer.
+
+Service Proxies
+---------------
+
+These are all things to think about.
+
+* Authenticate at Connection() creation time? Having done that, use the
+  catalog in the token to determine which service proxies to add to the
+  Connection object.
+* Filter the above service list from the token by has_service() from
+  openstack.config.
+* Add a has_service method to Connection which will BASICALLY just be
+  hasattr(self, 'service') - but will look nicer.
+* Consider adding magic to Connection for every service that a given cloud
+  DOESN'T have that will throw an exception on any attribute access that is
+  "cloud doesn't have service blah" rather than simply Attribute Not Found.
+  The SDK has a python api regardless of the services remotely, it would be
+  nice if trimming the existing attribute list wouldn't make it impossible for
+  someone to validate their code correctness. It's also possible that instead
+  of not having services, we always mount proxy objects for every service, but
+  we mount a "NotFound" proxy for each service that isn't there.
+* Since openstacksdk uses version discovery now, there is always a good path
+  to "the" version of a given service. However, a cloud may have more than one.
+  Attach the discovered service proxy to connection as today under the service
+  type name. Add a property to each service proxy for each version the SDK
+  knows about. For instance:
+
+  .. code-block:: python
+
+    connection = openstack.Connection()
+    connection.volume     # openstack.volume.v3._proxy
+    connection.volume.v2  # openstack.volume.v2._proxy
+    connection.volume.v3  # openstack.volume.v3._proxy
+
+  Those versioned proxies should be done as Adapters with min and max version
+  set explicitly. This should allow a common pattern for people to write code
+  that just wants to use the discovered or configured service, or who want to
+  attempt to use a specific version of the API if they know what they're doing
+  and at the very least wind up with a properly configured Adapter they can
+  make rest calls on. Because:
+
+  .. code-block:: python
+
+    connection = openstack.Connection()
+    connection.dns.v2.get('/zones')
+
+  should always work on an OpenStack cloud with designate even if the SDK
+  authors don't know anything about Designate and haven't added Resource or
+  Proxy explicitly for it.
+* Decide what todo about non-OpenStack services. Do we add base Proxy
+  properties to Connection for every service we find in the catalog regardless
+  of official/non-official? If so, do we let someone pass a dict of
+  service-type, Proxy to connection that would let the provide a local service
+  we don't know about? If we do that- we should disallow passing in overrides
+  for services we DO know about to discourage people writing local tools that
+  have different Compute behavior, for instance.
+
+Microversions
+-------------
+
+* keystoneauth.adapter.Adapter knows how to send microversion headers, and
+  get_endpoint_data knows how to fetch supported ranges. As microversion
+  support is added to calls, it needs to be on a per-request basis. This
+  has implications to both Resource and Proxy, as cloud payloads for data
+  mapping can be different on a per-microversion basis.
diff --git a/babel.cfg b/babel.cfg
new file mode 100644
index 0000000..efceab8
--- /dev/null
+++ b/babel.cfg
@@ -0,0 +1 @@
+[python: **.py]
diff --git a/bindep.txt b/bindep.txt
new file mode 100644
index 0000000..a74f386
--- /dev/null
+++ b/bindep.txt
@@ -0,0 +1,8 @@
+# This is a cross-platform list tracking distribution packages needed by tests;
+# see http://docs.openstack.org/infra/bindep/ for additional information.
+
+build-essential [platform:dpkg]
+python3-dev [platform:dpkg]
+libffi-dev [platform:dpkg]
+libffi-devel [platform:rpm]
+openssl-devel [platform:rpm]
diff --git a/devstack/plugin.sh b/devstack/plugin.sh
new file mode 100644
index 0000000..d1a53c1
--- /dev/null
+++ b/devstack/plugin.sh
@@ -0,0 +1,54 @@
+# Install and configure **openstacksdk** library in devstack
+#
+# To enable openstacksdk in devstack add an entry to local.conf that looks like
+#
+# [[local|localrc]]
+# enable_plugin openstacksdk https://opendev.org/openstack/openstacksdk
+
+function preinstall_openstacksdk {
+    :
+}
+
+function install_openstacksdk {
+    if use_library_from_git "openstacksdk"; then
+        # don't clone, it'll be done by the plugin install
+        setup_dev_lib "openstacksdk"
+    else
+        pip_install "openstacksdk"
+    fi
+}
+
+function configure_openstacksdk {
+    :
+}
+
+function initialize_openstacksdk {
+    :
+}
+
+function unstack_openstacksdk {
+    :
+}
+
+function clean_openstacksdk {
+    :
+}
+
+# This is the main for plugin.sh
+if [[ "$1" == "stack" && "$2" == "pre-install" ]]; then
+    preinstall_openstacksdk
+elif [[ "$1" == "stack" && "$2" == "install" ]]; then
+    install_openstacksdk
+elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
+    configure_openstacksdk
+elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
+    initialize_openstacksdk
+fi
+
+if [[ "$1" == "unstack" ]]; then
+    unstack_openstacksdk
+fi
+
+if [[ "$1" == "clean" ]]; then
+    clean_openstacksdk
+fi
diff --git a/doc/requirements.txt b/doc/requirements.txt
new file mode 100644
index 0000000..925ca4d
--- /dev/null
+++ b/doc/requirements.txt
@@ -0,0 +1,5 @@
+docutils>=0.11 # OSI-Approved Open Source, Public Domain
+openstackdocstheme>=2.2.1 # Apache-2.0
+reno>=3.1.0 # Apache-2.0
+sphinx>=2.0.0,!=2.1.0 # BSD
+sphinxcontrib-svg2pdfconverter>=0.1.0 # BSD
diff --git a/doc/source/conf.py b/doc/source/conf.py
new file mode 100644
index 0000000..b41ba20
--- /dev/null
+++ b/doc/source/conf.py
@@ -0,0 +1,98 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import os
+import sys
+import warnings
+
+sys.path.insert(0, os.path.abspath('../..'))
+sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration ----------------------------------------------------
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = [
+    'sphinx.ext.autodoc',
+    'openstackdocstheme',
+    'sphinxcontrib.rsvgconverter',
+]
+
+# openstackdocstheme options
+openstackdocs_repo_name = 'openstack/openstacksdk'
+openstackdocs_pdf_link = True
+openstackdocs_use_storyboard = False
+html_theme = 'openstackdocs'
+
+# autodoc generation is a bit aggressive and a nuisance when doing heavy
+# text edit cycles.
+# execute "export SPHINX_DEBUG=1" in your terminal to disable
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+copyright = '2017, Various members of the OpenStack Foundation'
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+add_module_names = True
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'native'
+
+autodoc_member_order = 'bysource'
+
+# Include both the class and __init__ docstrings when describing the class
+autoclass_content = 'both'
+
+# Don't document type hints as they're too noisy
+autodoc_typehints = 'none'
+
+# Locations to exclude when looking for source files.
+exclude_patterns = []
+
+# -- Options for HTML output ----------------------------------------------
+
+# Don't let openstackdocstheme insert TOCs automatically.
+theme_include_auto_toc = False
+
+# -- Options for LaTeX output ---------------------------------------------
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass
+# [howto/manual]).
+latex_documents = [
+    (
+        'index',
+        'doc-openstacksdk.tex',
+        'OpenStackSDK Documentation',
+        'OpenStack Foundation',
+        'manual',
+    ),
+]
+
+# Allow deeper levels of nesting for \begin...\end stanzas
+latex_elements = {'maxlistdepth': 10}
+
+# Disable usage of xindy https://bugzilla.redhat.com/show_bug.cgi?id=1643664
+latex_use_xindy = False
diff --git a/doc/source/contributor/clouds.yaml b/doc/source/contributor/clouds.yaml
new file mode 100644
index 0000000..2c141c5
--- /dev/null
+++ b/doc/source/contributor/clouds.yaml
@@ -0,0 +1,37 @@
+clouds:
+  devstack:
+    auth:
+      auth_url: http://xxx.xxx.xxx.xxx/identity
+      password: password
+      project_domain_id: default
+      project_name: demo
+      user_domain_id: default
+      username: demo
+    identity_api_version: '3'
+    region_name: RegionOne
+    volume_api_version: '3'
+  devstack-admin:
+    auth:
+      auth_url: http://xxx.xxx.xxx.xxx/identity
+      password: password
+      project_domain_id: default
+      project_name: admin
+      user_domain_id: default
+      username: admin
+    identity_api_version: '3'
+    region_name: RegionOne
+    volume_api_version: '3'
+  devstack-alt:
+    auth:
+      auth_url: http://xxx.xxx.xxx.xxx/identity
+      password: password
+      project_domain_id: default
+      project_name: alt_demo
+      user_domain_id: default
+      username: alt_demo
+    identity_api_version: '3'
+    region_name: RegionOne
+    volume_api_version: '3'
+example:
+  image_name: cirros-0.5.2-x86_64-disk
+  flavor_name: m1.small
diff --git a/doc/source/contributor/coding.rst b/doc/source/contributor/coding.rst
new file mode 100644
index 0000000..e1640e4
--- /dev/null
+++ b/doc/source/contributor/coding.rst
@@ -0,0 +1,104 @@
+OpenStack SDK Developer Coding Standards
+========================================
+
+In the beginning, there were no guidelines. And it was good. But that
+didn't last long. As more and more people added more and more code,
+we realized that we needed a set of coding standards to make sure that
+the *openstacksdk* API at least *attempted* to display some form of
+consistency.
+
+Thus, these coding standards/guidelines were developed. Note that not
+all of *openstacksdk* adheres to these standards just yet. Some older code has
+not been updated because we need to maintain backward compatibility.
+Some of it just hasn't been changed yet. But be clear, all new code
+*must* adhere to these guidelines.
+
+Below are the patterns that we expect *openstacksdk* developers to follow.
+
+
+Release Notes
+-------------
+
+*openstacksdk* uses `reno <https://docs.openstack.org/reno/latest/>`_ for
+managing its release notes. A new release note should be added to
+your contribution anytime you add new API calls, fix significant bugs,
+add new functionality or parameters to existing API calls, or make any
+other significant changes to the code base that we should draw attention
+to for the user base.
+
+It is *not* necessary to add release notes for minor fixes, such as
+correction of documentation typos, minor code cleanup or reorganization,
+or any other change that a user would not notice through normal usage.
+
+
+Exceptions
+----------
+
+Exceptions should NEVER be wrapped and re-raised inside of a new exception.
+This removes important debug information from the user. All of the exceptions
+should be raised correctly the first time.
+
+
+openstack.cloud API Methods
+---------------------------
+
+The ``openstack.cloud`` layer has some specific rules:
+
+- When an API call acts on a resource that has both a unique ID and a
+  name, that API call should accept either identifier with a name_or_id
+  parameter.
+
+- All resources should adhere to the get/list/search interface that
+  control retrieval of those resources. E.g., ``get_image()``,
+  ``list_images()``, ``search_images()``.
+
+- Resources should have ``create_RESOURCE()``, ``delete_RESOURCE()``,
+  ``update_RESOURCE()`` API methods (as it makes sense).
+
+- For those methods that should behave differently for omitted or None-valued
+  parameters, use the ``_utils.valid_kwargs`` decorator. This includes all
+  Neutron ``update_*`` functions.
+
+- Deleting a resource should return True if the delete succeeded, or False
+  if the resource was not found.
+
+Returned Resources
+~~~~~~~~~~~~~~~~~~
+
+The ``openstack.cloud`` layer should rely on the proxy layer for the given
+service. This will ensure complex objects returned to the caller are of
+``openstack.resource.Resource`` type.
+
+Nova vs. Neutron
+~~~~~~~~~~~~~~~~
+
+- Recognize that not all cloud providers support Neutron, so never
+  assume it will be present. If a task can be handled by either
+  Neutron or Nova, code it to be handled by either.
+
+- For methods that accept either a Nova pool or Neutron network, the
+  parameter should just refer to the network, but documentation of it
+  should explain about the pool. See: ``create_floating_ip()`` and
+  ``available_floating_ip()`` methods.
+
+
+Tests
+-----
+
+- New API methods *must* have unit tests!
+
+- New unit tests should only mock at the REST layer using ``requests_mock``.
+  Any mocking of *openstacksdk* itself should be considered legacy and to be
+  avoided. Exceptions to this rule can be made when attempting to test the
+  internals of a logical shim where the inputs and output of the method aren't
+  actually impacted by remote content.
+
+- Functional tests should be added, when possible.
+
+- In functional tests, always use unique names (for resources that have this
+  attribute) and use it for clean up (see next point).
+
+- In functional tests, always define cleanup functions to delete data added
+  by your test, should something go wrong. Data removal should be wrapped in
+  a try except block and try to delete as many entries added by the test as
+  possible.
diff --git a/doc/source/contributor/contributing.rst b/doc/source/contributor/contributing.rst
new file mode 100644
index 0000000..b1cd2f3
--- /dev/null
+++ b/doc/source/contributor/contributing.rst
@@ -0,0 +1 @@
+.. include:: ../../../CONTRIBUTING.rst
diff --git a/doc/source/contributor/create/examples/resource/fake.py b/doc/source/contributor/create/examples/resource/fake.py
new file mode 100644
index 0000000..b02175c
--- /dev/null
+++ b/doc/source/contributor/create/examples/resource/fake.py
@@ -0,0 +1,26 @@
+# Apache 2 header omitted for brevity
+
+from openstack import resource
+
+
+class Fake(resource.Resource):
+    resource_key = "resource"
+    resources_key = "resources"
+    base_path = "/fake"
+
+    allow_create = True
+    allow_fetch = True
+    allow_commit = True
+    allow_delete = True
+    allow_list = True
+    allow_head = True
+
+    #: The transaction date and time.
+    timestamp = resource.Header("x-timestamp")
+    #: The name of this resource.
+    name = resource.Body("name", alternate_id=True)
+    #: The value of the resource. Also available in headers.
+    value = resource.Body("value", alias="x-resource-value")
+    #: Is this resource cool? If so, set it to True.
+    #: This is a multi-line comment about cool stuff.
+    cool = resource.Body("cool", type=bool)
diff --git a/doc/source/contributor/create/examples/resource/fake_service.py b/doc/source/contributor/create/examples/resource/fake_service.py
new file mode 100644
index 0000000..34000b9
--- /dev/null
+++ b/doc/source/contributor/create/examples/resource/fake_service.py
@@ -0,0 +1,12 @@
+# Apache 2 header omitted for brevity
+
+from openstack import service_description
+from openstack.fake.v2 import _proxy as _proxy_v2
+
+
+class FakeService(service_description.ServiceDescription):
+    """The fake service."""
+
+    supported_versions = {
+        '2': _proxy_v2.Proxy,
+    }
diff --git a/doc/source/contributor/create/resource.rst b/doc/source/contributor/create/resource.rst
new file mode 100644
index 0000000..76b8954
--- /dev/null
+++ b/doc/source/contributor/create/resource.rst
@@ -0,0 +1,186 @@
+.. TODO(shade) Update this guide.
+
+Creating a New Resource
+=======================
+
+This guide will walk you through how to add resources for a service.
+
+Naming Conventions
+------------------
+
+Above all, names across this project conform to Python's naming standards,
+as laid out in `PEP 8 <https://www.python.org/dev/peps/pep-0008/>`_.
+
+The relevant details we need to know are as follows:
+
+   * Module names are lower case, and separated by underscores if more than
+     one word. For example, ``openstack.object_store``
+   * Class names are capitalized, with no spacing, and each subsequent word is
+     capitalized in a name. For example, ``ServerMetadata``.
+   * Attributes on classes, including methods, are lower case and separated
+     by underscores. For example, ``allow_list`` or ``get_data``.
+
+Services
+********
+
+Services in the OpenStack SDK are named after their program name, not their
+code name. For example, the project often known as "Nova" is always called
+"compute" within this SDK.
+
+This guide walks through creating service for an OpenStack program called
+"Fake". Following our guidelines, the code for its service would
+live under the ``openstack.fake`` namespace. What follows is the creation
+of a :class:`~openstack.resource.Resource` class for the "Fake" service.
+
+Resources
+*********
+
+Resources are named after the server-side resource, which is set in the
+``base_path`` attribute of the resource class. This guide creates a
+resource class for the ``/fake`` server resource, so the resource module
+is called ``fake.py`` and the class is called ``Fake``.
+
+An Example
+----------
+
+``openstack/fake/fake_service.py``
+
+.. literalinclude:: examples/resource/fake_service.py
+   :language: Python
+   :linenos:
+
+``openstack/fake/v2/fake.py``
+
+.. literalinclude:: examples/resource/fake.py
+   :language: Python
+   :linenos:
+
+``fake.Fake`` Attributes
+------------------------
+
+Each service's resources inherit from :class:`~openstack.resource.Resource`,
+so they can override any of the base attributes to fit the way their
+particular resource operates.
+
+``resource_key`` and ``resources_key``
+**************************************
+
+These attributes are set based on how your resource responds with data.
+The default values for each of these are ``None``, which works fine
+when your resource returns a JSON body that can be used directly without a
+top-level key, such as ``{"name": "Ernie Banks", ...}"``.
+
+However, our ``Fake`` resource returns JSON bodies that have the details of
+the resource one level deeper, such as
+``{"resources": {"name": "Ernie Banks", ...}, {...}}``. It does a similar
+thing with single resources, putting them inside a dictionary keyed on
+``"resource"``.
+
+By setting ``Fake.resource_key`` on *line 8*, we tell the ``Resource.create``,
+``Resource.get``, and ``Resource.update`` methods that we're either sending
+or receiving a resource that is in a dictionary with that key.
+
+By setting ``Fake.resources_key`` on *line 9*, we tell the ``Resource.list``
+method that we're expecting to receive multiple resources inside a dictionary
+with that key.
+
+``base_path``
+*************
+
+The ``base_path`` is the URL we're going to use to make requests for this
+resource. In this case, *line 10* sets ``base_path = "/fake"``, which also
+corresponds to the name of our class, ``Fake``.
+
+Most resources follow this basic formula. Some cases are more complex, where
+the URL to make requests to has to contain some extra data. The volume service
+has several resources which make either basic requests or detailed requests,
+so they use ``base_path = "/volumes/%s(detailed)"``. Before a request is made,
+if ``detailed = True``, they convert it to a string so the URL becomes
+``/volumes/detailed``. If it's ``False``, they only send ``/volumes/``.
+
+``service``
+***********
+
+*Line 11* is an instance of the service we're implementing. Each resource
+ties itself to the service through this setting, so that the proper URL
+can be constructed.
+
+In ``fake_service.py``, we specify the valid versions as well as what this
+service is called in the service catalog. When a request is made for this
+resource, the Session now knows how to construct the appropriate URL using
+this ``FakeService`` instance.
+
+Supported Operations
+--------------------
+
+The base :class:`~openstack.resource.Resource` disallows all types of requests
+by default, requiring each resource to specify which requests they support.
+On *lines 14-19*, our ``Fake`` resource specifies that it'll work with all
+of the operations.
+
+In order to have the following methods work, you must allow the corresponding
+value by setting it to ``True``:
+
++----------------------------------------------+----------------+
+| :class:`~openstack.resource.Resource.create` | allow_create   |
++----------------------------------------------+----------------+
+| :class:`~openstack.resource.Resource.delete` | allow_delete   |
++----------------------------------------------+----------------+
+| :class:`~openstack.resource.Resource.head`   | allow_head     |
++----------------------------------------------+----------------+
+| :class:`~openstack.resource.Resource.list`   | allow_list     |
++----------------------------------------------+----------------+
+| :class:`~openstack.resource.Resource.fetch`  | allow_fetch    |
++----------------------------------------------+----------------+
+| :class:`~openstack.resource.Resource.commit` | allow_commit   |
++----------------------------------------------+----------------+
+
+An additional attribute to set is ``commit_method``. It defaults to ``PUT``,
+but some services use ``POST`` or ``PATCH`` to commit changes back to the
+remote resource.
+
+Properties
+----------
+
+.. TODO(shade) Especially this section
+
+The way resource classes communicate values between the user and the server
+are :class:`~openstack.resource.prop` objects. These act similarly to Python's
+built-in property objects, but they share only the name - they're not the same.
+
+Properties are set based on the contents of a response body or headers.
+Based on what your resource returns, you should set ``prop``\s to map
+those values to ones on your :class:`~openstack.resource.Resource` object.
+
+*Line 22* sets a prop for ``timestamp`` , which will cause the
+``Fake.timestamp`` attribute to contain the value returned in an
+``X-Timestamp`` header, such as from a ``Fake.head`` request.
+
+*Line 24* sets a prop for ``name``, which is a value returned in a body, such
+as from a ``Fake.get`` request. Note from *line 12* that ``name`` is
+specified its ``id`` attribute, so when this resource
+is populated from a response, ``Fake.name`` and ``Fake.id`` are the same
+value.
+
+*Line 26* sets a prop which contains an alias. ``Fake.value`` will be set
+when a response body contains a ``value``, or when a header contains
+``X-Resource-Value``.
+
+*Line 28* specifies a type to be checked before sending the value in a request.
+In this case, we can only set ``Fake.cool`` to either ``True`` or ``False``,
+otherwise a TypeError will be raised if the value can't be converted to the
+expected type.
+
+Documentation
+-------------
+
+We use Sphinx's ``autodoc`` feature in order to build API documentation for
+each resource we expose. The attributes we override from
+:class:`~openstack.resource.Resource` don't need to be documented, but any
+:class:`~openstack.resource.prop` attributes must be. All you need to do is
+add a comment *above* the line to document, with a colon following the
+pound-sign.
+
+*Lines 21, 23, 25, and 27-28* are comments which will then appear in the API
+documentation. As shown in *lines 27 & 28*, these comments can span multiple
+lines.
diff --git a/doc/source/contributor/history.rst b/doc/source/contributor/history.rst
new file mode 100644
index 0000000..b2901ff
--- /dev/null
+++ b/doc/source/contributor/history.rst
@@ -0,0 +1,49 @@
+A Brief History
+===============
+
+*openstacksdk* started its life as three different libraries: *shade*,
+*os-client-config* and *python-openstacksdk*.
+
+*shade*
+  *shade* started its life as some code inside of OpenStack Infra's `nodepool`_
+  project, and as some code inside of the `Ansible OpenStack Modules`_.
+  Ansible had a bunch of different OpenStack related modules, and there was a
+  ton of duplicated code. Eventually, between refactoring that duplication into
+  an internal library, and adding the logic and features that the OpenStack
+  Infra team had developed to run client applications at scale, it turned out
+  that we'd written nine-tenths of what we'd need to have a standalone library.
+
+  Because of its background from nodepool, *shade* contained abstractions to
+  work around deployment differences and is resource oriented rather than
+  service oriented. This allows a user to think about Security Groups without
+  having to know whether Security Groups are provided by Nova or Neutron on a
+  given cloud. On the other hand, as an interface that provides an abstraction,
+  it deviates from the published OpenStack REST API and adds its own opinions,
+  which may not get in the way of more advanced users with specific needs.
+
+*os-client-config*
+  *os-client-config* was a library for collecting client configuration for
+  using an OpenStack cloud in a consistent and comprehensive manner, which
+  introduced the ``clouds.yaml`` file for expressing named cloud
+  configurations.
+
+*python-openstacksdk*
+  *python-openstacksdk* was a library that exposed the OpenStack APIs to
+  developers in a consistent and predictable manner.
+
+After a while it became clear that there was value in both the high-level
+layer that contains additional business logic and the lower-level SDK that
+exposes services and their resources faithfully and consistently as Python
+objects. Even with both of those layers, it is still beneficial at times to be
+able to make direct REST calls and to do so with the same properly configured
+`Session`_ from `python-requests`_. This led to the merge of the three
+projects.
+
+The original contents of the *shade* library have been moved into
+``openstack.cloud`` and *os-client-config* has been moved in to
+``openstack.config``.
+
+.. _nodepool: https://docs.openstack.org/infra/nodepool/
+.. _Ansible OpenStack Modules: http://docs.ansible.com/ansible/latest/list_of_cloud_modules.html#openstack
+.. _Session: http://docs.python-requests.org/en/master/user/advanced/#session-objects
+.. _python-requests: http://docs.python-requests.org/en/master/
diff --git a/doc/source/contributor/index.rst b/doc/source/contributor/index.rst
new file mode 100644
index 0000000..c651c76
--- /dev/null
+++ b/doc/source/contributor/index.rst
@@ -0,0 +1,112 @@
+Contributing to the OpenStack SDK
+=================================
+
+This section of documentation pertains to those who wish to contribute to the
+development of this SDK. If you're looking for documentation on how to use
+the SDK to build applications, refer to the `user <../user>`_ section.
+
+About the Project
+-----------------
+
+The OpenStack SDK is a OpenStack project aimed at providing a complete
+software development kit for the programs which make up the OpenStack
+community. It is a Python library with corresponding documentation,
+examples, and tools released under the Apache 2 license.
+
+.. toctree::
+   :maxdepth: 2
+
+   history
+
+Contribution Mechanics
+----------------------
+
+.. toctree::
+   :maxdepth: 2
+
+   contributing
+
+Contacting the Developers
+-------------------------
+
+IRC
+~~~
+
+The developers of this project are available in the `#openstack-sdks`__ channel
+on OFTC IRC. This channel includes conversation on SDKs and tools within the
+general OpenStack community, including OpenStackClient as well as occasional
+talk about SDKs created for languages outside of Python.
+
+.. __: http://webchat.oftc.net?channels=%23openstack-sdks
+
+Email
+~~~~~
+
+The `openstack-discuss`__ mailing list fields questions of all types on
+OpenStack. Using the ``[sdk]`` filter to begin your email subject will ensure
+that the message gets to SDK developers.
+
+.. __: mailto:openstack-discuss@openstack.org?subject=[sdk]%20Question%20about%20openstacksdk
+
+Coding Standards
+----------------
+
+We are a bit stricter than usual in the coding standards department. It's a
+good idea to read through the :doc:`coding <coding>` section.
+
+.. toctree::
+   :maxdepth: 2
+
+   coding
+
+Development Environment
+-----------------------
+
+The first step towards contributing code and documentation is to setup your
+development environment. We use a pretty standard setup, but it is fully
+documented in our :doc:`setup <setup>` section.
+
+.. toctree::
+   :maxdepth: 2
+
+   setup
+
+Testing
+-------
+
+The project contains two test packages, one for unit tests and one for
+functional tests. The ``openstack.tests.unit`` package tests the SDK's features
+in isolation. The ``openstack.tests.functional`` package tests the SDK's
+features and examples against an OpenStack cloud.
+
+.. toctree::
+
+   testing
+
+Project Layout
+--------------
+
+The project contains a top-level ``openstack`` package, which houses several
+modules that form the foundation upon which each service's API is built on.
+Under the ``openstack`` package are packages for each of those services,
+such as ``openstack.compute``.
+
+.. toctree::
+
+   layout
+
+Adding Features
+---------------
+
+Does this SDK not do what you need it to do? Is it missing a service? Are you
+a developer on another project who wants to add their service? You're in the
+right place. Below are examples of how to add new features to the
+OpenStack SDK.
+
+.. toctree::
+   :maxdepth: 2
+
+   create/resource
+
+.. TODO(briancurtin): document how to create a proxy
+.. TODO(briancurtin): document how to create auth plugins
diff --git a/doc/source/contributor/layout.rst b/doc/source/contributor/layout.rst
new file mode 100644
index 0000000..b91d359
--- /dev/null
+++ b/doc/source/contributor/layout.rst
@@ -0,0 +1,104 @@
+How the SDK is organized
+========================
+
+The following diagram shows how the project is laid out.
+
+.. literalinclude:: layout.txt
+
+Resource
+--------
+
+The :class:`openstack.resource.Resource` base class is the building block
+of any service implementation. ``Resource`` objects correspond to the
+resources each service's REST API works with, so the
+:class:`openstack.compute.v2.server.Server` subclass maps to the compute
+service's ``https://openstack:1234/v2/servers`` resource.
+
+The base ``Resource`` contains methods to support the typical
+`CRUD <http://en.wikipedia.org/wiki/Create,_read,_update_and_delete>`_
+operations supported by REST APIs, and handles the construction of URLs
+and calling the appropriate HTTP verb on the given ``Adapter``.
+
+Values sent to or returned from the service are implemented as attributes
+on the ``Resource`` subclass with type :class:`openstack.resource.prop`.
+The ``prop`` is created with the exact name of what the API expects,
+and can optionally include a ``type`` to be validated against on requests.
+You should choose an attribute name that follows PEP-8, regardless of what
+the server-side expects, as this ``prop`` becomes a mapping between the two.::
+
+   is_public = resource.prop('os-flavor-access:is_public', type=bool)
+
+There are six additional attributes which the ``Resource`` class checks
+before making requests to the REST API. ``allow_create``, ``allow_retreive``,
+``allow_commit``, ``allow_delete``, ``allow_head``, and ``allow_list`` are set
+to ``True`` or ``False``, and are checked before making the corresponding
+method call.
+
+The ``base_path`` attribute should be set to the URL which corresponds to
+this resource. Many ``base_path``\s are simple, such as ``"/servers"``.
+For ``base_path``\s which are composed of non-static information, Python's
+string replacement is used, e.g., ``base_path = "/servers/%(server_id)s/ips"``.
+
+``resource_key`` and ``resources_key`` are attributes to set when a
+``Resource`` returns more than one item in a response, or otherwise
+requires a key to obtain the response value. For example, the ``Server``
+class sets ``resource_key = "server"`` as an individual ``Server`` is
+stored in a dictionary keyed with the singular noun,
+and ``resources_key = "servers"`` as multiple ``Server``\s are stored in
+a dictionary keyed with the plural noun in the response.
+
+Proxy
+-----
+
+Each service implements a ``Proxy`` class based on
+:class:`~openstack.proxy.Proxy`, within the
+``openstack/<program_name>/vX/_proxy.py`` module. For example, the v2 compute
+service's ``Proxy`` exists in ``openstack/compute/v2/_proxy.py``.
+
+The :class:`~openstack.proxy.Proxy` class is based on
+:class:`~keystoneauth1.adapter.Adapter`.
+
+.. autoclass:: openstack.proxy.Proxy
+   :members:
+   :show-inheritance:
+
+Each service's ``Proxy`` provides a higher-level interface for users to work
+with via a :class:`~openstack.connection.Connection` instance.
+
+Rather than requiring users to maintain their own ``Adapter`` and work with
+lower-level :class:`~openstack.resource.Resource` objects, the ``Proxy``
+interface offers a place to make things easier for the caller.
+
+Each ``Proxy`` class implements methods which act on the underlying
+``Resource`` classes which represent the service. For example::
+
+   def list_flavors(self, **params):
+       return flavor.Flavor.list(self.session, **params)
+
+This method is operating on the ``openstack.compute.v2.flavor.Flavor.list``
+method. For the time being, it simply passes on the ``Adapter`` maintained
+by the ``Proxy``, and returns what the underlying ``Resource.list`` method
+does.
+
+Cloud
+-----
+
+.. todo
+
+TODO.
+
+Connection
+----------
+
+The :class:`openstack.connection.Connection` class builds atop a
+:class:`openstack.config.cloud_region.CloudRegion` object, and provides a
+higher level interface constructed of ``Proxy`` objects from each of the
+services.
+
+The ``Connection`` class' primary purpose is to act as a high-level interface
+to this SDK, managing the lower level connection bits and exposing the
+``Resource`` objects through their corresponding `Proxy`_ object.
+
+If you've built proper ``Resource`` objects and implemented methods on the
+corresponding ``Proxy`` object, the high-level interface to your service
+should now be exposed.
diff --git a/doc/source/contributor/layout.txt b/doc/source/contributor/layout.txt
new file mode 100644
index 0000000..eeffbac
--- /dev/null
+++ b/doc/source/contributor/layout.txt
@@ -0,0 +1,12 @@
+openstack/
+    connection.py
+    resource.py
+    compute/
+        compute_service.py
+        v2/
+            server.py
+            _proxy.py
+    tests/
+        compute/
+            v2/
+                test_server.py
diff --git a/doc/source/contributor/setup.rst b/doc/source/contributor/setup.rst
new file mode 100644
index 0000000..36c5aa1
--- /dev/null
+++ b/doc/source/contributor/setup.rst
@@ -0,0 +1,116 @@
+Creating a Development Environment
+==================================
+
+Required Tools
+--------------
+
+Python
+~~~~~~
+
+As the OpenStack SDK is developed in Python, you will need at least one
+version of Python installed. Our continuous integration system runs against
+several versions, so ultimately we will have the proper test coverage, but
+having multiple versions locally results in less time spent in code review when
+changes unexpectedly break other versions.
+
+Python can be downloaded from https://www.python.org/downloads.
+
+virtualenv
+~~~~~~~~~~
+
+In order to isolate our development environment from the system-based Python
+installation, we use `virtualenv <https://virtualenv.pypa.io/en/latest/>`_.
+This allows us to install all of our necessary dependencies without
+interfering with anything else, and preventing others from interfering with us.
+Virtualenv must be installed on your system in order to use it, and it can be
+had from PyPI, via pip, as follows. Note that you may need to run this
+as an administrator in some situations.::
+
+   $ apt-get install python3-virtualenv  # Debian based platforms
+   $ dnf install python3-virtualenv      # Red Hat based platforms
+   $ pip install virtualenv              # Mac OS X and other platforms
+
+You can create a virtualenv in any location. A common usage is to store all
+of your virtualenvs in the same place, such as under your home directory.
+To create a virtualenv for the default Python, run the following::
+
+   $ virtualenv $HOME/envs/sdk
+
+To create an environment for a different version, run the following::
+
+   $ virtualenv -p python3 $HOME/envs/sdk3
+
+When you want to enable your environment so that you can develop inside of it,
+you *activate* it. To activate an environment, run the /bin/activate
+script inside of it, like the following::
+
+   $ source $HOME/envs/sdk3/bin/activate
+   (sdk3)$
+
+Once you are activated, you will see the environment name in front of your
+command prompt. In order to exit that environment, run the ``deactivate``
+command.
+
+tox
+~~~
+
+We use `tox <https://tox.readthedocs.org/en/latest/>`_ as our test runner,
+which allows us to run the same test commands against multiple versions
+of Python. Inside any of the virtualenvs you use for working on the SDK,
+run the following to install ``tox`` into it.::
+
+   (sdk3)$ pip install tox
+
+Git
+~~~
+
+The source of the OpenStack SDK is stored in Git. In order to work with our
+source repository, you must have Git installed on your system. If your
+system has a package manager, it can likely be had from there. If not,
+you can find downloads or the source at http://git-scm.com.
+
+Getting the Source Code
+-----------------------
+
+.. TODO(briancurtin): We should try and distill the following document
+   into the minimally necessary parts to include directly in this section.
+   I've talked to several people who are discouraged by that large of a
+   document to go through before even getting into the project they want
+   to work on. I don't want that to happen to us because we have the potential
+   to be more public facing than a lot of other projects.
+
+.. note:: Before checking out the code, please read the OpenStack
+          `Developer's Guide <http://docs.openstack.org/infra/manual/developers.html>`_
+          for details on how to use the continuous integration and code
+          review systems that we use.
+
+The canonical Git repository is hosted on opendev.org at
+http://opendev.org/openstack/openstacksdk/::
+
+   (sdk3)$ git clone https://opendev.org/openstack/openstacksdk
+   (sdk3)$ cd openstacksdk
+
+Installing Dependencies
+-----------------------
+
+In order to work with the SDK locally, such as in the interactive interpreter
+or to run example scripts, you need to install the project's dependencies.::
+
+   (sdk3)$ pip install -r requirements.txt
+
+After the downloads and installs are complete, you'll have a fully functional
+environment to use the SDK in.
+
+Building the Documentation
+--------------------------
+
+Our documentation is written in reStructured Text and is built using
+Sphinx. A ``docs`` command is available in our ``tox.ini``, allowing you
+to build the documentation like you'd run tests. The ``docs`` command is
+not evaluated by default.::
+
+   (sdk3)$ tox -e docs
+
+That command will cause the documentation, which lives in the ``docs`` folder,
+to be built. HTML output is the most commonly referenced, which is located
+in ``docs/build/html``.
diff --git a/doc/source/contributor/testing.rst b/doc/source/contributor/testing.rst
new file mode 100644
index 0000000..275a418
--- /dev/null
+++ b/doc/source/contributor/testing.rst
@@ -0,0 +1,108 @@
+Testing
+=======
+
+The tests are run with `tox <https://tox.readthedocs.org/en/latest/>`_ and
+configured in ``tox.ini``. The test results are tracked by
+`stestr <https://stestr.readthedocs.io/en/latest/>`_ and configured
+in ``.stestr.conf`` and via command line options passed to the ``stestr``
+executable when it's called by ``tox``.
+
+
+Unit Tests
+----------
+
+Running tests
+~~~~~~~~~~~~~
+
+In order to run the entire unit test suite, simply run the ``tox`` command
+inside of your source checkout. This will attempt to run every test command
+listed inside of ``tox.ini``, which includes Python 3.x, and a PEP 8 check.
+You should run the full test suite on all versions before
+submitting changes for review in order to avoid unexpected failures in the
+continuous integration system.::
+
+   $ tox
+   ...
+   py3: commands succeeded
+   pep8: commands succeeded
+   congratulations :)
+
+During development, it may be more convenient to run a subset of the tests
+to keep test time to a minimum. You can choose to run the tests only on one
+version. A step further is to run only the tests you are working on.::
+
+   # Run run the tests on Python 3.9
+   $ tox -e py39
+   # Run only the compute unit tests on Python 3.9
+   $ tox -e py39 openstack.tests.unit.compute
+   # Run only the tests in a specific file on Python 3.9
+   $ tox -e py39 -- -n openstack/tests/unit/compute/test_version.py
+
+
+Functional Tests
+----------------
+
+The functional tests assume that you have a public or private OpenStack cloud
+that you can run the tests against. The tests must be able to be run against
+public clouds but first and foremost they must be run against OpenStack. In
+practice, this means that the tests should initially be run against a stable
+branch of `DevStack <https://docs.openstack.org/devstack/latest/>`_.
+
+Configuration
+~~~~~~~~~~~~~
+
+To connect the functional tests to an OpenStack cloud we require a
+``clouds.yaml`` file, as discussed in :doc:`/user/config/configuration`.
+You can place this ``clouds.yaml`` file in the root of your source checkout or
+in one of the other standard locations, ``$HOME/.config/openstack`` or
+``/etc/openstack``.
+
+There must be at least three clouds configured, or rather three accounts
+configured for the one cloud. These accounts are:
+
+- An admin account, which defaults to ``devstack-admin`` but is configurable
+  via the ``OPENSTACKSDK_OPERATOR_CLOUD`` environment variable,
+- A user account, which defaults to ``devstack`` but is configurable
+  via the ``OPENSTACKSDK_DEMO_CLOUD`` environment variable, and
+- An alternate user account, which defaults to ``devstack-demo`` but is
+  configurable via the ``OPENSTACKSDK_DEMO_CLOUD_ALT`` environment variable
+
+In addition, you must indicate the names of the flavor and image that should be
+used for tests. These can be configured via ``OPENSTACKSDK_FLAVOR`` and
+``OPENSTACKSDK_IMAGE`` environment variables or ``functional.flavor_name`` and
+``functional.image_name`` settings in the ``clouds.yaml`` file, respectively.
+
+Finally, you can configure the timeout for tests using the
+``OPENSTACKSDK_FUNC_TEST_TIMEOUT`` environment variable (defaults to 300
+seconds). Some test modules take specific timeout values. For example, all
+tests in ``openstack.tests.functional.compute`` will check for the
+``OPENSTACKSDK_FUNC_TEST_TIMEOUT_COMPUTE`` environment variable before checking
+for ``OPENSTACKSDK_FUNC_TEST_TIMEOUT``.
+
+.. note::
+
+    Recent versions of DevStack will configure a suitable ``clouds.yaml`` file
+    for you, which will be placed at ``/etc/openstack/clouds.yaml``.
+
+This is an example of a minimal configuration for a ``clouds.yaml`` that
+connects the functional tests to a DevStack instance.
+
+.. literalinclude:: clouds.yaml
+   :language: yaml
+
+Replace ``xxx.xxx.xxx.xxx`` with the IP address or FQDN of your DevStack
+instance.
+
+Running tests
+~~~~~~~~~~~~~
+
+Functional tests are also run against multiple Python versions. In order to run
+the entire functional test suite against the default Python 3 version in your
+environment, run the ``tox -e functional`` command inside of your source
+checkout. This will attempt to run every tests in the
+``openstack/tests/functional`` directory. For example::
+
+   $ tox -e functional
+   ...
+   functional: commands succeeded
+   congratulations :)
diff --git a/doc/source/glossary.rst b/doc/source/glossary.rst
new file mode 100644
index 0000000..3bdbde4
--- /dev/null
+++ b/doc/source/glossary.rst
@@ -0,0 +1,104 @@
+:orphan:
+
+Glossary
+========
+
+.. glossary::
+    :sorted:
+
+    CLI
+        Command-Line Interface; a textual user interface.
+
+    compute
+        OpenStack Compute (Nova).
+
+    container
+        One of the :term:`object-store` resources; a container holds
+        :term:`objects <object>` being stored.
+
+    endpoint
+        A base URL used in a REST request. An `authentication endpoint` is
+        specifically the URL given to a user to identify a cloud. A service
+        endpoint is generally obtained from the service catalog.
+
+    host
+        A physical computer. Contrast with :term:`node` and :term:`server`.
+
+    identity
+        OpenStack Identity (Keystone).
+
+    image
+        OpenStack Image (Glance). Also the attribute name of the disk files
+        stored for use by servers.
+
+    keypair
+        The attribute name of the SSH public key used in the OpenStack Compute
+        API for server authentication.
+
+    node
+        A logical system, may refer to a :term:`server` (virtual machine) or a
+        :term:`host`.
+
+        Generally used to describe an OS instance where a specific process is
+        running, e.g. a 'network node' is where the network processes run,
+        and may be directly on a host or in a server. Contrast with
+        :term:`host` and :term:`server`.
+
+    object
+        A generic term which normally refers to the a Python ``object``.
+        The OpenStack Object Store service (Swift) also uses `object` as the
+        name of the item being stored within a :term:`container`.
+
+    object-store
+        OpenStack Object Store (Swift).
+
+    project
+        The name of the owner of resources in an OpenStack cloud. A `project`
+        can map to a customer, account or organization in different OpenStack
+        deployments. Used instead of the deprecated :term:`tenant`.
+
+    region
+        The attribute name of a partitioning of cloud resources.
+
+    resource
+        A Python object representing an OpenStack resource inside the SDK code.
+        Also used to describe the items managed by OpenStack.
+
+    role
+        A personality that a user assumes when performing a specific set of
+        operations. A `role` includes a set of rights and privileges that a
+        user assuming that role inherits. The OpenStack Identity service
+        includes the set of roles that a user can assume in the
+        :term:`token` that is issued to that user.
+
+        The individual services determine how the roles are interpreted
+        and access granted to operations or resources. The OpenStack Identity
+        service treats a role as an arbitrary name assigned by the cloud
+        administrator.
+
+    server
+        A virtual machine or a bare-metal host managed by the OpenStack Compute
+        service. Contrast with :term:`host` and :term:`node`.
+
+    service
+        In OpenStack this refers to a service/endpoint in the
+        :term:`ServiceCatalog <service catalog>`.
+        It could also be a collection of endpoints for different
+        :term:`regions <region>`.
+        A service has a type and a name.
+
+    service catalog
+        The list of :term:`services <service>` configured at a given
+        authentication endpoint available to the authenticated user.
+
+    tenant
+        Deprecated in favor of :term:`project`.
+
+    token
+        An arbitrary bit of text that is used to access resources. Some tokens
+        are `scoped` to determine what resources are accessible with it. A
+        token may be revoked at any time and is valid for a finite duration.
+
+    volume
+        OpenStack Volume (Cinder). Also the attribute name of the virtual
+        disks managed by the OpenStack Volume service.
diff --git a/doc/source/index.rst b/doc/source/index.rst
new file mode 100644
index 0000000..d935708
--- /dev/null
+++ b/doc/source/index.rst
@@ -0,0 +1,45 @@
+openstacksdk
+============
+
+This documentation is split into three sections:
+
+* An :doc:`installation <install/index>` guide
+* A section for :doc:`users <user/index>` looking to build applications
+  which make use of OpenStack
+* A section for those looking to :doc:`contribute <contributor/index>`
+  to this project
+
+Installation
+------------
+
+.. toctree::
+   :maxdepth: 2
+
+   install/index
+
+For Users
+---------
+
+.. toctree::
+   :maxdepth: 2
+
+   user/index
+
+For Contributors
+----------------
+
+.. toctree::
+   :maxdepth: 2
+
+   contributor/index
+
+General Information
+-------------------
+
+General information about the SDK including a glossary and release history.
+
+.. toctree::
+   :maxdepth: 1
+
+   Glossary of Terms <glossary>
+   Release Notes <releasenotes>
diff --git a/doc/source/install/index.rst b/doc/source/install/index.rst
new file mode 100644
index 0000000..33255ae
--- /dev/null
+++ b/doc/source/install/index.rst
@@ -0,0 +1,17 @@
+Installation guide
+==================
+
+The OpenStack SDK is available on `PyPI`__ under the name **openstacksdk**. To
+install it, use ``pip``:
+
+.. code-block:: bash
+
+   $ pip install openstacksdk
+
+To check the installed version you can call the module with:
+
+.. code-block:: bash
+
+   $ python -m openstack version
+
+.. __: https://pypi.org/project/openstacksdk
diff --git a/doc/source/releasenotes.rst b/doc/source/releasenotes.rst
new file mode 100644
index 0000000..b4eb5e4
--- /dev/null
+++ b/doc/source/releasenotes.rst
@@ -0,0 +1,5 @@
+Release Notes
+=============
+
+Release notes for `openstacksdk` can be found at
+https://releases.openstack.org/teams/openstacksdk.html
diff --git a/doc/source/user/config/configuration.rst b/doc/source/user/config/configuration.rst
new file mode 100644
index 0000000..72cfaa5
--- /dev/null
+++ b/doc/source/user/config/configuration.rst
@@ -0,0 +1,499 @@
+.. _openstack-config:
+
+======================================
+Configuring OpenStack SDK Applications
+======================================
+
+.. _config-environment-variables:
+
+Environment Variables
+---------------------
+
+`openstacksdk` honors all of the normal `OS_*` variables. It does not
+provide backwards compatibility to service-specific variables such as
+`NOVA_USERNAME`.
+
+If you have OpenStack environment variables set, `openstacksdk` will
+produce a cloud config object named `envvars` containing your values from the
+environment. If you don't like the name `envvars`, that's ok, you can override
+it by setting `OS_CLOUD_NAME`.
+
+Service specific settings, like the nova service type, are set with the
+default service type as a prefix. For instance, to set a special service_type
+for trove set
+
+.. code-block:: bash
+
+  export OS_DATABASE_SERVICE_TYPE=rax:database
+
+.. _config-clouds-yaml:
+
+Config Files
+------------
+
+`openstacksdk` will look for a file called `clouds.yaml` in the following
+locations:
+
+* ``.`` (the current directory)
+* ``$HOME/.config/openstack``
+* ``/etc/openstack``
+
+The first file found wins.
+
+You can also set the environment variable `OS_CLIENT_CONFIG_FILE` to an
+absolute path of a file to look for and that location will be inserted at the
+front of the file search list.
+
+The keys are all of the keys you'd expect from `OS_*` - except lower case
+and without the OS prefix. So, region name is set with `region_name`.
+
+Service specific settings, like the nova service type, are set with the
+default service type as a prefix. For instance, to set a special service_type
+for trove (because you're using Rackspace) set:
+
+.. code-block:: yaml
+
+  database_service_type: 'rax:database'
+
+
+Site Specific File Locations
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In addition to `~/.config/openstack` and `/etc/openstack` - some platforms
+have other locations they like to put things. `openstacksdk` will also
+look in an OS specific config dir
+
+* `USER_CONFIG_DIR`
+* `SITE_CONFIG_DIR`
+
+`USER_CONFIG_DIR` is different on Linux, OSX and Windows.
+
+* Linux: `~/.config/openstack`
+* OSX: `~/Library/Application Support/openstack`
+* Windows: `C:\\Users\\USERNAME\\AppData\\Local\\OpenStack\\openstack`
+
+`SITE_CONFIG_DIR` is different on Linux, OSX and Windows.
+
+* Linux: `/etc/openstack`
+* OSX: `/Library/Application Support/openstack`
+* Windows: `C:\\ProgramData\\OpenStack\\openstack`
+
+An example config file is probably helpful:
+
+.. code-block:: yaml
+
+  clouds:
+    mtvexx:
+      profile: https://vexxhost.com
+      auth:
+        username: mordred@inaugust.com
+        password: XXXXXXXXX
+        project_name: mordred@inaugust.com
+      region_name: ca-ymq-1
+      dns_api_version: 1
+    mordred:
+      region_name: RegionOne
+      auth:
+        username: 'mordred'
+        password: XXXXXXX
+        project_name: 'shade'
+        auth_url: 'https://montytaylor-sjc.openstack.blueboxgrid.com:5001/v2.0'
+    infra:
+      profile: rackspace
+      auth:
+        username: openstackci
+        password: XXXXXXXX
+        project_id: 610275
+      regions:
+      - DFW
+      - ORD
+      - IAD
+
+You may note a few things. First, since `auth_url` settings are silly
+and embarrassingly ugly, known cloud vendor profile information is included and
+may be referenced by name or by base URL to the cloud in question if the
+cloud serves a vendor profile. One of the benefits of that is that `auth_url`
+isn't the only thing the vendor defaults contain. For instance, since
+Rackspace lists `rax:database` as the service type for trove, `openstacksdk`
+knows that so that you don't have to. In case the cloud vendor profile is not
+available, you can provide one called `clouds-public.yaml`, following the same
+location rules previously mentioned for the config files.
+
+`regions` can be a list of regions. When you call `get_all_clouds`,
+you'll get a cloud config object for each cloud/region combo.
+
+As seen with `dns_service_type`, any setting that makes sense to be
+per-service, like `service_type` or `endpoint` or `api_version` can be set
+by prefixing the setting with the default service type. That might strike you
+funny when setting `service_type` and it does me too - but that's just the
+world we live in.
+
+Auth Settings
+-------------
+
+Keystone has auth plugins - which means it's not possible to know ahead of time
+which auth settings are needed. `openstacksdk` sets the default plugin type
+to `password`, which is what things all were before plugins came about. In
+order to facilitate validation of values, all of the parameters that exist
+as a result of a chosen plugin need to go into the auth dict. For password
+auth, this includes `auth_url`, `username` and `password` as well as anything
+related to domains, projects and trusts.
+
+Splitting Secrets
+-----------------
+
+In some scenarios, such as configuration management controlled environments,
+it might be easier to have secrets in one file and non-secrets in another.
+This is fully supported via an optional file `secure.yaml` which follows all
+the same location rules as `clouds.yaml`. It can contain anything you put
+in `clouds.yaml` and will take precedence over anything in the `clouds.yaml`
+file.
+
+.. code-block:: yaml
+
+  # clouds.yaml
+  clouds:
+    internap:
+      profile: internap
+      auth:
+        username: api-55f9a00fb2619
+        project_name: inap-17037
+      regions:
+      - ams01
+      - nyj01
+  # secure.yaml
+  clouds:
+    internap:
+      auth:
+        password: XXXXXXXXXXXXXXXXX
+
+SSL Settings
+------------
+
+When the access to a cloud is done via a secure connection, `openstacksdk`
+will always verify the SSL cert by default. This can be disabled by setting
+`verify` to `False`. In case the cert is signed by an unknown CA, a specific
+cacert can be provided via `cacert`. **WARNING:** `verify` will always have
+precedence over `cacert`, so when setting a CA cert but disabling `verify`, the
+cloud cert will never be validated.
+
+Client certs are also configurable. `cert` will be the client cert file
+location. In case the cert key is not included within the client cert file,
+its file location needs to be set via `key`.
+
+.. code-block:: yaml
+
+  # clouds.yaml
+  clouds:
+    regular-secure-cloud:
+      auth:
+        auth_url: https://signed.cert.domain:5000
+        ...
+    unknown-ca-with-client-cert-secure-cloud:
+      auth:
+        auth_url: https://unknown.ca.but.secure.domain:5000
+        ...
+      key: /home/myhome/client-cert.key
+      cert: /home/myhome/client-cert.crt
+      cacert: /home/myhome/ca.crt
+    self-signed-insecure-cloud:
+      auth:
+        auth_url: https://self.signed.cert.domain:5000
+        ...
+      verify: False
+
+Note for parity with ``openstack`` command-line options the `insecure`
+boolean is also recognised (with the opposite semantics to `verify`;
+i.e. `True` ignores certificate failures).  This should be considered
+deprecated for `verify`.
+
+
+Cache Settings
+--------------
+
+.. versionchanged:: 1.0.0
+
+   Previously, caching was managed exclusively in the cloud layer. Starting in
+   openstacksdk 1.0.0, caching is moved to the proxy layer. As the cloud layer
+   depends on the proxy layer in 1.0.0, this means both layers can benefit from
+   the cache.
+
+Authenticating and accessing resources on a cloud is often expensive. It is
+therefore quite common that applications will wish to do some client-side
+caching of both credentials and cloud resources. To facilitate this,
+*openstacksdk* supports caching credentials and resources using the system
+keyring and *dogpile.cache*, respectively.
+
+.. tip::
+
+   It is important to emphasise that *openstacksdk* does not actually cache
+   anything itself. Rather, it collects and presents the cache information
+   so that your various applications that are connecting to OpenStack can share
+   a cache should you desire. It is important that your cache backend is
+   correctly configured according to the needs of your application.
+
+Caching in enabled or disabled globally, rather than on a cloud-by-cloud basis.
+This is done by setting configuring the``cache`` top-level key. Caching of
+authentication tokens can be configured using the following settings:
+
+``cache.auth``
+  A boolean indicating whether tokens should be cached in the keyring.
+  When enabled, this allows the consequent connections to the same cloud to
+  skip fetching new token. When the token expires or is invalidated,
+  `openstacksdk` will automatically establish a new connection.
+  Defaults to ``false``.
+
+For example, to configure caching of authentication tokens.
+
+.. code-block:: yaml
+
+  cache:
+    auth: true
+
+Caching of resources can be configured using the following settings:
+
+``cache.expiration_time``
+    The expiration time in seconds for a cache entry.
+    This should be an integer.
+    Defaults to ``0``.
+
+``cache.class``
+  The cache backend to use, which can include any backend supported by
+  *dogpile.cache* natively as well as backend provided by third-part packages.
+  This should be a string.
+  Defaults to ``dogpile.cache.memory``.
+
+``cache.arguments``
+  A mapping of arbitrary arguments to pass into the cache backend. These are
+  backend specific. Keys should correspond to a configuration option for the
+  configured cache backend.
+  Defaults to ``{}``.
+
+``cache.expirations``
+  A mapping of resource types to expiration times. The keys should be specified
+  in the same way as the metrics are emitted, by joining meaningful resource
+  URL segments with ``.``. For example, both ``/servers`` and ``/servers/ID``
+  should be specified as ``servers``, while ``/servers/ID/metadata/KEY`` should
+  be specified as `server.metadata`. Values should be an expiration time in
+  seconds. A value of ``-1`` indicates that the cache should never expire,
+  while a value of ``0`` disables caching for the resource.
+  Defaults to ``{}``
+
+For example, to configure caching with the ``dogpile.cache.memory`` backend
+with a 1 hour expiration.
+
+.. code-block:: yaml
+
+   cache:
+     expiration_time: 3600
+
+To configure caching with the ``dogpile.cache.memory`` backend with a 1 hour
+expiration but only for requests to the OpenStack Compute service's
+``/servers`` API:
+
+.. code-block:: yaml
+
+   cache:
+     expirations:
+       servers: 3600
+
+To configure caching with the ``dogpile.cache.pylibmc`` backend with a 1 hour
+expiration time and a memcached server running on your localhost.
+
+.. code-block:: yaml
+
+   cache:
+     expiration_time: 3600
+     arguments:
+       url:
+       - 127.0.0.1
+
+To configure caching with the ``dogpile.cache.pylibmc`` backend with a 1 hour
+expiration time, a memcached server running on your localhost, and multiple
+per-resource cache expiration times.
+
+.. code-block:: yaml
+
+  cache:
+    class: dogpile.cache.pylibmc
+    expiration_time: 3600
+    arguments:
+      url:
+        - 127.0.0.1
+    expiration:
+      server: 5
+      flavor: -1
+      compute.servers: 5
+      compute.flavors: -1
+      image.images: 5
+
+Finally, if the ``cache`` key is undefined, a null cache is enabled meaning
+caching is effectively disabled.
+
+.. note::
+
+   Non ``GET`` requests cause cache invalidation based on the caching key
+   prefix. This means that, for example, a ``PUT`` request to ``/images/ID``
+   will invalidate all images cache (list and all individual entries). Moreover
+   it is possible to explicitly pass the ``skip_cache`` parameter to the
+   ``proxy._get`` function to bypass cache and invalidate what is already
+   there. This is happening automatically in the ``wait_for_status`` methods
+   where it is expected that resource will change some of the attributes over
+   the time. Forcing complete cache invalidation can be achieved calling
+   ``conn._cache.invalidate``
+
+MFA Support
+-----------
+
+MFA support requires a specially prepared configuration file. In this case a
+combination of two different authorization plugins is used with their
+individual requirements to the specified parameters.
+
+.. code-block:: yaml
+
+  clouds:
+    mfa:
+      auth_type: "v3multifactor"
+      auth_methods:
+        - v3password
+        - v3totp
+      auth:
+        auth_url: https://identity.cloud.com
+        username: user
+        user_id: uid
+        password: XXXXXXXXX
+        project_name: project
+        user_domain_name: udn
+        project_domain_name: pdn
+
+
+IPv6
+----
+
+IPv6 is the future, and you should always use it if your cloud
+supports it and if your local network supports it. Both of those are
+easily detectable and all friendly software should do the right thing.
+
+However, sometimes a cloud API may return IPv6 information that is not
+useful to a production deployment.  For example, the API may provide
+an IPv6 address for a server, but not provide that to the host
+instance via metadata (configdrive) or standard IPv6 autoconfiguration
+methods (i.e. the host either needs to make a bespoke API call, or
+otherwise statically configure itself).
+
+For such situations, you can set the ``force_ipv4``, or ``OS_FORCE_IPV4``
+boolean environment variable.  For example:
+
+.. code-block:: yaml
+
+  clouds:
+    mtvexx:
+      profile: vexxhost
+      auth:
+        username: mordred@inaugust.com
+        password: XXXXXXXXX
+        project_name: mordred@inaugust.com
+      region_name: ca-ymq-1
+      dns_api_version: 1
+    monty:
+      profile: fooprovider
+      force_ipv4: true
+      auth:
+        username: mordred@inaugust.com
+        password: XXXXXXXXX
+        project_name: mordred@inaugust.com
+      region_name: RegionFoo
+
+The above snippet will tell client programs to prefer the IPv4 address
+and leave the ``public_v6`` field of the `Server` object blank for the
+``fooprovider`` cloud .  You can also set this with a client flag for
+all clouds:
+
+.. code-block:: yaml
+
+  client:
+    force_ipv4: true
+
+
+Per-region settings
+-------------------
+
+Sometimes you have a cloud provider that has config that is common to the
+cloud, but also with some things you might want to express on a per-region
+basis. For instance, Internap provides a public and private network specific
+to the user in each region, and putting the values of those networks into
+config can make consuming programs more efficient.
+
+To support this, the region list can actually be a list of dicts, and any
+setting that can be set at the cloud level can be overridden for that
+region.
+
+.. code-block:: yaml
+
+  clouds:
+    internap:
+      profile: internap
+      auth:
+        password: XXXXXXXXXXXXXXXXX
+        username: api-55f9a00fb2619
+        project_name: inap-17037
+      regions:
+      - name: ams01
+        values:
+          networks:
+          - name: inap-17037-WAN1654
+            routes_externally: true
+          - name: inap-17037-LAN6745
+      - name: nyj01
+        values:
+          networks:
+          - name: inap-17037-WAN1654
+            routes_externally: true
+          - name: inap-17037-LAN6745
+
+
+Setting Precedence
+------------------
+
+Some settings are redundant, e.g. ``project-name`` and ``project-id`` both
+specify the project. In a conflict between redundant settings, the
+``_name`` ``clouds.yaml`` option (or equivalent ``-name`` CLI option and ``_NAME`` environment variable) will be used.
+
+Some environment variables or commandline flags can override the settings from
+clouds.yaml. These are:
+
+- ``--domain-id`` (``OS_DOMAIN_ID``)
+- ``--domain-name`` (``OS_DOMAIN_NAME``)
+- ``--user-domain-id`` (``OS_USER_DOMAIN_ID``)
+- ``--user-domain-name`` (``OS_USER_DOMAIN_NAME``)
+- ``--project-domain-id`` (``OS_PROJECT_DOMAIN_ID``)
+- ``--project-domain-name`` (``OS_PROJECT_DOMAIN_NAME``)
+- ``--auth-token`` (``OS_AUTH_TOKEN``)
+- ``--project-id`` (``OS_PROJECT_ID``)
+- ``--project-name`` (``OS_PROJECT_NAME``)
+- ``--tenant-id`` (``OS_TENANT_ID``) (deprecated for ``--project-id``)
+- ``--tenant-name`` (``OS_TENANT_NAME``) (deprecated for ``--project-name``)
+
+Similarly, if one of the above settings is specified in ``clouds.yaml`` as
+part of the ``auth`` section as well as the main section, the ``auth`` settings
+will be overridden. For example in this config section, note that project is
+specified multiple times:
+
+.. code-block:: yaml
+
+  clouds:
+    mtvexx:
+      profile: https://vexxhost.com
+      auth:
+        username: mordred@inaugust.com
+        password: XXXXXXXXX
+        project_name: mylessfavoriteproject
+        project_id: 0bedab75-898c-4521-a038-0b4b71c41bed
+      region_name: ca-ymq-1
+      project_name: myfavoriteproject
+      project_id: 2acf9403-25e8-479e-a3c6-d67540c424a4
+
+In the above example, the ``project_id`` configuration values will be ignored
+in favor of the ``project_name`` configuration values, and the higher-level
+project will be chosen over the auth-specified project. So the actual project
+used will be ```myfavoriteproject```.
diff --git a/doc/source/user/config/index.rst b/doc/source/user/config/index.rst
new file mode 100644
index 0000000..1163723
--- /dev/null
+++ b/doc/source/user/config/index.rst
@@ -0,0 +1,12 @@
+======================
+Using os-client-config
+======================
+
+.. toctree::
+   :maxdepth: 2
+
+   configuration
+   using
+   vendor-support
+   network-config
+   reference
diff --git a/doc/source/user/config/network-config.rst b/doc/source/user/config/network-config.rst
new file mode 100644
index 0000000..ea85414
--- /dev/null
+++ b/doc/source/user/config/network-config.rst
@@ -0,0 +1,67 @@
+==============
+Network Config
+==============
+
+There are several different qualities that networks in OpenStack might have
+that might not be able to be automatically inferred from the available
+metadata. To help users navigate more complex setups, `os-client-config`
+allows configuring a list of network metadata.
+
+.. code-block:: yaml
+
+  clouds:
+    amazing:
+      networks:
+      - name: blue
+        routes_externally: true
+      - name: purple
+        routes_externally: true
+        default_interface: true
+      - name: green
+        routes_externally: false
+      - name: yellow
+        routes_externally: false
+        nat_destination: true
+      - name: chartreuse
+        routes_externally: false
+        routes_ipv6_externally: true
+      - name: aubergine
+        routes_ipv4_externally: false
+        routes_ipv6_externally: true
+
+Every entry must have a name field, which can hold either the name or the id
+of the network.
+
+`routes_externally` is a boolean field that labels the network as handling
+north/south traffic off of the cloud. In a public cloud this might be thought
+of as the "public" network, but in private clouds it's possible it might
+be an RFC1918 address. In either case, it's provides IPs to servers that
+things not on the cloud can use. This value defaults to `false`, which
+indicates only servers on the same network can talk to it.
+
+`routes_ipv4_externally` and `routes_ipv6_externally` are boolean fields to
+help handle `routes_externally` in the case where a network has a split stack
+with different values for IPv4 and IPv6. Either entry, if not given, defaults
+to the value of `routes_externally`.
+
+`default_interface` is a boolean field that indicates that the network is the
+one that programs should use. It defaults to false. An example of needing to
+use this value is a cloud with two private networks, and where a user is
+running ansible in one of the servers to talk to other servers on the private
+network. Because both networks are private, there would otherwise be no way
+to determine which one should be used for the traffic. There can only be one
+`default_interface` per cloud.
+
+`nat_destination` is a boolean field that indicates which network floating
+ips should be attached to. It defaults to false. Normally this can be inferred
+by looking for a network that has subnets that have a gateway_ip. But it's
+possible to have more than one network that satisfies that condition, so the
+user might want to tell programs which one to pick. There can be only one
+`nat_destination` per cloud.
+
+`nat_source` is a boolean field that indicates which network floating
+ips should be requested from. It defaults to false. Normally this can be
+inferred by looking for a network that is attached to a router. But it's
+possible to have more than one network that satisfies that condition, so the
+user might want to tell programs which one to pick. There can be only one
+`nat_source` per cloud.
diff --git a/doc/source/user/config/reference.rst b/doc/source/user/config/reference.rst
new file mode 100644
index 0000000..b4909ad
--- /dev/null
+++ b/doc/source/user/config/reference.rst
@@ -0,0 +1,14 @@
+=============
+API Reference
+=============
+
+.. module:: openstack.config
+   :synopsis: OpenStack client configuration
+
+.. autoclass:: openstack.config.OpenStackConfig
+   :members:
+   :inherited-members:
+
+.. autoclass:: openstack.config.cloud_region.CloudRegion
+   :members:
+   :inherited-members:
diff --git a/doc/source/user/config/using.rst b/doc/source/user/config/using.rst
new file mode 100644
index 0000000..2359de0
--- /dev/null
+++ b/doc/source/user/config/using.rst
@@ -0,0 +1,52 @@
+========================================
+Using openstack.config in an Application
+========================================
+
+Usage
+-----
+
+The simplest and least useful thing you can do is:
+
+.. code-block:: python
+
+  python -m openstack.config.loader
+
+Which will print out whatever if finds for your config. If you want to use
+it from python, which is much more likely what you want to do, things like:
+
+Get a named cloud.
+
+.. code-block:: python
+
+  import openstack.config
+
+  cloud_region = openstack.config.OpenStackConfig().get_one(
+      'internap', region_name='ams01')
+  print(cloud_region.name, cloud_region.region, cloud_region.config)
+
+Or, get all of the clouds.
+
+.. code-block:: python
+
+  import openstack.config
+
+  cloud_regions = openstack.config.OpenStackConfig().get_all()
+  for cloud_region in cloud_regions:
+      print(cloud_region.name, cloud_region.region, cloud_region.config)
+
+argparse
+--------
+
+If you're using `openstack.config` from a program that wants to process
+command line options, there is a registration function to register the
+arguments that both `openstack.config` and keystoneauth know how to deal
+with - as well as a consumption argument.
+
+.. code-block:: python
+
+  import argparse
+
+  import openstack
+
+  parser = argparse.ArgumentParser()
+  cloud = openstack.connect(options=parser)
diff --git a/doc/source/user/config/vendor-support.rst b/doc/source/user/config/vendor-support.rst
new file mode 100644
index 0000000..5e1ea39
--- /dev/null
+++ b/doc/source/user/config/vendor-support.rst
@@ -0,0 +1,348 @@
+==============
+Vendor Support
+==============
+
+OpenStack presents deployers with many options, some of which can expose
+differences to end users. `os-client-config` tries its best to collect
+information about various things a user would need to know. The following
+is a text representation of the vendor related defaults `os-client-config`
+knows about.
+
+Default Values
+--------------
+
+These are the default behaviors unless a cloud is configured differently.
+
+* Identity uses `password` authentication
+* Identity API Version is 2
+* Image API Version is 2
+* Volume API Version is 2
+* Compute API Version is 2.1
+* Images must be in `qcow2` format
+* Images are uploaded using PUT interface
+* Public IPv4 is directly routable via DHCP from Neutron
+* IPv6 is not provided
+* Floating IPs are not required
+* Floating IPs are provided by Neutron
+* Security groups are provided by Neutron
+* Vendor specific agents are not used
+
+AURO
+----
+
+https://api.auro.io:5000/v2.0
+
+============== ================
+Region Name    Location
+============== ================
+van1           Vancouver, BC
+============== ================
+
+* Public IPv4 is provided via NAT with Neutron Floating IP
+
+Betacloud
+---------
+
+https://api-1.betacloud.de:5000
+
+============== ==================
+Region Name    Location
+============== ==================
+betacloud-1    Karlsruhe, Germany
+============== ==================
+
+* Identity API Version is 3
+* Images must be in `raw` format
+* Public IPv4 is provided via NAT with Neutron Floating IP
+* Volume API Version is 3
+
+Catalyst
+--------
+
+https://api.cloud.catalyst.net.nz:5000/v2.0
+
+============== ================
+Region Name    Location
+============== ================
+nz-por-1       Porirua, NZ
+nz_wlg_2       Wellington, NZ
+============== ================
+
+* Identity API Version is 3
+* Compute API Version is 2
+* Images must be in `raw` format
+* Volume API Version is 3
+
+City Cloud
+----------
+
+https://%(region_name)s.citycloud.com:5000/v3/
+
+============== ================
+Region Name    Location
+============== ================
+Buf1           Buffalo, NY
+dx1            Dubai, UAE
+Fra1           Frankfurt, DE
+Kna1           Karlskrona, SE
+Lon1           London, UK
+Sto2           Stockholm, SE
+tky1           Tokyo, JP
+============== ================
+
+* Identity API Version is 3
+* Public IPv4 is provided via NAT with Neutron Floating IP
+* Volume API Version is 1
+
+ConoHa
+------
+
+https://identity.%(region_name)s.conoha.io
+
+============== ================
+Region Name    Location
+============== ================
+tyo1           Tokyo, JP
+sin1           Singapore
+sjc1           San Jose, CA
+============== ================
+
+* Image upload is not supported
+
+DreamCompute
+------------
+
+https://iad2.dream.io:5000
+
+============== ================
+Region Name    Location
+============== ================
+RegionOne      Ashburn, VA
+============== ================
+
+* Identity API Version is 3
+* Images must be in `raw` format
+* IPv6 is provided to every server
+
+Open Telekom Cloud
+------------------
+
+https://iam.%(region_name)s.otc.t-systems.com/v3
+
+============== ===================
+Region Name    Location
+============== ===================
+eu-de          Biere/Magdeburg, DE
+eu-nl          Amsterdam, NL
+============== ===================
+
+* Identity API Version is 3
+* Public IPv4 is provided via NAT with Neutron Floating IP
+
+ELASTX
+------
+
+https://ops.elastx.cloud:5000/v3
+
+============== ================
+Region Name    Location
+============== ================
+se-sto         Stockholm, SE
+============== ================
+
+* Identity API Version is 3
+* Public IPv4 is provided via NAT with Neutron Floating IP
+
+Enter Cloud Suite
+-----------------
+
+https://api.entercloudsuite.com/v2.0
+
+============== ================
+Region Name    Location
+============== ================
+nl-ams1        Amsterdam, NL
+it-mil1        Milan, IT
+de-fra1        Frankfurt, DE
+============== ================
+
+* Compute API Version is 2
+
+Fuga
+----
+
+https://identity.api.fuga.io:5000
+
+============== ================
+Region Name    Location
+============== ================
+cystack        Netherlands
+============== ================
+
+* Identity API Version is 3
+* Volume API Version is 3
+
+Internap
+--------
+
+https://identity.api.cloud.inap.com/v2.0
+
+============== ================
+Region Name    Location
+============== ================
+ams01          Amsterdam, NL
+da01           Dallas, TX
+nyj01          New York, NY
+sin01          Singapore
+sjc01          San Jose, CA
+============== ================
+
+* Floating IPs are not supported
+
+Limestone Networks
+------------------
+
+https://auth.cloud.lstn.net:5000/v3
+
+============== ==================
+Region Name    Location
+============== ==================
+us-dfw-1       Dallas, TX
+us-slc         Salt Lake City, UT
+============== ==================
+
+* Identity API Version is 3
+* Images must be in `raw` format
+* IPv6 is provided to every server connected to the `Public Internet` network
+
+OVH
+---
+
+https://auth.cloud.ovh.net/v3
+
+============== ================
+Region Name    Location
+============== ================
+BHS1           Beauharnois, QC
+SBG1           Strassbourg, FR
+GRA1           Gravelines, FR
+============== ================
+
+* Images may be in `raw` format. The `qcow2` default is also supported
+* Floating IPs are not supported
+
+Rackspace
+---------
+
+https://identity.api.rackspacecloud.com/v2.0/
+
+============== ================
+Region Name    Location
+============== ================
+DFW            Dallas, TX
+HKG            Hong Kong
+IAD            Washington, D.C.
+LON            London, UK
+ORD            Chicago, IL
+SYD            Sydney, NSW
+============== ================
+
+* Database Service Type is `rax:database`
+* Compute Service Name is `cloudServersOpenStack`
+* Images must be in `vhd` format
+* Images must be uploaded using the Glance Task Interface
+* Floating IPs are not supported
+* Public IPv4 is directly routable via static config by Nova
+* IPv6 is provided to every server
+* Security groups are not supported
+* Uploaded Images need properties to not use vendor agent::
+  :vm_mode: hvm
+  :xenapi_use_agent: False
+* Block Storage API Version is 2
+* The Block Storage API supports version 2 but only version 1 is in
+  the catalog. The Block Storage endpoint is
+  https://{region_name}.blockstorage.api.rackspacecloud.com/v2/{project_id}
+* While passwords are recommended for use, API keys do work as well.
+  The `rackspaceauth` python package must be installed, and then the following
+  can be added to clouds.yaml::
+
+    auth:
+      username: myusername
+      api_key: myapikey
+    auth_type: rackspace_apikey
+
+SWITCHengines
+-------------
+
+https://keystone.cloud.switch.ch:5000/v3
+
+============== ================
+Region Name    Location
+============== ================
+LS             Lausanne, CH
+ZH             Zurich, CH
+============== ================
+
+* Identity API Version is 3
+* Compute API Version is 2
+* Images must be in `raw` format
+* Volume API Version is 3
+
+Ultimum
+-------
+
+https://console.ultimum-cloud.com:5000/v2.0
+
+============== ================
+Region Name    Location
+============== ================
+RegionOne      Prague, CZ
+============== ================
+
+* Volume API Version is 1
+
+UnitedStack
+-----------
+
+https://identity.api.ustack.com/v3
+
+============== ================
+Region Name    Location
+============== ================
+bj1            Beijing, CN
+gd1            Guangdong, CN
+============== ================
+
+* Identity API Version is 3
+* Images must be in `raw` format
+* Volume API Version is 1
+
+VEXXHOST
+--------
+
+http://auth.vexxhost.net
+
+============== ================
+Region Name    Location
+============== ================
+ca-ymq-1       Montreal, QC
+sjc1           Santa Clara, CA
+============== ================
+
+* DNS API Version is 1
+* Identity API Version is 3
+* Volume API Version is 3
+
+Zetta
+-----
+
+https://identity.api.zetta.io/v3
+
+============== ================
+Region Name    Location
+============== ================
+no-osl1        Oslo, NO
+============== ================
+
+* DNS API Version is 2
+* Identity API Version is 3
diff --git a/doc/source/user/connection.rst b/doc/source/user/connection.rst
new file mode 100644
index 0000000..21833c3
--- /dev/null
+++ b/doc/source/user/connection.rst
@@ -0,0 +1,26 @@
+Connection
+==========
+.. automodule:: openstack.connection
+
+   from_config
+   -----------
+   .. autofunction:: openstack.connection.from_config
+
+Connection Object
+-----------------
+
+.. autoclass:: openstack.connection.Connection
+   :members:
+   :inherited-members:
+
+
+Transitioning from Profile
+--------------------------
+
+Support exists for users coming from older releases of OpenStack SDK who have
+been using the :class:`~openstack.profile.Profile` interface.
+
+.. toctree::
+   :maxdepth: 1
+
+   transition_from_profile
diff --git a/doc/source/user/examples b/doc/source/user/examples
new file mode 120000
index 0000000..9f9d1de
--- /dev/null
+++ b/doc/source/user/examples
@@ -0,0 +1 @@
+../../../examples
\ No newline at end of file
diff --git a/doc/source/user/exceptions.rst b/doc/source/user/exceptions.rst
new file mode 100644
index 0000000..3e85f6f
--- /dev/null
+++ b/doc/source/user/exceptions.rst
@@ -0,0 +1,15 @@
+Exceptions
+==========
+
+openstacksdk provides a number of `exceptions`__ for commonly encountered
+issues, such as missing API endpoints, various HTTP error codes, timeouts and
+so forth. It is the responsibility of the calling application to handle these
+exceptions appropriately.
+
+Available exceptions
+--------------------
+
+.. automodule:: openstack.exceptions
+   :members:
+
+.. __: https://docs.python.org/3/library/exceptions.html
diff --git a/doc/source/user/guides/baremetal.rst b/doc/source/user/guides/baremetal.rst
new file mode 100644
index 0000000..cbfd966
--- /dev/null
+++ b/doc/source/user/guides/baremetal.rst
@@ -0,0 +1,67 @@
+Using OpenStack Baremetal
+=========================
+
+Before working with the Bare Metal service, you'll need to create a
+connection to your OpenStack cloud by following the :doc:`connect` user
+guide. This will provide you with the ``conn`` variable used in the examples
+below.
+
+.. contents:: Table of Contents
+   :local:
+
+The primary resource of the Bare Metal service is the **node**.
+
+Below are a few usage examples. For a reference to all the available methods,
+see :doc:`/user/proxies/baremetal`.
+
+CRUD operations
+~~~~~~~~~~~~~~~
+
+List Nodes
+----------
+
+A **node** is a bare metal machine.
+
+.. literalinclude:: ../examples/baremetal/list.py
+   :pyobject: list_nodes
+
+Full example: `baremetal resource list`_
+
+Provisioning operations
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Provisioning actions are the main way to manipulate the nodes. See `Bare Metal
+service states documentation`_ for details.
+
+Manage and inspect Node
+-----------------------
+
+*Managing* a node in the ``enroll`` provision state validates the management
+(IPMI, Redfish, etc) credentials and moves the node to the ``manageable``
+state. *Managing* a node in the ``available`` state moves it to the
+``manageable`` state. In this state additional actions, such as configuring
+RAID or inspecting, are available.
+
+*Inspecting* a node detects its properties by either talking to its BMC or by
+booting a special ramdisk.
+
+.. literalinclude:: ../examples/baremetal/provisioning.py
+   :pyobject: manage_and_inspect_node
+
+Full example: `baremetal provisioning`_
+
+Provide Node
+------------
+
+*Providing* a node in the ``manageable`` provision state makes it available
+for deployment.
+
+.. literalinclude:: ../examples/baremetal/provisioning.py
+   :pyobject: provide_node
+
+Full example: `baremetal provisioning`_
+
+
+.. _baremetal resource list: http://opendev.org/openstack/openstacksdk/src/branch/master/examples/baremetal/list.py
+.. _baremetal provisioning: http://opendev.org/openstack/openstacksdk/src/branch/master/examples/baremetal/provisioning.py
+.. _Bare Metal service states documentation: https://docs.openstack.org/ironic/latest/contributor/states.html
diff --git a/doc/source/user/guides/block_storage.rst b/doc/source/user/guides/block_storage.rst
new file mode 100644
index 0000000..8f2661d
--- /dev/null
+++ b/doc/source/user/guides/block_storage.rst
@@ -0,0 +1,9 @@
+Using OpenStack Block Storage
+=============================
+
+Before working with the Block Storage service, you'll need to create a
+connection to your OpenStack cloud by following the :doc:`connect` user
+guide. This will provide you with the ``conn`` variable used in the examples
+below.
+
+.. TODO(thowe): Implement this guide
diff --git a/doc/source/user/guides/clustering.rst b/doc/source/user/guides/clustering.rst
new file mode 100644
index 0000000..af56db5
--- /dev/null
+++ b/doc/source/user/guides/clustering.rst
@@ -0,0 +1,37 @@
+..
+  Licensed under the Apache License, Version 2.0 (the "License"); you may
+  not use this file except in compliance with the License. You may obtain
+  a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+  License for the specific language governing permissions and limitations
+  under the License.
+
+
+==========================
+Using OpenStack Clustering
+==========================
+
+Before working with the Clustering service, you'll need to create a
+connection to your OpenStack cloud by following the :doc:`connect` user guide.
+This will provide you with the ``conn`` variable used by all examples in this
+guide.
+
+The primary abstractions/resources of the Clustering service are:
+
+.. toctree::
+   :maxdepth: 1
+
+   Profile Type <clustering/profile_type>
+   Profile <clustering/profile>
+   Cluster <clustering/cluster>
+   Node <clustering/node>
+   Policy Type <clustering/policy_type>
+   Policy <clustering/policy>
+   Receiver <clustering/receiver>
+   Action <clustering/action>
+   Event <clustering/event>
diff --git a/doc/source/user/guides/clustering/action.rst b/doc/source/user/guides/clustering/action.rst
new file mode 100644
index 0000000..1be15ec
--- /dev/null
+++ b/doc/source/user/guides/clustering/action.rst
@@ -0,0 +1,47 @@
+..
+  Licensed under the Apache License, Version 2.0 (the "License"); you may
+  not use this file except in compliance with the License. You may obtain
+  a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+  License for the specific language governing permissions and limitations
+  under the License.
+
+====================
+Working with Actions
+====================
+
+An action is an abstraction of some logic that can be executed by a worker
+thread. Most of the operations supported by Senlin are executed asynchronously,
+which means they are queued into database and then picked up by certain worker
+thread for execution.
+
+
+List Actions
+~~~~~~~~~~~~
+
+To examine the list of actions:
+
+.. literalinclude:: ../../examples/clustering/action.py
+   :pyobject: list_actions
+
+When listing actions, you can specify the sorting option using the ``sort``
+parameter and you can do pagination using the ``limit`` and ``marker``
+parameters.
+
+Full example: `manage action`_
+
+
+Get Action
+~~~~~~~~~~
+
+To get a action based on its name or ID:
+
+.. literalinclude:: ../../examples/clustering/action.py
+   :pyobject: get_action
+
+.. _manage action: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/clustering/action.py
diff --git a/doc/source/user/guides/clustering/cluster.rst b/doc/source/user/guides/clustering/cluster.rst
new file mode 100644
index 0000000..6fd7986
--- /dev/null
+++ b/doc/source/user/guides/clustering/cluster.rst
@@ -0,0 +1,193 @@
+..
+  Licensed under the Apache License, Version 2.0 (the "License"); you may
+  not use this file except in compliance with the License. You may obtain
+  a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+  License for the specific language governing permissions and limitations
+  under the License.
+
+=================
+Managing Clusters
+=================
+
+Clusters are first-class citizens in Senlin service design. A cluster is
+defined as a collection of homogeneous objects. The "homogeneous" here means
+that the objects managed (aka. Nodes) have to be instantiated from the same
+"profile type".
+
+
+List Clusters
+~~~~~~~~~~~~~
+
+To examine the list of receivers:
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: list_cluster
+
+When listing clusters, you can specify the sorting option using the ``sort``
+parameter and you can do pagination using the ``limit`` and ``marker``
+parameters.
+
+Full example: `manage cluster`_
+
+
+Create Cluster
+~~~~~~~~~~~~~~
+
+When creating a cluster, you will provide a dictionary with keys and values
+according to the cluster type referenced.
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: create_cluster
+
+Optionally, you can specify a ``metadata`` keyword argument that contains some
+key-value pairs to be associated with the cluster.
+
+Full example: `manage cluster`_
+
+
+Get Cluster
+~~~~~~~~~~~
+
+To get a cluster based on its name or ID:
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: get_cluster
+
+Full example: `manage cluster`_
+
+
+Find Cluster
+~~~~~~~~~~~~
+
+To find a cluster based on its name or ID:
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: find_cluster
+
+Full example: `manage cluster`_
+
+
+Update Cluster
+~~~~~~~~~~~~~~
+
+After a cluster is created, most of its properties are immutable. Still, you
+can update a cluster's ``name`` and/or ``params``.
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: update_cluster
+
+Full example: `manage cluster`_
+
+
+Delete Cluster
+~~~~~~~~~~~~~~
+
+A cluster can be deleted after creation, When there are nodes in the cluster,
+the Senlin engine will launch a process to delete all nodes from the cluster
+and destroy them before deleting the cluster object itself.
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: delete_cluster
+
+
+Add Nodes to Cluster
+~~~~~~~~~~~~~~~~~~~~
+
+Add some existing nodes into the specified cluster.
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: add_nodes_to_cluster
+
+
+Remove Nodes from Cluster
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Remove nodes from specified cluster.
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: remove_nodes_from_cluster
+
+
+Replace Nodes in Cluster
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+Replace some existing nodes in the specified cluster.
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: replace_nodes_in_cluster
+
+
+Cluster Scale Out
+~~~~~~~~~~~~~~~~~
+
+Inflate the size of a cluster.
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: scale_out_cluster
+
+
+Cluster Scale In
+~~~~~~~~~~~~~~~~
+
+Shrink the size of a cluster.
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: scale_out_cluster
+
+
+Cluster Resize
+~~~~~~~~~~~~~~
+
+Resize of cluster.
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: resize_cluster
+
+
+Attach Policy to Cluster
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+Once a policy is attached (bound) to a cluster, it will be
+enforced when related actions are performed on that cluster,
+unless the policy is (temporarily) disabled on the cluster
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: attach_policy_to_cluster
+
+
+Detach Policy from Cluster
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Once a policy is attached to a cluster, it can be detached
+from the cluster at user's request.
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: detach_policy_from_cluster
+
+
+Cluster Check
+~~~~~~~~~~~~~
+
+Check cluster health status, Cluster members can be check.
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: check_cluster
+
+
+Cluster Recover
+~~~~~~~~~~~~~~~
+
+To restore a specified cluster, members in the cluster will be checked.
+
+.. literalinclude:: ../../examples/clustering/cluster.py
+   :pyobject: recover_cluster
+
+
+.. _manage cluster: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/clustering/cluster.py
+
diff --git a/doc/source/user/guides/clustering/event.rst b/doc/source/user/guides/clustering/event.rst
new file mode 100644
index 0000000..da958e3
--- /dev/null
+++ b/doc/source/user/guides/clustering/event.rst
@@ -0,0 +1,47 @@
+..
+  Licensed under the Apache License, Version 2.0 (the "License"); you may
+  not use this file except in compliance with the License. You may obtain
+  a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+  License for the specific language governing permissions and limitations
+  under the License.
+
+===================
+Working with Events
+===================
+
+An event is a record generated during engine execution. Such an event
+captures what has happened inside the senlin-engine. The senlin-engine service
+generates event records when it is performing some actions or checking
+policies.
+
+
+List Events
+~~~~~~~~~~~
+
+To examine the list of events:
+
+.. literalinclude:: ../../examples/clustering/event.py
+   :pyobject: list_events
+
+When listing events, you can specify the sorting option using the ``sort``
+parameter and you can do pagination using the ``limit`` and ``marker``
+parameters.
+
+Full example: `manage event`_
+
+
+Get Event
+~~~~~~~~~
+
+To get a event based on its name or ID:
+
+.. literalinclude:: ../../examples/clustering/event.py
+   :pyobject: get_event
+
+.. _manage event: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/clustering/event.py
diff --git a/doc/source/user/guides/clustering/node.rst b/doc/source/user/guides/clustering/node.rst
new file mode 100644
index 0000000..99b5993
--- /dev/null
+++ b/doc/source/user/guides/clustering/node.rst
@@ -0,0 +1,120 @@
+..
+  Licensed under the Apache License, Version 2.0 (the "License"); you may
+  not use this file except in compliance with the License. You may obtain
+  a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+  License for the specific language governing permissions and limitations
+  under the License.
+
+==============
+Managing Nodes
+==============
+
+Node is a logical object managed by the Senlin service. A node can be a member
+of at most one cluster at any time. A node can be an orphan node which means
+it doesn't belong to any clusters.
+
+
+List Nodes
+~~~~~~~~~~
+
+To examine the list of Nodes:
+
+.. literalinclude:: ../../examples/clustering/node.py
+   :pyobject: list_nodes
+
+When listing nodes, you can specify the sorting option using the ``sort``
+parameter and you can do pagination using the ``limit`` and ``marker``
+parameters.
+
+Full example: `manage node`_
+
+
+Create Node
+~~~~~~~~~~~
+
+When creating a node, you will provide a dictionary with keys and values
+according to the node type referenced.
+
+.. literalinclude:: ../../examples/clustering/node.py
+   :pyobject: create_node
+
+Optionally, you can specify a ``metadata`` keyword argument that contains some
+key-value pairs to be associated with the node.
+
+Full example: `manage node`_
+
+
+Get Node
+~~~~~~~~
+
+To get a node based on its name or ID:
+
+.. literalinclude:: ../../examples/clustering/node.py
+   :pyobject: get_node
+
+Full example: `manage node`_
+
+
+Find Node
+~~~~~~~~~
+
+To find a node based on its name or ID:
+
+.. literalinclude:: ../../examples/clustering/node.py
+   :pyobject: find_node
+
+Full example: `manage node`_
+
+
+Update Node
+~~~~~~~~~~~
+
+After a node is created, most of its properties are immutable. Still, you
+can update a node's ``name`` and/or ``params``.
+
+.. literalinclude:: ../../examples/clustering/node.py
+   :pyobject: update_node
+
+Full example: `manage node`_
+
+
+Delete Node
+~~~~~~~~~~~
+
+A node can be deleted after creation, provided that it is not referenced
+by any active clusters. If you attempt to delete a node that is still in
+use, you will get an error message.
+
+.. literalinclude:: ../../examples/clustering/node.py
+   :pyobject: delete_node
+
+Full example: `manage node`_
+
+
+Check Node
+~~~~~~~~~~
+
+If the underlying physical resource is not healthy, the node will be set
+to ERROR status.
+
+.. literalinclude:: ../../examples/clustering/node.py
+   :pyobject: check_node
+
+Full example: `manage node`_
+
+
+Recover Node
+~~~~~~~~~~~~
+
+To restore a specified node.
+
+.. literalinclude:: ../../examples/clustering/node.py
+   :pyobject: recover_node
+
+.. _manage node: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/clustering/node.py
diff --git a/doc/source/user/guides/clustering/policy.rst b/doc/source/user/guides/clustering/policy.rst
new file mode 100644
index 0000000..bf282b2
--- /dev/null
+++ b/doc/source/user/guides/clustering/policy.rst
@@ -0,0 +1,102 @@
+..
+  Licensed under the Apache License, Version 2.0 (the "License"); you may
+  not use this file except in compliance with the License. You may obtain
+  a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+  License for the specific language governing permissions and limitations
+  under the License.
+
+=================
+Managing Policies
+=================
+
+A **policy type**  can be treated as the meta-type of a `Policy` object. A
+registry of policy types is built when the Cluster service starts. When
+creating a `Policy` object, you will indicate the policy type used in its
+`spec` property.
+
+
+List Policies
+~~~~~~~~~~~~~
+
+To examine the list of policies:
+
+.. literalinclude:: ../../examples/clustering/policy.py
+   :pyobject: list_policies
+
+When listing policies, you can specify the sorting option using the ``sort``
+parameter and you can do pagination using the ``limit`` and ``marker``
+parameters.
+
+Full example: `manage policy`_
+
+
+Create Policy
+~~~~~~~~~~~~~
+
+When creating a policy, you will provide a dictionary with keys and values
+according to the policy type referenced.
+
+.. literalinclude:: ../../examples/clustering/policy.py
+   :pyobject: create_policy
+
+Optionally, you can specify a ``metadata`` keyword argument that contains some
+key-value pairs to be associated with the policy.
+
+Full example: `manage policy`_
+
+
+Find Policy
+~~~~~~~~~~~
+
+To find a policy based on its name or ID:
+
+.. literalinclude:: ../../examples/clustering/policy.py
+   :pyobject: find_policy
+
+Full example: `manage policy`_
+
+
+Get Policy
+~~~~~~~~~~
+
+To get a policy based on its name or ID:
+
+.. literalinclude:: ../../examples/clustering/policy.py
+   :pyobject: get_policy
+
+Full example: `manage policy`_
+
+
+Update Policy
+~~~~~~~~~~~~~
+
+After a policy is created, most of its properties are immutable. Still, you
+can update a policy's ``name`` and/or ``metadata``.
+
+.. literalinclude:: ../../examples/clustering/policy.py
+   :pyobject: update_policy
+
+The Cluster service doesn't allow updating the ``spec`` of a policy. The only
+way to achieve that is to create a new policy.
+
+Full example: `manage policy`_
+
+
+Delete Policy
+~~~~~~~~~~~~~
+
+A policy can be deleted after creation, provided that it is not referenced
+by any active clusters or nodes. If you attempt to delete a policy that is
+still in use, you will get an error message.
+
+.. literalinclude:: ../../examples/clustering/policy.py
+   :pyobject: delete_policy
+
+
+.. _manage policy: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/clustering/policy.py
diff --git a/doc/source/user/guides/clustering/policy_type.rst b/doc/source/user/guides/clustering/policy_type.rst
new file mode 100644
index 0000000..eb7bc62
--- /dev/null
+++ b/doc/source/user/guides/clustering/policy_type.rst
@@ -0,0 +1,45 @@
+..
+  Licensed under the Apache License, Version 2.0 (the "License"); you may
+  not use this file except in compliance with the License. You may obtain
+  a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+  License for the specific language governing permissions and limitations
+  under the License.
+
+=========================
+Working with Policy Types
+=========================
+
+A **policy** is a template that encodes the information needed for specifying
+the rules that are checked/enforced before/after certain actions are performed
+on a cluster. The rules are encoded in a property named ``spec``.
+
+
+List Policy Types
+~~~~~~~~~~~~~~~~~
+
+To examine the known policy types:
+
+.. literalinclude:: ../../examples/clustering/policy_type.py
+   :pyobject: list_policy_types
+
+Full example: `manage policy type`_
+
+
+Get Policy Type
+~~~~~~~~~~~~~~~
+
+To retrieve the details about a policy type, you need to provide the name of
+it.
+
+.. literalinclude:: ../../examples/clustering/policy_type.py
+   :pyobject: get_policy_type
+
+Full example: `manage policy type`_
+
+.. _manage policy type: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/clustering/policy_type.py
diff --git a/doc/source/user/guides/clustering/profile.rst b/doc/source/user/guides/clustering/profile.rst
new file mode 100644
index 0000000..7913784
--- /dev/null
+++ b/doc/source/user/guides/clustering/profile.rst
@@ -0,0 +1,105 @@
+..
+  Licensed under the Apache License, Version 2.0 (the "License"); you may
+  not use this file except in compliance with the License. You may obtain
+  a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+  License for the specific language governing permissions and limitations
+  under the License.
+
+=================
+Managing Profiles
+=================
+
+A **profile type**  can be treated as the meta-type of a `Profile` object. A
+registry of profile types is built when the Cluster service starts. When
+creating a `Profile` object, you will indicate the profile type used in its
+`spec` property.
+
+
+List Profiles
+~~~~~~~~~~~~~
+
+To examine the list of profiles:
+
+.. literalinclude:: ../../examples/clustering/profile.py
+   :pyobject: list_profiles
+
+When listing profiles, you can specify the sorting option using the ``sort``
+parameter and you can do pagination using the ``limit`` and ``marker``
+parameters.
+
+Full example: `manage profile`_
+
+
+Create Profile
+~~~~~~~~~~~~~~
+
+When creating a profile, you will provide a dictionary with keys and values
+specified according to the profile type referenced.
+
+.. literalinclude:: ../../examples/clustering/profile.py
+   :pyobject: create_profile
+
+Optionally, you can specify a ``metadata`` keyword argument that contains some
+key-value pairs to be associated with the profile.
+
+Full example: `manage profile`_
+
+
+Find Profile
+~~~~~~~~~~~~
+
+To find a profile based on its name or ID:
+
+.. literalinclude:: ../../examples/clustering/profile.py
+   :pyobject: find_profile
+
+The Cluster service doesn't allow updating the ``spec`` of a profile. The only
+way to achieve that is to create a new profile.
+
+Full example: `manage profile`_
+
+
+Get Profile
+~~~~~~~~~~~
+
+To get a profile based on its name or ID:
+
+.. literalinclude:: ../../examples/clustering/profile.py
+   :pyobject: get_profile
+
+Full example: `manage profile`_
+
+
+Update Profile
+~~~~~~~~~~~~~~
+
+After a profile is created, most of its properties are immutable. Still, you
+can update a profile's ``name`` and/or ``metadata``.
+
+.. literalinclude:: ../../examples/clustering/profile.py
+   :pyobject: update_profile
+
+The Cluster service doesn't allow updating the ``spec`` of a profile. The only
+way to achieve that is to create a new profile.
+
+Full example: `manage profile`_
+
+
+Delete Profile
+~~~~~~~~~~~~~~
+
+A profile can be deleted after creation, provided that it is not referenced
+by any active clusters or nodes. If you attempt to delete a profile that is
+still in use, you will get an error message.
+
+.. literalinclude:: ../../examples/clustering/profile.py
+   :pyobject: delete_profile
+
+
+.. _manage profile: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/clustering/profile.py
diff --git a/doc/source/user/guides/clustering/profile_type.rst b/doc/source/user/guides/clustering/profile_type.rst
new file mode 100644
index 0000000..4f8d364
--- /dev/null
+++ b/doc/source/user/guides/clustering/profile_type.rst
@@ -0,0 +1,44 @@
+..
+  Licensed under the Apache License, Version 2.0 (the "License"); you may
+  not use this file except in compliance with the License. You may obtain
+  a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+  License for the specific language governing permissions and limitations
+  under the License.
+
+==========================
+Working with Profile Types
+==========================
+
+A **profile** is a template used to create and manage nodes, i.e. objects
+exposed by other OpenStack services. A profile encodes the information needed
+for node creation in a property named ``spec``.
+
+
+List Profile Types
+~~~~~~~~~~~~~~~~~~
+
+To examine the known profile types:
+
+.. literalinclude:: ../../examples/clustering/profile_type.py
+   :pyobject: list_profile_types
+
+Full example: `manage profile type`_
+
+
+Get Profile Type
+~~~~~~~~~~~~~~~~
+
+To get the details about a profile type, you need to provide the name of it.
+
+.. literalinclude:: ../../examples/clustering/profile_type.py
+   :pyobject: get_profile_type
+
+Full example: `manage profile type`_
+
+.. _manage profile type: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/clustering/profile_type.py
diff --git a/doc/source/user/guides/clustering/receiver.rst b/doc/source/user/guides/clustering/receiver.rst
new file mode 100644
index 0000000..c3c71dc
--- /dev/null
+++ b/doc/source/user/guides/clustering/receiver.rst
@@ -0,0 +1,100 @@
+..
+  Licensed under the Apache License, Version 2.0 (the "License"); you may
+  not use this file except in compliance with the License. You may obtain
+  a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+  License for the specific language governing permissions and limitations
+  under the License.
+
+==================
+Managing Receivers
+==================
+
+Receivers are the event sinks associated to senlin clusters. When certain
+events (or alarms) are seen by a monitoring software, the software can
+notify the senlin clusters of those events (or alarms). When senlin receives
+those notifications, it can automatically trigger some predefined operations
+with preset parameter values.
+
+
+List Receivers
+~~~~~~~~~~~~~~
+
+To examine the list of receivers:
+
+.. literalinclude:: ../../examples/clustering/receiver.py
+   :pyobject: list_receivers
+
+When listing receivers, you can specify the sorting option using the ``sort``
+parameter and you can do pagination using the ``limit`` and ``marker``
+parameters.
+
+Full example: `manage receiver`_
+
+
+Create Receiver
+~~~~~~~~~~~~~~~
+
+When creating a receiver, you will provide a dictionary with keys and values
+according to the receiver type referenced.
+
+.. literalinclude:: ../../examples/clustering/receiver.py
+   :pyobject: create_receiver
+
+Optionally, you can specify a ``metadata`` keyword argument that contains some
+key-value pairs to be associated with the receiver.
+
+Full example: `manage receiver`_
+
+
+Get Receiver
+~~~~~~~~~~~~
+
+To get a receiver based on its name or ID:
+
+.. literalinclude:: ../../examples/clustering/receiver.py
+   :pyobject: get_receiver
+
+Full example: `manage receiver`_
+
+
+Find Receiver
+~~~~~~~~~~~~~
+
+To find a receiver based on its name or ID:
+
+.. literalinclude:: ../../examples/clustering/receiver.py
+   :pyobject: find_receiver
+
+Full example: `manage receiver`_
+
+
+Update Receiver
+~~~~~~~~~~~~~~~
+
+After a receiver is created, most of its properties are immutable. Still, you
+can update a receiver's ``name`` and/or ``params``.
+
+.. literalinclude:: ../../examples/clustering/receiver.py
+   :pyobject: update_receiver
+
+Full example: `manage receiver`_
+
+
+Delete Receiver
+~~~~~~~~~~~~~~~
+
+A receiver can be deleted after creation, provided that it is not referenced
+by any active clusters. If you attempt to delete a receiver that is still in
+use, you will get an error message.
+
+.. literalinclude:: ../../examples/clustering/receiver.py
+   :pyobject: delete_receiver
+
+
+.. _manage receiver: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/clustering/receiver.py
diff --git a/doc/source/user/guides/compute.rst b/doc/source/user/guides/compute.rst
new file mode 100644
index 0000000..bac8a10
--- /dev/null
+++ b/doc/source/user/guides/compute.rst
@@ -0,0 +1,89 @@
+Using OpenStack Compute
+=======================
+
+Before working with the Compute service, you'll need to create a connection
+to your OpenStack cloud by following the :doc:`connect` user guide. This will
+provide you with the ``conn`` variable used in the examples below.
+
+.. contents:: Table of Contents
+   :local:
+
+The primary resource of the Compute service is the server.
+
+List Servers
+------------
+
+A **server** is a virtual machine that provides access to a compute instance
+being run by your cloud provider.
+
+.. literalinclude:: ../examples/compute/list.py
+   :pyobject: list_servers
+
+Full example: `compute resource list`_
+
+List Images
+-----------
+
+An **image** is the operating system you want to use for your server.
+
+.. literalinclude:: ../examples/compute/list.py
+   :pyobject: list_images
+
+Full example: `compute resource list`_
+
+List Flavors
+------------
+
+A **flavor** is the resource configuration for a server. Each flavor is a
+unique combination of disk, memory, vCPUs, and network bandwidth.
+
+.. literalinclude:: ../examples/compute/list.py
+   :pyobject: list_flavors
+
+Full example: `compute resource list`_
+
+List Networks
+-------------
+
+A **network** provides connectivity to servers.
+
+.. literalinclude:: ../examples/network/list.py
+   :pyobject: list_networks
+
+Full example: `network resource list`_
+
+Create Key Pair
+---------------
+
+A **key pair** is the public key and private key of
+`public–key cryptography`_. They are used to encrypt and decrypt login
+information when connecting to your server.
+
+.. literalinclude:: ../examples/compute/create.py
+   :pyobject: create_keypair
+
+Full example: `compute resource create`_
+
+Create Server
+-------------
+
+At minimum, a server requires a name, an image, a flavor, and a network on
+creation. You can discover the names and IDs of these attributes by listing
+them as above and then using the find methods to get the appropriate
+resources.
+
+Ideally you'll also create a server using a keypair so you can login to that
+server with the private key.
+
+Servers take time to boot so we call ``wait_for_server`` to wait
+for it to become active.
+
+.. literalinclude:: ../examples/compute/create.py
+   :pyobject: create_server
+
+Full example: `compute resource create`_
+
+.. _compute resource list: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/compute/list.py
+.. _network resource list: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/network/list.py
+.. _compute resource create: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/compute/create.py
+.. _public–key cryptography: https://en.wikipedia.org/wiki/Public-key_cryptography
diff --git a/doc/source/user/guides/connect.rst b/doc/source/user/guides/connect.rst
new file mode 100644
index 0000000..5630bbc
--- /dev/null
+++ b/doc/source/user/guides/connect.rst
@@ -0,0 +1,32 @@
+Connect
+=======
+
+In order to work with an OpenStack cloud you first need to create a
+:class:`~openstack.connection.Connection` to it using your credentials. A
+:class:`~openstack.connection.Connection` can be
+created in 3 ways, using the class itself, :ref:`config-clouds-yaml`, or
+:ref:`config-environment-variables`. It is recommended to always use
+:ref:`config-clouds-yaml` as the same config can be used across tools and
+languages.
+
+Create Connection
+-----------------
+
+To create a :class:`~openstack.connection.Connection` instance, use the
+:func:`~openstack.connect` factory function.
+
+.. literalinclude:: ../examples/connect.py
+   :pyobject: create_connection
+
+Full example at `connect.py <https://opendev.org/openstack/openstacksdk/src/branch/master/examples/connect.py>`_
+
+.. note:: To enable logging, see the :doc:`logging` user guide.
+
+Next
+----
+Now that you can create a connection, continue with the :ref:`user_guides`
+to work with an OpenStack service.
+
+.. TODO(shade) Update the text here and consolidate with the old
+   os-client-config docs so that we have a single and consistent explanation
+   of the envvars cloud, etc.
diff --git a/doc/source/user/guides/connect_from_config.rst b/doc/source/user/guides/connect_from_config.rst
new file mode 100644
index 0000000..0e0b457
--- /dev/null
+++ b/doc/source/user/guides/connect_from_config.rst
@@ -0,0 +1,72 @@
+Connect From Config
+===================
+
+In order to work with an OpenStack cloud you first need to create a
+:class:`~openstack.connection.Connection` to it using your credentials. A
+:class:`~openstack.connection.Connection` can be
+created in 3 ways, using the class itself (see :doc:`connect`), a file, or
+environment variables as illustrated below. The SDK uses
+`os-client-config <https://opendev.org/openstack/os-client-config>`_
+to handle the configuration.
+
+Create Connection From A File
+-----------------------------
+
+Default Location
+****************
+
+To create a connection from a file you need a YAML file to contain the
+configuration.
+
+.. literalinclude:: ../../contributor/clouds.yaml
+   :language: yaml
+
+To use a configuration file called ``clouds.yaml`` in one of the default
+locations:
+
+* Current Directory
+* ~/.config/openstack
+* /etc/openstack
+
+call :py:func:`~openstack.connection.from_config`. The ``from_config``
+function takes three optional arguments:
+
+* **cloud_name** allows you to specify a cloud from your ``clouds.yaml`` file.
+* **cloud_config** allows you to pass in an existing
+  ``openstack.config.loader.OpenStackConfig``` object.
+* **options** allows you to specify a namespace object with options to be
+  added to the cloud config.
+
+.. literalinclude:: ../examples/connect.py
+   :pyobject: Opts
+
+.. literalinclude:: ../examples/connect.py
+   :pyobject: create_connection_from_config
+
+.. literalinclude:: ../examples/connect.py
+   :pyobject: create_connection_from_args
+
+.. note:: To enable logging, set ``debug=True`` in the ``options`` object.
+
+User Defined Location
+*********************
+
+To use a configuration file in a user defined location set the
+environment variable ``OS_CLIENT_CONFIG_FILE`` to the
+absolute path of a file.::
+
+    export OS_CLIENT_CONFIG_FILE=/path/to/my/config/my-clouds.yaml
+
+and call :py:func:`~openstack.connection.from_config` with the **cloud_name**
+of the cloud configuration to use, .
+
+.. Create Connection From Environment Variables
+   --------------------------------------------
+
+   TODO(etoews): Document when https://storyboard.openstack.org/#!/story/1489617
+   is fixed.
+
+Next
+----
+Now that you can create a connection, continue with the :ref:`user_guides`
+for an OpenStack service.
diff --git a/doc/source/user/guides/database.rst b/doc/source/user/guides/database.rst
new file mode 100644
index 0000000..44256b3
--- /dev/null
+++ b/doc/source/user/guides/database.rst
@@ -0,0 +1,8 @@
+Using OpenStack Database
+========================
+
+Before working with the Database service, you'll need to create a connection
+to your OpenStack cloud by following the :doc:`connect` user guide. This will
+provide you with the ``conn`` variable used in the examples below.
+
+.. TODO(thowe): Implement this guide
diff --git a/doc/source/user/guides/dns.rst b/doc/source/user/guides/dns.rst
new file mode 100644
index 0000000..c2d2680
--- /dev/null
+++ b/doc/source/user/guides/dns.rst
@@ -0,0 +1,18 @@
+Using OpenStack DNS
+===================
+
+Before working with the DNS service, you'll need to create a connection
+to your OpenStack cloud by following the :doc:`connect` user guide. This will
+provide you with the ``conn`` variable used in the examples below.
+
+.. TODO(gtema): Implement this guide
+
+List Zones
+----------
+
+.. literalinclude:: ../examples/dns/list.py
+   :pyobject: list_zones
+
+Full example: `dns resource list`_
+
+.. _dns resource list: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/dns/list.py
diff --git a/doc/source/user/guides/identity.rst b/doc/source/user/guides/identity.rst
new file mode 100644
index 0000000..9d94441
--- /dev/null
+++ b/doc/source/user/guides/identity.rst
@@ -0,0 +1,111 @@
+Using OpenStack Identity
+========================
+
+Before working with the Identity service, you'll need to create a connection
+to your OpenStack cloud by following the :doc:`connect` user guide. This will
+provide you with the ``conn`` variable used in the examples below.
+
+The OpenStack Identity service is the default identity management system for
+OpenStack. The Identity service authentication process confirms the identity
+of a user and an incoming request by validating a set of credentials that the
+user supplies. Initially, these credentials are a user name and password or a
+user name and API key. When the Identity service validates user credentials,
+it issues an authentication token that the user provides in subsequent
+requests. An authentication token is an alpha-numeric text string that enables
+access to OpenStack APIs and resources. A token may be revoked at any time and
+is valid for a finite duration.
+
+List Users
+----------
+A **user** is a digital representation of a person, system, or service that
+uses OpenStack cloud services. The Identity service validates that incoming
+requests are made by the user who claims to be making the call. Users have
+a login and can access resources by using assigned tokens. Users can be
+directly assigned to a particular project and behave as if they are contained
+in that project.
+
+.. literalinclude:: ../examples/identity/list.py
+   :pyobject: list_users
+
+Full example: `identity resource list`_
+
+List Credentials
+----------------
+**Credentials** are data that confirms the identity of the user. For example,
+user name and password, user name and API key, or an authentication token that
+the Identity service provides.
+
+.. literalinclude:: ../examples/identity/list.py
+   :pyobject: list_credentials
+
+Full example: `identity resource list`_
+
+List Projects
+-------------
+A **project** is a container that groups or isolates resources or identity
+objects.
+
+.. literalinclude:: ../examples/identity/list.py
+   :pyobject: list_projects
+
+Full example: `identity resource list`_
+
+List Domains
+------------
+A **domain** is an Identity service API v3 entity and represents a collection
+of projects and users that defines administrative boundaries for the management
+of Identity entities. Users can be granted the administrator role for a domain.
+A domain administrator can create projects, users, and groups in a domain and
+assign roles to users and groups in a domain.
+
+.. literalinclude:: ../examples/identity/list.py
+   :pyobject: list_domains
+
+Full example: `identity resource list`_
+
+List Groups
+-----------
+A **group** is an Identity service API v3 entity and represents a collection of
+users that are owned by a domain. A group role granted to a domain or project
+applies to all users in the group. Adding users to, or removing users from, a
+group respectively grants, or revokes, their role and authentication to the
+associated domain or project.
+
+.. literalinclude:: ../examples/identity/list.py
+   :pyobject: list_groups
+
+Full example: `identity resource list`_
+
+List Services
+-------------
+A **service** is an OpenStack service, such as Compute, Object Storage, or
+Image service, that provides one or more endpoints through which users can
+access resources and perform operations.
+
+.. literalinclude:: ../examples/identity/list.py
+   :pyobject: list_services
+
+Full example: `identity resource list`_
+
+List Endpoints
+--------------
+An **endpoint** is a network-accessible address, usually a URL, through which
+you can access a service.
+
+.. literalinclude:: ../examples/identity/list.py
+   :pyobject: list_endpoints
+
+Full example: `identity resource list`_
+
+List Regions
+------------
+A **region** is an Identity service API v3 entity and represents a general
+division in an OpenStack deployment. You can associate zero or more
+sub-regions with a region to make a tree-like structured hierarchy.
+
+.. literalinclude:: ../examples/identity/list.py
+   :pyobject: list_regions
+
+Full example: `identity resource list`_
+
+.. _identity resource list: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/identity/list.py
diff --git a/doc/source/user/guides/image.rst b/doc/source/user/guides/image.rst
new file mode 100644
index 0000000..9065a49
--- /dev/null
+++ b/doc/source/user/guides/image.rst
@@ -0,0 +1,97 @@
+Using OpenStack Image
+=====================
+
+Before working with the Image service, you'll need to create a connection
+to your OpenStack cloud by following the :doc:`connect` user guide. This will
+provide you with the ``conn`` variable used in the examples below.
+
+The primary resource of the Image service is the image.
+
+List Images
+-----------
+
+An **image** is a collection of files for a specific operating system
+that you use to create or rebuild a server. OpenStack provides
+`pre-built images <http://docs.openstack.org/image-guide/obtain-images.html>`_.
+You can also create custom images, or snapshots, from servers that you have
+launched. Images come in different formats and are sometimes called virtual
+machine images.
+
+.. literalinclude:: ../examples/image/list.py
+   :pyobject: list_images
+
+Full example: `image resource list`_
+
+Create Image
+------------
+
+Create an image by uploading its data and setting its attributes.
+
+.. literalinclude:: ../examples/image/create.py
+   :pyobject: upload_image
+
+Full example: `image resource create`_
+
+Create Image via interoperable image import process
+---------------------------------------------------
+
+Create an image then use interoperable image import process to download data
+from a web URL.
+
+For more information about the image import process, please check
+`interoperable image import`_
+
+.. literalinclude:: ../examples/image/import.py
+   :pyobject: import_image
+
+Full example: `image resource import`_
+
+.. _download_image-stream-true:
+
+Downloading an Image with stream=True
+-------------------------------------
+
+As images are often very large pieces of data, storing their entire contents
+in the memory of your application can be less than desirable. A more
+efficient method may be to iterate over a stream of the response data.
+
+By choosing to stream the response content, you determine the ``chunk_size``
+that is appropriate for your needs, meaning only that many bytes of data are
+read for each iteration of the loop until all data has been consumed.
+See :meth:`requests.Response.iter_content` for more information.
+
+When you choose to stream an image download, openstacksdk is no longer
+able to compute the checksum of the response data for you. This example
+shows how you might do that yourself, in a very similar manner to how
+the library calculates checksums for non-streamed responses.
+
+.. literalinclude:: ../examples/image/download.py
+   :pyobject: download_image_stream
+
+Downloading an Image with stream=False
+--------------------------------------
+
+If you wish to download an image's contents all at once and to memory,
+simply set ``stream=False``, which is the default.
+
+.. literalinclude:: ../examples/image/download.py
+   :pyobject: download_image
+
+Full example: `image resource download`_
+
+Delete Image
+------------
+
+Delete an image.
+
+.. literalinclude:: ../examples/image/delete.py
+   :pyobject: delete_image
+
+Full example: `image resource delete`_
+
+.. _image resource create: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/image/create.py
+.. _image resource import: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/image/import.py
+.. _image resource delete: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/image/delete.py
+.. _image resource list: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/image/list.py
+.. _image resource download: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/image/download.py
+.. _interoperable image import: https://docs.openstack.org/glance/latest/admin/interoperable-image-import.html
diff --git a/doc/source/user/guides/intro.rst b/doc/source/user/guides/intro.rst
new file mode 100644
index 0000000..ac53905
--- /dev/null
+++ b/doc/source/user/guides/intro.rst
@@ -0,0 +1,102 @@
+===============
+Getting started
+===============
+
+openstacksdk aims to talk to any OpenStack cloud. To do this, it requires a
+configuration file. openstacksdk favours ``clouds.yaml`` files, but can also
+use environment variables. The ``clouds.yaml`` file should be provided by your
+cloud provider or deployment tooling. An example:
+
+.. code-block:: yaml
+
+    clouds:
+     mordred:
+       region_name: Dallas
+       auth:
+         username: 'mordred'
+         password: XXXXXXX
+         project_name: 'demo'
+         auth_url: 'https://identity.example.com'
+
+More information on configuring openstacksdk can be found in
+:doc:`/user/config/configuration`.
+
+Given sufficient configuration, you can use openstacksdk to interact with your
+cloud. openstacksdk consists of three layers. Most users will make use of the
+*proxy* layer. Using the above ``clouds.yaml``, consider listing servers:
+
+.. code-block:: python
+
+    import openstack
+
+    # Initialize and turn on debug logging
+    openstack.enable_logging(debug=True)
+
+    # Initialize connection
+    conn = openstack.connect(cloud='mordred')
+
+    # List the servers
+    for server in conn.compute.servers():
+        print(server.to_dict())
+
+openstacksdk also contains a higher-level *cloud* layer based on logical
+operations:
+
+.. code-block:: python
+
+    import openstack
+
+    # Initialize and turn on debug logging
+    openstack.enable_logging(debug=True)
+
+    # Initialize connection
+    conn = openstack.connect(cloud='mordred')
+
+    # List the servers
+    for server in conn.list_servers():
+        print(server.to_dict())
+
+The benefit of this layer is mostly seen in more complicated operations that
+take multiple steps and where the steps vary across providers. For example:
+
+.. code-block:: python
+
+    import openstack
+
+    # Initialize and turn on debug logging
+    openstack.enable_logging(debug=True)
+
+    # Initialize connection
+    conn = openstack.connect(cloud='mordred')
+
+    # Upload an image to the cloud
+    image = conn.create_image(
+        'ubuntu-trusty', filename='ubuntu-trusty.qcow2', wait=True)
+
+    # Find a flavor with at least 512M of RAM
+    flavor = conn.get_flavor_by_ram(512)
+
+    # Boot a server, wait for it to boot, and then do whatever is needed
+    # to get a public IP address for it.
+    conn.create_server(
+        'my-server', image=image, flavor=flavor, wait=True, auto_ip=True)
+
+Finally, there is the low-level *resource* layer. This provides support for the
+basic CRUD operations supported by REST APIs and is the base building block for
+the other layers. You typically will not need to use this directly:
+
+.. code-block:: python
+
+    import openstack
+    import openstack.config.loader
+    import openstack.compute.v2.server
+
+    # Initialize and turn on debug logging
+    openstack.enable_logging(debug=True)
+
+    # Initialize connection
+    conn = openstack.connect(cloud='mordred')
+
+    # List the servers
+    for server in openstack.compute.v2.server.Server.list(session=conn.compute):
+        print(server.to_dict())
diff --git a/doc/source/user/guides/key_manager.rst b/doc/source/user/guides/key_manager.rst
new file mode 100644
index 0000000..1efd12b
--- /dev/null
+++ b/doc/source/user/guides/key_manager.rst
@@ -0,0 +1,56 @@
+Using OpenStack Key Manager
+===========================
+
+Before working with the Key Manager service, you'll need to create a
+connection to your OpenStack cloud by following the :doc:`connect` user
+guide. This will provide you with the ``conn`` variable used in the examples
+below.
+
+.. contents:: Table of Contents
+   :local:
+
+.. note:: Some interactions with the Key Manager service differ from that
+   of other services in that resources do not have a proper ``id`` parameter,
+   which is necessary to make some calls. Instead, resources have a separately
+   named id attribute, e.g., the Secret resource has ``secret_id``.
+
+   The examples below outline when to pass in those id values.
+
+Create a Secret
+---------------
+
+The Key Manager service allows you to create new secrets by passing the
+attributes of the :class:`~openstack.key_manager.v1.secret.Secret` to the
+:meth:`~openstack.key_manager.v1._proxy.Proxy.create_secret` method.
+
+.. literalinclude:: ../examples/key_manager/create.py
+   :pyobject: create_secret
+
+List Secrets
+------------
+
+Once you have stored some secrets, they are available for you to list
+via the :meth:`~openstack.key_manager.v1._proxy.Proxy.secrets` method.
+This method returns a generator, which yields each
+:class:`~openstack.key_manager.v1.secret.Secret`.
+
+.. literalinclude:: ../examples/key_manager/list.py
+   :pyobject: list_secrets
+
+The :meth:`~openstack.key_manager.v1._proxy.Proxy.secrets` method can
+also make more advanced queries to limit the secrets that are returned.
+
+.. literalinclude:: ../examples/key_manager/list.py
+   :pyobject: list_secrets_query
+
+Get Secret Payload
+------------------
+
+Once you have received a :class:`~openstack.key_manager.v1.secret.Secret`,
+you can obtain the payload for it by passing the secret's id value to
+the :meth:`~openstack.key_manager.v1._proxy.Proxy.secrets` method.
+Use the :data:`~openstack.key_manager.v1.secret.Secret.secret_id` attribute
+when making this request.
+
+.. literalinclude:: ../examples/key_manager/get.py
+   :pyobject: get_secret_payload
diff --git a/doc/source/user/guides/logging.rst b/doc/source/user/guides/logging.rst
new file mode 100644
index 0000000..6c8a27e
--- /dev/null
+++ b/doc/source/user/guides/logging.rst
@@ -0,0 +1,106 @@
+=======
+Logging
+=======
+
+.. note:: TODO(shade) This document is written from a shade POV. It needs to
+          be combined with the existing logging guide, but also the logging
+          systems need to be rationalized.
+
+`openstacksdk` uses `Python Logging`_. As `openstacksdk` is a library, it does
+not configure logging handlers automatically, expecting instead for that to be
+the purview of the consuming application.
+
+Simple Usage
+------------
+
+For consumers who just want to get a basic logging setup without thinking
+about it too deeply, there is a helper method. If used, it should be called
+before any other openstacksdk functionality.
+
+.. autofunction:: openstack.enable_logging
+
+.. code-block:: python
+
+  import openstack
+  openstack.enable_logging()
+
+The ``stream`` parameter controls the stream where log message are written to.
+It defaults to `sys.stdout` which will result in log messages being written
+to STDOUT. It can be set to another output stream, or to ``None`` to disable
+logging to the console.
+
+The ``path`` parameter sets up logging to log to a file. By default, if
+``path`` is given and ``stream`` is not, logging will only go to ``path``.
+
+You can combine the ``path`` and ``stream`` parameters to log to both places
+simultaneously.
+
+To log messages to a file called ``openstack.log`` and the console on
+``stdout``:
+
+.. code-block:: python
+
+    import sys
+    import openstack
+
+    openstack.enable_logging(
+        debug=True, path='openstack.log', stream=sys.stdout)
+
+
+`openstack.enable_logging` also sets up a few other loggers and
+squelches some warnings or log messages that are otherwise uninteresting or
+unactionable by an openstacksdk user.
+
+Advanced Usage
+--------------
+
+`openstacksdk` logs to a set of different named loggers.
+
+Most of the logging is set up to log to the root ``openstack`` logger.
+There are additional sub-loggers that are used at times, primarily so that a
+user can decide to turn on or off a specific type of logging. They are listed
+below.
+
+openstack.config
+  Issues pertaining to configuration are logged to the ``openstack.config``
+  logger.
+
+openstack.iterate_timeout
+  When `openstacksdk` needs to poll a resource, it does so in a loop that waits
+  between iterations and ultimately times out. The
+  ``openstack.iterate_timeout`` logger emits messages for each iteration
+  indicating it is waiting and for how long. These can be useful to see for
+  long running tasks so that one can know things are not stuck, but can also
+  be noisy.
+
+openstack.fnmatch
+  `openstacksdk` will try to use `fnmatch`_ on given `name_or_id` arguments.
+  It's a best effort attempt, so pattern misses are logged to
+  ``openstack.fnmatch``. A user may not be intending to use an fnmatch
+  pattern - such as if they are trying to find an image named
+  ``Fedora 24 [official]``, so these messages are logged separately.
+
+.. _fnmatch: https://pymotw.com/2/fnmatch/
+
+HTTP Tracing
+------------
+
+HTTP Interactions are handled by `keystoneauth`_. If you want to enable HTTP
+tracing while using openstacksdk and are not using `openstack.enable_logging`,
+set the log level of the ``keystoneauth`` logger to ``DEBUG``.
+
+For more information see https://docs.openstack.org/keystoneauth/latest/using-sessions.html#logging
+
+.. _keystoneauth: https://docs.openstack.org/keystoneauth/latest/
+
+Python Logging
+--------------
+
+Python logging is a standard feature of Python and is documented fully in the
+Python Documentation, which varies by version of Python.
+
+For more information on Python Logging for Python v2, see
+https://docs.python.org/2/library/logging.html.
+
+For more information on Python Logging for Python v3, see
+https://docs.python.org/3/library/logging.html.
diff --git a/doc/source/user/guides/message.rst b/doc/source/user/guides/message.rst
new file mode 100644
index 0000000..ac30f88
--- /dev/null
+++ b/doc/source/user/guides/message.rst
@@ -0,0 +1,8 @@
+Using OpenStack Message
+=======================
+
+Before working with the Message service, you'll need to create a connection
+to your OpenStack cloud by following the :doc:`connect` user guide. This will
+provide you with the ``conn`` variable used in the examples below.
+
+.. TODO(briancurtin): Implement this guide
diff --git a/doc/source/user/guides/network.rst b/doc/source/user/guides/network.rst
new file mode 100644
index 0000000..fc5f4ac
--- /dev/null
+++ b/doc/source/user/guides/network.rst
@@ -0,0 +1,142 @@
+Using OpenStack Network
+=======================
+
+Before working with the Network service, you'll need to create a connection
+to your OpenStack cloud by following the :doc:`connect` user guide. This will
+provide you with the ``conn`` variable used in the examples below.
+
+.. contents:: Table of Contents
+   :local:
+
+The primary resource of the Network service is the network.
+
+List Networks
+-------------
+
+A **network** is an isolated `Layer 2 <https://en.wikipedia.org/wiki/Data_link_layer>`_
+networking segment. There are two types of networks, project and provider
+networks. Project networks are fully isolated and are not shared with other
+projects. Provider networks map to existing physical networks in the data
+center and provide external network access for servers. Only an OpenStack
+administrator can create provider networks. Networks can be connected via
+routers.
+
+.. literalinclude:: ../examples/network/list.py
+   :pyobject: list_networks
+
+Full example: `network resource list`_
+
+List Subnets
+------------
+
+A **subnet** is a block of IP addresses and associated configuration state.
+Subnets are used to allocate IP addresses when new ports are created on a
+network.
+
+.. literalinclude:: ../examples/network/list.py
+   :pyobject: list_subnets
+
+Full example: `network resource list`_
+
+List Ports
+----------
+
+A **port** is a connection point for attaching a single device, such as the
+`NIC <https://en.wikipedia.org/wiki/Network_interface_controller>`_
+of a server, to a network. The port also describes the associated network
+configuration, such as the `MAC <https://en.wikipedia.org/wiki/Media_access_control>`_
+and IP addresses to be used on that port.
+
+.. literalinclude:: ../examples/network/list.py
+   :pyobject: list_ports
+
+Full example: `network resource list`_
+
+List Security Groups
+--------------------
+
+A **security group** acts as a virtual firewall for servers. It is a container
+for security group rules which specify the type of network traffic and
+direction that is allowed to pass through a port.
+
+.. literalinclude:: ../examples/network/list.py
+   :pyobject: list_security_groups
+
+Full example: `network resource list`_
+
+List Routers
+------------
+
+A **router** is a logical component that forwards data packets between
+networks. It also provides
+`Layer 3 <https://en.wikipedia.org/wiki/Network_layer>`_ and
+`NAT <https://en.wikipedia.org/wiki/Network_address_translation>`_
+forwarding to provide external network access for servers on project networks.
+
+.. literalinclude:: ../examples/network/list.py
+   :pyobject: list_routers
+
+Full example: `network resource list`_
+
+List Network Agents
+-------------------
+
+A **network agent** is a plugin that handles various tasks used to
+implement virtual networks.  These agents include neutron-dhcp-agent,
+neutron-l3-agent, neutron-metering-agent, and neutron-lbaas-agent,
+among others.
+
+.. literalinclude:: ../examples/network/list.py
+   :pyobject: list_network_agents
+
+Full example: `network resource list`_
+
+Create Network
+--------------
+
+Create a project network and subnet. This network can be used when creating
+a server and allows the server to communicate with others servers on the
+same project network.
+
+.. literalinclude:: ../examples/network/create.py
+   :pyobject: create_network
+
+Full example: `network resource create`_
+
+Open a Port
+-----------
+
+When creating a security group for a network, you will need to open certain
+ports to allow communication via them. For example, you may need to enable
+HTTPS access on port 443.
+
+.. literalinclude:: ../examples/network/security_group_rules.py
+   :pyobject: open_port
+
+Full example: `network security group create`_
+
+Accept Pings
+------------
+
+In order to ping a machine on your network within a security group,
+you will need to create a rule to allow inbound ICMP packets.
+
+.. literalinclude:: ../examples/network/security_group_rules.py
+   :pyobject: allow_ping
+
+Full example: `network security group create`_
+
+Delete Network
+--------------
+
+Delete a project network and its subnets.
+
+.. literalinclude:: ../examples/network/delete.py
+   :pyobject: delete_network
+
+Full example: `network resource delete`_
+
+.. _network resource create: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/network/create.py
+.. _network resource delete: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/network/delete.py
+.. _network resource list: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/network/list.py
+.. _network security group create: https://opendev.org/openstack/openstacksdk/src/branch/master/examples/network/security_group_rules.py
diff --git a/doc/source/user/guides/object_store.rst b/doc/source/user/guides/object_store.rst
new file mode 100644
index 0000000..094bac5
--- /dev/null
+++ b/doc/source/user/guides/object_store.rst
@@ -0,0 +1,211 @@
+Using OpenStack Object Store
+============================
+
+Before working with the Object Store service, you'll need to create a
+connection to your OpenStack cloud by following the :doc:`connect` user
+guide. This will provide you with the ``conn`` variable used in the examples
+below.
+
+.. contents:: Table of Contents
+   :local:
+
+The primary resources of the Object Store service are containers and objects.
+
+Working with Containers
+-----------------------
+
+Listing Containers
+******************
+
+To list existing containers, use the
+:meth:`~openstack.object_store.v1._proxy.Proxy.containers` method. ::
+
+    >>> for cont in conn.object_store.containers():
+    ...     print cont
+    ...
+    openstack.object_store.v1.container.Container: {u'count': 5,
+    u'bytes': 500, u'name': u'my container'}
+    openstack.object_store.v1.container.Container: {u'count': 0,
+    u'bytes': 0, u'name': u'empty container'}
+    openstack.object_store.v1.container.Container: {u'count': 100,
+    u'bytes': 1000000, u'name': u'another container'}
+
+The ``containers`` method returns a generator which yields
+:class:`~openstack.object_store.v1.container.Container` objects. It handles
+pagination for you, which can be adjusted via the ``limit`` argument.
+By default, the ``containers`` method will yield as many containers as the
+service will return, and it will continue requesting until it receives
+no more. ::
+
+    >>> for cont in conn.object_store.containers(limit=500):
+    ...     print(cont)
+    ...
+    <500 Containers>
+    ... another request transparently made to the Object Store service
+    <500 more Containers>
+    ...
+
+Creating Containers
+*******************
+
+To create a container, use the
+:meth:`~openstack.object_store.v1._proxy.Proxy.create_container` method. ::
+
+    >>> cont = conn.object_store.create_container(name="new container")
+    >>> cont
+    openstack.object_store.v1.container.Container: {'name': u'new container'}
+
+Working with Container Metadata
+*******************************
+
+To get the metadata for a container, use the
+:meth:`~openstack.object_store.v1._proxy.Proxy.get_container_metadata` method.
+This method either takes the name of a container, or a
+:class:`~openstack.object_store.v1.container.Container` object, and it returns
+a `Container` object with all of its metadata attributes set. ::
+
+    >>> cont = conn.object_store.get_container_metadata("new container")
+    openstack.object_store.v1.container.Container: {'content-length': '0',
+    'x-container-object-count': '0', 'name': u'new container',
+    'accept-ranges': 'bytes',
+    'x-trans-id': 'tx22c5de63466e4c05bb104-0054740c39',
+    'date': 'Tue, 25 Nov 2014 04:57:29 GMT',
+    'x-timestamp': '1416889793.23520', 'x-container-read': '.r:mysite.com',
+    'x-container-bytes-used': '0', 'content-type': 'text/plain; charset=utf-8'}
+
+To set the metadata for a container, use the
+:meth:`~openstack.object_store.v1._proxy.Proxy.set_container_metadata` method.
+This method takes a :class:`~openstack.object_store.v1.container.Container`
+object. For example, to grant another user write access to this container,
+you can set the
+:attr:`~openstack.object_store.v1.container.Container.write_ACL` on a
+resource and pass it to `set_container_metadata`. ::
+
+    >>> cont.write_ACL = "big_project:another_user"
+    >>> conn.object_store.set_container_metadata(cont)
+    openstack.object_store.v1.container.Container: {'content-length': '0',
+    'x-container-object-count': '0',
+    'name': u'my new container', 'accept-ranges': 'bytes',
+    'x-trans-id': 'txc3ee751f971d41de9e9f4-0054740ec1',
+    'date': 'Tue, 25 Nov 2014 05:08:17 GMT',
+    'x-timestamp': '1416889793.23520', 'x-container-read': '.r:mysite.com',
+    'x-container-bytes-used': '0', 'content-type': 'text/plain; charset=utf-8',
+    'x-container-write': 'big_project:another_user'}
+
+Working with Objects
+--------------------
+
+Objects are held in containers. From an API standpoint, you work with
+them using similarly named methods, typically with an additional argument
+to specify their container.
+
+Listing Objects
+***************
+
+To list the objects that exist in a container, use the
+:meth:`~openstack.object_store.v1._proxy.Proxy.objects` method.
+
+If you have a :class:`~openstack.object_store.v1.container.Container`
+object, you can pass it to ``objects``. ::
+
+    >>> print cont.name
+    pictures
+    >>> for obj in conn.object_store.objects(cont):
+    ...     print obj
+    ...
+    openstack.object_store.v1.container.Object:
+    {u'hash': u'0522d4ccdf9956badcb15c4087a0c4cb',
+    u'name': u'pictures/selfie.jpg', u'bytes': 15744,
+    'last-modified': u'2014-10-31T06:33:36.618640',
+    u'last_modified': u'2014-10-31T06:33:36.618640',
+    u'content_type': u'image/jpeg', 'container': u'pictures',
+    'content-type': u'image/jpeg'}
+    ...
+
+Similar to the :meth:`~openstack.object_store.v1._proxy.Proxy.containers`
+method, ``objects`` returns a generator which yields
+:class:`~openstack.object_store.v1.obj.Object` objects stored in the
+container. It also handles pagination for you, which you can adjust
+with the ``limit`` parameter, otherwise making each request for the maximum
+that your Object Store will return.
+
+If you have the name of a container instead of an object, you can also
+pass that to the ``objects`` method. ::
+
+    >>> for obj in conn.object_store.objects("pictures".decode("utf8"),
+                                             limit=100):
+    ...     print obj
+    ...
+    <100 Objects>
+    ... another request transparently made to the Object Store service
+    <100 more Objects>
+
+Getting Object Data
+*******************
+
+Once you have an :class:`~openstack.object_store.v1.obj.Object`, you get
+the data stored inside of it with the
+:meth:`~openstack.object_store.v1._proxy.Proxy.get_object_data` method. ::
+
+    >>> print ob.name
+    message.txt
+    >>> data = conn.object_store.get_object_data(ob)
+    >>> print data
+    Hello, world!
+
+Additionally, if you want to save the object to disk, the
+:meth:`~openstack.object_store.v1._proxy.Proxy.download_object` convenience
+method takes an :class:`~openstack.object_store.v1.obj.Object` and a
+``path`` to write the contents to. ::
+
+    >>> conn.object_store.download_object(ob, "the_message.txt")
+
+Uploading Objects
+*****************
+
+Once you have data you'd like to store in the Object Store service, you use
+the :meth:`~openstack.object_store.v1._proxy.Proxy.upload_object` method.
+This method takes the ``data`` to be stored, along with at least an object
+``name`` and the ``container`` it is to be stored in. ::
+
+    >>> hello = conn.object_store.upload_object(container="messages",
+                                                name="helloworld.txt",
+                                                data="Hello, world!")
+    >>> print hello
+    openstack.object_store.v1.container.Object: {'content-length': '0',
+    'container': u'messages', 'name': u'helloworld.txt',
+    'last-modified': 'Tue, 25 Nov 2014 17:39:29 GMT',
+    'etag': '5eb63bbbe01eeed093cb22bb8f5acdc3',
+    'x-trans-id': 'tx3035d41b03334aeaaf3dd-005474bed0',
+    'date': 'Tue, 25 Nov 2014 17:39:28 GMT',
+    'content-type': 'text/html; charset=UTF-8'}
+
+Working with Object Metadata
+****************************
+
+Working with metadata on objects is identical to how it's done with
+containers. You use the
+:meth:`~openstack.object_store.v1._proxy.Proxy.get_object_metadata` and
+:meth:`~openstack.object_store.v1._proxy.Proxy.set_object_metadata` methods.
+
+The metadata attributes to be set can be found on the
+:class:`~openstack.object_store.v1.obj.Object` object. ::
+
+    >>> secret.delete_after = 300
+    >>> secret = conn.object_store.set_object_metadata(secret)
+
+We set the :attr:`~openstack.object_store.obj.Object.delete_after`
+value to 500 seconds, causing the object to be deleted in 300 seconds,
+or five minutes. That attribute corresponds to the ``X-Delete-After``
+header value, which you can see is returned when we retrieve the updated
+metadata. ::
+
+    >>> conn.object_store.get_object_metadata(ob)
+    openstack.object_store.v1.container.Object: {'content-length': '11',
+    'container': u'Secret Container',
+    'name': u'selfdestruct.txt', 'x-delete-after': 300,
+    'accept-ranges': 'bytes', 'last-modified': 'Tue, 25 Nov 2014 17:50:45 GMT',
+    'etag': '5eb63bbbe01eeed093cb22bb8f5acdc3',
+    'x-timestamp': '1416937844.36805',
+    'x-trans-id': 'tx5c3fd94adf7c4e1b8f334-005474c17b',
+    'date': 'Tue, 25 Nov 2014 17:50:51 GMT', 'content-type': 'text/plain'}
diff --git a/doc/source/user/guides/orchestration.rst b/doc/source/user/guides/orchestration.rst
new file mode 100644
index 0000000..64adc4f
--- /dev/null
+++ b/doc/source/user/guides/orchestration.rst
@@ -0,0 +1,9 @@
+Using OpenStack Orchestration
+=============================
+
+Before working with the Orchestration service, you'll need to create a
+connection to your OpenStack cloud by following the :doc:`connect` user
+guide. This will provide you with the ``conn`` variable used in the examples
+below.
+
+.. TODO(thowe): Implement this guide
diff --git a/doc/source/user/guides/shared_file_system.rst b/doc/source/user/guides/shared_file_system.rst
new file mode 100644
index 0000000..dc6b5d0
--- /dev/null
+++ b/doc/source/user/guides/shared_file_system.rst
@@ -0,0 +1,200 @@
+Using OpenStack Shared File Systems
+===================================
+
+Before working with the Shared File System service, you'll need to create a
+connection to your OpenStack cloud by following the :doc:`connect` user
+guide. This will provide you with the ``conn`` variable used in the examples
+below.
+
+.. contents:: Table of Contents
+   :local:
+
+
+List Availability Zones
+-----------------------
+
+A Shared File System service **availability zone** is a failure domain for
+your shared file systems. You may create a shared file system (referred
+to simply as **shares**) in a given availability zone, and create replicas
+of the share in other availability zones.
+
+.. literalinclude:: ../examples/shared_file_system/availability_zones.py
+   :pyobject: list_availability_zones
+
+
+Share Instances
+---------------
+
+Administrators can list, show information for, explicitly set the state of,
+and force-delete share instances.
+
+.. literalinclude:: ../examples/shared_file_system/share_instances.py
+   :pyobject: share_instances
+
+
+Get Share Instance
+------------------
+
+Shows details for a single share instance.
+
+.. literalinclude:: ../examples/shared_file_system/share_instances.py
+   :pyobject: get_share_instance
+
+
+Reset Share Instance Status
+---------------------------
+
+Explicitly updates the state of a share instance.
+
+.. literalinclude:: ../examples/shared_file_system/share_instances.py
+   :pyobject: reset_share_instance_status
+
+
+Delete Share Instance
+---------------------
+
+Force-deletes a share instance.
+
+.. literalinclude:: ../examples/shared_file_system/share_instances.py
+   :pyobject: delete_share_instance
+
+
+Resize Share
+------------
+
+Shared File System shares can be resized (extended or shrunk) to a given
+size. For details on resizing shares, refer to the
+`Manila docs <https://docs.openstack.org/manila/latest/user/create-and-manage-shares.html#extend-share>`_.
+
+.. literalinclude:: ../examples/shared_file_system/shares.py
+   :pyobject: resize_share
+.. literalinclude:: ../examples/shared_file_system/shares.py
+   :pyobject: resize_shares_without_shrink
+
+
+List Share Group Snapshots
+--------------------------
+
+A share group snapshot is a point-in-time, read-only copy of the data that is
+contained in a share group. You can list all share group snapshots
+
+.. literalinclude:: ../examples/shared_file_system/share_group_snapshots.py
+   :pyobject: list_share_group_snapshots
+
+
+Get Share Group Snapshot
+------------------------
+
+Show share group snapshot details
+
+.. literalinclude:: ../examples/shared_file_system/share_group_snapshots.py
+   :pyobject: get_share_group_snapshot
+
+
+List Share Group Snapshot Members
+---------------------------------
+
+Lists all share group snapshots members.
+
+.. literalinclude:: ../examples/shared_file_system/share_group_snapshots.py
+   :pyobject: share_group_snapshot_members
+
+
+Create Share Group Snapshot
+---------------------------
+
+Creates a snapshot from a share group.
+
+.. literalinclude:: ../examples/shared_file_system/share_group_snapshots.py
+   :pyobject: create_share_group_snapshot
+
+
+Reset Share Group Snapshot
+---------------------------
+
+Reset share group snapshot state.
+
+.. literalinclude:: ../examples/shared_file_system/share_group_snapshots.py
+   :pyobject: reset_share_group_snapshot_status
+
+
+Update Share Group Snapshot
+---------------------------
+
+Updates a share group snapshot.
+
+.. literalinclude:: ../examples/shared_file_system/share_group_snapshots.py
+   :pyobject: update_share_group_snapshot
+
+
+Delete Share Group Snapshot
+---------------------------
+
+Deletes a share group snapshot.
+
+.. literalinclude:: ../examples/shared_file_system/share_group_snapshots.py
+   :pyobject: delete_share_group_snapshot
+
+
+List Share Metadata
+--------------------
+
+Lists all metadata for a given share.
+
+.. literalinclude:: ../examples/shared_file_system/share_metadata.py
+   :pyobject: list_share_metadata
+
+
+Get Share Metadata Item
+-----------------------
+
+Retrieves a specific metadata item from a shares metadata by its key.
+
+.. literalinclude:: ../examples/shared_file_system/share_metadata.py
+   :pyobject: get_share_metadata_item
+
+
+Create Share Metadata
+----------------------
+
+Creates share metadata.
+
+.. literalinclude:: ../examples/shared_file_system/share_metadata.py
+   :pyobject: create_share_metadata
+
+
+Update Share Metadata
+----------------------
+
+Updates metadata of a given share.
+
+.. literalinclude:: ../examples/shared_file_system/share_metadata.py
+   :pyobject: update_share_metadata
+
+
+Delete Share Metadata
+----------------------
+
+Deletes a specific metadata item from a shares metadata by its key. Can
+specify multiple keys to be deleted.
+
+.. literalinclude:: ../examples/shared_file_system/share_metadata.py
+   :pyobject: delete_share_metadata
+
+
+Manage Share
+------------
+
+Manage a share with Manila.
+
+.. literalinclude:: ../examples/shared_file_system/shares.py
+   :pyobject: manage_share
+
+
+Unmanage Share
+--------------
+
+Unmanage a share from Manila.
+
+.. literalinclude:: ../examples/shared_file_system/shares.py
+   :pyobject: unmanage_share
diff --git a/doc/source/user/guides/stats.rst b/doc/source/user/guides/stats.rst
new file mode 100644
index 0000000..19e302f
--- /dev/null
+++ b/doc/source/user/guides/stats.rst
@@ -0,0 +1,88 @@
+====================
+Statistics reporting
+====================
+
+`openstacksdk` can report statistics on individual API
+requests/responses in several different formats.
+
+Note that metrics will be reported only when corresponding client
+libraries (`statsd` for 'statsd' reporting, `influxdb` for influxdb,
+etc.).  If libraries are not available reporting will be silently
+ignored.
+
+statsd
+------
+
+`statsd` can be configured via configuration entries or environment
+variables.
+
+A global `metrics` entry defines defaults for all clouds.  Each cloud
+can specify a `metrics` section to override variables; this may be
+useful to separate results reported for each cloud.
+
+.. code-block:: yaml
+
+   metrics:
+     statsd:
+       host: __statsd_server_host__
+       port: __statsd_server_port__
+       prefix: __statsd_prefix__ (default 'openstack.api')
+   clouds:
+     a-cloud:
+       auth:
+        ...
+       metrics:
+         statsd:
+           prefix: 'openstack.api.a-cloud'
+
+If the `STATSD_HOST` or `STATSD_PORT` environment variables are set,
+they will be taken as the default values (and enable `statsd`
+reporting if no other configuration is specified).
+
+InfluxDB
+--------
+
+`InfluxDB <https://www.influxdata.com/>`__ is supported via
+configuration in the `metrics` field.  Similar to `statsd`, each cloud
+can provide it's own `metrics` section to override any global
+defaults.
+
+.. code-block:: yaml
+
+   metrics:
+     influxdb:
+       host: __influxdb_server_host__
+       port: __influxdb_server_port__
+       use_udp: __True|False__
+       username: __influxdb_auth_username__
+       password: __influxdb_auth_password__
+       database: __influxdb_db_name__
+       measurement: __influxdb_measurement_name__
+       timeout: __infludb_requests_timeout__
+   clouds:
+     ..
+
+InfluxDB reporting allows setting additional tags into the metrics based on the
+selected cloud.
+
+.. code-block:: yaml
+
+  clouds:
+    my_cloud:
+      profile: some_profile
+      ...
+      additional_metric_tags:
+        environment: production
+
+prometheus
+----------
+..
+   NOTE(ianw) 2021-04-19 : examples here would be great; this is just terse
+   description taken from
+   https://review.opendev.org/c/openstack/openstacksdk/+/614834
+
+The prometheus support does not read from config, and does not run an
+http service since OpenstackSDK is a library. It is expected that an
+application that uses OpenstackSDK and wants request stats be
+collected will pass a `prometheus_client.CollectorRegistry` to
+`collector_registry`.
diff --git a/doc/source/user/index.rst b/doc/source/user/index.rst
new file mode 100644
index 0000000..7522e71
--- /dev/null
+++ b/doc/source/user/index.rst
@@ -0,0 +1,195 @@
+Using the OpenStack SDK
+=======================
+
+This section of documentation pertains to those who wish to use this SDK in
+their own application. If you're looking for documentation on how to contribute
+to or extend the SDK, refer to the `contributor <../contributor>`_ section.
+
+For a listing of terms used throughout the SDK, including the names of
+projects and services supported by it, see the :doc:`glossary <../glossary>`.
+
+.. _user_guides:
+
+User Guides
+-----------
+
+These guides walk you through how to make use of the libraries we provide
+to work with each OpenStack service. If you're looking for a cookbook
+approach, this is where you'll want to begin.
+
+.. toctree::
+   :maxdepth: 1
+
+   Introduction <guides/intro>
+   Configuration <config/index>
+   Connect to an OpenStack Cloud <guides/connect>
+   Connect to an OpenStack Cloud Using a Config File <guides/connect_from_config>
+   Logging <guides/logging>
+   Statistics reporting <guides/stats>
+   Microversions <microversions>
+   Baremetal <guides/baremetal>
+   Block Storage <guides/block_storage>
+   Clustering <guides/clustering>
+   Compute <guides/compute>
+   Database <guides/database>
+   DNS <guides/dns>
+   Identity <guides/identity>
+   Image <guides/image>
+   Key Manager <guides/key_manager>
+   Message <guides/message>
+   Network <guides/network>
+   Object Store <guides/object_store>
+   Orchestration <guides/orchestration>
+   Shared File System <guides/shared_file_system>
+
+Testing
+-------
+
+The SDK provides a number of utilities to help you test your applications.
+
+.. toctree::
+   :maxdepth: 1
+
+   testing/index
+
+API Documentation
+-----------------
+
+Service APIs are exposed through a two-layered approach. The classes
+exposed through our *Connection* interface are the place to start if you're
+an application developer consuming an OpenStack cloud. The *Resource*
+interface is the layer upon which the *Connection* is built, with
+*Connection* methods accepting and returning *Resource* objects.
+
+The Cloud Abstraction layer has a data model.
+
+.. toctree::
+   :maxdepth: 1
+
+   model
+
+Connection Interface
+~~~~~~~~~~~~~~~~~~~~
+
+A *Connection* instance maintains your cloud config, session and authentication
+information providing you with a set of higher-level interfaces to work with
+OpenStack services.
+
+.. toctree::
+   :maxdepth: 1
+
+   connection
+
+Once you have a *Connection* instance, services are accessed through instances
+of :class:`~openstack.proxy.Proxy` or subclasses of it that exist as
+attributes on the :class:`~openstack.connection.Connection`.
+
+.. _service-proxies:
+
+Service Proxies
+~~~~~~~~~~~~~~~
+
+The following service proxies exist on the
+:class:`~openstack.connection.Connection`. The service proxies are all always
+present on the :class:`~openstack.connection.Connection` object, but the
+combination of your ``CloudRegion`` and the catalog of the cloud in question
+control which services can be used.
+
+.. toctree::
+   :maxdepth: 1
+
+   Accelerator <proxies/accelerator>
+   Baremetal <proxies/baremetal>
+   Baremetal Introspection <proxies/baremetal_introspection>
+   Block Storage v2 <proxies/block_storage_v2>
+   Block Storage v3 <proxies/block_storage_v3>
+   Clustering <proxies/clustering>
+   Compute <proxies/compute>
+   Container Infrastructure Management <proxies/container_infrastructure_management>
+   Database <proxies/database>
+   DNS <proxies/dns>
+   Identity v2 <proxies/identity_v2>
+   Identity v3 <proxies/identity_v3>
+   Image v1 <proxies/image_v1>
+   Image v2 <proxies/image_v2>
+   Key Manager <proxies/key_manager>
+   Load Balancer <proxies/load_balancer_v2>
+   Message v2 <proxies/message_v2>
+   Network <proxies/network>
+   Object Store <proxies/object_store>
+   Orchestration <proxies/orchestration>
+   Placement <proxies/placement>
+   Shared File System <proxies/shared_file_system>
+   Workflow <proxies/workflow>
+
+Resource Interface
+~~~~~~~~~~~~~~~~~~
+
+The *Resource* layer is a lower-level interface to communicate with OpenStack
+services. While the classes exposed by the *Connection* build a convenience
+layer on top of this, *Resources* can be used directly. However, the most
+common usage of this layer is in receiving an object from a class in the
+*Connection* layer, modifying it, and sending it back into the *Connection*
+layer, such as to update a resource on the server.
+
+The following services have exposed *Resource* classes.
+
+.. toctree::
+   :maxdepth: 1
+
+   Accelerator <resources/accelerator/index>
+   Baremetal <resources/baremetal/index>
+   Baremetal Introspection <resources/baremetal_introspection/index>
+   Block Storage <resources/block_storage/index>
+   Clustering <resources/clustering/index>
+   Compute <resources/compute/index>
+   Container Infrastructure Management <resources/container_infrastructure_management/index>
+   Database <resources/database/index>
+   DNS <resources/dns/index>
+   Identity <resources/identity/index>
+   Image <resources/image/index>
+   Key Management <resources/key_manager/index>
+   Load Balancer <resources/load_balancer/index>
+   Network <resources/network/index>
+   Orchestration <resources/orchestration/index>
+   Object Store <resources/object_store/index>
+   Placement <resources/placement/index>
+   Shared File System <resources/shared_file_system/index>
+   Workflow <resources/workflow/index>
+
+Low-Level Classes
+~~~~~~~~~~~~~~~~~
+
+The following classes are not commonly used by application developers,
+but are used to construct applications to talk to OpenStack APIs. Typically
+these parts are managed through the `Connection Interface`_, but their use
+can be customized.
+
+.. toctree::
+   :maxdepth: 1
+
+   resource
+   service_description
+   utils
+
+Errors and warnings
+~~~~~~~~~~~~~~~~~~~
+
+The SDK attempts to provide detailed errors and warnings for things like failed
+requests, deprecated APIs, and invalid configurations. Application developers
+are responsible for handling these errors and can opt into warnings to ensure
+their applications stay up-to-date.
+
+.. toctree::
+   :maxdepth: 1
+
+   exceptions
+   warnings
+
+Presentations
+-------------
+
+.. toctree::
+   :maxdepth: 1
+
+   multi-cloud-demo
diff --git a/doc/source/user/microversions.rst b/doc/source/user/microversions.rst
new file mode 100644
index 0000000..fcef096
--- /dev/null
+++ b/doc/source/user/microversions.rst
@@ -0,0 +1,99 @@
+Microversions
+=============
+
+As openstacksdk rolls out support for consuming microversions, it will do so
+on a call by call basis as needed. Just like with major versions, openstacksdk
+should have logic to handle each microversion for a given REST call it makes,
+with the following rules in mind:
+
+* If an activity openstack performs can be done differently or more efficiently
+  with a new microversion, the support should be added to openstack.cloud and
+  to the appropriate Proxy class.
+
+* openstacksdk should always attempt to use the latest microversion it is aware
+  of for a given call, unless a microversion removes important data.
+
+* Microversion selection should under no circumstances be exposed to the user
+  in python API calls in the Resource layer or the openstack.cloud layer.
+
+* Microversion selection is exposed to the user in the REST layer via the
+  ``microversion`` argument to each REST call.
+
+* A user of the REST layer may set the default microversion by setting
+  ``{service_type}_default_microversion`` in clouds.yaml or
+  ``OS_{service_type|upper}_DEFAULT_MICROVERSION`` environment variable.
+
+.. note::
+
+  Setting the default microversion in any circumstance other than when using
+  the REST layer is highly discouraged. Both of the higher layers in
+  openstacksdk provide data normalization as well as logic about which REST
+  call to make. Setting the default microversion could change the behavior
+  of the service in question in such a way that openstacksdk does not
+  understand. If there is a feature of a service that needs a microversion
+  and it is not already transparently exposed in openstacksdk, please file
+  a bug.
+
+* If a feature is only exposed for a given microversion and cannot be simulated
+  for older clouds without that microversion, it is ok to add it, but
+  a clear error message should be given to the user that the given feature is
+  not available on their cloud. (A message such as "This cloud supports
+  a maximum microversion of XXX for service YYY and this feature only exists
+  on clouds with microversion ZZZ. Please contact your cloud provider for
+  information about when this feature might be available")
+
+* When adding a feature that only exists behind a new microversion,
+  every effort should be made to figure out how to provide the same
+  functionality if at all possible, even if doing so is inefficient. If an
+  inefficient workaround is employed, a warning should be provided to the
+  user. (the user's workaround to skip the inefficient behavior would be to
+  stop using that openstacksdk API call) An example of this is the nova
+  "get me a network" feature. The logic of "get me a network" can be done
+  client-side, albeit less efficiently. Adding support for the
+  "get me a network" feature via nova microversion should also add support for
+  doing the client-side workaround.
+
+* If openstacksdk is aware of logic for more than one microversion, it should
+  always attempt to use the latest version available for the service for that
+  call.
+
+* Objects returned from openstacksdk should always go through normalization and
+  thus should always conform to openstacksdk's documented data model. The
+  objects should never look different to the user regardless of the
+  microversion used for the REST call.
+
+* If a microversion adds new fields to an object, those fields should be
+  added to openstacksdk's data model contract for that object and the data
+  should either be filled in by performing additional REST calls if the data is
+  available that way, or the field should have a default value of None which
+  the user can be expected to test for when attempting to use the new value.
+
+* If a microversion removes fields from an object that are part of the
+  existing data model contract, care should be taken to not use the new
+  microversion for that call unless forced to by lack of availablity of the
+  old microversion on the cloud in question. In the case where an old
+  microversion is no longer available, care must be taken to either find the
+  data from another source and fill it in, or to put a value of None into the
+  field and document for the user that on some clouds the value may not exist.
+
+* If a microversion removes a field and the outcome is particularly intractable
+  and impossible to work around without fundamentally breaking users,
+  an issue should be raised with the service team in question. Hopefully a
+  resolution can be found during the period while clouds still have the old
+  microversion.
+
+* As new calls or objects are added, it is important to check in with
+  the service team in question on the expected stability of the object. If
+  there are known changes expected in the future, even if they may be a few
+  years off, openstacksdk should take care to not add committments to its data
+  model for those fields/features. It is ok for openstacksdk to not have
+  something.
+
+  .. note::
+    openstacksdk does not currently have any sort of "experimental" opt-in API
+    that would allow exposing things to a user that may not be supportable
+    under the normal compatibility contract. If a conflict arises in the
+    future where there is a strong desire for a feature but also a lack of
+    certainty about its stability over time, an experimental API may want to
+    be explored ... but concrete use cases should arise before such a thing
+    is started.
diff --git a/doc/source/user/model.rst b/doc/source/user/model.rst
new file mode 100644
index 0000000..1c270e3
--- /dev/null
+++ b/doc/source/user/model.rst
@@ -0,0 +1,66 @@
+Data Model
+==========
+
+*openstacksdk* has a very strict policy on not breaking backwards compatibility
+ever. However, with the data structures returned from OpenStack, there are
+places where the resource structures from OpenStack are returned to the user
+somewhat directly, leaving an openstacksdk user open to changes/differences in
+result content.
+
+To combat that, openstacksdk 'normalizes' the return structure from OpenStack
+in many places, and the results of that normalization are listed below. Where
+openstacksdk performs normalization, a user can count on any fields declared in
+the docs as being completely safe to use - they are as much a part of
+openstacksdk's API contract as any other Python method.
+
+Some OpenStack objects allow for arbitrary attributes at the root of the
+object. openstacksdk will pass those through so as not to break anyone who may
+be counting on them, but as they are arbitrary openstacksdk can make no
+guarantees as to their existence. As part of normalization, openstacksdk will
+put any attribute from an OpenStack resource that is not in its data model
+contract into an attribute called 'properties'. The contents of properties are
+defined to be an arbitrary collection of key value pairs with no promises as to
+any particular key ever existing.
+
+If a user passes ``strict=True`` to the openstacksdk constructor, openstacksdk
+will not pass through arbitrary objects to the root of the resource, and will
+instead only put them in the properties dict. If a user is worried about
+accidentally writing code that depends on an attribute that is not part of the
+API contract, this can be a useful tool. Keep in mind all data can still be
+accessed via the properties dict, but any code touching anything in the
+properties dict should be aware that the keys found there are highly user/cloud
+specific. Any key that is transformed as part of the openstacksdk data model
+contract will not wind up with an entry in properties - only keys that are
+unknown.
+
+The ``location`` field
+----------------------
+
+A Location defines where a resource lives. It includes a cloud name and a
+region name, an availability zone as well as information about the project
+that owns the resource.
+
+The project information may contain a project ID, or a combination of one or
+more of a project name with a domain name or ID. If a project ID is present,
+it should be considered correct.
+
+Some resources do not carry ownership information with them. For those, the
+project information will be filled in from the project the user currently
+has a token for.
+
+Some resources do not have information about availability zones, or may exist
+region wide. Those resources will have None as their availability zone.
+
+.. code-block:: python
+
+   Location = dict(
+       cloud=str(),
+       region_name=str(),
+       zone=str() or None,
+       project=dict(
+           id=str() or None,
+           name=str() or None,
+           domain_id=str() or None,
+           domain_name=str() or None,
+       )
+   )
diff --git a/doc/source/user/multi-cloud-demo.rst b/doc/source/user/multi-cloud-demo.rst
new file mode 100644
index 0000000..7aace3f
--- /dev/null
+++ b/doc/source/user/multi-cloud-demo.rst
@@ -0,0 +1,813 @@
+Multi-Cloud Demo
+================
+
+This document contains a presentation in `presentty`_ format. If you want to
+walk through it like a presentation, install `presentty` and run:
+
+.. code:: bash
+
+    presentty doc/source/user/multi-cloud-demo.rst
+
+The content is hopefully helpful even if it's not being narrated, so it's being
+included in the openstacksdk docs.
+
+.. _presentty: https://pypi.org/project/presentty
+
+Who am I?
+---------
+
+Monty Taylor
+
+* OpenStack Infra Core
+* irc: mordred
+* twitter: @e_monty
+
+What are we going to talk about?
+--------------------------------
+
+`OpenStackSDK`
+
+* a task and end-user oriented Python library
+* abstracts deployment differences
+* designed for multi-cloud
+* simple to use
+* massive scale
+
+  * optional advanced features to handle 20k servers a day
+
+* Initial logic/design extracted from nodepool
+* Librified to re-use in Ansible
+
+OpenStackSDK is Free Software
+-----------------------------
+
+* https://opendev.org/openstack/openstacksdk
+* openstack-discuss@lists.openstack.org
+* #openstack-sdks on oftc
+
+This talk is Free Software, too
+-------------------------------
+
+* Written for presentty (https://pypi.org/project/presentty)
+* doc/source/user/multi-cloud-demo.rst
+* examples in examples/cloud
+* Paths subject to change - this is the first presentation in tree!
+
+Complete Example
+----------------
+
+.. code:: python
+
+  from openstack import cloud as openstack
+
+  # Initialize and turn on debug logging
+  openstack.enable_logging(debug=True)
+
+  for cloud_name, region_name in [
+      ('my-vexxhost', 'ca-ymq-1'),
+      ('my-citycloud', 'Buf1'),
+      ('my-internap', 'ams01'),
+  ]:
+      # Initialize cloud
+      cloud = openstack.connect(cloud=cloud_name, region_name=region_name)
+
+      # Upload an image to the cloud
+      image = cloud.create_image(
+          'devuan-jessie',
+          filename='devuan-jessie.qcow2',
+          wait=True,
+      )
+
+      # Find a flavor with at least 512M of RAM
+      flavor = cloud.get_flavor_by_ram(512)
+
+      # Boot a server, wait for it to boot, and then do whatever is needed
+      # to get a public ip for it.
+      cloud.create_server(
+          'my-server',
+          image=image,
+          flavor=flavor,
+          wait=True,
+          auto_ip=True,
+      )
+
+Let's Take a Few Steps Back
+---------------------------
+
+Multi-cloud is easy, but you need to know a few things.
+
+* Terminology
+* Config
+* OpenStackSDK API
+
+Cloud Terminology
+-----------------
+
+Let's define a few terms, so that we can use them with ease:
+
+* `cloud` - logically related collection of services
+* `region` - completely independent subset of a given cloud
+* `patron` - human who has an account
+* `user` - account on a cloud
+* `project` - logical collection of cloud resources
+* `domain` - collection of users and projects
+
+Cloud Terminology Relationships
+-------------------------------
+
+* A `cloud` has one or more `regions`
+* A `patron` has one or more `users`
+* A `patron` has one or more `projects`
+* A `cloud` has one or more `domains`
+* In a `cloud` with one `domain` it is named "default"
+* Each `patron` may have their own `domain`
+* Each `user` is in one `domain`
+* Each `project` is in one `domain`
+* A `user` has one or more `roles` on one or more `projects`
+
+HTTP Sessions
+-------------
+
+* HTTP interactions are authenticated via keystone
+* Authenticating returns a `token`
+* An authenticated HTTP Session is shared across a `region`
+
+Cloud Regions
+-------------
+
+A `cloud region` is the basic unit of REST interaction.
+
+* A `cloud` has a `service catalog`
+* The `service catalog` is returned in the `token`
+* The `service catalog` lists `endpoint` for each `service` in each `region`
+* A `region` is completely autonomous
+
+Users, Projects and Domains
+---------------------------
+
+In clouds with multiple domains, project and user names are
+only unique within a region.
+
+* Names require `domain` information for uniqueness. IDs do not.
+* Providing `domain` information when not needed is fine.
+* `project_name` requires `project_domain_name` or `project_domain_id`
+* `project_id` does not
+* `username` requires `user_domain_name` or `user_domain_id`
+* `user_id` does not
+
+Confused Yet?
+-------------
+
+Don't worry - you don't have to deal with most of that.
+
+Auth per cloud, select per region
+---------------------------------
+
+In general, the thing you need to know is:
+
+* Configure authentication per `cloud`
+* Select config to use by `cloud` and `region`
+
+clouds.yaml
+-----------
+
+Information about the clouds you want to connect to is stored in a file
+called `clouds.yaml`.
+
+`clouds.yaml` can be in your homedir: `~/.config/openstack/clouds.yaml`
+or system-wide: `/etc/openstack/clouds.yaml`.
+
+Information in your homedir, if it exists, takes precedence.
+
+Full docs on `clouds.yaml` are at
+https://docs.openstack.org/os-client-config/latest/
+
+What about Mac and Windows?
+---------------------------
+
+`USER_CONFIG_DIR` is different on Linux, OSX and Windows.
+
+* Linux: `~/.config/openstack`
+* OSX: `~/Library/Application Support/openstack`
+* Windows: `C:\\Users\\USERNAME\\AppData\\Local\\OpenStack\\openstack`
+
+`SITE_CONFIG_DIR` is different on Linux, OSX and Windows.
+
+* Linux: `/etc/openstack`
+* OSX: `/Library/Application Support/openstack`
+* Windows: `C:\\ProgramData\\OpenStack\\openstack`
+
+Config Terminology
+------------------
+
+For multi-cloud, think of two types:
+
+* `profile` - Facts about the `cloud` that are true for everyone
+* `cloud` - Information specific to a given `user`
+
+Apologies for the use of `cloud` twice.
+
+Environment Variables and Simple Usage
+--------------------------------------
+
+* Environment variables starting with `OS_` go into a cloud called `envvars`
+* If you only have one cloud, you don't have to specify it
+* `OS_CLOUD` and `OS_REGION_NAME` are default values for
+  `cloud` and `region_name`
+
+TOO MUCH TALKING - NOT ENOUGH CODE
+----------------------------------
+
+basic clouds.yaml for the example code
+--------------------------------------
+
+Simple example of a clouds.yaml
+
+* Config for a named `cloud` "my-citycloud"
+* Reference a well-known "named" profile: `citycloud`
+* `os-client-config` has a built-in list of profiles at
+  https://docs.openstack.org/openstacksdk/latest/user/config/vendor-support.html
+* Vendor profiles contain various advanced config
+* `cloud` name can match `profile` name (using different names for clarity)
+
+.. code:: yaml
+
+  clouds:
+    my-citycloud:
+      profile: citycloud
+      auth:
+        username: mordred
+        project_id: 65222a4d09ea4c68934fa1028c77f394
+        user_domain_id: d0919bd5e8d74e49adf0e145807ffc38
+        project_domain_id: d0919bd5e8d74e49adf0e145807ffc38
+
+Where's the password?
+
+secure.yaml
+-----------
+
+* Optional additional file just like `clouds.yaml`
+* Values overlaid on `clouds.yaml`
+* Useful if you want to protect secrets more stringently
+
+Example secure.yaml
+-------------------
+
+* No, my password isn't XXXXXXXX
+* `cloud` name should match `clouds.yaml`
+* Optional - I actually keep mine in my `clouds.yaml`
+
+.. code:: yaml
+
+  clouds:
+    my-citycloud:
+      auth:
+        password: XXXXXXXX
+
+more clouds.yaml
+----------------
+
+More information can be provided.
+
+* Use v3 of the `identity` API - even if others are present
+* Use `https://image-ca-ymq-1.vexxhost.net/v2` for `image` API
+  instead of what's in the catalog
+
+.. code:: yaml
+
+    my-vexxhost:
+      identity_api_version: 3
+      image_endpoint_override: https://image-ca-ymq-1.vexxhost.net/v2
+      profile: vexxhost
+      auth:
+        user_domain_id: default
+        project_domain_id: default
+        project_name: d8af8a8f-a573-48e6-898a-af333b970a2d
+        username: 0b8c435b-cc4d-4e05-8a47-a2ada0539af1
+
+Much more complex clouds.yaml example
+-------------------------------------
+
+* Not using a profile - all settings included
+* In the `ams01` `region` there are two networks with undiscoverable qualities
+* Each one are labeled here so choices can be made
+* Any of the settings can be specific to a `region` if needed
+* `region` settings override `cloud` settings
+* `cloud` does not support `floating-ips`
+
+.. code:: yaml
+
+    my-internap:
+      auth:
+        auth_url: https://identity.api.cloud.inap.com
+        username: api-55f9a00fb2619
+        project_name: inap-17037
+      identity_api_version: 3
+      floating_ip_source: None
+      regions:
+      - name: ams01
+        values:
+          networks:
+          - name: inap-17037-WAN1654
+            routes_externally: true
+            default_interface: true
+          - name: inap-17037-LAN3631
+            routes_externally: false
+
+Complete Example Again
+----------------------
+
+.. code:: python
+
+  from openstack import cloud as openstack
+
+  # Initialize and turn on debug logging
+  openstack.enable_logging(debug=True)
+
+  for cloud_name, region_name in [
+          ('my-vexxhost', 'ca-ymq-1'),
+          ('my-citycloud', 'Buf1'),
+          ('my-internap', 'ams01')]:
+      # Initialize cloud
+      cloud = openstack.connect(cloud=cloud_name, region_name=region_name)
+
+      # Upload an image to the cloud
+      image = cloud.create_image(
+          'devuan-jessie', filename='devuan-jessie.qcow2', wait=True)
+
+      # Find a flavor with at least 512M of RAM
+      flavor = cloud.get_flavor_by_ram(512)
+
+      # Boot a server, wait for it to boot, and then do whatever is needed
+      # to get a public ip for it.
+      cloud.create_server(
+          'my-server', image=image, flavor=flavor, wait=True, auto_ip=True)
+
+Step By Step
+------------
+
+Import the library
+------------------
+
+.. code:: python
+
+  from openstack import cloud as openstack
+
+Logging
+-------
+
+* `openstacksdk` uses standard python logging
+* ``openstack.enable_logging`` does easy defaults
+* Squelches some meaningless warnings
+
+  * `debug`
+
+     * Logs openstacksdk loggers at debug level
+
+  * `http_debug` Implies `debug`, turns on HTTP tracing
+
+.. code:: python
+
+  # Initialize and turn on debug logging
+  openstack.enable_logging(debug=True)
+
+Example with Debug Logging
+--------------------------
+
+* examples/cloud/debug-logging.py
+
+.. code:: python
+
+  from openstack import cloud as openstack
+  openstack.enable_logging(debug=True)
+
+  cloud = openstack.connect(cloud='my-vexxhost', region_name='ca-ymq-1')
+  cloud.get_image('Ubuntu 16.04.1 LTS [2017-03-03]')
+
+Example with HTTP Debug Logging
+-------------------------------
+
+* examples/cloud/http-debug-logging.py
+
+.. code:: python
+
+  from openstack import cloud as openstack
+  openstack.enable_logging(http_debug=True)
+
+  cloud = openstack.connect(
+      cloud='my-vexxhost', region_name='ca-ymq-1')
+  cloud.get_image('Ubuntu 16.04.1 LTS [2017-03-03]')
+
+Cloud Regions
+-------------
+
+* `cloud` constructor needs `cloud` and `region_name`
+* `openstack.connect` is a helper factory function
+
+.. code:: python
+
+  for cloud_name, region_name in [
+      ('my-vexxhost', 'ca-ymq-1'),
+      ('my-citycloud', 'Buf1'),
+      ('my-internap', 'ams01')
+  ]:
+      # Initialize cloud
+      cloud = openstack.connect(cloud=cloud_name, region_name=region_name)
+
+Upload an Image
+---------------
+
+* Picks the correct upload mechanism
+* **SUGGESTION** Always upload your own base images
+
+.. code:: python
+
+      # Upload an image to the cloud
+      image = cloud.create_image(
+          'devuan-jessie',
+          filename='devuan-jessie.qcow2',
+          wait=True,
+      )
+
+Always Upload an Image
+----------------------
+
+Ok. You don't have to. But, for multi-cloud...
+
+* Images with same content are named different on different clouds
+* Images with same name on different clouds can have different content
+* Upload your own to all clouds, both problems go away
+* Download from OS vendor or build with `diskimage-builder`
+
+Find a flavor
+-------------
+
+* Flavors are all named differently on clouds
+* Flavors can be found via RAM
+* `get_flavor_by_ram` finds the smallest matching flavor
+
+.. code:: python
+
+      # Find a flavor with at least 512M of RAM
+      flavor = cloud.get_flavor_by_ram(512)
+
+Create a server
+---------------
+
+* my-vexxhost
+
+  * Boot server
+  * Wait for `status==ACTIVE`
+
+* my-internap
+
+  * Boot server on network `inap-17037-WAN1654`
+  * Wait for `status==ACTIVE`
+
+* my-citycloud
+
+  * Boot server
+  * Wait for `status==ACTIVE`
+  * Find the `port` for the `fixed_ip` for `server`
+  * Create `floating-ip` on that `port`
+  * Wait for `floating-ip` to attach
+
+.. code:: python
+
+      # Boot a server, wait for it to boot, and then do whatever is needed
+      # to get a public ip for it.
+      cloud.create_server(
+          'my-server', image=image, flavor=flavor, wait=True, auto_ip=True)
+
+Wow. We didn't even deploy Wordpress!
+-------------------------------------
+
+Image and Flavor by Name or ID
+------------------------------
+
+* Pass string to image/flavor
+* Image/Flavor will be found by name or ID
+* Common pattern
+* examples/cloud/create-server-name-or-id.py
+
+.. code:: python
+
+  from openstack import cloud as openstack
+
+  # Initialize and turn on debug logging
+  openstack.enable_logging(debug=True)
+
+  for cloud_name, region_name, image, flavor in [
+          ('my-vexxhost', 'ca-ymq-1',
+           'Ubuntu 16.04.1 LTS [2017-03-03]', 'v1-standard-4'),
+          ('my-citycloud', 'Buf1',
+           'Ubuntu 16.04 Xenial Xerus', '4C-4GB-100GB'),
+          ('my-internap', 'ams01',
+           'Ubuntu 16.04 LTS (Xenial Xerus)', 'A1.4')]:
+      # Initialize cloud
+      cloud = openstack.connect(cloud=cloud_name, region_name=region_name)
+
+      # Boot a server, wait for it to boot, and then do whatever is needed
+      # to get a public ip for it.
+      server = cloud.create_server(
+          'my-server', image=image, flavor=flavor, wait=True, auto_ip=True)
+      print(server.name)
+      print(server['name'])
+      cloud.pprint(server)
+      # Delete it - this is a demo
+      cloud.delete_server(server, wait=True, delete_ips=True)
+
+Delete Servers
+--------------
+
+* `delete_ips` Delete any `floating_ips` the server may have
+
+.. code:: python
+
+      cloud.delete_server('my-server', wait=True, delete_ips=True)
+
+Image and Flavor by Dict
+------------------------
+
+* Pass dict to image/flavor
+* If you know if the value is Name or ID
+* Common pattern
+* examples/cloud/create-server-dict.py
+
+.. code:: python
+
+  from openstack import cloud as openstack
+
+  # Initialize and turn on debug logging
+  openstack.enable_logging(debug=True)
+
+  for cloud_name, region_name, image, flavor_id in [
+          ('my-vexxhost', 'ca-ymq-1', 'Ubuntu 16.04.1 LTS [2017-03-03]',
+           '5cf64088-893b-46b5-9bb1-ee020277635d'),
+          ('my-citycloud', 'Buf1', 'Ubuntu 16.04 Xenial Xerus',
+           '0dab10b5-42a2-438e-be7b-505741a7ffcc'),
+          ('my-internap', 'ams01', 'Ubuntu 16.04 LTS (Xenial Xerus)',
+           'A1.4')]:
+      # Initialize cloud
+      cloud = openstack.connect(cloud=cloud_name, region_name=region_name)
+
+      # Boot a server, wait for it to boot, and then do whatever is needed
+      # to get a public ip for it.
+      server = cloud.create_server(
+          'my-server', image=image, flavor=dict(id=flavor_id),
+          wait=True, auto_ip=True)
+      # Delete it - this is a demo
+      cloud.delete_server(server, wait=True, delete_ips=True)
+
+Munch Objects
+-------------
+
+* Behave like a dict and an object
+* examples/cloud/munch-dict-object.py
+
+.. code:: python
+
+  from openstack import cloud as openstack
+  openstack.enable_logging(debug=True)
+
+  cloud = openstack.connect(cloud='zetta', region_name='no-osl1')
+  image = cloud.get_image('Ubuntu 14.04 (AMD64) [Local Storage]')
+  print(image.name)
+  print(image['name'])
+
+API Organized by Logical Resource
+---------------------------------
+
+* list_servers
+* search_servers
+* get_server
+* create_server
+* delete_server
+* update_server
+
+For other things, it's still {verb}_{noun}
+
+* attach_volume
+* wait_for_server
+* add_auto_ip
+
+Cleanup Script
+--------------
+
+* Sometimes my examples had bugs
+* examples/cloud/cleanup-servers.py
+
+.. code:: python
+
+  from openstack import cloud as openstack
+
+  # Initialize and turn on debug logging
+  openstack.enable_logging(debug=True)
+
+  for cloud_name, region_name in [
+          ('my-vexxhost', 'ca-ymq-1'),
+          ('my-citycloud', 'Buf1'),
+          ('my-internap', 'ams01')]:
+      # Initialize cloud
+      cloud = openstack.connect(cloud=cloud_name, region_name=region_name)
+      for server in cloud.search_servers('my-server'):
+          cloud.delete_server(server, wait=True, delete_ips=True)
+
+Normalization
+-------------
+
+* examples/cloud/normalization.py
+
+.. code:: python
+
+  from openstack import cloud as openstack
+  openstack.enable_logging()
+
+  cloud = openstack.connect(cloud='fuga', region_name='cystack')
+  image = cloud.get_image(
+      'Ubuntu 16.04 LTS - Xenial Xerus - 64-bit - Fuga Cloud Based Image')
+  cloud.pprint(image)
+
+Strict Normalized Results
+-------------------------
+
+* Return only the declared model
+* examples/cloud/strict-mode.py
+
+.. code:: python
+
+  from openstack import cloud as openstack
+  openstack.enable_logging()
+
+  cloud = openstack.connect(
+      cloud='fuga', region_name='cystack', strict=True)
+  image = cloud.get_image(
+      'Ubuntu 16.04 LTS - Xenial Xerus - 64-bit - Fuga Cloud Based Image')
+  cloud.pprint(image)
+
+How Did I Find the Image Name for the Last Example?
+---------------------------------------------------
+
+* I often make stupid little utility scripts
+* examples/cloud/find-an-image.py
+
+.. code:: python
+
+  from openstack import cloud as openstack
+  openstack.enable_logging()
+
+  cloud = openstack.connect(cloud='fuga', region_name='cystack')
+  cloud.pprint([
+      image for image in cloud.list_images()
+      if 'ubuntu' in image.name.lower()])
+
+Added / Modified Information
+----------------------------
+
+* Servers need more extra help
+* Fetch addresses dict from neutron
+* Figure out which IPs are good
+* `detailed` - defaults to True, add everything
+* `bare` - no extra calls - don't even fix broken things
+* `bare` is still normalized
+* examples/cloud/server-information.py
+
+.. code:: python
+
+  from openstack import cloud as openstack
+  openstack.enable_logging(debug=True)
+
+  cloud = openstack.connect(cloud='my-citycloud', region_name='Buf1')
+  try:
+      server = cloud.create_server(
+          'my-server', image='Ubuntu 16.04 Xenial Xerus',
+          flavor=dict(id='0dab10b5-42a2-438e-be7b-505741a7ffcc'),
+          wait=True, auto_ip=True)
+
+      print("\n\nFull Server\n\n")
+      cloud.pprint(server)
+
+      print("\n\nTurn Detailed Off\n\n")
+      cloud.pprint(cloud.get_server('my-server', detailed=False))
+
+      print("\n\nBare Server\n\n")
+      cloud.pprint(cloud.get_server('my-server', bare=True))
+
+  finally:
+      # Delete it - this is a demo
+      cloud.delete_server(server, wait=True, delete_ips=True)
+
+Exceptions
+----------
+
+* All openstacksdk exceptions are subclasses of `OpenStackCloudException`
+* Direct REST calls throw `OpenStackCloudHTTPError`
+* `OpenStackCloudHTTPError` subclasses `OpenStackCloudException`
+  and `requests.exceptions.HTTPError`
+* `OpenStackCloudURINotFound` for 404
+* `OpenStackCloudBadRequest` for 400
+
+User Agent Info
+---------------
+
+* Set `app_name` and `app_version` for User Agents
+* (ssh ... `region_name` is optional if the cloud has one region)
+* examples/cloud/user-agent.py
+
+.. code:: python
+
+  from openstack import cloud as openstack
+  openstack.enable_logging(http_debug=True)
+
+  cloud = openstack.connect(
+      cloud='datacentred',
+      app_name='AmazingApp',
+      app_version='1.0',
+  )
+  cloud.list_networks()
+
+Uploading Large Objects
+-----------------------
+
+* swift has a maximum object size
+* Large Objects are uploaded specially
+* openstacksdk figures this out and does it
+* multi-threaded
+* examples/cloud/upload-object.py
+
+.. code:: python
+
+  from openstack import cloud as openstack
+  openstack.enable_logging(debug=True)
+
+  cloud = openstack.connect(cloud='ovh', region_name='SBG1')
+  cloud.create_object(
+      container='my-container',
+      name='my-object',
+      filename='/home/mordred/briarcliff.sh3d',
+  )
+  cloud.delete_object('my-container', 'my-object')
+  cloud.delete_container('my-container')
+
+Uploading Large Objects
+-----------------------
+
+* Default max_file_size is 5G
+* This is a conference demo
+* Let's force a segment_size
+* One MILLION bytes
+* examples/cloud/upload-object.py
+
+.. code:: python
+
+  from openstack import cloud as openstack
+  openstack.enable_logging(debug=True)
+
+  cloud = openstack.connect(cloud='ovh', region_name='SBG1')
+  cloud.create_object(
+      container='my-container',
+      name='my-object',
+      filename='/home/mordred/briarcliff.sh3d',
+      segment_size=1000000,
+  )
+  cloud.delete_object('my-container', 'my-object')
+  cloud.delete_container('my-container')
+
+Service Conditionals
+--------------------
+
+.. code:: python
+
+  from openstack import cloud as openstack
+  openstack.enable_logging(debug=True)
+
+  cloud = openstack.connect(cloud='kiss', region_name='region1')
+  print(cloud.has_service('network'))
+  print(cloud.has_service('container-orchestration'))
+
+Service Conditional Overrides
+-----------------------------
+
+* Sometimes clouds are weird and figuring that out won't work
+
+.. code:: python
+
+  from openstack import cloud as openstack
+  openstack.enable_logging(debug=True)
+
+  cloud = openstack.connect(cloud='rax', region_name='DFW')
+  print(cloud.has_service('network'))
+
+.. code:: yaml
+
+  clouds:
+    rax:
+      profile: rackspace
+      auth:
+        username: mordred
+        project_id: 245018
+      # This is already in profile: rackspace
+      has_network: false
+
+FIN
+---
diff --git a/doc/source/user/proxies/accelerator.rst b/doc/source/user/proxies/accelerator.rst
new file mode 100644
index 0000000..38e4da4
--- /dev/null
+++ b/doc/source/user/proxies/accelerator.rst
@@ -0,0 +1,43 @@
+Accelerator API
+===============
+
+.. automodule:: openstack.accelerator.v2._proxy
+
+The Accelerator Class
+---------------------
+
+The accelerator high-level interface is available through the ``accelerator``
+member of a :class:`~openstack.connection.Connection` object.
+The ``accelerator`` member will only be added if the service is detected.
+
+
+Device Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.accelerator.v2._proxy.Proxy
+  :noindex:
+  :members: devices, get_device
+
+Deployable Operations
+^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.accelerator.v2._proxy.Proxy
+  :noindex:
+  :members: deployables, get_deployable, update_deployable
+
+Device Profile Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.accelerator.v2._proxy.Proxy
+  :noindex:
+  :members: device_profiles, get_device_profile,
+            create_device_profile, delete_device_profile
+
+Accelerator Request Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.accelerator.v2._proxy.Proxy
+  :noindex:
+  :members: accelerator_requests, get_accelerator_request,
+            create_accelerator_request, delete_accelerator_request,
+            update_accelerator_request
diff --git a/doc/source/user/proxies/baremetal.rst b/doc/source/user/proxies/baremetal.rst
new file mode 100644
index 0000000..557c8d4
--- /dev/null
+++ b/doc/source/user/proxies/baremetal.rst
@@ -0,0 +1,107 @@
+Baremetal API
+=============
+
+For details on how to use baremetal, see :doc:`/user/guides/baremetal`
+
+.. automodule:: openstack.baremetal.v1._proxy
+
+The Baremetal Class
+-------------------
+
+The baremetal high-level interface is available through the ``baremetal``
+member of a :class:`~openstack.connection.Connection` object.
+The ``baremetal`` member will only be added if the service is detected.
+
+Node Operations
+^^^^^^^^^^^^^^^
+.. autoclass:: openstack.baremetal.v1._proxy.Proxy
+  :noindex:
+  :members: nodes, create_node, find_node, get_node, update_node, patch_node, delete_node,
+            set_node_provision_state, get_node_boot_device,
+            set_node_boot_device, get_node_supported_boot_devices,
+            set_node_boot_mode,
+            set_node_secure_boot, inject_nmi_to_node, wait_for_nodes_provision_state,
+            set_node_power_state, wait_for_node_power_state,
+            wait_for_node_reservation, validate_node, set_node_maintenance,
+            unset_node_maintenance, delete_node, list_node_vendor_passthru,
+            get_node_console, enable_node_console, disable_node_console
+
+Node Trait Operations
+^^^^^^^^^^^^^^^^^^^^^
+.. autoclass:: openstack.baremetal.v1._proxy.Proxy
+  :noindex:
+  :members: add_node_trait, remove_node_trait, set_node_traits
+
+Port Operations
+^^^^^^^^^^^^^^^
+.. autoclass:: openstack.baremetal.v1._proxy.Proxy
+  :noindex:
+  :members: ports, find_port, get_port, create_port, update_port, delete_port, patch_port
+
+Port Group Operations
+^^^^^^^^^^^^^^^^^^^^^
+.. autoclass:: openstack.baremetal.v1._proxy.Proxy
+  :noindex:
+  :members: port_groups, find_port_group, get_port_group,
+            create_port_group, update_port_group, delete_port_group, patch_port_group
+
+Driver Operations
+^^^^^^^^^^^^^^^^^
+.. autoclass:: openstack.baremetal.v1._proxy.Proxy
+  :noindex:
+  :members: drivers, get_driver
+
+Chassis Operations
+^^^^^^^^^^^^^^^^^^
+.. autoclass:: openstack.baremetal.v1._proxy.Proxy
+  :noindex:
+  :members: chassis, find_chassis, get_chassis,
+            create_chassis, update_chassis, patch_chassis, delete_chassis
+
+VIF Operations
+^^^^^^^^^^^^^^
+.. autoclass:: openstack.baremetal.v1._proxy.Proxy
+  :noindex:
+  :members: list_node_vifs, attach_vif_to_node, detach_vif_from_node
+
+Allocation Operations
+^^^^^^^^^^^^^^^^^^^^^
+.. autoclass:: openstack.baremetal.v1._proxy.Proxy
+  :noindex:
+  :members: allocations, get_allocation, create_allocation,
+            update_allocation, patch_allocation, delete_allocation,
+            wait_for_allocation
+
+Volume Connector Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+.. autoclass:: openstack.baremetal.v1._proxy.Proxy
+  :noindex:
+  :members: volume_connectors, find_volume_connector, get_volume_connector,
+            create_volume_connector, update_volume_connector,
+            patch_volume_connector, delete_volume_connector
+
+Volume Target Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+.. autoclass:: openstack.baremetal.v1._proxy.Proxy
+  :noindex:
+  :members: volume_targets, find_volume_target, get_volume_target,
+            create_volume_target, update_volume_target,
+            patch_volume_target, delete_volume_target
+
+Deploy Template Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+.. autoclass:: openstack.baremetal.v1._proxy.Proxy
+  :noindex:
+  :members: deploy_templates, get_deploy_template,
+            create_deploy_template, update_deploy_template,
+            patch_deploy_template, delete_deploy_template
+
+Utilities
+---------
+
+Building config drives
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openstack.baremetal.configdrive
+  :noindex:
+   :members:
diff --git a/doc/source/user/proxies/baremetal_introspection.rst b/doc/source/user/proxies/baremetal_introspection.rst
new file mode 100644
index 0000000..b21aba0
--- /dev/null
+++ b/doc/source/user/proxies/baremetal_introspection.rst
@@ -0,0 +1,21 @@
+Baremetal Introspection API
+===========================
+
+.. automodule:: openstack.baremetal_introspection.v1._proxy
+
+The Baremetal Introspection Proxy
+---------------------------------
+
+The baremetal introspection high-level interface is available through
+the ``baremetal_introspection`` member of a
+:class:`~openstack.connection.Connection` object.
+The ``baremetal_introspection`` member will only be added if the service is
+detected.
+
+Introspection Process Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.baremetal_introspection.v1._proxy.Proxy
+  :noindex:
+  :members: introspections, get_introspection, get_introspection_data,
+            start_introspection, wait_for_introspection, abort_introspection
diff --git a/doc/source/user/proxies/block_storage_v2.rst b/doc/source/user/proxies/block_storage_v2.rst
new file mode 100644
index 0000000..c5bca18
--- /dev/null
+++ b/doc/source/user/proxies/block_storage_v2.rst
@@ -0,0 +1,76 @@
+Block Storage API
+=================
+
+For details on how to use block_storage, see :doc:`/user/guides/block_storage`
+
+.. automodule:: openstack.block_storage.v2._proxy
+
+The BlockStorage Class
+----------------------
+
+The block_storage high-level interface is available through the
+``block_storage`` member of a :class:`~openstack.connection.Connection` object.
+The ``block_storage`` member will only be added if the service is detected.
+
+Volume Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v2._proxy.Proxy
+  :noindex:
+  :members: create_volume, delete_volume, get_volume, volumes
+
+Backup Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v2._proxy.Proxy
+  :noindex:
+  :members: create_backup, delete_backup, get_backup, backups, restore_backup
+
+Capabilities Operations
+^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v2._proxy.Proxy
+  :noindex:
+  :members: get_capabilities
+
+Limits Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v2._proxy.Proxy
+  :noindex:
+  :members: get_limits
+
+Type Operations
+^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v2._proxy.Proxy
+  :noindex:
+  :members: create_type, delete_type, get_type, types
+
+Snapshot Operations
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v2._proxy.Proxy
+  :noindex:
+  :members: create_snapshot, delete_snapshot, get_snapshot, snapshots
+
+Stats Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v2._proxy.Proxy
+  :noindex:
+  :members: backend_pools
+
+QuotaSet Operations
+^^^^^^^^^^^^^^^^^^^
+.. autoclass:: openstack.block_storage.v2._proxy.Proxy
+  :noindex:
+  :members: get_quota_set, get_quota_set_defaults,
+            revert_quota_set, update_quota_set
+
+Helpers
+^^^^^^^
+
+.. autoclass:: openstack.block_storage.v2._proxy.Proxy
+   :noindex:
+   :members: wait_for_status, wait_for_delete
diff --git a/doc/source/user/proxies/block_storage_v3.rst b/doc/source/user/proxies/block_storage_v3.rst
new file mode 100644
index 0000000..6799ba2
--- /dev/null
+++ b/doc/source/user/proxies/block_storage_v3.rst
@@ -0,0 +1,167 @@
+Block Storage API
+=================
+
+For details on how to use block_storage, see :doc:`/user/guides/block_storage`
+
+.. automodule:: openstack.block_storage.v3._proxy
+
+The BlockStorage Class
+----------------------
+
+The block_storage high-level interface is available through the
+``block_storage`` member of a :class:`~openstack.connection.Connection` object.
+The ``block_storage`` member will only be added if the service is detected.
+
+Volume Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: create_volume, delete_volume, update_volume, get_volume,
+            find_volume, volumes, get_volume_metadata, set_volume_metadata,
+            delete_volume_metadata, extend_volume, set_volume_readonly,
+            retype_volume, set_volume_bootable_status, reset_volume_status,
+            revert_volume_to_snapshot, attach_volume, detach_volume,
+            unmanage_volume, migrate_volume, complete_volume_migration,
+            upload_volume_to_image, reserve_volume, unreserve_volume,
+            begin_volume_detaching, abort_volume_detaching,
+            init_volume_attachment, terminate_volume_attachment,
+            manage_volume,
+
+Backend Pools Operations
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: backend_pools
+
+Backup Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: create_backup, delete_backup, get_backup, find_backup, backups,
+            restore_backup, reset_backup,
+
+Availability Zone Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: availability_zones
+
+Limits Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: get_limits
+
+Capabilities Operations
+^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: get_capabilities
+
+Group Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: create_group, create_group_from_source, delete_group, update_group,
+            get_group, find_group, groups, reset_group_state
+
+Group Snapshot Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: create_group_snapshot, delete_group_snapshot, get_group_snapshot,
+            find_group_snapshot, group_snapshots, reset_group_snapshot_state
+
+Group Type Operations
+^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: create_group_type, delete_group_type, update_group_type,
+            get_group_type, find_group_type, group_types,
+            fetch_group_type_group_specs, create_group_type_group_specs,
+            get_group_type_group_specs_property,
+            update_group_type_group_specs_property,
+            delete_group_type_group_specs_property
+
+Service Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+   :noindex:
+   :members: find_service, services, enable_service, disable_service,
+             thaw_service, freeze_service, failover_service
+
+Type Operations
+^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: create_type, delete_type, update_type, get_type, find_type, types,
+            update_type_extra_specs, delete_type_extra_specs, get_type_access,
+            add_type_access, remove_type_access, get_type_encryption,
+            create_type_encryption, delete_type_encryption,
+            update_type_encryption
+
+Snapshot Operations
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: create_snapshot, delete_snapshot, update_snapshot, get_snapshot,
+            find_snapshot, snapshots, get_snapshot_metadata,
+            set_snapshot_metadata, delete_snapshot_metadata, reset_snapshot,
+            set_snapshot_status, manage_snapshot, unmanage_snapshot
+
+Stats Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: backend_pools
+
+QuotaSet Operations
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: get_quota_set, get_quota_set_defaults,
+            revert_quota_set, update_quota_set
+
+Helpers
+^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: wait_for_status, wait_for_delete
+
+BlockStorageSummary Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: summary
+
+Attachments
+^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: create_attachment, get_attachment, attachments,
+            delete_attachment, update_attachment, complete_attachment
+
+Transfer Operations
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.block_storage.v3._proxy.Proxy
+  :noindex:
+  :members: create_transfer, delete_transfer, find_transfer,
+            get_transfer, transfers, accept_transfer
diff --git a/doc/source/user/proxies/clustering.rst b/doc/source/user/proxies/clustering.rst
new file mode 100644
index 0000000..46bf497
--- /dev/null
+++ b/doc/source/user/proxies/clustering.rst
@@ -0,0 +1,119 @@
+Cluster API
+===========
+
+.. automodule:: openstack.clustering.v1._proxy
+
+The Cluster Class
+-----------------
+
+The cluster high-level interface is available through the ``cluster``
+member of a :class:`~openstack.connection.Connection` object.  The
+``cluster`` member will only be added if the service is detected.
+
+
+Build Info Operations
+^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.clustering.v1._proxy.Proxy
+  :noindex:
+  :members: get_build_info
+
+
+Profile Type Operations
+^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.clustering.v1._proxy.Proxy
+  :noindex:
+  :members: profile_types, get_profile_type
+
+
+Profile Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.clustering.v1._proxy.Proxy
+  :noindex:
+  :members: create_profile, update_profile, delete_profile, get_profile,
+            find_profile, profiles, validate_profile
+
+
+Policy Type Operations
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.clustering.v1._proxy.Proxy
+  :noindex:
+  :members: policy_types, get_policy_type
+
+
+Policy Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.clustering.v1._proxy.Proxy
+  :noindex:
+  :members: create_policy, update_policy, delete_policy, get_policy,
+            find_policy, policies
+
+validate_policy
+
+
+Cluster Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.clustering.v1._proxy.Proxy
+  :noindex:
+  :members: create_cluster, update_cluster, delete_cluster, get_cluster,
+            find_cluster, clusters, check_cluster, recover_cluster,
+            resize_cluster, scale_in_cluster, scale_out_cluster,
+            collect_cluster_attrs, perform_operation_on_cluster,
+            add_nodes_to_cluster, remove_nodes_from_cluster,
+            replace_nodes_in_cluster, attach_policy_to_cluster,
+            update_cluster_policy, detach_policy_from_cluster,
+            get_cluster_policy, cluster_policies
+
+Node Operations
+^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.clustering.v1._proxy.Proxy
+  :noindex:
+  :members: create_node, update_node, delete_node, get_node, find_node, nodes,
+            check_node, recover_node, perform_operation_on_node, adopt_node
+
+
+Receiver Operations
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.clustering.v1._proxy.Proxy
+  :noindex:
+  :members: create_receiver, update_receiver, delete_receiver,
+            get_receiver, find_receiver, receivers
+
+
+Action Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.clustering.v1._proxy.Proxy
+  :noindex:
+  :members: get_action, actions
+
+
+Event Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.clustering.v1._proxy.Proxy
+  :noindex:
+  :members: get_event, events
+
+
+Helper Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.clustering.v1._proxy.Proxy
+  :noindex:
+  :members: wait_for_delete, wait_for_status
+
+
+Service Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.clustering.v1._proxy.Proxy
+  :noindex:
+  :members: services
diff --git a/doc/source/user/proxies/compute.rst b/doc/source/user/proxies/compute.rst
new file mode 100644
index 0000000..b2b693b
--- /dev/null
+++ b/doc/source/user/proxies/compute.rst
@@ -0,0 +1,181 @@
+Compute API
+===========
+
+For details on how to use compute, see :doc:`/user/guides/compute`
+
+.. automodule:: openstack.compute.v2._proxy
+
+The Compute Class
+-----------------
+
+The compute high-level interface is available through the ``compute``
+member of a :class:`~openstack.connection.Connection` object.  The
+``compute`` member will only be added if the service is detected.
+
+
+Server Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: create_server, update_server, delete_server, get_server,
+            find_server, servers, get_server_metadata, set_server_metadata,
+            delete_server_metadata, wait_for_server, create_server_image,
+            backup_server
+
+Network Actions
+***************
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: add_fixed_ip_to_server, remove_fixed_ip_from_server,
+            add_floating_ip_to_server, remove_floating_ip_from_server,
+            fetch_server_security_groups, add_security_group_to_server,
+            remove_security_group_from_server
+
+Starting, Stopping, etc.
+************************
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: start_server, stop_server, suspend_server, resume_server,
+            reboot_server, restore_server, shelve_server, unshelve_server,
+            lock_server, unlock_server, pause_server, unpause_server,
+            rescue_server, unrescue_server, evacuate_server, migrate_server,
+            get_server_console_output, live_migrate_server
+
+Modifying a Server
+******************
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: resize_server, confirm_server_resize, revert_server_resize,
+            rebuild_server, reset_server_state, change_server_password,
+            get_server_password
+
+Image Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: images, get_image, find_image, delete_image, get_image_metadata,
+            set_image_metadata, delete_image_metadata
+
+Flavor Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: create_flavor, delete_flavor, get_flavor, find_flavor, flavors,
+            flavor_add_tenant_access, flavor_remove_tenant_access,
+            get_flavor_access, fetch_flavor_extra_specs,
+            create_flavor_extra_specs, get_flavor_extra_specs_property,
+            update_flavor_extra_specs_property,
+            delete_flavor_extra_specs_property
+
+Service Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: services, enable_service, disable_service, update_service_forced_down,
+            delete_service, update_service, find_service
+
+Volume Attachment Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: create_volume_attachment, update_volume_attachment,
+            delete_volume_attachment, get_volume_attachment,
+            volume_attachments
+
+Keypair Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: create_keypair, delete_keypair, get_keypair, find_keypair,
+            keypairs
+
+Server IPs
+^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: server_ips
+
+Server Group Operations
+^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: create_server_group, delete_server_group, get_server_group,
+            find_server_group, server_groups
+
+Server Interface Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: create_server_interface, delete_server_interface,
+            get_server_interface, server_interfaces,
+
+Availability Zone Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: availability_zones
+
+Limits Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: get_limits
+
+Hypervisor Operations
+^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: get_hypervisor, find_hypervisor, hypervisors,
+            get_hypervisor_uptime
+
+Extension Operations
+^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: find_extension, extensions
+
+QuotaSet Operations
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: get_quota_set, get_quota_set_defaults,
+            revert_quota_set, update_quota_set
+
+Server Migration Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: abort_server_migration, force_complete_server_migration,
+            get_server_migration, server_migrations
+
+Migration Operations
+^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+  :noindex:
+  :members: migrations
+
+Helpers
+^^^^^^^
+
+.. autoclass:: openstack.compute.v2._proxy.Proxy
+   :noindex:
+   :members: wait_for_delete
diff --git a/doc/source/user/proxies/container_infrastructure_management.rst b/doc/source/user/proxies/container_infrastructure_management.rst
new file mode 100644
index 0000000..99e3306
--- /dev/null
+++ b/doc/source/user/proxies/container_infrastructure_management.rst
@@ -0,0 +1,35 @@
+Container Infrastructure Management
+===================================
+
+.. automodule:: openstack.container_infrastructure_management.v1._proxy
+
+Cluster Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.container_infrastructure_management.v1._proxy.Proxy
+  :noindex:
+  :members: create_cluster, delete_cluster, update_cluster, get_cluster,
+            find_cluster, clusters
+
+Cluster Certificates Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.container_infrastructure_management.v1._proxy.Proxy
+  :noindex:
+  :members: create_cluster_certificate, get_cluster_certificate
+
+Cluster Templates Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.container_infrastructure_management.v1._proxy.Proxy
+  :noindex:
+  :members: create_cluster_template, delete_cluster_template,
+   find_cluster_template,
+            get_cluster_template, cluster_templates, update_cluster_template
+
+Service Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.container_infrastructure_management.v1._proxy.Proxy
+  :noindex:
+  :members: services
diff --git a/doc/source/user/proxies/database.rst b/doc/source/user/proxies/database.rst
new file mode 100644
index 0000000..3752b88
--- /dev/null
+++ b/doc/source/user/proxies/database.rst
@@ -0,0 +1,43 @@
+Database API
+============
+
+For details on how to use database, see :doc:`/user/guides/database`
+
+.. automodule:: openstack.database.v1._proxy
+
+The Database Class
+------------------
+
+The database high-level interface is available through the ``database``
+member of a :class:`~openstack.connection.Connection` object.  The
+``database`` member will only be added if the service is detected.
+
+Database Operations
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.database.v1._proxy.Proxy
+  :noindex:
+  :members: create_database, delete_database, get_database, find_database,
+            databases
+
+Flavor Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.database.v1._proxy.Proxy
+  :noindex:
+  :members: get_flavor, find_flavor, flavors
+
+Instance Operations
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.database.v1._proxy.Proxy
+  :noindex:
+  :members: create_instance, update_instance, delete_instance, get_instance,
+            find_instance, instances
+
+User Operations
+^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.database.v1._proxy.Proxy
+  :noindex:
+  :members: create_user, delete_user, get_user, find_user, users
diff --git a/doc/source/user/proxies/dns.rst b/doc/source/user/proxies/dns.rst
new file mode 100644
index 0000000..8c53c54
--- /dev/null
+++ b/doc/source/user/proxies/dns.rst
@@ -0,0 +1,70 @@
+DNS API
+=======
+
+For details on how to use dns, see :doc:`/user/guides/dns`
+
+.. automodule:: openstack.dns.v2._proxy
+
+The DNS Class
+-------------
+
+The dns high-level interface is available through the ``dns``
+member of a :class:`~openstack.connection.Connection` object.  The
+``dns`` member will only be added if the service is detected.
+
+DNS Zone Operations
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.dns.v2._proxy.Proxy
+  :noindex:
+  :members: create_zone, delete_zone, get_zone, find_zone, zones,
+            abandon_zone, xfr_zone
+
+Recordset Operations
+^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.dns.v2._proxy.Proxy
+  :noindex:
+  :members: create_recordset, update_recordset, get_recordset,
+            delete_recordset, recordsets
+
+Zone Import Operations
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.dns.v2._proxy.Proxy
+  :noindex:
+  :members: zone_imports, create_zone_import, get_zone_import,
+            delete_zone_import
+
+Zone Export Operations
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.dns.v2._proxy.Proxy
+  :noindex:
+  :members: zone_exports, create_zone_export, get_zone_export,
+            get_zone_export_text, delete_zone_export
+
+FloatingIP Operations
+^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.dns.v2._proxy.Proxy
+  :noindex:
+  :members: floating_ips, get_floating_ip, update_floating_ip
+
+Zone Transfer Operations
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.dns.v2._proxy.Proxy
+  :noindex:
+  :members: zone_transfer_requests, get_zone_transfer_request,
+            create_zone_transfer_request, update_zone_transfer_request,
+            delete_zone_transfer_request, zone_transfer_accepts,
+            get_zone_transfer_accept, create_zone_transfer_accept
+
+Zone Share Operations
+^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.dns.v2._proxy.Proxy
+  :noindex:
+  :members: create_zone_share, delete_zone_share, get_zone_share,
+            find_zone_share, zone_shares
diff --git a/doc/source/user/proxies/identity_v2.rst b/doc/source/user/proxies/identity_v2.rst
new file mode 100644
index 0000000..fac47fa
--- /dev/null
+++ b/doc/source/user/proxies/identity_v2.rst
@@ -0,0 +1,42 @@
+Identity API v2
+===============
+
+For details on how to use identity, see :doc:`/user/guides/identity`
+
+.. automodule:: openstack.identity.v2._proxy
+
+The Identity v2 Class
+---------------------
+
+The identity high-level interface is available through the ``identity``
+member of a :class:`~openstack.connection.Connection` object.  The
+``identity`` member will only be added if the service is detected.
+
+Extension Operations
+^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v2._proxy.Proxy
+  :noindex:
+  :members: get_extension, extensions
+
+User Operations
+^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v2._proxy.Proxy
+  :noindex:
+  :members: create_user, update_user, delete_user, get_user, find_user, users
+
+Role Operations
+^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v2._proxy.Proxy
+  :noindex:
+  :members: create_role, update_role, delete_role, get_role, find_role, roles
+
+Tenant Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v2._proxy.Proxy
+  :noindex:
+  :members: create_tenant, update_tenant, delete_tenant, get_tenant,
+            find_tenant, tenants
diff --git a/doc/source/user/proxies/identity_v3.rst b/doc/source/user/proxies/identity_v3.rst
new file mode 100644
index 0000000..1afe30e
--- /dev/null
+++ b/doc/source/user/proxies/identity_v3.rst
@@ -0,0 +1,124 @@
+Identity API v3
+===============
+
+For details on how to use identity, see :doc:`/user/guides/identity`
+
+.. automodule:: openstack.identity.v3._proxy
+
+The Identity v3 Class
+---------------------
+
+The identity high-level interface is available through the ``identity``
+member of a :class:`~openstack.connection.Connection` object.  The
+``identity`` member will only be added if the service is detected.
+
+Credential Operations
+^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v3._proxy.Proxy
+  :noindex:
+  :members: create_credential, update_credential, delete_credential,
+            get_credential, find_credential, credentials
+
+Domain Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v3._proxy.Proxy
+  :noindex:
+  :members: create_domain, update_domain, delete_domain, get_domain,
+            find_domain, domains
+
+Domain Config Operations
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v3._proxy.Proxy
+  :noindex:
+  :members: create_domain_config, delete_domain_config, get_domain_config,
+            update_domain_config
+
+Endpoint Operations
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v3._proxy.Proxy
+  :noindex:
+  :members: create_endpoint, update_endpoint, delete_endpoint, get_endpoint,
+            find_endpoint, endpoints
+
+Group Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v3._proxy.Proxy
+  :noindex:
+  :members: create_group, update_group, delete_group, get_group, find_group,
+            groups, add_user_to_group, remove_user_from_group,
+            check_user_in_group, group_users
+
+Policy Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v3._proxy.Proxy
+  :noindex:
+  :members: create_policy, update_policy, delete_policy, get_policy,
+            find_policy, policies
+
+Project Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v3._proxy.Proxy
+  :noindex:
+  :members: create_project, update_project, delete_project, get_project,
+            find_project, projects
+
+Region Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v3._proxy.Proxy
+  :noindex:
+  :members: create_region, update_region, delete_region, get_region,
+            find_region, regions
+
+Role Operations
+^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v3._proxy.Proxy
+  :noindex:
+  :members: create_role, update_role, delete_role, get_role, find_role, roles
+
+Role Assignment Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v3._proxy.Proxy
+  :noindex:
+  :members: role_assignments, role_assignments_filter,
+            assign_project_role_to_user, unassign_project_role_from_user,
+            validate_user_has_project_role, assign_project_role_to_group,
+            unassign_project_role_from_group, validate_group_has_project_role,
+            assign_domain_role_to_user, unassign_domain_role_from_user,
+            validate_user_has_domain_role, assign_domain_role_to_group,
+            unassign_domain_role_from_group, validate_group_has_domain_role,
+            assign_system_role_to_user, unassign_system_role_from_user,
+            validate_user_has_system_role, assign_system_role_to_group,
+            unassign_system_role_from_group, validate_group_has_system_role
+
+Service Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v3._proxy.Proxy
+  :noindex:
+  :members: create_service, update_service, delete_service, get_service,
+            find_service, services
+
+Trust Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v3._proxy.Proxy
+  :noindex:
+  :members: create_trust, delete_trust, get_trust, find_trust, trusts
+
+User Operations
+^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.identity.v3._proxy.Proxy
+  :noindex:
+  :members: create_user, update_user, delete_user, get_user, find_user, users,
+            user_projects
diff --git a/doc/source/user/proxies/image_v1.rst b/doc/source/user/proxies/image_v1.rst
new file mode 100644
index 0000000..10911a3
--- /dev/null
+++ b/doc/source/user/proxies/image_v1.rst
@@ -0,0 +1,18 @@
+Image API v1
+============
+
+For details on how to use image, see :doc:`/user/guides/image`
+
+.. automodule:: openstack.image.v1._proxy
+
+The Image v1 Class
+------------------
+
+The image high-level interface is available through the ``image`` member of a
+:class:`~openstack.connection.Connection` object.  The ``image`` member will
+only be added if the service is detected.
+
+.. autoclass:: openstack.image.v1._proxy.Proxy
+  :noindex:
+  :members: upload_image, update_image, delete_image, get_image, find_image,
+            images
diff --git a/doc/source/user/proxies/image_v2.rst b/doc/source/user/proxies/image_v2.rst
new file mode 100644
index 0000000..e0b5cae
--- /dev/null
+++ b/doc/source/user/proxies/image_v2.rst
@@ -0,0 +1,110 @@
+Image API v2
+============
+
+For details on how to use image, see :doc:`/user/guides/image`
+
+.. automodule:: openstack.image.v2._proxy
+
+The Image v2 Class
+------------------
+
+The image high-level interface is available through the ``image`` member of a
+:class:`~openstack.connection.Connection` object.  The ``image`` member will
+only be added if the service is detected.
+
+Image Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.image.v2._proxy.Proxy
+  :noindex:
+  :members: create_image, import_image, upload_image, download_image,
+            update_image, delete_image, get_image, find_image, images,
+            deactivate_image, reactivate_image, stage_image,
+            add_tag, remove_tag
+
+Member Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.image.v2._proxy.Proxy
+  :noindex:
+  :members: add_member, remove_member, update_member, get_member, find_member,
+            members
+
+Task Operations
+^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.image.v2._proxy.Proxy
+  :noindex:
+  :members: tasks, create_task, get_task, wait_for_task
+
+Schema Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.image.v2._proxy.Proxy
+  :noindex:
+  :members: get_images_schema, get_image_schema, get_members_schema,
+            get_member_schema, get_tasks_schema, get_task_schema,
+            get_metadef_namespace_schema, get_metadef_namespaces_schema,
+            get_metadef_resource_type_schema, get_metadef_resource_types_schema,
+            get_metadef_object_schema, get_metadef_objects_schema,
+            get_metadef_property_schema, get_metadef_properties_schema,
+            get_metadef_tag_schema, get_metadef_tags_schema
+
+Service Info Discovery Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.image.v2._proxy.Proxy
+  :noindex:
+  :members: stores, get_import_info
+
+
+Metadef Namespace Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.image.v2._proxy.Proxy
+  :noindex:
+  :members: create_metadef_namespace, delete_metadef_namespace,
+            get_metadef_namespace, metadef_namespaces, update_metadef_namespace
+
+
+Metadef Object Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.image.v2._proxy.Proxy
+  :noindex:
+  :members: create_metadef_object, delete_metadef_object,
+            get_metadef_object, metadef_objects, update_metadef_object
+
+Metadef Resource Type Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.image.v2._proxy.Proxy
+  :noindex:
+  :members: metadef_resource_types, metadef_resource_type_associations,
+            create_metadef_resource_type_association,
+            delete_metadef_resource_type_association
+
+
+Metadef Property Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.image.v2._proxy.Proxy
+  :noindex:
+  :members: create_metadef_property, update_metadef_property,
+            delete_metadef_property, get_metadef_property
+
+
+Helpers
+^^^^^^^
+
+.. autoclass:: openstack.image.v2._proxy.Proxy
+   :noindex:
+   :members: wait_for_delete
+
+
+Cache Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.image.v2._proxy.Proxy
+   :noindex:
+   :members: cache_delete_image, queue_image, get_image_cache, clear_cache
diff --git a/doc/source/user/proxies/key_manager.rst b/doc/source/user/proxies/key_manager.rst
new file mode 100644
index 0000000..2b611e9
--- /dev/null
+++ b/doc/source/user/proxies/key_manager.rst
@@ -0,0 +1,39 @@
+KeyManager API
+==============
+
+For details on how to use key_management, see
+:doc:`/user/guides/key_manager`
+
+.. automodule:: openstack.key_manager.v1._proxy
+
+The KeyManager Class
+--------------------
+
+The key_management high-level interface is available through the
+``key_manager`` member of a :class:`~openstack.connection.Connection`
+object.  The ``key_manager`` member will only be added if the service is
+detected.
+
+Secret Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.key_manager.v1._proxy.Proxy
+  :noindex:
+  :members: create_secret, update_secret, delete_secret, get_secret,
+            find_secret, secrets
+
+Container Operations
+^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.key_manager.v1._proxy.Proxy
+  :noindex:
+  :members: create_container, update_container, delete_container,
+            get_container, find_container, containers
+
+Order Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.key_manager.v1._proxy.Proxy
+  :noindex:
+  :members: create_order, update_order, delete_order, get_order,
+            find_order, orders
diff --git a/doc/source/user/proxies/load_balancer_v2.rst b/doc/source/user/proxies/load_balancer_v2.rst
new file mode 100644
index 0000000..711d803
--- /dev/null
+++ b/doc/source/user/proxies/load_balancer_v2.rst
@@ -0,0 +1,123 @@
+Load Balancer v2 API
+====================
+
+.. automodule:: openstack.load_balancer.v2._proxy
+
+The LoadBalancer Class
+----------------------
+
+The load_balancer high-level interface is available through the
+``load_balancer`` member of a :class:`~openstack.connection.Connection` object.
+The ``load_balancer`` member will only be added if the service is detected.
+
+Load Balancer Operations
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.load_balancer.v2._proxy.Proxy
+  :noindex:
+  :members: create_load_balancer, delete_load_balancer, find_load_balancer,
+            get_load_balancer, get_load_balancer_statistics, load_balancers,
+            update_load_balancer, failover_load_balancer, wait_for_load_balancer
+
+Listener Operations
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.load_balancer.v2._proxy.Proxy
+  :noindex:
+  :members: create_listener, delete_listener, find_listener, get_listener,
+            get_listener_statistics, listeners, update_listener
+
+Pool Operations
+^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.load_balancer.v2._proxy.Proxy
+  :noindex:
+  :members: create_pool, delete_pool, find_pool, get_pool, pools, update_pool
+
+Member Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.load_balancer.v2._proxy.Proxy
+  :noindex:
+  :members: create_member, delete_member, find_member, get_member, members,
+            update_member
+
+Health Monitor Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.load_balancer.v2._proxy.Proxy
+  :noindex:
+  :members: create_health_monitor, delete_health_monitor, find_health_monitor,
+            get_health_monitor, health_monitors, update_health_monitor
+
+L7 Policy Operations
+^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.load_balancer.v2._proxy.Proxy
+  :noindex:
+  :members: create_l7_policy, delete_l7_policy, find_l7_policy,
+            get_l7_policy, l7_policies, update_l7_policy
+
+L7 Rule Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.load_balancer.v2._proxy.Proxy
+  :noindex:
+  :members: create_l7_rule, delete_l7_rule, find_l7_rule,
+            get_l7_rule, l7_rules, update_l7_rule
+
+Provider Operations
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.load_balancer.v2._proxy.Proxy
+  :noindex:
+  :members: providers, provider_flavor_capabilities
+
+Flavor Profile Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.load_balancer.v2._proxy.Proxy
+  :noindex:
+  :members: create_flavor_profile, get_flavor_profile, flavor_profiles,
+            delete_flavor_profile, find_flavor_profile, update_flavor_profile
+
+Flavor Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.load_balancer.v2._proxy.Proxy
+  :noindex:
+  :members: create_flavor, get_flavor, flavors, delete_flavor,
+            find_flavor, update_flavor
+
+Quota Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.load_balancer.v2._proxy.Proxy
+  :noindex:
+  :members: update_quota, delete_quota, quotas, get_quota, get_quota_default
+
+Amphora Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.load_balancer.v2._proxy.Proxy
+  :noindex:
+  :members: amphorae, get_amphora, find_amphora, configure_amphora,
+            failover_amphora
+
+Availability Zone Profile Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.load_balancer.v2._proxy.Proxy
+  :noindex:
+  :members: create_availability_zone_profile, get_availability_zone_profile,
+            availability_zone_profiles, delete_availability_zone_profile,
+            find_availability_zone_profile, update_availability_zone_profile
+
+Availability Zone Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.load_balancer.v2._proxy.Proxy
+  :noindex:
+  :members: create_availability_zone, get_availability_zone,
+            availability_zones, delete_availability_zone,
+            find_availability_zone, update_availability_zone
diff --git a/doc/source/user/proxies/message_v2.rst b/doc/source/user/proxies/message_v2.rst
new file mode 100644
index 0000000..361842c
--- /dev/null
+++ b/doc/source/user/proxies/message_v2.rst
@@ -0,0 +1,42 @@
+Message API v2
+==============
+
+For details on how to use message, see :doc:`/user/guides/message`
+
+.. automodule:: openstack.message.v2._proxy
+
+The Message v2 Class
+--------------------
+
+The message high-level interface is available through the ``message`` member
+of a :class:`~openstack.connection.Connection` object.  The ``message``
+member will only be added if the service is detected.
+
+Message Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.message.v2._proxy.Proxy
+  :noindex:
+  :members: post_message, delete_message, get_message, messages
+
+Queue Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.message.v2._proxy.Proxy
+  :noindex:
+  :members: create_queue, delete_queue, get_queue, queues
+
+Claim Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.message.v2._proxy.Proxy
+  :noindex:
+  :members: create_claim, update_claim, delete_claim, get_claim
+
+Subscription Operations
+^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.message.v2._proxy.Proxy
+  :noindex:
+  :members: create_subscription, delete_subscription, get_subscription,
+            subscriptions
diff --git a/doc/source/user/proxies/network.rst b/doc/source/user/proxies/network.rst
new file mode 100644
index 0000000..a742f99
--- /dev/null
+++ b/doc/source/user/proxies/network.rst
@@ -0,0 +1,359 @@
+Network API
+===========
+
+For details on how to use network, see :doc:`/user/guides/network`
+
+.. automodule:: openstack.network.v2._proxy
+
+The Network Class
+-----------------
+
+The network high-level interface is available through the ``network``
+member of a :class:`~openstack.connection.Connection` object.  The
+``network`` member will only be added if the service is detected.
+
+Network Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_network, update_network, delete_network, get_network,
+            find_network, networks, get_network_ip_availability,
+            find_network_ip_availability, network_ip_availabilities,
+            add_dhcp_agent_to_network, remove_dhcp_agent_from_network,
+            dhcp_agent_hosting_networks,
+
+Port Operations
+^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_port, create_ports, update_port, delete_port, get_port,
+            find_port, ports, add_ip_to_port, remove_ip_from_port
+
+Router Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_router, update_router, delete_router, get_router,
+            find_router, routers,
+            add_gateway_to_router, remove_gateway_from_router,
+            add_external_gateways, update_external_gateways,
+            remove_external_gateways,
+            add_interface_to_router, remove_interface_from_router,
+            add_extra_routes_to_router, remove_extra_routes_from_router,
+            create_conntrack_helper, update_conntrack_helper,
+            delete_conntrack_helper, get_conntrack_helper, conntrack_helpers
+
+
+
+Floating IP Operations
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_ip, update_ip, delete_ip, get_ip, find_ip,
+            find_available_ip, ips
+
+Pool Operations
+^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_pool, update_pool, delete_pool, get_pool, find_pool, pools,
+            create_pool_member, update_pool_member, delete_pool_member,
+            get_pool_member, find_pool_member, pool_members
+
+Auto Allocated Topology Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: delete_auto_allocated_topology, get_auto_allocated_topology,
+            validate_auto_allocated_topology
+
+Default Security Group Rules Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_default_security_group_rule,
+            find_default_security_group_rule, get_default_security_group_rule,
+            delete_default_security_group_rule, default_security_group_rules
+
+Security Group Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_security_group, update_security_group,
+            delete_security_group, get_security_group,
+            get_security_group_rule, find_security_group,
+            find_security_group_rule, security_group_rules,
+            security_groups, create_security_group_rule,
+            create_security_group_rules, delete_security_group_rule
+
+Address Group Operations
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_address_group, delete_address_group, find_address_group,
+            get_address_group, address_groups, update_address_group,
+            add_addresses_to_address_group, remove_addresses_from_address_group
+
+Availability Zone Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: availability_zones
+
+Address Scope Operations
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_address_scope, update_address_scope, delete_address_scope,
+            get_address_scope, find_address_scope, address_scopes
+
+Quota Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: update_quota, delete_quota, get_quota, get_quota_default, quotas
+
+QoS Operations
+^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_qos_policy, update_qos_policy, delete_qos_policy,
+            get_qos_policy, find_qos_policy, qos_policies, get_qos_rule_type,
+            find_qos_rule_type, qos_rule_types,
+            create_qos_minimum_bandwidth_rule,
+            update_qos_minimum_bandwidth_rule,
+            delete_qos_minimum_bandwidth_rule,
+            get_qos_minimum_bandwidth_rule,
+            find_qos_minimum_bandwidth_rule,
+            qos_minimum_bandwidth_rules,
+            create_qos_minimum_packet_rate_rule,
+            update_qos_minimum_packet_rate_rule,
+            delete_qos_minimum_packet_rate_rule,
+            get_qos_minimum_packet_rate_rule,
+            find_qos_minimum_packet_rate_rule,
+            qos_minimum_packet_rate_rules,
+            create_qos_bandwidth_limit_rule,
+            update_qos_bandwidth_limit_rule,
+            delete_qos_bandwidth_limit_rule,
+            get_qos_bandwidth_limit_rule, find_qos_bandwidth_limit_rule,
+            qos_bandwidth_limit_rules,
+            create_qos_dscp_marking_rule, update_qos_dscp_marking_rule,
+            delete_qos_dscp_marking_rule, get_qos_dscp_marking_rule,
+            find_qos_dscp_marking_rule, qos_dscp_marking_rules
+
+Agent Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: delete_agent, update_agent, get_agent, agents,
+            agent_hosted_routers, routers_hosting_l3_agents,
+            network_hosting_dhcp_agents, add_router_to_agent,
+            remove_router_from_agent
+
+RBAC Operations
+^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_rbac_policy, update_rbac_policy, delete_rbac_policy,
+            get_rbac_policy, find_rbac_policy, rbac_policies
+
+Listener Operations
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_listener, update_listener, delete_listener,
+            get_listener, find_listener, listeners
+
+Subnet Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_subnet, update_subnet, delete_subnet, get_subnet,
+            get_subnet_ports, find_subnet, subnets, create_subnet_pool,
+            update_subnet_pool, delete_subnet_pool, get_subnet_pool,
+            find_subnet_pool, subnet_pools
+
+Load Balancer Operations
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_load_balancer, update_load_balancer, delete_load_balancer,
+            get_load_balancer, find_load_balancer, load_balancers
+
+Health Monitor Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_health_monitor, update_health_monitor,
+            delete_health_monitor, get_health_monitor, find_health_monitor,
+            health_monitors
+
+Metering Label Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_metering_label, update_metering_label,
+            delete_metering_label, get_metering_label, find_metering_label,
+            metering_labels, create_metering_label_rule,
+            update_metering_label_rule, delete_metering_label_rule,
+            get_metering_label_rule, find_metering_label_rule,
+            metering_label_rules
+
+Segment Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_segment, update_segment, delete_segment, get_segment,
+            find_segment, segments
+
+Flavor Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_flavor, update_flavor, delete_flavor, get_flavor,
+            find_flavor, flavors
+
+Service Profile Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_service_profile, update_service_profile,
+            delete_service_profile, get_service_profile, find_service_profile,
+            service_profiles, associate_flavor_with_service_profile,
+            disassociate_flavor_from_service_profile
+
+Tag Operations
+^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: set_tags
+
+VPNaaS Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_vpn_service, update_vpn_service, delete_vpn_service,
+   get_vpn_service, find_vpn_service, vpn_services, create_vpn_endpoint_group,
+   update_vpn_endpoint_group, delete_vpn_endpoint_group,
+   get_vpn_endpoint_group, find_vpn_endpoint_group, vpn_endpoint_groups,
+   create_vpn_ipsec_site_connection, update_vpn_ipsec_site_connection,
+   delete_vpn_ipsec_site_connection, get_vpn_ipsec_site_connection,
+   find_vpn_ipsec_site_connection, vpn_ipsec_site_connections,
+   create_vpn_ike_policy, update_vpn_ike_policy, delete_vpn_ike_policy,
+   get_vpn_ike_policy, find_vpn_ike_policy, vpn_ike_policies,
+   create_vpn_ipsec_policy, update_vpn_ipsec_policy, delete_vpn_ipsec_policy,
+   get_vpn_ipsec_policy, find_vpn_ipsec_policy, vpn_ipsec_policies
+
+Extension Operations
+^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: find_extension, extensions
+
+Service Provider Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: service_providers
+
+Local IP Operations
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_local_ip, delete_local_ip, find_local_ip, get_local_ip,
+            local_ips, update_local_ip, create_local_ip_association,
+            delete_local_ip_association, find_local_ip_association,
+            get_local_ip_association, local_ip_associations
+
+Ndp Proxy Operations
+^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_ndp_proxy, get_ndp_proxy, find_ndp_proxy, delete_ndp_proxy,
+            ndp_proxies, update_ndp_proxy
+
+BGP Operations
+^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_bgp_peer, delete_bgp_peer, find_bgp_peer, get_bgp_peer,
+            update_bgp_peer, bgp_peers, create_bgp_speaker,
+            delete_bgp_speaker, find_bgp_speaker, get_bgp_speaker,
+            update_bgp_speaker, bgp_speakers, add_bgp_peer_to_speaker,
+            remove_bgp_peer_from_speaker, add_gateway_network_to_speaker,
+            remove_gateway_network_from_speaker,
+            get_advertised_routes_of_speaker,
+            get_bgp_dragents_hosting_speaker, add_bgp_speaker_to_dragent,
+            get_bgp_speakers_hosted_by_dragent,
+            remove_bgp_speaker_from_dragent
+
+Tap As A Service Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_tap_flow, delete_tap_flow, find_tap_flow, get_tap_flow,
+            update_tap_flow, tap_flows, create_tap_service, delete_tap_service,
+            find_tap_service, update_tap_service, tap_services
+
+BGPVPN operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_bgpvpn, delete_bgpvpn, find_bgpvpn, get_bgpvpn,
+            update_bgpvpn, bgpvpns, create_bgpvpn_network_association,
+            delete_bgpvpn_network_association, get_bgpvpn_network_association,
+            bgpvpn_network_associations, create_bgpvpn_port_association,
+            delete_bgpvpn_port_association, find_bgpvpn_port_association,
+            get_bgpvpn_port_association, update_bgpvpn_port_association,
+            bgpvpn_port_associations, create_bgpvpn_router_association,
+            delete_bgpvpn_router_association, get_bgpvpn_router_association,
+            update_bgpvpn_router_association, bgpvpn_router_associations
+
+SFC operations
+^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.network.v2._proxy.Proxy
+  :noindex:
+  :members: create_sfc_flow_classifier, delete_sfc_flow_classifier,
+            find_sfc_flow_classifier, get_sfc_flow_classifier,
+            update_sfc_flow_classifier, create_sfc_port_chain,
+            delete_sfc_port_chain, find_sfc_port_chain, get_sfc_port_chain,
+            update_sfc_port_chain, create_sfc_port_pair, delete_sfc_port_pair,
+            find_sfc_port_pair, get_sfc_port_pair, update_sfc_port_pair,
+            create_sfc_port_pair_group, delete_sfc_port_pair_group,
+            find_sfc_port_pair_group, get_sfc_port_pair_group,
+            update_sfc_port_pair_group, create_sfc_service_graph,
+            delete_sfc_service_graph, find_sfc_service_graph,
+            get_sfc_service_graph, update_sfc_service_graph
diff --git a/doc/source/user/proxies/object_store.rst b/doc/source/user/proxies/object_store.rst
new file mode 100644
index 0000000..fa286d8
--- /dev/null
+++ b/doc/source/user/proxies/object_store.rst
@@ -0,0 +1,37 @@
+Object Store API
+================
+
+For details on how to use this API, see :doc:`/user/guides/object_store`
+
+.. automodule:: openstack.object_store.v1._proxy
+
+The Object Store Class
+----------------------
+
+The Object Store high-level interface is exposed as the ``object_store``
+object on :class:`~openstack.connection.Connection` objects.
+
+Account Operations
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.object_store.v1._proxy.Proxy
+  :noindex:
+  :members: get_account_metadata, set_account_metadata, delete_account_metadata
+
+Container Operations
+^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.object_store.v1._proxy.Proxy
+  :noindex:
+  :members: create_container, delete_container, containers,
+            get_container_metadata, set_container_metadata,
+            delete_container_metadata
+
+Object Operations
+^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.object_store.v1._proxy.Proxy
+  :noindex:
+  :members: upload_object, download_object, copy_object, delete_object,
+            get_object, objects, get_object_metadata, set_object_metadata,
+            delete_object_metadata
diff --git a/doc/source/user/proxies/orchestration.rst b/doc/source/user/proxies/orchestration.rst
new file mode 100644
index 0000000..c9f3fa4
--- /dev/null
+++ b/doc/source/user/proxies/orchestration.rst
@@ -0,0 +1,48 @@
+Orchestration API
+=================
+
+For details on how to use orchestration, see :doc:`/user/guides/orchestration`
+
+.. automodule:: openstack.orchestration.v1._proxy
+
+The Orchestration Class
+-----------------------
+
+The orchestration high-level interface is available through the
+``orchestration`` member of a :class:`~openstack.connection.Connection`
+object.  The ``orchestration`` member will only be added if the service
+is detected.
+
+Stack Operations
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.orchestration.v1._proxy.Proxy
+  :noindex:
+  :members: create_stack, check_stack, update_stack, delete_stack, find_stack, suspend_stack, resume_stack,
+            get_stack, get_stack_environment, get_stack_files,
+            get_stack_template, stacks, validate_template, resources,
+            export_stack
+
+Stack Event Operations
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.orchestration.v1._proxy.Proxy
+  :noindex:
+  :members: stack_events
+
+Software Configuration Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.orchestration.v1._proxy.Proxy
+  :noindex:
+  :members: create_software_config, delete_software_config,
+            get_software_config, software_configs
+
+Software Deployment Operations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.orchestration.v1._proxy.Proxy
+  :noindex:
+  :members: create_software_deployment, update_software_deployment,
+            delete_software_deployment, get_software_deployment,
+            software_deployments
diff --git a/doc/source/user/proxies/placement.rst b/doc/source/user/proxies/placement.rst
new file mode 100644
index 0000000..864b412
--- /dev/null
+++ b/doc/source/user/proxies/placement.rst
@@ -0,0 +1,49 @@
+Placement API
+=============
+
+.. automodule:: openstack.placement.v1._proxy
+
+The Placement Class
+-------------------
+
+The placement high-level interface is available through the ``placement``
+member of a :class:`~openstack.connection.Connection` object.
+The ``placement`` member will only be added if the service is detected.
+
+Resource Classes
+^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.placement.v1._proxy.Proxy
+   :noindex:
+   :members: create_resource_class, update_resource_class,
+             delete_resource_class, get_resource_class,
+             resource_classes
+
+Resource Providers
+^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.placement.v1._proxy.Proxy
+   :noindex:
+   :members: create_resource_provider, update_resource_provider,
+             delete_resource_provider, get_resource_provider,
+             find_resource_provider, resource_providers,
+             get_resource_provider_aggregates,
+             set_resource_provider_aggregates
+
+Resource Provider Inventories
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.placement.v1._proxy.Proxy
+   :noindex:
+   :members: create_resource_provider_inventory,
+             update_resource_provider_inventory,
+             delete_resource_provider_inventory,
+             get_resource_provider_inventory,
+             resource_provider_inventories
+
+Traits
+^^^^^^
+
+.. autoclass:: openstack.placement.v1._proxy.Proxy
+   :noindex:
+   :members: create_trait, delete_trait, get_trait, traits
diff --git a/doc/source/user/proxies/shared_file_system.rst b/doc/source/user/proxies/shared_file_system.rst
new file mode 100644
index 0000000..2a3a756
--- /dev/null
+++ b/doc/source/user/proxies/shared_file_system.rst
@@ -0,0 +1,194 @@
+Shared File System API
+======================
+
+.. automodule:: openstack.shared_file_system.v2._proxy
+
+The Shared File System Class
+----------------------------
+
+The high-level interface for accessing the shared file systems service API is
+available through the ``shared_file_system`` member of a :class:`~openstack
+.connection.Connection` object. The ``shared_file_system`` member will only
+be added if the service is detected. ``share`` is an alias of the
+``shared_file_system`` member.
+
+
+Shared File System Availability Zones
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Interact with Availability Zones supported by the Shared File Systems
+service.
+
+.. autoclass:: openstack.shared_file_system.v2._proxy.Proxy
+  :noindex:
+  :members: availability_zones
+
+
+Shared File System Shares
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Interact with Shares supported by the Shared File Systems
+service.
+
+.. autoclass:: openstack.shared_file_system.v2._proxy.Proxy
+  :noindex:
+  :members: shares, get_share, delete_share, update_share, create_share,
+            revert_share_to_snapshot, resize_share, find_share, manage_share,
+            unmanage_share
+
+
+Shared File System Storage Pools
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Interact with the storage pool statistics exposed by the Shared File
+Systems Service.
+
+.. autoclass:: openstack.shared_file_system.v2._proxy.Proxy
+  :noindex:
+  :members: storage_pools
+
+
+Shared File System User Messages
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+View and manipulate asynchronous user messages emitted by the Shared
+File Systems service.
+
+.. autoclass:: openstack.shared_file_system.v2._proxy.Proxy
+  :noindex:
+  :members: user_messages, get_user_message, delete_user_message
+
+
+Shared File System Limits
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Get absolute limits of resources supported by the Shared File Systems
+service.
+
+.. autoclass:: openstack.shared_file_system.v2._proxy.Proxy
+  :noindex:
+  :members: limits
+
+
+Shared File System Snapshots
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Interact with Share Snapshots supported by the Shared File Systems
+service.
+
+.. autoclass:: openstack.shared_file_system.v2._proxy.Proxy
+  :noindex:
+  :members: share_snapshots, get_share_snapshot, delete_share_snapshot,
+            update_share_snapshot, create_share_snapshot
+
+Shared File System Share Snapshot Instances
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Interact with Share Snapshot Instances supported by the
+Shared File Systems service.
+
+.. autoclass:: openstack.shared_file_system.v2._proxy.Proxy
+  :noindex:
+  :members: share_snapshot_instances, get_share_snapshot_instance
+
+
+Shared File System Share Networks
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Create and manipulate Share Networks with the Shared File Systems service.
+
+.. autoclass:: openstack.shared_file_system.v2._proxy.Proxy
+  :noindex:
+  :members: share_networks, get_share_network, delete_share_network,
+            update_share_network, create_share_network
+
+
+Shared File System Share Instances
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Administrators can list, show information for, explicitly set the
+state of, and force-delete share instances within the Shared File
+Systems Service.
+
+.. autoclass:: openstack.shared_file_system.v2._proxy.Proxy
+  :noindex:
+  :members: share_instances, get_share_instance,
+            reset_share_instance_status,
+            delete_share_instance
+
+
+Shared File System Share Network Subnets
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Create and manipulate Share Network Subnets with the Shared File Systems
+service.
+
+.. autoclass:: openstack.shared_file_system.v2._proxy.Proxy
+  :noindex:
+  :members: share_network_subnets, get_share_network_subnet,
+            create_share_network_subnet, delete_share_network_subnet
+
+
+Shared File System Share Access Rules
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Create, View, and Delete access rules for shares from the
+Shared File Systems service. Access rules can also have their deletion
+and visibility restricted during creation. A lock reason can also be
+specified. The deletion restriction can be removed during the access removal.
+
+.. autoclass:: openstack.shared_file_system.v2._proxy.Proxy
+  :noindex:
+  :members: access_rules, get_access_rule, create_access_rule,
+            delete_access_rule
+
+
+Shared File System Share Groups
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Interact with Share groups supported by the Shared File Systems
+service.
+
+.. autoclass:: openstack.shared_file_system.v2._proxy.Proxy
+  :noindex:
+  :members: share_groups, get_share_group, delete_share_group,
+            update_share_group, create_share_group, find_share_group
+
+
+Shared File System Share Group Snapshots
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Interact with Share Group Snapshots by the Shared File Systems
+service.
+
+.. autoclass:: openstack.shared_file_system.v2._proxy.Proxy
+  :noindex:
+  :members: share_group_snapshots, get_share_group_snapshot, create_share_group_snapshot,
+            reset_share_group_snapshot_status, update_share_group_snapshot,
+            delete_share_group_snapshot
+
+
+Shared File System Share Metadata
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+List, Get, Create, Update, and Delete metadata for shares from the
+Shared File Systems service.
+
+.. autoclass:: openstack.shared_file_system.v2._proxy.Proxy
+  :noindex:
+  :members: get_share_metadata, get_share_metadata_item,
+            create_share_metadata, update_share_metadata,
+            delete_share_metadata
+
+
+Shared File System Resource Locks
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Create, list, update and delete locks for resources. When a resource is
+locked, it means that it can be deleted only by services, admins or
+the user that created the lock.
+
+.. autoclass:: openstack.shared_file_system.v2._proxy.Proxy
+  :noindex:
+  :members: resource_locks, get_resource_lock, update_resource_lock,
+            delete_resource_lock, create_resource_lock
diff --git a/doc/source/user/proxies/workflow.rst b/doc/source/user/proxies/workflow.rst
new file mode 100644
index 0000000..f47baa5
--- /dev/null
+++ b/doc/source/user/proxies/workflow.rst
@@ -0,0 +1,35 @@
+Workflow API
+============
+
+.. automodule:: openstack.workflow.v2._proxy
+
+The Workflow Class
+------------------
+
+The workflow high-level interface is available through the ``workflow``
+member of a :class:`~openstack.connection.Connection` object.
+The ``workflow`` member will only be added if the service is detected.
+
+Workflow Operations
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.workflow.v2._proxy.Proxy
+  :noindex:
+  :members: create_workflow, update_workflow, delete_workflow,
+            get_workflow, find_workflow, workflows
+
+Execution Operations
+^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.workflow.v2._proxy.Proxy
+  :noindex:
+  :members: create_execution, delete_execution, get_execution,
+            find_execution, executions
+
+Cron Trigger Operations
+^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openstack.workflow.v2._proxy.Proxy
+  :noindex:
+  :members: create_cron_trigger, delete_cron_trigger, get_cron_trigger,
+            find_cron_trigger, cron_triggers
diff --git a/doc/source/user/resource.rst b/doc/source/user/resource.rst
new file mode 100644
index 0000000..c7b5ae2
--- /dev/null
+++ b/doc/source/user/resource.rst
@@ -0,0 +1,22 @@
+Resource
+========
+.. automodule:: openstack.resource
+
+Components
+----------
+
+.. autoclass:: openstack.resource.Body
+   :members:
+
+.. autoclass:: openstack.resource.Header
+   :members:
+
+.. autoclass:: openstack.resource.URI
+   :members:
+
+The Resource class
+------------------
+
+.. autoclass:: openstack.resource.Resource
+   :members:
+   :member-order: bysource
diff --git a/doc/source/user/resources/accelerator/index.rst b/doc/source/user/resources/accelerator/index.rst
new file mode 100644
index 0000000..5e09cf6
--- /dev/null
+++ b/doc/source/user/resources/accelerator/index.rst
@@ -0,0 +1,11 @@
+Accelerator v2 Resources
+========================
+
+.. toctree::
+   :maxdepth: 1
+
+   v2/device
+   v2/deployable
+   v2/device_profile
+   v2/accelerator_request
+
diff --git a/doc/source/user/resources/accelerator/v2/accelerator_request.rst b/doc/source/user/resources/accelerator/v2/accelerator_request.rst
new file mode 100644
index 0000000..1725114
--- /dev/null
+++ b/doc/source/user/resources/accelerator/v2/accelerator_request.rst
@@ -0,0 +1,13 @@
+openstack.accelerator.v2.accelerator_request
+============================================
+
+.. automodule:: openstack.accelerator.v2.accelerator_request
+
+The AcceleratorRequest Class
+----------------------------
+
+The ``AcceleratorRequest`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.accelerator.v2.accelerator_request.AcceleratorRequest
+   :members:
diff --git a/doc/source/user/resources/accelerator/v2/deployable.rst b/doc/source/user/resources/accelerator/v2/deployable.rst
new file mode 100644
index 0000000..383795c
--- /dev/null
+++ b/doc/source/user/resources/accelerator/v2/deployable.rst
@@ -0,0 +1,13 @@
+openstack.accelerator.v2.deployable
+============================================
+
+.. automodule:: openstack.accelerator.v2.deployable
+
+The Deployable Class
+--------------------
+
+The ``Deployable`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.accelerator.v2.deployable.Deployable
+   :members:
+
diff --git a/doc/source/user/resources/accelerator/v2/device.rst b/doc/source/user/resources/accelerator/v2/device.rst
new file mode 100644
index 0000000..9437435
--- /dev/null
+++ b/doc/source/user/resources/accelerator/v2/device.rst
@@ -0,0 +1,13 @@
+openstack.accelerator.v2.device
+============================================
+
+.. automodule:: openstack.accelerator.v2.device
+
+The Device Class
+--------------------
+
+The ``Device`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.accelerator.v2.device.Device
+   :members:
+
diff --git a/doc/source/user/resources/accelerator/v2/device_profile.rst b/doc/source/user/resources/accelerator/v2/device_profile.rst
new file mode 100644
index 0000000..9849c78
--- /dev/null
+++ b/doc/source/user/resources/accelerator/v2/device_profile.rst
@@ -0,0 +1,14 @@
+openstack.accelerator.v2.device_profile
+============================================
+
+.. automodule:: openstack.accelerator.v2.device_profile
+
+The DeviceProfile Class
+-----------------------
+
+The ``DeviceProfile`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.accelerator.v2.device_profile.DeviceProfile
+   :members:
+
diff --git a/doc/source/user/resources/baremetal/index.rst b/doc/source/user/resources/baremetal/index.rst
new file mode 100644
index 0000000..1fabe14
--- /dev/null
+++ b/doc/source/user/resources/baremetal/index.rst
@@ -0,0 +1,16 @@
+Baremetal Resources
+===================
+
+.. toctree::
+   :maxdepth: 1
+
+   v1/driver
+   v1/chassis
+   v1/node
+   v1/port
+   v1/port_group
+   v1/allocation
+   v1/volume_connector
+   v1/volume_target
+   v1/deploy_templates
+   v1/conductor
diff --git a/doc/source/user/resources/baremetal/v1/allocation.rst b/doc/source/user/resources/baremetal/v1/allocation.rst
new file mode 100644
index 0000000..0135180
--- /dev/null
+++ b/doc/source/user/resources/baremetal/v1/allocation.rst
@@ -0,0 +1,12 @@
+openstack.baremetal.v1.Allocation
+=================================
+
+.. automodule:: openstack.baremetal.v1.allocation
+
+The Allocation Class
+--------------------
+
+The ``Allocation`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.baremetal.v1.allocation.Allocation
+   :members:
diff --git a/doc/source/user/resources/baremetal/v1/chassis.rst b/doc/source/user/resources/baremetal/v1/chassis.rst
new file mode 100644
index 0000000..87a6063
--- /dev/null
+++ b/doc/source/user/resources/baremetal/v1/chassis.rst
@@ -0,0 +1,12 @@
+openstack.baremetal.v1.chassis
+==============================
+
+.. automodule:: openstack.baremetal.v1.chassis
+
+The Chassis Class
+-----------------
+
+The ``Chassis`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.baremetal.v1.chassis.Chassis
+   :members:
diff --git a/doc/source/user/resources/baremetal/v1/conductor.rst b/doc/source/user/resources/baremetal/v1/conductor.rst
new file mode 100644
index 0000000..9e1bd11
--- /dev/null
+++ b/doc/source/user/resources/baremetal/v1/conductor.rst
@@ -0,0 +1,13 @@
+openstack.baremetal.v1.conductor
+================================
+
+.. automodule:: openstack.baremetal.v1.conductor
+
+The Conductor Class
+-------------------
+
+The ``Conductor`` class inherits
+from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.baremetal.v1.conductor.Conductor
+   :members:
diff --git a/doc/source/user/resources/baremetal/v1/deploy_templates.rst b/doc/source/user/resources/baremetal/v1/deploy_templates.rst
new file mode 100644
index 0000000..e55e63a
--- /dev/null
+++ b/doc/source/user/resources/baremetal/v1/deploy_templates.rst
@@ -0,0 +1,13 @@
+openstack.baremetal.v1.deploy_templates
+=======================================
+
+.. automodule:: openstack.baremetal.v1.deploy_templates
+
+The DeployTemplate Class
+-------------------------
+
+The ``DeployTemplate`` class inherits
+from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.baremetal.v1.deploy_templates.DeployTemplate
+   :members:
diff --git a/doc/source/user/resources/baremetal/v1/driver.rst b/doc/source/user/resources/baremetal/v1/driver.rst
new file mode 100644
index 0000000..f987d08
--- /dev/null
+++ b/doc/source/user/resources/baremetal/v1/driver.rst
@@ -0,0 +1,12 @@
+openstack.baremetal.v1.driver
+=============================
+
+.. automodule:: openstack.baremetal.v1.driver
+
+The Driver Class
+----------------
+
+The ``Driver`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.baremetal.v1.driver.Driver
+   :members:
diff --git a/doc/source/user/resources/baremetal/v1/node.rst b/doc/source/user/resources/baremetal/v1/node.rst
new file mode 100644
index 0000000..14e691e
--- /dev/null
+++ b/doc/source/user/resources/baremetal/v1/node.rst
@@ -0,0 +1,35 @@
+openstack.baremetal.v1.Node
+===========================
+
+.. automodule:: openstack.baremetal.v1.node
+
+The Node Class
+--------------
+
+The ``Node`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.baremetal.v1.node.Node
+   :members:
+
+The PowerAction Class
+^^^^^^^^^^^^^^^^^^^^^
+
+The ``PowerAction`` enumeration represents known power actions.
+
+.. autoclass:: openstack.baremetal.v1.node.PowerAction
+   :members:
+
+The ValidationResult Class
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The ``ValidationResult`` class represents the result of a validation.
+
+.. autoclass:: openstack.baremetal.v1.node.ValidationResult
+   :members:
+
+The WaitResult Class
+^^^^^^^^^^^^^^^^^^^^
+
+The ``WaitResult`` class represents the result of waiting for several nodes.
+
+.. autoclass:: openstack.baremetal.v1.node.WaitResult
diff --git a/doc/source/user/resources/baremetal/v1/port.rst b/doc/source/user/resources/baremetal/v1/port.rst
new file mode 100644
index 0000000..2bf0e18
--- /dev/null
+++ b/doc/source/user/resources/baremetal/v1/port.rst
@@ -0,0 +1,12 @@
+openstack.baremetal.v1.port
+===========================
+
+.. automodule:: openstack.baremetal.v1.port
+
+The Port Class
+--------------
+
+The ``Port`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.baremetal.v1.port.Port
+   :members:
diff --git a/doc/source/user/resources/baremetal/v1/port_group.rst b/doc/source/user/resources/baremetal/v1/port_group.rst
new file mode 100644
index 0000000..45c2bd9
--- /dev/null
+++ b/doc/source/user/resources/baremetal/v1/port_group.rst
@@ -0,0 +1,12 @@
+openstack.baremetal.v1.port_group
+=================================
+
+.. automodule:: openstack.baremetal.v1.port_group
+
+The PortGroup Class
+-------------------
+
+The ``PortGroup`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.baremetal.v1.port_group.PortGroup
+   :members:
diff --git a/doc/source/user/resources/baremetal/v1/volume_connector.rst b/doc/source/user/resources/baremetal/v1/volume_connector.rst
new file mode 100644
index 0000000..3ffae22
--- /dev/null
+++ b/doc/source/user/resources/baremetal/v1/volume_connector.rst
@@ -0,0 +1,13 @@
+openstack.baremetal.v1.volume_connector
+=======================================
+
+.. automodule:: openstack.baremetal.v1.volume_connector
+
+The VolumeConnector Class
+-------------------------
+
+The ``VolumeConnector`` class inherits
+from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.baremetal.v1.volume_connector.VolumeConnector
+   :members:
diff --git a/doc/source/user/resources/baremetal/v1/volume_target.rst b/doc/source/user/resources/baremetal/v1/volume_target.rst
new file mode 100644
index 0000000..93525a8
--- /dev/null
+++ b/doc/source/user/resources/baremetal/v1/volume_target.rst
@@ -0,0 +1,13 @@
+openstack.baremetal.v1.volume_target
+=======================================
+
+.. automodule:: openstack.baremetal.v1.volume_target
+
+The VolumeTarget Class
+-------------------------
+
+The ``VolumeTarget`` class inherits
+from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.baremetal.v1.volume_target.VolumeTarget
+   :members:
diff --git a/doc/source/user/resources/baremetal_introspection/index.rst b/doc/source/user/resources/baremetal_introspection/index.rst
new file mode 100644
index 0000000..b1da156
--- /dev/null
+++ b/doc/source/user/resources/baremetal_introspection/index.rst
@@ -0,0 +1,8 @@
+Baremetal Introspection Resources
+=================================
+
+.. toctree::
+   :maxdepth: 1
+
+   v1/introspection
+   v1/introspection_rule
diff --git a/doc/source/user/resources/baremetal_introspection/v1/introspection.rst b/doc/source/user/resources/baremetal_introspection/v1/introspection.rst
new file mode 100644
index 0000000..6275e25
--- /dev/null
+++ b/doc/source/user/resources/baremetal_introspection/v1/introspection.rst
@@ -0,0 +1,13 @@
+openstack.baremetal_introspection.v1.Introspection
+==================================================
+
+.. automodule:: openstack.baremetal_introspection.v1.introspection
+
+The Introspection Class
+-----------------------
+
+The ``Introspection`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.baremetal_introspection.v1.introspection.Introspection
+   :members:
diff --git a/doc/source/user/resources/baremetal_introspection/v1/introspection_rule.rst b/doc/source/user/resources/baremetal_introspection/v1/introspection_rule.rst
new file mode 100644
index 0000000..ba8bc28
--- /dev/null
+++ b/doc/source/user/resources/baremetal_introspection/v1/introspection_rule.rst
@@ -0,0 +1,13 @@
+openstack.baremetal_introspection.v1.introspection_rule
+========================================================
+
+.. automodule:: openstack.baremetal_introspection.v1.introspection_rule
+
+The IntrospectionRule Class
+----------------------------
+
+The ``IntrospectionRule`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.baremetal_introspection.v1.introspection_rule.IntrospectionRule
+   :members:
diff --git a/doc/source/user/resources/block_storage/index.rst b/doc/source/user/resources/block_storage/index.rst
new file mode 100644
index 0000000..18c2c98
--- /dev/null
+++ b/doc/source/user/resources/block_storage/index.rst
@@ -0,0 +1,20 @@
+Block Storage Resources
+=======================
+
+Block Storage v2 Resources
+--------------------------
+
+.. toctree::
+   :maxdepth: 1
+   :glob:
+
+   v2/*
+
+Block Storage v3 Resources
+--------------------------
+
+.. toctree::
+   :maxdepth: 1
+   :glob:
+
+   v3/*
diff --git a/doc/source/user/resources/block_storage/v2/backup.rst b/doc/source/user/resources/block_storage/v2/backup.rst
new file mode 100644
index 0000000..a291fa5
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v2/backup.rst
@@ -0,0 +1,12 @@
+openstack.block_storage.v2.backup
+=================================
+
+.. automodule:: openstack.block_storage.v2.backup
+
+The Backup Class
+----------------
+
+The ``Backup`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v2.backup.Backup
+   :members:
diff --git a/doc/source/user/resources/block_storage/v2/capabilities.rst b/doc/source/user/resources/block_storage/v2/capabilities.rst
new file mode 100644
index 0000000..5835928
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v2/capabilities.rst
@@ -0,0 +1,12 @@
+openstack.block_storage.v2.capabilities
+=======================================
+
+.. automodule:: openstack.block_storage.v2.capabilities
+
+The Capabilities Class
+----------------------
+
+The ``Capabilities`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v2.capabilities.Capabilities
+   :members:
diff --git a/doc/source/user/resources/block_storage/v2/limits.rst b/doc/source/user/resources/block_storage/v2/limits.rst
new file mode 100644
index 0000000..ec6e8fd
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v2/limits.rst
@@ -0,0 +1,37 @@
+openstack.block_storage.v2.limits
+=================================
+
+.. automodule:: openstack.block_storage.v2.limits
+
+The AbsoluteLimit Class
+-----------------------
+
+The ``AbsoluteLimit`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v2.limits.AbsoluteLimit
+   :members:
+
+The Limit Class
+---------------
+
+The ``Limit`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v2.limits.Limit
+   :members:
+
+The RateLimit Class
+-------------------
+
+The ``RateLimit`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v2.limits.RateLimit
+   :members:
+
+The RateLimits Class
+--------------------
+
+The ``RateLimits`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v2.limits.RateLimits
+   :members:
diff --git a/doc/source/user/resources/block_storage/v2/quota_set.rst b/doc/source/user/resources/block_storage/v2/quota_set.rst
new file mode 100644
index 0000000..35211ae
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v2/quota_set.rst
@@ -0,0 +1,12 @@
+openstack.block_storage.v2.quota_set
+====================================
+
+.. automodule:: openstack.block_storage.v2.quota_set
+
+The QuotaSet Class
+------------------
+
+The ``QuotaSet`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v2.quota_set.QuotaSet
+   :members:
diff --git a/doc/source/user/resources/block_storage/v2/snapshot.rst b/doc/source/user/resources/block_storage/v2/snapshot.rst
new file mode 100644
index 0000000..5b2eea1
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v2/snapshot.rst
@@ -0,0 +1,21 @@
+openstack.block_storage.v2.snapshot
+===================================
+
+.. automodule:: openstack.block_storage.v2.snapshot
+
+The Snapshot Class
+------------------
+
+The ``Snapshot`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v2.snapshot.Snapshot
+   :members:
+
+The SnapshotDetail Class
+------------------------
+
+The ``SnapshotDetail`` class inherits from
+:class:`~openstack.block_storage.v2.snapshot.Snapshot`.
+
+.. autoclass:: openstack.block_storage.v2.snapshot.SnapshotDetail
+   :members:
diff --git a/doc/source/user/resources/block_storage/v2/stats.rst b/doc/source/user/resources/block_storage/v2/stats.rst
new file mode 100644
index 0000000..78717e2
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v2/stats.rst
@@ -0,0 +1,12 @@
+openstack.block_storage.v2.stats
+================================
+
+.. automodule:: openstack.block_storage.v2.stats
+
+The Pools Class
+---------------
+
+The ``Pools`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v2.stats.Pools
+   :members:
diff --git a/doc/source/user/resources/block_storage/v2/type.rst b/doc/source/user/resources/block_storage/v2/type.rst
new file mode 100644
index 0000000..963f235
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v2/type.rst
@@ -0,0 +1,13 @@
+openstack.block_storage.v2.type
+===============================
+
+.. automodule:: openstack.block_storage.v2.type
+
+The Type Class
+--------------
+
+The ``Type`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v2.type.Type
+   :members:
+
diff --git a/doc/source/user/resources/block_storage/v2/volume.rst b/doc/source/user/resources/block_storage/v2/volume.rst
new file mode 100644
index 0000000..ba4b9db
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v2/volume.rst
@@ -0,0 +1,12 @@
+openstack.block_storage.v2.volume
+=================================
+
+.. automodule:: openstack.block_storage.v2.volume
+
+The Volume Class
+----------------
+
+The ``Volume`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v2.volume.Volume
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/attachment.rst b/doc/source/user/resources/block_storage/v3/attachment.rst
new file mode 100644
index 0000000..113ecd3
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/attachment.rst
@@ -0,0 +1,13 @@
+openstack.block_storage.v3.attachment
+=====================================
+
+.. automodule:: openstack.block_storage.v3.attachment
+
+The Volume Attachment Class
+---------------------------
+
+The ``Volume Attachment`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.attachment.Attachment
+   :members: create, update, complete
diff --git a/doc/source/user/resources/block_storage/v3/availability_zone.rst b/doc/source/user/resources/block_storage/v3/availability_zone.rst
new file mode 100644
index 0000000..83e8f0b
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/availability_zone.rst
@@ -0,0 +1,13 @@
+openstack.block_storage.v3.availability_zone
+============================================
+
+.. automodule:: openstack.block_storage.v3.availability_zone
+
+The AvailabilityZone Class
+--------------------------
+
+The ``AvailabilityZone`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.availability_zone.AvailabilityZone
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/backup.rst b/doc/source/user/resources/block_storage/v3/backup.rst
new file mode 100644
index 0000000..2382ca9
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/backup.rst
@@ -0,0 +1,12 @@
+openstack.block_storage.v3.backup
+=================================
+
+.. automodule:: openstack.block_storage.v3.backup
+
+The Backup Class
+----------------
+
+The ``Backup`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.backup.Backup
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/block_storage_summary.rst b/doc/source/user/resources/block_storage/v3/block_storage_summary.rst
new file mode 100644
index 0000000..2215db8
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/block_storage_summary.rst
@@ -0,0 +1,14 @@
+openstack.block_storage.v3.block_storage_summary
+================================================
+
+.. automodule:: openstack.block_storage.v3.block_storage_summary
+
+The Block Storage Summary Class
+-------------------------------
+
+The ``Block Storage Summary`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.block_storage_summary.BlockStorageSummary
+   :members:
+
diff --git a/doc/source/user/resources/block_storage/v3/capabilities.rst b/doc/source/user/resources/block_storage/v3/capabilities.rst
new file mode 100644
index 0000000..9f4c79f
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/capabilities.rst
@@ -0,0 +1,12 @@
+openstack.block_storage.v3.capabilities
+=======================================
+
+.. automodule:: openstack.block_storage.v3.capabilities
+
+The Capabilities Class
+----------------------
+
+The ``Capabilities`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.capabilities.Capabilities
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/extension.rst b/doc/source/user/resources/block_storage/v3/extension.rst
new file mode 100644
index 0000000..c72ec40
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/extension.rst
@@ -0,0 +1,12 @@
+openstack.block_storage.v3.extension
+====================================
+
+.. automodule:: openstack.block_storage.v3.extension
+
+The Extension Class
+-------------------
+
+The ``Extension`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.extension.Extension
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/group.rst b/doc/source/user/resources/block_storage/v3/group.rst
new file mode 100644
index 0000000..3d1d6ab
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/group.rst
@@ -0,0 +1,12 @@
+openstack.block_storage.v3.group
+================================
+
+.. automodule:: openstack.block_storage.v3.group
+
+The Group Class
+---------------
+
+The ``Group`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.group.Group
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/group_snapshot.rst b/doc/source/user/resources/block_storage/v3/group_snapshot.rst
new file mode 100644
index 0000000..f8135e3
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/group_snapshot.rst
@@ -0,0 +1,13 @@
+openstack.block_storage.v3.group_snapshot
+=========================================
+
+.. automodule:: openstack.block_storage.v3.group_snapshot
+
+The GroupSnapshot Class
+-----------------------
+
+The ``GroupSnapshot`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.group_snapshot.GroupSnapshot
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/group_type.rst b/doc/source/user/resources/block_storage/v3/group_type.rst
new file mode 100644
index 0000000..064b9d2
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/group_type.rst
@@ -0,0 +1,12 @@
+openstack.block_storage.v3.group_type
+=====================================
+
+.. automodule:: openstack.block_storage.v3.group_type
+
+The GroupType Class
+-------------------
+
+The ``GroupType`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.group_type.GroupType
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/limits.rst b/doc/source/user/resources/block_storage/v3/limits.rst
new file mode 100644
index 0000000..69a7d7a
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/limits.rst
@@ -0,0 +1,37 @@
+openstack.block_storage.v3.limits
+=================================
+
+.. automodule:: openstack.block_storage.v3.limits
+
+The AbsoluteLimit Class
+-----------------------
+
+The ``AbsoluteLimit`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.limits.AbsoluteLimit
+   :members:
+
+The Limit Class
+---------------
+
+The ``Limit`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.limits.Limit
+   :members:
+
+The RateLimit Class
+-------------------
+
+The ``RateLimit`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.limits.RateLimit
+   :members:
+
+The RateLimits Class
+--------------------
+
+The ``RateLimits`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.limits.RateLimits
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/quota_set.rst b/doc/source/user/resources/block_storage/v3/quota_set.rst
new file mode 100644
index 0000000..69a287b
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/quota_set.rst
@@ -0,0 +1,12 @@
+openstack.block_storage.v3.quota_set
+====================================
+
+.. automodule:: openstack.block_storage.v3.quota_set
+
+The QuotaSet Class
+------------------
+
+The ``QuotaSet`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.quota_set.QuotaSet
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/resource_filter.rst b/doc/source/user/resources/block_storage/v3/resource_filter.rst
new file mode 100644
index 0000000..eaef7b3
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/resource_filter.rst
@@ -0,0 +1,13 @@
+openstack.block_storage.v3.resource_filter
+==========================================
+
+.. automodule:: openstack.block_storage.v3.resource_filter
+
+The ResourceFilter Class
+------------------------
+
+The ``ResourceFilter`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.resource_filter.ResourceFilter
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/service.rst b/doc/source/user/resources/block_storage/v3/service.rst
new file mode 100644
index 0000000..433880a
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/service.rst
@@ -0,0 +1,12 @@
+openstack.block_storage.v3.service
+==================================
+
+.. automodule:: openstack.block_storage.v3.service
+
+The Service Class
+-----------------
+
+The ``Service`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.service.Service
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/snapshot.rst b/doc/source/user/resources/block_storage/v3/snapshot.rst
new file mode 100644
index 0000000..2185f58
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/snapshot.rst
@@ -0,0 +1,21 @@
+openstack.block_storage.v3.snapshot
+===================================
+
+.. automodule:: openstack.block_storage.v3.snapshot
+
+The Snapshot Class
+------------------
+
+The ``Snapshot`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.snapshot.Snapshot
+   :members:
+
+The SnapshotDetail Class
+------------------------
+
+The ``SnapshotDetail`` class inherits from
+:class:`~openstack.block_storage.v3.snapshot.Snapshot`.
+
+.. autoclass:: openstack.block_storage.v3.snapshot.SnapshotDetail
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/stats.rst b/doc/source/user/resources/block_storage/v3/stats.rst
new file mode 100644
index 0000000..b8e802e
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/stats.rst
@@ -0,0 +1,12 @@
+openstack.block_storage.v3.stats
+================================
+
+.. automodule:: openstack.block_storage.v3.stats
+
+The Pools Class
+---------------
+
+The ``Pools`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.stats.Pools
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/transfer.rst b/doc/source/user/resources/block_storage/v3/transfer.rst
new file mode 100644
index 0000000..e738c75
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/transfer.rst
@@ -0,0 +1,13 @@
+openstack.block_storage.v3.transfer
+===================================
+
+.. automodule:: openstack.block_storage.v3.transfer
+
+The Volume Transfer Class
+-------------------------
+
+The ``Volume Transfer`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.transfer.Transfer
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/type.rst b/doc/source/user/resources/block_storage/v3/type.rst
new file mode 100644
index 0000000..32ce799
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/type.rst
@@ -0,0 +1,21 @@
+openstack.block_storage.v3.type
+===============================
+
+.. automodule:: openstack.block_storage.v3.type
+
+The Type Class
+--------------
+
+The ``Type`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.type.Type
+   :members:
+
+The TypeEncryption Class
+------------------------
+
+The ``TypeEncryption`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.type.TypeEncryption
+   :members:
diff --git a/doc/source/user/resources/block_storage/v3/volume.rst b/doc/source/user/resources/block_storage/v3/volume.rst
new file mode 100644
index 0000000..edb734f
--- /dev/null
+++ b/doc/source/user/resources/block_storage/v3/volume.rst
@@ -0,0 +1,12 @@
+openstack.block_storage.v3.volume
+=================================
+
+.. automodule:: openstack.block_storage.v3.volume
+
+The Volume Class
+----------------
+
+The ``Volume`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.block_storage.v3.volume.Volume
+   :members:
diff --git a/doc/source/user/resources/clustering/index.rst b/doc/source/user/resources/clustering/index.rst
new file mode 100644
index 0000000..8ec0a43
--- /dev/null
+++ b/doc/source/user/resources/clustering/index.rst
@@ -0,0 +1,17 @@
+Cluster Resources
+=================
+
+.. toctree::
+   :maxdepth: 1
+
+   v1/build_info
+   v1/profile_type
+   v1/profile
+   v1/policy_type
+   v1/policy
+   v1/cluster
+   v1/node
+   v1/cluster_policy
+   v1/receiver
+   v1/action
+   v1/event
diff --git a/doc/source/user/resources/clustering/v1/action.rst b/doc/source/user/resources/clustering/v1/action.rst
new file mode 100644
index 0000000..a12aa28
--- /dev/null
+++ b/doc/source/user/resources/clustering/v1/action.rst
@@ -0,0 +1,12 @@
+openstack.clustering.v1.action
+==============================
+
+.. automodule:: openstack.clustering.v1.action
+
+The Action Class
+----------------
+
+The ``Action`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.clustering.v1.action.Action
+   :members:
diff --git a/doc/source/user/resources/clustering/v1/build_info.rst b/doc/source/user/resources/clustering/v1/build_info.rst
new file mode 100644
index 0000000..d84754f
--- /dev/null
+++ b/doc/source/user/resources/clustering/v1/build_info.rst
@@ -0,0 +1,12 @@
+openstack.clustering.v1.build_info
+==================================
+
+.. automodule:: openstack.clustering.v1.build_info
+
+The BuildInfo Class
+-------------------
+
+The ``BuildInfo`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.clustering.v1.build_info.BuildInfo
+   :members:
diff --git a/doc/source/user/resources/clustering/v1/cluster.rst b/doc/source/user/resources/clustering/v1/cluster.rst
new file mode 100644
index 0000000..779c7d6
--- /dev/null
+++ b/doc/source/user/resources/clustering/v1/cluster.rst
@@ -0,0 +1,12 @@
+openstack.clustering.v1.Cluster
+===============================
+
+.. automodule:: openstack.clustering.v1.cluster
+
+The Cluster Class
+-----------------
+
+The ``Cluster`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.clustering.v1.cluster.Cluster
+   :members:
diff --git a/doc/source/user/resources/clustering/v1/cluster_policy.rst b/doc/source/user/resources/clustering/v1/cluster_policy.rst
new file mode 100644
index 0000000..58ae943
--- /dev/null
+++ b/doc/source/user/resources/clustering/v1/cluster_policy.rst
@@ -0,0 +1,13 @@
+openstack.clustering.v1.cluster_policy
+======================================
+
+.. automodule:: openstack.clustering.v1.cluster_policy
+
+The ClusterPolicy Class
+-----------------------
+
+The ``ClusterPolicy`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.clustering.v1.cluster_policy.ClusterPolicy
+   :members:
diff --git a/doc/source/user/resources/clustering/v1/event.rst b/doc/source/user/resources/clustering/v1/event.rst
new file mode 100644
index 0000000..decc992
--- /dev/null
+++ b/doc/source/user/resources/clustering/v1/event.rst
@@ -0,0 +1,12 @@
+openstack.clustering.v1.event
+=============================
+
+.. automodule:: openstack.clustering.v1.event
+
+The Event Class
+---------------
+
+The ``Event`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.clustering.v1.event.Event
+   :members:
diff --git a/doc/source/user/resources/clustering/v1/node.rst b/doc/source/user/resources/clustering/v1/node.rst
new file mode 100644
index 0000000..3cab1ec
--- /dev/null
+++ b/doc/source/user/resources/clustering/v1/node.rst
@@ -0,0 +1,12 @@
+openstack.clustering.v1.Node
+============================
+
+.. automodule:: openstack.clustering.v1.node
+
+The Node Class
+--------------
+
+The ``Node`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.clustering.v1.node.Node
+   :members:
diff --git a/doc/source/user/resources/clustering/v1/policy.rst b/doc/source/user/resources/clustering/v1/policy.rst
new file mode 100644
index 0000000..00b832e
--- /dev/null
+++ b/doc/source/user/resources/clustering/v1/policy.rst
@@ -0,0 +1,12 @@
+openstack.clustering.v1.policy
+==============================
+
+.. automodule:: openstack.clustering.v1.policy
+
+The Policy Class
+----------------
+
+The ``Policy`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.clustering.v1.policy.Policy
+   :members:
diff --git a/doc/source/user/resources/clustering/v1/policy_type.rst b/doc/source/user/resources/clustering/v1/policy_type.rst
new file mode 100644
index 0000000..ad665f9
--- /dev/null
+++ b/doc/source/user/resources/clustering/v1/policy_type.rst
@@ -0,0 +1,12 @@
+openstack.clustering.v1.policy_type
+===================================
+
+.. automodule:: openstack.clustering.v1.policy_type
+
+The PolicyType Class
+--------------------
+
+The ``PolicyType`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.clustering.v1.policy_type.PolicyType
+   :members:
diff --git a/doc/source/user/resources/clustering/v1/profile.rst b/doc/source/user/resources/clustering/v1/profile.rst
new file mode 100644
index 0000000..c114e0c
--- /dev/null
+++ b/doc/source/user/resources/clustering/v1/profile.rst
@@ -0,0 +1,12 @@
+openstack.clustering.v1.profile
+===============================
+
+.. automodule:: openstack.clustering.v1.profile
+
+The Profile Class
+-----------------
+
+The ``Profile`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.clustering.v1.profile.Profile
+   :members:
diff --git a/doc/source/user/resources/clustering/v1/profile_type.rst b/doc/source/user/resources/clustering/v1/profile_type.rst
new file mode 100644
index 0000000..d8534c0
--- /dev/null
+++ b/doc/source/user/resources/clustering/v1/profile_type.rst
@@ -0,0 +1,12 @@
+openstack.clustering.v1.profile_type
+====================================
+
+.. automodule:: openstack.clustering.v1.profile_type
+
+The ProfileType Class
+---------------------
+
+The ``ProfileType`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.clustering.v1.profile_type.ProfileType
+   :members:
diff --git a/doc/source/user/resources/clustering/v1/receiver.rst b/doc/source/user/resources/clustering/v1/receiver.rst
new file mode 100644
index 0000000..9cdd4e5
--- /dev/null
+++ b/doc/source/user/resources/clustering/v1/receiver.rst
@@ -0,0 +1,12 @@
+openstack.clustering.v1.receiver
+================================
+
+.. automodule:: openstack.clustering.v1.receiver
+
+The Receiver Class
+------------------
+
+The ``Receiver`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.clustering.v1.receiver.Receiver
+   :members:
diff --git a/doc/source/user/resources/compute/index.rst b/doc/source/user/resources/compute/index.rst
new file mode 100644
index 0000000..b982b0e
--- /dev/null
+++ b/doc/source/user/resources/compute/index.rst
@@ -0,0 +1,9 @@
+Compute Resources
+=================
+
+.. toctree::
+   :maxdepth: 1
+   :glob:
+
+   v2/*
+   version
diff --git a/doc/source/user/resources/compute/v2/aggregate.rst b/doc/source/user/resources/compute/v2/aggregate.rst
new file mode 100644
index 0000000..0d78688
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/aggregate.rst
@@ -0,0 +1,12 @@
+openstack.compute.v2.aggregate
+==============================
+
+.. automodule:: openstack.compute.v2.aggregate
+
+The Aggregate Class
+-------------------
+
+The ``Aggregate`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.aggregate.Aggregate
+   :members:
diff --git a/doc/source/user/resources/compute/v2/availability_zone.rst b/doc/source/user/resources/compute/v2/availability_zone.rst
new file mode 100644
index 0000000..8d58bb7
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/availability_zone.rst
@@ -0,0 +1,13 @@
+openstack.compute.v2.availability_zone
+======================================
+
+.. automodule:: openstack.compute.v2.availability_zone
+
+The AvailabilityZone Class
+--------------------------
+
+The ``AvailabilityZone`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.availability_zone.AvailabilityZone
+   :members:
diff --git a/doc/source/user/resources/compute/v2/extension.rst b/doc/source/user/resources/compute/v2/extension.rst
new file mode 100644
index 0000000..8d6c608
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/extension.rst
@@ -0,0 +1,12 @@
+openstack.compute.v2.extension
+==============================
+
+.. automodule:: openstack.compute.v2.extension
+
+The Extension Class
+-------------------
+
+The ``Extension`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.extension.Extension
+   :members:
diff --git a/doc/source/user/resources/compute/v2/flavor.rst b/doc/source/user/resources/compute/v2/flavor.rst
new file mode 100644
index 0000000..45fee1b
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/flavor.rst
@@ -0,0 +1,21 @@
+openstack.compute.v2.flavor
+===========================
+
+.. automodule:: openstack.compute.v2.flavor
+
+The Flavor Class
+----------------
+
+The ``Flavor`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.flavor.Flavor
+   :members:
+
+The FlavorDetail Class
+----------------------
+
+The ``FlavorDetail`` class inherits from
+:class:`~openstack.compute.v2.flavor.Flavor`.
+
+.. autoclass:: openstack.compute.v2.flavor.FlavorDetail
+   :members:
diff --git a/doc/source/user/resources/compute/v2/hypervisor.rst b/doc/source/user/resources/compute/v2/hypervisor.rst
new file mode 100644
index 0000000..6959db4
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/hypervisor.rst
@@ -0,0 +1,12 @@
+openstack.compute.v2.hypervisor
+===============================
+
+.. automodule:: openstack.compute.v2.hypervisor
+
+The Hypervisor Class
+--------------------
+
+The ``Hypervisor`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.hypervisor.Hypervisor
+   :members:
diff --git a/doc/source/user/resources/compute/v2/image.rst b/doc/source/user/resources/compute/v2/image.rst
new file mode 100644
index 0000000..d390065
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/image.rst
@@ -0,0 +1,21 @@
+openstack.compute.v2.image
+==========================
+
+.. automodule:: openstack.compute.v2.image
+
+The Image Class
+---------------
+
+The ``Image`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.image.Image
+   :members:
+
+The ImageDetail Class
+---------------------
+
+The ``ImageDetail`` class inherits from
+:class:`~openstack.compute.v2.image.Image`.
+
+.. autoclass:: openstack.compute.v2.image.ImageDetail
+   :members:
diff --git a/doc/source/user/resources/compute/v2/keypair.rst b/doc/source/user/resources/compute/v2/keypair.rst
new file mode 100644
index 0000000..cd2f369
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/keypair.rst
@@ -0,0 +1,12 @@
+openstack.compute.v2.keypair
+============================
+
+.. automodule:: openstack.compute.v2.keypair
+
+The Keypair Class
+-----------------
+
+The ``Keypair`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.keypair.Keypair
+   :members:
diff --git a/doc/source/user/resources/compute/v2/limits.rst b/doc/source/user/resources/compute/v2/limits.rst
new file mode 100644
index 0000000..f30ff2f
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/limits.rst
@@ -0,0 +1,29 @@
+openstack.compute.v2.limits
+===========================
+
+.. automodule:: openstack.compute.v2.limits
+
+The Limits Class
+----------------
+
+The ``Limits`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.limits.Limits
+   :members:
+
+The AbsoluteLimits Class
+------------------------
+
+The ``AbsoluteLimits`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.limits.AbsoluteLimits
+   :members:
+
+The RateLimit Class
+-------------------
+
+The ``RateLimit`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.limits.RateLimit
+   :members:
diff --git a/doc/source/user/resources/compute/v2/migration.rst b/doc/source/user/resources/compute/v2/migration.rst
new file mode 100644
index 0000000..ba02f3e
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/migration.rst
@@ -0,0 +1,12 @@
+openstack.compute.v2.migration
+==============================
+
+.. automodule:: openstack.compute.v2.migration
+
+The Migration Class
+-------------------
+
+The ``Migration`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.migration.Migration
+   :members:
diff --git a/doc/source/user/resources/compute/v2/quota_set.rst b/doc/source/user/resources/compute/v2/quota_set.rst
new file mode 100644
index 0000000..8a5d91d
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/quota_set.rst
@@ -0,0 +1,12 @@
+openstack.compute.v2.quota_set
+==============================
+
+.. automodule:: openstack.compute.v2.quota_set
+
+The QuotaSet Class
+------------------
+
+The ``QuotaSet`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.quota_set.QuotaSet
+   :members:
diff --git a/doc/source/user/resources/compute/v2/server.rst b/doc/source/user/resources/compute/v2/server.rst
new file mode 100644
index 0000000..5dc072c
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/server.rst
@@ -0,0 +1,12 @@
+openstack.compute.v2.server
+===========================
+
+.. automodule:: openstack.compute.v2.server
+
+The Server Class
+----------------
+
+The ``Server`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.server.Server
+   :members:
diff --git a/doc/source/user/resources/compute/v2/server_action.rst b/doc/source/user/resources/compute/v2/server_action.rst
new file mode 100644
index 0000000..a3afefe
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/server_action.rst
@@ -0,0 +1,22 @@
+openstack.compute.v2.server_action
+==================================
+
+.. automodule:: openstack.compute.v2.server_action
+
+The ServerAction Class
+----------------------
+
+The ``ServerAction`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.server_action.ServerAction
+   :members:
+
+The ServerActionEvent Class
+---------------------------
+
+The ``ServerActionEvent`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.server_action.ServerActionEvent
+   :members:
diff --git a/doc/source/user/resources/compute/v2/server_diagnostics.rst b/doc/source/user/resources/compute/v2/server_diagnostics.rst
new file mode 100644
index 0000000..7b00e93
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/server_diagnostics.rst
@@ -0,0 +1,13 @@
+openstack.compute.v2.server_diagnostics
+=======================================
+
+.. automodule:: openstack.compute.v2.server_diagnostics
+
+The ServerDiagnostics Class
+---------------------------
+
+The ``ServerDiagnostics`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.server_diagnostics.ServerDiagnostics
+   :members:
diff --git a/doc/source/user/resources/compute/v2/server_group.rst b/doc/source/user/resources/compute/v2/server_group.rst
new file mode 100644
index 0000000..be84fe6
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/server_group.rst
@@ -0,0 +1,13 @@
+openstack.compute.v2.server_group
+=================================
+
+.. automodule:: openstack.compute.v2.server_group
+
+The ServerGroup Class
+---------------------
+
+The ``ServerGroup`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.server_group.ServerGroup
+   :members:
diff --git a/doc/source/user/resources/compute/v2/server_interface.rst b/doc/source/user/resources/compute/v2/server_interface.rst
new file mode 100644
index 0000000..922606f
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/server_interface.rst
@@ -0,0 +1,13 @@
+openstack.compute.v2.server_interface
+=====================================
+
+.. automodule:: openstack.compute.v2.server_interface
+
+The ServerInterface Class
+-------------------------
+
+The ``ServerInterface`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.server_interface.ServerInterface
+   :members:
diff --git a/doc/source/user/resources/compute/v2/server_ip.rst b/doc/source/user/resources/compute/v2/server_ip.rst
new file mode 100644
index 0000000..cdd63da
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/server_ip.rst
@@ -0,0 +1,12 @@
+openstack.compute.v2.server_ip
+==============================
+
+.. automodule:: openstack.compute.v2.server_ip
+
+The ServerIP Class
+------------------
+
+The ``ServerIP`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.server_ip.ServerIP
+   :members:
diff --git a/doc/source/user/resources/compute/v2/server_migration.rst b/doc/source/user/resources/compute/v2/server_migration.rst
new file mode 100644
index 0000000..6587f59
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/server_migration.rst
@@ -0,0 +1,13 @@
+openstack.compute.v2.server_migration
+=====================================
+
+.. automodule:: openstack.compute.v2.server_migration
+
+The ServerMigration Class
+-------------------------
+
+The ``ServerMigration`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.server_migration.ServerMigration
+   :members:
diff --git a/doc/source/user/resources/compute/v2/server_remote_console.rst b/doc/source/user/resources/compute/v2/server_remote_console.rst
new file mode 100644
index 0000000..9ce7c08
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/server_remote_console.rst
@@ -0,0 +1,13 @@
+openstack.compute.v2.server_remote_console
+==========================================
+
+.. automodule:: openstack.compute.v2.server_remote_console
+
+The ServerRemoteConsole Class
+-----------------------------
+
+The ``ServerRemoteConsole`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.server_remote_console.ServerRemoteConsole
+   :members:
diff --git a/doc/source/user/resources/compute/v2/service.rst b/doc/source/user/resources/compute/v2/service.rst
new file mode 100644
index 0000000..ac0fdef
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/service.rst
@@ -0,0 +1,12 @@
+openstack.compute.v2.service
+============================
+
+.. automodule:: openstack.compute.v2.service
+
+The Service Class
+-----------------
+
+The ``Service`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.service.Service
+   :members:
diff --git a/doc/source/user/resources/compute/v2/usage.rst b/doc/source/user/resources/compute/v2/usage.rst
new file mode 100644
index 0000000..1be8f6b
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/usage.rst
@@ -0,0 +1,20 @@
+openstack.compute.v2.usage
+==========================
+
+.. automodule:: openstack.compute.v2.usage
+
+The Usage Class
+---------------
+
+The ``Usage`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.usage.Usage
+   :members:
+
+The ServerUsage Class
+---------------------
+
+The ``ServerUsage`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.usage.ServerUsage
+   :members:
diff --git a/doc/source/user/resources/compute/v2/volume_attachment.rst b/doc/source/user/resources/compute/v2/volume_attachment.rst
new file mode 100644
index 0000000..74d4be3
--- /dev/null
+++ b/doc/source/user/resources/compute/v2/volume_attachment.rst
@@ -0,0 +1,13 @@
+openstack.compute.v2.volume_attachment
+======================================
+
+.. automodule:: openstack.compute.v2.volume_attachment
+
+The VolumeAttachment Class
+--------------------------
+
+The ``VolumeAttachment`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.v2.volume_attachment.VolumeAttachment
+   :members:
diff --git a/doc/source/user/resources/compute/version.rst b/doc/source/user/resources/compute/version.rst
new file mode 100644
index 0000000..0191df1
--- /dev/null
+++ b/doc/source/user/resources/compute/version.rst
@@ -0,0 +1,12 @@
+openstack.compute.version
+=========================
+
+.. automodule:: openstack.compute.version
+
+The Version Class
+-----------------
+
+The ``Version`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.compute.version.Version
+   :members:
diff --git a/doc/source/user/resources/container_infrastructure_management/cluster.rst b/doc/source/user/resources/container_infrastructure_management/cluster.rst
new file mode 100644
index 0000000..df44b6f
--- /dev/null
+++ b/doc/source/user/resources/container_infrastructure_management/cluster.rst
@@ -0,0 +1,12 @@
+openstack.container_infrastructure_management.v1.cluster
+========================================================
+
+.. automodule:: openstack.container_infrastructure_management.v1.cluster
+
+The Cluster Class
+------------------
+
+The ``Cluster`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.container_infrastructure_management.v1.cluster.Cluster
+   :members:
diff --git a/doc/source/user/resources/container_infrastructure_management/cluster_certificate.rst b/doc/source/user/resources/container_infrastructure_management/cluster_certificate.rst
new file mode 100644
index 0000000..6dbb3b1
--- /dev/null
+++ b/doc/source/user/resources/container_infrastructure_management/cluster_certificate.rst
@@ -0,0 +1,13 @@
+openstack.container_infrastructure_management.v1.cluster_certificate
+====================================================================
+
+.. automodule:: openstack.container_infrastructure_management.v1.cluster_certificate
+
+The Cluster Certificate Class
+-----------------------------
+
+The ``ClusterCertificate`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.container_infrastructure_management.v1.cluster_certificate.ClusterCertificate
+   :members:
diff --git a/doc/source/user/resources/container_infrastructure_management/cluster_template.rst b/doc/source/user/resources/container_infrastructure_management/cluster_template.rst
new file mode 100644
index 0000000..fbf1772
--- /dev/null
+++ b/doc/source/user/resources/container_infrastructure_management/cluster_template.rst
@@ -0,0 +1,13 @@
+openstack.container_infrastructure_management.v1.cluster_template
+=================================================================
+
+.. automodule:: openstack.container_infrastructure_management.v1.cluster_template
+
+The Cluster Template Class
+--------------------------
+
+The ``ClusterTemplate`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.container_infrastructure_management.v1.cluster_template.ClusterTemplate
+   :members:
diff --git a/doc/source/user/resources/container_infrastructure_management/index.rst b/doc/source/user/resources/container_infrastructure_management/index.rst
new file mode 100644
index 0000000..90fdb85
--- /dev/null
+++ b/doc/source/user/resources/container_infrastructure_management/index.rst
@@ -0,0 +1,10 @@
+Container Infrastructure Management Resources
+=============================================
+
+.. toctree::
+   :maxdepth: 1
+
+   cluster
+   cluster_certificate
+   cluster_template
+   service
diff --git a/doc/source/user/resources/container_infrastructure_management/service.rst b/doc/source/user/resources/container_infrastructure_management/service.rst
new file mode 100644
index 0000000..2be9147
--- /dev/null
+++ b/doc/source/user/resources/container_infrastructure_management/service.rst
@@ -0,0 +1,12 @@
+openstack.container_infrastructure_management.v1.service
+========================================================
+
+.. automodule:: openstack.container_infrastructure_management.v1.service
+
+The Service Class
+-----------------
+
+The ``Service`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.container_infrastructure_management.v1.service.Service
+   :members:
diff --git a/doc/source/user/resources/database/index.rst b/doc/source/user/resources/database/index.rst
new file mode 100644
index 0000000..3218b40
--- /dev/null
+++ b/doc/source/user/resources/database/index.rst
@@ -0,0 +1,10 @@
+Database Resources
+==================
+
+.. toctree::
+   :maxdepth: 1
+
+   v1/database
+   v1/flavor
+   v1/instance
+   v1/user
diff --git a/doc/source/user/resources/database/v1/database.rst b/doc/source/user/resources/database/v1/database.rst
new file mode 100644
index 0000000..7148f21
--- /dev/null
+++ b/doc/source/user/resources/database/v1/database.rst
@@ -0,0 +1,12 @@
+openstack.database.v1.database
+==============================
+
+.. automodule:: openstack.database.v1.database
+
+The Database Class
+------------------
+
+The ``Database`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.database.v1.database.Database
+   :members:
diff --git a/doc/source/user/resources/database/v1/flavor.rst b/doc/source/user/resources/database/v1/flavor.rst
new file mode 100644
index 0000000..2318d80
--- /dev/null
+++ b/doc/source/user/resources/database/v1/flavor.rst
@@ -0,0 +1,12 @@
+openstack.database.v1.flavor
+============================
+
+.. automodule:: openstack.database.v1.flavor
+
+The Flavor Class
+----------------
+
+The ``Flavor`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.database.v1.flavor.Flavor
+   :members:
diff --git a/doc/source/user/resources/database/v1/instance.rst b/doc/source/user/resources/database/v1/instance.rst
new file mode 100644
index 0000000..e70be2f
--- /dev/null
+++ b/doc/source/user/resources/database/v1/instance.rst
@@ -0,0 +1,12 @@
+openstack.database.v1.instance
+==============================
+
+.. automodule:: openstack.database.v1.instance
+
+The Instance Class
+------------------
+
+The ``Instance`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.database.v1.instance.Instance
+   :members:
diff --git a/doc/source/user/resources/database/v1/user.rst b/doc/source/user/resources/database/v1/user.rst
new file mode 100644
index 0000000..817f77e
--- /dev/null
+++ b/doc/source/user/resources/database/v1/user.rst
@@ -0,0 +1,12 @@
+openstack.database.v1.user
+==========================
+
+.. automodule:: openstack.database.v1.user
+
+The User Class
+--------------
+
+The ``User`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.database.v1.user.User
+   :members:
diff --git a/doc/source/user/resources/dns/index.rst b/doc/source/user/resources/dns/index.rst
new file mode 100644
index 0000000..77860a6
--- /dev/null
+++ b/doc/source/user/resources/dns/index.rst
@@ -0,0 +1,13 @@
+DNS Resources
+=============
+
+.. toctree::
+   :maxdepth: 1
+
+   v2/zone
+   v2/zone_transfer
+   v2/zone_export
+   v2/zone_import
+   v2/zone_share
+   v2/floating_ip
+   v2/recordset
diff --git a/doc/source/user/resources/dns/v2/floating_ip.rst b/doc/source/user/resources/dns/v2/floating_ip.rst
new file mode 100644
index 0000000..d616e71
--- /dev/null
+++ b/doc/source/user/resources/dns/v2/floating_ip.rst
@@ -0,0 +1,12 @@
+openstack.dns.v2.floating_ip
+============================
+
+.. automodule:: openstack.dns.v2.floating_ip
+
+The FloatingIP Class
+--------------------
+
+The ``DNS`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.dns.v2.floating_ip.FloatingIP
+   :members:
diff --git a/doc/source/user/resources/dns/v2/recordset.rst b/doc/source/user/resources/dns/v2/recordset.rst
new file mode 100644
index 0000000..c02302f
--- /dev/null
+++ b/doc/source/user/resources/dns/v2/recordset.rst
@@ -0,0 +1,12 @@
+openstack.dns.v2.recordset
+==========================
+
+.. automodule:: openstack.dns.v2.recordset
+
+The Recordset Class
+-------------------
+
+The ``DNS`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.dns.v2.recordset.Recordset
+   :members:
diff --git a/doc/source/user/resources/dns/v2/zone.rst b/doc/source/user/resources/dns/v2/zone.rst
new file mode 100644
index 0000000..634bd8f
--- /dev/null
+++ b/doc/source/user/resources/dns/v2/zone.rst
@@ -0,0 +1,12 @@
+openstack.dns.v2.zone
+==============================
+
+.. automodule:: openstack.dns.v2.zone
+
+The Zone Class
+--------------
+
+The ``DNS`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.dns.v2.zone.Zone
+   :members:
diff --git a/doc/source/user/resources/dns/v2/zone_export.rst b/doc/source/user/resources/dns/v2/zone_export.rst
new file mode 100644
index 0000000..2c2baa3
--- /dev/null
+++ b/doc/source/user/resources/dns/v2/zone_export.rst
@@ -0,0 +1,12 @@
+openstack.dns.v2.zone_export
+============================
+
+.. automodule:: openstack.dns.v2.zone_export
+
+The ZoneExport Class
+--------------------
+
+The ``DNS`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.dns.v2.zone_export.ZoneExport
+   :members:
diff --git a/doc/source/user/resources/dns/v2/zone_import.rst b/doc/source/user/resources/dns/v2/zone_import.rst
new file mode 100644
index 0000000..5836f53
--- /dev/null
+++ b/doc/source/user/resources/dns/v2/zone_import.rst
@@ -0,0 +1,12 @@
+openstack.dns.v2.zone_import
+============================
+
+.. automodule:: openstack.dns.v2.zone_import
+
+The ZoneImport Class
+--------------------
+
+The ``DNS`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.dns.v2.zone_import.ZoneImport
+   :members:
diff --git a/doc/source/user/resources/dns/v2/zone_share.rst b/doc/source/user/resources/dns/v2/zone_share.rst
new file mode 100644
index 0000000..5b0d028
--- /dev/null
+++ b/doc/source/user/resources/dns/v2/zone_share.rst
@@ -0,0 +1,12 @@
+openstack.dns.v2.zone_share
+===========================
+
+.. automodule:: openstack.dns.v2.zone_share
+
+The ZoneShare Class
+-------------------
+
+The ``DNS`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.dns.v2.zone_share.ZoneShare
+   :members:
diff --git a/doc/source/user/resources/dns/v2/zone_transfer.rst b/doc/source/user/resources/dns/v2/zone_transfer.rst
new file mode 100644
index 0000000..9f5c2c4
--- /dev/null
+++ b/doc/source/user/resources/dns/v2/zone_transfer.rst
@@ -0,0 +1,20 @@
+openstack.dns.v2.zone_transfer
+==============================
+
+.. automodule:: openstack.dns.v2.zone_transfer
+
+The ZoneTransferRequest Class
+-----------------------------
+
+The ``DNS`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.dns.v2.zone_transfer.ZoneTransferRequest
+   :members:
+
+The ZoneTransferAccept Class
+----------------------------
+
+The ``DNS`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.dns.v2.zone_transfer.ZoneTransferAccept
+   :members:
diff --git a/doc/source/user/resources/identity/index.rst b/doc/source/user/resources/identity/index.rst
new file mode 100644
index 0000000..82d7df6
--- /dev/null
+++ b/doc/source/user/resources/identity/index.rst
@@ -0,0 +1,27 @@
+Identity Resources
+==================
+
+Identity v2 Resources
+---------------------
+.. toctree::
+   :maxdepth: 1
+   :glob:
+
+   v2/*
+
+Identity v3 Resources
+---------------------
+
+.. toctree::
+   :maxdepth: 1
+   :glob:
+
+   v3/*
+
+Other Resources
+---------------
+
+.. toctree::
+   :maxdepth: 1
+
+   version
diff --git a/doc/source/user/resources/identity/v2/extension.rst b/doc/source/user/resources/identity/v2/extension.rst
new file mode 100644
index 0000000..53f5136
--- /dev/null
+++ b/doc/source/user/resources/identity/v2/extension.rst
@@ -0,0 +1,12 @@
+openstack.identity.v2.extension
+===============================
+
+.. automodule:: openstack.identity.v2.extension
+
+The Extension Class
+-------------------
+
+The ``Extension`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v2.extension.Extension
+   :members:
diff --git a/doc/source/user/resources/identity/v2/role.rst b/doc/source/user/resources/identity/v2/role.rst
new file mode 100644
index 0000000..f818ffc
--- /dev/null
+++ b/doc/source/user/resources/identity/v2/role.rst
@@ -0,0 +1,12 @@
+openstack.identity.v2.role
+==========================
+
+.. automodule:: openstack.identity.v2.role
+
+The Role Class
+--------------
+
+The ``Role`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v2.role.Role
+   :members:
diff --git a/doc/source/user/resources/identity/v2/tenant.rst b/doc/source/user/resources/identity/v2/tenant.rst
new file mode 100644
index 0000000..a7abcc6
--- /dev/null
+++ b/doc/source/user/resources/identity/v2/tenant.rst
@@ -0,0 +1,12 @@
+openstack.identity.v2.tenant
+============================
+
+.. automodule:: openstack.identity.v2.tenant
+
+The Tenant Class
+----------------
+
+The ``Tenant`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v2.tenant.Tenant
+   :members:
diff --git a/doc/source/user/resources/identity/v2/user.rst b/doc/source/user/resources/identity/v2/user.rst
new file mode 100644
index 0000000..d9fdd37
--- /dev/null
+++ b/doc/source/user/resources/identity/v2/user.rst
@@ -0,0 +1,12 @@
+openstack.identity.v2.user
+==========================
+
+.. automodule:: openstack.identity.v2.user
+
+The User Class
+--------------
+
+The ``User`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v2.user.User
+   :members:
diff --git a/doc/source/user/resources/identity/v3/application_credential.rst b/doc/source/user/resources/identity/v3/application_credential.rst
new file mode 100644
index 0000000..ee7b1dc
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/application_credential.rst
@@ -0,0 +1,13 @@
+openstack.identity.v3.application_credential
+============================================
+
+.. automodule:: openstack.identity.v3.application_credential
+
+The ApplicationCredential Class
+-------------------------------
+
+The ``ApplicationCredential`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.application_credential.ApplicationCredential
+   :members:
diff --git a/doc/source/user/resources/identity/v3/credential.rst b/doc/source/user/resources/identity/v3/credential.rst
new file mode 100644
index 0000000..dabc9af
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/credential.rst
@@ -0,0 +1,12 @@
+openstack.identity.v3.credential
+================================
+
+.. automodule:: openstack.identity.v3.credential
+
+The Credential Class
+--------------------
+
+The ``Credential`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.credential.Credential
+   :members:
diff --git a/doc/source/user/resources/identity/v3/domain.rst b/doc/source/user/resources/identity/v3/domain.rst
new file mode 100644
index 0000000..bf7d109
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/domain.rst
@@ -0,0 +1,12 @@
+openstack.identity.v3.domain
+============================
+
+.. automodule:: openstack.identity.v3.domain
+
+The Domain Class
+----------------
+
+The ``Domain`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.domain.Domain
+   :members:
diff --git a/doc/source/user/resources/identity/v3/domain_config.rst b/doc/source/user/resources/identity/v3/domain_config.rst
new file mode 100644
index 0000000..28defa2
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/domain_config.rst
@@ -0,0 +1,12 @@
+openstack.identity.v3.domain_config
+===================================
+
+.. automodule:: openstack.identity.v3.domain_config
+
+The Domain Class
+----------------
+
+The ``DomainConfig`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.domain_config.DomainConfig
+   :members:
diff --git a/doc/source/user/resources/identity/v3/endpoint.rst b/doc/source/user/resources/identity/v3/endpoint.rst
new file mode 100644
index 0000000..366113d
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/endpoint.rst
@@ -0,0 +1,12 @@
+openstack.identity.v3.endpoint
+==============================
+
+.. automodule:: openstack.identity.v3.endpoint
+
+The Endpoint Class
+------------------
+
+The ``Endpoint`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.endpoint.Endpoint
+   :members:
diff --git a/doc/source/user/resources/identity/v3/federation_protocol.rst b/doc/source/user/resources/identity/v3/federation_protocol.rst
new file mode 100644
index 0000000..4cd8a97
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/federation_protocol.rst
@@ -0,0 +1,13 @@
+openstack.identity.v3.federation_protocol
+=========================================
+
+.. automodule:: openstack.identity.v3.federation_protocol
+
+The FederationProtocol Class
+----------------------------
+
+The ``FederationProtocol`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.federation_protocol.FederationProtocol
+   :members:
diff --git a/doc/source/user/resources/identity/v3/group.rst b/doc/source/user/resources/identity/v3/group.rst
new file mode 100644
index 0000000..fe6c446
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/group.rst
@@ -0,0 +1,12 @@
+openstack.identity.v3.group
+===========================
+
+.. automodule:: openstack.identity.v3.group
+
+The Group Class
+---------------
+
+The ``Group`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.group.Group
+   :members:
diff --git a/doc/source/user/resources/identity/v3/identity_provider.rst b/doc/source/user/resources/identity/v3/identity_provider.rst
new file mode 100644
index 0000000..1b1bc76
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/identity_provider.rst
@@ -0,0 +1,13 @@
+openstack.identity.v3.identity_provider
+=======================================
+
+.. automodule:: openstack.identity.v3.identity_provider
+
+The IdentityProvider Class
+--------------------------
+
+The ``IdentityProvider`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.identity_provider.IdentityProvider
+   :members:
diff --git a/doc/source/user/resources/identity/v3/limit.rst b/doc/source/user/resources/identity/v3/limit.rst
new file mode 100644
index 0000000..f8a8174
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/limit.rst
@@ -0,0 +1,12 @@
+openstack.identity.v3.limit
+===========================
+
+.. automodule:: openstack.identity.v3.limit
+
+The Limit Class
+---------------
+
+The ``Limit`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.limit.Limit
+   :members:
diff --git a/doc/source/user/resources/identity/v3/mapping.rst b/doc/source/user/resources/identity/v3/mapping.rst
new file mode 100644
index 0000000..dd242f9
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/mapping.rst
@@ -0,0 +1,12 @@
+openstack.identity.v3.mapping
+=============================
+
+.. automodule:: openstack.identity.v3.mapping
+
+The Mapping Class
+-----------------
+
+The ``Mapping`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.mapping.Mapping
+   :members:
diff --git a/doc/source/user/resources/identity/v3/policy.rst b/doc/source/user/resources/identity/v3/policy.rst
new file mode 100644
index 0000000..2506b11
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/policy.rst
@@ -0,0 +1,12 @@
+openstack.identity.v3.policy
+============================
+
+.. automodule:: openstack.identity.v3.policy
+
+The Policy Class
+----------------
+
+The ``Policy`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.policy.Policy
+   :members:
diff --git a/doc/source/user/resources/identity/v3/project.rst b/doc/source/user/resources/identity/v3/project.rst
new file mode 100644
index 0000000..db8c854
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/project.rst
@@ -0,0 +1,12 @@
+openstack.identity.v3.project
+=============================
+
+.. automodule:: openstack.identity.v3.project
+
+The Project Class
+-----------------
+
+The ``Project`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.project.Project
+   :members:
diff --git a/doc/source/user/resources/identity/v3/region.rst b/doc/source/user/resources/identity/v3/region.rst
new file mode 100644
index 0000000..ba334a7
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/region.rst
@@ -0,0 +1,12 @@
+openstack.identity.v3.region
+============================
+
+.. automodule:: openstack.identity.v3.region
+
+The Region Class
+----------------
+
+The ``Region`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.region.Region
+   :members:
diff --git a/doc/source/user/resources/identity/v3/registered_limit.rst b/doc/source/user/resources/identity/v3/registered_limit.rst
new file mode 100644
index 0000000..8ecdfe3
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/registered_limit.rst
@@ -0,0 +1,13 @@
+openstack.identity.v3.registered_limit
+======================================
+
+.. automodule:: openstack.identity.v3.registered_limit
+
+The RegisteredLimit Class
+-------------------------
+
+The ``RegisteredLimit`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.registered_limit.RegisteredLimit
+   :members:
diff --git a/doc/source/user/resources/identity/v3/role.rst b/doc/source/user/resources/identity/v3/role.rst
new file mode 100644
index 0000000..baa85e8
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/role.rst
@@ -0,0 +1,12 @@
+openstack.identity.v3.role
+==========================
+
+.. automodule:: openstack.identity.v3.role
+
+The Role Class
+--------------
+
+The ``Role`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.role.Role
+   :members:
diff --git a/doc/source/user/resources/identity/v3/role_assignment.rst b/doc/source/user/resources/identity/v3/role_assignment.rst
new file mode 100644
index 0000000..abdfcdc
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/role_assignment.rst
@@ -0,0 +1,13 @@
+openstack.identity.v3.role_assignment
+=====================================
+
+.. automodule:: openstack.identity.v3.role_assignment
+
+The RoleAssignment Class
+------------------------
+
+The ``RoleAssignment`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.role_assignment.RoleAssignment
+   :members:
diff --git a/doc/source/user/resources/identity/v3/role_domain_group_assignment.rst b/doc/source/user/resources/identity/v3/role_domain_group_assignment.rst
new file mode 100644
index 0000000..8ef6ef9
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/role_domain_group_assignment.rst
@@ -0,0 +1,13 @@
+openstack.identity.v3.role_domain_group_assignment
+==================================================
+
+.. automodule:: openstack.identity.v3.role_domain_group_assignment
+
+The RoleDomainGroupAssignment Class
+-----------------------------------
+
+The ``RoleDomainGroupAssignment`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.role_domain_group_assignment.RoleDomainGroupAssignment
+   :members:
diff --git a/doc/source/user/resources/identity/v3/role_domain_user_assignment.rst b/doc/source/user/resources/identity/v3/role_domain_user_assignment.rst
new file mode 100644
index 0000000..063a3d7
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/role_domain_user_assignment.rst
@@ -0,0 +1,13 @@
+openstack.identity.v3.role_domain_user_assignment
+=================================================
+
+.. automodule:: openstack.identity.v3.role_domain_user_assignment
+
+The RoleDomainUserAssignment Class
+----------------------------------
+
+The ``RoleDomainUserAssignment`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.role_domain_user_assignment.RoleDomainUserAssignment
+   :members:
diff --git a/doc/source/user/resources/identity/v3/role_project_group_assignment.rst b/doc/source/user/resources/identity/v3/role_project_group_assignment.rst
new file mode 100644
index 0000000..2824e0c
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/role_project_group_assignment.rst
@@ -0,0 +1,13 @@
+openstack.identity.v3.role_project_group_assignment
+===================================================
+
+.. automodule:: openstack.identity.v3.role_project_group_assignment
+
+The RoleProjectGroupAssignment Class
+------------------------------------
+
+The ``RoleProjectGroupAssignment`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.role_project_group_assignment.RoleProjectGroupAssignment
+   :members:
diff --git a/doc/source/user/resources/identity/v3/role_project_user_assignment.rst b/doc/source/user/resources/identity/v3/role_project_user_assignment.rst
new file mode 100644
index 0000000..d9f44c9
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/role_project_user_assignment.rst
@@ -0,0 +1,13 @@
+openstack.identity.v3.role_project_user_assignment
+==================================================
+
+.. automodule:: openstack.identity.v3.role_project_user_assignment
+
+The RoleProjectUserAssignment Class
+-----------------------------------
+
+The ``RoleProjectUserAssignment`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.role_project_user_assignment.RoleProjectUserAssignment
+   :members:
diff --git a/doc/source/user/resources/identity/v3/role_system_group_assignment.rst b/doc/source/user/resources/identity/v3/role_system_group_assignment.rst
new file mode 100644
index 0000000..5e9771c
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/role_system_group_assignment.rst
@@ -0,0 +1,13 @@
+openstack.identity.v3.role_system_group_assignment
+==================================================
+
+.. automodule:: openstack.identity.v3.role_system_group_assignment
+
+The RoleSystemGroupAssignment Class
+-----------------------------------
+
+The ``RoleSystemGroupAssignment`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.role_system_group_assignment.RoleSystemGroupAssignment
+   :members:
diff --git a/doc/source/user/resources/identity/v3/role_system_user_assignment.rst b/doc/source/user/resources/identity/v3/role_system_user_assignment.rst
new file mode 100644
index 0000000..7346d00
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/role_system_user_assignment.rst
@@ -0,0 +1,13 @@
+openstack.identity.v3.role_system_user_assignment
+=================================================
+
+.. automodule:: openstack.identity.v3.role_system_user_assignment
+
+The RoleSystemUserAssignment Class
+----------------------------------
+
+The ``RoleSystemUserAssignment`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.role_system_user_assignment.RoleSystemUserAssignment
+   :members:
diff --git a/doc/source/user/resources/identity/v3/service.rst b/doc/source/user/resources/identity/v3/service.rst
new file mode 100644
index 0000000..02585f5
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/service.rst
@@ -0,0 +1,12 @@
+openstack.identity.v3.service
+=============================
+
+.. automodule:: openstack.identity.v3.service
+
+The Service Class
+-----------------
+
+The ``Service`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.service.Service
+   :members:
diff --git a/doc/source/user/resources/identity/v3/system.rst b/doc/source/user/resources/identity/v3/system.rst
new file mode 100644
index 0000000..dcdda5b
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/system.rst
@@ -0,0 +1,12 @@
+openstack.identity.v3.system
+============================
+
+.. automodule:: openstack.identity.v3.system
+
+The System Class
+----------------
+
+The ``System`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.system.System
+   :members:
diff --git a/doc/source/user/resources/identity/v3/trust.rst b/doc/source/user/resources/identity/v3/trust.rst
new file mode 100644
index 0000000..fdb945e
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/trust.rst
@@ -0,0 +1,12 @@
+openstack.identity.v3.trust
+===========================
+
+.. automodule:: openstack.identity.v3.trust
+
+The Trust Class
+---------------
+
+The ``Trust`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.trust.Trust
+   :members:
diff --git a/doc/source/user/resources/identity/v3/user.rst b/doc/source/user/resources/identity/v3/user.rst
new file mode 100644
index 0000000..6ba7ae3
--- /dev/null
+++ b/doc/source/user/resources/identity/v3/user.rst
@@ -0,0 +1,12 @@
+openstack.identity.v3.user
+==========================
+
+.. automodule:: openstack.identity.v3.user
+
+The User Class
+--------------
+
+The ``User`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.v3.user.User
+   :members:
diff --git a/doc/source/user/resources/identity/version.rst b/doc/source/user/resources/identity/version.rst
new file mode 100644
index 0000000..1fe3bfb
--- /dev/null
+++ b/doc/source/user/resources/identity/version.rst
@@ -0,0 +1,12 @@
+openstack.identity.version
+==========================
+
+.. automodule:: openstack.identity.version
+
+The Version Class
+-----------------
+
+The ``Version`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.identity.version.Version
+   :members:
diff --git a/doc/source/user/resources/image/index.rst b/doc/source/user/resources/image/index.rst
new file mode 100644
index 0000000..c6ef3d7
--- /dev/null
+++ b/doc/source/user/resources/image/index.rst
@@ -0,0 +1,26 @@
+Image Resources
+===============
+
+Image v1 Resources
+------------------
+
+.. toctree::
+   :maxdepth: 1
+
+   v1/image
+
+Image v2 Resources
+------------------
+
+.. toctree::
+   :maxdepth: 1
+
+   v2/image
+   v2/member
+   v2/metadef_namespace
+   v2/metadef_object
+   v2/metadef_resource_type
+   v2/metadef_property
+   v2/metadef_schema
+   v2/task
+   v2/service_info
diff --git a/doc/source/user/resources/image/v1/image.rst b/doc/source/user/resources/image/v1/image.rst
new file mode 100644
index 0000000..7f5dffd
--- /dev/null
+++ b/doc/source/user/resources/image/v1/image.rst
@@ -0,0 +1,12 @@
+openstack.image.v1.image
+========================
+
+.. automodule:: openstack.image.v1.image
+
+The Image Class
+---------------
+
+The ``Image`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.image.v1.image.Image
+   :members:
diff --git a/doc/source/user/resources/image/v2/image.rst b/doc/source/user/resources/image/v2/image.rst
new file mode 100644
index 0000000..5d51cba
--- /dev/null
+++ b/doc/source/user/resources/image/v2/image.rst
@@ -0,0 +1,12 @@
+openstack.image.v2.image
+========================
+
+.. automodule:: openstack.image.v2.image
+
+The Image Class
+---------------
+
+The ``Image`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.image.v2.image.Image
+   :members:
diff --git a/doc/source/user/resources/image/v2/member.rst b/doc/source/user/resources/image/v2/member.rst
new file mode 100644
index 0000000..03107fd
--- /dev/null
+++ b/doc/source/user/resources/image/v2/member.rst
@@ -0,0 +1,12 @@
+openstack.image.v2.member
+=========================
+
+.. automodule:: openstack.image.v2.member
+
+The Member Class
+----------------
+
+The ``Member`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.image.v2.member.Member
+   :members:
diff --git a/doc/source/user/resources/image/v2/metadef_namespace.rst b/doc/source/user/resources/image/v2/metadef_namespace.rst
new file mode 100644
index 0000000..de2c0f5
--- /dev/null
+++ b/doc/source/user/resources/image/v2/metadef_namespace.rst
@@ -0,0 +1,13 @@
+openstack.image.v2.metadef_namespace
+=====================================
+
+.. automodule:: openstack.image.v2.metadef_namespace
+
+The MetadefNamespace Class
+----------------------------
+
+The ``MetadefNamespace`` class inherits
+from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.image.v2.metadef_namespace.MetadefNamespace
+   :members:
diff --git a/doc/source/user/resources/image/v2/metadef_object.rst b/doc/source/user/resources/image/v2/metadef_object.rst
new file mode 100644
index 0000000..2f9548a
--- /dev/null
+++ b/doc/source/user/resources/image/v2/metadef_object.rst
@@ -0,0 +1,13 @@
+openstack.image.v2.metadef_object
+==================================
+
+.. automodule:: openstack.image.v2.metadef_object
+
+The MetadefObject Class
+------------------------
+
+The ``MetadefObject`` class inherits
+from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.image.v2.metadef_object.MetadefObject
+   :members:
diff --git a/doc/source/user/resources/image/v2/metadef_property.rst b/doc/source/user/resources/image/v2/metadef_property.rst
new file mode 100644
index 0000000..e70fff6
--- /dev/null
+++ b/doc/source/user/resources/image/v2/metadef_property.rst
@@ -0,0 +1,13 @@
+openstack.image.v2.metadef_property
+===================================
+
+.. automodule:: openstack.image.v2.metadef_property
+
+The MetadefProperty Class
+-------------------------
+
+The ``MetadefProperty`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.image.v2.metadef_property.MetadefProperty
+   :members:
diff --git a/doc/source/user/resources/image/v2/metadef_resource_type.rst b/doc/source/user/resources/image/v2/metadef_resource_type.rst
new file mode 100644
index 0000000..c20ba94
--- /dev/null
+++ b/doc/source/user/resources/image/v2/metadef_resource_type.rst
@@ -0,0 +1,24 @@
+openstack.image.v2.metadef_resource_type
+========================================
+
+.. automodule:: openstack.image.v2.metadef_resource_type
+
+The MetadefResourceType Class
+-----------------------------
+
+The ``MetadefResourceType`` class inherits
+from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.image.v2.metadef_resource_type.MetadefResourceType
+   :members:
+
+
+The MetadefResourceTypeAssociation Class
+----------------------------------------
+
+The ``MetadefResourceTypeAssociation`` class inherits
+from :class:`~openstack.resource.Resource`.
+
+.. autoclass::
+    openstack.image.v2.metadef_resource_type.MetadefResourceTypeAssociation
+    :members:
diff --git a/doc/source/user/resources/image/v2/metadef_schema.rst b/doc/source/user/resources/image/v2/metadef_schema.rst
new file mode 100644
index 0000000..8332ee4
--- /dev/null
+++ b/doc/source/user/resources/image/v2/metadef_schema.rst
@@ -0,0 +1,13 @@
+openstack.image.v2.metadef_schema
+=================================
+
+.. automodule:: openstack.image.v2.metadef_schema
+
+The MetadefSchema Class
+-----------------------
+
+The ``MetadefSchema`` class inherits
+from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.image.v2.metadef_schema.MetadefSchema
+   :members:
diff --git a/doc/source/user/resources/image/v2/service_info.rst b/doc/source/user/resources/image/v2/service_info.rst
new file mode 100644
index 0000000..92bae89
--- /dev/null
+++ b/doc/source/user/resources/image/v2/service_info.rst
@@ -0,0 +1,20 @@
+openstack.image.v2.service_info
+===============================
+
+.. automodule:: openstack.image.v2.service_info
+
+The Store Class
+----------------
+
+The ``Store`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.image.v2.service_info.Store
+   :members:
+
+The Import Info Class
+---------------------
+
+The ``Import`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.image.v2.service_info.Import
+   :members:
diff --git a/doc/source/user/resources/image/v2/task.rst b/doc/source/user/resources/image/v2/task.rst
new file mode 100644
index 0000000..3e6652e
--- /dev/null
+++ b/doc/source/user/resources/image/v2/task.rst
@@ -0,0 +1,12 @@
+openstack.image.v2.task
+=======================
+
+.. automodule:: openstack.image.v2.task
+
+The Task Class
+--------------
+
+The ``Task`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.image.v2.task.Task
+   :members:
diff --git a/doc/source/user/resources/key_manager/index.rst b/doc/source/user/resources/key_manager/index.rst
new file mode 100644
index 0000000..76b6659
--- /dev/null
+++ b/doc/source/user/resources/key_manager/index.rst
@@ -0,0 +1,9 @@
+KeyManager Resources
+====================
+
+.. toctree::
+   :maxdepth: 1
+
+   v1/container
+   v1/order
+   v1/secret
diff --git a/doc/source/user/resources/key_manager/v1/container.rst b/doc/source/user/resources/key_manager/v1/container.rst
new file mode 100644
index 0000000..601e7b1
--- /dev/null
+++ b/doc/source/user/resources/key_manager/v1/container.rst
@@ -0,0 +1,12 @@
+openstack.key_manager.v1.container
+==================================
+
+.. automodule:: openstack.key_manager.v1.container
+
+The Container Class
+-------------------
+
+The ``Container`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.key_manager.v1.container.Container
+   :members:
diff --git a/doc/source/user/resources/key_manager/v1/order.rst b/doc/source/user/resources/key_manager/v1/order.rst
new file mode 100644
index 0000000..2f53627
--- /dev/null
+++ b/doc/source/user/resources/key_manager/v1/order.rst
@@ -0,0 +1,12 @@
+openstack.key_manager.v1.order
+==============================
+
+.. automodule:: openstack.key_manager.v1.order
+
+The Order Class
+---------------
+
+The ``Order`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.key_manager.v1.order.Order
+   :members:
diff --git a/doc/source/user/resources/key_manager/v1/secret.rst b/doc/source/user/resources/key_manager/v1/secret.rst
new file mode 100644
index 0000000..8d0a56e
--- /dev/null
+++ b/doc/source/user/resources/key_manager/v1/secret.rst
@@ -0,0 +1,12 @@
+openstack.key_manager.v1.secret
+===============================
+
+.. automodule:: openstack.key_manager.v1.secret
+
+The Secret Class
+----------------
+
+The ``Secret`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.key_manager.v1.secret.Secret
+   :members:
diff --git a/doc/source/user/resources/load_balancer/index.rst b/doc/source/user/resources/load_balancer/index.rst
new file mode 100644
index 0000000..1eebf37
--- /dev/null
+++ b/doc/source/user/resources/load_balancer/index.rst
@@ -0,0 +1,20 @@
+Load Balancer Resources
+=======================
+
+.. toctree::
+   :maxdepth: 1
+
+   v2/load_balancer
+   v2/listener
+   v2/pool
+   v2/member
+   v2/health_monitor
+   v2/l7_policy
+   v2/l7_rule
+   v2/provider
+   v2/flavor_profile
+   v2/flavor
+   v2/quota
+   v2/amphora
+   v2/availability_zone_profile
+   v2/availability_zone
diff --git a/doc/source/user/resources/load_balancer/v2/amphora.rst b/doc/source/user/resources/load_balancer/v2/amphora.rst
new file mode 100644
index 0000000..c89d1ee
--- /dev/null
+++ b/doc/source/user/resources/load_balancer/v2/amphora.rst
@@ -0,0 +1,30 @@
+openstack.load_balancer.v2.amphora
+==================================
+
+.. automodule:: openstack.load_balancer.v2.amphora
+
+The Amphora Class
+-----------------
+
+The ``Amphora`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.amphora.Amphora
+   :members:
+
+The AmphoraConfig Class
+-----------------------
+
+The ``AmphoraConfig`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.amphora.AmphoraConfig
+   :members:
+
+The AmphoraFailover Class
+-------------------------
+
+The ``AmphoraFailover`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.amphora.AmphoraFailover
+   :members:
diff --git a/doc/source/user/resources/load_balancer/v2/availability_zone.rst b/doc/source/user/resources/load_balancer/v2/availability_zone.rst
new file mode 100644
index 0000000..8f8889b
--- /dev/null
+++ b/doc/source/user/resources/load_balancer/v2/availability_zone.rst
@@ -0,0 +1,13 @@
+openstack.load_balancer.v2.availability_zone
+============================================
+
+.. automodule:: openstack.load_balancer.v2.availability_zone
+
+The AvailabilityZone Class
+--------------------------
+
+The ``AvailabilityZone`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.availability_zone.AvailabilityZone
+   :members:
diff --git a/doc/source/user/resources/load_balancer/v2/availability_zone_profile.rst b/doc/source/user/resources/load_balancer/v2/availability_zone_profile.rst
new file mode 100644
index 0000000..0aa2c6a
--- /dev/null
+++ b/doc/source/user/resources/load_balancer/v2/availability_zone_profile.rst
@@ -0,0 +1,13 @@
+openstack.load_balancer.v2.availability_zone_profile
+====================================================
+
+.. automodule:: openstack.load_balancer.v2.availability_zone_profile
+
+The AvailabilityZoneProfile Class
+---------------------------------
+
+The ``AvailabilityZoneProfile`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.availability_zone_profile.AvailabilityZoneProfile
+   :members:
diff --git a/doc/source/user/resources/load_balancer/v2/flavor.rst b/doc/source/user/resources/load_balancer/v2/flavor.rst
new file mode 100644
index 0000000..57b97ba
--- /dev/null
+++ b/doc/source/user/resources/load_balancer/v2/flavor.rst
@@ -0,0 +1,12 @@
+openstack.load_balancer.v2.flavor
+=================================
+
+.. automodule:: openstack.load_balancer.v2.flavor
+
+The Flavor Class
+----------------
+
+The ``Flavor`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.flavor.Flavor
+   :members:
diff --git a/doc/source/user/resources/load_balancer/v2/flavor_profile.rst b/doc/source/user/resources/load_balancer/v2/flavor_profile.rst
new file mode 100644
index 0000000..8a702f9
--- /dev/null
+++ b/doc/source/user/resources/load_balancer/v2/flavor_profile.rst
@@ -0,0 +1,13 @@
+openstack.load_balancer.v2.flavor_profile
+=========================================
+
+.. automodule:: openstack.load_balancer.v2.flavor_profile
+
+The FlavorProfile Class
+-----------------------
+
+The ``FlavorProfile`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.flavor_profile.FlavorProfile
+   :members:
diff --git a/doc/source/user/resources/load_balancer/v2/health_monitor.rst b/doc/source/user/resources/load_balancer/v2/health_monitor.rst
new file mode 100644
index 0000000..7f90f42
--- /dev/null
+++ b/doc/source/user/resources/load_balancer/v2/health_monitor.rst
@@ -0,0 +1,13 @@
+openstack.load_balancer.v2.health_monitor
+=========================================
+
+.. automodule:: openstack.load_balancer.v2.health_monitor
+
+The HealthMonitor Class
+-----------------------
+
+The ``HealthMonitor`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.health_monitor.HealthMonitor
+   :members:
diff --git a/doc/source/user/resources/load_balancer/v2/l7_policy.rst b/doc/source/user/resources/load_balancer/v2/l7_policy.rst
new file mode 100644
index 0000000..2a5e6f0
--- /dev/null
+++ b/doc/source/user/resources/load_balancer/v2/l7_policy.rst
@@ -0,0 +1,12 @@
+openstack.load_balancer.v2.l7_policy
+====================================
+
+.. automodule:: openstack.load_balancer.v2.l7_policy
+
+The L7Policy Class
+------------------
+
+The ``L7Policy`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.l7_policy.L7Policy
+   :members:
diff --git a/doc/source/user/resources/load_balancer/v2/l7_rule.rst b/doc/source/user/resources/load_balancer/v2/l7_rule.rst
new file mode 100644
index 0000000..c661cd6
--- /dev/null
+++ b/doc/source/user/resources/load_balancer/v2/l7_rule.rst
@@ -0,0 +1,12 @@
+openstack.load_balancer.v2.l7_rule
+==================================
+
+.. automodule:: openstack.load_balancer.v2.l7_rule
+
+The L7Rule Class
+----------------
+
+The ``L7Rule`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.l7_rule.L7Rule
+   :members:
diff --git a/doc/source/user/resources/load_balancer/v2/listener.rst b/doc/source/user/resources/load_balancer/v2/listener.rst
new file mode 100644
index 0000000..b94bc73
--- /dev/null
+++ b/doc/source/user/resources/load_balancer/v2/listener.rst
@@ -0,0 +1,21 @@
+openstack.load_balancer.v2.listener
+===================================
+
+.. automodule:: openstack.load_balancer.v2.listener
+
+The Listener Class
+------------------
+
+The ``Listener`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.listener.Listener
+   :members:
+
+The ListenerStats Class
+-----------------------
+
+The ``ListenerStats`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.listener.ListenerStats
+   :members:
diff --git a/doc/source/user/resources/load_balancer/v2/load_balancer.rst b/doc/source/user/resources/load_balancer/v2/load_balancer.rst
new file mode 100644
index 0000000..9e14560
--- /dev/null
+++ b/doc/source/user/resources/load_balancer/v2/load_balancer.rst
@@ -0,0 +1,30 @@
+openstack.load_balancer.v2.load_balancer
+========================================
+
+.. automodule:: openstack.load_balancer.v2.load_balancer
+
+The LoadBalancer Class
+----------------------
+
+The ``LoadBalancer`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.load_balancer.LoadBalancer
+   :members:
+
+The LoadBalancerStats Class
+---------------------------
+
+The ``LoadBalancerStats`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.load_balancer.LoadBalancerStats
+   :members:
+
+The LoadBalancerFailover Class
+------------------------------
+
+The ``LoadBalancerFailover`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.load_balancer.LoadBalancerFailover
+   :members:
diff --git a/doc/source/user/resources/load_balancer/v2/member.rst b/doc/source/user/resources/load_balancer/v2/member.rst
new file mode 100644
index 0000000..1fff01f
--- /dev/null
+++ b/doc/source/user/resources/load_balancer/v2/member.rst
@@ -0,0 +1,12 @@
+openstack.load_balancer.v2.member
+=================================
+
+.. automodule:: openstack.load_balancer.v2.member
+
+The Member Class
+----------------
+
+The ``Member`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.member.Member
+   :members:
diff --git a/doc/source/user/resources/load_balancer/v2/pool.rst b/doc/source/user/resources/load_balancer/v2/pool.rst
new file mode 100644
index 0000000..e67f97c
--- /dev/null
+++ b/doc/source/user/resources/load_balancer/v2/pool.rst
@@ -0,0 +1,12 @@
+openstack.load_balancer.v2.pool
+===============================
+
+.. automodule:: openstack.load_balancer.v2.pool
+
+The Pool Class
+--------------
+
+The ``Pool`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.pool.Pool
+   :members:
diff --git a/doc/source/user/resources/load_balancer/v2/provider.rst b/doc/source/user/resources/load_balancer/v2/provider.rst
new file mode 100644
index 0000000..b9c5af9
--- /dev/null
+++ b/doc/source/user/resources/load_balancer/v2/provider.rst
@@ -0,0 +1,21 @@
+openstack.load_balancer.v2.provider
+===================================
+
+.. automodule:: openstack.load_balancer.v2.provider
+
+The Provider Class
+------------------
+
+The ``Provider`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.provider.Provider
+   :members:
+
+The Provider Flavor Capabilities Class
+--------------------------------------
+
+The ``ProviderFlavorCapabilities`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.provider.ProviderFlavorCapabilities
+   :members:
diff --git a/doc/source/user/resources/load_balancer/v2/quota.rst b/doc/source/user/resources/load_balancer/v2/quota.rst
new file mode 100644
index 0000000..1bf0335
--- /dev/null
+++ b/doc/source/user/resources/load_balancer/v2/quota.rst
@@ -0,0 +1,12 @@
+openstack.load_balancer.v2.quota
+================================
+
+.. automodule:: openstack.load_balancer.v2.quota
+
+The Quota Class
+---------------
+
+The ``Quota`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.load_balancer.v2.quota.Quota
+   :members:
diff --git a/doc/source/user/resources/network/index.rst b/doc/source/user/resources/network/index.rst
new file mode 100644
index 0000000..ff06377
--- /dev/null
+++ b/doc/source/user/resources/network/index.rst
@@ -0,0 +1,9 @@
+Network Resources
+=================
+
+.. toctree::
+   :maxdepth: 1
+   :glob:
+
+   v2/*
+   v2/vpn/index
diff --git a/doc/source/user/resources/network/v2/address_group.rst b/doc/source/user/resources/network/v2/address_group.rst
new file mode 100644
index 0000000..34360fc
--- /dev/null
+++ b/doc/source/user/resources/network/v2/address_group.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.address_group
+==================================
+
+.. automodule:: openstack.network.v2.address_group
+
+The AddressGroup Class
+----------------------
+
+The ``AddressGroup`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.address_group.AddressGroup
+   :members:
diff --git a/doc/source/user/resources/network/v2/address_scope.rst b/doc/source/user/resources/network/v2/address_scope.rst
new file mode 100644
index 0000000..6b8274a
--- /dev/null
+++ b/doc/source/user/resources/network/v2/address_scope.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.address_scope
+==================================
+
+.. automodule:: openstack.network.v2.address_scope
+
+The AddressScope Class
+----------------------
+
+The ``AddressScope`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.address_scope.AddressScope
+   :members:
diff --git a/doc/source/user/resources/network/v2/agent.rst b/doc/source/user/resources/network/v2/agent.rst
new file mode 100644
index 0000000..5593e6d
--- /dev/null
+++ b/doc/source/user/resources/network/v2/agent.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.agent
+==========================
+
+.. automodule:: openstack.network.v2.agent
+
+The Agent Class
+---------------
+
+The ``Agent`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.agent.Agent
+   :members:
diff --git a/doc/source/user/resources/network/v2/auto_allocated_topology.rst b/doc/source/user/resources/network/v2/auto_allocated_topology.rst
new file mode 100644
index 0000000..a3700d0
--- /dev/null
+++ b/doc/source/user/resources/network/v2/auto_allocated_topology.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.auto_allocated_topology
+============================================
+
+.. automodule:: openstack.network.v2.auto_allocated_topology
+
+The Auto Allocated Topology Class
+---------------------------------
+
+The ``Auto Allocated Toplogy`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.auto_allocated_topology.AutoAllocatedTopology
+   :members:
diff --git a/doc/source/user/resources/network/v2/availability_zone.rst b/doc/source/user/resources/network/v2/availability_zone.rst
new file mode 100644
index 0000000..da386ce
--- /dev/null
+++ b/doc/source/user/resources/network/v2/availability_zone.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.availability_zone
+======================================
+
+.. automodule:: openstack.network.v2.availability_zone
+
+The AvailabilityZone Class
+--------------------------
+
+The ``AvailabilityZone`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.availability_zone.AvailabilityZone
+   :members:
diff --git a/doc/source/user/resources/network/v2/bgp_peer.rst b/doc/source/user/resources/network/v2/bgp_peer.rst
new file mode 100644
index 0000000..35fd5a6
--- /dev/null
+++ b/doc/source/user/resources/network/v2/bgp_peer.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.bgp_peer
+=============================
+
+.. automodule:: openstack.network.v2.bgp_peer
+
+The BgpPeer Class
+-----------------
+
+The ``BgpPeer`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.bgp_peer.BgpPeer
+   :members:
diff --git a/doc/source/user/resources/network/v2/bgp_speaker.rst b/doc/source/user/resources/network/v2/bgp_speaker.rst
new file mode 100644
index 0000000..147d6b5
--- /dev/null
+++ b/doc/source/user/resources/network/v2/bgp_speaker.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.bgp_speaker
+================================
+
+.. automodule:: openstack.network.v2.bgp_speaker
+
+The BgpSpeaker Class
+--------------------
+
+The ``BgpSpeaker`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.bgp_speaker.BgpSpeaker
+   :members:
diff --git a/doc/source/user/resources/network/v2/bgpvpn.rst b/doc/source/user/resources/network/v2/bgpvpn.rst
new file mode 100644
index 0000000..4c5d8af
--- /dev/null
+++ b/doc/source/user/resources/network/v2/bgpvpn.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.bgpvpn
+=============================
+
+.. automodule:: openstack.network.v2.bgpvpn
+
+The BgpVpn Class
+-----------------
+
+The ``BgpVpn`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.bgpvpn.BgpVpn
+   :members:
diff --git a/doc/source/user/resources/network/v2/bgpvpn_network_association.rst b/doc/source/user/resources/network/v2/bgpvpn_network_association.rst
new file mode 100644
index 0000000..9d78df4
--- /dev/null
+++ b/doc/source/user/resources/network/v2/bgpvpn_network_association.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.bgpvpn_network_association
+===============================================
+
+.. automodule:: openstack.network.v2.bgpvpn_network_association
+
+The BgpVpnNetworkAssociation Class
+----------------------------------
+
+The ``BgpVpnNetworkAssociation`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.bgpvpn_network_association.BgpVpnNetworkAssociation
+   :members:
diff --git a/doc/source/user/resources/network/v2/bgpvpn_port_association.rst b/doc/source/user/resources/network/v2/bgpvpn_port_association.rst
new file mode 100644
index 0000000..07584c1
--- /dev/null
+++ b/doc/source/user/resources/network/v2/bgpvpn_port_association.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.bgpvpn_port_association
+============================================
+
+.. automodule:: openstack.network.v2.bgpvpn_port_association
+
+The BgpVpnPortAssociation Class
+-------------------------------
+
+The ``BgpVpnPortAssociation`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.bgpvpn_port_association.BgpVpnPortAssociation
+   :members:
diff --git a/doc/source/user/resources/network/v2/bgpvpn_router_association.rst b/doc/source/user/resources/network/v2/bgpvpn_router_association.rst
new file mode 100644
index 0000000..4f046da
--- /dev/null
+++ b/doc/source/user/resources/network/v2/bgpvpn_router_association.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.bgpvpn_router_association
+==============================================
+
+.. automodule:: openstack.network.v2.bgpvpn_router_association
+
+The BgpVpnRouterAssociation Class
+---------------------------------
+
+The ``BgpVpnRouterAssociation`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.bgpvpn_router_association.BgpVpnRouterAssociation
+   :members:
diff --git a/doc/source/user/resources/network/v2/extension.rst b/doc/source/user/resources/network/v2/extension.rst
new file mode 100644
index 0000000..c5ff15e
--- /dev/null
+++ b/doc/source/user/resources/network/v2/extension.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.extension
+==============================
+
+.. automodule:: openstack.network.v2.extension
+
+The Extension Class
+-------------------
+
+The ``Extension`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.extension.Extension
+   :members:
diff --git a/doc/source/user/resources/network/v2/flavor.rst b/doc/source/user/resources/network/v2/flavor.rst
new file mode 100644
index 0000000..8810a9c
--- /dev/null
+++ b/doc/source/user/resources/network/v2/flavor.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.flavor
+===========================
+
+.. automodule:: openstack.network.v2.flavor
+
+The Flavor Class
+----------------
+
+The ``Flavor`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.flavor.Flavor
+   :members:
diff --git a/doc/source/user/resources/network/v2/floating_ip.rst b/doc/source/user/resources/network/v2/floating_ip.rst
new file mode 100644
index 0000000..2badbce
--- /dev/null
+++ b/doc/source/user/resources/network/v2/floating_ip.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.floating_ip
+================================
+
+.. automodule:: openstack.network.v2.floating_ip
+
+The FloatingIP Class
+--------------------
+
+The ``FloatingIP`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.floating_ip.FloatingIP
+   :members:
diff --git a/doc/source/user/resources/network/v2/health_monitor.rst b/doc/source/user/resources/network/v2/health_monitor.rst
new file mode 100644
index 0000000..76cf6a7
--- /dev/null
+++ b/doc/source/user/resources/network/v2/health_monitor.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.health_monitor
+===================================
+
+.. automodule:: openstack.network.v2.health_monitor
+
+The HealthMonitor Class
+-----------------------
+
+The ``HealthMonitor`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.health_monitor.HealthMonitor
+   :members:
diff --git a/doc/source/user/resources/network/v2/listener.rst b/doc/source/user/resources/network/v2/listener.rst
new file mode 100644
index 0000000..a9fa482
--- /dev/null
+++ b/doc/source/user/resources/network/v2/listener.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.listener
+=============================
+
+.. automodule:: openstack.network.v2.listener
+
+The Listener Class
+------------------
+
+The ``Listener`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.listener.Listener
+   :members:
diff --git a/doc/source/user/resources/network/v2/load_balancer.rst b/doc/source/user/resources/network/v2/load_balancer.rst
new file mode 100644
index 0000000..6169582
--- /dev/null
+++ b/doc/source/user/resources/network/v2/load_balancer.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.load_balancer
+==================================
+
+.. automodule:: openstack.network.v2.load_balancer
+
+The LoadBalancer Class
+----------------------
+
+The ``LoadBalancer`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.load_balancer.LoadBalancer
+   :members:
diff --git a/doc/source/user/resources/network/v2/local_ip.rst b/doc/source/user/resources/network/v2/local_ip.rst
new file mode 100644
index 0000000..30f846a
--- /dev/null
+++ b/doc/source/user/resources/network/v2/local_ip.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.local_ip
+=============================
+
+.. automodule:: openstack.network.v2.local_ip
+
+The LocalIP Class
+-----------------
+
+The ``LocalIP`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.local_ip.LocalIP
+   :members:
diff --git a/doc/source/user/resources/network/v2/local_ip_association.rst b/doc/source/user/resources/network/v2/local_ip_association.rst
new file mode 100644
index 0000000..12b59a9
--- /dev/null
+++ b/doc/source/user/resources/network/v2/local_ip_association.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.local_ip_association
+=========================================
+
+.. automodule:: openstack.network.v2.local_ip_association
+
+The LocalIPAssociation Class
+----------------------------
+
+The ``LocalIPAssociation`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.local_ip_association.LocalIPAssociation
+   :members:
diff --git a/doc/source/user/resources/network/v2/metering_label.rst b/doc/source/user/resources/network/v2/metering_label.rst
new file mode 100644
index 0000000..d07f025
--- /dev/null
+++ b/doc/source/user/resources/network/v2/metering_label.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.metering_label
+===================================
+
+.. automodule:: openstack.network.v2.metering_label
+
+The MeteringLabel Class
+-----------------------
+
+The ``MeteringLabel`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.metering_label.MeteringLabel
+   :members:
diff --git a/doc/source/user/resources/network/v2/metering_label_rule.rst b/doc/source/user/resources/network/v2/metering_label_rule.rst
new file mode 100644
index 0000000..9bcf784
--- /dev/null
+++ b/doc/source/user/resources/network/v2/metering_label_rule.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.metering_label_rule
+========================================
+
+.. automodule:: openstack.network.v2.metering_label_rule
+
+The MeteringLabelRule Class
+---------------------------
+
+The ``MeteringLabelRule`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.metering_label_rule.MeteringLabelRule
+   :members:
diff --git a/doc/source/user/resources/network/v2/ndp_proxy.rst b/doc/source/user/resources/network/v2/ndp_proxy.rst
new file mode 100644
index 0000000..c5479e7
--- /dev/null
+++ b/doc/source/user/resources/network/v2/ndp_proxy.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.ndp_proxy
+==============================
+
+.. automodule:: openstack.network.v2.ndp_proxy
+
+The NDPProxy Class
+------------------
+
+The ``NDPProxy`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.ndp_proxy.NDPProxy
+   :members:
diff --git a/doc/source/user/resources/network/v2/network.rst b/doc/source/user/resources/network/v2/network.rst
new file mode 100644
index 0000000..8c6f6f2
--- /dev/null
+++ b/doc/source/user/resources/network/v2/network.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.network
+============================
+
+.. automodule:: openstack.network.v2.network
+
+The Network Class
+-----------------
+
+The ``Network`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.network.Network
+   :members:
diff --git a/doc/source/user/resources/network/v2/network_ip_availability.rst b/doc/source/user/resources/network/v2/network_ip_availability.rst
new file mode 100644
index 0000000..900f246
--- /dev/null
+++ b/doc/source/user/resources/network/v2/network_ip_availability.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.network_ip_availability
+============================================
+
+.. automodule:: openstack.network.v2.network_ip_availability
+
+The NetworkIPAvailability Class
+-------------------------------
+
+The ``NetworkIPAvailability`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.network_ip_availability.NetworkIPAvailability
+   :members:
diff --git a/doc/source/user/resources/network/v2/network_segment_range.rst b/doc/source/user/resources/network/v2/network_segment_range.rst
new file mode 100644
index 0000000..1f2c55d
--- /dev/null
+++ b/doc/source/user/resources/network/v2/network_segment_range.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.network_segment_range
+==========================================
+
+.. automodule:: openstack.network.v2.network_segment_range
+
+The NetworkSegmentRange Class
+-----------------------------
+
+The ``NetworkSegmentRange`` class inherits from :class:`~openstack.resource
+.Resource`.
+
+.. autoclass:: openstack.network.v2.network_segment_range.NetworkSegmentRange
+   :members:
diff --git a/doc/source/user/resources/network/v2/pool.rst b/doc/source/user/resources/network/v2/pool.rst
new file mode 100644
index 0000000..6b94a70
--- /dev/null
+++ b/doc/source/user/resources/network/v2/pool.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.pool
+=========================
+
+.. automodule:: openstack.network.v2.pool
+
+The Pool Class
+--------------
+
+The ``Pool`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.pool.Pool
+   :members:
diff --git a/doc/source/user/resources/network/v2/pool_member.rst b/doc/source/user/resources/network/v2/pool_member.rst
new file mode 100644
index 0000000..ce80a1d
--- /dev/null
+++ b/doc/source/user/resources/network/v2/pool_member.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.pool_member
+================================
+
+.. automodule:: openstack.network.v2.pool_member
+
+The PoolMember Class
+--------------------
+
+The ``PoolMember`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.pool_member.PoolMember
+   :members:
diff --git a/doc/source/user/resources/network/v2/port.rst b/doc/source/user/resources/network/v2/port.rst
new file mode 100644
index 0000000..b592d36
--- /dev/null
+++ b/doc/source/user/resources/network/v2/port.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.port
+=========================
+
+.. automodule:: openstack.network.v2.port
+
+The Port Class
+--------------
+
+The ``Port`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.port.Port
+   :members:
diff --git a/doc/source/user/resources/network/v2/qos_bandwidth_limit_rule.rst b/doc/source/user/resources/network/v2/qos_bandwidth_limit_rule.rst
new file mode 100644
index 0000000..98d9040
--- /dev/null
+++ b/doc/source/user/resources/network/v2/qos_bandwidth_limit_rule.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.qos_bandwidth_limit_rule
+=============================================
+
+.. automodule:: openstack.network.v2.qos_bandwidth_limit_rule
+
+The QoSBandwidthLimitRule Class
+-------------------------------
+
+The ``QoSBandwidthLimitRule`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.qos_bandwidth_limit_rule.QoSBandwidthLimitRule
+   :members:
diff --git a/doc/source/user/resources/network/v2/qos_dscp_marking_rule.rst b/doc/source/user/resources/network/v2/qos_dscp_marking_rule.rst
new file mode 100644
index 0000000..c000236
--- /dev/null
+++ b/doc/source/user/resources/network/v2/qos_dscp_marking_rule.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.qos_dscp_marking_rule
+==========================================
+
+.. automodule:: openstack.network.v2.qos_dscp_marking_rule
+
+The QoSDSCPMarkingRule Class
+----------------------------
+
+The ``QoSDSCPMarkingRule`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.qos_dscp_marking_rule.QoSDSCPMarkingRule
+   :members:
diff --git a/doc/source/user/resources/network/v2/qos_minimum_bandwidth_rule.rst b/doc/source/user/resources/network/v2/qos_minimum_bandwidth_rule.rst
new file mode 100644
index 0000000..05c5276
--- /dev/null
+++ b/doc/source/user/resources/network/v2/qos_minimum_bandwidth_rule.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.qos_minimum_bandwidth_rule
+===============================================
+
+.. automodule:: openstack.network.v2.qos_minimum_bandwidth_rule
+
+The QoSMinimumBandwidthRule Class
+---------------------------------
+
+The ``QoSMinimumBandwidthRule`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.qos_minimum_bandwidth_rule.QoSMinimumBandwidthRule
+   :members:
diff --git a/doc/source/user/resources/network/v2/qos_minimum_packet_rate_rule.rst b/doc/source/user/resources/network/v2/qos_minimum_packet_rate_rule.rst
new file mode 100644
index 0000000..19b7b01
--- /dev/null
+++ b/doc/source/user/resources/network/v2/qos_minimum_packet_rate_rule.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.qos_minimum_packet_rate_rule
+=================================================
+
+.. automodule:: openstack.network.v2.qos_minimum_packet_rate_rule
+
+The QoSMinimumPacketRateRule Class
+----------------------------------
+
+The ``QoSMinimumPacketRateRule`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.qos_minimum_packet_rate_rule.QoSMinimumPacketRateRule
+   :members:
diff --git a/doc/source/user/resources/network/v2/qos_policy.rst b/doc/source/user/resources/network/v2/qos_policy.rst
new file mode 100644
index 0000000..edffe5c
--- /dev/null
+++ b/doc/source/user/resources/network/v2/qos_policy.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.qos_policy
+===============================
+
+.. automodule:: openstack.network.v2.qos_policy
+
+The QoSPolicy Class
+-------------------
+
+The ``QoSPolicy`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.qos_policy.QoSPolicy
+   :members:
diff --git a/doc/source/user/resources/network/v2/qos_rule_type.rst b/doc/source/user/resources/network/v2/qos_rule_type.rst
new file mode 100644
index 0000000..6d5ed5a
--- /dev/null
+++ b/doc/source/user/resources/network/v2/qos_rule_type.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.qos_rule_type
+==================================
+
+.. automodule:: openstack.network.v2.qos_rule_type
+
+The QoSRuleType Class
+---------------------
+
+The ``QoSRuleType`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.qos_rule_type.QoSRuleType
+   :members:
diff --git a/doc/source/user/resources/network/v2/quota.rst b/doc/source/user/resources/network/v2/quota.rst
new file mode 100644
index 0000000..e150720
--- /dev/null
+++ b/doc/source/user/resources/network/v2/quota.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.quota
+==========================
+
+.. automodule:: openstack.network.v2.quota
+
+The Quota Class
+---------------
+
+The ``Quota`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.quota.Quota
+   :members:
diff --git a/doc/source/user/resources/network/v2/rbac_policy.rst b/doc/source/user/resources/network/v2/rbac_policy.rst
new file mode 100644
index 0000000..062da1d
--- /dev/null
+++ b/doc/source/user/resources/network/v2/rbac_policy.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.rbac_policy
+================================
+
+.. automodule:: openstack.network.v2.rbac_policy
+
+The RBACPolicy Class
+--------------------
+
+The ``RBACPolicy`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.rbac_policy.RBACPolicy
+   :members:
diff --git a/doc/source/user/resources/network/v2/router.rst b/doc/source/user/resources/network/v2/router.rst
new file mode 100644
index 0000000..83126d4
--- /dev/null
+++ b/doc/source/user/resources/network/v2/router.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.router
+===========================
+
+.. automodule:: openstack.network.v2.router
+
+The Router Class
+----------------
+
+The ``Router`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.router.Router
+   :members:
diff --git a/doc/source/user/resources/network/v2/security_group.rst b/doc/source/user/resources/network/v2/security_group.rst
new file mode 100644
index 0000000..2d0c860
--- /dev/null
+++ b/doc/source/user/resources/network/v2/security_group.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.security_group
+===================================
+
+.. automodule:: openstack.network.v2.security_group
+
+The SecurityGroup Class
+-----------------------
+
+The ``SecurityGroup`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.security_group.SecurityGroup
+   :members:
diff --git a/doc/source/user/resources/network/v2/security_group_rule.rst b/doc/source/user/resources/network/v2/security_group_rule.rst
new file mode 100644
index 0000000..8af566e
--- /dev/null
+++ b/doc/source/user/resources/network/v2/security_group_rule.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.security_group_rule
+========================================
+
+.. automodule:: openstack.network.v2.security_group_rule
+
+The SecurityGroupRule Class
+---------------------------
+
+The ``SecurityGroupRule`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.security_group_rule.SecurityGroupRule
+   :members:
diff --git a/doc/source/user/resources/network/v2/segment.rst b/doc/source/user/resources/network/v2/segment.rst
new file mode 100644
index 0000000..2e652b8
--- /dev/null
+++ b/doc/source/user/resources/network/v2/segment.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.segment
+============================
+
+.. automodule:: openstack.network.v2.segment
+
+The Segment Class
+-----------------
+
+The ``Segment`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.segment.Segment
+   :members:
diff --git a/doc/source/user/resources/network/v2/service_profile.rst b/doc/source/user/resources/network/v2/service_profile.rst
new file mode 100644
index 0000000..5d66c44
--- /dev/null
+++ b/doc/source/user/resources/network/v2/service_profile.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.service_profile
+====================================
+
+.. automodule:: openstack.network.v2.service_profile
+
+The ServiceProfile Class
+------------------------
+
+The ``ServiceProfile`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.service_profile.ServiceProfile
+   :members:
diff --git a/doc/source/user/resources/network/v2/service_provider.rst b/doc/source/user/resources/network/v2/service_provider.rst
new file mode 100644
index 0000000..02f912d
--- /dev/null
+++ b/doc/source/user/resources/network/v2/service_provider.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.service_provider
+=====================================
+
+.. automodule:: openstack.network.v2.service_provider
+
+The Service Provider Class
+--------------------------
+
+The ``Service Provider`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.service_provider.ServiceProvider
+   :members:
diff --git a/doc/source/user/resources/network/v2/sfc_flow_classifier.rst b/doc/source/user/resources/network/v2/sfc_flow_classifier.rst
new file mode 100644
index 0000000..da94f27
--- /dev/null
+++ b/doc/source/user/resources/network/v2/sfc_flow_classifier.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.sfc_flow_classifier
+========================================
+
+.. automodule:: openstack.network.v2.sfc_flow_classifier
+
+The SfcFlowClassifier Class
+---------------------------
+
+The ``SfcFlowClassifier`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.sfc_flow_classifier.SfcFlowClassifier
+   :members:
diff --git a/doc/source/user/resources/network/v2/sfc_port_chain.rst b/doc/source/user/resources/network/v2/sfc_port_chain.rst
new file mode 100644
index 0000000..3842f57
--- /dev/null
+++ b/doc/source/user/resources/network/v2/sfc_port_chain.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.sfc_port_chain
+===================================
+
+.. automodule:: openstack.network.v2.sfc_port_chain
+
+The SfcPortChain Class
+----------------------
+
+The ``SfcPortChain`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.sfc_port_chain.SfcPortChain
+   :members:
diff --git a/doc/source/user/resources/network/v2/sfc_port_pair.rst b/doc/source/user/resources/network/v2/sfc_port_pair.rst
new file mode 100644
index 0000000..84e6500
--- /dev/null
+++ b/doc/source/user/resources/network/v2/sfc_port_pair.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.sfc_port_pair
+==================================
+
+.. automodule:: openstack.network.v2.sfc_port_pair
+
+The SfcPortPair Class
+---------------------
+
+The ``SfcPortPair`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.sfc_port_pair.SfcPortPair
+   :members:
diff --git a/doc/source/user/resources/network/v2/sfc_port_pair_group.rst b/doc/source/user/resources/network/v2/sfc_port_pair_group.rst
new file mode 100644
index 0000000..3333062
--- /dev/null
+++ b/doc/source/user/resources/network/v2/sfc_port_pair_group.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.sfc_port_pair_group
+========================================
+
+.. automodule:: openstack.network.v2.sfc_port_pair_group
+
+The SfcPortPairGroup Class
+--------------------------
+
+The ``SfcPortPairGroup`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.sfc_port_pair_group.SfcPortPairGroup
+   :members:
diff --git a/doc/source/user/resources/network/v2/sfc_service_graph.rst b/doc/source/user/resources/network/v2/sfc_service_graph.rst
new file mode 100644
index 0000000..718b720
--- /dev/null
+++ b/doc/source/user/resources/network/v2/sfc_service_graph.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.sfc_service_graph
+======================================
+
+.. automodule:: openstack.network.v2.sfc_service_graph
+
+The SfcServiceGraph Class
+-------------------------
+
+The ``SfcServiceGraph`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.sfc_service_graph.SfcServiceGraph
+   :members:
diff --git a/doc/source/user/resources/network/v2/subnet.rst b/doc/source/user/resources/network/v2/subnet.rst
new file mode 100644
index 0000000..16a6d27
--- /dev/null
+++ b/doc/source/user/resources/network/v2/subnet.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.subnet
+===========================
+
+.. automodule:: openstack.network.v2.subnet
+
+The Subnet Class
+----------------
+
+The ``Subnet`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.subnet.Subnet
+   :members:
diff --git a/doc/source/user/resources/network/v2/subnet_pool.rst b/doc/source/user/resources/network/v2/subnet_pool.rst
new file mode 100644
index 0000000..14bf753
--- /dev/null
+++ b/doc/source/user/resources/network/v2/subnet_pool.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.subnet_pool
+================================
+
+.. automodule:: openstack.network.v2.subnet_pool
+
+The SubnetPool Class
+--------------------
+
+The ``SubnetPool`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.subnet_pool.SubnetPool
+   :members:
diff --git a/doc/source/user/resources/network/v2/tap_flow.rst b/doc/source/user/resources/network/v2/tap_flow.rst
new file mode 100644
index 0000000..21cbce3
--- /dev/null
+++ b/doc/source/user/resources/network/v2/tap_flow.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.tap_flow
+=============================
+
+.. automodule:: openstack.network.v2.tap_flow
+
+The TapFlow Class
+-----------------
+
+The ``TapFlow`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.tap_flow.TapFlow
+   :members:
diff --git a/doc/source/user/resources/network/v2/tap_service.rst b/doc/source/user/resources/network/v2/tap_service.rst
new file mode 100644
index 0000000..74b51c8
--- /dev/null
+++ b/doc/source/user/resources/network/v2/tap_service.rst
@@ -0,0 +1,12 @@
+openstack.network.v2.tap_service
+================================
+
+.. automodule:: openstack.network.v2.tap_service
+
+The TapService Class
+--------------------
+
+The ``TapService`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.tap_service.TapService
+   :members:
diff --git a/doc/source/user/resources/network/v2/vpn/endpoint_group.rst b/doc/source/user/resources/network/v2/vpn/endpoint_group.rst
new file mode 100644
index 0000000..3e8478c
--- /dev/null
+++ b/doc/source/user/resources/network/v2/vpn/endpoint_group.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.vpn_endpoint_group
+=======================================
+
+.. automodule:: openstack.network.v2.vpn_endpoint_group
+
+The VpnEndpointGroup Class
+--------------------------
+
+The ``VpnEndpointGroup`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.vpn_endpoint_group.VpnEndpointGroup
+   :members:
diff --git a/doc/source/user/resources/network/v2/vpn/ike_policy.rst b/doc/source/user/resources/network/v2/vpn/ike_policy.rst
new file mode 100644
index 0000000..81bc6b0
--- /dev/null
+++ b/doc/source/user/resources/network/v2/vpn/ike_policy.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.vpn_ike_policy
+===================================
+
+.. automodule:: openstack.network.v2.vpn_ike_policy
+
+The VpnIkePolicy Class
+----------------------
+
+The ``VpnIkePolicy`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.vpn_ike_policy.VpnIkePolicy
+   :members:
diff --git a/doc/source/user/resources/network/v2/vpn/index.rst b/doc/source/user/resources/network/v2/vpn/index.rst
new file mode 100644
index 0000000..fee6fe9
--- /dev/null
+++ b/doc/source/user/resources/network/v2/vpn/index.rst
@@ -0,0 +1,8 @@
+VPNaaS Resources
+================
+
+.. toctree::
+   :maxdepth: 1
+   :glob:
+
+   *
diff --git a/doc/source/user/resources/network/v2/vpn/ipsec_policy.rst b/doc/source/user/resources/network/v2/vpn/ipsec_policy.rst
new file mode 100644
index 0000000..5a5d759
--- /dev/null
+++ b/doc/source/user/resources/network/v2/vpn/ipsec_policy.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.vpn_ipsec_policy
+=====================================
+
+.. automodule:: openstack.network.v2.vpn_ipsec_policy
+
+The VpnIpsecPolicy Class
+------------------------
+
+The ``VpnIpsecPolicy`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.vpn_ipsec_policy.VpnIpsecPolicy
+   :members:
diff --git a/doc/source/user/resources/network/v2/vpn/ipsec_site_connection.rst b/doc/source/user/resources/network/v2/vpn/ipsec_site_connection.rst
new file mode 100644
index 0000000..f90e000
--- /dev/null
+++ b/doc/source/user/resources/network/v2/vpn/ipsec_site_connection.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.vpn_ipsec_site_connection
+==============================================
+
+.. automodule:: openstack.network.v2.vpn_ipsec_site_connection
+
+The VpnIPSecSiteConnection Class
+--------------------------------
+
+The ``VpnIPSecSiteConnection`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.vpn_ipsec_site_connection.VpnIPSecSiteConnection
+   :members:
diff --git a/doc/source/user/resources/network/v2/vpn/service.rst b/doc/source/user/resources/network/v2/vpn/service.rst
new file mode 100644
index 0000000..0a185ba
--- /dev/null
+++ b/doc/source/user/resources/network/v2/vpn/service.rst
@@ -0,0 +1,13 @@
+openstack.network.v2.vpn_service
+================================
+
+.. automodule:: openstack.network.v2.vpn_service
+
+The VpnService Class
+--------------------
+
+The ``VpnService`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.network.v2.vpn_service.VpnService
+   :members:
diff --git a/doc/source/user/resources/object_store/index.rst b/doc/source/user/resources/object_store/index.rst
new file mode 100644
index 0000000..e5524e3
--- /dev/null
+++ b/doc/source/user/resources/object_store/index.rst
@@ -0,0 +1,9 @@
+Object Store Resources
+======================
+
+.. toctree::
+   :maxdepth: 1
+
+   v1/account
+   v1/container
+   v1/obj
diff --git a/doc/source/user/resources/object_store/v1/account.rst b/doc/source/user/resources/object_store/v1/account.rst
new file mode 100644
index 0000000..5236fae
--- /dev/null
+++ b/doc/source/user/resources/object_store/v1/account.rst
@@ -0,0 +1,12 @@
+openstack.object_store.v1.account
+=================================
+
+.. automodule:: openstack.object_store.v1.account
+
+The Account Class
+-----------------
+
+The ``Account`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.object_store.v1.account.Account
+   :members:
diff --git a/doc/source/user/resources/object_store/v1/container.rst b/doc/source/user/resources/object_store/v1/container.rst
new file mode 100644
index 0000000..3049190
--- /dev/null
+++ b/doc/source/user/resources/object_store/v1/container.rst
@@ -0,0 +1,12 @@
+openstack.object_store.v1.container
+===================================
+
+.. automodule:: openstack.object_store.v1.container
+
+The Container Class
+-------------------
+
+The ``Container`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.object_store.v1.container.Container
+   :members:
diff --git a/doc/source/user/resources/object_store/v1/obj.rst b/doc/source/user/resources/object_store/v1/obj.rst
new file mode 100644
index 0000000..292cfc0
--- /dev/null
+++ b/doc/source/user/resources/object_store/v1/obj.rst
@@ -0,0 +1,12 @@
+openstack.object_store.v1.obj
+=============================
+
+.. automodule:: openstack.object_store.v1.obj
+
+The Object Class
+----------------
+
+The ``Object`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.object_store.v1.obj.Object
+   :members:
diff --git a/doc/source/user/resources/orchestration/index.rst b/doc/source/user/resources/orchestration/index.rst
new file mode 100644
index 0000000..d0c53f6
--- /dev/null
+++ b/doc/source/user/resources/orchestration/index.rst
@@ -0,0 +1,9 @@
+Orchestration Resources
+=======================
+
+.. toctree::
+   :maxdepth: 1
+
+   v1/stack
+   v1/resource
+   v1/stack_event
diff --git a/doc/source/user/resources/orchestration/v1/resource.rst b/doc/source/user/resources/orchestration/v1/resource.rst
new file mode 100644
index 0000000..7eb96a9
--- /dev/null
+++ b/doc/source/user/resources/orchestration/v1/resource.rst
@@ -0,0 +1,12 @@
+openstack.orchestration.v1.resource
+===================================
+
+.. automodule:: openstack.orchestration.v1.resource
+
+The Resource Class
+------------------
+
+The ``Resource`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.orchestration.v1.resource.Resource
+   :members:
diff --git a/doc/source/user/resources/orchestration/v1/stack.rst b/doc/source/user/resources/orchestration/v1/stack.rst
new file mode 100644
index 0000000..8dda658
--- /dev/null
+++ b/doc/source/user/resources/orchestration/v1/stack.rst
@@ -0,0 +1,12 @@
+openstack.orchestration.v1.stack
+================================
+
+.. automodule:: openstack.orchestration.v1.stack
+
+The Stack Class
+---------------
+
+The ``Stack`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.orchestration.v1.stack.Stack
+   :members:
diff --git a/doc/source/user/resources/orchestration/v1/stack_event.rst b/doc/source/user/resources/orchestration/v1/stack_event.rst
new file mode 100644
index 0000000..8838f44
--- /dev/null
+++ b/doc/source/user/resources/orchestration/v1/stack_event.rst
@@ -0,0 +1,12 @@
+openstack.orchestration.v1.stack_event
+======================================
+
+.. automodule:: openstack.orchestration.v1.stack_event
+
+The StackEvent Class
+--------------------
+
+The ``StackEvent`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.orchestration.v1.stack_event.StackEvent
+   :members:
diff --git a/doc/source/user/resources/placement/index.rst b/doc/source/user/resources/placement/index.rst
new file mode 100644
index 0000000..b57b797
--- /dev/null
+++ b/doc/source/user/resources/placement/index.rst
@@ -0,0 +1,10 @@
+Placement v1 Resources
+======================
+
+.. toctree::
+   :maxdepth: 1
+
+   v1/resource_class
+   v1/resource_provider
+   v1/resource_provider_inventory
+   v1/trait
diff --git a/doc/source/user/resources/placement/v1/resource_class.rst b/doc/source/user/resources/placement/v1/resource_class.rst
new file mode 100644
index 0000000..2ef5817
--- /dev/null
+++ b/doc/source/user/resources/placement/v1/resource_class.rst
@@ -0,0 +1,13 @@
+openstack.placement.v1.resource_class
+=====================================
+
+.. automodule:: openstack.placement.v1.resource_class
+
+The ResourceClass Class
+-----------------------
+
+The ``ResourceClass`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.placement.v1.resource_class.ResourceClass
+   :members:
diff --git a/doc/source/user/resources/placement/v1/resource_provider.rst b/doc/source/user/resources/placement/v1/resource_provider.rst
new file mode 100644
index 0000000..8ab028b
--- /dev/null
+++ b/doc/source/user/resources/placement/v1/resource_provider.rst
@@ -0,0 +1,13 @@
+openstack.placement.v1.resource_provider
+========================================
+
+.. automodule:: openstack.placement.v1.resource_provider
+
+The ResourceProvider Class
+--------------------------
+
+The ``ResourceProvider`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.placement.v1.resource_provider.ResourceProvider
+   :members:
diff --git a/doc/source/user/resources/placement/v1/resource_provider_inventory.rst b/doc/source/user/resources/placement/v1/resource_provider_inventory.rst
new file mode 100644
index 0000000..1f3491a
--- /dev/null
+++ b/doc/source/user/resources/placement/v1/resource_provider_inventory.rst
@@ -0,0 +1,13 @@
+openstack.placement.v1.resource_provider_inventory
+==================================================
+
+.. automodule:: openstack.placement.v1.resource_provider_inventory
+
+The ResourceProviderInventory Class
+-----------------------------------
+
+The ``ResourceProviderInventory`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.placement.v1.resource_provider_inventory.ResourceProviderInventory
+   :members:
diff --git a/doc/source/user/resources/placement/v1/trait.rst b/doc/source/user/resources/placement/v1/trait.rst
new file mode 100644
index 0000000..e9c70a8
--- /dev/null
+++ b/doc/source/user/resources/placement/v1/trait.rst
@@ -0,0 +1,12 @@
+openstack.placement.v1.trait
+============================
+
+.. automodule:: openstack.placement.v1.trait
+
+The Trait Class
+---------------
+
+The ``Trait`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.placement.v1.trait.Trait
+   :members:
diff --git a/doc/source/user/resources/shared_file_system/index.rst b/doc/source/user/resources/shared_file_system/index.rst
new file mode 100644
index 0000000..1b45f4f
--- /dev/null
+++ b/doc/source/user/resources/shared_file_system/index.rst
@@ -0,0 +1,20 @@
+Shared File System service resources
+====================================
+
+.. toctree::
+   :maxdepth: 1
+
+   v2/availability_zone
+   v2/storage_pool
+   v2/limit
+   v2/share
+   v2/share_instance
+   v2/share_network_subnet
+   v2/share_snapshot
+   v2/share_snapshot_instance
+   v2/share_network
+   v2/user_message
+   v2/share_group
+   v2/share_access_rule
+   v2/share_group_snapshot
+   v2/resource_locks
diff --git a/doc/source/user/resources/shared_file_system/v2/availability_zone.rst b/doc/source/user/resources/shared_file_system/v2/availability_zone.rst
new file mode 100644
index 0000000..9a51890
--- /dev/null
+++ b/doc/source/user/resources/shared_file_system/v2/availability_zone.rst
@@ -0,0 +1,13 @@
+openstack.shared_file_system.v2.availability_zone
+=================================================
+
+.. automodule:: openstack.shared_file_system.v2.availability_zone
+
+The AvailabilityZone Class
+--------------------------
+
+The ``AvailabilityZone`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.shared_file_system.v2.availability_zone.AvailabilityZone
+   :members:
diff --git a/doc/source/user/resources/shared_file_system/v2/limit.rst b/doc/source/user/resources/shared_file_system/v2/limit.rst
new file mode 100644
index 0000000..33342c1
--- /dev/null
+++ b/doc/source/user/resources/shared_file_system/v2/limit.rst
@@ -0,0 +1,13 @@
+openstack.shared_file_system.v2.limit
+=====================================
+
+.. automodule:: openstack.shared_file_system.v2.limit
+
+The Limit Class
+---------------
+
+The ``Limit`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.shared_file_system.v2.limit.Limit
+   :members:
diff --git a/doc/source/user/resources/shared_file_system/v2/resource_locks.rst b/doc/source/user/resources/shared_file_system/v2/resource_locks.rst
new file mode 100644
index 0000000..6040bfa
--- /dev/null
+++ b/doc/source/user/resources/shared_file_system/v2/resource_locks.rst
@@ -0,0 +1,13 @@
+openstack.shared_file_system.v2.resource_locks
+==============================================
+
+.. automodule:: openstack.shared_file_system.v2.resource_locks
+
+The Resource Locks Class
+------------------------
+
+The ``ResourceLock`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.shared_file_system.v2.resource_locks.ResourceLock
+   :members:
diff --git a/doc/source/user/resources/shared_file_system/v2/share.rst b/doc/source/user/resources/shared_file_system/v2/share.rst
new file mode 100644
index 0000000..bac5e96
--- /dev/null
+++ b/doc/source/user/resources/shared_file_system/v2/share.rst
@@ -0,0 +1,13 @@
+openstack.shared_file_system.v2.share
+=====================================
+
+.. automodule:: openstack.shared_file_system.v2.share
+
+The Share Class
+---------------
+
+The ``Share`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.shared_file_system.v2.share.Share
+   :members:
diff --git a/doc/source/user/resources/shared_file_system/v2/share_access_rule.rst b/doc/source/user/resources/shared_file_system/v2/share_access_rule.rst
new file mode 100644
index 0000000..eec6b43
--- /dev/null
+++ b/doc/source/user/resources/shared_file_system/v2/share_access_rule.rst
@@ -0,0 +1,13 @@
+openstack.shared_file_system.v2.share_access_rule
+=================================================
+
+.. automodule:: openstack.shared_file_system.v2.share_access_rule
+
+The ShareAccessRule Class
+-------------------------
+
+The ``ShareAccessRule`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.shared_file_system.v2.share_access_rule.ShareAccessRule
+   :members:
diff --git a/doc/source/user/resources/shared_file_system/v2/share_group.rst b/doc/source/user/resources/shared_file_system/v2/share_group.rst
new file mode 100644
index 0000000..232202b
--- /dev/null
+++ b/doc/source/user/resources/shared_file_system/v2/share_group.rst
@@ -0,0 +1,13 @@
+openstack.shared_file_system.v2.share_group
+===========================================
+
+.. automodule:: openstack.shared_file_system.v2.share_group
+
+The ShareGroup Class
+--------------------
+
+The ``ShareGroup`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.shared_file_system.v2.share_group.ShareGroup
+   :members:
diff --git a/doc/source/user/resources/shared_file_system/v2/share_group_snapshot.rst b/doc/source/user/resources/shared_file_system/v2/share_group_snapshot.rst
new file mode 100644
index 0000000..40972ad
--- /dev/null
+++ b/doc/source/user/resources/shared_file_system/v2/share_group_snapshot.rst
@@ -0,0 +1,13 @@
+openstack.shared_file_system.v2.share_group_snapshot
+====================================================
+
+.. automodule:: openstack.shared_file_system.v2.share_group_snapshot
+
+The ShareGroupSnapshot Class
+----------------------------
+
+The ``ShareGroupSnapshot`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.shared_file_system.v2.share_group_snapshot.ShareGroupSnapshot
+   :members:
diff --git a/doc/source/user/resources/shared_file_system/v2/share_instance.rst b/doc/source/user/resources/shared_file_system/v2/share_instance.rst
new file mode 100644
index 0000000..0b05833
--- /dev/null
+++ b/doc/source/user/resources/shared_file_system/v2/share_instance.rst
@@ -0,0 +1,13 @@
+openstack.shared_file_system.v2.share_instance
+==============================================
+
+.. automodule:: openstack.shared_file_system.v2.share_instance
+
+The ShareInstance Class
+-----------------------
+
+The ``ShareInstance`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.shared_file_system.v2.share_instance.ShareInstance
+   :members:
diff --git a/doc/source/user/resources/shared_file_system/v2/share_network.rst b/doc/source/user/resources/shared_file_system/v2/share_network.rst
new file mode 100644
index 0000000..793265d
--- /dev/null
+++ b/doc/source/user/resources/shared_file_system/v2/share_network.rst
@@ -0,0 +1,13 @@
+openstack.shared_file_system.v2.share_network
+=============================================
+
+.. automodule:: openstack.shared_file_system.v2.share_network
+
+The ShareNetwork Class
+----------------------
+
+The ``ShareNetwork`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.shared_file_system.v2.share_network.ShareNetwork
+   :members:
diff --git a/doc/source/user/resources/shared_file_system/v2/share_network_subnet.rst b/doc/source/user/resources/shared_file_system/v2/share_network_subnet.rst
new file mode 100644
index 0000000..95638a6
--- /dev/null
+++ b/doc/source/user/resources/shared_file_system/v2/share_network_subnet.rst
@@ -0,0 +1,13 @@
+openstack.shared_file_system.v2.share_network_subnet
+====================================================
+
+.. automodule:: openstack.shared_file_system.v2.share_network_subnet
+
+The ShareNetworkSubnet Class
+----------------------------
+
+The ``ShareNetworkSubnet`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.shared_file_system.v2.share_network_subnet.ShareNetworkSubnet
+   :members:
diff --git a/doc/source/user/resources/shared_file_system/v2/share_snapshot.rst b/doc/source/user/resources/shared_file_system/v2/share_snapshot.rst
new file mode 100644
index 0000000..4063c48
--- /dev/null
+++ b/doc/source/user/resources/shared_file_system/v2/share_snapshot.rst
@@ -0,0 +1,13 @@
+openstack.shared_file_system.v2.share_snapshot
+==============================================
+
+.. automodule:: openstack.shared_file_system.v2.share_snapshot
+
+The ShareSnapshot Class
+-----------------------
+
+The ``ShareSnapshot`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.shared_file_system.v2.share_snapshot.ShareSnapshot
+   :members:
diff --git a/doc/source/user/resources/shared_file_system/v2/share_snapshot_instance.rst b/doc/source/user/resources/shared_file_system/v2/share_snapshot_instance.rst
new file mode 100644
index 0000000..9184599
--- /dev/null
+++ b/doc/source/user/resources/shared_file_system/v2/share_snapshot_instance.rst
@@ -0,0 +1,13 @@
+openstack.shared_file_system.v2.share_snapshot_instance
+=======================================================
+
+.. automodule:: openstack.shared_file_system.v2.share_snapshot_instance
+
+The ShareSnapshotInstance Class
+-------------------------------
+
+The ``ShareSnapshotInstance`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.shared_file_system.v2.share_snapshot_instance.ShareSnapshotInstance
+   :members:
diff --git a/doc/source/user/resources/shared_file_system/v2/storage_pool.rst b/doc/source/user/resources/shared_file_system/v2/storage_pool.rst
new file mode 100644
index 0000000..86649b8
--- /dev/null
+++ b/doc/source/user/resources/shared_file_system/v2/storage_pool.rst
@@ -0,0 +1,13 @@
+openstack.shared_file_system.v2.storage_pool
+============================================
+
+.. automodule:: openstack.shared_file_system.v2.storage_pool
+
+The StoragePool Class
+---------------------
+
+The ``StoragePool`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.shared_file_system.v2.storage_pool.StoragePool
+   :members:
diff --git a/doc/source/user/resources/shared_file_system/v2/user_message.rst b/doc/source/user/resources/shared_file_system/v2/user_message.rst
new file mode 100644
index 0000000..de3b21f
--- /dev/null
+++ b/doc/source/user/resources/shared_file_system/v2/user_message.rst
@@ -0,0 +1,13 @@
+openstack.shared_file_system.v2.user_message
+============================================
+
+.. automodule:: openstack.shared_file_system.v2.user_message
+
+The UserMessage Class
+---------------------
+
+The ``UserMessage`` class inherits from
+:class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.shared_file_system.v2.user_message.UserMessage
+   :members:
diff --git a/doc/source/user/resources/workflow/index.rst b/doc/source/user/resources/workflow/index.rst
new file mode 100644
index 0000000..8d66f71
--- /dev/null
+++ b/doc/source/user/resources/workflow/index.rst
@@ -0,0 +1,9 @@
+Workflow Resources
+==================
+
+.. toctree::
+   :maxdepth: 1
+
+   v2/execution
+   v2/workflow
+   v2/crontrigger
diff --git a/doc/source/user/resources/workflow/v2/crontrigger.rst b/doc/source/user/resources/workflow/v2/crontrigger.rst
new file mode 100644
index 0000000..828af76
--- /dev/null
+++ b/doc/source/user/resources/workflow/v2/crontrigger.rst
@@ -0,0 +1,12 @@
+openstack.workflow.v2.cron_trigger
+==================================
+
+.. automodule:: openstack.workflow.v2.cron_trigger
+
+The CronTrigger Class
+---------------------
+
+The ``CronTrigger`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.workflow.v2.cron_trigger.CronTrigger
+   :members:
diff --git a/doc/source/user/resources/workflow/v2/execution.rst b/doc/source/user/resources/workflow/v2/execution.rst
new file mode 100644
index 0000000..62ec283
--- /dev/null
+++ b/doc/source/user/resources/workflow/v2/execution.rst
@@ -0,0 +1,12 @@
+openstack.workflow.v2.execution
+===============================
+
+.. automodule:: openstack.workflow.v2.execution
+
+The Execution Class
+-------------------
+
+The ``Execution`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.workflow.v2.execution.Execution
+   :members:
diff --git a/doc/source/user/resources/workflow/v2/workflow.rst b/doc/source/user/resources/workflow/v2/workflow.rst
new file mode 100644
index 0000000..8f8950e
--- /dev/null
+++ b/doc/source/user/resources/workflow/v2/workflow.rst
@@ -0,0 +1,12 @@
+openstack.workflow.v2.workflow
+==============================
+
+.. automodule:: openstack.workflow.v2.workflow
+
+The Workflow Class
+------------------
+
+The ``Workflow`` class inherits from :class:`~openstack.resource.Resource`.
+
+.. autoclass:: openstack.workflow.v2.workflow.Workflow
+   :members:
diff --git a/doc/source/user/service_description.rst b/doc/source/user/service_description.rst
new file mode 100644
index 0000000..3eeeb4a
--- /dev/null
+++ b/doc/source/user/service_description.rst
@@ -0,0 +1,10 @@
+ServiceDescription
+==================
+.. automodule:: openstack.service_description
+
+
+ServiceDescription object
+-------------------------
+
+.. autoclass:: openstack.service_description.ServiceDescription
+   :members:
diff --git a/doc/source/user/testing/fakes.rst b/doc/source/user/testing/fakes.rst
new file mode 100644
index 0000000..ec238ef
--- /dev/null
+++ b/doc/source/user/testing/fakes.rst
@@ -0,0 +1,5 @@
+Fakes
+=====
+
+.. automodule:: openstack.test.fakes
+   :members:
diff --git a/doc/source/user/testing/index.rst b/doc/source/user/testing/index.rst
new file mode 100644
index 0000000..ef602a9
--- /dev/null
+++ b/doc/source/user/testing/index.rst
@@ -0,0 +1,8 @@
+========================================
+Testing applications using OpenStack SDK
+========================================
+
+.. toctree::
+   :maxdepth: 1
+
+   fakes
diff --git a/doc/source/user/transition_from_profile.rst b/doc/source/user/transition_from_profile.rst
new file mode 100644
index 0000000..a6edc6a
--- /dev/null
+++ b/doc/source/user/transition_from_profile.rst
@@ -0,0 +1,186 @@
+Transition from Profile
+=======================
+
+.. note:: This section describes migrating code from a previous interface of
+          openstacksdk and can be ignored by people writing new code.
+
+If you have code that currently uses the :class:`~openstack.profile.Profile`
+object and/or an ``authenticator`` instance from an object based on
+``openstack.auth.base.BaseAuthPlugin``, that code should be updated to use the
+:class:`~openstack.config.cloud_region.CloudRegion` object instead.
+
+.. important::
+
+    :class:`~openstack.profile.Profile` is going away. Existing code using it
+    should be migrated as soon as possible.
+
+Writing Code that Works with Both
+---------------------------------
+
+These examples should all work with both the old and new interface, with one
+caveat. With the old interface, the ``CloudConfig`` object comes from the
+``os-client-config`` library, and in the new interface that has been moved
+into the SDK. In order to write code that works with both the old and new
+interfaces, use the following code to import the config namespace:
+
+.. code-block:: python
+
+  try:
+      from openstack import config as occ
+  except ImportError:
+      from os_client_config import config as occ
+
+The examples will assume that the config module has been imported in that
+manner.
+
+.. note:: Yes, there is an easier and less verbose way to do all of these.
+          These are verbose to handle both the old and new interfaces in the
+          same codebase.
+
+Replacing authenticator
+-----------------------
+
+There is no direct replacement for ``openstack.auth.base.BaseAuthPlugin``.
+``openstacksdk`` uses the `keystoneauth`_ library for authentication
+and HTTP interactions. `keystoneauth`_ has `auth plugins`_ that can be used
+to control how authentication is done. The ``auth_type`` config parameter
+can be set to choose the correct authentication method to be used.
+
+Replacing Profile
+-----------------
+
+The right way to replace the use of ``openstack.profile.Profile`` depends
+a bit on what you're trying to accomplish. Common patterns are listed below,
+but in general the approach is either to pass a cloud name to the
+`openstack.connection.Connection` constructor, or to construct a
+`openstack.config.cloud_region.CloudRegion` object and pass it to the
+constructor.
+
+All of the examples on this page assume that you want to support old and
+new interfaces simultaneously. There are easier and less verbose versions
+of each that are available if you can just make a clean transition.
+
+Getting a Connection to a named cloud from clouds.yaml
+------------------------------------------------------
+
+If you want is to construct a `openstack.connection.Connection` based on
+parameters configured in a ``clouds.yaml`` file, or from environment variables:
+
+.. code-block:: python
+
+    import openstack.connection
+
+    conn = connection.from_config(cloud_name='name-of-cloud-you-want')
+
+Getting a Connection from python arguments avoiding clouds.yaml
+---------------------------------------------------------------
+
+If, on the other hand, you want to construct a
+`openstack.connection.Connection`, but are in a context where reading config
+from a clouds.yaml file is undesirable, such as inside of a Service:
+
+* create a `openstack.config.loader.OpenStackConfig` object, telling
+  it to not load yaml files. Optionally pass an ``app_name`` and
+  ``app_version`` which will be added to user-agent strings.
+* get a `openstack.config.cloud_region.CloudRegion` object from it
+* get a `openstack.connection.Connection`
+
+.. code-block:: python
+
+    try:
+        from openstack import config as occ
+    except ImportError:
+        from os_client_config import config as occ
+    from openstack import connection
+
+    loader = occ.OpenStackConfig(
+        load_yaml_files=False,
+        app_name='spectacular-app',
+        app_version='1.0')
+    cloud_region = loader.get_one_cloud(
+        region_name='my-awesome-region',
+        auth_type='password',
+        auth=dict(
+            auth_url='https://auth.example.com',
+            username='amazing-user',
+            user_domain_name='example-domain',
+            project_name='astounding-project',
+            user_project_name='example-domain',
+            password='super-secret-password',
+        ))
+    conn = connection.from_config(cloud_config=cloud_region)
+
+.. note:: app_name and app_version are completely optional, and auth_type
+          defaults to 'password'. They are shown here for clarity as to
+          where they should go if they want to be set.
+
+Getting a Connection from python arguments and optionally clouds.yaml
+---------------------------------------------------------------------
+
+If you want to make a connection from python arguments and want to allow
+one of them to optionally be ``cloud`` to allow selection of a named cloud,
+it's essentially the same as the previous example, except without
+``load_yaml_files=False``.
+
+.. code-block:: python
+
+    try:
+        from openstack import config as occ
+    except ImportError:
+        from os_client_config import config as occ
+    from openstack import connection
+
+    loader = occ.OpenStackConfig(
+        app_name='spectacular-app',
+        app_version='1.0')
+    cloud_region = loader.get_one_cloud(
+        region_name='my-awesome-region',
+        auth_type='password',
+        auth=dict(
+            auth_url='https://auth.example.com',
+            username='amazing-user',
+            user_domain_name='example-domain',
+            project_name='astounding-project',
+            user_project_name='example-domain',
+            password='super-secret-password',
+          ))
+    conn = connection.from_config(cloud_config=cloud_region)
+
+Parameters to get_one_cloud
+---------------------------
+
+The most important things to note are:
+
+* ``auth_type`` specifies which kind of authentication plugin to use. It
+  controls how authentication is done, as well as what parameters are required.
+* ``auth`` is a dictionary containing the parameters needed by the auth plugin.
+  The most common information it needs are user, project, domain, auth_url
+  and password.
+* The rest of the keyword arguments to
+  ``openstack.config.loader.OpenStackConfig.get_one_cloud`` are either
+  parameters needed by the `keystoneauth Session`_ object, which control how
+  HTTP connections are made, or parameters needed by the
+  `keystoneauth Adapter`_ object, which control how services are found in the
+  Keystone Catalog.
+
+For `keystoneauth Adapter`_ parameters, since there is one
+`openstack.connection.Connection` object but many services, per-service
+parameters are formed by using the official ``service_type`` of the service
+in question. For instance, to override the endpoint for the ``compute``
+service, the parameter ``compute_endpoint_override`` would be used.
+
+``region_name`` in ``openstack.profile.Profile`` was a per-service parameter.
+This is no longer a valid concept. An `openstack.connection.Connection` is a
+connection to a region of a cloud. If you are in an extreme situation where
+you have one service in one region and a different service in a different
+region, you must use two different `openstack.connection.Connection` objects.
+
+.. note:: service_type, although a parameter for keystoneauth1.adapter.Adapter,
+          is not a valid parameter for get_one_cloud. service_type is the key
+          by which services are referred, so saying
+          'compute_service_type="henry"' doesn't have any meaning.
+
+.. _keystoneauth: https://docs.openstack.org/keystoneauth/latest/
+.. _auth plugins: https://docs.openstack.org/keystoneauth/latest/authentication-plugins.html
+.. _keystoneauth Adapter: https://docs.openstack.org/keystoneauth/latest/api/keystoneauth1.html#keystoneauth1.adapter.Adapter
+.. _keystoneauth Session: https://docs.openstack.org/keystoneauth/latest/api/keystoneauth1.html#keystoneauth1.session.Session
diff --git a/doc/source/user/utils.rst b/doc/source/user/utils.rst
new file mode 100644
index 0000000..5c1f39d
--- /dev/null
+++ b/doc/source/user/utils.rst
@@ -0,0 +1,3 @@
+Utilities
+=========
+.. automodule:: openstack.utils
diff --git a/doc/source/user/warnings.rst b/doc/source/user/warnings.rst
new file mode 100644
index 0000000..34d1893
--- /dev/null
+++ b/doc/source/user/warnings.rst
@@ -0,0 +1,20 @@
+Warnings
+========
+
+openstacksdk uses the `warnings`__ infrastructure to warn users about
+deprecated resources and resource fields, as well as deprecated behavior in
+openstacksdk itself. These warnings are derived from ``Warning`` or
+``DeprecationWarning``. In Python, warnings are emitted by default while
+deprecation warnings are silenced by default and must be turned on using the
+``-Wa`` Python command line option or the ``PYTHONWARNINGS`` environment
+variable. If you are writing an application that uses openstacksdk, you may
+wish to enable some of these warnings during test runs to ensure you migrate
+away from deprecated behavior.
+
+Available warnings
+------------------
+
+.. automodule:: openstack.warnings
+   :members:
+
+.. __: https://docs.python.org/3/library/warnings.html
diff --git a/docs-requirements.txt b/docs-requirements.txt
new file mode 100644
index 0000000..9463811
--- /dev/null
+++ b/docs-requirements.txt
@@ -0,0 +1,2 @@
+-r requirements.txt
+-r test-requirements.txt
diff --git a/accelerator/__init__.py b/examples/__init__.py
similarity index 100%
rename from accelerator/__init__.py
rename to examples/__init__.py
diff --git a/examples/baremetal/list.py b/examples/baremetal/list.py
new file mode 100644
index 0000000..a5595ab
--- /dev/null
+++ b/examples/baremetal/list.py
@@ -0,0 +1,25 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+List resources from the Bare Metal service.
+"""
+
+
+def list_nodes(conn):
+    print("List Nodes:")
+
+    for node in conn.baremetal.nodes():
+        print(node)
+
+
+# TODO(dtantsur): other resources
diff --git a/examples/baremetal/provisioning.py b/examples/baremetal/provisioning.py
new file mode 100644
index 0000000..7eb7580
--- /dev/null
+++ b/examples/baremetal/provisioning.py
@@ -0,0 +1,33 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Operations with the provision state in the Bare Metal service.
+"""
+
+
+def manage_and_inspect_node(conn, uuid):
+    node = conn.baremetal.find_node(uuid)
+    print('Before:', node.provision_state)
+    conn.baremetal.set_node_provision_state(node, 'manage')
+    conn.baremetal.wait_for_nodes_provision_state([node], 'manageable')
+    conn.baremetal.set_node_provision_state(node, 'inspect')
+    res = conn.baremetal.wait_for_nodes_provision_state([node], 'manageable')
+    print('After:', res[0].provision_state)
+
+
+def provide_node(conn, uuid):
+    node = conn.baremetal.find_node(uuid)
+    print('Before:', node.provision_state)
+    conn.baremetal.set_node_provision_state(node, 'provide')
+    res = conn.baremetal.wait_for_nodes_provision_state([node], 'available')
+    print('After:', res[0].provision_state)
diff --git a/examples/cloud/cleanup-servers.py b/examples/cloud/cleanup-servers.py
new file mode 100644
index 0000000..076415e
--- /dev/null
+++ b/examples/cloud/cleanup-servers.py
@@ -0,0 +1,26 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from openstack import cloud as openstack
+
+# Initialize and turn on debug logging
+openstack.enable_logging(debug=True)
+
+for cloud_name, region_name in [
+    ('my-vexxhost', 'ca-ymq-1'),
+    ('my-citycloud', 'Buf1'),
+    ('my-internap', 'ams01'),
+]:
+    # Initialize cloud
+    cloud = openstack.connect(cloud=cloud_name, region_name=region_name)
+    for server in cloud.search_servers('my-server'):
+        cloud.delete_server(server, wait=True, delete_ips=True)
diff --git a/examples/cloud/create-server-dict.py b/examples/cloud/create-server-dict.py
new file mode 100644
index 0000000..4799238
--- /dev/null
+++ b/examples/cloud/create-server-dict.py
@@ -0,0 +1,46 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from openstack import cloud as openstack
+
+# Initialize and turn on debug logging
+openstack.enable_logging(debug=True)
+
+for cloud_name, region_name, image, flavor_id in [
+    (
+        'my-vexxhost',
+        'ca-ymq-1',
+        'Ubuntu 16.04.1 LTS [2017-03-03]',
+        '5cf64088-893b-46b5-9bb1-ee020277635d',
+    ),
+    (
+        'my-citycloud',
+        'Buf1',
+        'Ubuntu 16.04 Xenial Xerus',
+        '0dab10b5-42a2-438e-be7b-505741a7ffcc',
+    ),
+    ('my-internap', 'ams01', 'Ubuntu 16.04 LTS (Xenial Xerus)', 'A1.4'),
+]:
+    # Initialize cloud
+    cloud = openstack.connect(cloud=cloud_name, region_name=region_name)
+
+    # Boot a server, wait for it to boot, and then do whatever is needed
+    # to get a public ip for it.
+    server = cloud.create_server(
+        'my-server',
+        image=image,
+        flavor=dict(id=flavor_id),
+        wait=True,
+        auto_ip=True,
+    )
+    # Delete it - this is a demo
+    cloud.delete_server(server, wait=True, delete_ips=True)
diff --git a/examples/cloud/create-server-name-or-id.py b/examples/cloud/create-server-name-or-id.py
new file mode 100644
index 0000000..2f3521d
--- /dev/null
+++ b/examples/cloud/create-server-name-or-id.py
@@ -0,0 +1,41 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from openstack import cloud as openstack
+
+# Initialize and turn on debug logging
+openstack.enable_logging(debug=True)
+
+for cloud_name, region_name, image, flavor in [
+    (
+        'my-vexxhost',
+        'ca-ymq-1',
+        'Ubuntu 16.04.1 LTS [2017-03-03]',
+        'v1-standard-4',
+    ),
+    ('my-citycloud', 'Buf1', 'Ubuntu 16.04 Xenial Xerus', '4C-4GB-100GB'),
+    ('my-internap', 'ams01', 'Ubuntu 16.04 LTS (Xenial Xerus)', 'A1.4'),
+]:
+    # Initialize cloud
+    cloud = openstack.connect(cloud=cloud_name, region_name=region_name)
+    cloud.delete_server('my-server', wait=True, delete_ips=True)
+
+    # Boot a server, wait for it to boot, and then do whatever is needed
+    # to get a public ip for it.
+    server = cloud.create_server(
+        'my-server', image=image, flavor=flavor, wait=True, auto_ip=True
+    )
+    print(server.name)
+    print(server['name'])
+    cloud.pprint(server)
+    # Delete it - this is a demo
+    cloud.delete_server(server, wait=True, delete_ips=True)
diff --git a/examples/cloud/debug-logging.py b/examples/cloud/debug-logging.py
new file mode 100644
index 0000000..a490619
--- /dev/null
+++ b/examples/cloud/debug-logging.py
@@ -0,0 +1,18 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from openstack import cloud as openstack
+
+openstack.enable_logging(debug=True)
+
+cloud = openstack.connect(cloud='my-vexxhost', region_name='ca-ymq-1')
+cloud.get_image('Ubuntu 16.04.1 LTS [2017-03-03]')
diff --git a/examples/cloud/find-an-image.py b/examples/cloud/find-an-image.py
new file mode 100644
index 0000000..11da214
--- /dev/null
+++ b/examples/cloud/find-an-image.py
@@ -0,0 +1,20 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from openstack import cloud as openstack
+
+openstack.enable_logging()
+
+cloud = openstack.connect(cloud='fuga', region_name='cystack')
+cloud.pprint(
+    [image for image in cloud.list_images() if 'ubuntu' in image.name.lower()]
+)
diff --git a/examples/cloud/http-debug-logging.py b/examples/cloud/http-debug-logging.py
new file mode 100644
index 0000000..bbe9413
--- /dev/null
+++ b/examples/cloud/http-debug-logging.py
@@ -0,0 +1,18 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from openstack import cloud as openstack
+
+openstack.enable_logging(http_debug=True)
+
+cloud = openstack.connect(cloud='my-vexxhost', region_name='ca-ymq-1')
+cloud.get_image('Ubuntu 16.04.1 LTS [2017-03-03]')
diff --git a/examples/cloud/munch-dict-object.py b/examples/cloud/munch-dict-object.py
new file mode 100644
index 0000000..e7730e7
--- /dev/null
+++ b/examples/cloud/munch-dict-object.py
@@ -0,0 +1,20 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from openstack import cloud as openstack
+
+openstack.enable_logging(debug=True)
+
+cloud = openstack.connect(cloud='ovh', region_name='SBG1')
+image = cloud.get_image('Ubuntu 16.10')
+print(image.name)
+print(image['name'])
diff --git a/examples/cloud/normalization.py b/examples/cloud/normalization.py
new file mode 100644
index 0000000..9c719e1
--- /dev/null
+++ b/examples/cloud/normalization.py
@@ -0,0 +1,21 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from openstack import cloud as openstack
+
+openstack.enable_logging()
+
+cloud = openstack.connect(cloud='fuga', region_name='cystack')
+image = cloud.get_image(
+    'Ubuntu 16.04 LTS - Xenial Xerus - 64-bit - Fuga Cloud Based Image'
+)
+cloud.pprint(image)
diff --git a/examples/cloud/server-information.py b/examples/cloud/server-information.py
new file mode 100644
index 0000000..616ed04
--- /dev/null
+++ b/examples/cloud/server-information.py
@@ -0,0 +1,38 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import openstack
+
+openstack.enable_logging(debug=True)
+
+cloud = openstack.connect(cloud='my-citycloud', region_name='Buf1')
+try:
+    server = cloud.create_server(
+        'my-server',
+        image='Ubuntu 16.04 Xenial Xerus',
+        flavor=dict(id='0dab10b5-42a2-438e-be7b-505741a7ffcc'),
+        wait=True,
+        auto_ip=True,
+    )
+
+    print("\n\nFull Server\n\n")
+    cloud.pprint(server)
+
+    print("\n\nTurn Detailed Off\n\n")
+    cloud.pprint(cloud.get_server('my-server', detailed=False))
+
+    print("\n\nBare Server\n\n")
+    cloud.pprint(cloud.get_server('my-server', bare=True))
+
+finally:
+    # Delete it - this is a demo
+    cloud.delete_server(server, wait=True, delete_ips=True)
diff --git a/examples/cloud/service-conditional-overrides.py b/examples/cloud/service-conditional-overrides.py
new file mode 100644
index 0000000..77d540e
--- /dev/null
+++ b/examples/cloud/service-conditional-overrides.py
@@ -0,0 +1,18 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import openstack
+
+openstack.enable_logging(debug=True)
+
+cloud = openstack.connect(cloud='rax', region_name='DFW')
+print(cloud.has_service('network'))
diff --git a/examples/cloud/service-conditionals.py b/examples/cloud/service-conditionals.py
new file mode 100644
index 0000000..f8ca94a
--- /dev/null
+++ b/examples/cloud/service-conditionals.py
@@ -0,0 +1,19 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import openstack
+
+openstack.enable_logging(debug=True)
+
+cloud = openstack.connect(cloud='kiss', region_name='region1')
+print(cloud.has_service('network'))
+print(cloud.has_service('container-orchestration'))
diff --git a/examples/cloud/strict-mode.py b/examples/cloud/strict-mode.py
new file mode 100644
index 0000000..393af8d
--- /dev/null
+++ b/examples/cloud/strict-mode.py
@@ -0,0 +1,21 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import openstack
+
+openstack.enable_logging()
+
+cloud = openstack.connect(cloud='fuga', region_name='cystack', strict=True)
+image = cloud.get_image(
+    'Ubuntu 16.04 LTS - Xenial Xerus - 64-bit - Fuga Cloud Based Image'
+)
+cloud.pprint(image)
diff --git a/examples/cloud/upload-large-object.py b/examples/cloud/upload-large-object.py
new file mode 100644
index 0000000..2ac3b84
--- /dev/null
+++ b/examples/cloud/upload-large-object.py
@@ -0,0 +1,25 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import openstack
+
+openstack.enable_logging(debug=True)
+
+cloud = openstack.connect(cloud='ovh', region_name='SBG1')
+cloud.create_object(
+    container='my-container',
+    name='my-object',
+    filename='/home/mordred/briarcliff.sh3d',
+    segment_size=1000000,
+)
+cloud.delete_object('my-container', 'my-object')
+cloud.delete_container('my-container')
diff --git a/examples/cloud/upload-object.py b/examples/cloud/upload-object.py
new file mode 100644
index 0000000..2ac3b84
--- /dev/null
+++ b/examples/cloud/upload-object.py
@@ -0,0 +1,25 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import openstack
+
+openstack.enable_logging(debug=True)
+
+cloud = openstack.connect(cloud='ovh', region_name='SBG1')
+cloud.create_object(
+    container='my-container',
+    name='my-object',
+    filename='/home/mordred/briarcliff.sh3d',
+    segment_size=1000000,
+)
+cloud.delete_object('my-container', 'my-object')
+cloud.delete_container('my-container')
diff --git a/examples/cloud/user-agent.py b/examples/cloud/user-agent.py
new file mode 100644
index 0000000..b616dcb
--- /dev/null
+++ b/examples/cloud/user-agent.py
@@ -0,0 +1,20 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import openstack
+
+openstack.enable_logging(http_debug=True)
+
+cloud = openstack.connect(
+    cloud='datacentred', app_name='AmazingApp', app_version='1.0'
+)
+cloud.list_networks()
diff --git a/accelerator/v2/__init__.py b/examples/clustering/__init__.py
similarity index 100%
rename from accelerator/v2/__init__.py
rename to examples/clustering/__init__.py
diff --git a/examples/clustering/action.py b/examples/clustering/action.py
new file mode 100644
index 0000000..ff0f0b4
--- /dev/null
+++ b/examples/clustering/action.py
@@ -0,0 +1,37 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Managing policies in the Cluster service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/clustering.html
+"""
+
+ACTION_ID = "06ad259b-d6ab-4eb2-a0fa-fb144437eab1"
+
+
+def list_actions(conn):
+    print("List Actions:")
+
+    for actions in conn.clustering.actions():
+        print(actions.to_dict())
+
+    for actions in conn.clustering.actions(sort='name:asc'):
+        print(actions.to_dict())
+
+
+def get_action(conn):
+    print("Get Action:")
+
+    action = conn.clustering.get_action(ACTION_ID)
+    print(action.to_dict())
diff --git a/examples/clustering/cluster.py b/examples/clustering/cluster.py
new file mode 100644
index 0000000..ddeb5e9
--- /dev/null
+++ b/examples/clustering/cluster.py
@@ -0,0 +1,171 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Managing policies in the Cluster service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/clustering.html
+"""
+
+CLUSTER_NAME = "Test_Cluster"
+CLUSTER_ID = "47d808e5-ce75-4a1e-bfd2-4ed4639e8640"
+PROFILE_ID = "b0e3a680-e270-4eb8-9361-e5c9503fba0a"
+NODE_ID = "dd803d4a-015d-4223-b15f-db29bad3146c"
+POLICY_ID = "c0e3a680-e270-4eb8-9361-e5c9503fba00"
+
+
+def list_cluster(conn):
+    print("List clusters:")
+
+    for cluster in conn.clustering.clusters():
+        print(cluster.to_dict())
+
+    for cluster in conn.clustering.clusters(sort='name:asc'):
+        print(cluster.to_dict())
+
+
+def create_cluster(conn):
+    print("Create cluster:")
+
+    spec = {
+        "name": CLUSTER_NAME,
+        "profile_id": PROFILE_ID,
+        "min_size": 0,
+        "max_size": -1,
+        "desired_capacity": 1,
+    }
+
+    cluster = conn.clustering.create_cluster(**spec)
+    print(cluster.to_dict())
+
+
+def get_cluster(conn):
+    print("Get cluster:")
+
+    cluster = conn.clustering.get_cluster(CLUSTER_ID)
+    print(cluster.to_dict())
+
+
+def find_cluster(conn):
+    print("Find cluster:")
+
+    cluster = conn.clustering.find_cluster(CLUSTER_ID)
+    print(cluster.to_dict())
+
+
+def update_cluster(conn):
+    print("Update cluster:")
+
+    spec = {
+        "name": "Test_Cluster001",
+        "profile_id": "c0e3a680-e270-4eb8-9361-e5c9503fba0a",
+        "profile_only": True,
+    }
+    cluster = conn.clustering.update_cluster(CLUSTER_ID, **spec)
+    print(cluster.to_dict())
+
+
+def delete_cluster(conn):
+    print("Delete cluster:")
+
+    conn.clustering.delete_cluster(CLUSTER_ID)
+    print("Cluster deleted.")
+
+    # cluster support force delete
+    conn.clustering.delete_cluster(CLUSTER_ID, False, True)
+    print("Cluster deleted")
+
+
+def add_nodes_to_cluster(conn):
+    print("Add nodes to cluster:")
+
+    node_ids = [NODE_ID]
+    res = conn.clustering.add_nodes_to_cluster(CLUSTER_ID, node_ids)
+    print(res)
+
+
+def remove_nodes_from_cluster(conn):
+    print("Remove nodes from a cluster:")
+
+    node_ids = [NODE_ID]
+    res = conn.clustering.remove_nodes_from_cluster(CLUSTER_ID, node_ids)
+    print(res)
+
+
+def replace_nodes_in_cluster(conn):
+    print("Replace the nodes in a cluster with specified nodes:")
+
+    old_node = NODE_ID
+    new_node = "cd803d4a-015d-4223-b15f-db29bad3146c"
+    spec = {old_node: new_node}
+    res = conn.clustering.replace_nodes_in_cluster(CLUSTER_ID, **spec)
+    print(res)
+
+
+def scale_out_cluster(conn):
+    print("Inflate the size of a cluster:")
+
+    res = conn.clustering.scale_out_cluster(CLUSTER_ID, 1)
+    print(res)
+
+
+def scale_in_cluster(conn):
+    print("Shrink the size of a cluster:")
+
+    res = conn.clustering.scale_in_cluster(CLUSTER_ID, 1)
+    print(res)
+
+
+def resize_cluster(conn):
+    print("Resize of cluster:")
+
+    spec = {
+        'min_size': 1,
+        'max_size': 6,
+        'adjustment_type': 'EXACT_CAPACITY',
+        'number': 2,
+    }
+    res = conn.clustering.resize_cluster(CLUSTER_ID, **spec)
+    print(res)
+
+
+def attach_policy_to_cluster(conn):
+    print("Attach policy to a cluster:")
+
+    spec = {'enabled': True}
+    res = conn.clustering.attach_policy_to_cluster(
+        CLUSTER_ID, POLICY_ID, **spec
+    )
+    print(res)
+
+
+def detach_policy_from_cluster(conn):
+    print("Detach a policy from a cluster:")
+
+    res = conn.clustering.detach_policy_from_cluster(CLUSTER_ID, POLICY_ID)
+    print(res)
+
+
+def check_cluster(conn):
+    print("Check cluster:")
+
+    res = conn.clustering.check_cluster(CLUSTER_ID)
+    print(res)
+
+
+def recover_cluster(conn):
+    print("Recover cluster:")
+
+    spec = {'check': True}
+    res = conn.clustering.recover_cluster(CLUSTER_ID, **spec)
+    print(res)
diff --git a/examples/clustering/event.py b/examples/clustering/event.py
new file mode 100644
index 0000000..e6f1880
--- /dev/null
+++ b/examples/clustering/event.py
@@ -0,0 +1,37 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Managing policies in the Cluster service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/clustering.html
+"""
+
+EVENT_ID = "5d982071-76c5-4733-bf35-b9e38a563c99"
+
+
+def list_events(conn):
+    print("List Events:")
+
+    for events in conn.clustering.events():
+        print(events.to_dict())
+
+    for events in conn.clustering.events(sort='name:asc'):
+        print(events.to_dict())
+
+
+def get_event(conn):
+    print("Get Event:")
+
+    event = conn.clustering.get_event(EVENT_ID)
+    print(event.to_dict())
diff --git a/examples/clustering/node.py b/examples/clustering/node.py
new file mode 100644
index 0000000..4217a20
--- /dev/null
+++ b/examples/clustering/node.py
@@ -0,0 +1,93 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Managing policies in the Cluster service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/clustering.html
+"""
+
+NODE_NAME = 'Test_Node'
+NODE_ID = 'dd803d4a-015d-4223-b15f-db29bad3146c'
+PROFILE_ID = "b0e3a680-e270-4eb8-9361-e5c9503fba0a"
+
+
+def list_nodes(conn):
+    print("List Nodes:")
+
+    for node in conn.clustering.nodes():
+        print(node.to_dict())
+    for node in conn.clustering.nodes(sort='asc:name'):
+        print(node.to_dict())
+
+
+def create_node(conn):
+    print("Create Node:")
+
+    spec = {
+        'name': NODE_NAME,
+        'profile_id': PROFILE_ID,
+    }
+    node = conn.clustering.create_node(**spec)
+    print(node.to_dict())
+
+
+def get_node(conn):
+    print("Get Node:")
+
+    node = conn.clustering.get_node(NODE_ID)
+    print(node.to_dict())
+
+
+def find_node(conn):
+    print("Find Node:")
+
+    node = conn.clustering.find_node(NODE_ID)
+    print(node.to_dict())
+
+
+def update_node(conn):
+    print("Update Node:")
+
+    spec = {
+        'name': 'Test_Node01',
+        'profile_id': 'c0e3a680-e270-4eb8-9361-e5c9503fba0b',
+    }
+
+    node = conn.clustering.update_node(NODE_ID, **spec)
+    print(node.to_dict())
+
+
+def delete_node(conn):
+    print("Delete Node:")
+
+    conn.clustering.delete_node(NODE_ID)
+    print("Node deleted.")
+    # node support force delete
+    conn.clustering.delete_node(NODE_ID, False, True)
+    print("Node deleted")
+
+
+def check_node(conn):
+    print("Check Node:")
+
+    node = conn.clustering.check_node(NODE_ID)
+    print(node)
+
+
+def recover_node(conn):
+    print("Recover Node:")
+
+    spec = {'check': True}
+    node = conn.clustering.recover_node(NODE_ID, **spec)
+    print(node)
diff --git a/examples/clustering/policy.py b/examples/clustering/policy.py
new file mode 100644
index 0000000..da56e63
--- /dev/null
+++ b/examples/clustering/policy.py
@@ -0,0 +1,75 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Managing policies in the Cluster service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/clustering.html
+"""
+
+
+def list_policies(conn):
+    print("List Policies:")
+
+    for policy in conn.clustering.policies():
+        print(policy.to_dict())
+
+    for policy in conn.clustering.policies(sort='name:asc'):
+        print(policy.to_dict())
+
+
+def create_policy(conn):
+    print("Create Policy:")
+    attrs = {
+        'name': 'dp01',
+        'spec': {
+            'policy': 'senlin.policy.deletion',
+            'version': 1.0,
+            'properties': {
+                'criteria': 'oldest_first',
+                'destroy_after_deletion': True,
+            },
+        },
+    }
+
+    policy = conn.clustering.create_policy(attrs)
+    print(policy.to_dict())
+
+
+def get_policy(conn):
+    print("Get Policy:")
+
+    policy = conn.clustering.get_policy('dp01')
+    print(policy.to_dict())
+
+
+def find_policy(conn):
+    print("Find Policy:")
+
+    policy = conn.clustering.find_policy('dp01')
+    print(policy.to_dict())
+
+
+def update_policy(conn):
+    print("Update Policy:")
+
+    policy = conn.clustering.update_policy('dp01', name='dp02')
+    print(policy.to_dict())
+
+
+def delete_policy(conn):
+    print("Delete Policy:")
+
+    conn.clustering.delete_policy('dp01')
+
+    print("Policy deleted.")
diff --git a/examples/clustering/policy_type.py b/examples/clustering/policy_type.py
new file mode 100644
index 0000000..a5618e4
--- /dev/null
+++ b/examples/clustering/policy_type.py
@@ -0,0 +1,33 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Managing policy types in the Cluster service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/clustering.html
+"""
+
+
+def list_policy_types(conn):
+    print("List Policy Types:")
+
+    for pt in conn.clustering.policy_types():
+        print(pt.to_dict())
+
+
+def get_policy_type(conn):
+    print("Get Policy Type:")
+
+    pt = conn.clustering.get_policy_type('senlin.policy.deletion-1.0')
+
+    print(pt.to_dict())
diff --git a/examples/clustering/profile.py b/examples/clustering/profile.py
new file mode 100644
index 0000000..9fc2c9f
--- /dev/null
+++ b/examples/clustering/profile.py
@@ -0,0 +1,81 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from examples.connect import FLAVOR_NAME
+from examples.connect import IMAGE_NAME
+from examples.connect import NETWORK_NAME
+from examples.connect import SERVER_NAME
+
+"""
+Managing profiles in the Cluster service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/clustering.html
+"""
+
+
+def list_profiles(conn):
+    print("List Profiles:")
+
+    for profile in conn.clustering.profiles():
+        print(profile.to_dict())
+
+    for profile in conn.clustering.profiles(sort='name:asc'):
+        print(profile.to_dict())
+
+
+def create_profile(conn):
+    print("Create Profile:")
+
+    spec = {
+        'profile': 'os.nova.server',
+        'version': 1.0,
+        'name': 'os_server',
+        'properties': {
+            'name': SERVER_NAME,
+            'flavor': FLAVOR_NAME,
+            'image': IMAGE_NAME,
+            'networks': {'network': NETWORK_NAME},
+        },
+    }
+
+    profile = conn.clustering.create_profile(spec)
+    print(profile.to_dict())
+
+
+def get_profile(conn):
+    print("Get Profile:")
+
+    profile = conn.clustering.get_profile('os_server')
+    print(profile.to_dict())
+
+
+def find_profile(conn):
+    print("Find Profile:")
+
+    profile = conn.clustering.find_profile('os_server')
+    print(profile.to_dict())
+
+
+def update_profile(conn):
+    print("Update Profile:")
+
+    profile = conn.clustering.update_profile('os_server', name='old_server')
+    print(profile.to_dict())
+
+
+def delete_profile(conn):
+    print("Delete Profile:")
+
+    conn.clustering.delete_profile('os_server')
+
+    print("Profile deleted.")
diff --git a/examples/clustering/profile_type.py b/examples/clustering/profile_type.py
new file mode 100644
index 0000000..ab84811
--- /dev/null
+++ b/examples/clustering/profile_type.py
@@ -0,0 +1,33 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Managing profile types in the Cluster service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/clustering.html
+"""
+
+
+def list_profile_types(conn):
+    print("List Profile Types:")
+
+    for pt in conn.clustering.profile_types():
+        print(pt.to_dict())
+
+
+def get_profile_type(conn):
+    print("Get Profile Type:")
+
+    pt = conn.clustering.get_profile_type('os.nova.server-1.0')
+
+    print(pt.to_dict())
diff --git a/examples/clustering/receiver.py b/examples/clustering/receiver.py
new file mode 100644
index 0000000..2c9a9c4
--- /dev/null
+++ b/examples/clustering/receiver.py
@@ -0,0 +1,76 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Managing policies in the Cluster service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/clustering.html
+"""
+
+FAKE_NAME = 'test_receiver'
+CLUSTER_ID = "ae63a10b-4a90-452c-aef1-113a0b255ee3"
+
+
+def list_receivers(conn):
+    print("List Receivers:")
+
+    for receiver in conn.clustering.receivers():
+        print(receiver.to_dict())
+
+    for receiver in conn.clustering.receivers(sort='name:asc'):
+        print(receiver.to_dict())
+
+
+def create_receiver(conn):
+    print("Create Receiver:")
+
+    # Build the receiver attributes and create the recever.
+    spec = {
+        "action": "CLUSTER_SCALE_OUT",
+        "cluster_id": CLUSTER_ID,
+        "name": FAKE_NAME,
+        "params": {"count": "1"},
+        "type": "webhook",
+    }
+
+    receiver = conn.clustering.create_receiver(**spec)
+    print(receiver.to_dict())
+
+
+def get_receiver(conn):
+    print("Get Receiver:")
+
+    receiver = conn.clustering.get_receiver(FAKE_NAME)
+    print(receiver.to_dict())
+
+
+def find_receiver(conn):
+    print("Find Receiver:")
+
+    receiver = conn.clustering.find_receiver(FAKE_NAME)
+    print(receiver.to_dict())
+
+
+def update_receiver(conn):
+    print("Update Receiver:")
+
+    spec = {"name": "test_receiver2", "params": {"count": "2"}}
+    receiver = conn.clustering.update_receiver(FAKE_NAME, **spec)
+    print(receiver.to_dict())
+
+
+def delete_receiver(conn):
+    print("Delete Receiver:")
+
+    conn.clustering.delete_receiver(FAKE_NAME)
+    print("Receiver deleted.")
diff --git a/baremetal/__init__.py b/examples/compute/__init__.py
similarity index 100%
rename from baremetal/__init__.py
rename to examples/compute/__init__.py
diff --git a/examples/compute/create.py b/examples/compute/create.py
new file mode 100644
index 0000000..d4250ef
--- /dev/null
+++ b/examples/compute/create.py
@@ -0,0 +1,78 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import errno
+import os
+
+from examples.connect import FLAVOR_NAME
+from examples.connect import IMAGE_NAME
+from examples.connect import KEYPAIR_NAME
+from examples.connect import NETWORK_NAME
+from examples.connect import PRIVATE_KEYPAIR_FILE
+from examples.connect import SERVER_NAME
+from examples.connect import SSH_DIR
+
+"""
+Create resources with the Compute service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/compute.html
+"""
+
+
+def create_keypair(conn):
+    keypair = conn.compute.find_keypair(KEYPAIR_NAME)
+
+    if not keypair:
+        print("Create Key Pair:")
+
+        keypair = conn.compute.create_keypair(name=KEYPAIR_NAME)
+
+        print(keypair)
+
+        try:
+            os.mkdir(SSH_DIR)
+        except OSError as e:
+            if e.errno != errno.EEXIST:
+                raise e
+
+        with open(PRIVATE_KEYPAIR_FILE, 'w') as f:
+            f.write("%s" % keypair.private_key)
+
+        os.chmod(PRIVATE_KEYPAIR_FILE, 0o400)
+
+    return keypair
+
+
+def create_server(conn):
+    print("Create Server:")
+
+    image = conn.image.find_image(IMAGE_NAME)
+    flavor = conn.compute.find_flavor(FLAVOR_NAME)
+    network = conn.network.find_network(NETWORK_NAME)
+    keypair = create_keypair(conn)
+
+    server = conn.compute.create_server(
+        name=SERVER_NAME,
+        image_id=image.id,
+        flavor_id=flavor.id,
+        networks=[{"uuid": network.id}],
+        key_name=keypair.name,
+    )
+
+    server = conn.compute.wait_for_server(server)
+
+    print(
+        "ssh -i {key} root@{ip}".format(
+            key=PRIVATE_KEYPAIR_FILE, ip=server.access_ipv4
+        )
+    )
diff --git a/examples/compute/delete.py b/examples/compute/delete.py
new file mode 100644
index 0000000..6fce1a3
--- /dev/null
+++ b/examples/compute/delete.py
@@ -0,0 +1,51 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import errno
+import os
+
+from examples.connect import KEYPAIR_NAME
+from examples.connect import PRIVATE_KEYPAIR_FILE
+from examples.connect import SERVER_NAME
+
+"""
+Delete resources with the Compute service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/compute.html
+"""
+
+
+def delete_keypair(conn):
+    print("Delete Key Pair:")
+
+    keypair = conn.compute.find_keypair(KEYPAIR_NAME)
+
+    try:
+        os.remove(PRIVATE_KEYPAIR_FILE)
+    except OSError as e:
+        if e.errno != errno.ENOENT:
+            raise e
+
+    print(keypair)
+
+    conn.compute.delete_keypair(keypair)
+
+
+def delete_server(conn):
+    print("Delete Server:")
+
+    server = conn.compute.find_server(SERVER_NAME)
+
+    print(server)
+
+    conn.compute.delete_server(server)
diff --git a/examples/compute/find.py b/examples/compute/find.py
new file mode 100644
index 0000000..988b4d9
--- /dev/null
+++ b/examples/compute/find.py
@@ -0,0 +1,50 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import examples.connect
+
+"""
+Find a resource from the Compute service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/compute.html
+"""
+
+
+def find_image(conn):
+    print("Find Image:")
+
+    image = conn.image.find_image(examples.connect.IMAGE_NAME)
+
+    print(image)
+
+    return image
+
+
+def find_flavor(conn):
+    print("Find Flavor:")
+
+    flavor = conn.compute.find_flavor(examples.connect.FLAVOR_NAME)
+
+    print(flavor)
+
+    return flavor
+
+
+def find_keypair(conn):
+    print("Find Keypair:")
+
+    keypair = conn.compute.find_keypair(examples.connect.KEYPAIR_NAME)
+
+    print(keypair)
+
+    return keypair
diff --git a/examples/compute/list.py b/examples/compute/list.py
new file mode 100644
index 0000000..db53e81
--- /dev/null
+++ b/examples/compute/list.py
@@ -0,0 +1,46 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+List resources from the Compute service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/compute.html
+"""
+
+
+def list_servers(conn):
+    print("List Servers:")
+
+    for server in conn.compute.servers():
+        print(server)
+
+
+def list_images(conn):
+    print("List Images:")
+
+    for image in conn.compute.images():
+        print(image)
+
+
+def list_flavors(conn):
+    print("List Flavors:")
+
+    for flavor in conn.compute.flavors():
+        print(flavor)
+
+
+def list_keypairs(conn):
+    print("List Keypairs:")
+
+    for keypair in conn.compute.keypairs():
+        print(keypair)
diff --git a/examples/connect.py b/examples/connect.py
new file mode 100644
index 0000000..50de0fd
--- /dev/null
+++ b/examples/connect.py
@@ -0,0 +1,97 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Connect to an OpenStack cloud.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/connect_from_config.html
+"""
+
+import argparse
+import os
+import sys
+
+import openstack
+from openstack.config import loader
+
+openstack.enable_logging(True, stream=sys.stdout)
+
+#: Defines the OpenStack Config cloud key in your config file,
+#: typically in $HOME/.config/openstack/clouds.yaml. That configuration
+#: will determine where the examples will be run and what resource defaults
+#: will be used to run the examples.
+TEST_CLOUD = os.getenv('OS_TEST_CLOUD', 'devstack-admin')
+EXAMPLE_CONFIG_KEY = os.getenv('OPENSTACKSDK_EXAMPLE_CONFIG_KEY', 'example')
+config = loader.OpenStackConfig()
+cloud = openstack.connect(cloud=TEST_CLOUD)
+
+
+class Opts:
+    def __init__(self, cloud_name='devstack-admin', debug=False):
+        self.cloud = cloud_name
+        self.debug = debug
+        # Use identity v3 API for examples.
+        self.identity_api_version = '3'
+
+
+def _get_resource_value(resource_key, default):
+    return config.get_extra_config(EXAMPLE_CONFIG_KEY).get(
+        resource_key, default
+    )
+
+
+SERVER_NAME = 'openstacksdk-example'
+IMAGE_NAME = _get_resource_value('image_name', 'cirros-0.4.0-x86_64-disk')
+FLAVOR_NAME = _get_resource_value('flavor_name', 'm1.small')
+NETWORK_NAME = _get_resource_value('network_name', 'private')
+KEYPAIR_NAME = _get_resource_value('keypair_name', 'openstacksdk-example')
+SSH_DIR = _get_resource_value(
+    'ssh_dir', '{home}/.ssh'.format(home=os.path.expanduser("~"))
+)
+PRIVATE_KEYPAIR_FILE = _get_resource_value(
+    'private_keypair_file',
+    '{ssh_dir}/id_rsa.{key}'.format(ssh_dir=SSH_DIR, key=KEYPAIR_NAME),
+)
+
+EXAMPLE_IMAGE_NAME = 'openstacksdk-example-public-image'
+
+
+def create_connection_from_config():
+    return openstack.connect(cloud=TEST_CLOUD)
+
+
+def create_connection_from_args():
+    parser = argparse.ArgumentParser()
+    return openstack.connect(options=parser)
+
+
+def create_connection(
+    auth_url,
+    region,
+    project_name,
+    username,
+    password,
+    user_domain,
+    project_domain,
+):
+    return openstack.connect(
+        auth_url=auth_url,
+        project_name=project_name,
+        username=username,
+        password=password,
+        region_name=region,
+        user_domain_name=user_domain,
+        project_domain_name=project_domain,
+        app_name='examples',
+        app_version='1.0',
+    )
diff --git a/baremetal/v1/__init__.py b/examples/dns/__init__.py
similarity index 100%
rename from baremetal/v1/__init__.py
rename to examples/dns/__init__.py
diff --git a/examples/dns/list.py b/examples/dns/list.py
new file mode 100644
index 0000000..50a5e81
--- /dev/null
+++ b/examples/dns/list.py
@@ -0,0 +1,25 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+List resources from the DNS service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/dns.html
+"""
+
+
+def list_zones(conn):
+    print("List Zones:")
+
+    for zone in conn.dns.zones():
+        print(zone)
diff --git a/baremetal_introspection/__init__.py b/examples/identity/__init__.py
similarity index 100%
rename from baremetal_introspection/__init__.py
rename to examples/identity/__init__.py
diff --git a/examples/identity/list.py b/examples/identity/list.py
new file mode 100644
index 0000000..069480b
--- /dev/null
+++ b/examples/identity/list.py
@@ -0,0 +1,109 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+List resources from the Identity service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/identity.html
+"""
+
+
+def list_users(conn):
+    print("List Users:")
+
+    for user in conn.identity.users():
+        print(user)
+
+
+def list_credentials(conn):
+    print("List Credentials:")
+
+    for credential in conn.identity.credentials():
+        print(credential)
+
+
+def list_projects(conn):
+    print("List Projects:")
+
+    for project in conn.identity.projects():
+        print(project)
+
+
+def list_domains(conn):
+    print("List Domains:")
+
+    for domain in conn.identity.domains():
+        print(domain)
+
+
+def list_groups(conn):
+    print("List Groups:")
+
+    for group in conn.identity.groups():
+        print(group)
+
+
+def list_services(conn):
+    print("List Services:")
+
+    for service in conn.identity.services():
+        print(service)
+
+
+def list_endpoints(conn):
+    print("List Endpoints:")
+
+    for endpoint in conn.identity.endpoints():
+        print(endpoint)
+
+
+def list_regions(conn):
+    print("List Regions:")
+
+    for region in conn.identity.regions():
+        print(region)
+
+
+def list_roles(conn):
+    print("List Roles:")
+
+    for role in conn.identity.roles():
+        print(role)
+
+
+def list_role_domain_group_assignments(conn):
+    print("List Roles assignments for a group on domain:")
+
+    for role in conn.identity.role_domain_group_assignments():
+        print(role)
+
+
+def list_role_domain_user_assignments(conn):
+    print("List Roles assignments for a user on domain:")
+
+    for role in conn.identity.role_project_user_assignments():
+        print(role)
+
+
+def list_role_project_group_assignments(conn):
+    print("List Roles assignments for a group on project:")
+
+    for role in conn.identity.role_project_group_assignments():
+        print(role)
+
+
+def list_role_project_user_assignments(conn):
+    print("List Roles assignments for a user on project:")
+
+    for role in conn.identity.role_project_user_assignments():
+        print(role)
diff --git a/baremetal_introspection/v1/__init__.py b/examples/image/__init__.py
similarity index 100%
rename from baremetal_introspection/v1/__init__.py
rename to examples/image/__init__.py
diff --git a/examples/image/create.py b/examples/image/create.py
new file mode 100644
index 0000000..a80fc33
--- /dev/null
+++ b/examples/image/create.py
@@ -0,0 +1,37 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from examples.connect import EXAMPLE_IMAGE_NAME
+
+"""
+Create resources with the Image service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/image.html
+"""
+
+
+def upload_image(conn):
+    print("Upload Image:")
+
+    # Load fake image data for the example.
+    data = 'This is fake image data.'
+
+    # Build the image attributes and upload the image.
+    image_attrs = {
+        'name': EXAMPLE_IMAGE_NAME,
+        'data': data,
+        'disk_format': 'raw',
+        'container_format': 'bare',
+        'visibility': 'public',
+    }
+    conn.image.upload_image(**image_attrs)
diff --git a/examples/image/delete.py b/examples/image/delete.py
new file mode 100644
index 0000000..b3eb290
--- /dev/null
+++ b/examples/image/delete.py
@@ -0,0 +1,28 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from examples.connect import EXAMPLE_IMAGE_NAME
+
+"""
+Delete resources with the Image service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/image.html
+"""
+
+
+def delete_image(conn):
+    print("Delete Image:")
+
+    example_image = conn.image.find_image(EXAMPLE_IMAGE_NAME)
+
+    conn.image.delete_image(example_image, ignore_missing=False)
diff --git a/examples/image/download.py b/examples/image/download.py
new file mode 100644
index 0000000..791a652
--- /dev/null
+++ b/examples/image/download.py
@@ -0,0 +1,63 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import hashlib
+
+"""
+Download an image with the Image service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/image.html
+"""
+
+
+def download_image_stream(conn):
+    print("Download Image via streaming:")
+
+    # Find the image you would like to download.
+    image = conn.image.find_image("myimage")
+
+    # As the actual download now takes place outside of the library
+    # and in your own code, you are now responsible for checking
+    # the integrity of the data. Create an MD5 has to be computed
+    # after all of the data has been consumed.
+    md5 = hashlib.md5()
+
+    with open("myimage.qcow2", "wb") as local_image:
+        response = conn.image.download_image(image, stream=True)
+
+        # Read only 1 MiB of memory at a time until
+        # all of the image data has been consumed.
+        for chunk in response.iter_content(chunk_size=1024 * 1024):
+            # With each chunk, add it to the hash to be computed.
+            md5.update(chunk)
+
+            local_image.write(chunk)
+
+        # Now that you've consumed all of the data the response gave you,
+        # ensure that the checksums of what the server offered and
+        # what you downloaded are the same.
+        if response.headers["Content-MD5"] != md5.hexdigest():
+            raise Exception("Checksum mismatch in downloaded content")
+
+
+def download_image(conn):
+    print("Download Image:")
+
+    # Find the image you would like to download.
+    image = conn.image.find_image("myimage")
+
+    with open("myimage.qcow2", "w") as local_image:
+        response = conn.image.download_image(image)
+
+        # Response will contain the entire contents of the Image.
+        local_image.write(response)
diff --git a/examples/image/import.py b/examples/image/import.py
new file mode 100644
index 0000000..44be082
--- /dev/null
+++ b/examples/image/import.py
@@ -0,0 +1,40 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from examples.connect import EXAMPLE_IMAGE_NAME
+
+"""
+Create resources with the Image service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/image.html
+"""
+
+
+def import_image(conn):
+    print("Import Image:")
+
+    # Url where glance can download the image
+    uri = (
+        'https://download.cirros-cloud.net/0.4.0/'
+        'cirros-0.4.0-x86_64-disk.img'
+    )
+
+    # Build the image attributes and import the image.
+    image_attrs = {
+        'name': EXAMPLE_IMAGE_NAME,
+        'disk_format': 'qcow2',
+        'container_format': 'bare',
+        'visibility': 'public',
+    }
+    image = conn.image.create_image(**image_attrs)
+    conn.image.import_image(image, method="web-download", uri=uri)
diff --git a/examples/image/list.py b/examples/image/list.py
new file mode 100644
index 0000000..12eecba
--- /dev/null
+++ b/examples/image/list.py
@@ -0,0 +1,25 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+List resources from the Image service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/image.html
+"""
+
+
+def list_images(conn):
+    print("List Images:")
+
+    for image in conn.image.images():
+        print(image)
diff --git a/block_storage/__init__.py b/examples/key_manager/__init__.py
similarity index 100%
rename from block_storage/__init__.py
rename to examples/key_manager/__init__.py
diff --git a/examples/key_manager/create.py b/examples/key_manager/create.py
new file mode 100644
index 0000000..b01387b
--- /dev/null
+++ b/examples/key_manager/create.py
@@ -0,0 +1,27 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+List resources from the Key Manager service.
+"""
+
+
+def create_secret(conn):
+    print("Create a secret:")
+
+    conn.key_manager.create_secret(
+        name="My public key",
+        secret_type="public",
+        expiration="2020-02-28T23:59:59",
+        payload="ssh rsa...",
+        payload_content_type="text/plain",
+    )
diff --git a/examples/key_manager/get.py b/examples/key_manager/get.py
new file mode 100644
index 0000000..0025dd6
--- /dev/null
+++ b/examples/key_manager/get.py
@@ -0,0 +1,26 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+List resources from the Key Manager service.
+"""
+
+s = None
+
+
+def get_secret_payload(conn):
+    print("Get a secret's payload:")
+
+    # Assuming you have an object `s` which you perhaps received from
+    # a conn.key_manager.secrets() call...
+    secret = conn.key_manager.get_secret(s.secret_id)
+    print(secret.payload)
diff --git a/examples/key_manager/list.py b/examples/key_manager/list.py
new file mode 100644
index 0000000..17f989e
--- /dev/null
+++ b/examples/key_manager/list.py
@@ -0,0 +1,31 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+List resources from the Key Manager service.
+"""
+
+
+def list_secrets(conn):
+    print("List Secrets:")
+
+    for secret in conn.key_manager.secrets():
+        print(secret)
+
+
+def list_secrets_query(conn):
+    print("List Secrets:")
+
+    for secret in conn.key_manager.secrets(
+        secret_type="symmetric", expiration="gte:2020-01-01T00:00:00"
+    ):
+        print(secret)
diff --git a/block_storage/v2/__init__.py b/examples/network/__init__.py
similarity index 100%
rename from block_storage/v2/__init__.py
rename to examples/network/__init__.py
diff --git a/examples/network/create.py b/examples/network/create.py
new file mode 100644
index 0000000..bb25a81
--- /dev/null
+++ b/examples/network/create.py
@@ -0,0 +1,38 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Create resources with the Network service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/network.html
+"""
+
+
+def create_network(conn):
+    print("Create Network:")
+
+    example_network = conn.network.create_network(
+        name='openstacksdk-example-project-network'
+    )
+
+    print(example_network)
+
+    example_subnet = conn.network.create_subnet(
+        name='openstacksdk-example-project-subnet',
+        network_id=example_network.id,
+        ip_version='4',
+        cidr='10.0.2.0/24',
+        gateway_ip='10.0.2.1',
+    )
+
+    print(example_subnet)
diff --git a/examples/network/delete.py b/examples/network/delete.py
new file mode 100644
index 0000000..b43413f
--- /dev/null
+++ b/examples/network/delete.py
@@ -0,0 +1,30 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Delete resources with the Network service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/network.html
+"""
+
+
+def delete_network(conn):
+    print("Delete Network:")
+
+    example_network = conn.network.find_network(
+        'openstacksdk-example-project-network'
+    )
+
+    for example_subnet in example_network.subnet_ids:
+        conn.network.delete_subnet(example_subnet, ignore_missing=False)
+    conn.network.delete_network(example_network, ignore_missing=False)
diff --git a/examples/network/find.py b/examples/network/find.py
new file mode 100644
index 0000000..95d3a11
--- /dev/null
+++ b/examples/network/find.py
@@ -0,0 +1,30 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import examples.connect
+
+"""
+Find a resource from the Network service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/network.html
+"""
+
+
+def find_network(conn):
+    print("Find Network:")
+
+    network = conn.network.find_network(examples.connect.NETWORK_NAME)
+
+    print(network)
+
+    return network
diff --git a/examples/network/list.py b/examples/network/list.py
new file mode 100644
index 0000000..2cedba5
--- /dev/null
+++ b/examples/network/list.py
@@ -0,0 +1,60 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+List resources from the Network service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/network.html
+"""
+
+
+def list_networks(conn):
+    print("List Networks:")
+
+    for network in conn.network.networks():
+        print(network)
+
+
+def list_subnets(conn):
+    print("List Subnets:")
+
+    for subnet in conn.network.subnets():
+        print(subnet)
+
+
+def list_ports(conn):
+    print("List Ports:")
+
+    for port in conn.network.ports():
+        print(port)
+
+
+def list_security_groups(conn):
+    print("List Security Groups:")
+
+    for port in conn.network.security_groups():
+        print(port)
+
+
+def list_routers(conn):
+    print("List Routers:")
+
+    for router in conn.network.routers():
+        print(router)
+
+
+def list_network_agents(conn):
+    print("List Network Agents:")
+
+    for agent in conn.network.agents():
+        print(agent)
diff --git a/examples/network/security_group_rules.py b/examples/network/security_group_rules.py
new file mode 100644
index 0000000..b9eb8b8
--- /dev/null
+++ b/examples/network/security_group_rules.py
@@ -0,0 +1,62 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Create resources with the Network service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/network.html
+"""
+
+
+def open_port(conn):
+    print("Open a port:")
+
+    example_sec_group = conn.network.create_security_group(
+        name='openstacksdk-example-security-group'
+    )
+
+    print(example_sec_group)
+
+    example_rule = conn.network.create_security_group_rule(
+        security_group_id=example_sec_group.id,
+        direction='ingress',
+        remote_ip_prefix='0.0.0.0/0',
+        protocol='tcp',
+        port_range_max='443',
+        port_range_min='443',
+        ethertype='IPv4',
+    )
+
+    print(example_rule)
+
+
+def allow_ping(conn):
+    print("Allow pings:")
+
+    example_sec_group = conn.network.create_security_group(
+        name='openstacksdk-example-security-group2'
+    )
+
+    print(example_sec_group)
+
+    example_rule = conn.network.create_security_group_rule(
+        security_group_id=example_sec_group.id,
+        direction='ingress',
+        remote_ip_prefix='0.0.0.0/0',
+        protocol='icmp',
+        port_range_max=None,
+        port_range_min=None,
+        ethertype='IPv4',
+    )
+
+    print(example_rule)
diff --git a/block_storage/v3/__init__.py b/examples/shared_file_system/__init__.py
similarity index 100%
rename from block_storage/v3/__init__.py
rename to examples/shared_file_system/__init__.py
diff --git a/examples/shared_file_system/availability_zones.py b/examples/shared_file_system/availability_zones.py
new file mode 100644
index 0000000..73c0e3f
--- /dev/null
+++ b/examples/shared_file_system/availability_zones.py
@@ -0,0 +1,24 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+List resources from the Shared File System service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/shared_file_system.html
+"""
+
+
+def list_availability_zones(conn):
+    print("List Shared File System Availability Zones:")
+    for az in conn.share.availability_zones():
+        print(az)
diff --git a/examples/shared_file_system/share_group_snapshots.py b/examples/shared_file_system/share_group_snapshots.py
new file mode 100644
index 0000000..33ea2e7
--- /dev/null
+++ b/examples/shared_file_system/share_group_snapshots.py
@@ -0,0 +1,66 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+List resources from the Shared File System service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/shared_file_system.html
+"""
+
+
+def list_share_group_snapshots(conn, **query):
+    print("List all share group snapshots:")
+    share_group_snapshots = conn.share.share_group_snapshots(**query)
+    for share_group_snapshot in share_group_snapshots:
+        print(share_group_snapshot)
+
+
+def get_share_group_snapshot(conn, group_snapshot_id):
+    print("Show share group snapshot with given Id:")
+    share_group_snapshot = conn.share.get_share_group_snapshots(
+        group_snapshot_id
+    )
+    print(share_group_snapshot)
+
+
+def share_group_snapshot_members(conn, group_snapshot_id):
+    print("Show share group snapshot members with given Id:")
+    members = conn.share.share_group_snapshot_members(group_snapshot_id)
+    for member in members:
+        print(member)
+
+
+def create_share_group_snapshot(conn, share_group_id, **attrs):
+    print("Creating a share group snapshot from given attributes:")
+    share_group_snapshot = conn.share.create_share_group_snapshot(
+        share_group_id, **attrs
+    )
+    print(share_group_snapshot)
+
+
+def reset_share_group_snapshot_status(conn, group_snapshot_id, status):
+    print("Reseting the share group snapshot status:")
+    conn.share.reset_share_group_snapshot_status(group_snapshot_id, status)
+
+
+def update_share_group_snapshot(conn, group_snapshot_id, **attrs):
+    print("Updating a share group snapshot with given Id:")
+    share_group_snapshot = conn.share.update_share_group_snapshot(
+        group_snapshot_id, **attrs
+    )
+    print(share_group_snapshot)
+
+
+def delete_share_group_snapshot(conn, group_snapshot_id):
+    print("Deleting a share group snapshot with given Id:")
+    conn.share.delete_share_group_snapshot(group_snapshot_id)
diff --git a/examples/shared_file_system/share_instances.py b/examples/shared_file_system/share_instances.py
new file mode 100644
index 0000000..972d2b6
--- /dev/null
+++ b/examples/shared_file_system/share_instances.py
@@ -0,0 +1,43 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+List resources from the Shared File System service.
+
+For a full guide see
+https://docs.openstack.org/openstacksdk/latest/user/guides/shared_file_system.html
+"""
+
+
+def share_instances(conn, **query):
+    print('List all share instances:')
+    for si in conn.share.share_instances(**query):
+        print(si)
+
+
+def get_share_instance(conn, share_instance_id):
+    print('Get share instance with given Id:')
+    share_instance = conn.share.get_share_instance(share_instance_id)
+    print(share_instance)
+
+
+def reset_share_instance_status(conn, share_instance_id, status):
+    print(
+        'Reset the status of the share instance with the given '
+        'share_instance_id to the given status'
+    )
+    conn.share.reset_share_instance_status(share_instance_id, status)
+
+
+def delete_share_instance(conn, share_instance_id):
+    print('Force-delete the share instance with the given share_instance_id')
+    conn.share.delete_share_instance(share_instance_id)
diff --git a/examples/shared_file_system/share_metadata.py b/examples/shared_file_system/share_metadata.py
new file mode 100644
index 0000000..b1ca00c
--- /dev/null
+++ b/examples/shared_file_system/share_metadata.py
@@ -0,0 +1,61 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+def list_share_metadata(conn, share_id):
+    # Method returns the entire share with the metadata inside it.
+    returned_share = conn.get_share_metadata(share_id)
+
+    # Access metadata of share
+    metadata = returned_share['metadata']
+
+    print("List All Share Metadata:")
+    for meta_key in metadata:
+        print(f"{meta_key}={metadata[meta_key]}")
+
+
+def get_share_metadata_item(conn, share_id, key):
+    # Method returns the entire share with the metadata inside it.
+    returned_share = conn.get_share_metadata_item(share_id, key)
+
+    # Access metadata of share
+    metadata = returned_share['metadata']
+
+    print("Get share metadata item given item key and share id:")
+    print(metadata[key])
+
+
+def create_share_metadata(conn, share_id, metadata):
+    # Method returns the entire share with the metadata inside it.
+    created_share = conn.create_share_metadata(share_id, metadata)
+
+    # Access metadata of share
+    metadata = created_share['metadata']
+
+    print("Metadata created for given share:")
+    print(metadata)
+
+
+def update_share_metadata(conn, share_id, metadata):
+    # Method returns the entire share with the metadata inside it.
+    updated_share = conn.update_share_metadata(share_id, metadata, True)
+
+    # Access metadata of share
+    metadata = updated_share['metadata']
+
+    print("Updated metadata for given share:")
+    print(metadata)
+
+
+def delete_share_metadata(conn, share_id, keys):
+    # Method doesn't return anything.
+    conn.delete_share_metadata(share_id, keys)
diff --git a/examples/shared_file_system/shares.py b/examples/shared_file_system/shares.py
new file mode 100644
index 0000000..5f274ed
--- /dev/null
+++ b/examples/shared_file_system/shares.py
@@ -0,0 +1,56 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+def resize_share(conn, share_id, share_size):
+    # Be explicit about not wanting to use force if the share
+    # will be extended.
+    use_force = False
+    print('Resize the share to the given size:')
+    conn.share.resize_share(share_id, share_size, use_force)
+
+
+def resize_shares_without_shrink(conn, min_size):
+    # Sometimes, extending shares without shrinking
+    # them (effectively setting a min size) is desirable.
+
+    # Get list of shares from the connection.
+    shares = conn.share.shares()
+
+    # Loop over the shares:
+    for share in shares:
+        # Extend shares smaller than min_size to min_size,
+        # but don't shrink shares larger than min_size.
+        conn.share.resize_share(share.id, min_size, no_shrink=True)
+
+
+def manage_share(conn, protocol, export_path, service_host, **params):
+    # Manage a share with the given protocol, export path, service host, and
+    # optional additional parameters
+    managed_share = conn.share.manage_share(
+        protocol, export_path, service_host, **params
+    )
+
+    # Can get the ID of the share, which is now being managed with Manila
+    managed_share_id = managed_share.id
+    print("The ID of the share which was managed: %s", managed_share_id)
+
+
+def unmanage_share(conn, share_id):
+    # Unmanage the share with the given share ID
+    conn.share.unmanage_share(share_id)
+
+    try:
+        # Getting the share will raise an exception as it has been unmanaged
+        conn.share.get_share(share_id)
+    except Exception:
+        pass
diff --git a/extras/delete-network.sh b/extras/delete-network.sh
new file mode 100644
index 0000000..1d02959
--- /dev/null
+++ b/extras/delete-network.sh
@@ -0,0 +1,14 @@
+neutron router-gateway-clear router1
+neutron router-interface-delete router1
+for subnet in private-subnet ipv6-private-subnet ; do
+    neutron router-interface-delete router1 $subnet
+    subnet_id=$(neutron subnet-show $subnet -f value -c id)
+    neutron port-list | grep $subnet_id | awk '{print $2}' | xargs -n1 neutron port-delete
+    neutron subnet-delete $subnet
+done
+neutron router-delete router1
+neutron net-delete private
+
+# Make the public network directly consumable
+neutron subnet-update public-subnet --enable-dhcp=True
+neutron net-update public --shared=True
diff --git a/extras/run-ansible-tests.sh b/extras/run-ansible-tests.sh
new file mode 100755
index 0000000..14ed166
--- /dev/null
+++ b/extras/run-ansible-tests.sh
@@ -0,0 +1,100 @@
+#!/bin/bash
+#############################################################################
+# run-ansible-tests.sh
+#
+# Script used to setup a tox environment for running Ansible. This is meant
+# to be called by tox (via tox.ini). To run the Ansible tests, use:
+#
+#    tox -e ansible [TAG ...]
+# or
+#    tox -e ansible -- -c cloudX [TAG ...]
+# or to use the development version of Ansible:
+#    tox -e ansible -- -d -c cloudX [TAG ...]
+#
+# USAGE:
+#    run-ansible-tests.sh -e ENVDIR [-d] [-c CLOUD] [TAG ...]
+#
+# PARAMETERS:
+#    -d         Use Ansible source repo development branch.
+#    -e ENVDIR  Directory of the tox environment to use for testing.
+#    -c CLOUD   Name of the cloud to use for testing.
+#               Defaults to "devstack-admin".
+#    [TAG ...]  Optional list of space-separated tags to control which
+#               modules are tested.
+#
+# EXAMPLES:
+#    # Run all Ansible tests
+#    run-ansible-tests.sh -e ansible
+#
+#    # Run auth, keypair, and network tests against cloudX
+#    run-ansible-tests.sh -e ansible -c cloudX auth keypair network
+#############################################################################
+
+
+CLOUD="devstack-admin"
+ENVDIR=
+USE_DEV=0
+
+while getopts "c:de:" opt
+do
+    case $opt in
+    d) USE_DEV=1 ;;
+    c) CLOUD=${OPTARG} ;;
+    e) ENVDIR=${OPTARG} ;;
+    ?) echo "Invalid option: -${OPTARG}"
+       exit 1;;
+    esac
+done
+
+if [ -z ${ENVDIR} ]
+then
+    echo "Option -e is required"
+    exit 1
+fi
+
+shift $((OPTIND-1))
+TAGS=$( echo "$*" | tr ' ' , )
+
+# We need to source the current tox environment so that Ansible will
+# be setup for the correct python environment.
+source $ENVDIR/bin/activate
+
+if [ ${USE_DEV} -eq 1 ]
+then
+    if [ -d ${ENVDIR}/ansible ]
+    then
+        echo "Using existing Ansible source repo"
+    else
+        echo "Installing Ansible source repo at $ENVDIR"
+        git clone --recursive https://github.com/ansible/ansible.git ${ENVDIR}/ansible
+    fi
+    source $ENVDIR/ansible/hacking/env-setup
+fi
+
+# Run the shade Ansible tests
+tag_opt=""
+if [ ! -z ${TAGS} ]
+then
+    tag_opt="--tags ${TAGS}"
+fi
+
+# Loop through all ANSIBLE_VAR_ environment variables to allow passing the further
+for var in $(env | grep -e '^ANSIBLE_VAR_'); do
+  VAR_NAME=${var%%=*} # split variable name from value
+  ANSIBLE_VAR_NAME=${VAR_NAME#ANSIBLE_VAR_} # cut ANSIBLE_VAR_ prefix from variable name
+  ANSIBLE_VAR_NAME=${ANSIBLE_VAR_NAME,,} # lowercase ansible variable
+  ANSIBLE_VAR_VALUE=${!VAR_NAME} # Get the variable value
+  ANSIBLE_VARS+="${ANSIBLE_VAR_NAME}=${ANSIBLE_VAR_VALUE} " # concat variables
+done
+
+# Until we have a module that lets us determine the image we want from
+# within a playbook, we have to find the image here and pass it in.
+# We use the openstack client instead of nova client since it can use clouds.yaml.
+IMAGE=`openstack --os-cloud=${CLOUD} image list -f value -c Name | grep cirros | grep -v -e ramdisk -e kernel`
+if [ $? -ne 0 ]
+then
+  echo "Failed to find Cirros image"
+  exit 1
+fi
+
+ansible-playbook -vvv ./openstack/tests/ansible/run.yml -e "cloud=${CLOUD} image=${IMAGE} ${ANSIBLE_VARS}" ${tag_opt}
diff --git a/include-acceptance-regular-user.txt b/include-acceptance-regular-user.txt
new file mode 100644
index 0000000..62773e7
--- /dev/null
+++ b/include-acceptance-regular-user.txt
@@ -0,0 +1,12 @@
+# This file contains list of tests that can work with regular user privileges
+# Until all tests are modified to properly identify whether they are able to
+# run or must skip the ones that are known to work are listed here.
+### Block Storage
+openstack.tests.functional.block_storage.v3.test_volume
+# Do not enable test_backup for now, since it is not capable to determine
+# backup capabilities of the cloud
+# openstack.tests.functional.block_storage.v3.test_backup
+### Cloud
+openstack.tests.functional.cloud
+### Network
+openstack.tests.functional.network
diff --git a/README.md b/openstack/README.md
similarity index 100%
rename from README.md
rename to openstack/README.md
diff --git a/__init__.py b/openstack/__init__.py
similarity index 100%
rename from __init__.py
rename to openstack/__init__.py
diff --git a/__main__.py b/openstack/__main__.py
similarity index 100%
rename from __main__.py
rename to openstack/__main__.py
diff --git a/__pycache__/__init__.cpython-310.pyc b/openstack/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from __pycache__/__init__.cpython-310.pyc
rename to openstack/__pycache__/__init__.cpython-310.pyc
diff --git a/__pycache__/__main__.cpython-310.pyc b/openstack/__pycache__/__main__.cpython-310.pyc
similarity index 100%
rename from __pycache__/__main__.cpython-310.pyc
rename to openstack/__pycache__/__main__.cpython-310.pyc
diff --git a/__pycache__/_hacking.cpython-310.pyc b/openstack/__pycache__/_hacking.cpython-310.pyc
similarity index 100%
rename from __pycache__/_hacking.cpython-310.pyc
rename to openstack/__pycache__/_hacking.cpython-310.pyc
diff --git a/__pycache__/_log.cpython-310.pyc b/openstack/__pycache__/_log.cpython-310.pyc
similarity index 100%
rename from __pycache__/_log.cpython-310.pyc
rename to openstack/__pycache__/_log.cpython-310.pyc
diff --git a/__pycache__/_services_mixin.cpython-310.pyc b/openstack/__pycache__/_services_mixin.cpython-310.pyc
similarity index 100%
rename from __pycache__/_services_mixin.cpython-310.pyc
rename to openstack/__pycache__/_services_mixin.cpython-310.pyc
diff --git a/__pycache__/connection.cpython-310.pyc b/openstack/__pycache__/connection.cpython-310.pyc
similarity index 100%
rename from __pycache__/connection.cpython-310.pyc
rename to openstack/__pycache__/connection.cpython-310.pyc
diff --git a/__pycache__/exceptions.cpython-310.pyc b/openstack/__pycache__/exceptions.cpython-310.pyc
similarity index 100%
rename from __pycache__/exceptions.cpython-310.pyc
rename to openstack/__pycache__/exceptions.cpython-310.pyc
diff --git a/__pycache__/format.cpython-310.pyc b/openstack/__pycache__/format.cpython-310.pyc
similarity index 100%
rename from __pycache__/format.cpython-310.pyc
rename to openstack/__pycache__/format.cpython-310.pyc
diff --git a/__pycache__/proxy.cpython-310.pyc b/openstack/__pycache__/proxy.cpython-310.pyc
similarity index 100%
rename from __pycache__/proxy.cpython-310.pyc
rename to openstack/__pycache__/proxy.cpython-310.pyc
diff --git a/__pycache__/resource.cpython-310.pyc b/openstack/__pycache__/resource.cpython-310.pyc
similarity index 100%
rename from __pycache__/resource.cpython-310.pyc
rename to openstack/__pycache__/resource.cpython-310.pyc
diff --git a/__pycache__/service_description.cpython-310.pyc b/openstack/__pycache__/service_description.cpython-310.pyc
similarity index 100%
rename from __pycache__/service_description.cpython-310.pyc
rename to openstack/__pycache__/service_description.cpython-310.pyc
diff --git a/__pycache__/utils.cpython-310.pyc b/openstack/__pycache__/utils.cpython-310.pyc
similarity index 100%
rename from __pycache__/utils.cpython-310.pyc
rename to openstack/__pycache__/utils.cpython-310.pyc
diff --git a/__pycache__/version.cpython-310.pyc b/openstack/__pycache__/version.cpython-310.pyc
similarity index 100%
rename from __pycache__/version.cpython-310.pyc
rename to openstack/__pycache__/version.cpython-310.pyc
diff --git a/__pycache__/warnings.cpython-310.pyc b/openstack/__pycache__/warnings.cpython-310.pyc
similarity index 100%
rename from __pycache__/warnings.cpython-310.pyc
rename to openstack/__pycache__/warnings.cpython-310.pyc
diff --git a/_hacking.py b/openstack/_hacking.py
similarity index 100%
rename from _hacking.py
rename to openstack/_hacking.py
diff --git a/_log.py b/openstack/_log.py
similarity index 100%
rename from _log.py
rename to openstack/_log.py
diff --git a/_services_mixin.py b/openstack/_services_mixin.py
similarity index 100%
rename from _services_mixin.py
rename to openstack/_services_mixin.py
diff --git a/cloud/cmd/__init__.py b/openstack/accelerator/__init__.py
similarity index 100%
rename from cloud/cmd/__init__.py
rename to openstack/accelerator/__init__.py
diff --git a/accelerator/__pycache__/__init__.cpython-310.pyc b/openstack/accelerator/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from accelerator/__pycache__/__init__.cpython-310.pyc
rename to openstack/accelerator/__pycache__/__init__.cpython-310.pyc
diff --git a/accelerator/__pycache__/accelerator_service.cpython-310.pyc b/openstack/accelerator/__pycache__/accelerator_service.cpython-310.pyc
similarity index 100%
rename from accelerator/__pycache__/accelerator_service.cpython-310.pyc
rename to openstack/accelerator/__pycache__/accelerator_service.cpython-310.pyc
diff --git a/accelerator/__pycache__/version.cpython-310.pyc b/openstack/accelerator/__pycache__/version.cpython-310.pyc
similarity index 100%
rename from accelerator/__pycache__/version.cpython-310.pyc
rename to openstack/accelerator/__pycache__/version.cpython-310.pyc
diff --git a/accelerator/accelerator_service.py b/openstack/accelerator/accelerator_service.py
similarity index 100%
rename from accelerator/accelerator_service.py
rename to openstack/accelerator/accelerator_service.py
diff --git a/cloud/tests/__init__.py b/openstack/accelerator/v2/__init__.py
similarity index 100%
rename from cloud/tests/__init__.py
rename to openstack/accelerator/v2/__init__.py
diff --git a/accelerator/v2/__pycache__/__init__.cpython-310.pyc b/openstack/accelerator/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from accelerator/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/accelerator/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/accelerator/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/accelerator/v2/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from accelerator/v2/__pycache__/_proxy.cpython-310.pyc
rename to openstack/accelerator/v2/__pycache__/_proxy.cpython-310.pyc
diff --git a/accelerator/v2/__pycache__/accelerator_request.cpython-310.pyc b/openstack/accelerator/v2/__pycache__/accelerator_request.cpython-310.pyc
similarity index 100%
rename from accelerator/v2/__pycache__/accelerator_request.cpython-310.pyc
rename to openstack/accelerator/v2/__pycache__/accelerator_request.cpython-310.pyc
diff --git a/accelerator/v2/__pycache__/deployable.cpython-310.pyc b/openstack/accelerator/v2/__pycache__/deployable.cpython-310.pyc
similarity index 100%
rename from accelerator/v2/__pycache__/deployable.cpython-310.pyc
rename to openstack/accelerator/v2/__pycache__/deployable.cpython-310.pyc
diff --git a/accelerator/v2/__pycache__/device.cpython-310.pyc b/openstack/accelerator/v2/__pycache__/device.cpython-310.pyc
similarity index 100%
rename from accelerator/v2/__pycache__/device.cpython-310.pyc
rename to openstack/accelerator/v2/__pycache__/device.cpython-310.pyc
diff --git a/accelerator/v2/__pycache__/device_profile.cpython-310.pyc b/openstack/accelerator/v2/__pycache__/device_profile.cpython-310.pyc
similarity index 100%
rename from accelerator/v2/__pycache__/device_profile.cpython-310.pyc
rename to openstack/accelerator/v2/__pycache__/device_profile.cpython-310.pyc
diff --git a/accelerator/v2/_proxy.py b/openstack/accelerator/v2/_proxy.py
similarity index 100%
rename from accelerator/v2/_proxy.py
rename to openstack/accelerator/v2/_proxy.py
diff --git a/accelerator/v2/accelerator_request.py b/openstack/accelerator/v2/accelerator_request.py
similarity index 100%
rename from accelerator/v2/accelerator_request.py
rename to openstack/accelerator/v2/accelerator_request.py
diff --git a/accelerator/v2/deployable.py b/openstack/accelerator/v2/deployable.py
similarity index 100%
rename from accelerator/v2/deployable.py
rename to openstack/accelerator/v2/deployable.py
diff --git a/accelerator/v2/device.py b/openstack/accelerator/v2/device.py
similarity index 100%
rename from accelerator/v2/device.py
rename to openstack/accelerator/v2/device.py
diff --git a/accelerator/v2/device_profile.py b/openstack/accelerator/v2/device_profile.py
similarity index 100%
rename from accelerator/v2/device_profile.py
rename to openstack/accelerator/v2/device_profile.py
diff --git a/accelerator/version.py b/openstack/accelerator/version.py
similarity index 100%
rename from accelerator/version.py
rename to openstack/accelerator/version.py
diff --git a/clustering/__init__.py b/openstack/baremetal/__init__.py
similarity index 100%
rename from clustering/__init__.py
rename to openstack/baremetal/__init__.py
diff --git a/baremetal/__pycache__/__init__.cpython-310.pyc b/openstack/baremetal/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from baremetal/__pycache__/__init__.cpython-310.pyc
rename to openstack/baremetal/__pycache__/__init__.cpython-310.pyc
diff --git a/baremetal/__pycache__/baremetal_service.cpython-310.pyc b/openstack/baremetal/__pycache__/baremetal_service.cpython-310.pyc
similarity index 100%
rename from baremetal/__pycache__/baremetal_service.cpython-310.pyc
rename to openstack/baremetal/__pycache__/baremetal_service.cpython-310.pyc
diff --git a/baremetal/__pycache__/configdrive.cpython-310.pyc b/openstack/baremetal/__pycache__/configdrive.cpython-310.pyc
similarity index 100%
rename from baremetal/__pycache__/configdrive.cpython-310.pyc
rename to openstack/baremetal/__pycache__/configdrive.cpython-310.pyc
diff --git a/baremetal/__pycache__/version.cpython-310.pyc b/openstack/baremetal/__pycache__/version.cpython-310.pyc
similarity index 100%
rename from baremetal/__pycache__/version.cpython-310.pyc
rename to openstack/baremetal/__pycache__/version.cpython-310.pyc
diff --git a/baremetal/baremetal_service.py b/openstack/baremetal/baremetal_service.py
similarity index 100%
rename from baremetal/baremetal_service.py
rename to openstack/baremetal/baremetal_service.py
diff --git a/baremetal/configdrive.py b/openstack/baremetal/configdrive.py
similarity index 100%
rename from baremetal/configdrive.py
rename to openstack/baremetal/configdrive.py
diff --git a/clustering/v1/__init__.py b/openstack/baremetal/v1/__init__.py
similarity index 100%
rename from clustering/v1/__init__.py
rename to openstack/baremetal/v1/__init__.py
diff --git a/baremetal/v1/__pycache__/__init__.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from baremetal/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/baremetal/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/baremetal/v1/__pycache__/_common.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/_common.cpython-310.pyc
similarity index 100%
rename from baremetal/v1/__pycache__/_common.cpython-310.pyc
rename to openstack/baremetal/v1/__pycache__/_common.cpython-310.pyc
diff --git a/baremetal/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from baremetal/v1/__pycache__/_proxy.cpython-310.pyc
rename to openstack/baremetal/v1/__pycache__/_proxy.cpython-310.pyc
diff --git a/baremetal/v1/__pycache__/allocation.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/allocation.cpython-310.pyc
similarity index 100%
rename from baremetal/v1/__pycache__/allocation.cpython-310.pyc
rename to openstack/baremetal/v1/__pycache__/allocation.cpython-310.pyc
diff --git a/baremetal/v1/__pycache__/chassis.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/chassis.cpython-310.pyc
similarity index 100%
rename from baremetal/v1/__pycache__/chassis.cpython-310.pyc
rename to openstack/baremetal/v1/__pycache__/chassis.cpython-310.pyc
diff --git a/baremetal/v1/__pycache__/conductor.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/conductor.cpython-310.pyc
similarity index 100%
rename from baremetal/v1/__pycache__/conductor.cpython-310.pyc
rename to openstack/baremetal/v1/__pycache__/conductor.cpython-310.pyc
diff --git a/baremetal/v1/__pycache__/deploy_templates.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/deploy_templates.cpython-310.pyc
similarity index 100%
rename from baremetal/v1/__pycache__/deploy_templates.cpython-310.pyc
rename to openstack/baremetal/v1/__pycache__/deploy_templates.cpython-310.pyc
diff --git a/baremetal/v1/__pycache__/driver.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/driver.cpython-310.pyc
similarity index 100%
rename from baremetal/v1/__pycache__/driver.cpython-310.pyc
rename to openstack/baremetal/v1/__pycache__/driver.cpython-310.pyc
diff --git a/baremetal/v1/__pycache__/node.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/node.cpython-310.pyc
similarity index 100%
rename from baremetal/v1/__pycache__/node.cpython-310.pyc
rename to openstack/baremetal/v1/__pycache__/node.cpython-310.pyc
diff --git a/baremetal/v1/__pycache__/port.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/port.cpython-310.pyc
similarity index 100%
rename from baremetal/v1/__pycache__/port.cpython-310.pyc
rename to openstack/baremetal/v1/__pycache__/port.cpython-310.pyc
diff --git a/baremetal/v1/__pycache__/port_group.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/port_group.cpython-310.pyc
similarity index 100%
rename from baremetal/v1/__pycache__/port_group.cpython-310.pyc
rename to openstack/baremetal/v1/__pycache__/port_group.cpython-310.pyc
diff --git a/baremetal/v1/__pycache__/volume_connector.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/volume_connector.cpython-310.pyc
similarity index 100%
rename from baremetal/v1/__pycache__/volume_connector.cpython-310.pyc
rename to openstack/baremetal/v1/__pycache__/volume_connector.cpython-310.pyc
diff --git a/baremetal/v1/__pycache__/volume_target.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/volume_target.cpython-310.pyc
similarity index 100%
rename from baremetal/v1/__pycache__/volume_target.cpython-310.pyc
rename to openstack/baremetal/v1/__pycache__/volume_target.cpython-310.pyc
diff --git a/baremetal/v1/_common.py b/openstack/baremetal/v1/_common.py
similarity index 100%
rename from baremetal/v1/_common.py
rename to openstack/baremetal/v1/_common.py
diff --git a/baremetal/v1/_proxy.py b/openstack/baremetal/v1/_proxy.py
similarity index 100%
rename from baremetal/v1/_proxy.py
rename to openstack/baremetal/v1/_proxy.py
diff --git a/baremetal/v1/allocation.py b/openstack/baremetal/v1/allocation.py
similarity index 100%
rename from baremetal/v1/allocation.py
rename to openstack/baremetal/v1/allocation.py
diff --git a/baremetal/v1/chassis.py b/openstack/baremetal/v1/chassis.py
similarity index 100%
rename from baremetal/v1/chassis.py
rename to openstack/baremetal/v1/chassis.py
diff --git a/baremetal/v1/conductor.py b/openstack/baremetal/v1/conductor.py
similarity index 100%
rename from baremetal/v1/conductor.py
rename to openstack/baremetal/v1/conductor.py
diff --git a/baremetal/v1/deploy_templates.py b/openstack/baremetal/v1/deploy_templates.py
similarity index 100%
rename from baremetal/v1/deploy_templates.py
rename to openstack/baremetal/v1/deploy_templates.py
diff --git a/baremetal/v1/driver.py b/openstack/baremetal/v1/driver.py
similarity index 100%
rename from baremetal/v1/driver.py
rename to openstack/baremetal/v1/driver.py
diff --git a/baremetal/v1/node.py b/openstack/baremetal/v1/node.py
similarity index 100%
rename from baremetal/v1/node.py
rename to openstack/baremetal/v1/node.py
diff --git a/baremetal/v1/port.py b/openstack/baremetal/v1/port.py
similarity index 100%
rename from baremetal/v1/port.py
rename to openstack/baremetal/v1/port.py
diff --git a/baremetal/v1/port_group.py b/openstack/baremetal/v1/port_group.py
similarity index 100%
rename from baremetal/v1/port_group.py
rename to openstack/baremetal/v1/port_group.py
diff --git a/baremetal/v1/volume_connector.py b/openstack/baremetal/v1/volume_connector.py
similarity index 100%
rename from baremetal/v1/volume_connector.py
rename to openstack/baremetal/v1/volume_connector.py
diff --git a/baremetal/v1/volume_target.py b/openstack/baremetal/v1/volume_target.py
similarity index 100%
rename from baremetal/v1/volume_target.py
rename to openstack/baremetal/v1/volume_target.py
diff --git a/baremetal/version.py b/openstack/baremetal/version.py
similarity index 100%
rename from baremetal/version.py
rename to openstack/baremetal/version.py
diff --git a/common/__init__.py b/openstack/baremetal_introspection/__init__.py
similarity index 100%
rename from common/__init__.py
rename to openstack/baremetal_introspection/__init__.py
diff --git a/baremetal_introspection/__pycache__/__init__.cpython-310.pyc b/openstack/baremetal_introspection/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from baremetal_introspection/__pycache__/__init__.cpython-310.pyc
rename to openstack/baremetal_introspection/__pycache__/__init__.cpython-310.pyc
diff --git a/baremetal_introspection/__pycache__/baremetal_introspection_service.cpython-310.pyc b/openstack/baremetal_introspection/__pycache__/baremetal_introspection_service.cpython-310.pyc
similarity index 100%
rename from baremetal_introspection/__pycache__/baremetal_introspection_service.cpython-310.pyc
rename to openstack/baremetal_introspection/__pycache__/baremetal_introspection_service.cpython-310.pyc
diff --git a/baremetal_introspection/baremetal_introspection_service.py b/openstack/baremetal_introspection/baremetal_introspection_service.py
similarity index 100%
rename from baremetal_introspection/baremetal_introspection_service.py
rename to openstack/baremetal_introspection/baremetal_introspection_service.py
diff --git a/compute/__init__.py b/openstack/baremetal_introspection/v1/__init__.py
similarity index 100%
rename from compute/__init__.py
rename to openstack/baremetal_introspection/v1/__init__.py
diff --git a/baremetal_introspection/v1/__pycache__/__init__.cpython-310.pyc b/openstack/baremetal_introspection/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from baremetal_introspection/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/baremetal_introspection/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/baremetal_introspection/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/baremetal_introspection/v1/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from baremetal_introspection/v1/__pycache__/_proxy.cpython-310.pyc
rename to openstack/baremetal_introspection/v1/__pycache__/_proxy.cpython-310.pyc
diff --git a/baremetal_introspection/v1/__pycache__/introspection.cpython-310.pyc b/openstack/baremetal_introspection/v1/__pycache__/introspection.cpython-310.pyc
similarity index 100%
rename from baremetal_introspection/v1/__pycache__/introspection.cpython-310.pyc
rename to openstack/baremetal_introspection/v1/__pycache__/introspection.cpython-310.pyc
diff --git a/baremetal_introspection/v1/__pycache__/introspection_rule.cpython-310.pyc b/openstack/baremetal_introspection/v1/__pycache__/introspection_rule.cpython-310.pyc
similarity index 100%
rename from baremetal_introspection/v1/__pycache__/introspection_rule.cpython-310.pyc
rename to openstack/baremetal_introspection/v1/__pycache__/introspection_rule.cpython-310.pyc
diff --git a/baremetal_introspection/v1/_proxy.py b/openstack/baremetal_introspection/v1/_proxy.py
similarity index 100%
rename from baremetal_introspection/v1/_proxy.py
rename to openstack/baremetal_introspection/v1/_proxy.py
diff --git a/baremetal_introspection/v1/introspection.py b/openstack/baremetal_introspection/v1/introspection.py
similarity index 100%
rename from baremetal_introspection/v1/introspection.py
rename to openstack/baremetal_introspection/v1/introspection.py
diff --git a/baremetal_introspection/v1/introspection_rule.py b/openstack/baremetal_introspection/v1/introspection_rule.py
similarity index 100%
rename from baremetal_introspection/v1/introspection_rule.py
rename to openstack/baremetal_introspection/v1/introspection_rule.py
diff --git a/compute/v2/__init__.py b/openstack/block_storage/__init__.py
similarity index 100%
rename from compute/v2/__init__.py
rename to openstack/block_storage/__init__.py
diff --git a/block_storage/__pycache__/__init__.cpython-310.pyc b/openstack/block_storage/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from block_storage/__pycache__/__init__.cpython-310.pyc
rename to openstack/block_storage/__pycache__/__init__.cpython-310.pyc
diff --git a/block_storage/__pycache__/_base_proxy.cpython-310.pyc b/openstack/block_storage/__pycache__/_base_proxy.cpython-310.pyc
similarity index 100%
rename from block_storage/__pycache__/_base_proxy.cpython-310.pyc
rename to openstack/block_storage/__pycache__/_base_proxy.cpython-310.pyc
diff --git a/block_storage/__pycache__/block_storage_service.cpython-310.pyc b/openstack/block_storage/__pycache__/block_storage_service.cpython-310.pyc
similarity index 100%
rename from block_storage/__pycache__/block_storage_service.cpython-310.pyc
rename to openstack/block_storage/__pycache__/block_storage_service.cpython-310.pyc
diff --git a/block_storage/_base_proxy.py b/openstack/block_storage/_base_proxy.py
similarity index 100%
rename from block_storage/_base_proxy.py
rename to openstack/block_storage/_base_proxy.py
diff --git a/block_storage/block_storage_service.py b/openstack/block_storage/block_storage_service.py
similarity index 100%
rename from block_storage/block_storage_service.py
rename to openstack/block_storage/block_storage_service.py
diff --git a/container_infrastructure_management/__init__.py b/openstack/block_storage/v2/__init__.py
similarity index 100%
rename from container_infrastructure_management/__init__.py
rename to openstack/block_storage/v2/__init__.py
diff --git a/block_storage/v2/__pycache__/__init__.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from block_storage/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/block_storage/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/block_storage/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from block_storage/v2/__pycache__/_proxy.cpython-310.pyc
rename to openstack/block_storage/v2/__pycache__/_proxy.cpython-310.pyc
diff --git a/block_storage/v2/__pycache__/backup.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/backup.cpython-310.pyc
similarity index 100%
rename from block_storage/v2/__pycache__/backup.cpython-310.pyc
rename to openstack/block_storage/v2/__pycache__/backup.cpython-310.pyc
diff --git a/block_storage/v2/__pycache__/capabilities.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/capabilities.cpython-310.pyc
similarity index 100%
rename from block_storage/v2/__pycache__/capabilities.cpython-310.pyc
rename to openstack/block_storage/v2/__pycache__/capabilities.cpython-310.pyc
diff --git a/block_storage/v2/__pycache__/extension.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/extension.cpython-310.pyc
similarity index 100%
rename from block_storage/v2/__pycache__/extension.cpython-310.pyc
rename to openstack/block_storage/v2/__pycache__/extension.cpython-310.pyc
diff --git a/block_storage/v2/__pycache__/limits.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/limits.cpython-310.pyc
similarity index 100%
rename from block_storage/v2/__pycache__/limits.cpython-310.pyc
rename to openstack/block_storage/v2/__pycache__/limits.cpython-310.pyc
diff --git a/block_storage/v2/__pycache__/quota_set.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/quota_set.cpython-310.pyc
similarity index 100%
rename from block_storage/v2/__pycache__/quota_set.cpython-310.pyc
rename to openstack/block_storage/v2/__pycache__/quota_set.cpython-310.pyc
diff --git a/block_storage/v2/__pycache__/snapshot.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/snapshot.cpython-310.pyc
similarity index 100%
rename from block_storage/v2/__pycache__/snapshot.cpython-310.pyc
rename to openstack/block_storage/v2/__pycache__/snapshot.cpython-310.pyc
diff --git a/block_storage/v2/__pycache__/stats.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/stats.cpython-310.pyc
similarity index 100%
rename from block_storage/v2/__pycache__/stats.cpython-310.pyc
rename to openstack/block_storage/v2/__pycache__/stats.cpython-310.pyc
diff --git a/block_storage/v2/__pycache__/type.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/type.cpython-310.pyc
similarity index 100%
rename from block_storage/v2/__pycache__/type.cpython-310.pyc
rename to openstack/block_storage/v2/__pycache__/type.cpython-310.pyc
diff --git a/block_storage/v2/__pycache__/volume.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/volume.cpython-310.pyc
similarity index 100%
rename from block_storage/v2/__pycache__/volume.cpython-310.pyc
rename to openstack/block_storage/v2/__pycache__/volume.cpython-310.pyc
diff --git a/block_storage/v2/_proxy.py b/openstack/block_storage/v2/_proxy.py
similarity index 100%
rename from block_storage/v2/_proxy.py
rename to openstack/block_storage/v2/_proxy.py
diff --git a/block_storage/v2/backup.py b/openstack/block_storage/v2/backup.py
similarity index 100%
rename from block_storage/v2/backup.py
rename to openstack/block_storage/v2/backup.py
diff --git a/block_storage/v2/capabilities.py b/openstack/block_storage/v2/capabilities.py
similarity index 100%
rename from block_storage/v2/capabilities.py
rename to openstack/block_storage/v2/capabilities.py
diff --git a/block_storage/v2/extension.py b/openstack/block_storage/v2/extension.py
similarity index 100%
rename from block_storage/v2/extension.py
rename to openstack/block_storage/v2/extension.py
diff --git a/block_storage/v2/limits.py b/openstack/block_storage/v2/limits.py
similarity index 100%
rename from block_storage/v2/limits.py
rename to openstack/block_storage/v2/limits.py
diff --git a/block_storage/v2/quota_set.py b/openstack/block_storage/v2/quota_set.py
similarity index 100%
rename from block_storage/v2/quota_set.py
rename to openstack/block_storage/v2/quota_set.py
diff --git a/block_storage/v2/snapshot.py b/openstack/block_storage/v2/snapshot.py
similarity index 100%
rename from block_storage/v2/snapshot.py
rename to openstack/block_storage/v2/snapshot.py
diff --git a/block_storage/v2/stats.py b/openstack/block_storage/v2/stats.py
similarity index 100%
rename from block_storage/v2/stats.py
rename to openstack/block_storage/v2/stats.py
diff --git a/block_storage/v2/type.py b/openstack/block_storage/v2/type.py
similarity index 100%
rename from block_storage/v2/type.py
rename to openstack/block_storage/v2/type.py
diff --git a/block_storage/v2/volume.py b/openstack/block_storage/v2/volume.py
similarity index 100%
rename from block_storage/v2/volume.py
rename to openstack/block_storage/v2/volume.py
diff --git a/container_infrastructure_management/v1/__init__.py b/openstack/block_storage/v3/__init__.py
similarity index 100%
rename from container_infrastructure_management/v1/__init__.py
rename to openstack/block_storage/v3/__init__.py
diff --git a/block_storage/v3/__pycache__/__init__.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/__init__.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/__init__.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/_proxy.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/_proxy.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/_proxy.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/attachment.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/attachment.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/attachment.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/attachment.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/availability_zone.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/availability_zone.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/availability_zone.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/availability_zone.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/backup.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/backup.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/backup.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/backup.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/block_storage_summary.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/block_storage_summary.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/block_storage_summary.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/block_storage_summary.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/capabilities.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/capabilities.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/capabilities.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/capabilities.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/extension.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/extension.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/extension.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/extension.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/group.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/group.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/group.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/group.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/group_snapshot.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/group_snapshot.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/group_snapshot.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/group_snapshot.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/group_type.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/group_type.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/group_type.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/group_type.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/limits.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/limits.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/limits.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/limits.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/quota_set.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/quota_set.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/quota_set.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/quota_set.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/resource_filter.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/resource_filter.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/resource_filter.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/resource_filter.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/service.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/service.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/service.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/service.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/snapshot.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/snapshot.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/snapshot.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/snapshot.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/stats.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/stats.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/stats.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/stats.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/transfer.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/transfer.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/transfer.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/transfer.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/type.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/type.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/type.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/type.cpython-310.pyc
diff --git a/block_storage/v3/__pycache__/volume.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/volume.cpython-310.pyc
similarity index 100%
rename from block_storage/v3/__pycache__/volume.cpython-310.pyc
rename to openstack/block_storage/v3/__pycache__/volume.cpython-310.pyc
diff --git a/block_storage/v3/_proxy.py b/openstack/block_storage/v3/_proxy.py
similarity index 100%
rename from block_storage/v3/_proxy.py
rename to openstack/block_storage/v3/_proxy.py
diff --git a/block_storage/v3/attachment.py b/openstack/block_storage/v3/attachment.py
similarity index 100%
rename from block_storage/v3/attachment.py
rename to openstack/block_storage/v3/attachment.py
diff --git a/block_storage/v3/availability_zone.py b/openstack/block_storage/v3/availability_zone.py
similarity index 100%
rename from block_storage/v3/availability_zone.py
rename to openstack/block_storage/v3/availability_zone.py
diff --git a/block_storage/v3/backup.py b/openstack/block_storage/v3/backup.py
similarity index 100%
rename from block_storage/v3/backup.py
rename to openstack/block_storage/v3/backup.py
diff --git a/block_storage/v3/block_storage_summary.py b/openstack/block_storage/v3/block_storage_summary.py
similarity index 100%
rename from block_storage/v3/block_storage_summary.py
rename to openstack/block_storage/v3/block_storage_summary.py
diff --git a/block_storage/v3/capabilities.py b/openstack/block_storage/v3/capabilities.py
similarity index 100%
rename from block_storage/v3/capabilities.py
rename to openstack/block_storage/v3/capabilities.py
diff --git a/block_storage/v3/extension.py b/openstack/block_storage/v3/extension.py
similarity index 100%
rename from block_storage/v3/extension.py
rename to openstack/block_storage/v3/extension.py
diff --git a/block_storage/v3/group.py b/openstack/block_storage/v3/group.py
similarity index 100%
rename from block_storage/v3/group.py
rename to openstack/block_storage/v3/group.py
diff --git a/block_storage/v3/group_snapshot.py b/openstack/block_storage/v3/group_snapshot.py
similarity index 100%
rename from block_storage/v3/group_snapshot.py
rename to openstack/block_storage/v3/group_snapshot.py
diff --git a/block_storage/v3/group_type.py b/openstack/block_storage/v3/group_type.py
similarity index 100%
rename from block_storage/v3/group_type.py
rename to openstack/block_storage/v3/group_type.py
diff --git a/block_storage/v3/limits.py b/openstack/block_storage/v3/limits.py
similarity index 100%
rename from block_storage/v3/limits.py
rename to openstack/block_storage/v3/limits.py
diff --git a/block_storage/v3/quota_set.py b/openstack/block_storage/v3/quota_set.py
similarity index 100%
rename from block_storage/v3/quota_set.py
rename to openstack/block_storage/v3/quota_set.py
diff --git a/block_storage/v3/resource_filter.py b/openstack/block_storage/v3/resource_filter.py
similarity index 100%
rename from block_storage/v3/resource_filter.py
rename to openstack/block_storage/v3/resource_filter.py
diff --git a/block_storage/v3/service.py b/openstack/block_storage/v3/service.py
similarity index 100%
rename from block_storage/v3/service.py
rename to openstack/block_storage/v3/service.py
diff --git a/block_storage/v3/snapshot.py b/openstack/block_storage/v3/snapshot.py
similarity index 100%
rename from block_storage/v3/snapshot.py
rename to openstack/block_storage/v3/snapshot.py
diff --git a/block_storage/v3/stats.py b/openstack/block_storage/v3/stats.py
similarity index 100%
rename from block_storage/v3/stats.py
rename to openstack/block_storage/v3/stats.py
diff --git a/block_storage/v3/transfer.py b/openstack/block_storage/v3/transfer.py
similarity index 100%
rename from block_storage/v3/transfer.py
rename to openstack/block_storage/v3/transfer.py
diff --git a/block_storage/v3/type.py b/openstack/block_storage/v3/type.py
similarity index 100%
rename from block_storage/v3/type.py
rename to openstack/block_storage/v3/type.py
diff --git a/block_storage/v3/volume.py b/openstack/block_storage/v3/volume.py
similarity index 100%
rename from block_storage/v3/volume.py
rename to openstack/block_storage/v3/volume.py
diff --git a/cloud/__init__.py b/openstack/cloud/__init__.py
similarity index 100%
rename from cloud/__init__.py
rename to openstack/cloud/__init__.py
diff --git a/cloud/__pycache__/__init__.cpython-310.pyc b/openstack/cloud/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/__init__.cpython-310.pyc
rename to openstack/cloud/__pycache__/__init__.cpython-310.pyc
diff --git a/cloud/__pycache__/_accelerator.cpython-310.pyc b/openstack/cloud/__pycache__/_accelerator.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_accelerator.cpython-310.pyc
rename to openstack/cloud/__pycache__/_accelerator.cpython-310.pyc
diff --git a/cloud/__pycache__/_baremetal.cpython-310.pyc b/openstack/cloud/__pycache__/_baremetal.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_baremetal.cpython-310.pyc
rename to openstack/cloud/__pycache__/_baremetal.cpython-310.pyc
diff --git a/cloud/__pycache__/_block_storage.cpython-310.pyc b/openstack/cloud/__pycache__/_block_storage.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_block_storage.cpython-310.pyc
rename to openstack/cloud/__pycache__/_block_storage.cpython-310.pyc
diff --git a/cloud/__pycache__/_coe.cpython-310.pyc b/openstack/cloud/__pycache__/_coe.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_coe.cpython-310.pyc
rename to openstack/cloud/__pycache__/_coe.cpython-310.pyc
diff --git a/cloud/__pycache__/_compute.cpython-310.pyc b/openstack/cloud/__pycache__/_compute.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_compute.cpython-310.pyc
rename to openstack/cloud/__pycache__/_compute.cpython-310.pyc
diff --git a/cloud/__pycache__/_dns.cpython-310.pyc b/openstack/cloud/__pycache__/_dns.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_dns.cpython-310.pyc
rename to openstack/cloud/__pycache__/_dns.cpython-310.pyc
diff --git a/cloud/__pycache__/_floating_ip.cpython-310.pyc b/openstack/cloud/__pycache__/_floating_ip.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_floating_ip.cpython-310.pyc
rename to openstack/cloud/__pycache__/_floating_ip.cpython-310.pyc
diff --git a/cloud/__pycache__/_identity.cpython-310.pyc b/openstack/cloud/__pycache__/_identity.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_identity.cpython-310.pyc
rename to openstack/cloud/__pycache__/_identity.cpython-310.pyc
diff --git a/cloud/__pycache__/_image.cpython-310.pyc b/openstack/cloud/__pycache__/_image.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_image.cpython-310.pyc
rename to openstack/cloud/__pycache__/_image.cpython-310.pyc
diff --git a/cloud/__pycache__/_network.cpython-310.pyc b/openstack/cloud/__pycache__/_network.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_network.cpython-310.pyc
rename to openstack/cloud/__pycache__/_network.cpython-310.pyc
diff --git a/cloud/__pycache__/_network_common.cpython-310.pyc b/openstack/cloud/__pycache__/_network_common.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_network_common.cpython-310.pyc
rename to openstack/cloud/__pycache__/_network_common.cpython-310.pyc
diff --git a/cloud/__pycache__/_object_store.cpython-310.pyc b/openstack/cloud/__pycache__/_object_store.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_object_store.cpython-310.pyc
rename to openstack/cloud/__pycache__/_object_store.cpython-310.pyc
diff --git a/cloud/__pycache__/_orchestration.cpython-310.pyc b/openstack/cloud/__pycache__/_orchestration.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_orchestration.cpython-310.pyc
rename to openstack/cloud/__pycache__/_orchestration.cpython-310.pyc
diff --git a/cloud/__pycache__/_security_group.cpython-310.pyc b/openstack/cloud/__pycache__/_security_group.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_security_group.cpython-310.pyc
rename to openstack/cloud/__pycache__/_security_group.cpython-310.pyc
diff --git a/cloud/__pycache__/_shared_file_system.cpython-310.pyc b/openstack/cloud/__pycache__/_shared_file_system.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_shared_file_system.cpython-310.pyc
rename to openstack/cloud/__pycache__/_shared_file_system.cpython-310.pyc
diff --git a/cloud/__pycache__/_utils.cpython-310.pyc b/openstack/cloud/__pycache__/_utils.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/_utils.cpython-310.pyc
rename to openstack/cloud/__pycache__/_utils.cpython-310.pyc
diff --git a/cloud/__pycache__/exc.cpython-310.pyc b/openstack/cloud/__pycache__/exc.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/exc.cpython-310.pyc
rename to openstack/cloud/__pycache__/exc.cpython-310.pyc
diff --git a/cloud/__pycache__/inventory.cpython-310.pyc b/openstack/cloud/__pycache__/inventory.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/inventory.cpython-310.pyc
rename to openstack/cloud/__pycache__/inventory.cpython-310.pyc
diff --git a/cloud/__pycache__/meta.cpython-310.pyc b/openstack/cloud/__pycache__/meta.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/meta.cpython-310.pyc
rename to openstack/cloud/__pycache__/meta.cpython-310.pyc
diff --git a/cloud/__pycache__/openstackcloud.cpython-310.pyc b/openstack/cloud/__pycache__/openstackcloud.cpython-310.pyc
similarity index 100%
rename from cloud/__pycache__/openstackcloud.cpython-310.pyc
rename to openstack/cloud/__pycache__/openstackcloud.cpython-310.pyc
diff --git a/cloud/_accelerator.py b/openstack/cloud/_accelerator.py
similarity index 100%
rename from cloud/_accelerator.py
rename to openstack/cloud/_accelerator.py
diff --git a/cloud/_baremetal.py b/openstack/cloud/_baremetal.py
similarity index 100%
rename from cloud/_baremetal.py
rename to openstack/cloud/_baremetal.py
diff --git a/cloud/_block_storage.py b/openstack/cloud/_block_storage.py
similarity index 100%
rename from cloud/_block_storage.py
rename to openstack/cloud/_block_storage.py
diff --git a/cloud/_coe.py b/openstack/cloud/_coe.py
similarity index 100%
rename from cloud/_coe.py
rename to openstack/cloud/_coe.py
diff --git a/cloud/_compute.py b/openstack/cloud/_compute.py
similarity index 100%
rename from cloud/_compute.py
rename to openstack/cloud/_compute.py
diff --git a/cloud/_dns.py b/openstack/cloud/_dns.py
similarity index 100%
rename from cloud/_dns.py
rename to openstack/cloud/_dns.py
diff --git a/cloud/_floating_ip.py b/openstack/cloud/_floating_ip.py
similarity index 100%
rename from cloud/_floating_ip.py
rename to openstack/cloud/_floating_ip.py
diff --git a/cloud/_identity.py b/openstack/cloud/_identity.py
similarity index 100%
rename from cloud/_identity.py
rename to openstack/cloud/_identity.py
diff --git a/cloud/_image.py b/openstack/cloud/_image.py
similarity index 100%
rename from cloud/_image.py
rename to openstack/cloud/_image.py
diff --git a/cloud/_network.py b/openstack/cloud/_network.py
similarity index 100%
rename from cloud/_network.py
rename to openstack/cloud/_network.py
diff --git a/cloud/_network_common.py b/openstack/cloud/_network_common.py
similarity index 100%
rename from cloud/_network_common.py
rename to openstack/cloud/_network_common.py
diff --git a/cloud/_object_store.py b/openstack/cloud/_object_store.py
similarity index 100%
rename from cloud/_object_store.py
rename to openstack/cloud/_object_store.py
diff --git a/cloud/_orchestration.py b/openstack/cloud/_orchestration.py
similarity index 100%
rename from cloud/_orchestration.py
rename to openstack/cloud/_orchestration.py
diff --git a/cloud/_security_group.py b/openstack/cloud/_security_group.py
similarity index 100%
rename from cloud/_security_group.py
rename to openstack/cloud/_security_group.py
diff --git a/cloud/_shared_file_system.py b/openstack/cloud/_shared_file_system.py
similarity index 100%
rename from cloud/_shared_file_system.py
rename to openstack/cloud/_shared_file_system.py
diff --git a/cloud/_utils.py b/openstack/cloud/_utils.py
similarity index 100%
rename from cloud/_utils.py
rename to openstack/cloud/_utils.py
diff --git a/database/__init__.py b/openstack/cloud/cmd/__init__.py
similarity index 100%
rename from database/__init__.py
rename to openstack/cloud/cmd/__init__.py
diff --git a/cloud/cmd/__pycache__/__init__.cpython-310.pyc b/openstack/cloud/cmd/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from cloud/cmd/__pycache__/__init__.cpython-310.pyc
rename to openstack/cloud/cmd/__pycache__/__init__.cpython-310.pyc
diff --git a/cloud/cmd/__pycache__/inventory.cpython-310.pyc b/openstack/cloud/cmd/__pycache__/inventory.cpython-310.pyc
similarity index 100%
rename from cloud/cmd/__pycache__/inventory.cpython-310.pyc
rename to openstack/cloud/cmd/__pycache__/inventory.cpython-310.pyc
diff --git a/cloud/cmd/inventory.py b/openstack/cloud/cmd/inventory.py
similarity index 100%
rename from cloud/cmd/inventory.py
rename to openstack/cloud/cmd/inventory.py
diff --git a/cloud/exc.py b/openstack/cloud/exc.py
similarity index 100%
rename from cloud/exc.py
rename to openstack/cloud/exc.py
diff --git a/cloud/inventory.py b/openstack/cloud/inventory.py
similarity index 100%
rename from cloud/inventory.py
rename to openstack/cloud/inventory.py
diff --git a/cloud/meta.py b/openstack/cloud/meta.py
similarity index 100%
rename from cloud/meta.py
rename to openstack/cloud/meta.py
diff --git a/cloud/openstackcloud.py b/openstack/cloud/openstackcloud.py
similarity index 100%
rename from cloud/openstackcloud.py
rename to openstack/cloud/openstackcloud.py
diff --git a/database/v1/__init__.py b/openstack/cloud/tests/__init__.py
similarity index 100%
rename from database/v1/__init__.py
rename to openstack/cloud/tests/__init__.py
diff --git a/cloud/tests/__pycache__/__init__.cpython-310.pyc b/openstack/cloud/tests/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from cloud/tests/__pycache__/__init__.cpython-310.pyc
rename to openstack/cloud/tests/__pycache__/__init__.cpython-310.pyc
diff --git a/dns/__init__.py b/openstack/clustering/__init__.py
similarity index 100%
rename from dns/__init__.py
rename to openstack/clustering/__init__.py
diff --git a/clustering/__pycache__/__init__.cpython-310.pyc b/openstack/clustering/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from clustering/__pycache__/__init__.cpython-310.pyc
rename to openstack/clustering/__pycache__/__init__.cpython-310.pyc
diff --git a/clustering/__pycache__/clustering_service.cpython-310.pyc b/openstack/clustering/__pycache__/clustering_service.cpython-310.pyc
similarity index 100%
rename from clustering/__pycache__/clustering_service.cpython-310.pyc
rename to openstack/clustering/__pycache__/clustering_service.cpython-310.pyc
diff --git a/clustering/__pycache__/version.cpython-310.pyc b/openstack/clustering/__pycache__/version.cpython-310.pyc
similarity index 100%
rename from clustering/__pycache__/version.cpython-310.pyc
rename to openstack/clustering/__pycache__/version.cpython-310.pyc
diff --git a/clustering/clustering_service.py b/openstack/clustering/clustering_service.py
similarity index 100%
rename from clustering/clustering_service.py
rename to openstack/clustering/clustering_service.py
diff --git a/dns/v2/__init__.py b/openstack/clustering/v1/__init__.py
similarity index 100%
rename from dns/v2/__init__.py
rename to openstack/clustering/v1/__init__.py
diff --git a/clustering/v1/__pycache__/__init__.cpython-310.pyc b/openstack/clustering/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/clustering/v1/__pycache__/_async_resource.cpython-310.pyc b/openstack/clustering/v1/__pycache__/_async_resource.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/_async_resource.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/_async_resource.cpython-310.pyc
diff --git a/clustering/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/clustering/v1/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/_proxy.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/_proxy.cpython-310.pyc
diff --git a/clustering/v1/__pycache__/action.cpython-310.pyc b/openstack/clustering/v1/__pycache__/action.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/action.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/action.cpython-310.pyc
diff --git a/clustering/v1/__pycache__/build_info.cpython-310.pyc b/openstack/clustering/v1/__pycache__/build_info.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/build_info.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/build_info.cpython-310.pyc
diff --git a/clustering/v1/__pycache__/cluster.cpython-310.pyc b/openstack/clustering/v1/__pycache__/cluster.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/cluster.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/cluster.cpython-310.pyc
diff --git a/clustering/v1/__pycache__/cluster_attr.cpython-310.pyc b/openstack/clustering/v1/__pycache__/cluster_attr.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/cluster_attr.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/cluster_attr.cpython-310.pyc
diff --git a/clustering/v1/__pycache__/cluster_policy.cpython-310.pyc b/openstack/clustering/v1/__pycache__/cluster_policy.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/cluster_policy.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/cluster_policy.cpython-310.pyc
diff --git a/clustering/v1/__pycache__/event.cpython-310.pyc b/openstack/clustering/v1/__pycache__/event.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/event.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/event.cpython-310.pyc
diff --git a/clustering/v1/__pycache__/node.cpython-310.pyc b/openstack/clustering/v1/__pycache__/node.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/node.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/node.cpython-310.pyc
diff --git a/clustering/v1/__pycache__/policy.cpython-310.pyc b/openstack/clustering/v1/__pycache__/policy.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/policy.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/policy.cpython-310.pyc
diff --git a/clustering/v1/__pycache__/policy_type.cpython-310.pyc b/openstack/clustering/v1/__pycache__/policy_type.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/policy_type.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/policy_type.cpython-310.pyc
diff --git a/clustering/v1/__pycache__/profile.cpython-310.pyc b/openstack/clustering/v1/__pycache__/profile.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/profile.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/profile.cpython-310.pyc
diff --git a/clustering/v1/__pycache__/profile_type.cpython-310.pyc b/openstack/clustering/v1/__pycache__/profile_type.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/profile_type.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/profile_type.cpython-310.pyc
diff --git a/clustering/v1/__pycache__/receiver.cpython-310.pyc b/openstack/clustering/v1/__pycache__/receiver.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/receiver.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/receiver.cpython-310.pyc
diff --git a/clustering/v1/__pycache__/service.cpython-310.pyc b/openstack/clustering/v1/__pycache__/service.cpython-310.pyc
similarity index 100%
rename from clustering/v1/__pycache__/service.cpython-310.pyc
rename to openstack/clustering/v1/__pycache__/service.cpython-310.pyc
diff --git a/clustering/v1/_async_resource.py b/openstack/clustering/v1/_async_resource.py
similarity index 100%
rename from clustering/v1/_async_resource.py
rename to openstack/clustering/v1/_async_resource.py
diff --git a/clustering/v1/_proxy.py b/openstack/clustering/v1/_proxy.py
similarity index 100%
rename from clustering/v1/_proxy.py
rename to openstack/clustering/v1/_proxy.py
diff --git a/clustering/v1/action.py b/openstack/clustering/v1/action.py
similarity index 100%
rename from clustering/v1/action.py
rename to openstack/clustering/v1/action.py
diff --git a/clustering/v1/build_info.py b/openstack/clustering/v1/build_info.py
similarity index 100%
rename from clustering/v1/build_info.py
rename to openstack/clustering/v1/build_info.py
diff --git a/clustering/v1/cluster.py b/openstack/clustering/v1/cluster.py
similarity index 100%
rename from clustering/v1/cluster.py
rename to openstack/clustering/v1/cluster.py
diff --git a/clustering/v1/cluster_attr.py b/openstack/clustering/v1/cluster_attr.py
similarity index 100%
rename from clustering/v1/cluster_attr.py
rename to openstack/clustering/v1/cluster_attr.py
diff --git a/clustering/v1/cluster_policy.py b/openstack/clustering/v1/cluster_policy.py
similarity index 100%
rename from clustering/v1/cluster_policy.py
rename to openstack/clustering/v1/cluster_policy.py
diff --git a/clustering/v1/event.py b/openstack/clustering/v1/event.py
similarity index 100%
rename from clustering/v1/event.py
rename to openstack/clustering/v1/event.py
diff --git a/clustering/v1/node.py b/openstack/clustering/v1/node.py
similarity index 100%
rename from clustering/v1/node.py
rename to openstack/clustering/v1/node.py
diff --git a/clustering/v1/policy.py b/openstack/clustering/v1/policy.py
similarity index 100%
rename from clustering/v1/policy.py
rename to openstack/clustering/v1/policy.py
diff --git a/clustering/v1/policy_type.py b/openstack/clustering/v1/policy_type.py
similarity index 100%
rename from clustering/v1/policy_type.py
rename to openstack/clustering/v1/policy_type.py
diff --git a/clustering/v1/profile.py b/openstack/clustering/v1/profile.py
similarity index 100%
rename from clustering/v1/profile.py
rename to openstack/clustering/v1/profile.py
diff --git a/clustering/v1/profile_type.py b/openstack/clustering/v1/profile_type.py
similarity index 100%
rename from clustering/v1/profile_type.py
rename to openstack/clustering/v1/profile_type.py
diff --git a/clustering/v1/receiver.py b/openstack/clustering/v1/receiver.py
similarity index 100%
rename from clustering/v1/receiver.py
rename to openstack/clustering/v1/receiver.py
diff --git a/clustering/v1/service.py b/openstack/clustering/v1/service.py
similarity index 100%
rename from clustering/v1/service.py
rename to openstack/clustering/v1/service.py
diff --git a/clustering/version.py b/openstack/clustering/version.py
similarity index 100%
rename from clustering/version.py
rename to openstack/clustering/version.py
diff --git a/fixture/__init__.py b/openstack/common/__init__.py
similarity index 100%
rename from fixture/__init__.py
rename to openstack/common/__init__.py
diff --git a/common/__pycache__/__init__.cpython-310.pyc b/openstack/common/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from common/__pycache__/__init__.cpython-310.pyc
rename to openstack/common/__pycache__/__init__.cpython-310.pyc
diff --git a/common/__pycache__/metadata.cpython-310.pyc b/openstack/common/__pycache__/metadata.cpython-310.pyc
similarity index 100%
rename from common/__pycache__/metadata.cpython-310.pyc
rename to openstack/common/__pycache__/metadata.cpython-310.pyc
diff --git a/common/__pycache__/quota_set.cpython-310.pyc b/openstack/common/__pycache__/quota_set.cpython-310.pyc
similarity index 100%
rename from common/__pycache__/quota_set.cpython-310.pyc
rename to openstack/common/__pycache__/quota_set.cpython-310.pyc
diff --git a/common/__pycache__/tag.cpython-310.pyc b/openstack/common/__pycache__/tag.cpython-310.pyc
similarity index 100%
rename from common/__pycache__/tag.cpython-310.pyc
rename to openstack/common/__pycache__/tag.cpython-310.pyc
diff --git a/common/metadata.py b/openstack/common/metadata.py
similarity index 100%
rename from common/metadata.py
rename to openstack/common/metadata.py
diff --git a/common/quota_set.py b/openstack/common/quota_set.py
similarity index 100%
rename from common/quota_set.py
rename to openstack/common/quota_set.py
diff --git a/common/tag.py b/openstack/common/tag.py
similarity index 100%
rename from common/tag.py
rename to openstack/common/tag.py
diff --git a/identity/__init__.py b/openstack/compute/__init__.py
similarity index 100%
rename from identity/__init__.py
rename to openstack/compute/__init__.py
diff --git a/compute/__pycache__/__init__.cpython-310.pyc b/openstack/compute/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from compute/__pycache__/__init__.cpython-310.pyc
rename to openstack/compute/__pycache__/__init__.cpython-310.pyc
diff --git a/compute/__pycache__/compute_service.cpython-310.pyc b/openstack/compute/__pycache__/compute_service.cpython-310.pyc
similarity index 100%
rename from compute/__pycache__/compute_service.cpython-310.pyc
rename to openstack/compute/__pycache__/compute_service.cpython-310.pyc
diff --git a/compute/__pycache__/version.cpython-310.pyc b/openstack/compute/__pycache__/version.cpython-310.pyc
similarity index 100%
rename from compute/__pycache__/version.cpython-310.pyc
rename to openstack/compute/__pycache__/version.cpython-310.pyc
diff --git a/compute/compute_service.py b/openstack/compute/compute_service.py
similarity index 100%
rename from compute/compute_service.py
rename to openstack/compute/compute_service.py
diff --git a/identity/v2/__init__.py b/openstack/compute/v2/__init__.py
similarity index 100%
rename from identity/v2/__init__.py
rename to openstack/compute/v2/__init__.py
diff --git a/compute/v2/__pycache__/__init__.cpython-310.pyc b/openstack/compute/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/compute/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/compute/v2/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/_proxy.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/_proxy.cpython-310.pyc
diff --git a/compute/v2/__pycache__/aggregate.cpython-310.pyc b/openstack/compute/v2/__pycache__/aggregate.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/aggregate.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/aggregate.cpython-310.pyc
diff --git a/compute/v2/__pycache__/availability_zone.cpython-310.pyc b/openstack/compute/v2/__pycache__/availability_zone.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/availability_zone.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/availability_zone.cpython-310.pyc
diff --git a/compute/v2/__pycache__/extension.cpython-310.pyc b/openstack/compute/v2/__pycache__/extension.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/extension.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/extension.cpython-310.pyc
diff --git a/compute/v2/__pycache__/flavor.cpython-310.pyc b/openstack/compute/v2/__pycache__/flavor.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/flavor.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/flavor.cpython-310.pyc
diff --git a/compute/v2/__pycache__/hypervisor.cpython-310.pyc b/openstack/compute/v2/__pycache__/hypervisor.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/hypervisor.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/hypervisor.cpython-310.pyc
diff --git a/compute/v2/__pycache__/image.cpython-310.pyc b/openstack/compute/v2/__pycache__/image.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/image.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/image.cpython-310.pyc
diff --git a/compute/v2/__pycache__/keypair.cpython-310.pyc b/openstack/compute/v2/__pycache__/keypair.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/keypair.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/keypair.cpython-310.pyc
diff --git a/compute/v2/__pycache__/limits.cpython-310.pyc b/openstack/compute/v2/__pycache__/limits.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/limits.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/limits.cpython-310.pyc
diff --git a/compute/v2/__pycache__/migration.cpython-310.pyc b/openstack/compute/v2/__pycache__/migration.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/migration.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/migration.cpython-310.pyc
diff --git a/compute/v2/__pycache__/quota_set.cpython-310.pyc b/openstack/compute/v2/__pycache__/quota_set.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/quota_set.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/quota_set.cpython-310.pyc
diff --git a/compute/v2/__pycache__/server.cpython-310.pyc b/openstack/compute/v2/__pycache__/server.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/server.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/server.cpython-310.pyc
diff --git a/compute/v2/__pycache__/server_action.cpython-310.pyc b/openstack/compute/v2/__pycache__/server_action.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/server_action.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/server_action.cpython-310.pyc
diff --git a/compute/v2/__pycache__/server_diagnostics.cpython-310.pyc b/openstack/compute/v2/__pycache__/server_diagnostics.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/server_diagnostics.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/server_diagnostics.cpython-310.pyc
diff --git a/compute/v2/__pycache__/server_group.cpython-310.pyc b/openstack/compute/v2/__pycache__/server_group.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/server_group.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/server_group.cpython-310.pyc
diff --git a/compute/v2/__pycache__/server_interface.cpython-310.pyc b/openstack/compute/v2/__pycache__/server_interface.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/server_interface.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/server_interface.cpython-310.pyc
diff --git a/compute/v2/__pycache__/server_ip.cpython-310.pyc b/openstack/compute/v2/__pycache__/server_ip.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/server_ip.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/server_ip.cpython-310.pyc
diff --git a/compute/v2/__pycache__/server_migration.cpython-310.pyc b/openstack/compute/v2/__pycache__/server_migration.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/server_migration.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/server_migration.cpython-310.pyc
diff --git a/compute/v2/__pycache__/server_remote_console.cpython-310.pyc b/openstack/compute/v2/__pycache__/server_remote_console.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/server_remote_console.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/server_remote_console.cpython-310.pyc
diff --git a/compute/v2/__pycache__/service.cpython-310.pyc b/openstack/compute/v2/__pycache__/service.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/service.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/service.cpython-310.pyc
diff --git a/compute/v2/__pycache__/usage.cpython-310.pyc b/openstack/compute/v2/__pycache__/usage.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/usage.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/usage.cpython-310.pyc
diff --git a/compute/v2/__pycache__/volume_attachment.cpython-310.pyc b/openstack/compute/v2/__pycache__/volume_attachment.cpython-310.pyc
similarity index 100%
rename from compute/v2/__pycache__/volume_attachment.cpython-310.pyc
rename to openstack/compute/v2/__pycache__/volume_attachment.cpython-310.pyc
diff --git a/compute/v2/_proxy.py b/openstack/compute/v2/_proxy.py
similarity index 100%
rename from compute/v2/_proxy.py
rename to openstack/compute/v2/_proxy.py
diff --git a/compute/v2/aggregate.py b/openstack/compute/v2/aggregate.py
similarity index 100%
rename from compute/v2/aggregate.py
rename to openstack/compute/v2/aggregate.py
diff --git a/compute/v2/availability_zone.py b/openstack/compute/v2/availability_zone.py
similarity index 100%
rename from compute/v2/availability_zone.py
rename to openstack/compute/v2/availability_zone.py
diff --git a/compute/v2/extension.py b/openstack/compute/v2/extension.py
similarity index 100%
rename from compute/v2/extension.py
rename to openstack/compute/v2/extension.py
diff --git a/compute/v2/flavor.py b/openstack/compute/v2/flavor.py
similarity index 100%
rename from compute/v2/flavor.py
rename to openstack/compute/v2/flavor.py
diff --git a/compute/v2/hypervisor.py b/openstack/compute/v2/hypervisor.py
similarity index 100%
rename from compute/v2/hypervisor.py
rename to openstack/compute/v2/hypervisor.py
diff --git a/compute/v2/image.py b/openstack/compute/v2/image.py
similarity index 100%
rename from compute/v2/image.py
rename to openstack/compute/v2/image.py
diff --git a/compute/v2/keypair.py b/openstack/compute/v2/keypair.py
similarity index 100%
rename from compute/v2/keypair.py
rename to openstack/compute/v2/keypair.py
diff --git a/compute/v2/limits.py b/openstack/compute/v2/limits.py
similarity index 100%
rename from compute/v2/limits.py
rename to openstack/compute/v2/limits.py
diff --git a/compute/v2/migration.py b/openstack/compute/v2/migration.py
similarity index 100%
rename from compute/v2/migration.py
rename to openstack/compute/v2/migration.py
diff --git a/compute/v2/quota_set.py b/openstack/compute/v2/quota_set.py
similarity index 100%
rename from compute/v2/quota_set.py
rename to openstack/compute/v2/quota_set.py
diff --git a/compute/v2/server.py b/openstack/compute/v2/server.py
similarity index 100%
rename from compute/v2/server.py
rename to openstack/compute/v2/server.py
diff --git a/compute/v2/server_action.py b/openstack/compute/v2/server_action.py
similarity index 100%
rename from compute/v2/server_action.py
rename to openstack/compute/v2/server_action.py
diff --git a/compute/v2/server_diagnostics.py b/openstack/compute/v2/server_diagnostics.py
similarity index 100%
rename from compute/v2/server_diagnostics.py
rename to openstack/compute/v2/server_diagnostics.py
diff --git a/compute/v2/server_group.py b/openstack/compute/v2/server_group.py
similarity index 100%
rename from compute/v2/server_group.py
rename to openstack/compute/v2/server_group.py
diff --git a/compute/v2/server_interface.py b/openstack/compute/v2/server_interface.py
similarity index 100%
rename from compute/v2/server_interface.py
rename to openstack/compute/v2/server_interface.py
diff --git a/compute/v2/server_ip.py b/openstack/compute/v2/server_ip.py
similarity index 100%
rename from compute/v2/server_ip.py
rename to openstack/compute/v2/server_ip.py
diff --git a/compute/v2/server_migration.py b/openstack/compute/v2/server_migration.py
similarity index 100%
rename from compute/v2/server_migration.py
rename to openstack/compute/v2/server_migration.py
diff --git a/compute/v2/server_remote_console.py b/openstack/compute/v2/server_remote_console.py
similarity index 100%
rename from compute/v2/server_remote_console.py
rename to openstack/compute/v2/server_remote_console.py
diff --git a/compute/v2/service.py b/openstack/compute/v2/service.py
similarity index 100%
rename from compute/v2/service.py
rename to openstack/compute/v2/service.py
diff --git a/compute/v2/usage.py b/openstack/compute/v2/usage.py
similarity index 100%
rename from compute/v2/usage.py
rename to openstack/compute/v2/usage.py
diff --git a/compute/v2/volume_attachment.py b/openstack/compute/v2/volume_attachment.py
similarity index 100%
rename from compute/v2/volume_attachment.py
rename to openstack/compute/v2/volume_attachment.py
diff --git a/compute/version.py b/openstack/compute/version.py
similarity index 100%
rename from compute/version.py
rename to openstack/compute/version.py
diff --git a/config/__init__.py b/openstack/config/__init__.py
similarity index 100%
rename from config/__init__.py
rename to openstack/config/__init__.py
diff --git a/config/__pycache__/__init__.cpython-310.pyc b/openstack/config/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from config/__pycache__/__init__.cpython-310.pyc
rename to openstack/config/__pycache__/__init__.cpython-310.pyc
diff --git a/config/__pycache__/_util.cpython-310.pyc b/openstack/config/__pycache__/_util.cpython-310.pyc
similarity index 100%
rename from config/__pycache__/_util.cpython-310.pyc
rename to openstack/config/__pycache__/_util.cpython-310.pyc
diff --git a/config/__pycache__/cloud_config.cpython-310.pyc b/openstack/config/__pycache__/cloud_config.cpython-310.pyc
similarity index 100%
rename from config/__pycache__/cloud_config.cpython-310.pyc
rename to openstack/config/__pycache__/cloud_config.cpython-310.pyc
diff --git a/config/__pycache__/cloud_region.cpython-310.pyc b/openstack/config/__pycache__/cloud_region.cpython-310.pyc
similarity index 100%
rename from config/__pycache__/cloud_region.cpython-310.pyc
rename to openstack/config/__pycache__/cloud_region.cpython-310.pyc
diff --git a/config/__pycache__/defaults.cpython-310.pyc b/openstack/config/__pycache__/defaults.cpython-310.pyc
similarity index 100%
rename from config/__pycache__/defaults.cpython-310.pyc
rename to openstack/config/__pycache__/defaults.cpython-310.pyc
diff --git a/config/__pycache__/exceptions.cpython-310.pyc b/openstack/config/__pycache__/exceptions.cpython-310.pyc
similarity index 100%
rename from config/__pycache__/exceptions.cpython-310.pyc
rename to openstack/config/__pycache__/exceptions.cpython-310.pyc
diff --git a/config/__pycache__/loader.cpython-310.pyc b/openstack/config/__pycache__/loader.cpython-310.pyc
similarity index 100%
rename from config/__pycache__/loader.cpython-310.pyc
rename to openstack/config/__pycache__/loader.cpython-310.pyc
diff --git a/config/_util.py b/openstack/config/_util.py
similarity index 100%
rename from config/_util.py
rename to openstack/config/_util.py
diff --git a/config/cloud_config.py b/openstack/config/cloud_config.py
similarity index 100%
rename from config/cloud_config.py
rename to openstack/config/cloud_config.py
diff --git a/config/cloud_region.py b/openstack/config/cloud_region.py
similarity index 100%
rename from config/cloud_region.py
rename to openstack/config/cloud_region.py
diff --git a/config/defaults.json b/openstack/config/defaults.json
similarity index 100%
rename from config/defaults.json
rename to openstack/config/defaults.json
diff --git a/config/defaults.py b/openstack/config/defaults.py
similarity index 100%
rename from config/defaults.py
rename to openstack/config/defaults.py
diff --git a/config/exceptions.py b/openstack/config/exceptions.py
similarity index 100%
rename from config/exceptions.py
rename to openstack/config/exceptions.py
diff --git a/config/loader.py b/openstack/config/loader.py
similarity index 100%
rename from config/loader.py
rename to openstack/config/loader.py
diff --git a/config/schema.json b/openstack/config/schema.json
similarity index 100%
rename from config/schema.json
rename to openstack/config/schema.json
diff --git a/config/vendor-schema.json b/openstack/config/vendor-schema.json
similarity index 100%
rename from config/vendor-schema.json
rename to openstack/config/vendor-schema.json
diff --git a/config/vendors/__init__.py b/openstack/config/vendors/__init__.py
similarity index 100%
rename from config/vendors/__init__.py
rename to openstack/config/vendors/__init__.py
diff --git a/config/vendors/__pycache__/__init__.cpython-310.pyc b/openstack/config/vendors/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from config/vendors/__pycache__/__init__.cpython-310.pyc
rename to openstack/config/vendors/__pycache__/__init__.cpython-310.pyc
diff --git a/config/vendors/auro.json b/openstack/config/vendors/auro.json
similarity index 100%
rename from config/vendors/auro.json
rename to openstack/config/vendors/auro.json
diff --git a/config/vendors/betacloud.json b/openstack/config/vendors/betacloud.json
similarity index 100%
rename from config/vendors/betacloud.json
rename to openstack/config/vendors/betacloud.json
diff --git a/config/vendors/bluebox.json b/openstack/config/vendors/bluebox.json
similarity index 100%
rename from config/vendors/bluebox.json
rename to openstack/config/vendors/bluebox.json
diff --git a/config/vendors/catalyst.json b/openstack/config/vendors/catalyst.json
similarity index 100%
rename from config/vendors/catalyst.json
rename to openstack/config/vendors/catalyst.json
diff --git a/config/vendors/citycloud.json b/openstack/config/vendors/citycloud.json
similarity index 100%
rename from config/vendors/citycloud.json
rename to openstack/config/vendors/citycloud.json
diff --git a/config/vendors/conoha.json b/openstack/config/vendors/conoha.json
similarity index 100%
rename from config/vendors/conoha.json
rename to openstack/config/vendors/conoha.json
diff --git a/config/vendors/dreamcompute.json b/openstack/config/vendors/dreamcompute.json
similarity index 100%
rename from config/vendors/dreamcompute.json
rename to openstack/config/vendors/dreamcompute.json
diff --git a/config/vendors/elastx.json b/openstack/config/vendors/elastx.json
similarity index 100%
rename from config/vendors/elastx.json
rename to openstack/config/vendors/elastx.json
diff --git a/config/vendors/entercloudsuite.json b/openstack/config/vendors/entercloudsuite.json
similarity index 100%
rename from config/vendors/entercloudsuite.json
rename to openstack/config/vendors/entercloudsuite.json
diff --git a/config/vendors/fuga.json b/openstack/config/vendors/fuga.json
similarity index 100%
rename from config/vendors/fuga.json
rename to openstack/config/vendors/fuga.json
diff --git a/config/vendors/ibmcloud.json b/openstack/config/vendors/ibmcloud.json
similarity index 100%
rename from config/vendors/ibmcloud.json
rename to openstack/config/vendors/ibmcloud.json
diff --git a/config/vendors/internap.json b/openstack/config/vendors/internap.json
similarity index 100%
rename from config/vendors/internap.json
rename to openstack/config/vendors/internap.json
diff --git a/config/vendors/limestonenetworks.yaml b/openstack/config/vendors/limestonenetworks.yaml
similarity index 100%
rename from config/vendors/limestonenetworks.yaml
rename to openstack/config/vendors/limestonenetworks.yaml
diff --git a/config/vendors/otc-swiss.json b/openstack/config/vendors/otc-swiss.json
similarity index 100%
rename from config/vendors/otc-swiss.json
rename to openstack/config/vendors/otc-swiss.json
diff --git a/config/vendors/otc.json b/openstack/config/vendors/otc.json
similarity index 100%
rename from config/vendors/otc.json
rename to openstack/config/vendors/otc.json
diff --git a/config/vendors/ovh-us.json b/openstack/config/vendors/ovh-us.json
similarity index 100%
rename from config/vendors/ovh-us.json
rename to openstack/config/vendors/ovh-us.json
diff --git a/config/vendors/ovh.json b/openstack/config/vendors/ovh.json
similarity index 100%
rename from config/vendors/ovh.json
rename to openstack/config/vendors/ovh.json
diff --git a/config/vendors/rackspace.json b/openstack/config/vendors/rackspace.json
similarity index 100%
rename from config/vendors/rackspace.json
rename to openstack/config/vendors/rackspace.json
diff --git a/config/vendors/switchengines.json b/openstack/config/vendors/switchengines.json
similarity index 100%
rename from config/vendors/switchengines.json
rename to openstack/config/vendors/switchengines.json
diff --git a/config/vendors/ultimum.json b/openstack/config/vendors/ultimum.json
similarity index 100%
rename from config/vendors/ultimum.json
rename to openstack/config/vendors/ultimum.json
diff --git a/config/vendors/unitedstack.json b/openstack/config/vendors/unitedstack.json
similarity index 100%
rename from config/vendors/unitedstack.json
rename to openstack/config/vendors/unitedstack.json
diff --git a/config/vendors/vexxhost.json b/openstack/config/vendors/vexxhost.json
similarity index 100%
rename from config/vendors/vexxhost.json
rename to openstack/config/vendors/vexxhost.json
diff --git a/config/vendors/zetta.json b/openstack/config/vendors/zetta.json
similarity index 100%
rename from config/vendors/zetta.json
rename to openstack/config/vendors/zetta.json
diff --git a/connection.py b/openstack/connection.py
similarity index 100%
rename from connection.py
rename to openstack/connection.py
diff --git a/identity/v3/__init__.py b/openstack/container_infrastructure_management/__init__.py
similarity index 100%
rename from identity/v3/__init__.py
rename to openstack/container_infrastructure_management/__init__.py
diff --git a/container_infrastructure_management/__pycache__/__init__.cpython-310.pyc b/openstack/container_infrastructure_management/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from container_infrastructure_management/__pycache__/__init__.cpython-310.pyc
rename to openstack/container_infrastructure_management/__pycache__/__init__.cpython-310.pyc
diff --git a/container_infrastructure_management/__pycache__/container_infrastructure_management_service.cpython-310.pyc b/openstack/container_infrastructure_management/__pycache__/container_infrastructure_management_service.cpython-310.pyc
similarity index 100%
rename from container_infrastructure_management/__pycache__/container_infrastructure_management_service.cpython-310.pyc
rename to openstack/container_infrastructure_management/__pycache__/container_infrastructure_management_service.cpython-310.pyc
diff --git a/container_infrastructure_management/container_infrastructure_management_service.py b/openstack/container_infrastructure_management/container_infrastructure_management_service.py
similarity index 100%
rename from container_infrastructure_management/container_infrastructure_management_service.py
rename to openstack/container_infrastructure_management/container_infrastructure_management_service.py
diff --git a/image/__init__.py b/openstack/container_infrastructure_management/v1/__init__.py
similarity index 100%
rename from image/__init__.py
rename to openstack/container_infrastructure_management/v1/__init__.py
diff --git a/container_infrastructure_management/v1/__pycache__/__init__.cpython-310.pyc b/openstack/container_infrastructure_management/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from container_infrastructure_management/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/container_infrastructure_management/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/container_infrastructure_management/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/container_infrastructure_management/v1/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from container_infrastructure_management/v1/__pycache__/_proxy.cpython-310.pyc
rename to openstack/container_infrastructure_management/v1/__pycache__/_proxy.cpython-310.pyc
diff --git a/container_infrastructure_management/v1/__pycache__/cluster.cpython-310.pyc b/openstack/container_infrastructure_management/v1/__pycache__/cluster.cpython-310.pyc
similarity index 100%
rename from container_infrastructure_management/v1/__pycache__/cluster.cpython-310.pyc
rename to openstack/container_infrastructure_management/v1/__pycache__/cluster.cpython-310.pyc
diff --git a/container_infrastructure_management/v1/__pycache__/cluster_certificate.cpython-310.pyc b/openstack/container_infrastructure_management/v1/__pycache__/cluster_certificate.cpython-310.pyc
similarity index 100%
rename from container_infrastructure_management/v1/__pycache__/cluster_certificate.cpython-310.pyc
rename to openstack/container_infrastructure_management/v1/__pycache__/cluster_certificate.cpython-310.pyc
diff --git a/container_infrastructure_management/v1/__pycache__/cluster_template.cpython-310.pyc b/openstack/container_infrastructure_management/v1/__pycache__/cluster_template.cpython-310.pyc
similarity index 100%
rename from container_infrastructure_management/v1/__pycache__/cluster_template.cpython-310.pyc
rename to openstack/container_infrastructure_management/v1/__pycache__/cluster_template.cpython-310.pyc
diff --git a/container_infrastructure_management/v1/__pycache__/service.cpython-310.pyc b/openstack/container_infrastructure_management/v1/__pycache__/service.cpython-310.pyc
similarity index 100%
rename from container_infrastructure_management/v1/__pycache__/service.cpython-310.pyc
rename to openstack/container_infrastructure_management/v1/__pycache__/service.cpython-310.pyc
diff --git a/container_infrastructure_management/v1/_proxy.py b/openstack/container_infrastructure_management/v1/_proxy.py
similarity index 100%
rename from container_infrastructure_management/v1/_proxy.py
rename to openstack/container_infrastructure_management/v1/_proxy.py
diff --git a/container_infrastructure_management/v1/cluster.py b/openstack/container_infrastructure_management/v1/cluster.py
similarity index 100%
rename from container_infrastructure_management/v1/cluster.py
rename to openstack/container_infrastructure_management/v1/cluster.py
diff --git a/container_infrastructure_management/v1/cluster_certificate.py b/openstack/container_infrastructure_management/v1/cluster_certificate.py
similarity index 100%
rename from container_infrastructure_management/v1/cluster_certificate.py
rename to openstack/container_infrastructure_management/v1/cluster_certificate.py
diff --git a/container_infrastructure_management/v1/cluster_template.py b/openstack/container_infrastructure_management/v1/cluster_template.py
similarity index 100%
rename from container_infrastructure_management/v1/cluster_template.py
rename to openstack/container_infrastructure_management/v1/cluster_template.py
diff --git a/container_infrastructure_management/v1/service.py b/openstack/container_infrastructure_management/v1/service.py
similarity index 100%
rename from container_infrastructure_management/v1/service.py
rename to openstack/container_infrastructure_management/v1/service.py
diff --git a/image/v1/__init__.py b/openstack/database/__init__.py
similarity index 100%
rename from image/v1/__init__.py
rename to openstack/database/__init__.py
diff --git a/database/__pycache__/__init__.cpython-310.pyc b/openstack/database/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from database/__pycache__/__init__.cpython-310.pyc
rename to openstack/database/__pycache__/__init__.cpython-310.pyc
diff --git a/database/__pycache__/database_service.cpython-310.pyc b/openstack/database/__pycache__/database_service.cpython-310.pyc
similarity index 100%
rename from database/__pycache__/database_service.cpython-310.pyc
rename to openstack/database/__pycache__/database_service.cpython-310.pyc
diff --git a/database/database_service.py b/openstack/database/database_service.py
similarity index 100%
rename from database/database_service.py
rename to openstack/database/database_service.py
diff --git a/image/v2/__init__.py b/openstack/database/v1/__init__.py
similarity index 100%
rename from image/v2/__init__.py
rename to openstack/database/v1/__init__.py
diff --git a/database/v1/__pycache__/__init__.cpython-310.pyc b/openstack/database/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from database/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/database/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/database/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/database/v1/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from database/v1/__pycache__/_proxy.cpython-310.pyc
rename to openstack/database/v1/__pycache__/_proxy.cpython-310.pyc
diff --git a/database/v1/__pycache__/database.cpython-310.pyc b/openstack/database/v1/__pycache__/database.cpython-310.pyc
similarity index 100%
rename from database/v1/__pycache__/database.cpython-310.pyc
rename to openstack/database/v1/__pycache__/database.cpython-310.pyc
diff --git a/database/v1/__pycache__/flavor.cpython-310.pyc b/openstack/database/v1/__pycache__/flavor.cpython-310.pyc
similarity index 100%
rename from database/v1/__pycache__/flavor.cpython-310.pyc
rename to openstack/database/v1/__pycache__/flavor.cpython-310.pyc
diff --git a/database/v1/__pycache__/instance.cpython-310.pyc b/openstack/database/v1/__pycache__/instance.cpython-310.pyc
similarity index 100%
rename from database/v1/__pycache__/instance.cpython-310.pyc
rename to openstack/database/v1/__pycache__/instance.cpython-310.pyc
diff --git a/database/v1/__pycache__/user.cpython-310.pyc b/openstack/database/v1/__pycache__/user.cpython-310.pyc
similarity index 100%
rename from database/v1/__pycache__/user.cpython-310.pyc
rename to openstack/database/v1/__pycache__/user.cpython-310.pyc
diff --git a/database/v1/_proxy.py b/openstack/database/v1/_proxy.py
similarity index 100%
rename from database/v1/_proxy.py
rename to openstack/database/v1/_proxy.py
diff --git a/database/v1/database.py b/openstack/database/v1/database.py
similarity index 100%
rename from database/v1/database.py
rename to openstack/database/v1/database.py
diff --git a/database/v1/flavor.py b/openstack/database/v1/flavor.py
similarity index 100%
rename from database/v1/flavor.py
rename to openstack/database/v1/flavor.py
diff --git a/database/v1/instance.py b/openstack/database/v1/instance.py
similarity index 100%
rename from database/v1/instance.py
rename to openstack/database/v1/instance.py
diff --git a/database/v1/user.py b/openstack/database/v1/user.py
similarity index 100%
rename from database/v1/user.py
rename to openstack/database/v1/user.py
diff --git a/instance_ha/__init__.py b/openstack/dns/__init__.py
similarity index 100%
rename from instance_ha/__init__.py
rename to openstack/dns/__init__.py
diff --git a/dns/__pycache__/__init__.cpython-310.pyc b/openstack/dns/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from dns/__pycache__/__init__.cpython-310.pyc
rename to openstack/dns/__pycache__/__init__.cpython-310.pyc
diff --git a/dns/__pycache__/dns_service.cpython-310.pyc b/openstack/dns/__pycache__/dns_service.cpython-310.pyc
similarity index 100%
rename from dns/__pycache__/dns_service.cpython-310.pyc
rename to openstack/dns/__pycache__/dns_service.cpython-310.pyc
diff --git a/dns/__pycache__/version.cpython-310.pyc b/openstack/dns/__pycache__/version.cpython-310.pyc
similarity index 100%
rename from dns/__pycache__/version.cpython-310.pyc
rename to openstack/dns/__pycache__/version.cpython-310.pyc
diff --git a/dns/dns_service.py b/openstack/dns/dns_service.py
similarity index 100%
rename from dns/dns_service.py
rename to openstack/dns/dns_service.py
diff --git a/instance_ha/v1/__init__.py b/openstack/dns/v2/__init__.py
similarity index 100%
rename from instance_ha/v1/__init__.py
rename to openstack/dns/v2/__init__.py
diff --git a/dns/v2/__pycache__/__init__.cpython-310.pyc b/openstack/dns/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from dns/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/dns/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/dns/v2/__pycache__/_base.cpython-310.pyc b/openstack/dns/v2/__pycache__/_base.cpython-310.pyc
similarity index 100%
rename from dns/v2/__pycache__/_base.cpython-310.pyc
rename to openstack/dns/v2/__pycache__/_base.cpython-310.pyc
diff --git a/dns/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/dns/v2/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from dns/v2/__pycache__/_proxy.cpython-310.pyc
rename to openstack/dns/v2/__pycache__/_proxy.cpython-310.pyc
diff --git a/dns/v2/__pycache__/floating_ip.cpython-310.pyc b/openstack/dns/v2/__pycache__/floating_ip.cpython-310.pyc
similarity index 100%
rename from dns/v2/__pycache__/floating_ip.cpython-310.pyc
rename to openstack/dns/v2/__pycache__/floating_ip.cpython-310.pyc
diff --git a/dns/v2/__pycache__/recordset.cpython-310.pyc b/openstack/dns/v2/__pycache__/recordset.cpython-310.pyc
similarity index 100%
rename from dns/v2/__pycache__/recordset.cpython-310.pyc
rename to openstack/dns/v2/__pycache__/recordset.cpython-310.pyc
diff --git a/dns/v2/__pycache__/zone.cpython-310.pyc b/openstack/dns/v2/__pycache__/zone.cpython-310.pyc
similarity index 100%
rename from dns/v2/__pycache__/zone.cpython-310.pyc
rename to openstack/dns/v2/__pycache__/zone.cpython-310.pyc
diff --git a/dns/v2/__pycache__/zone_export.cpython-310.pyc b/openstack/dns/v2/__pycache__/zone_export.cpython-310.pyc
similarity index 100%
rename from dns/v2/__pycache__/zone_export.cpython-310.pyc
rename to openstack/dns/v2/__pycache__/zone_export.cpython-310.pyc
diff --git a/dns/v2/__pycache__/zone_import.cpython-310.pyc b/openstack/dns/v2/__pycache__/zone_import.cpython-310.pyc
similarity index 100%
rename from dns/v2/__pycache__/zone_import.cpython-310.pyc
rename to openstack/dns/v2/__pycache__/zone_import.cpython-310.pyc
diff --git a/dns/v2/__pycache__/zone_share.cpython-310.pyc b/openstack/dns/v2/__pycache__/zone_share.cpython-310.pyc
similarity index 100%
rename from dns/v2/__pycache__/zone_share.cpython-310.pyc
rename to openstack/dns/v2/__pycache__/zone_share.cpython-310.pyc
diff --git a/dns/v2/__pycache__/zone_transfer.cpython-310.pyc b/openstack/dns/v2/__pycache__/zone_transfer.cpython-310.pyc
similarity index 100%
rename from dns/v2/__pycache__/zone_transfer.cpython-310.pyc
rename to openstack/dns/v2/__pycache__/zone_transfer.cpython-310.pyc
diff --git a/dns/v2/_base.py b/openstack/dns/v2/_base.py
similarity index 100%
rename from dns/v2/_base.py
rename to openstack/dns/v2/_base.py
diff --git a/dns/v2/_proxy.py b/openstack/dns/v2/_proxy.py
similarity index 100%
rename from dns/v2/_proxy.py
rename to openstack/dns/v2/_proxy.py
diff --git a/dns/v2/floating_ip.py b/openstack/dns/v2/floating_ip.py
similarity index 100%
rename from dns/v2/floating_ip.py
rename to openstack/dns/v2/floating_ip.py
diff --git a/dns/v2/recordset.py b/openstack/dns/v2/recordset.py
similarity index 100%
rename from dns/v2/recordset.py
rename to openstack/dns/v2/recordset.py
diff --git a/dns/v2/zone.py b/openstack/dns/v2/zone.py
similarity index 100%
rename from dns/v2/zone.py
rename to openstack/dns/v2/zone.py
diff --git a/dns/v2/zone_export.py b/openstack/dns/v2/zone_export.py
similarity index 100%
rename from dns/v2/zone_export.py
rename to openstack/dns/v2/zone_export.py
diff --git a/dns/v2/zone_import.py b/openstack/dns/v2/zone_import.py
similarity index 100%
rename from dns/v2/zone_import.py
rename to openstack/dns/v2/zone_import.py
diff --git a/dns/v2/zone_share.py b/openstack/dns/v2/zone_share.py
similarity index 100%
rename from dns/v2/zone_share.py
rename to openstack/dns/v2/zone_share.py
diff --git a/dns/v2/zone_transfer.py b/openstack/dns/v2/zone_transfer.py
similarity index 100%
rename from dns/v2/zone_transfer.py
rename to openstack/dns/v2/zone_transfer.py
diff --git a/dns/version.py b/openstack/dns/version.py
similarity index 100%
rename from dns/version.py
rename to openstack/dns/version.py
diff --git a/exceptions.py b/openstack/exceptions.py
similarity index 100%
rename from exceptions.py
rename to openstack/exceptions.py
diff --git a/key_manager/__init__.py b/openstack/fixture/__init__.py
similarity index 100%
rename from key_manager/__init__.py
rename to openstack/fixture/__init__.py
diff --git a/fixture/__pycache__/__init__.cpython-310.pyc b/openstack/fixture/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from fixture/__pycache__/__init__.cpython-310.pyc
rename to openstack/fixture/__pycache__/__init__.cpython-310.pyc
diff --git a/fixture/__pycache__/connection.cpython-310.pyc b/openstack/fixture/__pycache__/connection.cpython-310.pyc
similarity index 100%
rename from fixture/__pycache__/connection.cpython-310.pyc
rename to openstack/fixture/__pycache__/connection.cpython-310.pyc
diff --git a/fixture/connection.py b/openstack/fixture/connection.py
similarity index 100%
rename from fixture/connection.py
rename to openstack/fixture/connection.py
diff --git a/format.py b/openstack/format.py
similarity index 100%
rename from format.py
rename to openstack/format.py
diff --git a/key_manager/v1/__init__.py b/openstack/identity/__init__.py
similarity index 100%
rename from key_manager/v1/__init__.py
rename to openstack/identity/__init__.py
diff --git a/identity/__pycache__/__init__.cpython-310.pyc b/openstack/identity/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from identity/__pycache__/__init__.cpython-310.pyc
rename to openstack/identity/__pycache__/__init__.cpython-310.pyc
diff --git a/identity/__pycache__/identity_service.cpython-310.pyc b/openstack/identity/__pycache__/identity_service.cpython-310.pyc
similarity index 100%
rename from identity/__pycache__/identity_service.cpython-310.pyc
rename to openstack/identity/__pycache__/identity_service.cpython-310.pyc
diff --git a/identity/__pycache__/version.cpython-310.pyc b/openstack/identity/__pycache__/version.cpython-310.pyc
similarity index 100%
rename from identity/__pycache__/version.cpython-310.pyc
rename to openstack/identity/__pycache__/version.cpython-310.pyc
diff --git a/identity/identity_service.py b/openstack/identity/identity_service.py
similarity index 100%
rename from identity/identity_service.py
rename to openstack/identity/identity_service.py
diff --git a/load_balancer/__init__.py b/openstack/identity/v2/__init__.py
similarity index 100%
rename from load_balancer/__init__.py
rename to openstack/identity/v2/__init__.py
diff --git a/identity/v2/__pycache__/__init__.cpython-310.pyc b/openstack/identity/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from identity/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/identity/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/identity/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/identity/v2/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from identity/v2/__pycache__/_proxy.cpython-310.pyc
rename to openstack/identity/v2/__pycache__/_proxy.cpython-310.pyc
diff --git a/identity/v2/__pycache__/extension.cpython-310.pyc b/openstack/identity/v2/__pycache__/extension.cpython-310.pyc
similarity index 100%
rename from identity/v2/__pycache__/extension.cpython-310.pyc
rename to openstack/identity/v2/__pycache__/extension.cpython-310.pyc
diff --git a/identity/v2/__pycache__/role.cpython-310.pyc b/openstack/identity/v2/__pycache__/role.cpython-310.pyc
similarity index 100%
rename from identity/v2/__pycache__/role.cpython-310.pyc
rename to openstack/identity/v2/__pycache__/role.cpython-310.pyc
diff --git a/identity/v2/__pycache__/tenant.cpython-310.pyc b/openstack/identity/v2/__pycache__/tenant.cpython-310.pyc
similarity index 100%
rename from identity/v2/__pycache__/tenant.cpython-310.pyc
rename to openstack/identity/v2/__pycache__/tenant.cpython-310.pyc
diff --git a/identity/v2/__pycache__/user.cpython-310.pyc b/openstack/identity/v2/__pycache__/user.cpython-310.pyc
similarity index 100%
rename from identity/v2/__pycache__/user.cpython-310.pyc
rename to openstack/identity/v2/__pycache__/user.cpython-310.pyc
diff --git a/identity/v2/_proxy.py b/openstack/identity/v2/_proxy.py
similarity index 100%
rename from identity/v2/_proxy.py
rename to openstack/identity/v2/_proxy.py
diff --git a/identity/v2/extension.py b/openstack/identity/v2/extension.py
similarity index 100%
rename from identity/v2/extension.py
rename to openstack/identity/v2/extension.py
diff --git a/identity/v2/role.py b/openstack/identity/v2/role.py
similarity index 100%
rename from identity/v2/role.py
rename to openstack/identity/v2/role.py
diff --git a/identity/v2/tenant.py b/openstack/identity/v2/tenant.py
similarity index 100%
rename from identity/v2/tenant.py
rename to openstack/identity/v2/tenant.py
diff --git a/identity/v2/user.py b/openstack/identity/v2/user.py
similarity index 100%
rename from identity/v2/user.py
rename to openstack/identity/v2/user.py
diff --git a/load_balancer/v2/__init__.py b/openstack/identity/v3/__init__.py
similarity index 100%
rename from load_balancer/v2/__init__.py
rename to openstack/identity/v3/__init__.py
diff --git a/identity/v3/__pycache__/__init__.cpython-310.pyc b/openstack/identity/v3/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/__init__.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/__init__.cpython-310.pyc
diff --git a/identity/v3/__pycache__/_proxy.cpython-310.pyc b/openstack/identity/v3/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/_proxy.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/_proxy.cpython-310.pyc
diff --git a/identity/v3/__pycache__/application_credential.cpython-310.pyc b/openstack/identity/v3/__pycache__/application_credential.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/application_credential.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/application_credential.cpython-310.pyc
diff --git a/identity/v3/__pycache__/credential.cpython-310.pyc b/openstack/identity/v3/__pycache__/credential.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/credential.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/credential.cpython-310.pyc
diff --git a/identity/v3/__pycache__/domain.cpython-310.pyc b/openstack/identity/v3/__pycache__/domain.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/domain.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/domain.cpython-310.pyc
diff --git a/identity/v3/__pycache__/domain_config.cpython-310.pyc b/openstack/identity/v3/__pycache__/domain_config.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/domain_config.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/domain_config.cpython-310.pyc
diff --git a/identity/v3/__pycache__/endpoint.cpython-310.pyc b/openstack/identity/v3/__pycache__/endpoint.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/endpoint.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/endpoint.cpython-310.pyc
diff --git a/identity/v3/__pycache__/federation_protocol.cpython-310.pyc b/openstack/identity/v3/__pycache__/federation_protocol.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/federation_protocol.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/federation_protocol.cpython-310.pyc
diff --git a/identity/v3/__pycache__/group.cpython-310.pyc b/openstack/identity/v3/__pycache__/group.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/group.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/group.cpython-310.pyc
diff --git a/identity/v3/__pycache__/identity_provider.cpython-310.pyc b/openstack/identity/v3/__pycache__/identity_provider.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/identity_provider.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/identity_provider.cpython-310.pyc
diff --git a/identity/v3/__pycache__/limit.cpython-310.pyc b/openstack/identity/v3/__pycache__/limit.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/limit.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/limit.cpython-310.pyc
diff --git a/identity/v3/__pycache__/mapping.cpython-310.pyc b/openstack/identity/v3/__pycache__/mapping.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/mapping.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/mapping.cpython-310.pyc
diff --git a/identity/v3/__pycache__/policy.cpython-310.pyc b/openstack/identity/v3/__pycache__/policy.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/policy.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/policy.cpython-310.pyc
diff --git a/identity/v3/__pycache__/project.cpython-310.pyc b/openstack/identity/v3/__pycache__/project.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/project.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/project.cpython-310.pyc
diff --git a/identity/v3/__pycache__/region.cpython-310.pyc b/openstack/identity/v3/__pycache__/region.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/region.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/region.cpython-310.pyc
diff --git a/identity/v3/__pycache__/registered_limit.cpython-310.pyc b/openstack/identity/v3/__pycache__/registered_limit.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/registered_limit.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/registered_limit.cpython-310.pyc
diff --git a/identity/v3/__pycache__/role.cpython-310.pyc b/openstack/identity/v3/__pycache__/role.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/role.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/role.cpython-310.pyc
diff --git a/identity/v3/__pycache__/role_assignment.cpython-310.pyc b/openstack/identity/v3/__pycache__/role_assignment.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/role_assignment.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/role_assignment.cpython-310.pyc
diff --git a/identity/v3/__pycache__/role_domain_group_assignment.cpython-310.pyc b/openstack/identity/v3/__pycache__/role_domain_group_assignment.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/role_domain_group_assignment.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/role_domain_group_assignment.cpython-310.pyc
diff --git a/identity/v3/__pycache__/role_domain_user_assignment.cpython-310.pyc b/openstack/identity/v3/__pycache__/role_domain_user_assignment.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/role_domain_user_assignment.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/role_domain_user_assignment.cpython-310.pyc
diff --git a/identity/v3/__pycache__/role_project_group_assignment.cpython-310.pyc b/openstack/identity/v3/__pycache__/role_project_group_assignment.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/role_project_group_assignment.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/role_project_group_assignment.cpython-310.pyc
diff --git a/identity/v3/__pycache__/role_project_user_assignment.cpython-310.pyc b/openstack/identity/v3/__pycache__/role_project_user_assignment.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/role_project_user_assignment.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/role_project_user_assignment.cpython-310.pyc
diff --git a/identity/v3/__pycache__/role_system_group_assignment.cpython-310.pyc b/openstack/identity/v3/__pycache__/role_system_group_assignment.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/role_system_group_assignment.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/role_system_group_assignment.cpython-310.pyc
diff --git a/identity/v3/__pycache__/role_system_user_assignment.cpython-310.pyc b/openstack/identity/v3/__pycache__/role_system_user_assignment.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/role_system_user_assignment.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/role_system_user_assignment.cpython-310.pyc
diff --git a/identity/v3/__pycache__/service.cpython-310.pyc b/openstack/identity/v3/__pycache__/service.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/service.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/service.cpython-310.pyc
diff --git a/identity/v3/__pycache__/system.cpython-310.pyc b/openstack/identity/v3/__pycache__/system.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/system.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/system.cpython-310.pyc
diff --git a/identity/v3/__pycache__/trust.cpython-310.pyc b/openstack/identity/v3/__pycache__/trust.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/trust.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/trust.cpython-310.pyc
diff --git a/identity/v3/__pycache__/user.cpython-310.pyc b/openstack/identity/v3/__pycache__/user.cpython-310.pyc
similarity index 100%
rename from identity/v3/__pycache__/user.cpython-310.pyc
rename to openstack/identity/v3/__pycache__/user.cpython-310.pyc
diff --git a/identity/v3/_proxy.py b/openstack/identity/v3/_proxy.py
similarity index 100%
rename from identity/v3/_proxy.py
rename to openstack/identity/v3/_proxy.py
diff --git a/identity/v3/application_credential.py b/openstack/identity/v3/application_credential.py
similarity index 100%
rename from identity/v3/application_credential.py
rename to openstack/identity/v3/application_credential.py
diff --git a/identity/v3/credential.py b/openstack/identity/v3/credential.py
similarity index 100%
rename from identity/v3/credential.py
rename to openstack/identity/v3/credential.py
diff --git a/identity/v3/domain.py b/openstack/identity/v3/domain.py
similarity index 100%
rename from identity/v3/domain.py
rename to openstack/identity/v3/domain.py
diff --git a/identity/v3/domain_config.py b/openstack/identity/v3/domain_config.py
similarity index 100%
rename from identity/v3/domain_config.py
rename to openstack/identity/v3/domain_config.py
diff --git a/identity/v3/endpoint.py b/openstack/identity/v3/endpoint.py
similarity index 100%
rename from identity/v3/endpoint.py
rename to openstack/identity/v3/endpoint.py
diff --git a/identity/v3/federation_protocol.py b/openstack/identity/v3/federation_protocol.py
similarity index 100%
rename from identity/v3/federation_protocol.py
rename to openstack/identity/v3/federation_protocol.py
diff --git a/identity/v3/group.py b/openstack/identity/v3/group.py
similarity index 100%
rename from identity/v3/group.py
rename to openstack/identity/v3/group.py
diff --git a/identity/v3/identity_provider.py b/openstack/identity/v3/identity_provider.py
similarity index 100%
rename from identity/v3/identity_provider.py
rename to openstack/identity/v3/identity_provider.py
diff --git a/identity/v3/limit.py b/openstack/identity/v3/limit.py
similarity index 100%
rename from identity/v3/limit.py
rename to openstack/identity/v3/limit.py
diff --git a/identity/v3/mapping.py b/openstack/identity/v3/mapping.py
similarity index 100%
rename from identity/v3/mapping.py
rename to openstack/identity/v3/mapping.py
diff --git a/identity/v3/policy.py b/openstack/identity/v3/policy.py
similarity index 100%
rename from identity/v3/policy.py
rename to openstack/identity/v3/policy.py
diff --git a/identity/v3/project.py b/openstack/identity/v3/project.py
similarity index 100%
rename from identity/v3/project.py
rename to openstack/identity/v3/project.py
diff --git a/identity/v3/region.py b/openstack/identity/v3/region.py
similarity index 100%
rename from identity/v3/region.py
rename to openstack/identity/v3/region.py
diff --git a/identity/v3/registered_limit.py b/openstack/identity/v3/registered_limit.py
similarity index 100%
rename from identity/v3/registered_limit.py
rename to openstack/identity/v3/registered_limit.py
diff --git a/identity/v3/role.py b/openstack/identity/v3/role.py
similarity index 100%
rename from identity/v3/role.py
rename to openstack/identity/v3/role.py
diff --git a/identity/v3/role_assignment.py b/openstack/identity/v3/role_assignment.py
similarity index 100%
rename from identity/v3/role_assignment.py
rename to openstack/identity/v3/role_assignment.py
diff --git a/identity/v3/role_domain_group_assignment.py b/openstack/identity/v3/role_domain_group_assignment.py
similarity index 100%
rename from identity/v3/role_domain_group_assignment.py
rename to openstack/identity/v3/role_domain_group_assignment.py
diff --git a/identity/v3/role_domain_user_assignment.py b/openstack/identity/v3/role_domain_user_assignment.py
similarity index 100%
rename from identity/v3/role_domain_user_assignment.py
rename to openstack/identity/v3/role_domain_user_assignment.py
diff --git a/identity/v3/role_project_group_assignment.py b/openstack/identity/v3/role_project_group_assignment.py
similarity index 100%
rename from identity/v3/role_project_group_assignment.py
rename to openstack/identity/v3/role_project_group_assignment.py
diff --git a/identity/v3/role_project_user_assignment.py b/openstack/identity/v3/role_project_user_assignment.py
similarity index 100%
rename from identity/v3/role_project_user_assignment.py
rename to openstack/identity/v3/role_project_user_assignment.py
diff --git a/identity/v3/role_system_group_assignment.py b/openstack/identity/v3/role_system_group_assignment.py
similarity index 100%
rename from identity/v3/role_system_group_assignment.py
rename to openstack/identity/v3/role_system_group_assignment.py
diff --git a/identity/v3/role_system_user_assignment.py b/openstack/identity/v3/role_system_user_assignment.py
similarity index 100%
rename from identity/v3/role_system_user_assignment.py
rename to openstack/identity/v3/role_system_user_assignment.py
diff --git a/identity/v3/service.py b/openstack/identity/v3/service.py
similarity index 100%
rename from identity/v3/service.py
rename to openstack/identity/v3/service.py
diff --git a/identity/v3/system.py b/openstack/identity/v3/system.py
similarity index 100%
rename from identity/v3/system.py
rename to openstack/identity/v3/system.py
diff --git a/identity/v3/trust.py b/openstack/identity/v3/trust.py
similarity index 100%
rename from identity/v3/trust.py
rename to openstack/identity/v3/trust.py
diff --git a/identity/v3/user.py b/openstack/identity/v3/user.py
similarity index 100%
rename from identity/v3/user.py
rename to openstack/identity/v3/user.py
diff --git a/identity/version.py b/openstack/identity/version.py
similarity index 100%
rename from identity/version.py
rename to openstack/identity/version.py
diff --git a/message/__init__.py b/openstack/image/__init__.py
similarity index 100%
rename from message/__init__.py
rename to openstack/image/__init__.py
diff --git a/image/__pycache__/__init__.cpython-310.pyc b/openstack/image/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from image/__pycache__/__init__.cpython-310.pyc
rename to openstack/image/__pycache__/__init__.cpython-310.pyc
diff --git a/image/__pycache__/_download.cpython-310.pyc b/openstack/image/__pycache__/_download.cpython-310.pyc
similarity index 100%
rename from image/__pycache__/_download.cpython-310.pyc
rename to openstack/image/__pycache__/_download.cpython-310.pyc
diff --git a/image/__pycache__/image_service.cpython-310.pyc b/openstack/image/__pycache__/image_service.cpython-310.pyc
similarity index 100%
rename from image/__pycache__/image_service.cpython-310.pyc
rename to openstack/image/__pycache__/image_service.cpython-310.pyc
diff --git a/image/__pycache__/image_signer.cpython-310.pyc b/openstack/image/__pycache__/image_signer.cpython-310.pyc
similarity index 100%
rename from image/__pycache__/image_signer.cpython-310.pyc
rename to openstack/image/__pycache__/image_signer.cpython-310.pyc
diff --git a/image/__pycache__/iterable_chunked_file.cpython-310.pyc b/openstack/image/__pycache__/iterable_chunked_file.cpython-310.pyc
similarity index 100%
rename from image/__pycache__/iterable_chunked_file.cpython-310.pyc
rename to openstack/image/__pycache__/iterable_chunked_file.cpython-310.pyc
diff --git a/image/_download.py b/openstack/image/_download.py
similarity index 100%
rename from image/_download.py
rename to openstack/image/_download.py
diff --git a/image/image_service.py b/openstack/image/image_service.py
similarity index 100%
rename from image/image_service.py
rename to openstack/image/image_service.py
diff --git a/image/image_signer.py b/openstack/image/image_signer.py
similarity index 100%
rename from image/image_signer.py
rename to openstack/image/image_signer.py
diff --git a/image/iterable_chunked_file.py b/openstack/image/iterable_chunked_file.py
similarity index 100%
rename from image/iterable_chunked_file.py
rename to openstack/image/iterable_chunked_file.py
diff --git a/message/v2/__init__.py b/openstack/image/v1/__init__.py
similarity index 100%
rename from message/v2/__init__.py
rename to openstack/image/v1/__init__.py
diff --git a/image/v1/__pycache__/__init__.cpython-310.pyc b/openstack/image/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from image/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/image/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/image/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/image/v1/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from image/v1/__pycache__/_proxy.cpython-310.pyc
rename to openstack/image/v1/__pycache__/_proxy.cpython-310.pyc
diff --git a/image/v1/__pycache__/image.cpython-310.pyc b/openstack/image/v1/__pycache__/image.cpython-310.pyc
similarity index 100%
rename from image/v1/__pycache__/image.cpython-310.pyc
rename to openstack/image/v1/__pycache__/image.cpython-310.pyc
diff --git a/image/v1/_proxy.py b/openstack/image/v1/_proxy.py
similarity index 100%
rename from image/v1/_proxy.py
rename to openstack/image/v1/_proxy.py
diff --git a/image/v1/image.py b/openstack/image/v1/image.py
similarity index 100%
rename from image/v1/image.py
rename to openstack/image/v1/image.py
diff --git a/network/__init__.py b/openstack/image/v2/__init__.py
similarity index 100%
rename from network/__init__.py
rename to openstack/image/v2/__init__.py
diff --git a/image/v2/__pycache__/__init__.cpython-310.pyc b/openstack/image/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from image/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/image/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/image/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/image/v2/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from image/v2/__pycache__/_proxy.cpython-310.pyc
rename to openstack/image/v2/__pycache__/_proxy.cpython-310.pyc
diff --git a/image/v2/__pycache__/cache.cpython-310.pyc b/openstack/image/v2/__pycache__/cache.cpython-310.pyc
similarity index 100%
rename from image/v2/__pycache__/cache.cpython-310.pyc
rename to openstack/image/v2/__pycache__/cache.cpython-310.pyc
diff --git a/image/v2/__pycache__/image.cpython-310.pyc b/openstack/image/v2/__pycache__/image.cpython-310.pyc
similarity index 100%
rename from image/v2/__pycache__/image.cpython-310.pyc
rename to openstack/image/v2/__pycache__/image.cpython-310.pyc
diff --git a/image/v2/__pycache__/member.cpython-310.pyc b/openstack/image/v2/__pycache__/member.cpython-310.pyc
similarity index 100%
rename from image/v2/__pycache__/member.cpython-310.pyc
rename to openstack/image/v2/__pycache__/member.cpython-310.pyc
diff --git a/image/v2/__pycache__/metadef_namespace.cpython-310.pyc b/openstack/image/v2/__pycache__/metadef_namespace.cpython-310.pyc
similarity index 100%
rename from image/v2/__pycache__/metadef_namespace.cpython-310.pyc
rename to openstack/image/v2/__pycache__/metadef_namespace.cpython-310.pyc
diff --git a/image/v2/__pycache__/metadef_object.cpython-310.pyc b/openstack/image/v2/__pycache__/metadef_object.cpython-310.pyc
similarity index 100%
rename from image/v2/__pycache__/metadef_object.cpython-310.pyc
rename to openstack/image/v2/__pycache__/metadef_object.cpython-310.pyc
diff --git a/image/v2/__pycache__/metadef_property.cpython-310.pyc b/openstack/image/v2/__pycache__/metadef_property.cpython-310.pyc
similarity index 100%
rename from image/v2/__pycache__/metadef_property.cpython-310.pyc
rename to openstack/image/v2/__pycache__/metadef_property.cpython-310.pyc
diff --git a/image/v2/__pycache__/metadef_resource_type.cpython-310.pyc b/openstack/image/v2/__pycache__/metadef_resource_type.cpython-310.pyc
similarity index 100%
rename from image/v2/__pycache__/metadef_resource_type.cpython-310.pyc
rename to openstack/image/v2/__pycache__/metadef_resource_type.cpython-310.pyc
diff --git a/image/v2/__pycache__/metadef_schema.cpython-310.pyc b/openstack/image/v2/__pycache__/metadef_schema.cpython-310.pyc
similarity index 100%
rename from image/v2/__pycache__/metadef_schema.cpython-310.pyc
rename to openstack/image/v2/__pycache__/metadef_schema.cpython-310.pyc
diff --git a/image/v2/__pycache__/schema.cpython-310.pyc b/openstack/image/v2/__pycache__/schema.cpython-310.pyc
similarity index 100%
rename from image/v2/__pycache__/schema.cpython-310.pyc
rename to openstack/image/v2/__pycache__/schema.cpython-310.pyc
diff --git a/image/v2/__pycache__/service_info.cpython-310.pyc b/openstack/image/v2/__pycache__/service_info.cpython-310.pyc
similarity index 100%
rename from image/v2/__pycache__/service_info.cpython-310.pyc
rename to openstack/image/v2/__pycache__/service_info.cpython-310.pyc
diff --git a/image/v2/__pycache__/task.cpython-310.pyc b/openstack/image/v2/__pycache__/task.cpython-310.pyc
similarity index 100%
rename from image/v2/__pycache__/task.cpython-310.pyc
rename to openstack/image/v2/__pycache__/task.cpython-310.pyc
diff --git a/image/v2/_proxy.py b/openstack/image/v2/_proxy.py
similarity index 100%
rename from image/v2/_proxy.py
rename to openstack/image/v2/_proxy.py
diff --git a/image/v2/cache.py b/openstack/image/v2/cache.py
similarity index 100%
rename from image/v2/cache.py
rename to openstack/image/v2/cache.py
diff --git a/image/v2/image.py b/openstack/image/v2/image.py
similarity index 100%
rename from image/v2/image.py
rename to openstack/image/v2/image.py
diff --git a/image/v2/member.py b/openstack/image/v2/member.py
similarity index 100%
rename from image/v2/member.py
rename to openstack/image/v2/member.py
diff --git a/image/v2/metadef_namespace.py b/openstack/image/v2/metadef_namespace.py
similarity index 100%
rename from image/v2/metadef_namespace.py
rename to openstack/image/v2/metadef_namespace.py
diff --git a/image/v2/metadef_object.py b/openstack/image/v2/metadef_object.py
similarity index 100%
rename from image/v2/metadef_object.py
rename to openstack/image/v2/metadef_object.py
diff --git a/image/v2/metadef_property.py b/openstack/image/v2/metadef_property.py
similarity index 100%
rename from image/v2/metadef_property.py
rename to openstack/image/v2/metadef_property.py
diff --git a/image/v2/metadef_resource_type.py b/openstack/image/v2/metadef_resource_type.py
similarity index 100%
rename from image/v2/metadef_resource_type.py
rename to openstack/image/v2/metadef_resource_type.py
diff --git a/image/v2/metadef_schema.py b/openstack/image/v2/metadef_schema.py
similarity index 100%
rename from image/v2/metadef_schema.py
rename to openstack/image/v2/metadef_schema.py
diff --git a/image/v2/schema.py b/openstack/image/v2/schema.py
similarity index 100%
rename from image/v2/schema.py
rename to openstack/image/v2/schema.py
diff --git a/image/v2/service_info.py b/openstack/image/v2/service_info.py
similarity index 100%
rename from image/v2/service_info.py
rename to openstack/image/v2/service_info.py
diff --git a/image/v2/task.py b/openstack/image/v2/task.py
similarity index 100%
rename from image/v2/task.py
rename to openstack/image/v2/task.py
diff --git a/network/v2/__init__.py b/openstack/instance_ha/__init__.py
similarity index 100%
rename from network/v2/__init__.py
rename to openstack/instance_ha/__init__.py
diff --git a/instance_ha/__pycache__/__init__.cpython-310.pyc b/openstack/instance_ha/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from instance_ha/__pycache__/__init__.cpython-310.pyc
rename to openstack/instance_ha/__pycache__/__init__.cpython-310.pyc
diff --git a/instance_ha/__pycache__/instance_ha_service.cpython-310.pyc b/openstack/instance_ha/__pycache__/instance_ha_service.cpython-310.pyc
similarity index 100%
rename from instance_ha/__pycache__/instance_ha_service.cpython-310.pyc
rename to openstack/instance_ha/__pycache__/instance_ha_service.cpython-310.pyc
diff --git a/instance_ha/instance_ha_service.py b/openstack/instance_ha/instance_ha_service.py
similarity index 100%
rename from instance_ha/instance_ha_service.py
rename to openstack/instance_ha/instance_ha_service.py
diff --git a/object_store/__init__.py b/openstack/instance_ha/v1/__init__.py
similarity index 100%
rename from object_store/__init__.py
rename to openstack/instance_ha/v1/__init__.py
diff --git a/instance_ha/v1/__pycache__/__init__.cpython-310.pyc b/openstack/instance_ha/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from instance_ha/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/instance_ha/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/instance_ha/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/instance_ha/v1/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from instance_ha/v1/__pycache__/_proxy.cpython-310.pyc
rename to openstack/instance_ha/v1/__pycache__/_proxy.cpython-310.pyc
diff --git a/instance_ha/v1/__pycache__/host.cpython-310.pyc b/openstack/instance_ha/v1/__pycache__/host.cpython-310.pyc
similarity index 100%
rename from instance_ha/v1/__pycache__/host.cpython-310.pyc
rename to openstack/instance_ha/v1/__pycache__/host.cpython-310.pyc
diff --git a/instance_ha/v1/__pycache__/notification.cpython-310.pyc b/openstack/instance_ha/v1/__pycache__/notification.cpython-310.pyc
similarity index 100%
rename from instance_ha/v1/__pycache__/notification.cpython-310.pyc
rename to openstack/instance_ha/v1/__pycache__/notification.cpython-310.pyc
diff --git a/instance_ha/v1/__pycache__/segment.cpython-310.pyc b/openstack/instance_ha/v1/__pycache__/segment.cpython-310.pyc
similarity index 100%
rename from instance_ha/v1/__pycache__/segment.cpython-310.pyc
rename to openstack/instance_ha/v1/__pycache__/segment.cpython-310.pyc
diff --git a/instance_ha/v1/__pycache__/vmove.cpython-310.pyc b/openstack/instance_ha/v1/__pycache__/vmove.cpython-310.pyc
similarity index 100%
rename from instance_ha/v1/__pycache__/vmove.cpython-310.pyc
rename to openstack/instance_ha/v1/__pycache__/vmove.cpython-310.pyc
diff --git a/instance_ha/v1/_proxy.py b/openstack/instance_ha/v1/_proxy.py
similarity index 100%
rename from instance_ha/v1/_proxy.py
rename to openstack/instance_ha/v1/_proxy.py
diff --git a/instance_ha/v1/host.py b/openstack/instance_ha/v1/host.py
similarity index 100%
rename from instance_ha/v1/host.py
rename to openstack/instance_ha/v1/host.py
diff --git a/instance_ha/v1/notification.py b/openstack/instance_ha/v1/notification.py
similarity index 100%
rename from instance_ha/v1/notification.py
rename to openstack/instance_ha/v1/notification.py
diff --git a/instance_ha/v1/segment.py b/openstack/instance_ha/v1/segment.py
similarity index 100%
rename from instance_ha/v1/segment.py
rename to openstack/instance_ha/v1/segment.py
diff --git a/instance_ha/v1/vmove.py b/openstack/instance_ha/v1/vmove.py
similarity index 100%
rename from instance_ha/v1/vmove.py
rename to openstack/instance_ha/v1/vmove.py
diff --git a/object_store/v1/__init__.py b/openstack/key_manager/__init__.py
similarity index 100%
rename from object_store/v1/__init__.py
rename to openstack/key_manager/__init__.py
diff --git a/key_manager/__pycache__/__init__.cpython-310.pyc b/openstack/key_manager/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from key_manager/__pycache__/__init__.cpython-310.pyc
rename to openstack/key_manager/__pycache__/__init__.cpython-310.pyc
diff --git a/key_manager/__pycache__/key_manager_service.cpython-310.pyc b/openstack/key_manager/__pycache__/key_manager_service.cpython-310.pyc
similarity index 100%
rename from key_manager/__pycache__/key_manager_service.cpython-310.pyc
rename to openstack/key_manager/__pycache__/key_manager_service.cpython-310.pyc
diff --git a/key_manager/key_manager_service.py b/openstack/key_manager/key_manager_service.py
similarity index 100%
rename from key_manager/key_manager_service.py
rename to openstack/key_manager/key_manager_service.py
diff --git a/orchestration/__init__.py b/openstack/key_manager/v1/__init__.py
similarity index 100%
rename from orchestration/__init__.py
rename to openstack/key_manager/v1/__init__.py
diff --git a/key_manager/v1/__pycache__/__init__.cpython-310.pyc b/openstack/key_manager/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from key_manager/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/key_manager/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/key_manager/v1/__pycache__/_format.cpython-310.pyc b/openstack/key_manager/v1/__pycache__/_format.cpython-310.pyc
similarity index 100%
rename from key_manager/v1/__pycache__/_format.cpython-310.pyc
rename to openstack/key_manager/v1/__pycache__/_format.cpython-310.pyc
diff --git a/key_manager/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/key_manager/v1/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from key_manager/v1/__pycache__/_proxy.cpython-310.pyc
rename to openstack/key_manager/v1/__pycache__/_proxy.cpython-310.pyc
diff --git a/key_manager/v1/__pycache__/container.cpython-310.pyc b/openstack/key_manager/v1/__pycache__/container.cpython-310.pyc
similarity index 100%
rename from key_manager/v1/__pycache__/container.cpython-310.pyc
rename to openstack/key_manager/v1/__pycache__/container.cpython-310.pyc
diff --git a/key_manager/v1/__pycache__/order.cpython-310.pyc b/openstack/key_manager/v1/__pycache__/order.cpython-310.pyc
similarity index 100%
rename from key_manager/v1/__pycache__/order.cpython-310.pyc
rename to openstack/key_manager/v1/__pycache__/order.cpython-310.pyc
diff --git a/key_manager/v1/__pycache__/secret.cpython-310.pyc b/openstack/key_manager/v1/__pycache__/secret.cpython-310.pyc
similarity index 100%
rename from key_manager/v1/__pycache__/secret.cpython-310.pyc
rename to openstack/key_manager/v1/__pycache__/secret.cpython-310.pyc
diff --git a/key_manager/v1/_format.py b/openstack/key_manager/v1/_format.py
similarity index 100%
rename from key_manager/v1/_format.py
rename to openstack/key_manager/v1/_format.py
diff --git a/key_manager/v1/_proxy.py b/openstack/key_manager/v1/_proxy.py
similarity index 100%
rename from key_manager/v1/_proxy.py
rename to openstack/key_manager/v1/_proxy.py
diff --git a/key_manager/v1/container.py b/openstack/key_manager/v1/container.py
similarity index 100%
rename from key_manager/v1/container.py
rename to openstack/key_manager/v1/container.py
diff --git a/key_manager/v1/order.py b/openstack/key_manager/v1/order.py
similarity index 100%
rename from key_manager/v1/order.py
rename to openstack/key_manager/v1/order.py
diff --git a/key_manager/v1/secret.py b/openstack/key_manager/v1/secret.py
similarity index 100%
rename from key_manager/v1/secret.py
rename to openstack/key_manager/v1/secret.py
diff --git a/orchestration/util/__init__.py b/openstack/load_balancer/__init__.py
similarity index 100%
rename from orchestration/util/__init__.py
rename to openstack/load_balancer/__init__.py
diff --git a/load_balancer/__pycache__/__init__.cpython-310.pyc b/openstack/load_balancer/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from load_balancer/__pycache__/__init__.cpython-310.pyc
rename to openstack/load_balancer/__pycache__/__init__.cpython-310.pyc
diff --git a/load_balancer/__pycache__/load_balancer_service.cpython-310.pyc b/openstack/load_balancer/__pycache__/load_balancer_service.cpython-310.pyc
similarity index 100%
rename from load_balancer/__pycache__/load_balancer_service.cpython-310.pyc
rename to openstack/load_balancer/__pycache__/load_balancer_service.cpython-310.pyc
diff --git a/load_balancer/__pycache__/version.cpython-310.pyc b/openstack/load_balancer/__pycache__/version.cpython-310.pyc
similarity index 100%
rename from load_balancer/__pycache__/version.cpython-310.pyc
rename to openstack/load_balancer/__pycache__/version.cpython-310.pyc
diff --git a/load_balancer/load_balancer_service.py b/openstack/load_balancer/load_balancer_service.py
similarity index 100%
rename from load_balancer/load_balancer_service.py
rename to openstack/load_balancer/load_balancer_service.py
diff --git a/orchestration/v1/__init__.py b/openstack/load_balancer/v2/__init__.py
similarity index 100%
rename from orchestration/v1/__init__.py
rename to openstack/load_balancer/v2/__init__.py
diff --git a/load_balancer/v2/__pycache__/__init__.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/load_balancer/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/_proxy.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/_proxy.cpython-310.pyc
diff --git a/load_balancer/v2/__pycache__/amphora.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/amphora.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/amphora.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/amphora.cpython-310.pyc
diff --git a/load_balancer/v2/__pycache__/availability_zone.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/availability_zone.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/availability_zone.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/availability_zone.cpython-310.pyc
diff --git a/load_balancer/v2/__pycache__/availability_zone_profile.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/availability_zone_profile.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/availability_zone_profile.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/availability_zone_profile.cpython-310.pyc
diff --git a/load_balancer/v2/__pycache__/flavor.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/flavor.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/flavor.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/flavor.cpython-310.pyc
diff --git a/load_balancer/v2/__pycache__/flavor_profile.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/flavor_profile.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/flavor_profile.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/flavor_profile.cpython-310.pyc
diff --git a/load_balancer/v2/__pycache__/health_monitor.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/health_monitor.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/health_monitor.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/health_monitor.cpython-310.pyc
diff --git a/load_balancer/v2/__pycache__/l7_policy.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/l7_policy.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/l7_policy.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/l7_policy.cpython-310.pyc
diff --git a/load_balancer/v2/__pycache__/l7_rule.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/l7_rule.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/l7_rule.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/l7_rule.cpython-310.pyc
diff --git a/load_balancer/v2/__pycache__/listener.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/listener.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/listener.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/listener.cpython-310.pyc
diff --git a/load_balancer/v2/__pycache__/load_balancer.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/load_balancer.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/load_balancer.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/load_balancer.cpython-310.pyc
diff --git a/load_balancer/v2/__pycache__/member.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/member.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/member.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/member.cpython-310.pyc
diff --git a/load_balancer/v2/__pycache__/pool.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/pool.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/pool.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/pool.cpython-310.pyc
diff --git a/load_balancer/v2/__pycache__/provider.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/provider.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/provider.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/provider.cpython-310.pyc
diff --git a/load_balancer/v2/__pycache__/quota.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/quota.cpython-310.pyc
similarity index 100%
rename from load_balancer/v2/__pycache__/quota.cpython-310.pyc
rename to openstack/load_balancer/v2/__pycache__/quota.cpython-310.pyc
diff --git a/load_balancer/v2/_proxy.py b/openstack/load_balancer/v2/_proxy.py
similarity index 100%
rename from load_balancer/v2/_proxy.py
rename to openstack/load_balancer/v2/_proxy.py
diff --git a/load_balancer/v2/amphora.py b/openstack/load_balancer/v2/amphora.py
similarity index 100%
rename from load_balancer/v2/amphora.py
rename to openstack/load_balancer/v2/amphora.py
diff --git a/load_balancer/v2/availability_zone.py b/openstack/load_balancer/v2/availability_zone.py
similarity index 100%
rename from load_balancer/v2/availability_zone.py
rename to openstack/load_balancer/v2/availability_zone.py
diff --git a/load_balancer/v2/availability_zone_profile.py b/openstack/load_balancer/v2/availability_zone_profile.py
similarity index 100%
rename from load_balancer/v2/availability_zone_profile.py
rename to openstack/load_balancer/v2/availability_zone_profile.py
diff --git a/load_balancer/v2/flavor.py b/openstack/load_balancer/v2/flavor.py
similarity index 100%
rename from load_balancer/v2/flavor.py
rename to openstack/load_balancer/v2/flavor.py
diff --git a/load_balancer/v2/flavor_profile.py b/openstack/load_balancer/v2/flavor_profile.py
similarity index 100%
rename from load_balancer/v2/flavor_profile.py
rename to openstack/load_balancer/v2/flavor_profile.py
diff --git a/load_balancer/v2/health_monitor.py b/openstack/load_balancer/v2/health_monitor.py
similarity index 100%
rename from load_balancer/v2/health_monitor.py
rename to openstack/load_balancer/v2/health_monitor.py
diff --git a/load_balancer/v2/l7_policy.py b/openstack/load_balancer/v2/l7_policy.py
similarity index 100%
rename from load_balancer/v2/l7_policy.py
rename to openstack/load_balancer/v2/l7_policy.py
diff --git a/load_balancer/v2/l7_rule.py b/openstack/load_balancer/v2/l7_rule.py
similarity index 100%
rename from load_balancer/v2/l7_rule.py
rename to openstack/load_balancer/v2/l7_rule.py
diff --git a/load_balancer/v2/listener.py b/openstack/load_balancer/v2/listener.py
similarity index 100%
rename from load_balancer/v2/listener.py
rename to openstack/load_balancer/v2/listener.py
diff --git a/load_balancer/v2/load_balancer.py b/openstack/load_balancer/v2/load_balancer.py
similarity index 100%
rename from load_balancer/v2/load_balancer.py
rename to openstack/load_balancer/v2/load_balancer.py
diff --git a/load_balancer/v2/member.py b/openstack/load_balancer/v2/member.py
similarity index 100%
rename from load_balancer/v2/member.py
rename to openstack/load_balancer/v2/member.py
diff --git a/load_balancer/v2/pool.py b/openstack/load_balancer/v2/pool.py
similarity index 100%
rename from load_balancer/v2/pool.py
rename to openstack/load_balancer/v2/pool.py
diff --git a/load_balancer/v2/provider.py b/openstack/load_balancer/v2/provider.py
similarity index 100%
rename from load_balancer/v2/provider.py
rename to openstack/load_balancer/v2/provider.py
diff --git a/load_balancer/v2/quota.py b/openstack/load_balancer/v2/quota.py
similarity index 100%
rename from load_balancer/v2/quota.py
rename to openstack/load_balancer/v2/quota.py
diff --git a/load_balancer/version.py b/openstack/load_balancer/version.py
similarity index 100%
rename from load_balancer/version.py
rename to openstack/load_balancer/version.py
diff --git a/placement/__init__.py b/openstack/message/__init__.py
similarity index 100%
rename from placement/__init__.py
rename to openstack/message/__init__.py
diff --git a/message/__pycache__/__init__.cpython-310.pyc b/openstack/message/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from message/__pycache__/__init__.cpython-310.pyc
rename to openstack/message/__pycache__/__init__.cpython-310.pyc
diff --git a/message/__pycache__/message_service.cpython-310.pyc b/openstack/message/__pycache__/message_service.cpython-310.pyc
similarity index 100%
rename from message/__pycache__/message_service.cpython-310.pyc
rename to openstack/message/__pycache__/message_service.cpython-310.pyc
diff --git a/message/__pycache__/version.cpython-310.pyc b/openstack/message/__pycache__/version.cpython-310.pyc
similarity index 100%
rename from message/__pycache__/version.cpython-310.pyc
rename to openstack/message/__pycache__/version.cpython-310.pyc
diff --git a/message/message_service.py b/openstack/message/message_service.py
similarity index 100%
rename from message/message_service.py
rename to openstack/message/message_service.py
diff --git a/placement/v1/__init__.py b/openstack/message/v2/__init__.py
similarity index 100%
rename from placement/v1/__init__.py
rename to openstack/message/v2/__init__.py
diff --git a/message/v2/__pycache__/__init__.cpython-310.pyc b/openstack/message/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from message/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/message/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/message/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/message/v2/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from message/v2/__pycache__/_proxy.cpython-310.pyc
rename to openstack/message/v2/__pycache__/_proxy.cpython-310.pyc
diff --git a/message/v2/__pycache__/claim.cpython-310.pyc b/openstack/message/v2/__pycache__/claim.cpython-310.pyc
similarity index 100%
rename from message/v2/__pycache__/claim.cpython-310.pyc
rename to openstack/message/v2/__pycache__/claim.cpython-310.pyc
diff --git a/message/v2/__pycache__/message.cpython-310.pyc b/openstack/message/v2/__pycache__/message.cpython-310.pyc
similarity index 100%
rename from message/v2/__pycache__/message.cpython-310.pyc
rename to openstack/message/v2/__pycache__/message.cpython-310.pyc
diff --git a/message/v2/__pycache__/queue.cpython-310.pyc b/openstack/message/v2/__pycache__/queue.cpython-310.pyc
similarity index 100%
rename from message/v2/__pycache__/queue.cpython-310.pyc
rename to openstack/message/v2/__pycache__/queue.cpython-310.pyc
diff --git a/message/v2/__pycache__/subscription.cpython-310.pyc b/openstack/message/v2/__pycache__/subscription.cpython-310.pyc
similarity index 100%
rename from message/v2/__pycache__/subscription.cpython-310.pyc
rename to openstack/message/v2/__pycache__/subscription.cpython-310.pyc
diff --git a/message/v2/_proxy.py b/openstack/message/v2/_proxy.py
similarity index 100%
rename from message/v2/_proxy.py
rename to openstack/message/v2/_proxy.py
diff --git a/message/v2/claim.py b/openstack/message/v2/claim.py
similarity index 100%
rename from message/v2/claim.py
rename to openstack/message/v2/claim.py
diff --git a/message/v2/message.py b/openstack/message/v2/message.py
similarity index 100%
rename from message/v2/message.py
rename to openstack/message/v2/message.py
diff --git a/message/v2/queue.py b/openstack/message/v2/queue.py
similarity index 100%
rename from message/v2/queue.py
rename to openstack/message/v2/queue.py
diff --git a/message/v2/subscription.py b/openstack/message/v2/subscription.py
similarity index 100%
rename from message/v2/subscription.py
rename to openstack/message/v2/subscription.py
diff --git a/message/version.py b/openstack/message/version.py
similarity index 100%
rename from message/version.py
rename to openstack/message/version.py
diff --git a/shared_file_system/__init__.py b/openstack/network/__init__.py
similarity index 100%
rename from shared_file_system/__init__.py
rename to openstack/network/__init__.py
diff --git a/network/__pycache__/__init__.cpython-310.pyc b/openstack/network/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from network/__pycache__/__init__.cpython-310.pyc
rename to openstack/network/__pycache__/__init__.cpython-310.pyc
diff --git a/network/__pycache__/network_service.cpython-310.pyc b/openstack/network/__pycache__/network_service.cpython-310.pyc
similarity index 100%
rename from network/__pycache__/network_service.cpython-310.pyc
rename to openstack/network/__pycache__/network_service.cpython-310.pyc
diff --git a/network/__pycache__/version.cpython-310.pyc b/openstack/network/__pycache__/version.cpython-310.pyc
similarity index 100%
rename from network/__pycache__/version.cpython-310.pyc
rename to openstack/network/__pycache__/version.cpython-310.pyc
diff --git a/network/network_service.py b/openstack/network/network_service.py
similarity index 100%
rename from network/network_service.py
rename to openstack/network/network_service.py
diff --git a/shared_file_system/v2/__init__.py b/openstack/network/v2/__init__.py
similarity index 100%
rename from shared_file_system/v2/__init__.py
rename to openstack/network/v2/__init__.py
diff --git a/network/v2/__pycache__/__init__.cpython-310.pyc b/openstack/network/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/network/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/network/v2/__pycache__/_base.cpython-310.pyc b/openstack/network/v2/__pycache__/_base.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/_base.cpython-310.pyc
rename to openstack/network/v2/__pycache__/_base.cpython-310.pyc
diff --git a/network/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/network/v2/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/_proxy.cpython-310.pyc
rename to openstack/network/v2/__pycache__/_proxy.cpython-310.pyc
diff --git a/network/v2/__pycache__/address_group.cpython-310.pyc b/openstack/network/v2/__pycache__/address_group.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/address_group.cpython-310.pyc
rename to openstack/network/v2/__pycache__/address_group.cpython-310.pyc
diff --git a/network/v2/__pycache__/address_scope.cpython-310.pyc b/openstack/network/v2/__pycache__/address_scope.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/address_scope.cpython-310.pyc
rename to openstack/network/v2/__pycache__/address_scope.cpython-310.pyc
diff --git a/network/v2/__pycache__/agent.cpython-310.pyc b/openstack/network/v2/__pycache__/agent.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/agent.cpython-310.pyc
rename to openstack/network/v2/__pycache__/agent.cpython-310.pyc
diff --git a/network/v2/__pycache__/auto_allocated_topology.cpython-310.pyc b/openstack/network/v2/__pycache__/auto_allocated_topology.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/auto_allocated_topology.cpython-310.pyc
rename to openstack/network/v2/__pycache__/auto_allocated_topology.cpython-310.pyc
diff --git a/network/v2/__pycache__/availability_zone.cpython-310.pyc b/openstack/network/v2/__pycache__/availability_zone.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/availability_zone.cpython-310.pyc
rename to openstack/network/v2/__pycache__/availability_zone.cpython-310.pyc
diff --git a/network/v2/__pycache__/bgp_peer.cpython-310.pyc b/openstack/network/v2/__pycache__/bgp_peer.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/bgp_peer.cpython-310.pyc
rename to openstack/network/v2/__pycache__/bgp_peer.cpython-310.pyc
diff --git a/network/v2/__pycache__/bgp_speaker.cpython-310.pyc b/openstack/network/v2/__pycache__/bgp_speaker.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/bgp_speaker.cpython-310.pyc
rename to openstack/network/v2/__pycache__/bgp_speaker.cpython-310.pyc
diff --git a/network/v2/__pycache__/bgpvpn.cpython-310.pyc b/openstack/network/v2/__pycache__/bgpvpn.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/bgpvpn.cpython-310.pyc
rename to openstack/network/v2/__pycache__/bgpvpn.cpython-310.pyc
diff --git a/network/v2/__pycache__/bgpvpn_network_association.cpython-310.pyc b/openstack/network/v2/__pycache__/bgpvpn_network_association.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/bgpvpn_network_association.cpython-310.pyc
rename to openstack/network/v2/__pycache__/bgpvpn_network_association.cpython-310.pyc
diff --git a/network/v2/__pycache__/bgpvpn_port_association.cpython-310.pyc b/openstack/network/v2/__pycache__/bgpvpn_port_association.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/bgpvpn_port_association.cpython-310.pyc
rename to openstack/network/v2/__pycache__/bgpvpn_port_association.cpython-310.pyc
diff --git a/network/v2/__pycache__/bgpvpn_router_association.cpython-310.pyc b/openstack/network/v2/__pycache__/bgpvpn_router_association.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/bgpvpn_router_association.cpython-310.pyc
rename to openstack/network/v2/__pycache__/bgpvpn_router_association.cpython-310.pyc
diff --git a/network/v2/__pycache__/default_security_group_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/default_security_group_rule.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/default_security_group_rule.cpython-310.pyc
rename to openstack/network/v2/__pycache__/default_security_group_rule.cpython-310.pyc
diff --git a/network/v2/__pycache__/extension.cpython-310.pyc b/openstack/network/v2/__pycache__/extension.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/extension.cpython-310.pyc
rename to openstack/network/v2/__pycache__/extension.cpython-310.pyc
diff --git a/network/v2/__pycache__/firewall_group.cpython-310.pyc b/openstack/network/v2/__pycache__/firewall_group.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/firewall_group.cpython-310.pyc
rename to openstack/network/v2/__pycache__/firewall_group.cpython-310.pyc
diff --git a/network/v2/__pycache__/firewall_policy.cpython-310.pyc b/openstack/network/v2/__pycache__/firewall_policy.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/firewall_policy.cpython-310.pyc
rename to openstack/network/v2/__pycache__/firewall_policy.cpython-310.pyc
diff --git a/network/v2/__pycache__/firewall_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/firewall_rule.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/firewall_rule.cpython-310.pyc
rename to openstack/network/v2/__pycache__/firewall_rule.cpython-310.pyc
diff --git a/network/v2/__pycache__/flavor.cpython-310.pyc b/openstack/network/v2/__pycache__/flavor.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/flavor.cpython-310.pyc
rename to openstack/network/v2/__pycache__/flavor.cpython-310.pyc
diff --git a/network/v2/__pycache__/floating_ip.cpython-310.pyc b/openstack/network/v2/__pycache__/floating_ip.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/floating_ip.cpython-310.pyc
rename to openstack/network/v2/__pycache__/floating_ip.cpython-310.pyc
diff --git a/network/v2/__pycache__/health_monitor.cpython-310.pyc b/openstack/network/v2/__pycache__/health_monitor.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/health_monitor.cpython-310.pyc
rename to openstack/network/v2/__pycache__/health_monitor.cpython-310.pyc
diff --git a/network/v2/__pycache__/l3_conntrack_helper.cpython-310.pyc b/openstack/network/v2/__pycache__/l3_conntrack_helper.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/l3_conntrack_helper.cpython-310.pyc
rename to openstack/network/v2/__pycache__/l3_conntrack_helper.cpython-310.pyc
diff --git a/network/v2/__pycache__/listener.cpython-310.pyc b/openstack/network/v2/__pycache__/listener.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/listener.cpython-310.pyc
rename to openstack/network/v2/__pycache__/listener.cpython-310.pyc
diff --git a/network/v2/__pycache__/load_balancer.cpython-310.pyc b/openstack/network/v2/__pycache__/load_balancer.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/load_balancer.cpython-310.pyc
rename to openstack/network/v2/__pycache__/load_balancer.cpython-310.pyc
diff --git a/network/v2/__pycache__/local_ip.cpython-310.pyc b/openstack/network/v2/__pycache__/local_ip.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/local_ip.cpython-310.pyc
rename to openstack/network/v2/__pycache__/local_ip.cpython-310.pyc
diff --git a/network/v2/__pycache__/local_ip_association.cpython-310.pyc b/openstack/network/v2/__pycache__/local_ip_association.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/local_ip_association.cpython-310.pyc
rename to openstack/network/v2/__pycache__/local_ip_association.cpython-310.pyc
diff --git a/network/v2/__pycache__/metering_label.cpython-310.pyc b/openstack/network/v2/__pycache__/metering_label.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/metering_label.cpython-310.pyc
rename to openstack/network/v2/__pycache__/metering_label.cpython-310.pyc
diff --git a/network/v2/__pycache__/metering_label_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/metering_label_rule.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/metering_label_rule.cpython-310.pyc
rename to openstack/network/v2/__pycache__/metering_label_rule.cpython-310.pyc
diff --git a/network/v2/__pycache__/ndp_proxy.cpython-310.pyc b/openstack/network/v2/__pycache__/ndp_proxy.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/ndp_proxy.cpython-310.pyc
rename to openstack/network/v2/__pycache__/ndp_proxy.cpython-310.pyc
diff --git a/network/v2/__pycache__/network.cpython-310.pyc b/openstack/network/v2/__pycache__/network.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/network.cpython-310.pyc
rename to openstack/network/v2/__pycache__/network.cpython-310.pyc
diff --git a/network/v2/__pycache__/network_ip_availability.cpython-310.pyc b/openstack/network/v2/__pycache__/network_ip_availability.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/network_ip_availability.cpython-310.pyc
rename to openstack/network/v2/__pycache__/network_ip_availability.cpython-310.pyc
diff --git a/network/v2/__pycache__/network_segment_range.cpython-310.pyc b/openstack/network/v2/__pycache__/network_segment_range.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/network_segment_range.cpython-310.pyc
rename to openstack/network/v2/__pycache__/network_segment_range.cpython-310.pyc
diff --git a/network/v2/__pycache__/pool.cpython-310.pyc b/openstack/network/v2/__pycache__/pool.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/pool.cpython-310.pyc
rename to openstack/network/v2/__pycache__/pool.cpython-310.pyc
diff --git a/network/v2/__pycache__/pool_member.cpython-310.pyc b/openstack/network/v2/__pycache__/pool_member.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/pool_member.cpython-310.pyc
rename to openstack/network/v2/__pycache__/pool_member.cpython-310.pyc
diff --git a/network/v2/__pycache__/port.cpython-310.pyc b/openstack/network/v2/__pycache__/port.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/port.cpython-310.pyc
rename to openstack/network/v2/__pycache__/port.cpython-310.pyc
diff --git a/network/v2/__pycache__/port_forwarding.cpython-310.pyc b/openstack/network/v2/__pycache__/port_forwarding.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/port_forwarding.cpython-310.pyc
rename to openstack/network/v2/__pycache__/port_forwarding.cpython-310.pyc
diff --git a/network/v2/__pycache__/qos_bandwidth_limit_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/qos_bandwidth_limit_rule.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/qos_bandwidth_limit_rule.cpython-310.pyc
rename to openstack/network/v2/__pycache__/qos_bandwidth_limit_rule.cpython-310.pyc
diff --git a/network/v2/__pycache__/qos_dscp_marking_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/qos_dscp_marking_rule.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/qos_dscp_marking_rule.cpython-310.pyc
rename to openstack/network/v2/__pycache__/qos_dscp_marking_rule.cpython-310.pyc
diff --git a/network/v2/__pycache__/qos_minimum_bandwidth_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/qos_minimum_bandwidth_rule.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/qos_minimum_bandwidth_rule.cpython-310.pyc
rename to openstack/network/v2/__pycache__/qos_minimum_bandwidth_rule.cpython-310.pyc
diff --git a/network/v2/__pycache__/qos_minimum_packet_rate_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/qos_minimum_packet_rate_rule.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/qos_minimum_packet_rate_rule.cpython-310.pyc
rename to openstack/network/v2/__pycache__/qos_minimum_packet_rate_rule.cpython-310.pyc
diff --git a/network/v2/__pycache__/qos_policy.cpython-310.pyc b/openstack/network/v2/__pycache__/qos_policy.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/qos_policy.cpython-310.pyc
rename to openstack/network/v2/__pycache__/qos_policy.cpython-310.pyc
diff --git a/network/v2/__pycache__/qos_rule_type.cpython-310.pyc b/openstack/network/v2/__pycache__/qos_rule_type.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/qos_rule_type.cpython-310.pyc
rename to openstack/network/v2/__pycache__/qos_rule_type.cpython-310.pyc
diff --git a/network/v2/__pycache__/quota.cpython-310.pyc b/openstack/network/v2/__pycache__/quota.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/quota.cpython-310.pyc
rename to openstack/network/v2/__pycache__/quota.cpython-310.pyc
diff --git a/network/v2/__pycache__/rbac_policy.cpython-310.pyc b/openstack/network/v2/__pycache__/rbac_policy.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/rbac_policy.cpython-310.pyc
rename to openstack/network/v2/__pycache__/rbac_policy.cpython-310.pyc
diff --git a/network/v2/__pycache__/router.cpython-310.pyc b/openstack/network/v2/__pycache__/router.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/router.cpython-310.pyc
rename to openstack/network/v2/__pycache__/router.cpython-310.pyc
diff --git a/network/v2/__pycache__/security_group.cpython-310.pyc b/openstack/network/v2/__pycache__/security_group.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/security_group.cpython-310.pyc
rename to openstack/network/v2/__pycache__/security_group.cpython-310.pyc
diff --git a/network/v2/__pycache__/security_group_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/security_group_rule.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/security_group_rule.cpython-310.pyc
rename to openstack/network/v2/__pycache__/security_group_rule.cpython-310.pyc
diff --git a/network/v2/__pycache__/segment.cpython-310.pyc b/openstack/network/v2/__pycache__/segment.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/segment.cpython-310.pyc
rename to openstack/network/v2/__pycache__/segment.cpython-310.pyc
diff --git a/network/v2/__pycache__/service_profile.cpython-310.pyc b/openstack/network/v2/__pycache__/service_profile.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/service_profile.cpython-310.pyc
rename to openstack/network/v2/__pycache__/service_profile.cpython-310.pyc
diff --git a/network/v2/__pycache__/service_provider.cpython-310.pyc b/openstack/network/v2/__pycache__/service_provider.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/service_provider.cpython-310.pyc
rename to openstack/network/v2/__pycache__/service_provider.cpython-310.pyc
diff --git a/network/v2/__pycache__/sfc_flow_classifier.cpython-310.pyc b/openstack/network/v2/__pycache__/sfc_flow_classifier.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/sfc_flow_classifier.cpython-310.pyc
rename to openstack/network/v2/__pycache__/sfc_flow_classifier.cpython-310.pyc
diff --git a/network/v2/__pycache__/sfc_port_chain.cpython-310.pyc b/openstack/network/v2/__pycache__/sfc_port_chain.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/sfc_port_chain.cpython-310.pyc
rename to openstack/network/v2/__pycache__/sfc_port_chain.cpython-310.pyc
diff --git a/network/v2/__pycache__/sfc_port_pair.cpython-310.pyc b/openstack/network/v2/__pycache__/sfc_port_pair.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/sfc_port_pair.cpython-310.pyc
rename to openstack/network/v2/__pycache__/sfc_port_pair.cpython-310.pyc
diff --git a/network/v2/__pycache__/sfc_port_pair_group.cpython-310.pyc b/openstack/network/v2/__pycache__/sfc_port_pair_group.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/sfc_port_pair_group.cpython-310.pyc
rename to openstack/network/v2/__pycache__/sfc_port_pair_group.cpython-310.pyc
diff --git a/network/v2/__pycache__/sfc_service_graph.cpython-310.pyc b/openstack/network/v2/__pycache__/sfc_service_graph.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/sfc_service_graph.cpython-310.pyc
rename to openstack/network/v2/__pycache__/sfc_service_graph.cpython-310.pyc
diff --git a/network/v2/__pycache__/subnet.cpython-310.pyc b/openstack/network/v2/__pycache__/subnet.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/subnet.cpython-310.pyc
rename to openstack/network/v2/__pycache__/subnet.cpython-310.pyc
diff --git a/network/v2/__pycache__/subnet_pool.cpython-310.pyc b/openstack/network/v2/__pycache__/subnet_pool.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/subnet_pool.cpython-310.pyc
rename to openstack/network/v2/__pycache__/subnet_pool.cpython-310.pyc
diff --git a/network/v2/__pycache__/tap_flow.cpython-310.pyc b/openstack/network/v2/__pycache__/tap_flow.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/tap_flow.cpython-310.pyc
rename to openstack/network/v2/__pycache__/tap_flow.cpython-310.pyc
diff --git a/network/v2/__pycache__/tap_service.cpython-310.pyc b/openstack/network/v2/__pycache__/tap_service.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/tap_service.cpython-310.pyc
rename to openstack/network/v2/__pycache__/tap_service.cpython-310.pyc
diff --git a/network/v2/__pycache__/trunk.cpython-310.pyc b/openstack/network/v2/__pycache__/trunk.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/trunk.cpython-310.pyc
rename to openstack/network/v2/__pycache__/trunk.cpython-310.pyc
diff --git a/network/v2/__pycache__/vpn_endpoint_group.cpython-310.pyc b/openstack/network/v2/__pycache__/vpn_endpoint_group.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/vpn_endpoint_group.cpython-310.pyc
rename to openstack/network/v2/__pycache__/vpn_endpoint_group.cpython-310.pyc
diff --git a/network/v2/__pycache__/vpn_ike_policy.cpython-310.pyc b/openstack/network/v2/__pycache__/vpn_ike_policy.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/vpn_ike_policy.cpython-310.pyc
rename to openstack/network/v2/__pycache__/vpn_ike_policy.cpython-310.pyc
diff --git a/network/v2/__pycache__/vpn_ipsec_policy.cpython-310.pyc b/openstack/network/v2/__pycache__/vpn_ipsec_policy.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/vpn_ipsec_policy.cpython-310.pyc
rename to openstack/network/v2/__pycache__/vpn_ipsec_policy.cpython-310.pyc
diff --git a/network/v2/__pycache__/vpn_ipsec_site_connection.cpython-310.pyc b/openstack/network/v2/__pycache__/vpn_ipsec_site_connection.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/vpn_ipsec_site_connection.cpython-310.pyc
rename to openstack/network/v2/__pycache__/vpn_ipsec_site_connection.cpython-310.pyc
diff --git a/network/v2/__pycache__/vpn_service.cpython-310.pyc b/openstack/network/v2/__pycache__/vpn_service.cpython-310.pyc
similarity index 100%
rename from network/v2/__pycache__/vpn_service.cpython-310.pyc
rename to openstack/network/v2/__pycache__/vpn_service.cpython-310.pyc
diff --git a/network/v2/_base.py b/openstack/network/v2/_base.py
similarity index 100%
rename from network/v2/_base.py
rename to openstack/network/v2/_base.py
diff --git a/network/v2/_proxy.py b/openstack/network/v2/_proxy.py
similarity index 100%
rename from network/v2/_proxy.py
rename to openstack/network/v2/_proxy.py
diff --git a/network/v2/address_group.py b/openstack/network/v2/address_group.py
similarity index 100%
rename from network/v2/address_group.py
rename to openstack/network/v2/address_group.py
diff --git a/network/v2/address_scope.py b/openstack/network/v2/address_scope.py
similarity index 100%
rename from network/v2/address_scope.py
rename to openstack/network/v2/address_scope.py
diff --git a/network/v2/agent.py b/openstack/network/v2/agent.py
similarity index 100%
rename from network/v2/agent.py
rename to openstack/network/v2/agent.py
diff --git a/network/v2/auto_allocated_topology.py b/openstack/network/v2/auto_allocated_topology.py
similarity index 100%
rename from network/v2/auto_allocated_topology.py
rename to openstack/network/v2/auto_allocated_topology.py
diff --git a/network/v2/availability_zone.py b/openstack/network/v2/availability_zone.py
similarity index 100%
rename from network/v2/availability_zone.py
rename to openstack/network/v2/availability_zone.py
diff --git a/network/v2/bgp_peer.py b/openstack/network/v2/bgp_peer.py
similarity index 100%
rename from network/v2/bgp_peer.py
rename to openstack/network/v2/bgp_peer.py
diff --git a/network/v2/bgp_speaker.py b/openstack/network/v2/bgp_speaker.py
similarity index 100%
rename from network/v2/bgp_speaker.py
rename to openstack/network/v2/bgp_speaker.py
diff --git a/network/v2/bgpvpn.py b/openstack/network/v2/bgpvpn.py
similarity index 100%
rename from network/v2/bgpvpn.py
rename to openstack/network/v2/bgpvpn.py
diff --git a/network/v2/bgpvpn_network_association.py b/openstack/network/v2/bgpvpn_network_association.py
similarity index 100%
rename from network/v2/bgpvpn_network_association.py
rename to openstack/network/v2/bgpvpn_network_association.py
diff --git a/network/v2/bgpvpn_port_association.py b/openstack/network/v2/bgpvpn_port_association.py
similarity index 100%
rename from network/v2/bgpvpn_port_association.py
rename to openstack/network/v2/bgpvpn_port_association.py
diff --git a/network/v2/bgpvpn_router_association.py b/openstack/network/v2/bgpvpn_router_association.py
similarity index 100%
rename from network/v2/bgpvpn_router_association.py
rename to openstack/network/v2/bgpvpn_router_association.py
diff --git a/network/v2/default_security_group_rule.py b/openstack/network/v2/default_security_group_rule.py
similarity index 100%
rename from network/v2/default_security_group_rule.py
rename to openstack/network/v2/default_security_group_rule.py
diff --git a/network/v2/extension.py b/openstack/network/v2/extension.py
similarity index 100%
rename from network/v2/extension.py
rename to openstack/network/v2/extension.py
diff --git a/network/v2/firewall_group.py b/openstack/network/v2/firewall_group.py
similarity index 100%
rename from network/v2/firewall_group.py
rename to openstack/network/v2/firewall_group.py
diff --git a/network/v2/firewall_policy.py b/openstack/network/v2/firewall_policy.py
similarity index 100%
rename from network/v2/firewall_policy.py
rename to openstack/network/v2/firewall_policy.py
diff --git a/network/v2/firewall_rule.py b/openstack/network/v2/firewall_rule.py
similarity index 100%
rename from network/v2/firewall_rule.py
rename to openstack/network/v2/firewall_rule.py
diff --git a/network/v2/flavor.py b/openstack/network/v2/flavor.py
similarity index 100%
rename from network/v2/flavor.py
rename to openstack/network/v2/flavor.py
diff --git a/network/v2/floating_ip.py b/openstack/network/v2/floating_ip.py
similarity index 100%
rename from network/v2/floating_ip.py
rename to openstack/network/v2/floating_ip.py
diff --git a/network/v2/health_monitor.py b/openstack/network/v2/health_monitor.py
similarity index 100%
rename from network/v2/health_monitor.py
rename to openstack/network/v2/health_monitor.py
diff --git a/network/v2/l3_conntrack_helper.py b/openstack/network/v2/l3_conntrack_helper.py
similarity index 100%
rename from network/v2/l3_conntrack_helper.py
rename to openstack/network/v2/l3_conntrack_helper.py
diff --git a/network/v2/listener.py b/openstack/network/v2/listener.py
similarity index 100%
rename from network/v2/listener.py
rename to openstack/network/v2/listener.py
diff --git a/network/v2/load_balancer.py b/openstack/network/v2/load_balancer.py
similarity index 100%
rename from network/v2/load_balancer.py
rename to openstack/network/v2/load_balancer.py
diff --git a/network/v2/local_ip.py b/openstack/network/v2/local_ip.py
similarity index 100%
rename from network/v2/local_ip.py
rename to openstack/network/v2/local_ip.py
diff --git a/network/v2/local_ip_association.py b/openstack/network/v2/local_ip_association.py
similarity index 100%
rename from network/v2/local_ip_association.py
rename to openstack/network/v2/local_ip_association.py
diff --git a/network/v2/metering_label.py b/openstack/network/v2/metering_label.py
similarity index 100%
rename from network/v2/metering_label.py
rename to openstack/network/v2/metering_label.py
diff --git a/network/v2/metering_label_rule.py b/openstack/network/v2/metering_label_rule.py
similarity index 100%
rename from network/v2/metering_label_rule.py
rename to openstack/network/v2/metering_label_rule.py
diff --git a/network/v2/ndp_proxy.py b/openstack/network/v2/ndp_proxy.py
similarity index 100%
rename from network/v2/ndp_proxy.py
rename to openstack/network/v2/ndp_proxy.py
diff --git a/network/v2/network.py b/openstack/network/v2/network.py
similarity index 100%
rename from network/v2/network.py
rename to openstack/network/v2/network.py
diff --git a/network/v2/network_ip_availability.py b/openstack/network/v2/network_ip_availability.py
similarity index 100%
rename from network/v2/network_ip_availability.py
rename to openstack/network/v2/network_ip_availability.py
diff --git a/network/v2/network_segment_range.py b/openstack/network/v2/network_segment_range.py
similarity index 100%
rename from network/v2/network_segment_range.py
rename to openstack/network/v2/network_segment_range.py
diff --git a/network/v2/pool.py b/openstack/network/v2/pool.py
similarity index 100%
rename from network/v2/pool.py
rename to openstack/network/v2/pool.py
diff --git a/network/v2/pool_member.py b/openstack/network/v2/pool_member.py
similarity index 100%
rename from network/v2/pool_member.py
rename to openstack/network/v2/pool_member.py
diff --git a/network/v2/port.py b/openstack/network/v2/port.py
similarity index 100%
rename from network/v2/port.py
rename to openstack/network/v2/port.py
diff --git a/network/v2/port_forwarding.py b/openstack/network/v2/port_forwarding.py
similarity index 100%
rename from network/v2/port_forwarding.py
rename to openstack/network/v2/port_forwarding.py
diff --git a/network/v2/qos_bandwidth_limit_rule.py b/openstack/network/v2/qos_bandwidth_limit_rule.py
similarity index 100%
rename from network/v2/qos_bandwidth_limit_rule.py
rename to openstack/network/v2/qos_bandwidth_limit_rule.py
diff --git a/network/v2/qos_dscp_marking_rule.py b/openstack/network/v2/qos_dscp_marking_rule.py
similarity index 100%
rename from network/v2/qos_dscp_marking_rule.py
rename to openstack/network/v2/qos_dscp_marking_rule.py
diff --git a/network/v2/qos_minimum_bandwidth_rule.py b/openstack/network/v2/qos_minimum_bandwidth_rule.py
similarity index 100%
rename from network/v2/qos_minimum_bandwidth_rule.py
rename to openstack/network/v2/qos_minimum_bandwidth_rule.py
diff --git a/network/v2/qos_minimum_packet_rate_rule.py b/openstack/network/v2/qos_minimum_packet_rate_rule.py
similarity index 100%
rename from network/v2/qos_minimum_packet_rate_rule.py
rename to openstack/network/v2/qos_minimum_packet_rate_rule.py
diff --git a/network/v2/qos_policy.py b/openstack/network/v2/qos_policy.py
similarity index 100%
rename from network/v2/qos_policy.py
rename to openstack/network/v2/qos_policy.py
diff --git a/network/v2/qos_rule_type.py b/openstack/network/v2/qos_rule_type.py
similarity index 100%
rename from network/v2/qos_rule_type.py
rename to openstack/network/v2/qos_rule_type.py
diff --git a/network/v2/quota.py b/openstack/network/v2/quota.py
similarity index 100%
rename from network/v2/quota.py
rename to openstack/network/v2/quota.py
diff --git a/network/v2/rbac_policy.py b/openstack/network/v2/rbac_policy.py
similarity index 100%
rename from network/v2/rbac_policy.py
rename to openstack/network/v2/rbac_policy.py
diff --git a/network/v2/router.py b/openstack/network/v2/router.py
similarity index 100%
rename from network/v2/router.py
rename to openstack/network/v2/router.py
diff --git a/network/v2/security_group.py b/openstack/network/v2/security_group.py
similarity index 100%
rename from network/v2/security_group.py
rename to openstack/network/v2/security_group.py
diff --git a/network/v2/security_group_rule.py b/openstack/network/v2/security_group_rule.py
similarity index 100%
rename from network/v2/security_group_rule.py
rename to openstack/network/v2/security_group_rule.py
diff --git a/network/v2/segment.py b/openstack/network/v2/segment.py
similarity index 100%
rename from network/v2/segment.py
rename to openstack/network/v2/segment.py
diff --git a/network/v2/service_profile.py b/openstack/network/v2/service_profile.py
similarity index 100%
rename from network/v2/service_profile.py
rename to openstack/network/v2/service_profile.py
diff --git a/network/v2/service_provider.py b/openstack/network/v2/service_provider.py
similarity index 100%
rename from network/v2/service_provider.py
rename to openstack/network/v2/service_provider.py
diff --git a/network/v2/sfc_flow_classifier.py b/openstack/network/v2/sfc_flow_classifier.py
similarity index 100%
rename from network/v2/sfc_flow_classifier.py
rename to openstack/network/v2/sfc_flow_classifier.py
diff --git a/network/v2/sfc_port_chain.py b/openstack/network/v2/sfc_port_chain.py
similarity index 100%
rename from network/v2/sfc_port_chain.py
rename to openstack/network/v2/sfc_port_chain.py
diff --git a/network/v2/sfc_port_pair.py b/openstack/network/v2/sfc_port_pair.py
similarity index 100%
rename from network/v2/sfc_port_pair.py
rename to openstack/network/v2/sfc_port_pair.py
diff --git a/network/v2/sfc_port_pair_group.py b/openstack/network/v2/sfc_port_pair_group.py
similarity index 100%
rename from network/v2/sfc_port_pair_group.py
rename to openstack/network/v2/sfc_port_pair_group.py
diff --git a/network/v2/sfc_service_graph.py b/openstack/network/v2/sfc_service_graph.py
similarity index 100%
rename from network/v2/sfc_service_graph.py
rename to openstack/network/v2/sfc_service_graph.py
diff --git a/network/v2/subnet.py b/openstack/network/v2/subnet.py
similarity index 100%
rename from network/v2/subnet.py
rename to openstack/network/v2/subnet.py
diff --git a/network/v2/subnet_pool.py b/openstack/network/v2/subnet_pool.py
similarity index 100%
rename from network/v2/subnet_pool.py
rename to openstack/network/v2/subnet_pool.py
diff --git a/network/v2/tap_flow.py b/openstack/network/v2/tap_flow.py
similarity index 100%
rename from network/v2/tap_flow.py
rename to openstack/network/v2/tap_flow.py
diff --git a/network/v2/tap_service.py b/openstack/network/v2/tap_service.py
similarity index 100%
rename from network/v2/tap_service.py
rename to openstack/network/v2/tap_service.py
diff --git a/network/v2/trunk.py b/openstack/network/v2/trunk.py
similarity index 100%
rename from network/v2/trunk.py
rename to openstack/network/v2/trunk.py
diff --git a/network/v2/vpn_endpoint_group.py b/openstack/network/v2/vpn_endpoint_group.py
similarity index 100%
rename from network/v2/vpn_endpoint_group.py
rename to openstack/network/v2/vpn_endpoint_group.py
diff --git a/network/v2/vpn_ike_policy.py b/openstack/network/v2/vpn_ike_policy.py
similarity index 100%
rename from network/v2/vpn_ike_policy.py
rename to openstack/network/v2/vpn_ike_policy.py
diff --git a/network/v2/vpn_ipsec_policy.py b/openstack/network/v2/vpn_ipsec_policy.py
similarity index 100%
rename from network/v2/vpn_ipsec_policy.py
rename to openstack/network/v2/vpn_ipsec_policy.py
diff --git a/network/v2/vpn_ipsec_site_connection.py b/openstack/network/v2/vpn_ipsec_site_connection.py
similarity index 100%
rename from network/v2/vpn_ipsec_site_connection.py
rename to openstack/network/v2/vpn_ipsec_site_connection.py
diff --git a/network/v2/vpn_service.py b/openstack/network/v2/vpn_service.py
similarity index 100%
rename from network/v2/vpn_service.py
rename to openstack/network/v2/vpn_service.py
diff --git a/network/version.py b/openstack/network/version.py
similarity index 100%
rename from network/version.py
rename to openstack/network/version.py
diff --git a/test/__init__.py b/openstack/object_store/__init__.py
similarity index 100%
rename from test/__init__.py
rename to openstack/object_store/__init__.py
diff --git a/object_store/__pycache__/__init__.cpython-310.pyc b/openstack/object_store/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from object_store/__pycache__/__init__.cpython-310.pyc
rename to openstack/object_store/__pycache__/__init__.cpython-310.pyc
diff --git a/object_store/__pycache__/object_store_service.cpython-310.pyc b/openstack/object_store/__pycache__/object_store_service.cpython-310.pyc
similarity index 100%
rename from object_store/__pycache__/object_store_service.cpython-310.pyc
rename to openstack/object_store/__pycache__/object_store_service.cpython-310.pyc
diff --git a/object_store/object_store_service.py b/openstack/object_store/object_store_service.py
similarity index 100%
rename from object_store/object_store_service.py
rename to openstack/object_store/object_store_service.py
diff --git a/tests/__init__.py b/openstack/object_store/v1/__init__.py
similarity index 100%
rename from tests/__init__.py
rename to openstack/object_store/v1/__init__.py
diff --git a/object_store/v1/__pycache__/__init__.cpython-310.pyc b/openstack/object_store/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from object_store/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/object_store/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/object_store/v1/__pycache__/_base.cpython-310.pyc b/openstack/object_store/v1/__pycache__/_base.cpython-310.pyc
similarity index 100%
rename from object_store/v1/__pycache__/_base.cpython-310.pyc
rename to openstack/object_store/v1/__pycache__/_base.cpython-310.pyc
diff --git a/object_store/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/object_store/v1/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from object_store/v1/__pycache__/_proxy.cpython-310.pyc
rename to openstack/object_store/v1/__pycache__/_proxy.cpython-310.pyc
diff --git a/object_store/v1/__pycache__/account.cpython-310.pyc b/openstack/object_store/v1/__pycache__/account.cpython-310.pyc
similarity index 100%
rename from object_store/v1/__pycache__/account.cpython-310.pyc
rename to openstack/object_store/v1/__pycache__/account.cpython-310.pyc
diff --git a/object_store/v1/__pycache__/container.cpython-310.pyc b/openstack/object_store/v1/__pycache__/container.cpython-310.pyc
similarity index 100%
rename from object_store/v1/__pycache__/container.cpython-310.pyc
rename to openstack/object_store/v1/__pycache__/container.cpython-310.pyc
diff --git a/object_store/v1/__pycache__/info.cpython-310.pyc b/openstack/object_store/v1/__pycache__/info.cpython-310.pyc
similarity index 100%
rename from object_store/v1/__pycache__/info.cpython-310.pyc
rename to openstack/object_store/v1/__pycache__/info.cpython-310.pyc
diff --git a/object_store/v1/__pycache__/obj.cpython-310.pyc b/openstack/object_store/v1/__pycache__/obj.cpython-310.pyc
similarity index 100%
rename from object_store/v1/__pycache__/obj.cpython-310.pyc
rename to openstack/object_store/v1/__pycache__/obj.cpython-310.pyc
diff --git a/object_store/v1/_base.py b/openstack/object_store/v1/_base.py
similarity index 100%
rename from object_store/v1/_base.py
rename to openstack/object_store/v1/_base.py
diff --git a/object_store/v1/_proxy.py b/openstack/object_store/v1/_proxy.py
similarity index 100%
rename from object_store/v1/_proxy.py
rename to openstack/object_store/v1/_proxy.py
diff --git a/object_store/v1/account.py b/openstack/object_store/v1/account.py
similarity index 100%
rename from object_store/v1/account.py
rename to openstack/object_store/v1/account.py
diff --git a/object_store/v1/container.py b/openstack/object_store/v1/container.py
similarity index 100%
rename from object_store/v1/container.py
rename to openstack/object_store/v1/container.py
diff --git a/object_store/v1/info.py b/openstack/object_store/v1/info.py
similarity index 100%
rename from object_store/v1/info.py
rename to openstack/object_store/v1/info.py
diff --git a/object_store/v1/obj.py b/openstack/object_store/v1/obj.py
similarity index 100%
rename from object_store/v1/obj.py
rename to openstack/object_store/v1/obj.py
diff --git a/tests/functional/__init__.py b/openstack/orchestration/__init__.py
similarity index 100%
rename from tests/functional/__init__.py
rename to openstack/orchestration/__init__.py
diff --git a/orchestration/__pycache__/__init__.cpython-310.pyc b/openstack/orchestration/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from orchestration/__pycache__/__init__.cpython-310.pyc
rename to openstack/orchestration/__pycache__/__init__.cpython-310.pyc
diff --git a/orchestration/__pycache__/orchestration_service.cpython-310.pyc b/openstack/orchestration/__pycache__/orchestration_service.cpython-310.pyc
similarity index 100%
rename from orchestration/__pycache__/orchestration_service.cpython-310.pyc
rename to openstack/orchestration/__pycache__/orchestration_service.cpython-310.pyc
diff --git a/orchestration/__pycache__/version.cpython-310.pyc b/openstack/orchestration/__pycache__/version.cpython-310.pyc
similarity index 100%
rename from orchestration/__pycache__/version.cpython-310.pyc
rename to openstack/orchestration/__pycache__/version.cpython-310.pyc
diff --git a/orchestration/orchestration_service.py b/openstack/orchestration/orchestration_service.py
similarity index 100%
rename from orchestration/orchestration_service.py
rename to openstack/orchestration/orchestration_service.py
diff --git a/tests/functional/baremetal/__init__.py b/openstack/orchestration/util/__init__.py
similarity index 100%
rename from tests/functional/baremetal/__init__.py
rename to openstack/orchestration/util/__init__.py
diff --git a/orchestration/util/__pycache__/__init__.cpython-310.pyc b/openstack/orchestration/util/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from orchestration/util/__pycache__/__init__.cpython-310.pyc
rename to openstack/orchestration/util/__pycache__/__init__.cpython-310.pyc
diff --git a/orchestration/util/__pycache__/environment_format.cpython-310.pyc b/openstack/orchestration/util/__pycache__/environment_format.cpython-310.pyc
similarity index 100%
rename from orchestration/util/__pycache__/environment_format.cpython-310.pyc
rename to openstack/orchestration/util/__pycache__/environment_format.cpython-310.pyc
diff --git a/orchestration/util/__pycache__/event_utils.cpython-310.pyc b/openstack/orchestration/util/__pycache__/event_utils.cpython-310.pyc
similarity index 100%
rename from orchestration/util/__pycache__/event_utils.cpython-310.pyc
rename to openstack/orchestration/util/__pycache__/event_utils.cpython-310.pyc
diff --git a/orchestration/util/__pycache__/template_format.cpython-310.pyc b/openstack/orchestration/util/__pycache__/template_format.cpython-310.pyc
similarity index 100%
rename from orchestration/util/__pycache__/template_format.cpython-310.pyc
rename to openstack/orchestration/util/__pycache__/template_format.cpython-310.pyc
diff --git a/orchestration/util/__pycache__/template_utils.cpython-310.pyc b/openstack/orchestration/util/__pycache__/template_utils.cpython-310.pyc
similarity index 100%
rename from orchestration/util/__pycache__/template_utils.cpython-310.pyc
rename to openstack/orchestration/util/__pycache__/template_utils.cpython-310.pyc
diff --git a/orchestration/util/__pycache__/utils.cpython-310.pyc b/openstack/orchestration/util/__pycache__/utils.cpython-310.pyc
similarity index 100%
rename from orchestration/util/__pycache__/utils.cpython-310.pyc
rename to openstack/orchestration/util/__pycache__/utils.cpython-310.pyc
diff --git a/orchestration/util/environment_format.py b/openstack/orchestration/util/environment_format.py
similarity index 100%
rename from orchestration/util/environment_format.py
rename to openstack/orchestration/util/environment_format.py
diff --git a/orchestration/util/event_utils.py b/openstack/orchestration/util/event_utils.py
similarity index 100%
rename from orchestration/util/event_utils.py
rename to openstack/orchestration/util/event_utils.py
diff --git a/orchestration/util/template_format.py b/openstack/orchestration/util/template_format.py
similarity index 100%
rename from orchestration/util/template_format.py
rename to openstack/orchestration/util/template_format.py
diff --git a/orchestration/util/template_utils.py b/openstack/orchestration/util/template_utils.py
similarity index 100%
rename from orchestration/util/template_utils.py
rename to openstack/orchestration/util/template_utils.py
diff --git a/orchestration/util/utils.py b/openstack/orchestration/util/utils.py
similarity index 100%
rename from orchestration/util/utils.py
rename to openstack/orchestration/util/utils.py
diff --git a/tests/functional/block_storage/__init__.py b/openstack/orchestration/v1/__init__.py
similarity index 100%
rename from tests/functional/block_storage/__init__.py
rename to openstack/orchestration/v1/__init__.py
diff --git a/orchestration/v1/__pycache__/__init__.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from orchestration/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/orchestration/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/orchestration/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from orchestration/v1/__pycache__/_proxy.cpython-310.pyc
rename to openstack/orchestration/v1/__pycache__/_proxy.cpython-310.pyc
diff --git a/orchestration/v1/__pycache__/resource.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/resource.cpython-310.pyc
similarity index 100%
rename from orchestration/v1/__pycache__/resource.cpython-310.pyc
rename to openstack/orchestration/v1/__pycache__/resource.cpython-310.pyc
diff --git a/orchestration/v1/__pycache__/software_config.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/software_config.cpython-310.pyc
similarity index 100%
rename from orchestration/v1/__pycache__/software_config.cpython-310.pyc
rename to openstack/orchestration/v1/__pycache__/software_config.cpython-310.pyc
diff --git a/orchestration/v1/__pycache__/software_deployment.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/software_deployment.cpython-310.pyc
similarity index 100%
rename from orchestration/v1/__pycache__/software_deployment.cpython-310.pyc
rename to openstack/orchestration/v1/__pycache__/software_deployment.cpython-310.pyc
diff --git a/orchestration/v1/__pycache__/stack.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/stack.cpython-310.pyc
similarity index 100%
rename from orchestration/v1/__pycache__/stack.cpython-310.pyc
rename to openstack/orchestration/v1/__pycache__/stack.cpython-310.pyc
diff --git a/orchestration/v1/__pycache__/stack_environment.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/stack_environment.cpython-310.pyc
similarity index 100%
rename from orchestration/v1/__pycache__/stack_environment.cpython-310.pyc
rename to openstack/orchestration/v1/__pycache__/stack_environment.cpython-310.pyc
diff --git a/orchestration/v1/__pycache__/stack_event.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/stack_event.cpython-310.pyc
similarity index 100%
rename from orchestration/v1/__pycache__/stack_event.cpython-310.pyc
rename to openstack/orchestration/v1/__pycache__/stack_event.cpython-310.pyc
diff --git a/orchestration/v1/__pycache__/stack_files.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/stack_files.cpython-310.pyc
similarity index 100%
rename from orchestration/v1/__pycache__/stack_files.cpython-310.pyc
rename to openstack/orchestration/v1/__pycache__/stack_files.cpython-310.pyc
diff --git a/orchestration/v1/__pycache__/stack_template.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/stack_template.cpython-310.pyc
similarity index 100%
rename from orchestration/v1/__pycache__/stack_template.cpython-310.pyc
rename to openstack/orchestration/v1/__pycache__/stack_template.cpython-310.pyc
diff --git a/orchestration/v1/__pycache__/template.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/template.cpython-310.pyc
similarity index 100%
rename from orchestration/v1/__pycache__/template.cpython-310.pyc
rename to openstack/orchestration/v1/__pycache__/template.cpython-310.pyc
diff --git a/orchestration/v1/_proxy.py b/openstack/orchestration/v1/_proxy.py
similarity index 100%
rename from orchestration/v1/_proxy.py
rename to openstack/orchestration/v1/_proxy.py
diff --git a/orchestration/v1/resource.py b/openstack/orchestration/v1/resource.py
similarity index 100%
rename from orchestration/v1/resource.py
rename to openstack/orchestration/v1/resource.py
diff --git a/orchestration/v1/software_config.py b/openstack/orchestration/v1/software_config.py
similarity index 100%
rename from orchestration/v1/software_config.py
rename to openstack/orchestration/v1/software_config.py
diff --git a/orchestration/v1/software_deployment.py b/openstack/orchestration/v1/software_deployment.py
similarity index 100%
rename from orchestration/v1/software_deployment.py
rename to openstack/orchestration/v1/software_deployment.py
diff --git a/orchestration/v1/stack.py b/openstack/orchestration/v1/stack.py
similarity index 100%
rename from orchestration/v1/stack.py
rename to openstack/orchestration/v1/stack.py
diff --git a/orchestration/v1/stack_environment.py b/openstack/orchestration/v1/stack_environment.py
similarity index 100%
rename from orchestration/v1/stack_environment.py
rename to openstack/orchestration/v1/stack_environment.py
diff --git a/orchestration/v1/stack_event.py b/openstack/orchestration/v1/stack_event.py
similarity index 100%
rename from orchestration/v1/stack_event.py
rename to openstack/orchestration/v1/stack_event.py
diff --git a/orchestration/v1/stack_files.py b/openstack/orchestration/v1/stack_files.py
similarity index 100%
rename from orchestration/v1/stack_files.py
rename to openstack/orchestration/v1/stack_files.py
diff --git a/orchestration/v1/stack_template.py b/openstack/orchestration/v1/stack_template.py
similarity index 100%
rename from orchestration/v1/stack_template.py
rename to openstack/orchestration/v1/stack_template.py
diff --git a/orchestration/v1/template.py b/openstack/orchestration/v1/template.py
similarity index 100%
rename from orchestration/v1/template.py
rename to openstack/orchestration/v1/template.py
diff --git a/orchestration/version.py b/openstack/orchestration/version.py
similarity index 100%
rename from orchestration/version.py
rename to openstack/orchestration/version.py
diff --git a/tests/functional/block_storage/v2/__init__.py b/openstack/placement/__init__.py
similarity index 100%
rename from tests/functional/block_storage/v2/__init__.py
rename to openstack/placement/__init__.py
diff --git a/placement/__pycache__/__init__.cpython-310.pyc b/openstack/placement/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from placement/__pycache__/__init__.cpython-310.pyc
rename to openstack/placement/__pycache__/__init__.cpython-310.pyc
diff --git a/placement/__pycache__/placement_service.cpython-310.pyc b/openstack/placement/__pycache__/placement_service.cpython-310.pyc
similarity index 100%
rename from placement/__pycache__/placement_service.cpython-310.pyc
rename to openstack/placement/__pycache__/placement_service.cpython-310.pyc
diff --git a/placement/placement_service.py b/openstack/placement/placement_service.py
similarity index 100%
rename from placement/placement_service.py
rename to openstack/placement/placement_service.py
diff --git a/tests/functional/block_storage/v3/__init__.py b/openstack/placement/v1/__init__.py
similarity index 100%
rename from tests/functional/block_storage/v3/__init__.py
rename to openstack/placement/v1/__init__.py
diff --git a/placement/v1/__pycache__/__init__.cpython-310.pyc b/openstack/placement/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from placement/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/placement/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/placement/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/placement/v1/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from placement/v1/__pycache__/_proxy.cpython-310.pyc
rename to openstack/placement/v1/__pycache__/_proxy.cpython-310.pyc
diff --git a/placement/v1/__pycache__/resource_class.cpython-310.pyc b/openstack/placement/v1/__pycache__/resource_class.cpython-310.pyc
similarity index 100%
rename from placement/v1/__pycache__/resource_class.cpython-310.pyc
rename to openstack/placement/v1/__pycache__/resource_class.cpython-310.pyc
diff --git a/placement/v1/__pycache__/resource_provider.cpython-310.pyc b/openstack/placement/v1/__pycache__/resource_provider.cpython-310.pyc
similarity index 100%
rename from placement/v1/__pycache__/resource_provider.cpython-310.pyc
rename to openstack/placement/v1/__pycache__/resource_provider.cpython-310.pyc
diff --git a/placement/v1/__pycache__/resource_provider_inventory.cpython-310.pyc b/openstack/placement/v1/__pycache__/resource_provider_inventory.cpython-310.pyc
similarity index 100%
rename from placement/v1/__pycache__/resource_provider_inventory.cpython-310.pyc
rename to openstack/placement/v1/__pycache__/resource_provider_inventory.cpython-310.pyc
diff --git a/placement/v1/__pycache__/trait.cpython-310.pyc b/openstack/placement/v1/__pycache__/trait.cpython-310.pyc
similarity index 100%
rename from placement/v1/__pycache__/trait.cpython-310.pyc
rename to openstack/placement/v1/__pycache__/trait.cpython-310.pyc
diff --git a/placement/v1/_proxy.py b/openstack/placement/v1/_proxy.py
similarity index 100%
rename from placement/v1/_proxy.py
rename to openstack/placement/v1/_proxy.py
diff --git a/placement/v1/resource_class.py b/openstack/placement/v1/resource_class.py
similarity index 100%
rename from placement/v1/resource_class.py
rename to openstack/placement/v1/resource_class.py
diff --git a/placement/v1/resource_provider.py b/openstack/placement/v1/resource_provider.py
similarity index 100%
rename from placement/v1/resource_provider.py
rename to openstack/placement/v1/resource_provider.py
diff --git a/placement/v1/resource_provider_inventory.py b/openstack/placement/v1/resource_provider_inventory.py
similarity index 100%
rename from placement/v1/resource_provider_inventory.py
rename to openstack/placement/v1/resource_provider_inventory.py
diff --git a/placement/v1/trait.py b/openstack/placement/v1/trait.py
similarity index 100%
rename from placement/v1/trait.py
rename to openstack/placement/v1/trait.py
diff --git a/proxy.py b/openstack/proxy.py
similarity index 100%
rename from proxy.py
rename to openstack/proxy.py
diff --git a/py.typed b/openstack/py.typed
similarity index 100%
rename from py.typed
rename to openstack/py.typed
diff --git a/resource.py b/openstack/resource.py
similarity index 100%
rename from resource.py
rename to openstack/resource.py
diff --git a/service_description.py b/openstack/service_description.py
similarity index 100%
rename from service_description.py
rename to openstack/service_description.py
diff --git a/tests/functional/cloud/__init__.py b/openstack/shared_file_system/__init__.py
similarity index 100%
rename from tests/functional/cloud/__init__.py
rename to openstack/shared_file_system/__init__.py
diff --git a/shared_file_system/__pycache__/__init__.cpython-310.pyc b/openstack/shared_file_system/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from shared_file_system/__pycache__/__init__.cpython-310.pyc
rename to openstack/shared_file_system/__pycache__/__init__.cpython-310.pyc
diff --git a/shared_file_system/__pycache__/shared_file_system_service.cpython-310.pyc b/openstack/shared_file_system/__pycache__/shared_file_system_service.cpython-310.pyc
similarity index 100%
rename from shared_file_system/__pycache__/shared_file_system_service.cpython-310.pyc
rename to openstack/shared_file_system/__pycache__/shared_file_system_service.cpython-310.pyc
diff --git a/shared_file_system/shared_file_system_service.py b/openstack/shared_file_system/shared_file_system_service.py
similarity index 100%
rename from shared_file_system/shared_file_system_service.py
rename to openstack/shared_file_system/shared_file_system_service.py
diff --git a/tests/functional/clustering/__init__.py b/openstack/shared_file_system/v2/__init__.py
similarity index 100%
rename from tests/functional/clustering/__init__.py
rename to openstack/shared_file_system/v2/__init__.py
diff --git a/shared_file_system/v2/__pycache__/__init__.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/shared_file_system/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/_proxy.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/_proxy.cpython-310.pyc
diff --git a/shared_file_system/v2/__pycache__/availability_zone.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/availability_zone.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/availability_zone.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/availability_zone.cpython-310.pyc
diff --git a/shared_file_system/v2/__pycache__/limit.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/limit.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/limit.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/limit.cpython-310.pyc
diff --git a/shared_file_system/v2/__pycache__/share.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/share.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/share.cpython-310.pyc
diff --git a/shared_file_system/v2/__pycache__/share_access_rule.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_access_rule.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/share_access_rule.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/share_access_rule.cpython-310.pyc
diff --git a/shared_file_system/v2/__pycache__/share_export_locations.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_export_locations.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/share_export_locations.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/share_export_locations.cpython-310.pyc
diff --git a/shared_file_system/v2/__pycache__/share_group.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_group.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/share_group.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/share_group.cpython-310.pyc
diff --git a/shared_file_system/v2/__pycache__/share_group_snapshot.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_group_snapshot.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/share_group_snapshot.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/share_group_snapshot.cpython-310.pyc
diff --git a/shared_file_system/v2/__pycache__/share_instance.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_instance.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/share_instance.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/share_instance.cpython-310.pyc
diff --git a/shared_file_system/v2/__pycache__/share_network.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_network.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/share_network.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/share_network.cpython-310.pyc
diff --git a/shared_file_system/v2/__pycache__/share_network_subnet.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_network_subnet.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/share_network_subnet.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/share_network_subnet.cpython-310.pyc
diff --git a/shared_file_system/v2/__pycache__/share_snapshot.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_snapshot.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/share_snapshot.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/share_snapshot.cpython-310.pyc
diff --git a/shared_file_system/v2/__pycache__/share_snapshot_instance.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_snapshot_instance.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/share_snapshot_instance.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/share_snapshot_instance.cpython-310.pyc
diff --git a/shared_file_system/v2/__pycache__/storage_pool.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/storage_pool.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/storage_pool.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/storage_pool.cpython-310.pyc
diff --git a/shared_file_system/v2/__pycache__/user_message.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/user_message.cpython-310.pyc
similarity index 100%
rename from shared_file_system/v2/__pycache__/user_message.cpython-310.pyc
rename to openstack/shared_file_system/v2/__pycache__/user_message.cpython-310.pyc
diff --git a/shared_file_system/v2/_proxy.py b/openstack/shared_file_system/v2/_proxy.py
similarity index 100%
rename from shared_file_system/v2/_proxy.py
rename to openstack/shared_file_system/v2/_proxy.py
diff --git a/shared_file_system/v2/availability_zone.py b/openstack/shared_file_system/v2/availability_zone.py
similarity index 100%
rename from shared_file_system/v2/availability_zone.py
rename to openstack/shared_file_system/v2/availability_zone.py
diff --git a/shared_file_system/v2/limit.py b/openstack/shared_file_system/v2/limit.py
similarity index 100%
rename from shared_file_system/v2/limit.py
rename to openstack/shared_file_system/v2/limit.py
diff --git a/shared_file_system/v2/share.py b/openstack/shared_file_system/v2/share.py
similarity index 100%
rename from shared_file_system/v2/share.py
rename to openstack/shared_file_system/v2/share.py
diff --git a/shared_file_system/v2/share_access_rule.py b/openstack/shared_file_system/v2/share_access_rule.py
similarity index 100%
rename from shared_file_system/v2/share_access_rule.py
rename to openstack/shared_file_system/v2/share_access_rule.py
diff --git a/shared_file_system/v2/share_export_locations.py b/openstack/shared_file_system/v2/share_export_locations.py
similarity index 100%
rename from shared_file_system/v2/share_export_locations.py
rename to openstack/shared_file_system/v2/share_export_locations.py
diff --git a/shared_file_system/v2/share_group.py b/openstack/shared_file_system/v2/share_group.py
similarity index 100%
rename from shared_file_system/v2/share_group.py
rename to openstack/shared_file_system/v2/share_group.py
diff --git a/shared_file_system/v2/share_group_snapshot.py b/openstack/shared_file_system/v2/share_group_snapshot.py
similarity index 100%
rename from shared_file_system/v2/share_group_snapshot.py
rename to openstack/shared_file_system/v2/share_group_snapshot.py
diff --git a/shared_file_system/v2/share_instance.py b/openstack/shared_file_system/v2/share_instance.py
similarity index 100%
rename from shared_file_system/v2/share_instance.py
rename to openstack/shared_file_system/v2/share_instance.py
diff --git a/shared_file_system/v2/share_network.py b/openstack/shared_file_system/v2/share_network.py
similarity index 100%
rename from shared_file_system/v2/share_network.py
rename to openstack/shared_file_system/v2/share_network.py
diff --git a/shared_file_system/v2/share_network_subnet.py b/openstack/shared_file_system/v2/share_network_subnet.py
similarity index 100%
rename from shared_file_system/v2/share_network_subnet.py
rename to openstack/shared_file_system/v2/share_network_subnet.py
diff --git a/shared_file_system/v2/share_snapshot.py b/openstack/shared_file_system/v2/share_snapshot.py
similarity index 100%
rename from shared_file_system/v2/share_snapshot.py
rename to openstack/shared_file_system/v2/share_snapshot.py
diff --git a/shared_file_system/v2/share_snapshot_instance.py b/openstack/shared_file_system/v2/share_snapshot_instance.py
similarity index 100%
rename from shared_file_system/v2/share_snapshot_instance.py
rename to openstack/shared_file_system/v2/share_snapshot_instance.py
diff --git a/shared_file_system/v2/storage_pool.py b/openstack/shared_file_system/v2/storage_pool.py
similarity index 100%
rename from shared_file_system/v2/storage_pool.py
rename to openstack/shared_file_system/v2/storage_pool.py
diff --git a/shared_file_system/v2/user_message.py b/openstack/shared_file_system/v2/user_message.py
similarity index 100%
rename from shared_file_system/v2/user_message.py
rename to openstack/shared_file_system/v2/user_message.py
diff --git a/tests/functional/compute/__init__.py b/openstack/test/__init__.py
similarity index 100%
rename from tests/functional/compute/__init__.py
rename to openstack/test/__init__.py
diff --git a/test/__pycache__/__init__.cpython-310.pyc b/openstack/test/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from test/__pycache__/__init__.cpython-310.pyc
rename to openstack/test/__pycache__/__init__.cpython-310.pyc
diff --git a/test/__pycache__/fakes.cpython-310.pyc b/openstack/test/__pycache__/fakes.cpython-310.pyc
similarity index 100%
rename from test/__pycache__/fakes.cpython-310.pyc
rename to openstack/test/__pycache__/fakes.cpython-310.pyc
diff --git a/test/fakes.py b/openstack/test/fakes.py
similarity index 100%
rename from test/fakes.py
rename to openstack/test/fakes.py
diff --git a/tests/README.rst b/openstack/tests/README.rst
similarity index 100%
rename from tests/README.rst
rename to openstack/tests/README.rst
diff --git a/tests/functional/compute/v2/__init__.py b/openstack/tests/__init__.py
similarity index 100%
rename from tests/functional/compute/v2/__init__.py
rename to openstack/tests/__init__.py
diff --git a/tests/__pycache__/__init__.cpython-310.pyc b/openstack/tests/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/__pycache__/base.cpython-310.pyc b/openstack/tests/__pycache__/base.cpython-310.pyc
similarity index 100%
rename from tests/__pycache__/base.cpython-310.pyc
rename to openstack/tests/__pycache__/base.cpython-310.pyc
diff --git a/tests/__pycache__/fakes.cpython-310.pyc b/openstack/tests/__pycache__/fakes.cpython-310.pyc
similarity index 100%
rename from tests/__pycache__/fakes.cpython-310.pyc
rename to openstack/tests/__pycache__/fakes.cpython-310.pyc
diff --git a/tests/__pycache__/fixtures.cpython-310.pyc b/openstack/tests/__pycache__/fixtures.cpython-310.pyc
similarity index 100%
rename from tests/__pycache__/fixtures.cpython-310.pyc
rename to openstack/tests/__pycache__/fixtures.cpython-310.pyc
diff --git a/tests/ansible/README.txt b/openstack/tests/ansible/README.txt
similarity index 100%
rename from tests/ansible/README.txt
rename to openstack/tests/ansible/README.txt
diff --git a/tests/ansible/hooks/post_test_hook.sh b/openstack/tests/ansible/hooks/post_test_hook.sh
similarity index 100%
rename from tests/ansible/hooks/post_test_hook.sh
rename to openstack/tests/ansible/hooks/post_test_hook.sh
diff --git a/tests/ansible/roles/auth/tasks/main.yml b/openstack/tests/ansible/roles/auth/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/auth/tasks/main.yml
rename to openstack/tests/ansible/roles/auth/tasks/main.yml
diff --git a/tests/ansible/roles/client_config/tasks/main.yml b/openstack/tests/ansible/roles/client_config/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/client_config/tasks/main.yml
rename to openstack/tests/ansible/roles/client_config/tasks/main.yml
diff --git a/tests/ansible/roles/group/defaults/main.yml b/openstack/tests/ansible/roles/group/defaults/main.yml
similarity index 100%
rename from tests/ansible/roles/group/defaults/main.yml
rename to openstack/tests/ansible/roles/group/defaults/main.yml
diff --git a/tests/ansible/roles/group/tasks/main.yml b/openstack/tests/ansible/roles/group/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/group/tasks/main.yml
rename to openstack/tests/ansible/roles/group/tasks/main.yml
diff --git a/tests/ansible/roles/image/defaults/main.yml b/openstack/tests/ansible/roles/image/defaults/main.yml
similarity index 100%
rename from tests/ansible/roles/image/defaults/main.yml
rename to openstack/tests/ansible/roles/image/defaults/main.yml
diff --git a/tests/ansible/roles/image/tasks/main.yml b/openstack/tests/ansible/roles/image/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/image/tasks/main.yml
rename to openstack/tests/ansible/roles/image/tasks/main.yml
diff --git a/tests/ansible/roles/keypair/defaults/main.yml b/openstack/tests/ansible/roles/keypair/defaults/main.yml
similarity index 100%
rename from tests/ansible/roles/keypair/defaults/main.yml
rename to openstack/tests/ansible/roles/keypair/defaults/main.yml
diff --git a/tests/ansible/roles/keypair/tasks/main.yml b/openstack/tests/ansible/roles/keypair/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/keypair/tasks/main.yml
rename to openstack/tests/ansible/roles/keypair/tasks/main.yml
diff --git a/tests/ansible/roles/keystone_domain/defaults/main.yml b/openstack/tests/ansible/roles/keystone_domain/defaults/main.yml
similarity index 100%
rename from tests/ansible/roles/keystone_domain/defaults/main.yml
rename to openstack/tests/ansible/roles/keystone_domain/defaults/main.yml
diff --git a/tests/ansible/roles/keystone_domain/tasks/main.yml b/openstack/tests/ansible/roles/keystone_domain/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/keystone_domain/tasks/main.yml
rename to openstack/tests/ansible/roles/keystone_domain/tasks/main.yml
diff --git a/tests/ansible/roles/keystone_role/defaults/main.yml b/openstack/tests/ansible/roles/keystone_role/defaults/main.yml
similarity index 100%
rename from tests/ansible/roles/keystone_role/defaults/main.yml
rename to openstack/tests/ansible/roles/keystone_role/defaults/main.yml
diff --git a/tests/ansible/roles/keystone_role/tasks/main.yml b/openstack/tests/ansible/roles/keystone_role/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/keystone_role/tasks/main.yml
rename to openstack/tests/ansible/roles/keystone_role/tasks/main.yml
diff --git a/tests/ansible/roles/network/defaults/main.yml b/openstack/tests/ansible/roles/network/defaults/main.yml
similarity index 100%
rename from tests/ansible/roles/network/defaults/main.yml
rename to openstack/tests/ansible/roles/network/defaults/main.yml
diff --git a/tests/ansible/roles/network/tasks/main.yml b/openstack/tests/ansible/roles/network/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/network/tasks/main.yml
rename to openstack/tests/ansible/roles/network/tasks/main.yml
diff --git a/tests/ansible/roles/nova_flavor/tasks/main.yml b/openstack/tests/ansible/roles/nova_flavor/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/nova_flavor/tasks/main.yml
rename to openstack/tests/ansible/roles/nova_flavor/tasks/main.yml
diff --git a/tests/ansible/roles/object/tasks/main.yml b/openstack/tests/ansible/roles/object/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/object/tasks/main.yml
rename to openstack/tests/ansible/roles/object/tasks/main.yml
diff --git a/tests/ansible/roles/port/defaults/main.yml b/openstack/tests/ansible/roles/port/defaults/main.yml
similarity index 100%
rename from tests/ansible/roles/port/defaults/main.yml
rename to openstack/tests/ansible/roles/port/defaults/main.yml
diff --git a/tests/ansible/roles/port/tasks/main.yml b/openstack/tests/ansible/roles/port/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/port/tasks/main.yml
rename to openstack/tests/ansible/roles/port/tasks/main.yml
diff --git a/tests/ansible/roles/router/defaults/main.yml b/openstack/tests/ansible/roles/router/defaults/main.yml
similarity index 100%
rename from tests/ansible/roles/router/defaults/main.yml
rename to openstack/tests/ansible/roles/router/defaults/main.yml
diff --git a/tests/ansible/roles/router/tasks/main.yml b/openstack/tests/ansible/roles/router/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/router/tasks/main.yml
rename to openstack/tests/ansible/roles/router/tasks/main.yml
diff --git a/tests/ansible/roles/security_group/defaults/main.yml b/openstack/tests/ansible/roles/security_group/defaults/main.yml
similarity index 100%
rename from tests/ansible/roles/security_group/defaults/main.yml
rename to openstack/tests/ansible/roles/security_group/defaults/main.yml
diff --git a/tests/ansible/roles/security_group/tasks/main.yml b/openstack/tests/ansible/roles/security_group/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/security_group/tasks/main.yml
rename to openstack/tests/ansible/roles/security_group/tasks/main.yml
diff --git a/tests/ansible/roles/server/defaults/main.yaml b/openstack/tests/ansible/roles/server/defaults/main.yaml
similarity index 100%
rename from tests/ansible/roles/server/defaults/main.yaml
rename to openstack/tests/ansible/roles/server/defaults/main.yaml
diff --git a/tests/ansible/roles/server/tasks/main.yml b/openstack/tests/ansible/roles/server/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/server/tasks/main.yml
rename to openstack/tests/ansible/roles/server/tasks/main.yml
diff --git a/tests/ansible/roles/subnet/defaults/main.yml b/openstack/tests/ansible/roles/subnet/defaults/main.yml
similarity index 100%
rename from tests/ansible/roles/subnet/defaults/main.yml
rename to openstack/tests/ansible/roles/subnet/defaults/main.yml
diff --git a/tests/ansible/roles/subnet/tasks/main.yml b/openstack/tests/ansible/roles/subnet/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/subnet/tasks/main.yml
rename to openstack/tests/ansible/roles/subnet/tasks/main.yml
diff --git a/tests/ansible/roles/user/tasks/main.yml b/openstack/tests/ansible/roles/user/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/user/tasks/main.yml
rename to openstack/tests/ansible/roles/user/tasks/main.yml
diff --git a/tests/ansible/roles/user_group/tasks/main.yml b/openstack/tests/ansible/roles/user_group/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/user_group/tasks/main.yml
rename to openstack/tests/ansible/roles/user_group/tasks/main.yml
diff --git a/tests/ansible/roles/volume/tasks/main.yml b/openstack/tests/ansible/roles/volume/tasks/main.yml
similarity index 100%
rename from tests/ansible/roles/volume/tasks/main.yml
rename to openstack/tests/ansible/roles/volume/tasks/main.yml
diff --git a/tests/ansible/run.yml b/openstack/tests/ansible/run.yml
similarity index 100%
rename from tests/ansible/run.yml
rename to openstack/tests/ansible/run.yml
diff --git a/tests/base.py b/openstack/tests/base.py
similarity index 100%
rename from tests/base.py
rename to openstack/tests/base.py
diff --git a/tests/fakes.py b/openstack/tests/fakes.py
similarity index 100%
rename from tests/fakes.py
rename to openstack/tests/fakes.py
diff --git a/tests/fixtures.py b/openstack/tests/fixtures.py
similarity index 100%
rename from tests/fixtures.py
rename to openstack/tests/fixtures.py
diff --git a/tests/functional/README.rst b/openstack/tests/functional/README.rst
similarity index 100%
rename from tests/functional/README.rst
rename to openstack/tests/functional/README.rst
diff --git a/tests/functional/dns/__init__.py b/openstack/tests/functional/__init__.py
similarity index 100%
rename from tests/functional/dns/__init__.py
rename to openstack/tests/functional/__init__.py
diff --git a/tests/functional/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/__pycache__/base.cpython-310.pyc b/openstack/tests/functional/__pycache__/base.cpython-310.pyc
similarity index 100%
rename from tests/functional/__pycache__/base.cpython-310.pyc
rename to openstack/tests/functional/__pycache__/base.cpython-310.pyc
diff --git a/tests/functional/dns/v2/__init__.py b/openstack/tests/functional/baremetal/__init__.py
similarity index 100%
rename from tests/functional/dns/v2/__init__.py
rename to openstack/tests/functional/baremetal/__init__.py
diff --git a/tests/functional/baremetal/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/baremetal/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/baremetal/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/baremetal/__pycache__/base.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/base.cpython-310.pyc
similarity index 100%
rename from tests/functional/baremetal/__pycache__/base.cpython-310.pyc
rename to openstack/tests/functional/baremetal/__pycache__/base.cpython-310.pyc
diff --git a/tests/functional/baremetal/__pycache__/test_baremetal_allocation.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_allocation.cpython-310.pyc
similarity index 100%
rename from tests/functional/baremetal/__pycache__/test_baremetal_allocation.cpython-310.pyc
rename to openstack/tests/functional/baremetal/__pycache__/test_baremetal_allocation.cpython-310.pyc
diff --git a/tests/functional/baremetal/__pycache__/test_baremetal_chassis.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_chassis.cpython-310.pyc
similarity index 100%
rename from tests/functional/baremetal/__pycache__/test_baremetal_chassis.cpython-310.pyc
rename to openstack/tests/functional/baremetal/__pycache__/test_baremetal_chassis.cpython-310.pyc
diff --git a/tests/functional/baremetal/__pycache__/test_baremetal_conductor.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_conductor.cpython-310.pyc
similarity index 100%
rename from tests/functional/baremetal/__pycache__/test_baremetal_conductor.cpython-310.pyc
rename to openstack/tests/functional/baremetal/__pycache__/test_baremetal_conductor.cpython-310.pyc
diff --git a/tests/functional/baremetal/__pycache__/test_baremetal_deploy_templates.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_deploy_templates.cpython-310.pyc
similarity index 100%
rename from tests/functional/baremetal/__pycache__/test_baremetal_deploy_templates.cpython-310.pyc
rename to openstack/tests/functional/baremetal/__pycache__/test_baremetal_deploy_templates.cpython-310.pyc
diff --git a/tests/functional/baremetal/__pycache__/test_baremetal_driver.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_driver.cpython-310.pyc
similarity index 100%
rename from tests/functional/baremetal/__pycache__/test_baremetal_driver.cpython-310.pyc
rename to openstack/tests/functional/baremetal/__pycache__/test_baremetal_driver.cpython-310.pyc
diff --git a/tests/functional/baremetal/__pycache__/test_baremetal_node.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_node.cpython-310.pyc
similarity index 100%
rename from tests/functional/baremetal/__pycache__/test_baremetal_node.cpython-310.pyc
rename to openstack/tests/functional/baremetal/__pycache__/test_baremetal_node.cpython-310.pyc
diff --git a/tests/functional/baremetal/__pycache__/test_baremetal_port.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_port.cpython-310.pyc
similarity index 100%
rename from tests/functional/baremetal/__pycache__/test_baremetal_port.cpython-310.pyc
rename to openstack/tests/functional/baremetal/__pycache__/test_baremetal_port.cpython-310.pyc
diff --git a/tests/functional/baremetal/__pycache__/test_baremetal_port_group.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_port_group.cpython-310.pyc
similarity index 100%
rename from tests/functional/baremetal/__pycache__/test_baremetal_port_group.cpython-310.pyc
rename to openstack/tests/functional/baremetal/__pycache__/test_baremetal_port_group.cpython-310.pyc
diff --git a/tests/functional/baremetal/__pycache__/test_baremetal_volume_connector.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_volume_connector.cpython-310.pyc
similarity index 100%
rename from tests/functional/baremetal/__pycache__/test_baremetal_volume_connector.cpython-310.pyc
rename to openstack/tests/functional/baremetal/__pycache__/test_baremetal_volume_connector.cpython-310.pyc
diff --git a/tests/functional/baremetal/__pycache__/test_baremetal_volume_target.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_volume_target.cpython-310.pyc
similarity index 100%
rename from tests/functional/baremetal/__pycache__/test_baremetal_volume_target.cpython-310.pyc
rename to openstack/tests/functional/baremetal/__pycache__/test_baremetal_volume_target.cpython-310.pyc
diff --git a/tests/functional/baremetal/base.py b/openstack/tests/functional/baremetal/base.py
similarity index 100%
rename from tests/functional/baremetal/base.py
rename to openstack/tests/functional/baremetal/base.py
diff --git a/tests/functional/baremetal/test_baremetal_allocation.py b/openstack/tests/functional/baremetal/test_baremetal_allocation.py
similarity index 100%
rename from tests/functional/baremetal/test_baremetal_allocation.py
rename to openstack/tests/functional/baremetal/test_baremetal_allocation.py
diff --git a/tests/functional/baremetal/test_baremetal_chassis.py b/openstack/tests/functional/baremetal/test_baremetal_chassis.py
similarity index 100%
rename from tests/functional/baremetal/test_baremetal_chassis.py
rename to openstack/tests/functional/baremetal/test_baremetal_chassis.py
diff --git a/tests/functional/baremetal/test_baremetal_conductor.py b/openstack/tests/functional/baremetal/test_baremetal_conductor.py
similarity index 100%
rename from tests/functional/baremetal/test_baremetal_conductor.py
rename to openstack/tests/functional/baremetal/test_baremetal_conductor.py
diff --git a/tests/functional/baremetal/test_baremetal_deploy_templates.py b/openstack/tests/functional/baremetal/test_baremetal_deploy_templates.py
similarity index 100%
rename from tests/functional/baremetal/test_baremetal_deploy_templates.py
rename to openstack/tests/functional/baremetal/test_baremetal_deploy_templates.py
diff --git a/tests/functional/baremetal/test_baremetal_driver.py b/openstack/tests/functional/baremetal/test_baremetal_driver.py
similarity index 100%
rename from tests/functional/baremetal/test_baremetal_driver.py
rename to openstack/tests/functional/baremetal/test_baremetal_driver.py
diff --git a/tests/functional/baremetal/test_baremetal_node.py b/openstack/tests/functional/baremetal/test_baremetal_node.py
similarity index 100%
rename from tests/functional/baremetal/test_baremetal_node.py
rename to openstack/tests/functional/baremetal/test_baremetal_node.py
diff --git a/tests/functional/baremetal/test_baremetal_port.py b/openstack/tests/functional/baremetal/test_baremetal_port.py
similarity index 100%
rename from tests/functional/baremetal/test_baremetal_port.py
rename to openstack/tests/functional/baremetal/test_baremetal_port.py
diff --git a/tests/functional/baremetal/test_baremetal_port_group.py b/openstack/tests/functional/baremetal/test_baremetal_port_group.py
similarity index 100%
rename from tests/functional/baremetal/test_baremetal_port_group.py
rename to openstack/tests/functional/baremetal/test_baremetal_port_group.py
diff --git a/tests/functional/baremetal/test_baremetal_volume_connector.py b/openstack/tests/functional/baremetal/test_baremetal_volume_connector.py
similarity index 100%
rename from tests/functional/baremetal/test_baremetal_volume_connector.py
rename to openstack/tests/functional/baremetal/test_baremetal_volume_connector.py
diff --git a/tests/functional/baremetal/test_baremetal_volume_target.py b/openstack/tests/functional/baremetal/test_baremetal_volume_target.py
similarity index 100%
rename from tests/functional/baremetal/test_baremetal_volume_target.py
rename to openstack/tests/functional/baremetal/test_baremetal_volume_target.py
diff --git a/tests/functional/base.py b/openstack/tests/functional/base.py
similarity index 100%
rename from tests/functional/base.py
rename to openstack/tests/functional/base.py
diff --git a/tests/functional/examples/__init__.py b/openstack/tests/functional/block_storage/__init__.py
similarity index 100%
rename from tests/functional/examples/__init__.py
rename to openstack/tests/functional/block_storage/__init__.py
diff --git a/tests/functional/block_storage/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/block_storage/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/block_storage/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/identity/__init__.py b/openstack/tests/functional/block_storage/v2/__init__.py
similarity index 100%
rename from tests/functional/identity/__init__.py
rename to openstack/tests/functional/block_storage/v2/__init__.py
diff --git a/tests/functional/block_storage/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/block_storage/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/block_storage/v2/__pycache__/base.cpython-310.pyc b/openstack/tests/functional/block_storage/v2/__pycache__/base.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v2/__pycache__/base.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v2/__pycache__/base.cpython-310.pyc
diff --git a/tests/functional/block_storage/v2/__pycache__/test_backup.cpython-310.pyc b/openstack/tests/functional/block_storage/v2/__pycache__/test_backup.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v2/__pycache__/test_backup.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v2/__pycache__/test_backup.cpython-310.pyc
diff --git a/tests/functional/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc b/openstack/tests/functional/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc
diff --git a/tests/functional/block_storage/v2/__pycache__/test_stats.cpython-310.pyc b/openstack/tests/functional/block_storage/v2/__pycache__/test_stats.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v2/__pycache__/test_stats.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v2/__pycache__/test_stats.cpython-310.pyc
diff --git a/tests/functional/block_storage/v2/__pycache__/test_type.cpython-310.pyc b/openstack/tests/functional/block_storage/v2/__pycache__/test_type.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v2/__pycache__/test_type.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v2/__pycache__/test_type.cpython-310.pyc
diff --git a/tests/functional/block_storage/v2/__pycache__/test_volume.cpython-310.pyc b/openstack/tests/functional/block_storage/v2/__pycache__/test_volume.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v2/__pycache__/test_volume.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v2/__pycache__/test_volume.cpython-310.pyc
diff --git a/tests/functional/block_storage/v2/base.py b/openstack/tests/functional/block_storage/v2/base.py
similarity index 100%
rename from tests/functional/block_storage/v2/base.py
rename to openstack/tests/functional/block_storage/v2/base.py
diff --git a/tests/functional/block_storage/v2/test_backup.py b/openstack/tests/functional/block_storage/v2/test_backup.py
similarity index 100%
rename from tests/functional/block_storage/v2/test_backup.py
rename to openstack/tests/functional/block_storage/v2/test_backup.py
diff --git a/tests/functional/block_storage/v2/test_snapshot.py b/openstack/tests/functional/block_storage/v2/test_snapshot.py
similarity index 100%
rename from tests/functional/block_storage/v2/test_snapshot.py
rename to openstack/tests/functional/block_storage/v2/test_snapshot.py
diff --git a/tests/functional/block_storage/v2/test_stats.py b/openstack/tests/functional/block_storage/v2/test_stats.py
similarity index 100%
rename from tests/functional/block_storage/v2/test_stats.py
rename to openstack/tests/functional/block_storage/v2/test_stats.py
diff --git a/tests/functional/block_storage/v2/test_type.py b/openstack/tests/functional/block_storage/v2/test_type.py
similarity index 100%
rename from tests/functional/block_storage/v2/test_type.py
rename to openstack/tests/functional/block_storage/v2/test_type.py
diff --git a/tests/functional/block_storage/v2/test_volume.py b/openstack/tests/functional/block_storage/v2/test_volume.py
similarity index 100%
rename from tests/functional/block_storage/v2/test_volume.py
rename to openstack/tests/functional/block_storage/v2/test_volume.py
diff --git a/tests/functional/identity/v3/__init__.py b/openstack/tests/functional/block_storage/v3/__init__.py
similarity index 100%
rename from tests/functional/identity/v3/__init__.py
rename to openstack/tests/functional/block_storage/v3/__init__.py
diff --git a/tests/functional/block_storage/v3/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/__pycache__/base.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/base.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/base.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/base.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/__pycache__/test_availability_zone.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_availability_zone.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/test_availability_zone.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/test_availability_zone.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/__pycache__/test_backup.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_backup.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/test_backup.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/test_backup.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/__pycache__/test_block_storage_summary.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_block_storage_summary.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/test_block_storage_summary.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/test_block_storage_summary.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_extension.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/test_extension.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/test_extension.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/__pycache__/test_group.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_group.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/test_group.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/test_group.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/__pycache__/test_limits.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_limits.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/test_limits.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/test_limits.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/__pycache__/test_resource_filters.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_resource_filters.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/test_resource_filters.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/test_resource_filters.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/__pycache__/test_service.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_service.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/test_service.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/test_service.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/__pycache__/test_type.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_type.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/test_type.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/test_type.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/__pycache__/test_volume.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_volume.cpython-310.pyc
similarity index 100%
rename from tests/functional/block_storage/v3/__pycache__/test_volume.cpython-310.pyc
rename to openstack/tests/functional/block_storage/v3/__pycache__/test_volume.cpython-310.pyc
diff --git a/tests/functional/block_storage/v3/base.py b/openstack/tests/functional/block_storage/v3/base.py
similarity index 100%
rename from tests/functional/block_storage/v3/base.py
rename to openstack/tests/functional/block_storage/v3/base.py
diff --git a/tests/functional/block_storage/v3/test_attachment.py b/openstack/tests/functional/block_storage/v3/test_attachment.py
similarity index 100%
rename from tests/functional/block_storage/v3/test_attachment.py
rename to openstack/tests/functional/block_storage/v3/test_attachment.py
diff --git a/tests/functional/block_storage/v3/test_availability_zone.py b/openstack/tests/functional/block_storage/v3/test_availability_zone.py
similarity index 100%
rename from tests/functional/block_storage/v3/test_availability_zone.py
rename to openstack/tests/functional/block_storage/v3/test_availability_zone.py
diff --git a/tests/functional/block_storage/v3/test_backup.py b/openstack/tests/functional/block_storage/v3/test_backup.py
similarity index 100%
rename from tests/functional/block_storage/v3/test_backup.py
rename to openstack/tests/functional/block_storage/v3/test_backup.py
diff --git a/tests/functional/block_storage/v3/test_block_storage_summary.py b/openstack/tests/functional/block_storage/v3/test_block_storage_summary.py
similarity index 100%
rename from tests/functional/block_storage/v3/test_block_storage_summary.py
rename to openstack/tests/functional/block_storage/v3/test_block_storage_summary.py
diff --git a/tests/functional/block_storage/v3/test_capabilities.py b/openstack/tests/functional/block_storage/v3/test_capabilities.py
similarity index 100%
rename from tests/functional/block_storage/v3/test_capabilities.py
rename to openstack/tests/functional/block_storage/v3/test_capabilities.py
diff --git a/tests/functional/block_storage/v3/test_extension.py b/openstack/tests/functional/block_storage/v3/test_extension.py
similarity index 100%
rename from tests/functional/block_storage/v3/test_extension.py
rename to openstack/tests/functional/block_storage/v3/test_extension.py
diff --git a/tests/functional/block_storage/v3/test_group.py b/openstack/tests/functional/block_storage/v3/test_group.py
similarity index 100%
rename from tests/functional/block_storage/v3/test_group.py
rename to openstack/tests/functional/block_storage/v3/test_group.py
diff --git a/tests/functional/block_storage/v3/test_limits.py b/openstack/tests/functional/block_storage/v3/test_limits.py
similarity index 100%
rename from tests/functional/block_storage/v3/test_limits.py
rename to openstack/tests/functional/block_storage/v3/test_limits.py
diff --git a/tests/functional/block_storage/v3/test_resource_filters.py b/openstack/tests/functional/block_storage/v3/test_resource_filters.py
similarity index 100%
rename from tests/functional/block_storage/v3/test_resource_filters.py
rename to openstack/tests/functional/block_storage/v3/test_resource_filters.py
diff --git a/tests/functional/block_storage/v3/test_service.py b/openstack/tests/functional/block_storage/v3/test_service.py
similarity index 100%
rename from tests/functional/block_storage/v3/test_service.py
rename to openstack/tests/functional/block_storage/v3/test_service.py
diff --git a/tests/functional/block_storage/v3/test_snapshot.py b/openstack/tests/functional/block_storage/v3/test_snapshot.py
similarity index 100%
rename from tests/functional/block_storage/v3/test_snapshot.py
rename to openstack/tests/functional/block_storage/v3/test_snapshot.py
diff --git a/tests/functional/block_storage/v3/test_transfer.py b/openstack/tests/functional/block_storage/v3/test_transfer.py
similarity index 100%
rename from tests/functional/block_storage/v3/test_transfer.py
rename to openstack/tests/functional/block_storage/v3/test_transfer.py
diff --git a/tests/functional/block_storage/v3/test_type.py b/openstack/tests/functional/block_storage/v3/test_type.py
similarity index 100%
rename from tests/functional/block_storage/v3/test_type.py
rename to openstack/tests/functional/block_storage/v3/test_type.py
diff --git a/tests/functional/block_storage/v3/test_volume.py b/openstack/tests/functional/block_storage/v3/test_volume.py
similarity index 100%
rename from tests/functional/block_storage/v3/test_volume.py
rename to openstack/tests/functional/block_storage/v3/test_volume.py
diff --git a/tests/functional/image/__init__.py b/openstack/tests/functional/cloud/__init__.py
similarity index 100%
rename from tests/functional/image/__init__.py
rename to openstack/tests/functional/cloud/__init__.py
diff --git a/tests/functional/cloud/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_aggregate.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_aggregate.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_aggregate.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_aggregate.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_cluster_templates.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_cluster_templates.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_cluster_templates.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_cluster_templates.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_clustering.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_clustering.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_clustering.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_clustering.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_coe_clusters.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_coe_clusters.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_coe_clusters.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_coe_clusters.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_compute.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_compute.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_compute.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_compute.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_devstack.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_devstack.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_devstack.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_devstack.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_domain.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_domain.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_domain.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_domain.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_endpoints.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_endpoints.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_endpoints.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_endpoints.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_flavor.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_flavor.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_flavor.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_flavor.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_floating_ip.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_floating_ip.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_floating_ip.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_floating_ip.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_groups.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_groups.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_groups.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_groups.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_identity.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_identity.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_identity.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_identity.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_image.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_image.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_image.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_image.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_inventory.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_inventory.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_inventory.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_inventory.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_keypairs.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_keypairs.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_keypairs.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_keypairs.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_limits.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_limits.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_limits.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_limits.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_magnum_services.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_magnum_services.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_magnum_services.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_magnum_services.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_network.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_network.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_network.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_network.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_object.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_object.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_object.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_object.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_port.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_port.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_port.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_port.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_project.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_project.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_project.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_project.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_project_cleanup.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_project_cleanup.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_project_cleanup.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_project_cleanup.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_qos_policy.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_qos_policy.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_qos_policy.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_qos_policy.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_quotas.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_quotas.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_quotas.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_quotas.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_range_search.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_range_search.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_range_search.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_range_search.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_recordset.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_recordset.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_recordset.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_recordset.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_router.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_router.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_router.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_router.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_security_groups.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_security_groups.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_security_groups.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_security_groups.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_server_group.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_server_group.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_server_group.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_server_group.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_services.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_services.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_services.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_services.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_stack.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_stack.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_stack.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_stack.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_users.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_users.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_users.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_users.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_volume.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_volume.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_volume.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_volume.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_volume_backup.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_volume_backup.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_volume_backup.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_volume_backup.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_volume_type.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_volume_type.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_volume_type.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_volume_type.cpython-310.pyc
diff --git a/tests/functional/cloud/__pycache__/test_zone.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_zone.cpython-310.pyc
similarity index 100%
rename from tests/functional/cloud/__pycache__/test_zone.cpython-310.pyc
rename to openstack/tests/functional/cloud/__pycache__/test_zone.cpython-310.pyc
diff --git a/tests/functional/cloud/test_aggregate.py b/openstack/tests/functional/cloud/test_aggregate.py
similarity index 100%
rename from tests/functional/cloud/test_aggregate.py
rename to openstack/tests/functional/cloud/test_aggregate.py
diff --git a/tests/functional/cloud/test_cluster_templates.py b/openstack/tests/functional/cloud/test_cluster_templates.py
similarity index 100%
rename from tests/functional/cloud/test_cluster_templates.py
rename to openstack/tests/functional/cloud/test_cluster_templates.py
diff --git a/tests/functional/cloud/test_clustering.py b/openstack/tests/functional/cloud/test_clustering.py
similarity index 100%
rename from tests/functional/cloud/test_clustering.py
rename to openstack/tests/functional/cloud/test_clustering.py
diff --git a/tests/functional/cloud/test_coe_clusters.py b/openstack/tests/functional/cloud/test_coe_clusters.py
similarity index 100%
rename from tests/functional/cloud/test_coe_clusters.py
rename to openstack/tests/functional/cloud/test_coe_clusters.py
diff --git a/tests/functional/cloud/test_compute.py b/openstack/tests/functional/cloud/test_compute.py
similarity index 100%
rename from tests/functional/cloud/test_compute.py
rename to openstack/tests/functional/cloud/test_compute.py
diff --git a/tests/functional/cloud/test_devstack.py b/openstack/tests/functional/cloud/test_devstack.py
similarity index 100%
rename from tests/functional/cloud/test_devstack.py
rename to openstack/tests/functional/cloud/test_devstack.py
diff --git a/tests/functional/cloud/test_domain.py b/openstack/tests/functional/cloud/test_domain.py
similarity index 100%
rename from tests/functional/cloud/test_domain.py
rename to openstack/tests/functional/cloud/test_domain.py
diff --git a/tests/functional/cloud/test_endpoints.py b/openstack/tests/functional/cloud/test_endpoints.py
similarity index 100%
rename from tests/functional/cloud/test_endpoints.py
rename to openstack/tests/functional/cloud/test_endpoints.py
diff --git a/tests/functional/cloud/test_flavor.py b/openstack/tests/functional/cloud/test_flavor.py
similarity index 100%
rename from tests/functional/cloud/test_flavor.py
rename to openstack/tests/functional/cloud/test_flavor.py
diff --git a/tests/functional/cloud/test_floating_ip.py b/openstack/tests/functional/cloud/test_floating_ip.py
similarity index 100%
rename from tests/functional/cloud/test_floating_ip.py
rename to openstack/tests/functional/cloud/test_floating_ip.py
diff --git a/tests/functional/cloud/test_floating_ip_pool.py b/openstack/tests/functional/cloud/test_floating_ip_pool.py
similarity index 100%
rename from tests/functional/cloud/test_floating_ip_pool.py
rename to openstack/tests/functional/cloud/test_floating_ip_pool.py
diff --git a/tests/functional/cloud/test_groups.py b/openstack/tests/functional/cloud/test_groups.py
similarity index 100%
rename from tests/functional/cloud/test_groups.py
rename to openstack/tests/functional/cloud/test_groups.py
diff --git a/tests/functional/cloud/test_identity.py b/openstack/tests/functional/cloud/test_identity.py
similarity index 100%
rename from tests/functional/cloud/test_identity.py
rename to openstack/tests/functional/cloud/test_identity.py
diff --git a/tests/functional/cloud/test_image.py b/openstack/tests/functional/cloud/test_image.py
similarity index 100%
rename from tests/functional/cloud/test_image.py
rename to openstack/tests/functional/cloud/test_image.py
diff --git a/tests/functional/cloud/test_inventory.py b/openstack/tests/functional/cloud/test_inventory.py
similarity index 100%
rename from tests/functional/cloud/test_inventory.py
rename to openstack/tests/functional/cloud/test_inventory.py
diff --git a/tests/functional/cloud/test_keypairs.py b/openstack/tests/functional/cloud/test_keypairs.py
similarity index 100%
rename from tests/functional/cloud/test_keypairs.py
rename to openstack/tests/functional/cloud/test_keypairs.py
diff --git a/tests/functional/cloud/test_limits.py b/openstack/tests/functional/cloud/test_limits.py
similarity index 100%
rename from tests/functional/cloud/test_limits.py
rename to openstack/tests/functional/cloud/test_limits.py
diff --git a/tests/functional/cloud/test_magnum_services.py b/openstack/tests/functional/cloud/test_magnum_services.py
similarity index 100%
rename from tests/functional/cloud/test_magnum_services.py
rename to openstack/tests/functional/cloud/test_magnum_services.py
diff --git a/tests/functional/cloud/test_network.py b/openstack/tests/functional/cloud/test_network.py
similarity index 100%
rename from tests/functional/cloud/test_network.py
rename to openstack/tests/functional/cloud/test_network.py
diff --git a/tests/functional/cloud/test_object.py b/openstack/tests/functional/cloud/test_object.py
similarity index 100%
rename from tests/functional/cloud/test_object.py
rename to openstack/tests/functional/cloud/test_object.py
diff --git a/tests/functional/cloud/test_port.py b/openstack/tests/functional/cloud/test_port.py
similarity index 100%
rename from tests/functional/cloud/test_port.py
rename to openstack/tests/functional/cloud/test_port.py
diff --git a/tests/functional/cloud/test_project.py b/openstack/tests/functional/cloud/test_project.py
similarity index 100%
rename from tests/functional/cloud/test_project.py
rename to openstack/tests/functional/cloud/test_project.py
diff --git a/tests/functional/cloud/test_project_cleanup.py b/openstack/tests/functional/cloud/test_project_cleanup.py
similarity index 100%
rename from tests/functional/cloud/test_project_cleanup.py
rename to openstack/tests/functional/cloud/test_project_cleanup.py
diff --git a/tests/functional/cloud/test_qos_bandwidth_limit_rule.py b/openstack/tests/functional/cloud/test_qos_bandwidth_limit_rule.py
similarity index 100%
rename from tests/functional/cloud/test_qos_bandwidth_limit_rule.py
rename to openstack/tests/functional/cloud/test_qos_bandwidth_limit_rule.py
diff --git a/tests/functional/cloud/test_qos_dscp_marking_rule.py b/openstack/tests/functional/cloud/test_qos_dscp_marking_rule.py
similarity index 100%
rename from tests/functional/cloud/test_qos_dscp_marking_rule.py
rename to openstack/tests/functional/cloud/test_qos_dscp_marking_rule.py
diff --git a/tests/functional/cloud/test_qos_minimum_bandwidth_rule.py b/openstack/tests/functional/cloud/test_qos_minimum_bandwidth_rule.py
similarity index 100%
rename from tests/functional/cloud/test_qos_minimum_bandwidth_rule.py
rename to openstack/tests/functional/cloud/test_qos_minimum_bandwidth_rule.py
diff --git a/tests/functional/cloud/test_qos_policy.py b/openstack/tests/functional/cloud/test_qos_policy.py
similarity index 100%
rename from tests/functional/cloud/test_qos_policy.py
rename to openstack/tests/functional/cloud/test_qos_policy.py
diff --git a/tests/functional/cloud/test_quotas.py b/openstack/tests/functional/cloud/test_quotas.py
similarity index 100%
rename from tests/functional/cloud/test_quotas.py
rename to openstack/tests/functional/cloud/test_quotas.py
diff --git a/tests/functional/cloud/test_range_search.py b/openstack/tests/functional/cloud/test_range_search.py
similarity index 100%
rename from tests/functional/cloud/test_range_search.py
rename to openstack/tests/functional/cloud/test_range_search.py
diff --git a/tests/functional/cloud/test_recordset.py b/openstack/tests/functional/cloud/test_recordset.py
similarity index 100%
rename from tests/functional/cloud/test_recordset.py
rename to openstack/tests/functional/cloud/test_recordset.py
diff --git a/tests/functional/cloud/test_router.py b/openstack/tests/functional/cloud/test_router.py
similarity index 100%
rename from tests/functional/cloud/test_router.py
rename to openstack/tests/functional/cloud/test_router.py
diff --git a/tests/functional/cloud/test_security_groups.py b/openstack/tests/functional/cloud/test_security_groups.py
similarity index 100%
rename from tests/functional/cloud/test_security_groups.py
rename to openstack/tests/functional/cloud/test_security_groups.py
diff --git a/tests/functional/cloud/test_server_group.py b/openstack/tests/functional/cloud/test_server_group.py
similarity index 100%
rename from tests/functional/cloud/test_server_group.py
rename to openstack/tests/functional/cloud/test_server_group.py
diff --git a/tests/functional/cloud/test_services.py b/openstack/tests/functional/cloud/test_services.py
similarity index 100%
rename from tests/functional/cloud/test_services.py
rename to openstack/tests/functional/cloud/test_services.py
diff --git a/tests/functional/cloud/test_stack.py b/openstack/tests/functional/cloud/test_stack.py
similarity index 100%
rename from tests/functional/cloud/test_stack.py
rename to openstack/tests/functional/cloud/test_stack.py
diff --git a/tests/functional/cloud/test_users.py b/openstack/tests/functional/cloud/test_users.py
similarity index 100%
rename from tests/functional/cloud/test_users.py
rename to openstack/tests/functional/cloud/test_users.py
diff --git a/tests/functional/cloud/test_volume.py b/openstack/tests/functional/cloud/test_volume.py
similarity index 100%
rename from tests/functional/cloud/test_volume.py
rename to openstack/tests/functional/cloud/test_volume.py
diff --git a/tests/functional/cloud/test_volume_backup.py b/openstack/tests/functional/cloud/test_volume_backup.py
similarity index 100%
rename from tests/functional/cloud/test_volume_backup.py
rename to openstack/tests/functional/cloud/test_volume_backup.py
diff --git a/tests/functional/cloud/test_volume_type.py b/openstack/tests/functional/cloud/test_volume_type.py
similarity index 100%
rename from tests/functional/cloud/test_volume_type.py
rename to openstack/tests/functional/cloud/test_volume_type.py
diff --git a/tests/functional/cloud/test_zone.py b/openstack/tests/functional/cloud/test_zone.py
similarity index 100%
rename from tests/functional/cloud/test_zone.py
rename to openstack/tests/functional/cloud/test_zone.py
diff --git a/tests/functional/image/v2/__init__.py b/openstack/tests/functional/clustering/__init__.py
similarity index 100%
rename from tests/functional/image/v2/__init__.py
rename to openstack/tests/functional/clustering/__init__.py
diff --git a/tests/functional/clustering/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/clustering/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/clustering/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/clustering/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/clustering/__pycache__/test_cluster.cpython-310.pyc b/openstack/tests/functional/clustering/__pycache__/test_cluster.cpython-310.pyc
similarity index 100%
rename from tests/functional/clustering/__pycache__/test_cluster.cpython-310.pyc
rename to openstack/tests/functional/clustering/__pycache__/test_cluster.cpython-310.pyc
diff --git a/tests/functional/clustering/test_cluster.py b/openstack/tests/functional/clustering/test_cluster.py
similarity index 100%
rename from tests/functional/clustering/test_cluster.py
rename to openstack/tests/functional/clustering/test_cluster.py
diff --git a/tests/functional/instance_ha/__init__.py b/openstack/tests/functional/compute/__init__.py
similarity index 100%
rename from tests/functional/instance_ha/__init__.py
rename to openstack/tests/functional/compute/__init__.py
diff --git a/tests/functional/compute/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/compute/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/compute/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/compute/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/compute/__pycache__/base.cpython-310.pyc b/openstack/tests/functional/compute/__pycache__/base.cpython-310.pyc
similarity index 100%
rename from tests/functional/compute/__pycache__/base.cpython-310.pyc
rename to openstack/tests/functional/compute/__pycache__/base.cpython-310.pyc
diff --git a/tests/functional/compute/base.py b/openstack/tests/functional/compute/base.py
similarity index 100%
rename from tests/functional/compute/base.py
rename to openstack/tests/functional/compute/base.py
diff --git a/tests/functional/load_balancer/__init__.py b/openstack/tests/functional/compute/v2/__init__.py
similarity index 100%
rename from tests/functional/load_balancer/__init__.py
rename to openstack/tests/functional/compute/v2/__init__.py
diff --git a/tests/functional/compute/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/compute/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/compute/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/compute/v2/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_extension.cpython-310.pyc
similarity index 100%
rename from tests/functional/compute/v2/__pycache__/test_extension.cpython-310.pyc
rename to openstack/tests/functional/compute/v2/__pycache__/test_extension.cpython-310.pyc
diff --git a/tests/functional/compute/v2/__pycache__/test_flavor.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_flavor.cpython-310.pyc
similarity index 100%
rename from tests/functional/compute/v2/__pycache__/test_flavor.cpython-310.pyc
rename to openstack/tests/functional/compute/v2/__pycache__/test_flavor.cpython-310.pyc
diff --git a/tests/functional/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc
similarity index 100%
rename from tests/functional/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc
rename to openstack/tests/functional/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc
diff --git a/tests/functional/compute/v2/__pycache__/test_image.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_image.cpython-310.pyc
similarity index 100%
rename from tests/functional/compute/v2/__pycache__/test_image.cpython-310.pyc
rename to openstack/tests/functional/compute/v2/__pycache__/test_image.cpython-310.pyc
diff --git a/tests/functional/compute/v2/__pycache__/test_keypair.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_keypair.cpython-310.pyc
similarity index 100%
rename from tests/functional/compute/v2/__pycache__/test_keypair.cpython-310.pyc
rename to openstack/tests/functional/compute/v2/__pycache__/test_keypair.cpython-310.pyc
diff --git a/tests/functional/compute/v2/__pycache__/test_limits.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_limits.cpython-310.pyc
similarity index 100%
rename from tests/functional/compute/v2/__pycache__/test_limits.cpython-310.pyc
rename to openstack/tests/functional/compute/v2/__pycache__/test_limits.cpython-310.pyc
diff --git a/tests/functional/compute/v2/__pycache__/test_quota_set.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_quota_set.cpython-310.pyc
similarity index 100%
rename from tests/functional/compute/v2/__pycache__/test_quota_set.cpython-310.pyc
rename to openstack/tests/functional/compute/v2/__pycache__/test_quota_set.cpython-310.pyc
diff --git a/tests/functional/compute/v2/__pycache__/test_server.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_server.cpython-310.pyc
similarity index 100%
rename from tests/functional/compute/v2/__pycache__/test_server.cpython-310.pyc
rename to openstack/tests/functional/compute/v2/__pycache__/test_server.cpython-310.pyc
diff --git a/tests/functional/compute/v2/__pycache__/test_service.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_service.cpython-310.pyc
similarity index 100%
rename from tests/functional/compute/v2/__pycache__/test_service.cpython-310.pyc
rename to openstack/tests/functional/compute/v2/__pycache__/test_service.cpython-310.pyc
diff --git a/tests/functional/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc
similarity index 100%
rename from tests/functional/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc
rename to openstack/tests/functional/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc
diff --git a/tests/functional/compute/v2/test_extension.py b/openstack/tests/functional/compute/v2/test_extension.py
similarity index 100%
rename from tests/functional/compute/v2/test_extension.py
rename to openstack/tests/functional/compute/v2/test_extension.py
diff --git a/tests/functional/compute/v2/test_flavor.py b/openstack/tests/functional/compute/v2/test_flavor.py
similarity index 100%
rename from tests/functional/compute/v2/test_flavor.py
rename to openstack/tests/functional/compute/v2/test_flavor.py
diff --git a/tests/functional/compute/v2/test_hypervisor.py b/openstack/tests/functional/compute/v2/test_hypervisor.py
similarity index 100%
rename from tests/functional/compute/v2/test_hypervisor.py
rename to openstack/tests/functional/compute/v2/test_hypervisor.py
diff --git a/tests/functional/compute/v2/test_image.py b/openstack/tests/functional/compute/v2/test_image.py
similarity index 100%
rename from tests/functional/compute/v2/test_image.py
rename to openstack/tests/functional/compute/v2/test_image.py
diff --git a/tests/functional/compute/v2/test_keypair.py b/openstack/tests/functional/compute/v2/test_keypair.py
similarity index 100%
rename from tests/functional/compute/v2/test_keypair.py
rename to openstack/tests/functional/compute/v2/test_keypair.py
diff --git a/tests/functional/compute/v2/test_limits.py b/openstack/tests/functional/compute/v2/test_limits.py
similarity index 100%
rename from tests/functional/compute/v2/test_limits.py
rename to openstack/tests/functional/compute/v2/test_limits.py
diff --git a/tests/functional/compute/v2/test_quota_set.py b/openstack/tests/functional/compute/v2/test_quota_set.py
similarity index 100%
rename from tests/functional/compute/v2/test_quota_set.py
rename to openstack/tests/functional/compute/v2/test_quota_set.py
diff --git a/tests/functional/compute/v2/test_server.py b/openstack/tests/functional/compute/v2/test_server.py
similarity index 100%
rename from tests/functional/compute/v2/test_server.py
rename to openstack/tests/functional/compute/v2/test_server.py
diff --git a/tests/functional/compute/v2/test_service.py b/openstack/tests/functional/compute/v2/test_service.py
similarity index 100%
rename from tests/functional/compute/v2/test_service.py
rename to openstack/tests/functional/compute/v2/test_service.py
diff --git a/tests/functional/compute/v2/test_volume_attachment.py b/openstack/tests/functional/compute/v2/test_volume_attachment.py
similarity index 100%
rename from tests/functional/compute/v2/test_volume_attachment.py
rename to openstack/tests/functional/compute/v2/test_volume_attachment.py
diff --git a/tests/functional/load_balancer/v2/__init__.py b/openstack/tests/functional/dns/__init__.py
similarity index 100%
rename from tests/functional/load_balancer/v2/__init__.py
rename to openstack/tests/functional/dns/__init__.py
diff --git a/tests/functional/dns/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/dns/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/dns/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/dns/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/network/__init__.py b/openstack/tests/functional/dns/v2/__init__.py
similarity index 100%
rename from tests/functional/network/__init__.py
rename to openstack/tests/functional/dns/v2/__init__.py
diff --git a/tests/functional/dns/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/dns/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/dns/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/dns/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/dns/v2/__pycache__/test_zone.cpython-310.pyc b/openstack/tests/functional/dns/v2/__pycache__/test_zone.cpython-310.pyc
similarity index 100%
rename from tests/functional/dns/v2/__pycache__/test_zone.cpython-310.pyc
rename to openstack/tests/functional/dns/v2/__pycache__/test_zone.cpython-310.pyc
diff --git a/tests/functional/dns/v2/__pycache__/test_zone_share.cpython-310.pyc b/openstack/tests/functional/dns/v2/__pycache__/test_zone_share.cpython-310.pyc
similarity index 100%
rename from tests/functional/dns/v2/__pycache__/test_zone_share.cpython-310.pyc
rename to openstack/tests/functional/dns/v2/__pycache__/test_zone_share.cpython-310.pyc
diff --git a/tests/functional/dns/v2/test_zone.py b/openstack/tests/functional/dns/v2/test_zone.py
similarity index 100%
rename from tests/functional/dns/v2/test_zone.py
rename to openstack/tests/functional/dns/v2/test_zone.py
diff --git a/tests/functional/dns/v2/test_zone_share.py b/openstack/tests/functional/dns/v2/test_zone_share.py
similarity index 100%
rename from tests/functional/dns/v2/test_zone_share.py
rename to openstack/tests/functional/dns/v2/test_zone_share.py
diff --git a/tests/functional/network/v2/__init__.py b/openstack/tests/functional/examples/__init__.py
similarity index 100%
rename from tests/functional/network/v2/__init__.py
rename to openstack/tests/functional/examples/__init__.py
diff --git a/tests/functional/examples/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/examples/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/examples/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/examples/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/examples/__pycache__/test_compute.cpython-310.pyc b/openstack/tests/functional/examples/__pycache__/test_compute.cpython-310.pyc
similarity index 100%
rename from tests/functional/examples/__pycache__/test_compute.cpython-310.pyc
rename to openstack/tests/functional/examples/__pycache__/test_compute.cpython-310.pyc
diff --git a/tests/functional/examples/__pycache__/test_identity.cpython-310.pyc b/openstack/tests/functional/examples/__pycache__/test_identity.cpython-310.pyc
similarity index 100%
rename from tests/functional/examples/__pycache__/test_identity.cpython-310.pyc
rename to openstack/tests/functional/examples/__pycache__/test_identity.cpython-310.pyc
diff --git a/tests/functional/examples/__pycache__/test_image.cpython-310.pyc b/openstack/tests/functional/examples/__pycache__/test_image.cpython-310.pyc
similarity index 100%
rename from tests/functional/examples/__pycache__/test_image.cpython-310.pyc
rename to openstack/tests/functional/examples/__pycache__/test_image.cpython-310.pyc
diff --git a/tests/functional/examples/__pycache__/test_network.cpython-310.pyc b/openstack/tests/functional/examples/__pycache__/test_network.cpython-310.pyc
similarity index 100%
rename from tests/functional/examples/__pycache__/test_network.cpython-310.pyc
rename to openstack/tests/functional/examples/__pycache__/test_network.cpython-310.pyc
diff --git a/tests/functional/examples/test_compute.py b/openstack/tests/functional/examples/test_compute.py
similarity index 100%
rename from tests/functional/examples/test_compute.py
rename to openstack/tests/functional/examples/test_compute.py
diff --git a/tests/functional/examples/test_identity.py b/openstack/tests/functional/examples/test_identity.py
similarity index 100%
rename from tests/functional/examples/test_identity.py
rename to openstack/tests/functional/examples/test_identity.py
diff --git a/tests/functional/examples/test_image.py b/openstack/tests/functional/examples/test_image.py
similarity index 100%
rename from tests/functional/examples/test_image.py
rename to openstack/tests/functional/examples/test_image.py
diff --git a/tests/functional/examples/test_network.py b/openstack/tests/functional/examples/test_network.py
similarity index 100%
rename from tests/functional/examples/test_network.py
rename to openstack/tests/functional/examples/test_network.py
diff --git a/tests/functional/object_store/__init__.py b/openstack/tests/functional/identity/__init__.py
similarity index 100%
rename from tests/functional/object_store/__init__.py
rename to openstack/tests/functional/identity/__init__.py
diff --git a/tests/functional/identity/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/identity/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/identity/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/identity/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/object_store/v1/__init__.py b/openstack/tests/functional/identity/v3/__init__.py
similarity index 100%
rename from tests/functional/object_store/v1/__init__.py
rename to openstack/tests/functional/identity/v3/__init__.py
diff --git a/tests/functional/identity/v3/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/identity/v3/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/identity/v3/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/identity/v3/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/identity/v3/__pycache__/test_application_credential.cpython-310.pyc b/openstack/tests/functional/identity/v3/__pycache__/test_application_credential.cpython-310.pyc
similarity index 100%
rename from tests/functional/identity/v3/__pycache__/test_application_credential.cpython-310.pyc
rename to openstack/tests/functional/identity/v3/__pycache__/test_application_credential.cpython-310.pyc
diff --git a/tests/functional/identity/v3/__pycache__/test_domain_config.cpython-310.pyc b/openstack/tests/functional/identity/v3/__pycache__/test_domain_config.cpython-310.pyc
similarity index 100%
rename from tests/functional/identity/v3/__pycache__/test_domain_config.cpython-310.pyc
rename to openstack/tests/functional/identity/v3/__pycache__/test_domain_config.cpython-310.pyc
diff --git a/tests/functional/identity/v3/test_application_credential.py b/openstack/tests/functional/identity/v3/test_application_credential.py
similarity index 100%
rename from tests/functional/identity/v3/test_application_credential.py
rename to openstack/tests/functional/identity/v3/test_application_credential.py
diff --git a/tests/functional/identity/v3/test_domain_config.py b/openstack/tests/functional/identity/v3/test_domain_config.py
similarity index 100%
rename from tests/functional/identity/v3/test_domain_config.py
rename to openstack/tests/functional/identity/v3/test_domain_config.py
diff --git a/tests/functional/orchestration/__init__.py b/openstack/tests/functional/image/__init__.py
similarity index 100%
rename from tests/functional/orchestration/__init__.py
rename to openstack/tests/functional/image/__init__.py
diff --git a/tests/functional/image/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/image/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/image/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/image/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/orchestration/v1/__init__.py b/openstack/tests/functional/image/v2/__init__.py
similarity index 100%
rename from tests/functional/orchestration/v1/__init__.py
rename to openstack/tests/functional/image/v2/__init__.py
diff --git a/tests/functional/image/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/image/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/image/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/image/v2/__pycache__/base.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/base.cpython-310.pyc
similarity index 100%
rename from tests/functional/image/v2/__pycache__/base.cpython-310.pyc
rename to openstack/tests/functional/image/v2/__pycache__/base.cpython-310.pyc
diff --git a/tests/functional/image/v2/__pycache__/test_image.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/test_image.cpython-310.pyc
similarity index 100%
rename from tests/functional/image/v2/__pycache__/test_image.cpython-310.pyc
rename to openstack/tests/functional/image/v2/__pycache__/test_image.cpython-310.pyc
diff --git a/tests/functional/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc
similarity index 100%
rename from tests/functional/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc
rename to openstack/tests/functional/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc
diff --git a/tests/functional/image/v2/__pycache__/test_metadef_object.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/test_metadef_object.cpython-310.pyc
similarity index 100%
rename from tests/functional/image/v2/__pycache__/test_metadef_object.cpython-310.pyc
rename to openstack/tests/functional/image/v2/__pycache__/test_metadef_object.cpython-310.pyc
diff --git a/tests/functional/image/v2/__pycache__/test_metadef_property.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/test_metadef_property.cpython-310.pyc
similarity index 100%
rename from tests/functional/image/v2/__pycache__/test_metadef_property.cpython-310.pyc
rename to openstack/tests/functional/image/v2/__pycache__/test_metadef_property.cpython-310.pyc
diff --git a/tests/functional/image/v2/__pycache__/test_metadef_resource_type.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/test_metadef_resource_type.cpython-310.pyc
similarity index 100%
rename from tests/functional/image/v2/__pycache__/test_metadef_resource_type.cpython-310.pyc
rename to openstack/tests/functional/image/v2/__pycache__/test_metadef_resource_type.cpython-310.pyc
diff --git a/tests/functional/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc
similarity index 100%
rename from tests/functional/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc
rename to openstack/tests/functional/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc
diff --git a/tests/functional/image/v2/__pycache__/test_schema.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/test_schema.cpython-310.pyc
similarity index 100%
rename from tests/functional/image/v2/__pycache__/test_schema.cpython-310.pyc
rename to openstack/tests/functional/image/v2/__pycache__/test_schema.cpython-310.pyc
diff --git a/tests/functional/image/v2/__pycache__/test_task.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/test_task.cpython-310.pyc
similarity index 100%
rename from tests/functional/image/v2/__pycache__/test_task.cpython-310.pyc
rename to openstack/tests/functional/image/v2/__pycache__/test_task.cpython-310.pyc
diff --git a/tests/functional/image/v2/base.py b/openstack/tests/functional/image/v2/base.py
similarity index 100%
rename from tests/functional/image/v2/base.py
rename to openstack/tests/functional/image/v2/base.py
diff --git a/tests/functional/image/v2/test_image.py b/openstack/tests/functional/image/v2/test_image.py
similarity index 100%
rename from tests/functional/image/v2/test_image.py
rename to openstack/tests/functional/image/v2/test_image.py
diff --git a/tests/functional/image/v2/test_metadef_namespace.py b/openstack/tests/functional/image/v2/test_metadef_namespace.py
similarity index 100%
rename from tests/functional/image/v2/test_metadef_namespace.py
rename to openstack/tests/functional/image/v2/test_metadef_namespace.py
diff --git a/tests/functional/image/v2/test_metadef_object.py b/openstack/tests/functional/image/v2/test_metadef_object.py
similarity index 100%
rename from tests/functional/image/v2/test_metadef_object.py
rename to openstack/tests/functional/image/v2/test_metadef_object.py
diff --git a/tests/functional/image/v2/test_metadef_property.py b/openstack/tests/functional/image/v2/test_metadef_property.py
similarity index 100%
rename from tests/functional/image/v2/test_metadef_property.py
rename to openstack/tests/functional/image/v2/test_metadef_property.py
diff --git a/tests/functional/image/v2/test_metadef_resource_type.py b/openstack/tests/functional/image/v2/test_metadef_resource_type.py
similarity index 100%
rename from tests/functional/image/v2/test_metadef_resource_type.py
rename to openstack/tests/functional/image/v2/test_metadef_resource_type.py
diff --git a/tests/functional/image/v2/test_metadef_schema.py b/openstack/tests/functional/image/v2/test_metadef_schema.py
similarity index 100%
rename from tests/functional/image/v2/test_metadef_schema.py
rename to openstack/tests/functional/image/v2/test_metadef_schema.py
diff --git a/tests/functional/image/v2/test_schema.py b/openstack/tests/functional/image/v2/test_schema.py
similarity index 100%
rename from tests/functional/image/v2/test_schema.py
rename to openstack/tests/functional/image/v2/test_schema.py
diff --git a/tests/functional/image/v2/test_task.py b/openstack/tests/functional/image/v2/test_task.py
similarity index 100%
rename from tests/functional/image/v2/test_task.py
rename to openstack/tests/functional/image/v2/test_task.py
diff --git a/tests/functional/placement/__init__.py b/openstack/tests/functional/instance_ha/__init__.py
similarity index 100%
rename from tests/functional/placement/__init__.py
rename to openstack/tests/functional/instance_ha/__init__.py
diff --git a/tests/functional/instance_ha/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/instance_ha/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/instance_ha/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/instance_ha/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/instance_ha/__pycache__/test_host.cpython-310.pyc b/openstack/tests/functional/instance_ha/__pycache__/test_host.cpython-310.pyc
similarity index 100%
rename from tests/functional/instance_ha/__pycache__/test_host.cpython-310.pyc
rename to openstack/tests/functional/instance_ha/__pycache__/test_host.cpython-310.pyc
diff --git a/tests/functional/instance_ha/__pycache__/test_segment.cpython-310.pyc b/openstack/tests/functional/instance_ha/__pycache__/test_segment.cpython-310.pyc
similarity index 100%
rename from tests/functional/instance_ha/__pycache__/test_segment.cpython-310.pyc
rename to openstack/tests/functional/instance_ha/__pycache__/test_segment.cpython-310.pyc
diff --git a/tests/functional/instance_ha/test_host.py b/openstack/tests/functional/instance_ha/test_host.py
similarity index 100%
rename from tests/functional/instance_ha/test_host.py
rename to openstack/tests/functional/instance_ha/test_host.py
diff --git a/tests/functional/instance_ha/test_segment.py b/openstack/tests/functional/instance_ha/test_segment.py
similarity index 100%
rename from tests/functional/instance_ha/test_segment.py
rename to openstack/tests/functional/instance_ha/test_segment.py
diff --git a/tests/functional/placement/v1/__init__.py b/openstack/tests/functional/load_balancer/__init__.py
similarity index 100%
rename from tests/functional/placement/v1/__init__.py
rename to openstack/tests/functional/load_balancer/__init__.py
diff --git a/tests/functional/load_balancer/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/load_balancer/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/load_balancer/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/load_balancer/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__init__.py b/openstack/tests/functional/load_balancer/v2/__init__.py
similarity index 100%
rename from tests/functional/shared_file_system/__init__.py
rename to openstack/tests/functional/load_balancer/v2/__init__.py
diff --git a/tests/functional/load_balancer/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/load_balancer/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/load_balancer/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/load_balancer/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/load_balancer/v2/__pycache__/test_load_balancer.cpython-310.pyc b/openstack/tests/functional/load_balancer/v2/__pycache__/test_load_balancer.cpython-310.pyc
similarity index 100%
rename from tests/functional/load_balancer/v2/__pycache__/test_load_balancer.cpython-310.pyc
rename to openstack/tests/functional/load_balancer/v2/__pycache__/test_load_balancer.cpython-310.pyc
diff --git a/tests/functional/load_balancer/v2/test_load_balancer.py b/openstack/tests/functional/load_balancer/v2/test_load_balancer.py
similarity index 100%
rename from tests/functional/load_balancer/v2/test_load_balancer.py
rename to openstack/tests/functional/load_balancer/v2/test_load_balancer.py
diff --git a/tests/unit/__init__.py b/openstack/tests/functional/network/__init__.py
similarity index 100%
rename from tests/unit/__init__.py
rename to openstack/tests/functional/network/__init__.py
diff --git a/tests/functional/network/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/network/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/network/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/accelerator/__init__.py b/openstack/tests/functional/network/v2/__init__.py
similarity index 100%
rename from tests/unit/accelerator/__init__.py
rename to openstack/tests/functional/network/v2/__init__.py
diff --git a/tests/functional/network/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_address_group.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_address_group.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_address_group.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_address_group.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_address_scope.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_address_scope.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_address_scope.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_address_scope.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_agent.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_agent.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_agent.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_agent.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_agent_add_remove_network.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_agent_add_remove_network.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_agent_add_remove_network.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_agent_add_remove_network.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_agent_add_remove_router.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_agent_add_remove_router.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_agent_add_remove_router.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_agent_add_remove_router.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_auto_allocated_topology.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_auto_allocated_topology.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_auto_allocated_topology.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_auto_allocated_topology.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_availability_zone.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_availability_zone.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_availability_zone.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_availability_zone.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_bgp.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_bgp.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_bgp.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_bgp.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_default_security_group_rule.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_default_security_group_rule.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_default_security_group_rule.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_default_security_group_rule.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_dvr_router.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_dvr_router.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_dvr_router.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_dvr_router.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_extension.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_extension.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_extension.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_firewall_group.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_firewall_group.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_firewall_group.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_firewall_group.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_firewall_rule_insert_remove_policy.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_firewall_rule_insert_remove_policy.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_firewall_rule_insert_remove_policy.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_firewall_rule_insert_remove_policy.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_flavor.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_flavor.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_flavor.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_flavor.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_floating_ip.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_floating_ip.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_floating_ip.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_floating_ip.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_l3_conntrack_helper.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_l3_conntrack_helper.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_l3_conntrack_helper.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_l3_conntrack_helper.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_local_ip.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_local_ip.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_local_ip.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_local_ip.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_local_ip_association.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_local_ip_association.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_local_ip_association.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_local_ip_association.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_network.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_network.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_network.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_network.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_network_ip_availability.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_network_ip_availability.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_network_ip_availability.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_network_ip_availability.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_network_segment_range.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_network_segment_range.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_network_segment_range.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_network_segment_range.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_port.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_port.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_port.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_port.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_qos_minimum_packet_rate_rule.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_qos_minimum_packet_rate_rule.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_qos_minimum_packet_rate_rule.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_qos_minimum_packet_rate_rule.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_qos_policy.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_qos_policy.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_qos_policy.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_qos_policy.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_qos_rule_type.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_qos_rule_type.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_qos_rule_type.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_qos_rule_type.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_quota.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_quota.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_quota.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_quota.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_router.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_router.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_router.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_router.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_router_add_remove_interface.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_router_add_remove_interface.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_router_add_remove_interface.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_router_add_remove_interface.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_security_group.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_security_group.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_security_group.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_security_group.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_security_group_rule.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_security_group_rule.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_security_group_rule.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_security_group_rule.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_segment.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_segment.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_segment.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_segment.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_service_profile.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_service_profile.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_service_profile.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_service_profile.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_service_provider.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_service_provider.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_service_provider.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_service_provider.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_sfc.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_sfc.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_sfc.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_sfc.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_subnet.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_subnet.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_subnet.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_subnet.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_subnet_from_subnet_pool.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_subnet_from_subnet_pool.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_subnet_from_subnet_pool.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_subnet_from_subnet_pool.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_taas.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_taas.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_taas.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_taas.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_trunk.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_trunk.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_trunk.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_trunk.cpython-310.pyc
diff --git a/tests/functional/network/v2/__pycache__/test_vpnaas.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_vpnaas.cpython-310.pyc
similarity index 100%
rename from tests/functional/network/v2/__pycache__/test_vpnaas.cpython-310.pyc
rename to openstack/tests/functional/network/v2/__pycache__/test_vpnaas.cpython-310.pyc
diff --git a/tests/functional/network/v2/test_address_group.py b/openstack/tests/functional/network/v2/test_address_group.py
similarity index 100%
rename from tests/functional/network/v2/test_address_group.py
rename to openstack/tests/functional/network/v2/test_address_group.py
diff --git a/tests/functional/network/v2/test_address_scope.py b/openstack/tests/functional/network/v2/test_address_scope.py
similarity index 100%
rename from tests/functional/network/v2/test_address_scope.py
rename to openstack/tests/functional/network/v2/test_address_scope.py
diff --git a/tests/functional/network/v2/test_agent.py b/openstack/tests/functional/network/v2/test_agent.py
similarity index 100%
rename from tests/functional/network/v2/test_agent.py
rename to openstack/tests/functional/network/v2/test_agent.py
diff --git a/tests/functional/network/v2/test_agent_add_remove_network.py b/openstack/tests/functional/network/v2/test_agent_add_remove_network.py
similarity index 100%
rename from tests/functional/network/v2/test_agent_add_remove_network.py
rename to openstack/tests/functional/network/v2/test_agent_add_remove_network.py
diff --git a/tests/functional/network/v2/test_agent_add_remove_router.py b/openstack/tests/functional/network/v2/test_agent_add_remove_router.py
similarity index 100%
rename from tests/functional/network/v2/test_agent_add_remove_router.py
rename to openstack/tests/functional/network/v2/test_agent_add_remove_router.py
diff --git a/tests/functional/network/v2/test_auto_allocated_topology.py b/openstack/tests/functional/network/v2/test_auto_allocated_topology.py
similarity index 100%
rename from tests/functional/network/v2/test_auto_allocated_topology.py
rename to openstack/tests/functional/network/v2/test_auto_allocated_topology.py
diff --git a/tests/functional/network/v2/test_availability_zone.py b/openstack/tests/functional/network/v2/test_availability_zone.py
similarity index 100%
rename from tests/functional/network/v2/test_availability_zone.py
rename to openstack/tests/functional/network/v2/test_availability_zone.py
diff --git a/tests/functional/network/v2/test_bgp.py b/openstack/tests/functional/network/v2/test_bgp.py
similarity index 100%
rename from tests/functional/network/v2/test_bgp.py
rename to openstack/tests/functional/network/v2/test_bgp.py
diff --git a/tests/functional/network/v2/test_bgpvpn.py b/openstack/tests/functional/network/v2/test_bgpvpn.py
similarity index 100%
rename from tests/functional/network/v2/test_bgpvpn.py
rename to openstack/tests/functional/network/v2/test_bgpvpn.py
diff --git a/tests/functional/network/v2/test_default_security_group_rule.py b/openstack/tests/functional/network/v2/test_default_security_group_rule.py
similarity index 100%
rename from tests/functional/network/v2/test_default_security_group_rule.py
rename to openstack/tests/functional/network/v2/test_default_security_group_rule.py
diff --git a/tests/functional/network/v2/test_dvr_router.py b/openstack/tests/functional/network/v2/test_dvr_router.py
similarity index 100%
rename from tests/functional/network/v2/test_dvr_router.py
rename to openstack/tests/functional/network/v2/test_dvr_router.py
diff --git a/tests/functional/network/v2/test_extension.py b/openstack/tests/functional/network/v2/test_extension.py
similarity index 100%
rename from tests/functional/network/v2/test_extension.py
rename to openstack/tests/functional/network/v2/test_extension.py
diff --git a/tests/functional/network/v2/test_firewall_group.py b/openstack/tests/functional/network/v2/test_firewall_group.py
similarity index 100%
rename from tests/functional/network/v2/test_firewall_group.py
rename to openstack/tests/functional/network/v2/test_firewall_group.py
diff --git a/tests/functional/network/v2/test_firewall_policy.py b/openstack/tests/functional/network/v2/test_firewall_policy.py
similarity index 100%
rename from tests/functional/network/v2/test_firewall_policy.py
rename to openstack/tests/functional/network/v2/test_firewall_policy.py
diff --git a/tests/functional/network/v2/test_firewall_rule.py b/openstack/tests/functional/network/v2/test_firewall_rule.py
similarity index 100%
rename from tests/functional/network/v2/test_firewall_rule.py
rename to openstack/tests/functional/network/v2/test_firewall_rule.py
diff --git a/tests/functional/network/v2/test_firewall_rule_insert_remove_policy.py b/openstack/tests/functional/network/v2/test_firewall_rule_insert_remove_policy.py
similarity index 100%
rename from tests/functional/network/v2/test_firewall_rule_insert_remove_policy.py
rename to openstack/tests/functional/network/v2/test_firewall_rule_insert_remove_policy.py
diff --git a/tests/functional/network/v2/test_flavor.py b/openstack/tests/functional/network/v2/test_flavor.py
similarity index 100%
rename from tests/functional/network/v2/test_flavor.py
rename to openstack/tests/functional/network/v2/test_flavor.py
diff --git a/tests/functional/network/v2/test_floating_ip.py b/openstack/tests/functional/network/v2/test_floating_ip.py
similarity index 100%
rename from tests/functional/network/v2/test_floating_ip.py
rename to openstack/tests/functional/network/v2/test_floating_ip.py
diff --git a/tests/functional/network/v2/test_l3_conntrack_helper.py b/openstack/tests/functional/network/v2/test_l3_conntrack_helper.py
similarity index 100%
rename from tests/functional/network/v2/test_l3_conntrack_helper.py
rename to openstack/tests/functional/network/v2/test_l3_conntrack_helper.py
diff --git a/tests/functional/network/v2/test_local_ip.py b/openstack/tests/functional/network/v2/test_local_ip.py
similarity index 100%
rename from tests/functional/network/v2/test_local_ip.py
rename to openstack/tests/functional/network/v2/test_local_ip.py
diff --git a/tests/functional/network/v2/test_local_ip_association.py b/openstack/tests/functional/network/v2/test_local_ip_association.py
similarity index 100%
rename from tests/functional/network/v2/test_local_ip_association.py
rename to openstack/tests/functional/network/v2/test_local_ip_association.py
diff --git a/tests/functional/network/v2/test_ndp_proxy.py b/openstack/tests/functional/network/v2/test_ndp_proxy.py
similarity index 100%
rename from tests/functional/network/v2/test_ndp_proxy.py
rename to openstack/tests/functional/network/v2/test_ndp_proxy.py
diff --git a/tests/functional/network/v2/test_network.py b/openstack/tests/functional/network/v2/test_network.py
similarity index 100%
rename from tests/functional/network/v2/test_network.py
rename to openstack/tests/functional/network/v2/test_network.py
diff --git a/tests/functional/network/v2/test_network_ip_availability.py b/openstack/tests/functional/network/v2/test_network_ip_availability.py
similarity index 100%
rename from tests/functional/network/v2/test_network_ip_availability.py
rename to openstack/tests/functional/network/v2/test_network_ip_availability.py
diff --git a/tests/functional/network/v2/test_network_segment_range.py b/openstack/tests/functional/network/v2/test_network_segment_range.py
similarity index 100%
rename from tests/functional/network/v2/test_network_segment_range.py
rename to openstack/tests/functional/network/v2/test_network_segment_range.py
diff --git a/tests/functional/network/v2/test_port.py b/openstack/tests/functional/network/v2/test_port.py
similarity index 100%
rename from tests/functional/network/v2/test_port.py
rename to openstack/tests/functional/network/v2/test_port.py
diff --git a/tests/functional/network/v2/test_port_forwarding.py b/openstack/tests/functional/network/v2/test_port_forwarding.py
similarity index 100%
rename from tests/functional/network/v2/test_port_forwarding.py
rename to openstack/tests/functional/network/v2/test_port_forwarding.py
diff --git a/tests/functional/network/v2/test_qos_bandwidth_limit_rule.py b/openstack/tests/functional/network/v2/test_qos_bandwidth_limit_rule.py
similarity index 100%
rename from tests/functional/network/v2/test_qos_bandwidth_limit_rule.py
rename to openstack/tests/functional/network/v2/test_qos_bandwidth_limit_rule.py
diff --git a/tests/functional/network/v2/test_qos_dscp_marking_rule.py b/openstack/tests/functional/network/v2/test_qos_dscp_marking_rule.py
similarity index 100%
rename from tests/functional/network/v2/test_qos_dscp_marking_rule.py
rename to openstack/tests/functional/network/v2/test_qos_dscp_marking_rule.py
diff --git a/tests/functional/network/v2/test_qos_minimum_bandwidth_rule.py b/openstack/tests/functional/network/v2/test_qos_minimum_bandwidth_rule.py
similarity index 100%
rename from tests/functional/network/v2/test_qos_minimum_bandwidth_rule.py
rename to openstack/tests/functional/network/v2/test_qos_minimum_bandwidth_rule.py
diff --git a/tests/functional/network/v2/test_qos_minimum_packet_rate_rule.py b/openstack/tests/functional/network/v2/test_qos_minimum_packet_rate_rule.py
similarity index 100%
rename from tests/functional/network/v2/test_qos_minimum_packet_rate_rule.py
rename to openstack/tests/functional/network/v2/test_qos_minimum_packet_rate_rule.py
diff --git a/tests/functional/network/v2/test_qos_policy.py b/openstack/tests/functional/network/v2/test_qos_policy.py
similarity index 100%
rename from tests/functional/network/v2/test_qos_policy.py
rename to openstack/tests/functional/network/v2/test_qos_policy.py
diff --git a/tests/functional/network/v2/test_qos_rule_type.py b/openstack/tests/functional/network/v2/test_qos_rule_type.py
similarity index 100%
rename from tests/functional/network/v2/test_qos_rule_type.py
rename to openstack/tests/functional/network/v2/test_qos_rule_type.py
diff --git a/tests/functional/network/v2/test_quota.py b/openstack/tests/functional/network/v2/test_quota.py
similarity index 100%
rename from tests/functional/network/v2/test_quota.py
rename to openstack/tests/functional/network/v2/test_quota.py
diff --git a/tests/functional/network/v2/test_rbac_policy.py b/openstack/tests/functional/network/v2/test_rbac_policy.py
similarity index 100%
rename from tests/functional/network/v2/test_rbac_policy.py
rename to openstack/tests/functional/network/v2/test_rbac_policy.py
diff --git a/tests/functional/network/v2/test_router.py b/openstack/tests/functional/network/v2/test_router.py
similarity index 100%
rename from tests/functional/network/v2/test_router.py
rename to openstack/tests/functional/network/v2/test_router.py
diff --git a/tests/functional/network/v2/test_router_add_remove_interface.py b/openstack/tests/functional/network/v2/test_router_add_remove_interface.py
similarity index 100%
rename from tests/functional/network/v2/test_router_add_remove_interface.py
rename to openstack/tests/functional/network/v2/test_router_add_remove_interface.py
diff --git a/tests/functional/network/v2/test_security_group.py b/openstack/tests/functional/network/v2/test_security_group.py
similarity index 100%
rename from tests/functional/network/v2/test_security_group.py
rename to openstack/tests/functional/network/v2/test_security_group.py
diff --git a/tests/functional/network/v2/test_security_group_rule.py b/openstack/tests/functional/network/v2/test_security_group_rule.py
similarity index 100%
rename from tests/functional/network/v2/test_security_group_rule.py
rename to openstack/tests/functional/network/v2/test_security_group_rule.py
diff --git a/tests/functional/network/v2/test_segment.py b/openstack/tests/functional/network/v2/test_segment.py
similarity index 100%
rename from tests/functional/network/v2/test_segment.py
rename to openstack/tests/functional/network/v2/test_segment.py
diff --git a/tests/functional/network/v2/test_service_profile.py b/openstack/tests/functional/network/v2/test_service_profile.py
similarity index 100%
rename from tests/functional/network/v2/test_service_profile.py
rename to openstack/tests/functional/network/v2/test_service_profile.py
diff --git a/tests/functional/network/v2/test_service_provider.py b/openstack/tests/functional/network/v2/test_service_provider.py
similarity index 100%
rename from tests/functional/network/v2/test_service_provider.py
rename to openstack/tests/functional/network/v2/test_service_provider.py
diff --git a/tests/functional/network/v2/test_sfc.py b/openstack/tests/functional/network/v2/test_sfc.py
similarity index 100%
rename from tests/functional/network/v2/test_sfc.py
rename to openstack/tests/functional/network/v2/test_sfc.py
diff --git a/tests/functional/network/v2/test_subnet.py b/openstack/tests/functional/network/v2/test_subnet.py
similarity index 100%
rename from tests/functional/network/v2/test_subnet.py
rename to openstack/tests/functional/network/v2/test_subnet.py
diff --git a/tests/functional/network/v2/test_subnet_from_subnet_pool.py b/openstack/tests/functional/network/v2/test_subnet_from_subnet_pool.py
similarity index 100%
rename from tests/functional/network/v2/test_subnet_from_subnet_pool.py
rename to openstack/tests/functional/network/v2/test_subnet_from_subnet_pool.py
diff --git a/tests/functional/network/v2/test_subnet_pool.py b/openstack/tests/functional/network/v2/test_subnet_pool.py
similarity index 100%
rename from tests/functional/network/v2/test_subnet_pool.py
rename to openstack/tests/functional/network/v2/test_subnet_pool.py
diff --git a/tests/functional/network/v2/test_taas.py b/openstack/tests/functional/network/v2/test_taas.py
similarity index 100%
rename from tests/functional/network/v2/test_taas.py
rename to openstack/tests/functional/network/v2/test_taas.py
diff --git a/tests/functional/network/v2/test_trunk.py b/openstack/tests/functional/network/v2/test_trunk.py
similarity index 100%
rename from tests/functional/network/v2/test_trunk.py
rename to openstack/tests/functional/network/v2/test_trunk.py
diff --git a/tests/functional/network/v2/test_vpnaas.py b/openstack/tests/functional/network/v2/test_vpnaas.py
similarity index 100%
rename from tests/functional/network/v2/test_vpnaas.py
rename to openstack/tests/functional/network/v2/test_vpnaas.py
diff --git a/tests/unit/accelerator/v2/__init__.py b/openstack/tests/functional/object_store/__init__.py
similarity index 100%
rename from tests/unit/accelerator/v2/__init__.py
rename to openstack/tests/functional/object_store/__init__.py
diff --git a/tests/functional/object_store/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/object_store/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/object_store/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/object_store/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/baremetal/__init__.py b/openstack/tests/functional/object_store/v1/__init__.py
similarity index 100%
rename from tests/unit/baremetal/__init__.py
rename to openstack/tests/functional/object_store/v1/__init__.py
diff --git a/tests/functional/object_store/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/object_store/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/object_store/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/object_store/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/object_store/v1/__pycache__/test_account.cpython-310.pyc b/openstack/tests/functional/object_store/v1/__pycache__/test_account.cpython-310.pyc
similarity index 100%
rename from tests/functional/object_store/v1/__pycache__/test_account.cpython-310.pyc
rename to openstack/tests/functional/object_store/v1/__pycache__/test_account.cpython-310.pyc
diff --git a/tests/functional/object_store/v1/__pycache__/test_container.cpython-310.pyc b/openstack/tests/functional/object_store/v1/__pycache__/test_container.cpython-310.pyc
similarity index 100%
rename from tests/functional/object_store/v1/__pycache__/test_container.cpython-310.pyc
rename to openstack/tests/functional/object_store/v1/__pycache__/test_container.cpython-310.pyc
diff --git a/tests/functional/object_store/v1/__pycache__/test_obj.cpython-310.pyc b/openstack/tests/functional/object_store/v1/__pycache__/test_obj.cpython-310.pyc
similarity index 100%
rename from tests/functional/object_store/v1/__pycache__/test_obj.cpython-310.pyc
rename to openstack/tests/functional/object_store/v1/__pycache__/test_obj.cpython-310.pyc
diff --git a/tests/functional/object_store/v1/test_account.py b/openstack/tests/functional/object_store/v1/test_account.py
similarity index 100%
rename from tests/functional/object_store/v1/test_account.py
rename to openstack/tests/functional/object_store/v1/test_account.py
diff --git a/tests/functional/object_store/v1/test_container.py b/openstack/tests/functional/object_store/v1/test_container.py
similarity index 100%
rename from tests/functional/object_store/v1/test_container.py
rename to openstack/tests/functional/object_store/v1/test_container.py
diff --git a/tests/functional/object_store/v1/test_obj.py b/openstack/tests/functional/object_store/v1/test_obj.py
similarity index 100%
rename from tests/functional/object_store/v1/test_obj.py
rename to openstack/tests/functional/object_store/v1/test_obj.py
diff --git a/tests/unit/baremetal/v1/__init__.py b/openstack/tests/functional/orchestration/__init__.py
similarity index 100%
rename from tests/unit/baremetal/v1/__init__.py
rename to openstack/tests/functional/orchestration/__init__.py
diff --git a/tests/functional/orchestration/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/orchestration/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/orchestration/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/orchestration/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/baremetal_introspection/__init__.py b/openstack/tests/functional/orchestration/v1/__init__.py
similarity index 100%
rename from tests/unit/baremetal_introspection/__init__.py
rename to openstack/tests/functional/orchestration/v1/__init__.py
diff --git a/tests/functional/orchestration/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/orchestration/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/orchestration/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/orchestration/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/orchestration/v1/__pycache__/test_stack.cpython-310.pyc b/openstack/tests/functional/orchestration/v1/__pycache__/test_stack.cpython-310.pyc
similarity index 100%
rename from tests/functional/orchestration/v1/__pycache__/test_stack.cpython-310.pyc
rename to openstack/tests/functional/orchestration/v1/__pycache__/test_stack.cpython-310.pyc
diff --git a/tests/functional/orchestration/v1/hello_world.yaml b/openstack/tests/functional/orchestration/v1/hello_world.yaml
similarity index 100%
rename from tests/functional/orchestration/v1/hello_world.yaml
rename to openstack/tests/functional/orchestration/v1/hello_world.yaml
diff --git a/tests/functional/orchestration/v1/test_stack.py b/openstack/tests/functional/orchestration/v1/test_stack.py
similarity index 100%
rename from tests/functional/orchestration/v1/test_stack.py
rename to openstack/tests/functional/orchestration/v1/test_stack.py
diff --git a/tests/unit/baremetal_introspection/v1/__init__.py b/openstack/tests/functional/placement/__init__.py
similarity index 100%
rename from tests/unit/baremetal_introspection/v1/__init__.py
rename to openstack/tests/functional/placement/__init__.py
diff --git a/tests/functional/placement/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/placement/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/placement/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/placement/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/block_storage/__init__.py b/openstack/tests/functional/placement/v1/__init__.py
similarity index 100%
rename from tests/unit/block_storage/__init__.py
rename to openstack/tests/functional/placement/v1/__init__.py
diff --git a/tests/functional/placement/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/placement/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/placement/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/placement/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc b/openstack/tests/functional/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc
similarity index 100%
rename from tests/functional/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc
rename to openstack/tests/functional/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc
diff --git a/tests/functional/placement/v1/__pycache__/test_resource_provider_inventory.cpython-310.pyc b/openstack/tests/functional/placement/v1/__pycache__/test_resource_provider_inventory.cpython-310.pyc
similarity index 100%
rename from tests/functional/placement/v1/__pycache__/test_resource_provider_inventory.cpython-310.pyc
rename to openstack/tests/functional/placement/v1/__pycache__/test_resource_provider_inventory.cpython-310.pyc
diff --git a/tests/functional/placement/v1/__pycache__/test_trait.cpython-310.pyc b/openstack/tests/functional/placement/v1/__pycache__/test_trait.cpython-310.pyc
similarity index 100%
rename from tests/functional/placement/v1/__pycache__/test_trait.cpython-310.pyc
rename to openstack/tests/functional/placement/v1/__pycache__/test_trait.cpython-310.pyc
diff --git a/tests/functional/placement/v1/test_resource_provider.py b/openstack/tests/functional/placement/v1/test_resource_provider.py
similarity index 100%
rename from tests/functional/placement/v1/test_resource_provider.py
rename to openstack/tests/functional/placement/v1/test_resource_provider.py
diff --git a/tests/functional/placement/v1/test_resource_provider_inventory.py b/openstack/tests/functional/placement/v1/test_resource_provider_inventory.py
similarity index 100%
rename from tests/functional/placement/v1/test_resource_provider_inventory.py
rename to openstack/tests/functional/placement/v1/test_resource_provider_inventory.py
diff --git a/tests/functional/placement/v1/test_trait.py b/openstack/tests/functional/placement/v1/test_trait.py
similarity index 100%
rename from tests/functional/placement/v1/test_trait.py
rename to openstack/tests/functional/placement/v1/test_trait.py
diff --git a/tests/unit/block_storage/v2/__init__.py b/openstack/tests/functional/shared_file_system/__init__.py
similarity index 100%
rename from tests/unit/block_storage/v2/__init__.py
rename to openstack/tests/functional/shared_file_system/__init__.py
diff --git a/tests/functional/shared_file_system/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/base.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/base.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/base.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/base.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/test_availability_zone.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_availability_zone.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/test_availability_zone.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/test_availability_zone.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/test_export_locations.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_export_locations.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/test_export_locations.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/test_export_locations.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/test_limit.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_limit.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/test_limit.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/test_limit.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/test_share.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_share.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/test_share.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/test_share.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/test_share_access_rule.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_share_access_rule.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/test_share_access_rule.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/test_share_access_rule.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/test_share_group.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_share_group.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/test_share_group.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/test_share_group.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/test_share_group_snapshot.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_share_group_snapshot.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/test_share_group_snapshot.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/test_share_group_snapshot.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/test_share_instance.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_share_instance.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/test_share_instance.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/test_share_instance.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/test_share_metadata.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_share_metadata.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/test_share_metadata.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/test_share_metadata.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/test_share_network.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_share_network.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/test_share_network.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/test_share_network.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/test_share_network_subnet.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_share_network_subnet.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/test_share_network_subnet.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/test_share_network_subnet.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/test_share_snapshot.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_share_snapshot.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/test_share_snapshot.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/test_share_snapshot.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/test_share_snapshot_instance.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_share_snapshot_instance.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/test_share_snapshot_instance.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/test_share_snapshot_instance.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/test_storage_pool.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_storage_pool.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/test_storage_pool.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/test_storage_pool.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/__pycache__/test_user_message.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_user_message.cpython-310.pyc
similarity index 100%
rename from tests/functional/shared_file_system/__pycache__/test_user_message.cpython-310.pyc
rename to openstack/tests/functional/shared_file_system/__pycache__/test_user_message.cpython-310.pyc
diff --git a/tests/functional/shared_file_system/base.py b/openstack/tests/functional/shared_file_system/base.py
similarity index 100%
rename from tests/functional/shared_file_system/base.py
rename to openstack/tests/functional/shared_file_system/base.py
diff --git a/tests/functional/shared_file_system/test_availability_zone.py b/openstack/tests/functional/shared_file_system/test_availability_zone.py
similarity index 100%
rename from tests/functional/shared_file_system/test_availability_zone.py
rename to openstack/tests/functional/shared_file_system/test_availability_zone.py
diff --git a/tests/functional/shared_file_system/test_export_locations.py b/openstack/tests/functional/shared_file_system/test_export_locations.py
similarity index 100%
rename from tests/functional/shared_file_system/test_export_locations.py
rename to openstack/tests/functional/shared_file_system/test_export_locations.py
diff --git a/tests/functional/shared_file_system/test_limit.py b/openstack/tests/functional/shared_file_system/test_limit.py
similarity index 100%
rename from tests/functional/shared_file_system/test_limit.py
rename to openstack/tests/functional/shared_file_system/test_limit.py
diff --git a/tests/functional/shared_file_system/test_share.py b/openstack/tests/functional/shared_file_system/test_share.py
similarity index 100%
rename from tests/functional/shared_file_system/test_share.py
rename to openstack/tests/functional/shared_file_system/test_share.py
diff --git a/tests/functional/shared_file_system/test_share_access_rule.py b/openstack/tests/functional/shared_file_system/test_share_access_rule.py
similarity index 100%
rename from tests/functional/shared_file_system/test_share_access_rule.py
rename to openstack/tests/functional/shared_file_system/test_share_access_rule.py
diff --git a/tests/functional/shared_file_system/test_share_group.py b/openstack/tests/functional/shared_file_system/test_share_group.py
similarity index 100%
rename from tests/functional/shared_file_system/test_share_group.py
rename to openstack/tests/functional/shared_file_system/test_share_group.py
diff --git a/tests/functional/shared_file_system/test_share_group_snapshot.py b/openstack/tests/functional/shared_file_system/test_share_group_snapshot.py
similarity index 100%
rename from tests/functional/shared_file_system/test_share_group_snapshot.py
rename to openstack/tests/functional/shared_file_system/test_share_group_snapshot.py
diff --git a/tests/functional/shared_file_system/test_share_instance.py b/openstack/tests/functional/shared_file_system/test_share_instance.py
similarity index 100%
rename from tests/functional/shared_file_system/test_share_instance.py
rename to openstack/tests/functional/shared_file_system/test_share_instance.py
diff --git a/tests/functional/shared_file_system/test_share_metadata.py b/openstack/tests/functional/shared_file_system/test_share_metadata.py
similarity index 100%
rename from tests/functional/shared_file_system/test_share_metadata.py
rename to openstack/tests/functional/shared_file_system/test_share_metadata.py
diff --git a/tests/functional/shared_file_system/test_share_network.py b/openstack/tests/functional/shared_file_system/test_share_network.py
similarity index 100%
rename from tests/functional/shared_file_system/test_share_network.py
rename to openstack/tests/functional/shared_file_system/test_share_network.py
diff --git a/tests/functional/shared_file_system/test_share_network_subnet.py b/openstack/tests/functional/shared_file_system/test_share_network_subnet.py
similarity index 100%
rename from tests/functional/shared_file_system/test_share_network_subnet.py
rename to openstack/tests/functional/shared_file_system/test_share_network_subnet.py
diff --git a/tests/functional/shared_file_system/test_share_snapshot.py b/openstack/tests/functional/shared_file_system/test_share_snapshot.py
similarity index 100%
rename from tests/functional/shared_file_system/test_share_snapshot.py
rename to openstack/tests/functional/shared_file_system/test_share_snapshot.py
diff --git a/tests/functional/shared_file_system/test_share_snapshot_instance.py b/openstack/tests/functional/shared_file_system/test_share_snapshot_instance.py
similarity index 100%
rename from tests/functional/shared_file_system/test_share_snapshot_instance.py
rename to openstack/tests/functional/shared_file_system/test_share_snapshot_instance.py
diff --git a/tests/functional/shared_file_system/test_storage_pool.py b/openstack/tests/functional/shared_file_system/test_storage_pool.py
similarity index 100%
rename from tests/functional/shared_file_system/test_storage_pool.py
rename to openstack/tests/functional/shared_file_system/test_storage_pool.py
diff --git a/tests/functional/shared_file_system/test_user_message.py b/openstack/tests/functional/shared_file_system/test_user_message.py
similarity index 100%
rename from tests/functional/shared_file_system/test_user_message.py
rename to openstack/tests/functional/shared_file_system/test_user_message.py
diff --git a/tests/unit/README.rst b/openstack/tests/unit/README.rst
similarity index 100%
rename from tests/unit/README.rst
rename to openstack/tests/unit/README.rst
diff --git a/tests/unit/block_storage/v3/__init__.py b/openstack/tests/unit/__init__.py
similarity index 100%
rename from tests/unit/block_storage/v3/__init__.py
rename to openstack/tests/unit/__init__.py
diff --git a/tests/unit/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/__pycache__/base.cpython-310.pyc b/openstack/tests/unit/__pycache__/base.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/base.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/base.cpython-310.pyc
diff --git a/tests/unit/__pycache__/fakes.cpython-310.pyc b/openstack/tests/unit/__pycache__/fakes.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/fakes.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/fakes.cpython-310.pyc
diff --git a/tests/unit/__pycache__/test_connection.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_connection.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/test_connection.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/test_connection.cpython-310.pyc
diff --git a/tests/unit/__pycache__/test_exceptions.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_exceptions.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/test_exceptions.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/test_exceptions.cpython-310.pyc
diff --git a/tests/unit/__pycache__/test_fakes.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_fakes.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/test_fakes.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/test_fakes.cpython-310.pyc
diff --git a/tests/unit/__pycache__/test_format.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_format.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/test_format.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/test_format.cpython-310.pyc
diff --git a/tests/unit/__pycache__/test_hacking.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_hacking.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/test_hacking.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/test_hacking.cpython-310.pyc
diff --git a/tests/unit/__pycache__/test_microversions.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_microversions.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/test_microversions.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/test_microversions.cpython-310.pyc
diff --git a/tests/unit/__pycache__/test_missing_version.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_missing_version.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/test_missing_version.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/test_missing_version.cpython-310.pyc
diff --git a/tests/unit/__pycache__/test_placement_rest.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_placement_rest.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/test_placement_rest.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/test_placement_rest.cpython-310.pyc
diff --git a/tests/unit/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/__pycache__/test_proxy_base.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_proxy_base.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/test_proxy_base.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/test_proxy_base.cpython-310.pyc
diff --git a/tests/unit/__pycache__/test_resource.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_resource.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/test_resource.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/test_resource.cpython-310.pyc
diff --git a/tests/unit/__pycache__/test_stats.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_stats.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/test_stats.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/test_stats.cpython-310.pyc
diff --git a/tests/unit/__pycache__/test_utils.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_utils.cpython-310.pyc
similarity index 100%
rename from tests/unit/__pycache__/test_utils.cpython-310.pyc
rename to openstack/tests/unit/__pycache__/test_utils.cpython-310.pyc
diff --git a/tests/unit/cloud/__init__.py b/openstack/tests/unit/accelerator/__init__.py
similarity index 100%
rename from tests/unit/cloud/__init__.py
rename to openstack/tests/unit/accelerator/__init__.py
diff --git a/tests/unit/accelerator/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/accelerator/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/accelerator/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/accelerator/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/accelerator/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/accelerator/__pycache__/test_version.cpython-310.pyc
similarity index 100%
rename from tests/unit/accelerator/__pycache__/test_version.cpython-310.pyc
rename to openstack/tests/unit/accelerator/__pycache__/test_version.cpython-310.pyc
diff --git a/tests/unit/accelerator/test_version.py b/openstack/tests/unit/accelerator/test_version.py
similarity index 100%
rename from tests/unit/accelerator/test_version.py
rename to openstack/tests/unit/accelerator/test_version.py
diff --git a/tests/unit/clustering/__init__.py b/openstack/tests/unit/accelerator/v2/__init__.py
similarity index 100%
rename from tests/unit/clustering/__init__.py
rename to openstack/tests/unit/accelerator/v2/__init__.py
diff --git a/tests/unit/accelerator/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/accelerator/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/accelerator/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/accelerator/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/accelerator/v2/__pycache__/test_accelerator_request.cpython-310.pyc b/openstack/tests/unit/accelerator/v2/__pycache__/test_accelerator_request.cpython-310.pyc
similarity index 100%
rename from tests/unit/accelerator/v2/__pycache__/test_accelerator_request.cpython-310.pyc
rename to openstack/tests/unit/accelerator/v2/__pycache__/test_accelerator_request.cpython-310.pyc
diff --git a/tests/unit/accelerator/v2/__pycache__/test_deployable.cpython-310.pyc b/openstack/tests/unit/accelerator/v2/__pycache__/test_deployable.cpython-310.pyc
similarity index 100%
rename from tests/unit/accelerator/v2/__pycache__/test_deployable.cpython-310.pyc
rename to openstack/tests/unit/accelerator/v2/__pycache__/test_deployable.cpython-310.pyc
diff --git a/tests/unit/accelerator/v2/__pycache__/test_device.cpython-310.pyc b/openstack/tests/unit/accelerator/v2/__pycache__/test_device.cpython-310.pyc
similarity index 100%
rename from tests/unit/accelerator/v2/__pycache__/test_device.cpython-310.pyc
rename to openstack/tests/unit/accelerator/v2/__pycache__/test_device.cpython-310.pyc
diff --git a/tests/unit/accelerator/v2/__pycache__/test_device_profile.cpython-310.pyc b/openstack/tests/unit/accelerator/v2/__pycache__/test_device_profile.cpython-310.pyc
similarity index 100%
rename from tests/unit/accelerator/v2/__pycache__/test_device_profile.cpython-310.pyc
rename to openstack/tests/unit/accelerator/v2/__pycache__/test_device_profile.cpython-310.pyc
diff --git a/tests/unit/accelerator/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/accelerator/v2/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/accelerator/v2/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/accelerator/v2/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/accelerator/v2/test_accelerator_request.py b/openstack/tests/unit/accelerator/v2/test_accelerator_request.py
similarity index 100%
rename from tests/unit/accelerator/v2/test_accelerator_request.py
rename to openstack/tests/unit/accelerator/v2/test_accelerator_request.py
diff --git a/tests/unit/accelerator/v2/test_deployable.py b/openstack/tests/unit/accelerator/v2/test_deployable.py
similarity index 100%
rename from tests/unit/accelerator/v2/test_deployable.py
rename to openstack/tests/unit/accelerator/v2/test_deployable.py
diff --git a/tests/unit/accelerator/v2/test_device.py b/openstack/tests/unit/accelerator/v2/test_device.py
similarity index 100%
rename from tests/unit/accelerator/v2/test_device.py
rename to openstack/tests/unit/accelerator/v2/test_device.py
diff --git a/tests/unit/accelerator/v2/test_device_profile.py b/openstack/tests/unit/accelerator/v2/test_device_profile.py
similarity index 100%
rename from tests/unit/accelerator/v2/test_device_profile.py
rename to openstack/tests/unit/accelerator/v2/test_device_profile.py
diff --git a/tests/unit/accelerator/v2/test_proxy.py b/openstack/tests/unit/accelerator/v2/test_proxy.py
similarity index 100%
rename from tests/unit/accelerator/v2/test_proxy.py
rename to openstack/tests/unit/accelerator/v2/test_proxy.py
diff --git a/tests/unit/clustering/v1/__init__.py b/openstack/tests/unit/baremetal/__init__.py
similarity index 100%
rename from tests/unit/clustering/v1/__init__.py
rename to openstack/tests/unit/baremetal/__init__.py
diff --git a/tests/unit/baremetal/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/baremetal/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/baremetal/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/baremetal/__pycache__/test_configdrive.cpython-310.pyc b/openstack/tests/unit/baremetal/__pycache__/test_configdrive.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal/__pycache__/test_configdrive.cpython-310.pyc
rename to openstack/tests/unit/baremetal/__pycache__/test_configdrive.cpython-310.pyc
diff --git a/tests/unit/baremetal/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/baremetal/__pycache__/test_version.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal/__pycache__/test_version.cpython-310.pyc
rename to openstack/tests/unit/baremetal/__pycache__/test_version.cpython-310.pyc
diff --git a/tests/unit/baremetal/test_configdrive.py b/openstack/tests/unit/baremetal/test_configdrive.py
similarity index 100%
rename from tests/unit/baremetal/test_configdrive.py
rename to openstack/tests/unit/baremetal/test_configdrive.py
diff --git a/tests/unit/baremetal/test_version.py b/openstack/tests/unit/baremetal/test_version.py
similarity index 100%
rename from tests/unit/baremetal/test_version.py
rename to openstack/tests/unit/baremetal/test_version.py
diff --git a/tests/unit/common/__init__.py b/openstack/tests/unit/baremetal/v1/__init__.py
similarity index 100%
rename from tests/unit/common/__init__.py
rename to openstack/tests/unit/baremetal/v1/__init__.py
diff --git a/tests/unit/baremetal/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/baremetal/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/baremetal/v1/__pycache__/test_allocation.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_allocation.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal/v1/__pycache__/test_allocation.cpython-310.pyc
rename to openstack/tests/unit/baremetal/v1/__pycache__/test_allocation.cpython-310.pyc
diff --git a/tests/unit/baremetal/v1/__pycache__/test_chassis.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_chassis.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal/v1/__pycache__/test_chassis.cpython-310.pyc
rename to openstack/tests/unit/baremetal/v1/__pycache__/test_chassis.cpython-310.pyc
diff --git a/tests/unit/baremetal/v1/__pycache__/test_conductor.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_conductor.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal/v1/__pycache__/test_conductor.cpython-310.pyc
rename to openstack/tests/unit/baremetal/v1/__pycache__/test_conductor.cpython-310.pyc
diff --git a/tests/unit/baremetal/v1/__pycache__/test_deploy_templates.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_deploy_templates.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal/v1/__pycache__/test_deploy_templates.cpython-310.pyc
rename to openstack/tests/unit/baremetal/v1/__pycache__/test_deploy_templates.cpython-310.pyc
diff --git a/tests/unit/baremetal/v1/__pycache__/test_driver.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_driver.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal/v1/__pycache__/test_driver.cpython-310.pyc
rename to openstack/tests/unit/baremetal/v1/__pycache__/test_driver.cpython-310.pyc
diff --git a/tests/unit/baremetal/v1/__pycache__/test_node.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_node.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal/v1/__pycache__/test_node.cpython-310.pyc
rename to openstack/tests/unit/baremetal/v1/__pycache__/test_node.cpython-310.pyc
diff --git a/tests/unit/baremetal/v1/__pycache__/test_port.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_port.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal/v1/__pycache__/test_port.cpython-310.pyc
rename to openstack/tests/unit/baremetal/v1/__pycache__/test_port.cpython-310.pyc
diff --git a/tests/unit/baremetal/v1/__pycache__/test_port_group.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_port_group.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal/v1/__pycache__/test_port_group.cpython-310.pyc
rename to openstack/tests/unit/baremetal/v1/__pycache__/test_port_group.cpython-310.pyc
diff --git a/tests/unit/baremetal/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal/v1/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/baremetal/v1/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/baremetal/v1/__pycache__/test_volume_connector.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_volume_connector.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal/v1/__pycache__/test_volume_connector.cpython-310.pyc
rename to openstack/tests/unit/baremetal/v1/__pycache__/test_volume_connector.cpython-310.pyc
diff --git a/tests/unit/baremetal/v1/__pycache__/test_volume_target.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_volume_target.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal/v1/__pycache__/test_volume_target.cpython-310.pyc
rename to openstack/tests/unit/baremetal/v1/__pycache__/test_volume_target.cpython-310.pyc
diff --git a/tests/unit/baremetal/v1/test_allocation.py b/openstack/tests/unit/baremetal/v1/test_allocation.py
similarity index 100%
rename from tests/unit/baremetal/v1/test_allocation.py
rename to openstack/tests/unit/baremetal/v1/test_allocation.py
diff --git a/tests/unit/baremetal/v1/test_chassis.py b/openstack/tests/unit/baremetal/v1/test_chassis.py
similarity index 100%
rename from tests/unit/baremetal/v1/test_chassis.py
rename to openstack/tests/unit/baremetal/v1/test_chassis.py
diff --git a/tests/unit/baremetal/v1/test_conductor.py b/openstack/tests/unit/baremetal/v1/test_conductor.py
similarity index 100%
rename from tests/unit/baremetal/v1/test_conductor.py
rename to openstack/tests/unit/baremetal/v1/test_conductor.py
diff --git a/tests/unit/baremetal/v1/test_deploy_templates.py b/openstack/tests/unit/baremetal/v1/test_deploy_templates.py
similarity index 100%
rename from tests/unit/baremetal/v1/test_deploy_templates.py
rename to openstack/tests/unit/baremetal/v1/test_deploy_templates.py
diff --git a/tests/unit/baremetal/v1/test_driver.py b/openstack/tests/unit/baremetal/v1/test_driver.py
similarity index 100%
rename from tests/unit/baremetal/v1/test_driver.py
rename to openstack/tests/unit/baremetal/v1/test_driver.py
diff --git a/tests/unit/baremetal/v1/test_node.py b/openstack/tests/unit/baremetal/v1/test_node.py
similarity index 100%
rename from tests/unit/baremetal/v1/test_node.py
rename to openstack/tests/unit/baremetal/v1/test_node.py
diff --git a/tests/unit/baremetal/v1/test_port.py b/openstack/tests/unit/baremetal/v1/test_port.py
similarity index 100%
rename from tests/unit/baremetal/v1/test_port.py
rename to openstack/tests/unit/baremetal/v1/test_port.py
diff --git a/tests/unit/baremetal/v1/test_port_group.py b/openstack/tests/unit/baremetal/v1/test_port_group.py
similarity index 100%
rename from tests/unit/baremetal/v1/test_port_group.py
rename to openstack/tests/unit/baremetal/v1/test_port_group.py
diff --git a/tests/unit/baremetal/v1/test_proxy.py b/openstack/tests/unit/baremetal/v1/test_proxy.py
similarity index 100%
rename from tests/unit/baremetal/v1/test_proxy.py
rename to openstack/tests/unit/baremetal/v1/test_proxy.py
diff --git a/tests/unit/baremetal/v1/test_volume_connector.py b/openstack/tests/unit/baremetal/v1/test_volume_connector.py
similarity index 100%
rename from tests/unit/baremetal/v1/test_volume_connector.py
rename to openstack/tests/unit/baremetal/v1/test_volume_connector.py
diff --git a/tests/unit/baremetal/v1/test_volume_target.py b/openstack/tests/unit/baremetal/v1/test_volume_target.py
similarity index 100%
rename from tests/unit/baremetal/v1/test_volume_target.py
rename to openstack/tests/unit/baremetal/v1/test_volume_target.py
diff --git a/tests/unit/compute/__init__.py b/openstack/tests/unit/baremetal_introspection/__init__.py
similarity index 100%
rename from tests/unit/compute/__init__.py
rename to openstack/tests/unit/baremetal_introspection/__init__.py
diff --git a/tests/unit/baremetal_introspection/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/baremetal_introspection/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal_introspection/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/baremetal_introspection/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__init__.py b/openstack/tests/unit/baremetal_introspection/v1/__init__.py
similarity index 100%
rename from tests/unit/compute/v2/__init__.py
rename to openstack/tests/unit/baremetal_introspection/v1/__init__.py
diff --git a/tests/unit/baremetal_introspection/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/baremetal_introspection/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal_introspection/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/baremetal_introspection/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/baremetal_introspection/v1/__pycache__/test_introspection_rule.cpython-310.pyc b/openstack/tests/unit/baremetal_introspection/v1/__pycache__/test_introspection_rule.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal_introspection/v1/__pycache__/test_introspection_rule.cpython-310.pyc
rename to openstack/tests/unit/baremetal_introspection/v1/__pycache__/test_introspection_rule.cpython-310.pyc
diff --git a/tests/unit/baremetal_introspection/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/baremetal_introspection/v1/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/baremetal_introspection/v1/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/baremetal_introspection/v1/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/baremetal_introspection/v1/test_introspection_rule.py b/openstack/tests/unit/baremetal_introspection/v1/test_introspection_rule.py
similarity index 100%
rename from tests/unit/baremetal_introspection/v1/test_introspection_rule.py
rename to openstack/tests/unit/baremetal_introspection/v1/test_introspection_rule.py
diff --git a/tests/unit/baremetal_introspection/v1/test_proxy.py b/openstack/tests/unit/baremetal_introspection/v1/test_proxy.py
similarity index 100%
rename from tests/unit/baremetal_introspection/v1/test_proxy.py
rename to openstack/tests/unit/baremetal_introspection/v1/test_proxy.py
diff --git a/tests/unit/base.py b/openstack/tests/unit/base.py
similarity index 100%
rename from tests/unit/base.py
rename to openstack/tests/unit/base.py
diff --git a/tests/unit/config/__init__.py b/openstack/tests/unit/block_storage/__init__.py
similarity index 100%
rename from tests/unit/config/__init__.py
rename to openstack/tests/unit/block_storage/__init__.py
diff --git a/tests/unit/block_storage/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/block_storage/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/block_storage/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/container_infrastructure_management/__init__.py b/openstack/tests/unit/block_storage/v2/__init__.py
similarity index 100%
rename from tests/unit/container_infrastructure_management/__init__.py
rename to openstack/tests/unit/block_storage/v2/__init__.py
diff --git a/tests/unit/block_storage/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/block_storage/v2/__pycache__/test_backup.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_backup.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v2/__pycache__/test_backup.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v2/__pycache__/test_backup.cpython-310.pyc
diff --git a/tests/unit/block_storage/v2/__pycache__/test_capabilities.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_capabilities.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v2/__pycache__/test_capabilities.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v2/__pycache__/test_capabilities.cpython-310.pyc
diff --git a/tests/unit/block_storage/v2/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_extension.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v2/__pycache__/test_extension.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v2/__pycache__/test_extension.cpython-310.pyc
diff --git a/tests/unit/block_storage/v2/__pycache__/test_limits.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_limits.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v2/__pycache__/test_limits.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v2/__pycache__/test_limits.cpython-310.pyc
diff --git a/tests/unit/block_storage/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v2/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v2/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc
diff --git a/tests/unit/block_storage/v2/__pycache__/test_stats.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_stats.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v2/__pycache__/test_stats.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v2/__pycache__/test_stats.cpython-310.pyc
diff --git a/tests/unit/block_storage/v2/__pycache__/test_type.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_type.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v2/__pycache__/test_type.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v2/__pycache__/test_type.cpython-310.pyc
diff --git a/tests/unit/block_storage/v2/__pycache__/test_volume.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_volume.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v2/__pycache__/test_volume.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v2/__pycache__/test_volume.cpython-310.pyc
diff --git a/tests/unit/block_storage/v2/test_backup.py b/openstack/tests/unit/block_storage/v2/test_backup.py
similarity index 100%
rename from tests/unit/block_storage/v2/test_backup.py
rename to openstack/tests/unit/block_storage/v2/test_backup.py
diff --git a/tests/unit/block_storage/v2/test_capabilities.py b/openstack/tests/unit/block_storage/v2/test_capabilities.py
similarity index 100%
rename from tests/unit/block_storage/v2/test_capabilities.py
rename to openstack/tests/unit/block_storage/v2/test_capabilities.py
diff --git a/tests/unit/block_storage/v2/test_extension.py b/openstack/tests/unit/block_storage/v2/test_extension.py
similarity index 100%
rename from tests/unit/block_storage/v2/test_extension.py
rename to openstack/tests/unit/block_storage/v2/test_extension.py
diff --git a/tests/unit/block_storage/v2/test_limits.py b/openstack/tests/unit/block_storage/v2/test_limits.py
similarity index 100%
rename from tests/unit/block_storage/v2/test_limits.py
rename to openstack/tests/unit/block_storage/v2/test_limits.py
diff --git a/tests/unit/block_storage/v2/test_proxy.py b/openstack/tests/unit/block_storage/v2/test_proxy.py
similarity index 100%
rename from tests/unit/block_storage/v2/test_proxy.py
rename to openstack/tests/unit/block_storage/v2/test_proxy.py
diff --git a/tests/unit/block_storage/v2/test_snapshot.py b/openstack/tests/unit/block_storage/v2/test_snapshot.py
similarity index 100%
rename from tests/unit/block_storage/v2/test_snapshot.py
rename to openstack/tests/unit/block_storage/v2/test_snapshot.py
diff --git a/tests/unit/block_storage/v2/test_stats.py b/openstack/tests/unit/block_storage/v2/test_stats.py
similarity index 100%
rename from tests/unit/block_storage/v2/test_stats.py
rename to openstack/tests/unit/block_storage/v2/test_stats.py
diff --git a/tests/unit/block_storage/v2/test_type.py b/openstack/tests/unit/block_storage/v2/test_type.py
similarity index 100%
rename from tests/unit/block_storage/v2/test_type.py
rename to openstack/tests/unit/block_storage/v2/test_type.py
diff --git a/tests/unit/block_storage/v2/test_volume.py b/openstack/tests/unit/block_storage/v2/test_volume.py
similarity index 100%
rename from tests/unit/block_storage/v2/test_volume.py
rename to openstack/tests/unit/block_storage/v2/test_volume.py
diff --git a/tests/unit/container_infrastructure_management/v1/__init__.py b/openstack/tests/unit/block_storage/v3/__init__.py
similarity index 100%
rename from tests/unit/container_infrastructure_management/v1/__init__.py
rename to openstack/tests/unit/block_storage/v3/__init__.py
diff --git a/tests/unit/block_storage/v3/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_availability_zone.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_availability_zone.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_availability_zone.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_availability_zone.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_backup.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_backup.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_backup.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_backup.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_block_storage_summary.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_block_storage_summary.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_block_storage_summary.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_block_storage_summary.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_extension.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_extension.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_extension.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_group.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_group.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_group.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_group.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_group_snapshot.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_group_snapshot.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_group_snapshot.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_group_snapshot.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_group_type.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_group_type.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_group_type.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_group_type.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_limits.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_limits.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_limits.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_limits.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_resource_filter.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_resource_filter.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_resource_filter.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_resource_filter.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_service.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_service.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_service.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_service.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_type.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_type.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_type.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_type.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_type_encryption.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_type_encryption.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_type_encryption.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_type_encryption.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/__pycache__/test_volume.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_volume.cpython-310.pyc
similarity index 100%
rename from tests/unit/block_storage/v3/__pycache__/test_volume.cpython-310.pyc
rename to openstack/tests/unit/block_storage/v3/__pycache__/test_volume.cpython-310.pyc
diff --git a/tests/unit/block_storage/v3/test_attachment.py b/openstack/tests/unit/block_storage/v3/test_attachment.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_attachment.py
rename to openstack/tests/unit/block_storage/v3/test_attachment.py
diff --git a/tests/unit/block_storage/v3/test_availability_zone.py b/openstack/tests/unit/block_storage/v3/test_availability_zone.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_availability_zone.py
rename to openstack/tests/unit/block_storage/v3/test_availability_zone.py
diff --git a/tests/unit/block_storage/v3/test_backup.py b/openstack/tests/unit/block_storage/v3/test_backup.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_backup.py
rename to openstack/tests/unit/block_storage/v3/test_backup.py
diff --git a/tests/unit/block_storage/v3/test_block_storage_summary.py b/openstack/tests/unit/block_storage/v3/test_block_storage_summary.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_block_storage_summary.py
rename to openstack/tests/unit/block_storage/v3/test_block_storage_summary.py
diff --git a/tests/unit/block_storage/v3/test_capabilities.py b/openstack/tests/unit/block_storage/v3/test_capabilities.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_capabilities.py
rename to openstack/tests/unit/block_storage/v3/test_capabilities.py
diff --git a/tests/unit/block_storage/v3/test_extension.py b/openstack/tests/unit/block_storage/v3/test_extension.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_extension.py
rename to openstack/tests/unit/block_storage/v3/test_extension.py
diff --git a/tests/unit/block_storage/v3/test_group.py b/openstack/tests/unit/block_storage/v3/test_group.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_group.py
rename to openstack/tests/unit/block_storage/v3/test_group.py
diff --git a/tests/unit/block_storage/v3/test_group_snapshot.py b/openstack/tests/unit/block_storage/v3/test_group_snapshot.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_group_snapshot.py
rename to openstack/tests/unit/block_storage/v3/test_group_snapshot.py
diff --git a/tests/unit/block_storage/v3/test_group_type.py b/openstack/tests/unit/block_storage/v3/test_group_type.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_group_type.py
rename to openstack/tests/unit/block_storage/v3/test_group_type.py
diff --git a/tests/unit/block_storage/v3/test_limits.py b/openstack/tests/unit/block_storage/v3/test_limits.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_limits.py
rename to openstack/tests/unit/block_storage/v3/test_limits.py
diff --git a/tests/unit/block_storage/v3/test_proxy.py b/openstack/tests/unit/block_storage/v3/test_proxy.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_proxy.py
rename to openstack/tests/unit/block_storage/v3/test_proxy.py
diff --git a/tests/unit/block_storage/v3/test_resource_filter.py b/openstack/tests/unit/block_storage/v3/test_resource_filter.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_resource_filter.py
rename to openstack/tests/unit/block_storage/v3/test_resource_filter.py
diff --git a/tests/unit/block_storage/v3/test_service.py b/openstack/tests/unit/block_storage/v3/test_service.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_service.py
rename to openstack/tests/unit/block_storage/v3/test_service.py
diff --git a/tests/unit/block_storage/v3/test_snapshot.py b/openstack/tests/unit/block_storage/v3/test_snapshot.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_snapshot.py
rename to openstack/tests/unit/block_storage/v3/test_snapshot.py
diff --git a/tests/unit/block_storage/v3/test_transfer.py b/openstack/tests/unit/block_storage/v3/test_transfer.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_transfer.py
rename to openstack/tests/unit/block_storage/v3/test_transfer.py
diff --git a/tests/unit/block_storage/v3/test_type.py b/openstack/tests/unit/block_storage/v3/test_type.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_type.py
rename to openstack/tests/unit/block_storage/v3/test_type.py
diff --git a/tests/unit/block_storage/v3/test_type_encryption.py b/openstack/tests/unit/block_storage/v3/test_type_encryption.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_type_encryption.py
rename to openstack/tests/unit/block_storage/v3/test_type_encryption.py
diff --git a/tests/unit/block_storage/v3/test_volume.py b/openstack/tests/unit/block_storage/v3/test_volume.py
similarity index 100%
rename from tests/unit/block_storage/v3/test_volume.py
rename to openstack/tests/unit/block_storage/v3/test_volume.py
diff --git a/tests/unit/database/__init__.py b/openstack/tests/unit/cloud/__init__.py
similarity index 100%
rename from tests/unit/database/__init__.py
rename to openstack/tests/unit/cloud/__init__.py
diff --git a/tests/unit/cloud/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test__utils.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test__utils.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test__utils.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test__utils.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_accelerator.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_accelerator.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_accelerator.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_accelerator.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_aggregate.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_aggregate.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_aggregate.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_aggregate.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_availability_zones.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_availability_zones.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_availability_zones.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_availability_zones.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_baremetal_node.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_baremetal_node.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_baremetal_node.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_baremetal_node.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_baremetal_ports.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_baremetal_ports.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_baremetal_ports.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_baremetal_ports.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_cloud.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_cloud.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_cloud.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_cloud.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_cluster_templates.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_cluster_templates.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_cluster_templates.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_cluster_templates.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_clustering.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_clustering.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_clustering.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_clustering.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_coe_clusters.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_coe_clusters.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_coe_clusters.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_coe_clusters.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_coe_clusters_certificate.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_coe_clusters_certificate.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_coe_clusters_certificate.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_coe_clusters_certificate.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_compute.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_compute.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_compute.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_compute.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_create_server.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_create_server.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_create_server.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_create_server.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_create_volume_snapshot.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_create_volume_snapshot.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_create_volume_snapshot.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_create_volume_snapshot.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_delete_server.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_delete_server.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_delete_server.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_delete_server.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_delete_volume_snapshot.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_delete_volume_snapshot.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_delete_volume_snapshot.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_delete_volume_snapshot.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_domain_params.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_domain_params.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_domain_params.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_domain_params.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_domains.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_domains.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_domains.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_domains.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_endpoints.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_endpoints.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_endpoints.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_endpoints.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_flavors.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_flavors.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_flavors.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_flavors.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_floating_ip_common.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_floating_ip_common.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_floating_ip_common.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_floating_ip_common.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_floating_ip_neutron.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_floating_ip_neutron.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_floating_ip_neutron.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_floating_ip_neutron.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_floating_ip_nova.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_floating_ip_nova.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_floating_ip_nova.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_floating_ip_nova.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_fwaas.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_fwaas.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_fwaas.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_fwaas.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_groups.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_groups.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_groups.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_groups.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_identity_roles.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_identity_roles.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_identity_roles.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_identity_roles.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_identity_users.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_identity_users.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_identity_users.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_identity_users.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_image.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_image.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_image.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_image.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_image_snapshot.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_image_snapshot.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_image_snapshot.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_image_snapshot.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_inventory.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_inventory.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_inventory.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_inventory.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_keypair.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_keypair.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_keypair.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_keypair.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_limits.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_limits.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_limits.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_limits.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_magnum_services.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_magnum_services.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_magnum_services.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_magnum_services.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_meta.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_meta.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_meta.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_meta.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_network.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_network.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_network.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_network.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_object.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_object.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_object.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_object.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_openstackcloud.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_openstackcloud.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_openstackcloud.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_openstackcloud.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_operator.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_operator.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_operator.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_operator.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_operator_noauth.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_operator_noauth.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_operator_noauth.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_operator_noauth.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_port.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_port.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_port.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_port.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_project.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_project.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_project.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_project.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_qos_policy.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_qos_policy.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_qos_policy.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_qos_policy.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_qos_rule_type.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_qos_rule_type.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_qos_rule_type.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_qos_rule_type.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_quotas.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_quotas.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_quotas.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_quotas.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_rebuild_server.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_rebuild_server.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_rebuild_server.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_rebuild_server.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_recordset.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_recordset.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_recordset.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_recordset.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_role_assignment.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_role_assignment.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_role_assignment.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_role_assignment.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_router.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_router.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_router.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_router.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_security_groups.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_security_groups.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_security_groups.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_security_groups.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_server_console.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_server_console.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_server_console.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_server_console.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_server_delete_metadata.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_server_delete_metadata.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_server_delete_metadata.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_server_delete_metadata.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_server_group.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_server_group.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_server_group.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_server_group.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_server_set_metadata.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_server_set_metadata.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_server_set_metadata.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_server_set_metadata.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_services.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_services.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_services.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_services.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_shared_file_system.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_shared_file_system.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_shared_file_system.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_shared_file_system.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_stack.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_stack.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_stack.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_stack.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_subnet.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_subnet.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_subnet.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_subnet.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_update_server.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_update_server.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_update_server.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_update_server.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_usage.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_usage.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_usage.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_usage.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_users.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_users.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_users.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_users.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_volume.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_volume.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_volume.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_volume.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_volume_access.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_volume_access.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_volume_access.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_volume_access.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_volume_backups.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_volume_backups.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_volume_backups.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_volume_backups.cpython-310.pyc
diff --git a/tests/unit/cloud/__pycache__/test_zone.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_zone.cpython-310.pyc
similarity index 100%
rename from tests/unit/cloud/__pycache__/test_zone.cpython-310.pyc
rename to openstack/tests/unit/cloud/__pycache__/test_zone.cpython-310.pyc
diff --git a/tests/unit/cloud/test__utils.py b/openstack/tests/unit/cloud/test__utils.py
similarity index 100%
rename from tests/unit/cloud/test__utils.py
rename to openstack/tests/unit/cloud/test__utils.py
diff --git a/tests/unit/cloud/test_accelerator.py b/openstack/tests/unit/cloud/test_accelerator.py
similarity index 100%
rename from tests/unit/cloud/test_accelerator.py
rename to openstack/tests/unit/cloud/test_accelerator.py
diff --git a/tests/unit/cloud/test_aggregate.py b/openstack/tests/unit/cloud/test_aggregate.py
similarity index 100%
rename from tests/unit/cloud/test_aggregate.py
rename to openstack/tests/unit/cloud/test_aggregate.py
diff --git a/tests/unit/cloud/test_availability_zones.py b/openstack/tests/unit/cloud/test_availability_zones.py
similarity index 100%
rename from tests/unit/cloud/test_availability_zones.py
rename to openstack/tests/unit/cloud/test_availability_zones.py
diff --git a/tests/unit/cloud/test_baremetal_node.py b/openstack/tests/unit/cloud/test_baremetal_node.py
similarity index 100%
rename from tests/unit/cloud/test_baremetal_node.py
rename to openstack/tests/unit/cloud/test_baremetal_node.py
diff --git a/tests/unit/cloud/test_baremetal_ports.py b/openstack/tests/unit/cloud/test_baremetal_ports.py
similarity index 100%
rename from tests/unit/cloud/test_baremetal_ports.py
rename to openstack/tests/unit/cloud/test_baremetal_ports.py
diff --git a/tests/unit/cloud/test_cloud.py b/openstack/tests/unit/cloud/test_cloud.py
similarity index 100%
rename from tests/unit/cloud/test_cloud.py
rename to openstack/tests/unit/cloud/test_cloud.py
diff --git a/tests/unit/cloud/test_cluster_templates.py b/openstack/tests/unit/cloud/test_cluster_templates.py
similarity index 100%
rename from tests/unit/cloud/test_cluster_templates.py
rename to openstack/tests/unit/cloud/test_cluster_templates.py
diff --git a/tests/unit/cloud/test_clustering.py b/openstack/tests/unit/cloud/test_clustering.py
similarity index 100%
rename from tests/unit/cloud/test_clustering.py
rename to openstack/tests/unit/cloud/test_clustering.py
diff --git a/tests/unit/cloud/test_coe_clusters.py b/openstack/tests/unit/cloud/test_coe_clusters.py
similarity index 100%
rename from tests/unit/cloud/test_coe_clusters.py
rename to openstack/tests/unit/cloud/test_coe_clusters.py
diff --git a/tests/unit/cloud/test_coe_clusters_certificate.py b/openstack/tests/unit/cloud/test_coe_clusters_certificate.py
similarity index 100%
rename from tests/unit/cloud/test_coe_clusters_certificate.py
rename to openstack/tests/unit/cloud/test_coe_clusters_certificate.py
diff --git a/tests/unit/cloud/test_compute.py b/openstack/tests/unit/cloud/test_compute.py
similarity index 100%
rename from tests/unit/cloud/test_compute.py
rename to openstack/tests/unit/cloud/test_compute.py
diff --git a/tests/unit/cloud/test_create_server.py b/openstack/tests/unit/cloud/test_create_server.py
similarity index 100%
rename from tests/unit/cloud/test_create_server.py
rename to openstack/tests/unit/cloud/test_create_server.py
diff --git a/tests/unit/cloud/test_create_volume_snapshot.py b/openstack/tests/unit/cloud/test_create_volume_snapshot.py
similarity index 100%
rename from tests/unit/cloud/test_create_volume_snapshot.py
rename to openstack/tests/unit/cloud/test_create_volume_snapshot.py
diff --git a/tests/unit/cloud/test_delete_server.py b/openstack/tests/unit/cloud/test_delete_server.py
similarity index 100%
rename from tests/unit/cloud/test_delete_server.py
rename to openstack/tests/unit/cloud/test_delete_server.py
diff --git a/tests/unit/cloud/test_delete_volume_snapshot.py b/openstack/tests/unit/cloud/test_delete_volume_snapshot.py
similarity index 100%
rename from tests/unit/cloud/test_delete_volume_snapshot.py
rename to openstack/tests/unit/cloud/test_delete_volume_snapshot.py
diff --git a/tests/unit/cloud/test_domain_params.py b/openstack/tests/unit/cloud/test_domain_params.py
similarity index 100%
rename from tests/unit/cloud/test_domain_params.py
rename to openstack/tests/unit/cloud/test_domain_params.py
diff --git a/tests/unit/cloud/test_domains.py b/openstack/tests/unit/cloud/test_domains.py
similarity index 100%
rename from tests/unit/cloud/test_domains.py
rename to openstack/tests/unit/cloud/test_domains.py
diff --git a/tests/unit/cloud/test_endpoints.py b/openstack/tests/unit/cloud/test_endpoints.py
similarity index 100%
rename from tests/unit/cloud/test_endpoints.py
rename to openstack/tests/unit/cloud/test_endpoints.py
diff --git a/tests/unit/cloud/test_flavors.py b/openstack/tests/unit/cloud/test_flavors.py
similarity index 100%
rename from tests/unit/cloud/test_flavors.py
rename to openstack/tests/unit/cloud/test_flavors.py
diff --git a/tests/unit/cloud/test_floating_ip_common.py b/openstack/tests/unit/cloud/test_floating_ip_common.py
similarity index 100%
rename from tests/unit/cloud/test_floating_ip_common.py
rename to openstack/tests/unit/cloud/test_floating_ip_common.py
diff --git a/tests/unit/cloud/test_floating_ip_neutron.py b/openstack/tests/unit/cloud/test_floating_ip_neutron.py
similarity index 100%
rename from tests/unit/cloud/test_floating_ip_neutron.py
rename to openstack/tests/unit/cloud/test_floating_ip_neutron.py
diff --git a/tests/unit/cloud/test_floating_ip_nova.py b/openstack/tests/unit/cloud/test_floating_ip_nova.py
similarity index 100%
rename from tests/unit/cloud/test_floating_ip_nova.py
rename to openstack/tests/unit/cloud/test_floating_ip_nova.py
diff --git a/tests/unit/cloud/test_floating_ip_pool.py b/openstack/tests/unit/cloud/test_floating_ip_pool.py
similarity index 100%
rename from tests/unit/cloud/test_floating_ip_pool.py
rename to openstack/tests/unit/cloud/test_floating_ip_pool.py
diff --git a/tests/unit/cloud/test_fwaas.py b/openstack/tests/unit/cloud/test_fwaas.py
similarity index 100%
rename from tests/unit/cloud/test_fwaas.py
rename to openstack/tests/unit/cloud/test_fwaas.py
diff --git a/tests/unit/cloud/test_groups.py b/openstack/tests/unit/cloud/test_groups.py
similarity index 100%
rename from tests/unit/cloud/test_groups.py
rename to openstack/tests/unit/cloud/test_groups.py
diff --git a/tests/unit/cloud/test_identity_roles.py b/openstack/tests/unit/cloud/test_identity_roles.py
similarity index 100%
rename from tests/unit/cloud/test_identity_roles.py
rename to openstack/tests/unit/cloud/test_identity_roles.py
diff --git a/tests/unit/cloud/test_identity_users.py b/openstack/tests/unit/cloud/test_identity_users.py
similarity index 100%
rename from tests/unit/cloud/test_identity_users.py
rename to openstack/tests/unit/cloud/test_identity_users.py
diff --git a/tests/unit/cloud/test_image.py b/openstack/tests/unit/cloud/test_image.py
similarity index 100%
rename from tests/unit/cloud/test_image.py
rename to openstack/tests/unit/cloud/test_image.py
diff --git a/tests/unit/cloud/test_image_snapshot.py b/openstack/tests/unit/cloud/test_image_snapshot.py
similarity index 100%
rename from tests/unit/cloud/test_image_snapshot.py
rename to openstack/tests/unit/cloud/test_image_snapshot.py
diff --git a/tests/unit/cloud/test_inventory.py b/openstack/tests/unit/cloud/test_inventory.py
similarity index 100%
rename from tests/unit/cloud/test_inventory.py
rename to openstack/tests/unit/cloud/test_inventory.py
diff --git a/tests/unit/cloud/test_keypair.py b/openstack/tests/unit/cloud/test_keypair.py
similarity index 100%
rename from tests/unit/cloud/test_keypair.py
rename to openstack/tests/unit/cloud/test_keypair.py
diff --git a/tests/unit/cloud/test_limits.py b/openstack/tests/unit/cloud/test_limits.py
similarity index 100%
rename from tests/unit/cloud/test_limits.py
rename to openstack/tests/unit/cloud/test_limits.py
diff --git a/tests/unit/cloud/test_magnum_services.py b/openstack/tests/unit/cloud/test_magnum_services.py
similarity index 100%
rename from tests/unit/cloud/test_magnum_services.py
rename to openstack/tests/unit/cloud/test_magnum_services.py
diff --git a/tests/unit/cloud/test_meta.py b/openstack/tests/unit/cloud/test_meta.py
similarity index 100%
rename from tests/unit/cloud/test_meta.py
rename to openstack/tests/unit/cloud/test_meta.py
diff --git a/tests/unit/cloud/test_network.py b/openstack/tests/unit/cloud/test_network.py
similarity index 100%
rename from tests/unit/cloud/test_network.py
rename to openstack/tests/unit/cloud/test_network.py
diff --git a/tests/unit/cloud/test_object.py b/openstack/tests/unit/cloud/test_object.py
similarity index 100%
rename from tests/unit/cloud/test_object.py
rename to openstack/tests/unit/cloud/test_object.py
diff --git a/tests/unit/cloud/test_openstackcloud.py b/openstack/tests/unit/cloud/test_openstackcloud.py
similarity index 100%
rename from tests/unit/cloud/test_openstackcloud.py
rename to openstack/tests/unit/cloud/test_openstackcloud.py
diff --git a/tests/unit/cloud/test_operator.py b/openstack/tests/unit/cloud/test_operator.py
similarity index 100%
rename from tests/unit/cloud/test_operator.py
rename to openstack/tests/unit/cloud/test_operator.py
diff --git a/tests/unit/cloud/test_operator_noauth.py b/openstack/tests/unit/cloud/test_operator_noauth.py
similarity index 100%
rename from tests/unit/cloud/test_operator_noauth.py
rename to openstack/tests/unit/cloud/test_operator_noauth.py
diff --git a/tests/unit/cloud/test_port.py b/openstack/tests/unit/cloud/test_port.py
similarity index 100%
rename from tests/unit/cloud/test_port.py
rename to openstack/tests/unit/cloud/test_port.py
diff --git a/tests/unit/cloud/test_project.py b/openstack/tests/unit/cloud/test_project.py
similarity index 100%
rename from tests/unit/cloud/test_project.py
rename to openstack/tests/unit/cloud/test_project.py
diff --git a/tests/unit/cloud/test_qos_bandwidth_limit_rule.py b/openstack/tests/unit/cloud/test_qos_bandwidth_limit_rule.py
similarity index 100%
rename from tests/unit/cloud/test_qos_bandwidth_limit_rule.py
rename to openstack/tests/unit/cloud/test_qos_bandwidth_limit_rule.py
diff --git a/tests/unit/cloud/test_qos_dscp_marking_rule.py b/openstack/tests/unit/cloud/test_qos_dscp_marking_rule.py
similarity index 100%
rename from tests/unit/cloud/test_qos_dscp_marking_rule.py
rename to openstack/tests/unit/cloud/test_qos_dscp_marking_rule.py
diff --git a/tests/unit/cloud/test_qos_minimum_bandwidth_rule.py b/openstack/tests/unit/cloud/test_qos_minimum_bandwidth_rule.py
similarity index 100%
rename from tests/unit/cloud/test_qos_minimum_bandwidth_rule.py
rename to openstack/tests/unit/cloud/test_qos_minimum_bandwidth_rule.py
diff --git a/tests/unit/cloud/test_qos_policy.py b/openstack/tests/unit/cloud/test_qos_policy.py
similarity index 100%
rename from tests/unit/cloud/test_qos_policy.py
rename to openstack/tests/unit/cloud/test_qos_policy.py
diff --git a/tests/unit/cloud/test_qos_rule_type.py b/openstack/tests/unit/cloud/test_qos_rule_type.py
similarity index 100%
rename from tests/unit/cloud/test_qos_rule_type.py
rename to openstack/tests/unit/cloud/test_qos_rule_type.py
diff --git a/tests/unit/cloud/test_quotas.py b/openstack/tests/unit/cloud/test_quotas.py
similarity index 100%
rename from tests/unit/cloud/test_quotas.py
rename to openstack/tests/unit/cloud/test_quotas.py
diff --git a/tests/unit/cloud/test_rebuild_server.py b/openstack/tests/unit/cloud/test_rebuild_server.py
similarity index 100%
rename from tests/unit/cloud/test_rebuild_server.py
rename to openstack/tests/unit/cloud/test_rebuild_server.py
diff --git a/tests/unit/cloud/test_recordset.py b/openstack/tests/unit/cloud/test_recordset.py
similarity index 100%
rename from tests/unit/cloud/test_recordset.py
rename to openstack/tests/unit/cloud/test_recordset.py
diff --git a/tests/unit/cloud/test_role_assignment.py b/openstack/tests/unit/cloud/test_role_assignment.py
similarity index 100%
rename from tests/unit/cloud/test_role_assignment.py
rename to openstack/tests/unit/cloud/test_role_assignment.py
diff --git a/tests/unit/cloud/test_router.py b/openstack/tests/unit/cloud/test_router.py
similarity index 100%
rename from tests/unit/cloud/test_router.py
rename to openstack/tests/unit/cloud/test_router.py
diff --git a/tests/unit/cloud/test_security_groups.py b/openstack/tests/unit/cloud/test_security_groups.py
similarity index 100%
rename from tests/unit/cloud/test_security_groups.py
rename to openstack/tests/unit/cloud/test_security_groups.py
diff --git a/tests/unit/cloud/test_server_console.py b/openstack/tests/unit/cloud/test_server_console.py
similarity index 100%
rename from tests/unit/cloud/test_server_console.py
rename to openstack/tests/unit/cloud/test_server_console.py
diff --git a/tests/unit/cloud/test_server_delete_metadata.py b/openstack/tests/unit/cloud/test_server_delete_metadata.py
similarity index 100%
rename from tests/unit/cloud/test_server_delete_metadata.py
rename to openstack/tests/unit/cloud/test_server_delete_metadata.py
diff --git a/tests/unit/cloud/test_server_group.py b/openstack/tests/unit/cloud/test_server_group.py
similarity index 100%
rename from tests/unit/cloud/test_server_group.py
rename to openstack/tests/unit/cloud/test_server_group.py
diff --git a/tests/unit/cloud/test_server_set_metadata.py b/openstack/tests/unit/cloud/test_server_set_metadata.py
similarity index 100%
rename from tests/unit/cloud/test_server_set_metadata.py
rename to openstack/tests/unit/cloud/test_server_set_metadata.py
diff --git a/tests/unit/cloud/test_services.py b/openstack/tests/unit/cloud/test_services.py
similarity index 100%
rename from tests/unit/cloud/test_services.py
rename to openstack/tests/unit/cloud/test_services.py
diff --git a/tests/unit/cloud/test_shared_file_system.py b/openstack/tests/unit/cloud/test_shared_file_system.py
similarity index 100%
rename from tests/unit/cloud/test_shared_file_system.py
rename to openstack/tests/unit/cloud/test_shared_file_system.py
diff --git a/tests/unit/cloud/test_stack.py b/openstack/tests/unit/cloud/test_stack.py
similarity index 100%
rename from tests/unit/cloud/test_stack.py
rename to openstack/tests/unit/cloud/test_stack.py
diff --git a/tests/unit/cloud/test_subnet.py b/openstack/tests/unit/cloud/test_subnet.py
similarity index 100%
rename from tests/unit/cloud/test_subnet.py
rename to openstack/tests/unit/cloud/test_subnet.py
diff --git a/tests/unit/cloud/test_update_server.py b/openstack/tests/unit/cloud/test_update_server.py
similarity index 100%
rename from tests/unit/cloud/test_update_server.py
rename to openstack/tests/unit/cloud/test_update_server.py
diff --git a/tests/unit/cloud/test_usage.py b/openstack/tests/unit/cloud/test_usage.py
similarity index 100%
rename from tests/unit/cloud/test_usage.py
rename to openstack/tests/unit/cloud/test_usage.py
diff --git a/tests/unit/cloud/test_users.py b/openstack/tests/unit/cloud/test_users.py
similarity index 100%
rename from tests/unit/cloud/test_users.py
rename to openstack/tests/unit/cloud/test_users.py
diff --git a/tests/unit/cloud/test_volume.py b/openstack/tests/unit/cloud/test_volume.py
similarity index 100%
rename from tests/unit/cloud/test_volume.py
rename to openstack/tests/unit/cloud/test_volume.py
diff --git a/tests/unit/cloud/test_volume_access.py b/openstack/tests/unit/cloud/test_volume_access.py
similarity index 100%
rename from tests/unit/cloud/test_volume_access.py
rename to openstack/tests/unit/cloud/test_volume_access.py
diff --git a/tests/unit/cloud/test_volume_backups.py b/openstack/tests/unit/cloud/test_volume_backups.py
similarity index 100%
rename from tests/unit/cloud/test_volume_backups.py
rename to openstack/tests/unit/cloud/test_volume_backups.py
diff --git a/tests/unit/cloud/test_zone.py b/openstack/tests/unit/cloud/test_zone.py
similarity index 100%
rename from tests/unit/cloud/test_zone.py
rename to openstack/tests/unit/cloud/test_zone.py
diff --git a/tests/unit/database/v1/__init__.py b/openstack/tests/unit/clustering/__init__.py
similarity index 100%
rename from tests/unit/database/v1/__init__.py
rename to openstack/tests/unit/clustering/__init__.py
diff --git a/tests/unit/clustering/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/clustering/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/clustering/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/clustering/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/clustering/__pycache__/test_version.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/__pycache__/test_version.cpython-310.pyc
rename to openstack/tests/unit/clustering/__pycache__/test_version.cpython-310.pyc
diff --git a/tests/unit/clustering/test_version.py b/openstack/tests/unit/clustering/test_version.py
similarity index 100%
rename from tests/unit/clustering/test_version.py
rename to openstack/tests/unit/clustering/test_version.py
diff --git a/tests/unit/dns/__init__.py b/openstack/tests/unit/clustering/v1/__init__.py
similarity index 100%
rename from tests/unit/dns/__init__.py
rename to openstack/tests/unit/clustering/v1/__init__.py
diff --git a/tests/unit/clustering/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/clustering/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/clustering/v1/__pycache__/test_action.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_action.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/v1/__pycache__/test_action.cpython-310.pyc
rename to openstack/tests/unit/clustering/v1/__pycache__/test_action.cpython-310.pyc
diff --git a/tests/unit/clustering/v1/__pycache__/test_build_info.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_build_info.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/v1/__pycache__/test_build_info.cpython-310.pyc
rename to openstack/tests/unit/clustering/v1/__pycache__/test_build_info.cpython-310.pyc
diff --git a/tests/unit/clustering/v1/__pycache__/test_cluster.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_cluster.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/v1/__pycache__/test_cluster.cpython-310.pyc
rename to openstack/tests/unit/clustering/v1/__pycache__/test_cluster.cpython-310.pyc
diff --git a/tests/unit/clustering/v1/__pycache__/test_cluster_attr.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_cluster_attr.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/v1/__pycache__/test_cluster_attr.cpython-310.pyc
rename to openstack/tests/unit/clustering/v1/__pycache__/test_cluster_attr.cpython-310.pyc
diff --git a/tests/unit/clustering/v1/__pycache__/test_cluster_policy.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_cluster_policy.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/v1/__pycache__/test_cluster_policy.cpython-310.pyc
rename to openstack/tests/unit/clustering/v1/__pycache__/test_cluster_policy.cpython-310.pyc
diff --git a/tests/unit/clustering/v1/__pycache__/test_event.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_event.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/v1/__pycache__/test_event.cpython-310.pyc
rename to openstack/tests/unit/clustering/v1/__pycache__/test_event.cpython-310.pyc
diff --git a/tests/unit/clustering/v1/__pycache__/test_node.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_node.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/v1/__pycache__/test_node.cpython-310.pyc
rename to openstack/tests/unit/clustering/v1/__pycache__/test_node.cpython-310.pyc
diff --git a/tests/unit/clustering/v1/__pycache__/test_policy.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_policy.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/v1/__pycache__/test_policy.cpython-310.pyc
rename to openstack/tests/unit/clustering/v1/__pycache__/test_policy.cpython-310.pyc
diff --git a/tests/unit/clustering/v1/__pycache__/test_policy_type.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_policy_type.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/v1/__pycache__/test_policy_type.cpython-310.pyc
rename to openstack/tests/unit/clustering/v1/__pycache__/test_policy_type.cpython-310.pyc
diff --git a/tests/unit/clustering/v1/__pycache__/test_profile.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_profile.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/v1/__pycache__/test_profile.cpython-310.pyc
rename to openstack/tests/unit/clustering/v1/__pycache__/test_profile.cpython-310.pyc
diff --git a/tests/unit/clustering/v1/__pycache__/test_profile_type.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_profile_type.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/v1/__pycache__/test_profile_type.cpython-310.pyc
rename to openstack/tests/unit/clustering/v1/__pycache__/test_profile_type.cpython-310.pyc
diff --git a/tests/unit/clustering/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/v1/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/clustering/v1/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/clustering/v1/__pycache__/test_receiver.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_receiver.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/v1/__pycache__/test_receiver.cpython-310.pyc
rename to openstack/tests/unit/clustering/v1/__pycache__/test_receiver.cpython-310.pyc
diff --git a/tests/unit/clustering/v1/__pycache__/test_service.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_service.cpython-310.pyc
similarity index 100%
rename from tests/unit/clustering/v1/__pycache__/test_service.cpython-310.pyc
rename to openstack/tests/unit/clustering/v1/__pycache__/test_service.cpython-310.pyc
diff --git a/tests/unit/clustering/v1/test_action.py b/openstack/tests/unit/clustering/v1/test_action.py
similarity index 100%
rename from tests/unit/clustering/v1/test_action.py
rename to openstack/tests/unit/clustering/v1/test_action.py
diff --git a/tests/unit/clustering/v1/test_build_info.py b/openstack/tests/unit/clustering/v1/test_build_info.py
similarity index 100%
rename from tests/unit/clustering/v1/test_build_info.py
rename to openstack/tests/unit/clustering/v1/test_build_info.py
diff --git a/tests/unit/clustering/v1/test_cluster.py b/openstack/tests/unit/clustering/v1/test_cluster.py
similarity index 100%
rename from tests/unit/clustering/v1/test_cluster.py
rename to openstack/tests/unit/clustering/v1/test_cluster.py
diff --git a/tests/unit/clustering/v1/test_cluster_attr.py b/openstack/tests/unit/clustering/v1/test_cluster_attr.py
similarity index 100%
rename from tests/unit/clustering/v1/test_cluster_attr.py
rename to openstack/tests/unit/clustering/v1/test_cluster_attr.py
diff --git a/tests/unit/clustering/v1/test_cluster_policy.py b/openstack/tests/unit/clustering/v1/test_cluster_policy.py
similarity index 100%
rename from tests/unit/clustering/v1/test_cluster_policy.py
rename to openstack/tests/unit/clustering/v1/test_cluster_policy.py
diff --git a/tests/unit/clustering/v1/test_event.py b/openstack/tests/unit/clustering/v1/test_event.py
similarity index 100%
rename from tests/unit/clustering/v1/test_event.py
rename to openstack/tests/unit/clustering/v1/test_event.py
diff --git a/tests/unit/clustering/v1/test_node.py b/openstack/tests/unit/clustering/v1/test_node.py
similarity index 100%
rename from tests/unit/clustering/v1/test_node.py
rename to openstack/tests/unit/clustering/v1/test_node.py
diff --git a/tests/unit/clustering/v1/test_policy.py b/openstack/tests/unit/clustering/v1/test_policy.py
similarity index 100%
rename from tests/unit/clustering/v1/test_policy.py
rename to openstack/tests/unit/clustering/v1/test_policy.py
diff --git a/tests/unit/clustering/v1/test_policy_type.py b/openstack/tests/unit/clustering/v1/test_policy_type.py
similarity index 100%
rename from tests/unit/clustering/v1/test_policy_type.py
rename to openstack/tests/unit/clustering/v1/test_policy_type.py
diff --git a/tests/unit/clustering/v1/test_profile.py b/openstack/tests/unit/clustering/v1/test_profile.py
similarity index 100%
rename from tests/unit/clustering/v1/test_profile.py
rename to openstack/tests/unit/clustering/v1/test_profile.py
diff --git a/tests/unit/clustering/v1/test_profile_type.py b/openstack/tests/unit/clustering/v1/test_profile_type.py
similarity index 100%
rename from tests/unit/clustering/v1/test_profile_type.py
rename to openstack/tests/unit/clustering/v1/test_profile_type.py
diff --git a/tests/unit/clustering/v1/test_proxy.py b/openstack/tests/unit/clustering/v1/test_proxy.py
similarity index 100%
rename from tests/unit/clustering/v1/test_proxy.py
rename to openstack/tests/unit/clustering/v1/test_proxy.py
diff --git a/tests/unit/clustering/v1/test_receiver.py b/openstack/tests/unit/clustering/v1/test_receiver.py
similarity index 100%
rename from tests/unit/clustering/v1/test_receiver.py
rename to openstack/tests/unit/clustering/v1/test_receiver.py
diff --git a/tests/unit/clustering/v1/test_service.py b/openstack/tests/unit/clustering/v1/test_service.py
similarity index 100%
rename from tests/unit/clustering/v1/test_service.py
rename to openstack/tests/unit/clustering/v1/test_service.py
diff --git a/tests/unit/dns/v2/__init__.py b/openstack/tests/unit/common/__init__.py
similarity index 100%
rename from tests/unit/dns/v2/__init__.py
rename to openstack/tests/unit/common/__init__.py
diff --git a/tests/unit/common/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/common/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/common/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/common/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/common/__pycache__/test_metadata.cpython-310.pyc b/openstack/tests/unit/common/__pycache__/test_metadata.cpython-310.pyc
similarity index 100%
rename from tests/unit/common/__pycache__/test_metadata.cpython-310.pyc
rename to openstack/tests/unit/common/__pycache__/test_metadata.cpython-310.pyc
diff --git a/tests/unit/common/__pycache__/test_quota_set.cpython-310.pyc b/openstack/tests/unit/common/__pycache__/test_quota_set.cpython-310.pyc
similarity index 100%
rename from tests/unit/common/__pycache__/test_quota_set.cpython-310.pyc
rename to openstack/tests/unit/common/__pycache__/test_quota_set.cpython-310.pyc
diff --git a/tests/unit/common/__pycache__/test_tag.cpython-310.pyc b/openstack/tests/unit/common/__pycache__/test_tag.cpython-310.pyc
similarity index 100%
rename from tests/unit/common/__pycache__/test_tag.cpython-310.pyc
rename to openstack/tests/unit/common/__pycache__/test_tag.cpython-310.pyc
diff --git a/tests/unit/common/test_metadata.py b/openstack/tests/unit/common/test_metadata.py
similarity index 100%
rename from tests/unit/common/test_metadata.py
rename to openstack/tests/unit/common/test_metadata.py
diff --git a/tests/unit/common/test_quota_set.py b/openstack/tests/unit/common/test_quota_set.py
similarity index 100%
rename from tests/unit/common/test_quota_set.py
rename to openstack/tests/unit/common/test_quota_set.py
diff --git a/tests/unit/common/test_tag.py b/openstack/tests/unit/common/test_tag.py
similarity index 100%
rename from tests/unit/common/test_tag.py
rename to openstack/tests/unit/common/test_tag.py
diff --git a/tests/unit/fake/__init__.py b/openstack/tests/unit/compute/__init__.py
similarity index 100%
rename from tests/unit/fake/__init__.py
rename to openstack/tests/unit/compute/__init__.py
diff --git a/tests/unit/compute/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/compute/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/compute/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/compute/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/compute/__pycache__/test_version.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/__pycache__/test_version.cpython-310.pyc
rename to openstack/tests/unit/compute/__pycache__/test_version.cpython-310.pyc
diff --git a/tests/unit/compute/test_version.py b/openstack/tests/unit/compute/test_version.py
similarity index 100%
rename from tests/unit/compute/test_version.py
rename to openstack/tests/unit/compute/test_version.py
diff --git a/tests/unit/fake/v1/__init__.py b/openstack/tests/unit/compute/v2/__init__.py
similarity index 100%
rename from tests/unit/fake/v1/__init__.py
rename to openstack/tests/unit/compute/v2/__init__.py
diff --git a/tests/unit/compute/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_aggregate.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_aggregate.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_aggregate.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_aggregate.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_availability_zone.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_availability_zone.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_availability_zone.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_availability_zone.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_extension.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_extension.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_extension.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_flavor.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_flavor.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_flavor.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_flavor.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_image.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_image.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_image.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_image.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_keypair.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_keypair.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_keypair.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_keypair.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_limits.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_limits.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_limits.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_limits.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_migration.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_migration.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_migration.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_migration.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_server.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_server.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_server.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_server.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_server_actions.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_server_actions.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_server_actions.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_server_actions.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_server_diagnostics.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_server_diagnostics.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_server_diagnostics.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_server_diagnostics.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_server_group.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_server_group.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_server_group.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_server_group.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_server_interface.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_server_interface.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_server_interface.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_server_interface.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_server_ip.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_server_ip.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_server_ip.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_server_ip.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_server_migration.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_server_migration.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_server_migration.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_server_migration.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_server_remote_console.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_server_remote_console.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_server_remote_console.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_server_remote_console.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_service.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_service.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_service.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_service.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_usage.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_usage.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_usage.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_usage.cpython-310.pyc
diff --git a/tests/unit/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc
similarity index 100%
rename from tests/unit/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc
rename to openstack/tests/unit/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc
diff --git a/tests/unit/compute/v2/test_aggregate.py b/openstack/tests/unit/compute/v2/test_aggregate.py
similarity index 100%
rename from tests/unit/compute/v2/test_aggregate.py
rename to openstack/tests/unit/compute/v2/test_aggregate.py
diff --git a/tests/unit/compute/v2/test_availability_zone.py b/openstack/tests/unit/compute/v2/test_availability_zone.py
similarity index 100%
rename from tests/unit/compute/v2/test_availability_zone.py
rename to openstack/tests/unit/compute/v2/test_availability_zone.py
diff --git a/tests/unit/compute/v2/test_extension.py b/openstack/tests/unit/compute/v2/test_extension.py
similarity index 100%
rename from tests/unit/compute/v2/test_extension.py
rename to openstack/tests/unit/compute/v2/test_extension.py
diff --git a/tests/unit/compute/v2/test_flavor.py b/openstack/tests/unit/compute/v2/test_flavor.py
similarity index 100%
rename from tests/unit/compute/v2/test_flavor.py
rename to openstack/tests/unit/compute/v2/test_flavor.py
diff --git a/tests/unit/compute/v2/test_hypervisor.py b/openstack/tests/unit/compute/v2/test_hypervisor.py
similarity index 100%
rename from tests/unit/compute/v2/test_hypervisor.py
rename to openstack/tests/unit/compute/v2/test_hypervisor.py
diff --git a/tests/unit/compute/v2/test_image.py b/openstack/tests/unit/compute/v2/test_image.py
similarity index 100%
rename from tests/unit/compute/v2/test_image.py
rename to openstack/tests/unit/compute/v2/test_image.py
diff --git a/tests/unit/compute/v2/test_keypair.py b/openstack/tests/unit/compute/v2/test_keypair.py
similarity index 100%
rename from tests/unit/compute/v2/test_keypair.py
rename to openstack/tests/unit/compute/v2/test_keypair.py
diff --git a/tests/unit/compute/v2/test_limits.py b/openstack/tests/unit/compute/v2/test_limits.py
similarity index 100%
rename from tests/unit/compute/v2/test_limits.py
rename to openstack/tests/unit/compute/v2/test_limits.py
diff --git a/tests/unit/compute/v2/test_migration.py b/openstack/tests/unit/compute/v2/test_migration.py
similarity index 100%
rename from tests/unit/compute/v2/test_migration.py
rename to openstack/tests/unit/compute/v2/test_migration.py
diff --git a/tests/unit/compute/v2/test_proxy.py b/openstack/tests/unit/compute/v2/test_proxy.py
similarity index 100%
rename from tests/unit/compute/v2/test_proxy.py
rename to openstack/tests/unit/compute/v2/test_proxy.py
diff --git a/tests/unit/compute/v2/test_server.py b/openstack/tests/unit/compute/v2/test_server.py
similarity index 100%
rename from tests/unit/compute/v2/test_server.py
rename to openstack/tests/unit/compute/v2/test_server.py
diff --git a/tests/unit/compute/v2/test_server_actions.py b/openstack/tests/unit/compute/v2/test_server_actions.py
similarity index 100%
rename from tests/unit/compute/v2/test_server_actions.py
rename to openstack/tests/unit/compute/v2/test_server_actions.py
diff --git a/tests/unit/compute/v2/test_server_diagnostics.py b/openstack/tests/unit/compute/v2/test_server_diagnostics.py
similarity index 100%
rename from tests/unit/compute/v2/test_server_diagnostics.py
rename to openstack/tests/unit/compute/v2/test_server_diagnostics.py
diff --git a/tests/unit/compute/v2/test_server_group.py b/openstack/tests/unit/compute/v2/test_server_group.py
similarity index 100%
rename from tests/unit/compute/v2/test_server_group.py
rename to openstack/tests/unit/compute/v2/test_server_group.py
diff --git a/tests/unit/compute/v2/test_server_interface.py b/openstack/tests/unit/compute/v2/test_server_interface.py
similarity index 100%
rename from tests/unit/compute/v2/test_server_interface.py
rename to openstack/tests/unit/compute/v2/test_server_interface.py
diff --git a/tests/unit/compute/v2/test_server_ip.py b/openstack/tests/unit/compute/v2/test_server_ip.py
similarity index 100%
rename from tests/unit/compute/v2/test_server_ip.py
rename to openstack/tests/unit/compute/v2/test_server_ip.py
diff --git a/tests/unit/compute/v2/test_server_migration.py b/openstack/tests/unit/compute/v2/test_server_migration.py
similarity index 100%
rename from tests/unit/compute/v2/test_server_migration.py
rename to openstack/tests/unit/compute/v2/test_server_migration.py
diff --git a/tests/unit/compute/v2/test_server_remote_console.py b/openstack/tests/unit/compute/v2/test_server_remote_console.py
similarity index 100%
rename from tests/unit/compute/v2/test_server_remote_console.py
rename to openstack/tests/unit/compute/v2/test_server_remote_console.py
diff --git a/tests/unit/compute/v2/test_service.py b/openstack/tests/unit/compute/v2/test_service.py
similarity index 100%
rename from tests/unit/compute/v2/test_service.py
rename to openstack/tests/unit/compute/v2/test_service.py
diff --git a/tests/unit/compute/v2/test_usage.py b/openstack/tests/unit/compute/v2/test_usage.py
similarity index 100%
rename from tests/unit/compute/v2/test_usage.py
rename to openstack/tests/unit/compute/v2/test_usage.py
diff --git a/tests/unit/compute/v2/test_volume_attachment.py b/openstack/tests/unit/compute/v2/test_volume_attachment.py
similarity index 100%
rename from tests/unit/compute/v2/test_volume_attachment.py
rename to openstack/tests/unit/compute/v2/test_volume_attachment.py
diff --git a/tests/unit/fake/v2/__init__.py b/openstack/tests/unit/config/__init__.py
similarity index 100%
rename from tests/unit/fake/v2/__init__.py
rename to openstack/tests/unit/config/__init__.py
diff --git a/tests/unit/config/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/config/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/config/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/config/__pycache__/base.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/base.cpython-310.pyc
similarity index 100%
rename from tests/unit/config/__pycache__/base.cpython-310.pyc
rename to openstack/tests/unit/config/__pycache__/base.cpython-310.pyc
diff --git a/tests/unit/config/__pycache__/test_cloud_config.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_cloud_config.cpython-310.pyc
similarity index 100%
rename from tests/unit/config/__pycache__/test_cloud_config.cpython-310.pyc
rename to openstack/tests/unit/config/__pycache__/test_cloud_config.cpython-310.pyc
diff --git a/tests/unit/config/__pycache__/test_config.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_config.cpython-310.pyc
similarity index 100%
rename from tests/unit/config/__pycache__/test_config.cpython-310.pyc
rename to openstack/tests/unit/config/__pycache__/test_config.cpython-310.pyc
diff --git a/tests/unit/config/__pycache__/test_environ.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_environ.cpython-310.pyc
similarity index 100%
rename from tests/unit/config/__pycache__/test_environ.cpython-310.pyc
rename to openstack/tests/unit/config/__pycache__/test_environ.cpython-310.pyc
diff --git a/tests/unit/config/__pycache__/test_from_conf.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_from_conf.cpython-310.pyc
similarity index 100%
rename from tests/unit/config/__pycache__/test_from_conf.cpython-310.pyc
rename to openstack/tests/unit/config/__pycache__/test_from_conf.cpython-310.pyc
diff --git a/tests/unit/config/__pycache__/test_from_session.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_from_session.cpython-310.pyc
similarity index 100%
rename from tests/unit/config/__pycache__/test_from_session.cpython-310.pyc
rename to openstack/tests/unit/config/__pycache__/test_from_session.cpython-310.pyc
diff --git a/tests/unit/config/__pycache__/test_init.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_init.cpython-310.pyc
similarity index 100%
rename from tests/unit/config/__pycache__/test_init.cpython-310.pyc
rename to openstack/tests/unit/config/__pycache__/test_init.cpython-310.pyc
diff --git a/tests/unit/config/__pycache__/test_json.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_json.cpython-310.pyc
similarity index 100%
rename from tests/unit/config/__pycache__/test_json.cpython-310.pyc
rename to openstack/tests/unit/config/__pycache__/test_json.cpython-310.pyc
diff --git a/tests/unit/config/__pycache__/test_loader.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_loader.cpython-310.pyc
similarity index 100%
rename from tests/unit/config/__pycache__/test_loader.cpython-310.pyc
rename to openstack/tests/unit/config/__pycache__/test_loader.cpython-310.pyc
diff --git a/tests/unit/config/base.py b/openstack/tests/unit/config/base.py
similarity index 100%
rename from tests/unit/config/base.py
rename to openstack/tests/unit/config/base.py
diff --git a/tests/unit/config/test_cloud_config.py b/openstack/tests/unit/config/test_cloud_config.py
similarity index 100%
rename from tests/unit/config/test_cloud_config.py
rename to openstack/tests/unit/config/test_cloud_config.py
diff --git a/tests/unit/config/test_config.py b/openstack/tests/unit/config/test_config.py
similarity index 100%
rename from tests/unit/config/test_config.py
rename to openstack/tests/unit/config/test_config.py
diff --git a/tests/unit/config/test_environ.py b/openstack/tests/unit/config/test_environ.py
similarity index 100%
rename from tests/unit/config/test_environ.py
rename to openstack/tests/unit/config/test_environ.py
diff --git a/tests/unit/config/test_from_conf.py b/openstack/tests/unit/config/test_from_conf.py
similarity index 100%
rename from tests/unit/config/test_from_conf.py
rename to openstack/tests/unit/config/test_from_conf.py
diff --git a/tests/unit/config/test_from_session.py b/openstack/tests/unit/config/test_from_session.py
similarity index 100%
rename from tests/unit/config/test_from_session.py
rename to openstack/tests/unit/config/test_from_session.py
diff --git a/tests/unit/config/test_init.py b/openstack/tests/unit/config/test_init.py
similarity index 100%
rename from tests/unit/config/test_init.py
rename to openstack/tests/unit/config/test_init.py
diff --git a/tests/unit/config/test_json.py b/openstack/tests/unit/config/test_json.py
similarity index 100%
rename from tests/unit/config/test_json.py
rename to openstack/tests/unit/config/test_json.py
diff --git a/tests/unit/config/test_loader.py b/openstack/tests/unit/config/test_loader.py
similarity index 100%
rename from tests/unit/config/test_loader.py
rename to openstack/tests/unit/config/test_loader.py
diff --git a/tests/unit/identity/__init__.py b/openstack/tests/unit/container_infrastructure_management/__init__.py
similarity index 100%
rename from tests/unit/identity/__init__.py
rename to openstack/tests/unit/container_infrastructure_management/__init__.py
diff --git a/tests/unit/container_infrastructure_management/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/container_infrastructure_management/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/container_infrastructure_management/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/container_infrastructure_management/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/identity/v2/__init__.py b/openstack/tests/unit/container_infrastructure_management/v1/__init__.py
similarity index 100%
rename from tests/unit/identity/v2/__init__.py
rename to openstack/tests/unit/container_infrastructure_management/v1/__init__.py
diff --git a/tests/unit/container_infrastructure_management/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/container_infrastructure_management/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/container_infrastructure_management/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/container_infrastructure_management/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/container_infrastructure_management/v1/__pycache__/test_cluster.cpython-310.pyc b/openstack/tests/unit/container_infrastructure_management/v1/__pycache__/test_cluster.cpython-310.pyc
similarity index 100%
rename from tests/unit/container_infrastructure_management/v1/__pycache__/test_cluster.cpython-310.pyc
rename to openstack/tests/unit/container_infrastructure_management/v1/__pycache__/test_cluster.cpython-310.pyc
diff --git a/tests/unit/container_infrastructure_management/v1/__pycache__/test_cluster_certificate.cpython-310.pyc b/openstack/tests/unit/container_infrastructure_management/v1/__pycache__/test_cluster_certificate.cpython-310.pyc
similarity index 100%
rename from tests/unit/container_infrastructure_management/v1/__pycache__/test_cluster_certificate.cpython-310.pyc
rename to openstack/tests/unit/container_infrastructure_management/v1/__pycache__/test_cluster_certificate.cpython-310.pyc
diff --git a/tests/unit/container_infrastructure_management/v1/__pycache__/test_cluster_template.cpython-310.pyc b/openstack/tests/unit/container_infrastructure_management/v1/__pycache__/test_cluster_template.cpython-310.pyc
similarity index 100%
rename from tests/unit/container_infrastructure_management/v1/__pycache__/test_cluster_template.cpython-310.pyc
rename to openstack/tests/unit/container_infrastructure_management/v1/__pycache__/test_cluster_template.cpython-310.pyc
diff --git a/tests/unit/container_infrastructure_management/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/container_infrastructure_management/v1/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/container_infrastructure_management/v1/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/container_infrastructure_management/v1/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/container_infrastructure_management/v1/__pycache__/test_service.cpython-310.pyc b/openstack/tests/unit/container_infrastructure_management/v1/__pycache__/test_service.cpython-310.pyc
similarity index 100%
rename from tests/unit/container_infrastructure_management/v1/__pycache__/test_service.cpython-310.pyc
rename to openstack/tests/unit/container_infrastructure_management/v1/__pycache__/test_service.cpython-310.pyc
diff --git a/tests/unit/container_infrastructure_management/v1/test_cluster.py b/openstack/tests/unit/container_infrastructure_management/v1/test_cluster.py
similarity index 100%
rename from tests/unit/container_infrastructure_management/v1/test_cluster.py
rename to openstack/tests/unit/container_infrastructure_management/v1/test_cluster.py
diff --git a/tests/unit/container_infrastructure_management/v1/test_cluster_certificate.py b/openstack/tests/unit/container_infrastructure_management/v1/test_cluster_certificate.py
similarity index 100%
rename from tests/unit/container_infrastructure_management/v1/test_cluster_certificate.py
rename to openstack/tests/unit/container_infrastructure_management/v1/test_cluster_certificate.py
diff --git a/tests/unit/container_infrastructure_management/v1/test_cluster_template.py b/openstack/tests/unit/container_infrastructure_management/v1/test_cluster_template.py
similarity index 100%
rename from tests/unit/container_infrastructure_management/v1/test_cluster_template.py
rename to openstack/tests/unit/container_infrastructure_management/v1/test_cluster_template.py
diff --git a/tests/unit/container_infrastructure_management/v1/test_proxy.py b/openstack/tests/unit/container_infrastructure_management/v1/test_proxy.py
similarity index 100%
rename from tests/unit/container_infrastructure_management/v1/test_proxy.py
rename to openstack/tests/unit/container_infrastructure_management/v1/test_proxy.py
diff --git a/tests/unit/container_infrastructure_management/v1/test_service.py b/openstack/tests/unit/container_infrastructure_management/v1/test_service.py
similarity index 100%
rename from tests/unit/container_infrastructure_management/v1/test_service.py
rename to openstack/tests/unit/container_infrastructure_management/v1/test_service.py
diff --git a/tests/unit/identity/v3/__init__.py b/openstack/tests/unit/database/__init__.py
similarity index 100%
rename from tests/unit/identity/v3/__init__.py
rename to openstack/tests/unit/database/__init__.py
diff --git a/tests/unit/database/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/database/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/database/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/database/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/image/__init__.py b/openstack/tests/unit/database/v1/__init__.py
similarity index 100%
rename from tests/unit/image/__init__.py
rename to openstack/tests/unit/database/v1/__init__.py
diff --git a/tests/unit/database/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/database/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/database/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/database/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/database/v1/__pycache__/test_database.cpython-310.pyc b/openstack/tests/unit/database/v1/__pycache__/test_database.cpython-310.pyc
similarity index 100%
rename from tests/unit/database/v1/__pycache__/test_database.cpython-310.pyc
rename to openstack/tests/unit/database/v1/__pycache__/test_database.cpython-310.pyc
diff --git a/tests/unit/database/v1/__pycache__/test_flavor.cpython-310.pyc b/openstack/tests/unit/database/v1/__pycache__/test_flavor.cpython-310.pyc
similarity index 100%
rename from tests/unit/database/v1/__pycache__/test_flavor.cpython-310.pyc
rename to openstack/tests/unit/database/v1/__pycache__/test_flavor.cpython-310.pyc
diff --git a/tests/unit/database/v1/__pycache__/test_instance.cpython-310.pyc b/openstack/tests/unit/database/v1/__pycache__/test_instance.cpython-310.pyc
similarity index 100%
rename from tests/unit/database/v1/__pycache__/test_instance.cpython-310.pyc
rename to openstack/tests/unit/database/v1/__pycache__/test_instance.cpython-310.pyc
diff --git a/tests/unit/database/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/database/v1/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/database/v1/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/database/v1/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/database/v1/__pycache__/test_user.cpython-310.pyc b/openstack/tests/unit/database/v1/__pycache__/test_user.cpython-310.pyc
similarity index 100%
rename from tests/unit/database/v1/__pycache__/test_user.cpython-310.pyc
rename to openstack/tests/unit/database/v1/__pycache__/test_user.cpython-310.pyc
diff --git a/tests/unit/database/v1/test_database.py b/openstack/tests/unit/database/v1/test_database.py
similarity index 100%
rename from tests/unit/database/v1/test_database.py
rename to openstack/tests/unit/database/v1/test_database.py
diff --git a/tests/unit/database/v1/test_flavor.py b/openstack/tests/unit/database/v1/test_flavor.py
similarity index 100%
rename from tests/unit/database/v1/test_flavor.py
rename to openstack/tests/unit/database/v1/test_flavor.py
diff --git a/tests/unit/database/v1/test_instance.py b/openstack/tests/unit/database/v1/test_instance.py
similarity index 100%
rename from tests/unit/database/v1/test_instance.py
rename to openstack/tests/unit/database/v1/test_instance.py
diff --git a/tests/unit/database/v1/test_proxy.py b/openstack/tests/unit/database/v1/test_proxy.py
similarity index 100%
rename from tests/unit/database/v1/test_proxy.py
rename to openstack/tests/unit/database/v1/test_proxy.py
diff --git a/tests/unit/database/v1/test_user.py b/openstack/tests/unit/database/v1/test_user.py
similarity index 100%
rename from tests/unit/database/v1/test_user.py
rename to openstack/tests/unit/database/v1/test_user.py
diff --git a/tests/unit/image/v1/__init__.py b/openstack/tests/unit/dns/__init__.py
similarity index 100%
rename from tests/unit/image/v1/__init__.py
rename to openstack/tests/unit/dns/__init__.py
diff --git a/tests/unit/dns/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/dns/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/dns/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/dns/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/dns/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/dns/__pycache__/test_version.cpython-310.pyc
similarity index 100%
rename from tests/unit/dns/__pycache__/test_version.cpython-310.pyc
rename to openstack/tests/unit/dns/__pycache__/test_version.cpython-310.pyc
diff --git a/tests/unit/dns/test_version.py b/openstack/tests/unit/dns/test_version.py
similarity index 100%
rename from tests/unit/dns/test_version.py
rename to openstack/tests/unit/dns/test_version.py
diff --git a/tests/unit/image/v2/__init__.py b/openstack/tests/unit/dns/v2/__init__.py
similarity index 100%
rename from tests/unit/image/v2/__init__.py
rename to openstack/tests/unit/dns/v2/__init__.py
diff --git a/tests/unit/dns/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/dns/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/dns/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/dns/v2/__pycache__/test_floating_ip.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_floating_ip.cpython-310.pyc
similarity index 100%
rename from tests/unit/dns/v2/__pycache__/test_floating_ip.cpython-310.pyc
rename to openstack/tests/unit/dns/v2/__pycache__/test_floating_ip.cpython-310.pyc
diff --git a/tests/unit/dns/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/dns/v2/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/dns/v2/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/dns/v2/__pycache__/test_recordset.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_recordset.cpython-310.pyc
similarity index 100%
rename from tests/unit/dns/v2/__pycache__/test_recordset.cpython-310.pyc
rename to openstack/tests/unit/dns/v2/__pycache__/test_recordset.cpython-310.pyc
diff --git a/tests/unit/dns/v2/__pycache__/test_zone.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_zone.cpython-310.pyc
similarity index 100%
rename from tests/unit/dns/v2/__pycache__/test_zone.cpython-310.pyc
rename to openstack/tests/unit/dns/v2/__pycache__/test_zone.cpython-310.pyc
diff --git a/tests/unit/dns/v2/__pycache__/test_zone_export.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_zone_export.cpython-310.pyc
similarity index 100%
rename from tests/unit/dns/v2/__pycache__/test_zone_export.cpython-310.pyc
rename to openstack/tests/unit/dns/v2/__pycache__/test_zone_export.cpython-310.pyc
diff --git a/tests/unit/dns/v2/__pycache__/test_zone_import.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_zone_import.cpython-310.pyc
similarity index 100%
rename from tests/unit/dns/v2/__pycache__/test_zone_import.cpython-310.pyc
rename to openstack/tests/unit/dns/v2/__pycache__/test_zone_import.cpython-310.pyc
diff --git a/tests/unit/dns/v2/__pycache__/test_zone_share.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_zone_share.cpython-310.pyc
similarity index 100%
rename from tests/unit/dns/v2/__pycache__/test_zone_share.cpython-310.pyc
rename to openstack/tests/unit/dns/v2/__pycache__/test_zone_share.cpython-310.pyc
diff --git a/tests/unit/dns/v2/__pycache__/test_zone_transfer.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_zone_transfer.cpython-310.pyc
similarity index 100%
rename from tests/unit/dns/v2/__pycache__/test_zone_transfer.cpython-310.pyc
rename to openstack/tests/unit/dns/v2/__pycache__/test_zone_transfer.cpython-310.pyc
diff --git a/tests/unit/dns/v2/test_floating_ip.py b/openstack/tests/unit/dns/v2/test_floating_ip.py
similarity index 100%
rename from tests/unit/dns/v2/test_floating_ip.py
rename to openstack/tests/unit/dns/v2/test_floating_ip.py
diff --git a/tests/unit/dns/v2/test_proxy.py b/openstack/tests/unit/dns/v2/test_proxy.py
similarity index 100%
rename from tests/unit/dns/v2/test_proxy.py
rename to openstack/tests/unit/dns/v2/test_proxy.py
diff --git a/tests/unit/dns/v2/test_recordset.py b/openstack/tests/unit/dns/v2/test_recordset.py
similarity index 100%
rename from tests/unit/dns/v2/test_recordset.py
rename to openstack/tests/unit/dns/v2/test_recordset.py
diff --git a/tests/unit/dns/v2/test_zone.py b/openstack/tests/unit/dns/v2/test_zone.py
similarity index 100%
rename from tests/unit/dns/v2/test_zone.py
rename to openstack/tests/unit/dns/v2/test_zone.py
diff --git a/tests/unit/dns/v2/test_zone_export.py b/openstack/tests/unit/dns/v2/test_zone_export.py
similarity index 100%
rename from tests/unit/dns/v2/test_zone_export.py
rename to openstack/tests/unit/dns/v2/test_zone_export.py
diff --git a/tests/unit/dns/v2/test_zone_import.py b/openstack/tests/unit/dns/v2/test_zone_import.py
similarity index 100%
rename from tests/unit/dns/v2/test_zone_import.py
rename to openstack/tests/unit/dns/v2/test_zone_import.py
diff --git a/tests/unit/dns/v2/test_zone_share.py b/openstack/tests/unit/dns/v2/test_zone_share.py
similarity index 100%
rename from tests/unit/dns/v2/test_zone_share.py
rename to openstack/tests/unit/dns/v2/test_zone_share.py
diff --git a/tests/unit/dns/v2/test_zone_transfer.py b/openstack/tests/unit/dns/v2/test_zone_transfer.py
similarity index 100%
rename from tests/unit/dns/v2/test_zone_transfer.py
rename to openstack/tests/unit/dns/v2/test_zone_transfer.py
diff --git a/tests/unit/instance_ha/__init__.py b/openstack/tests/unit/fake/__init__.py
similarity index 100%
rename from tests/unit/instance_ha/__init__.py
rename to openstack/tests/unit/fake/__init__.py
diff --git a/tests/unit/fake/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/fake/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/fake/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/fake/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/fake/__pycache__/fake_service.cpython-310.pyc b/openstack/tests/unit/fake/__pycache__/fake_service.cpython-310.pyc
similarity index 100%
rename from tests/unit/fake/__pycache__/fake_service.cpython-310.pyc
rename to openstack/tests/unit/fake/__pycache__/fake_service.cpython-310.pyc
diff --git a/tests/unit/fake/fake_service.py b/openstack/tests/unit/fake/fake_service.py
similarity index 100%
rename from tests/unit/fake/fake_service.py
rename to openstack/tests/unit/fake/fake_service.py
diff --git a/tests/unit/instance_ha/v1/__init__.py b/openstack/tests/unit/fake/v1/__init__.py
similarity index 100%
rename from tests/unit/instance_ha/v1/__init__.py
rename to openstack/tests/unit/fake/v1/__init__.py
diff --git a/tests/unit/fake/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/fake/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/fake/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/fake/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/fake/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/tests/unit/fake/v1/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/fake/v1/__pycache__/_proxy.cpython-310.pyc
rename to openstack/tests/unit/fake/v1/__pycache__/_proxy.cpython-310.pyc
diff --git a/tests/unit/fake/v1/__pycache__/fake.cpython-310.pyc b/openstack/tests/unit/fake/v1/__pycache__/fake.cpython-310.pyc
similarity index 100%
rename from tests/unit/fake/v1/__pycache__/fake.cpython-310.pyc
rename to openstack/tests/unit/fake/v1/__pycache__/fake.cpython-310.pyc
diff --git a/tests/unit/fake/v1/_proxy.py b/openstack/tests/unit/fake/v1/_proxy.py
similarity index 100%
rename from tests/unit/fake/v1/_proxy.py
rename to openstack/tests/unit/fake/v1/_proxy.py
diff --git a/tests/unit/fake/v1/fake.py b/openstack/tests/unit/fake/v1/fake.py
similarity index 100%
rename from tests/unit/fake/v1/fake.py
rename to openstack/tests/unit/fake/v1/fake.py
diff --git a/tests/unit/key_manager/__init__.py b/openstack/tests/unit/fake/v2/__init__.py
similarity index 100%
rename from tests/unit/key_manager/__init__.py
rename to openstack/tests/unit/fake/v2/__init__.py
diff --git a/tests/unit/fake/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/fake/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/fake/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/fake/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/fake/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/tests/unit/fake/v2/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/fake/v2/__pycache__/_proxy.cpython-310.pyc
rename to openstack/tests/unit/fake/v2/__pycache__/_proxy.cpython-310.pyc
diff --git a/tests/unit/fake/v2/__pycache__/fake.cpython-310.pyc b/openstack/tests/unit/fake/v2/__pycache__/fake.cpython-310.pyc
similarity index 100%
rename from tests/unit/fake/v2/__pycache__/fake.cpython-310.pyc
rename to openstack/tests/unit/fake/v2/__pycache__/fake.cpython-310.pyc
diff --git a/tests/unit/fake/v2/_proxy.py b/openstack/tests/unit/fake/v2/_proxy.py
similarity index 100%
rename from tests/unit/fake/v2/_proxy.py
rename to openstack/tests/unit/fake/v2/_proxy.py
diff --git a/tests/unit/fake/v2/fake.py b/openstack/tests/unit/fake/v2/fake.py
similarity index 100%
rename from tests/unit/fake/v2/fake.py
rename to openstack/tests/unit/fake/v2/fake.py
diff --git a/tests/unit/fakes.py b/openstack/tests/unit/fakes.py
similarity index 100%
rename from tests/unit/fakes.py
rename to openstack/tests/unit/fakes.py
diff --git a/tests/unit/fixtures/accelerator.json b/openstack/tests/unit/fixtures/accelerator.json
similarity index 100%
rename from tests/unit/fixtures/accelerator.json
rename to openstack/tests/unit/fixtures/accelerator.json
diff --git a/tests/unit/fixtures/bad-glance-version.json b/openstack/tests/unit/fixtures/bad-glance-version.json
similarity index 100%
rename from tests/unit/fixtures/bad-glance-version.json
rename to openstack/tests/unit/fixtures/bad-glance-version.json
diff --git a/tests/unit/fixtures/bad-placement.json b/openstack/tests/unit/fixtures/bad-placement.json
similarity index 100%
rename from tests/unit/fixtures/bad-placement.json
rename to openstack/tests/unit/fixtures/bad-placement.json
diff --git a/tests/unit/fixtures/baremetal.json b/openstack/tests/unit/fixtures/baremetal.json
similarity index 100%
rename from tests/unit/fixtures/baremetal.json
rename to openstack/tests/unit/fixtures/baremetal.json
diff --git a/tests/unit/fixtures/block-storage-version.json b/openstack/tests/unit/fixtures/block-storage-version.json
similarity index 100%
rename from tests/unit/fixtures/block-storage-version.json
rename to openstack/tests/unit/fixtures/block-storage-version.json
diff --git a/tests/unit/fixtures/clouds/clouds.yaml b/openstack/tests/unit/fixtures/clouds/clouds.yaml
similarity index 100%
rename from tests/unit/fixtures/clouds/clouds.yaml
rename to openstack/tests/unit/fixtures/clouds/clouds.yaml
diff --git a/tests/unit/fixtures/clouds/clouds_cache.yaml b/openstack/tests/unit/fixtures/clouds/clouds_cache.yaml
similarity index 100%
rename from tests/unit/fixtures/clouds/clouds_cache.yaml
rename to openstack/tests/unit/fixtures/clouds/clouds_cache.yaml
diff --git a/tests/unit/fixtures/clustering.json b/openstack/tests/unit/fixtures/clustering.json
similarity index 100%
rename from tests/unit/fixtures/clustering.json
rename to openstack/tests/unit/fixtures/clustering.json
diff --git a/tests/unit/fixtures/compute-version.json b/openstack/tests/unit/fixtures/compute-version.json
similarity index 100%
rename from tests/unit/fixtures/compute-version.json
rename to openstack/tests/unit/fixtures/compute-version.json
diff --git a/tests/unit/fixtures/discovery.json b/openstack/tests/unit/fixtures/discovery.json
similarity index 100%
rename from tests/unit/fixtures/discovery.json
rename to openstack/tests/unit/fixtures/discovery.json
diff --git a/tests/unit/fixtures/dns.json b/openstack/tests/unit/fixtures/dns.json
similarity index 100%
rename from tests/unit/fixtures/dns.json
rename to openstack/tests/unit/fixtures/dns.json
diff --git a/tests/unit/fixtures/image-version-broken.json b/openstack/tests/unit/fixtures/image-version-broken.json
similarity index 100%
rename from tests/unit/fixtures/image-version-broken.json
rename to openstack/tests/unit/fixtures/image-version-broken.json
diff --git a/tests/unit/fixtures/image-version-suburl.json b/openstack/tests/unit/fixtures/image-version-suburl.json
similarity index 100%
rename from tests/unit/fixtures/image-version-suburl.json
rename to openstack/tests/unit/fixtures/image-version-suburl.json
diff --git a/tests/unit/fixtures/image-version-v1.json b/openstack/tests/unit/fixtures/image-version-v1.json
similarity index 100%
rename from tests/unit/fixtures/image-version-v1.json
rename to openstack/tests/unit/fixtures/image-version-v1.json
diff --git a/tests/unit/fixtures/image-version-v2.json b/openstack/tests/unit/fixtures/image-version-v2.json
similarity index 100%
rename from tests/unit/fixtures/image-version-v2.json
rename to openstack/tests/unit/fixtures/image-version-v2.json
diff --git a/tests/unit/fixtures/image-version.json b/openstack/tests/unit/fixtures/image-version.json
similarity index 100%
rename from tests/unit/fixtures/image-version.json
rename to openstack/tests/unit/fixtures/image-version.json
diff --git a/tests/unit/fixtures/old-compute-version.json b/openstack/tests/unit/fixtures/old-compute-version.json
similarity index 100%
rename from tests/unit/fixtures/old-compute-version.json
rename to openstack/tests/unit/fixtures/old-compute-version.json
diff --git a/tests/unit/fixtures/placement.json b/openstack/tests/unit/fixtures/placement.json
similarity index 100%
rename from tests/unit/fixtures/placement.json
rename to openstack/tests/unit/fixtures/placement.json
diff --git a/tests/unit/fixtures/shared-file-system.json b/openstack/tests/unit/fixtures/shared-file-system.json
similarity index 100%
rename from tests/unit/fixtures/shared-file-system.json
rename to openstack/tests/unit/fixtures/shared-file-system.json
diff --git a/tests/unit/key_manager/v1/__init__.py b/openstack/tests/unit/identity/__init__.py
similarity index 100%
rename from tests/unit/key_manager/v1/__init__.py
rename to openstack/tests/unit/identity/__init__.py
diff --git a/tests/unit/identity/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/identity/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/identity/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/identity/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/identity/__pycache__/test_version.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/__pycache__/test_version.cpython-310.pyc
rename to openstack/tests/unit/identity/__pycache__/test_version.cpython-310.pyc
diff --git a/tests/unit/identity/test_version.py b/openstack/tests/unit/identity/test_version.py
similarity index 100%
rename from tests/unit/identity/test_version.py
rename to openstack/tests/unit/identity/test_version.py
diff --git a/tests/unit/load_balancer/__init__.py b/openstack/tests/unit/identity/v2/__init__.py
similarity index 100%
rename from tests/unit/load_balancer/__init__.py
rename to openstack/tests/unit/identity/v2/__init__.py
diff --git a/tests/unit/identity/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/identity/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/identity/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/identity/v2/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/unit/identity/v2/__pycache__/test_extension.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v2/__pycache__/test_extension.cpython-310.pyc
rename to openstack/tests/unit/identity/v2/__pycache__/test_extension.cpython-310.pyc
diff --git a/tests/unit/identity/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/identity/v2/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v2/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/identity/v2/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/identity/v2/__pycache__/test_role.cpython-310.pyc b/openstack/tests/unit/identity/v2/__pycache__/test_role.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v2/__pycache__/test_role.cpython-310.pyc
rename to openstack/tests/unit/identity/v2/__pycache__/test_role.cpython-310.pyc
diff --git a/tests/unit/identity/v2/__pycache__/test_tenant.cpython-310.pyc b/openstack/tests/unit/identity/v2/__pycache__/test_tenant.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v2/__pycache__/test_tenant.cpython-310.pyc
rename to openstack/tests/unit/identity/v2/__pycache__/test_tenant.cpython-310.pyc
diff --git a/tests/unit/identity/v2/__pycache__/test_user.cpython-310.pyc b/openstack/tests/unit/identity/v2/__pycache__/test_user.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v2/__pycache__/test_user.cpython-310.pyc
rename to openstack/tests/unit/identity/v2/__pycache__/test_user.cpython-310.pyc
diff --git a/tests/unit/identity/v2/test_extension.py b/openstack/tests/unit/identity/v2/test_extension.py
similarity index 100%
rename from tests/unit/identity/v2/test_extension.py
rename to openstack/tests/unit/identity/v2/test_extension.py
diff --git a/tests/unit/identity/v2/test_proxy.py b/openstack/tests/unit/identity/v2/test_proxy.py
similarity index 100%
rename from tests/unit/identity/v2/test_proxy.py
rename to openstack/tests/unit/identity/v2/test_proxy.py
diff --git a/tests/unit/identity/v2/test_role.py b/openstack/tests/unit/identity/v2/test_role.py
similarity index 100%
rename from tests/unit/identity/v2/test_role.py
rename to openstack/tests/unit/identity/v2/test_role.py
diff --git a/tests/unit/identity/v2/test_tenant.py b/openstack/tests/unit/identity/v2/test_tenant.py
similarity index 100%
rename from tests/unit/identity/v2/test_tenant.py
rename to openstack/tests/unit/identity/v2/test_tenant.py
diff --git a/tests/unit/identity/v2/test_user.py b/openstack/tests/unit/identity/v2/test_user.py
similarity index 100%
rename from tests/unit/identity/v2/test_user.py
rename to openstack/tests/unit/identity/v2/test_user.py
diff --git a/tests/unit/load_balancer/v2/__init__.py b/openstack/tests/unit/identity/v3/__init__.py
similarity index 100%
rename from tests/unit/load_balancer/v2/__init__.py
rename to openstack/tests/unit/identity/v3/__init__.py
diff --git a/tests/unit/identity/v3/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_application_credential.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_application_credential.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_application_credential.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_application_credential.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_credential.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_credential.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_credential.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_credential.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_domain.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_domain.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_domain.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_domain.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_domain_config.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_domain_config.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_domain_config.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_domain_config.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_endpoint.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_endpoint.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_endpoint.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_endpoint.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_federation_protocol.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_federation_protocol.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_federation_protocol.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_federation_protocol.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_group.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_group.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_group.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_group.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_identity_provider.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_identity_provider.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_identity_provider.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_identity_provider.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_limit.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_limit.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_limit.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_limit.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_mapping.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_mapping.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_mapping.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_mapping.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_policy.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_policy.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_policy.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_policy.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_project.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_project.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_project.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_project.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_region.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_region.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_region.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_region.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_registered_limit.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_registered_limit.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_registered_limit.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_registered_limit.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_role.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_role.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_role.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_role.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_role_assignment.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_role_assignment.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_role_assignment.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_role_assignment.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_role_domain_group_assignment.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_role_domain_group_assignment.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_role_domain_group_assignment.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_role_domain_group_assignment.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_role_domain_user_assignment.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_role_domain_user_assignment.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_role_domain_user_assignment.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_role_domain_user_assignment.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_role_project_group_assignment.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_role_project_group_assignment.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_role_project_group_assignment.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_role_project_group_assignment.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_role_project_user_assignment.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_role_project_user_assignment.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_role_project_user_assignment.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_role_project_user_assignment.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_role_system_group_assignment.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_role_system_group_assignment.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_role_system_group_assignment.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_role_system_group_assignment.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_role_system_user_assignment.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_role_system_user_assignment.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_role_system_user_assignment.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_role_system_user_assignment.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_service.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_service.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_service.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_service.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_trust.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_trust.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_trust.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_trust.cpython-310.pyc
diff --git a/tests/unit/identity/v3/__pycache__/test_user.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_user.cpython-310.pyc
similarity index 100%
rename from tests/unit/identity/v3/__pycache__/test_user.cpython-310.pyc
rename to openstack/tests/unit/identity/v3/__pycache__/test_user.cpython-310.pyc
diff --git a/tests/unit/identity/v3/test_application_credential.py b/openstack/tests/unit/identity/v3/test_application_credential.py
similarity index 100%
rename from tests/unit/identity/v3/test_application_credential.py
rename to openstack/tests/unit/identity/v3/test_application_credential.py
diff --git a/tests/unit/identity/v3/test_credential.py b/openstack/tests/unit/identity/v3/test_credential.py
similarity index 100%
rename from tests/unit/identity/v3/test_credential.py
rename to openstack/tests/unit/identity/v3/test_credential.py
diff --git a/tests/unit/identity/v3/test_domain.py b/openstack/tests/unit/identity/v3/test_domain.py
similarity index 100%
rename from tests/unit/identity/v3/test_domain.py
rename to openstack/tests/unit/identity/v3/test_domain.py
diff --git a/tests/unit/identity/v3/test_domain_config.py b/openstack/tests/unit/identity/v3/test_domain_config.py
similarity index 100%
rename from tests/unit/identity/v3/test_domain_config.py
rename to openstack/tests/unit/identity/v3/test_domain_config.py
diff --git a/tests/unit/identity/v3/test_endpoint.py b/openstack/tests/unit/identity/v3/test_endpoint.py
similarity index 100%
rename from tests/unit/identity/v3/test_endpoint.py
rename to openstack/tests/unit/identity/v3/test_endpoint.py
diff --git a/tests/unit/identity/v3/test_federation_protocol.py b/openstack/tests/unit/identity/v3/test_federation_protocol.py
similarity index 100%
rename from tests/unit/identity/v3/test_federation_protocol.py
rename to openstack/tests/unit/identity/v3/test_federation_protocol.py
diff --git a/tests/unit/identity/v3/test_group.py b/openstack/tests/unit/identity/v3/test_group.py
similarity index 100%
rename from tests/unit/identity/v3/test_group.py
rename to openstack/tests/unit/identity/v3/test_group.py
diff --git a/tests/unit/identity/v3/test_identity_provider.py b/openstack/tests/unit/identity/v3/test_identity_provider.py
similarity index 100%
rename from tests/unit/identity/v3/test_identity_provider.py
rename to openstack/tests/unit/identity/v3/test_identity_provider.py
diff --git a/tests/unit/identity/v3/test_limit.py b/openstack/tests/unit/identity/v3/test_limit.py
similarity index 100%
rename from tests/unit/identity/v3/test_limit.py
rename to openstack/tests/unit/identity/v3/test_limit.py
diff --git a/tests/unit/identity/v3/test_mapping.py b/openstack/tests/unit/identity/v3/test_mapping.py
similarity index 100%
rename from tests/unit/identity/v3/test_mapping.py
rename to openstack/tests/unit/identity/v3/test_mapping.py
diff --git a/tests/unit/identity/v3/test_policy.py b/openstack/tests/unit/identity/v3/test_policy.py
similarity index 100%
rename from tests/unit/identity/v3/test_policy.py
rename to openstack/tests/unit/identity/v3/test_policy.py
diff --git a/tests/unit/identity/v3/test_project.py b/openstack/tests/unit/identity/v3/test_project.py
similarity index 100%
rename from tests/unit/identity/v3/test_project.py
rename to openstack/tests/unit/identity/v3/test_project.py
diff --git a/tests/unit/identity/v3/test_proxy.py b/openstack/tests/unit/identity/v3/test_proxy.py
similarity index 100%
rename from tests/unit/identity/v3/test_proxy.py
rename to openstack/tests/unit/identity/v3/test_proxy.py
diff --git a/tests/unit/identity/v3/test_region.py b/openstack/tests/unit/identity/v3/test_region.py
similarity index 100%
rename from tests/unit/identity/v3/test_region.py
rename to openstack/tests/unit/identity/v3/test_region.py
diff --git a/tests/unit/identity/v3/test_registered_limit.py b/openstack/tests/unit/identity/v3/test_registered_limit.py
similarity index 100%
rename from tests/unit/identity/v3/test_registered_limit.py
rename to openstack/tests/unit/identity/v3/test_registered_limit.py
diff --git a/tests/unit/identity/v3/test_role.py b/openstack/tests/unit/identity/v3/test_role.py
similarity index 100%
rename from tests/unit/identity/v3/test_role.py
rename to openstack/tests/unit/identity/v3/test_role.py
diff --git a/tests/unit/identity/v3/test_role_assignment.py b/openstack/tests/unit/identity/v3/test_role_assignment.py
similarity index 100%
rename from tests/unit/identity/v3/test_role_assignment.py
rename to openstack/tests/unit/identity/v3/test_role_assignment.py
diff --git a/tests/unit/identity/v3/test_role_domain_group_assignment.py b/openstack/tests/unit/identity/v3/test_role_domain_group_assignment.py
similarity index 100%
rename from tests/unit/identity/v3/test_role_domain_group_assignment.py
rename to openstack/tests/unit/identity/v3/test_role_domain_group_assignment.py
diff --git a/tests/unit/identity/v3/test_role_domain_user_assignment.py b/openstack/tests/unit/identity/v3/test_role_domain_user_assignment.py
similarity index 100%
rename from tests/unit/identity/v3/test_role_domain_user_assignment.py
rename to openstack/tests/unit/identity/v3/test_role_domain_user_assignment.py
diff --git a/tests/unit/identity/v3/test_role_project_group_assignment.py b/openstack/tests/unit/identity/v3/test_role_project_group_assignment.py
similarity index 100%
rename from tests/unit/identity/v3/test_role_project_group_assignment.py
rename to openstack/tests/unit/identity/v3/test_role_project_group_assignment.py
diff --git a/tests/unit/identity/v3/test_role_project_user_assignment.py b/openstack/tests/unit/identity/v3/test_role_project_user_assignment.py
similarity index 100%
rename from tests/unit/identity/v3/test_role_project_user_assignment.py
rename to openstack/tests/unit/identity/v3/test_role_project_user_assignment.py
diff --git a/tests/unit/identity/v3/test_role_system_group_assignment.py b/openstack/tests/unit/identity/v3/test_role_system_group_assignment.py
similarity index 100%
rename from tests/unit/identity/v3/test_role_system_group_assignment.py
rename to openstack/tests/unit/identity/v3/test_role_system_group_assignment.py
diff --git a/tests/unit/identity/v3/test_role_system_user_assignment.py b/openstack/tests/unit/identity/v3/test_role_system_user_assignment.py
similarity index 100%
rename from tests/unit/identity/v3/test_role_system_user_assignment.py
rename to openstack/tests/unit/identity/v3/test_role_system_user_assignment.py
diff --git a/tests/unit/identity/v3/test_service.py b/openstack/tests/unit/identity/v3/test_service.py
similarity index 100%
rename from tests/unit/identity/v3/test_service.py
rename to openstack/tests/unit/identity/v3/test_service.py
diff --git a/tests/unit/identity/v3/test_trust.py b/openstack/tests/unit/identity/v3/test_trust.py
similarity index 100%
rename from tests/unit/identity/v3/test_trust.py
rename to openstack/tests/unit/identity/v3/test_trust.py
diff --git a/tests/unit/identity/v3/test_user.py b/openstack/tests/unit/identity/v3/test_user.py
similarity index 100%
rename from tests/unit/identity/v3/test_user.py
rename to openstack/tests/unit/identity/v3/test_user.py
diff --git a/tests/unit/message/__init__.py b/openstack/tests/unit/image/__init__.py
similarity index 100%
rename from tests/unit/message/__init__.py
rename to openstack/tests/unit/image/__init__.py
diff --git a/tests/unit/image/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/image/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/image/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/message/v2/__init__.py b/openstack/tests/unit/image/v1/__init__.py
similarity index 100%
rename from tests/unit/message/v2/__init__.py
rename to openstack/tests/unit/image/v1/__init__.py
diff --git a/tests/unit/image/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/image/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/image/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/image/v1/__pycache__/test_image.cpython-310.pyc b/openstack/tests/unit/image/v1/__pycache__/test_image.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v1/__pycache__/test_image.cpython-310.pyc
rename to openstack/tests/unit/image/v1/__pycache__/test_image.cpython-310.pyc
diff --git a/tests/unit/image/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/image/v1/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v1/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/image/v1/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/image/v1/test_image.py b/openstack/tests/unit/image/v1/test_image.py
similarity index 100%
rename from tests/unit/image/v1/test_image.py
rename to openstack/tests/unit/image/v1/test_image.py
diff --git a/tests/unit/image/v1/test_proxy.py b/openstack/tests/unit/image/v1/test_proxy.py
similarity index 100%
rename from tests/unit/image/v1/test_proxy.py
rename to openstack/tests/unit/image/v1/test_proxy.py
diff --git a/tests/unit/network/__init__.py b/openstack/tests/unit/image/v2/__init__.py
similarity index 100%
rename from tests/unit/network/__init__.py
rename to openstack/tests/unit/image/v2/__init__.py
diff --git a/tests/unit/image/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/image/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/image/v2/__pycache__/test_cache.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_cache.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v2/__pycache__/test_cache.cpython-310.pyc
rename to openstack/tests/unit/image/v2/__pycache__/test_cache.cpython-310.pyc
diff --git a/tests/unit/image/v2/__pycache__/test_image.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_image.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v2/__pycache__/test_image.cpython-310.pyc
rename to openstack/tests/unit/image/v2/__pycache__/test_image.cpython-310.pyc
diff --git a/tests/unit/image/v2/__pycache__/test_member.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_member.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v2/__pycache__/test_member.cpython-310.pyc
rename to openstack/tests/unit/image/v2/__pycache__/test_member.cpython-310.pyc
diff --git a/tests/unit/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc
rename to openstack/tests/unit/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc
diff --git a/tests/unit/image/v2/__pycache__/test_metadef_object.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_metadef_object.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v2/__pycache__/test_metadef_object.cpython-310.pyc
rename to openstack/tests/unit/image/v2/__pycache__/test_metadef_object.cpython-310.pyc
diff --git a/tests/unit/image/v2/__pycache__/test_metadef_property.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_metadef_property.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v2/__pycache__/test_metadef_property.cpython-310.pyc
rename to openstack/tests/unit/image/v2/__pycache__/test_metadef_property.cpython-310.pyc
diff --git a/tests/unit/image/v2/__pycache__/test_metadef_resource_type.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_metadef_resource_type.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v2/__pycache__/test_metadef_resource_type.cpython-310.pyc
rename to openstack/tests/unit/image/v2/__pycache__/test_metadef_resource_type.cpython-310.pyc
diff --git a/tests/unit/image/v2/__pycache__/test_metadef_resource_type_association.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_metadef_resource_type_association.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v2/__pycache__/test_metadef_resource_type_association.cpython-310.pyc
rename to openstack/tests/unit/image/v2/__pycache__/test_metadef_resource_type_association.cpython-310.pyc
diff --git a/tests/unit/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc
rename to openstack/tests/unit/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc
diff --git a/tests/unit/image/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v2/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/image/v2/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/image/v2/__pycache__/test_schema.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_schema.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v2/__pycache__/test_schema.cpython-310.pyc
rename to openstack/tests/unit/image/v2/__pycache__/test_schema.cpython-310.pyc
diff --git a/tests/unit/image/v2/__pycache__/test_service_info.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_service_info.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v2/__pycache__/test_service_info.cpython-310.pyc
rename to openstack/tests/unit/image/v2/__pycache__/test_service_info.cpython-310.pyc
diff --git a/tests/unit/image/v2/__pycache__/test_task.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_task.cpython-310.pyc
similarity index 100%
rename from tests/unit/image/v2/__pycache__/test_task.cpython-310.pyc
rename to openstack/tests/unit/image/v2/__pycache__/test_task.cpython-310.pyc
diff --git a/tests/unit/image/v2/test_cache.py b/openstack/tests/unit/image/v2/test_cache.py
similarity index 100%
rename from tests/unit/image/v2/test_cache.py
rename to openstack/tests/unit/image/v2/test_cache.py
diff --git a/tests/unit/image/v2/test_image.py b/openstack/tests/unit/image/v2/test_image.py
similarity index 100%
rename from tests/unit/image/v2/test_image.py
rename to openstack/tests/unit/image/v2/test_image.py
diff --git a/tests/unit/image/v2/test_member.py b/openstack/tests/unit/image/v2/test_member.py
similarity index 100%
rename from tests/unit/image/v2/test_member.py
rename to openstack/tests/unit/image/v2/test_member.py
diff --git a/tests/unit/image/v2/test_metadef_namespace.py b/openstack/tests/unit/image/v2/test_metadef_namespace.py
similarity index 100%
rename from tests/unit/image/v2/test_metadef_namespace.py
rename to openstack/tests/unit/image/v2/test_metadef_namespace.py
diff --git a/tests/unit/image/v2/test_metadef_object.py b/openstack/tests/unit/image/v2/test_metadef_object.py
similarity index 100%
rename from tests/unit/image/v2/test_metadef_object.py
rename to openstack/tests/unit/image/v2/test_metadef_object.py
diff --git a/tests/unit/image/v2/test_metadef_property.py b/openstack/tests/unit/image/v2/test_metadef_property.py
similarity index 100%
rename from tests/unit/image/v2/test_metadef_property.py
rename to openstack/tests/unit/image/v2/test_metadef_property.py
diff --git a/tests/unit/image/v2/test_metadef_resource_type.py b/openstack/tests/unit/image/v2/test_metadef_resource_type.py
similarity index 100%
rename from tests/unit/image/v2/test_metadef_resource_type.py
rename to openstack/tests/unit/image/v2/test_metadef_resource_type.py
diff --git a/tests/unit/image/v2/test_metadef_resource_type_association.py b/openstack/tests/unit/image/v2/test_metadef_resource_type_association.py
similarity index 100%
rename from tests/unit/image/v2/test_metadef_resource_type_association.py
rename to openstack/tests/unit/image/v2/test_metadef_resource_type_association.py
diff --git a/tests/unit/image/v2/test_metadef_schema.py b/openstack/tests/unit/image/v2/test_metadef_schema.py
similarity index 100%
rename from tests/unit/image/v2/test_metadef_schema.py
rename to openstack/tests/unit/image/v2/test_metadef_schema.py
diff --git a/tests/unit/image/v2/test_proxy.py b/openstack/tests/unit/image/v2/test_proxy.py
similarity index 100%
rename from tests/unit/image/v2/test_proxy.py
rename to openstack/tests/unit/image/v2/test_proxy.py
diff --git a/tests/unit/image/v2/test_schema.py b/openstack/tests/unit/image/v2/test_schema.py
similarity index 100%
rename from tests/unit/image/v2/test_schema.py
rename to openstack/tests/unit/image/v2/test_schema.py
diff --git a/tests/unit/image/v2/test_service_info.py b/openstack/tests/unit/image/v2/test_service_info.py
similarity index 100%
rename from tests/unit/image/v2/test_service_info.py
rename to openstack/tests/unit/image/v2/test_service_info.py
diff --git a/tests/unit/image/v2/test_task.py b/openstack/tests/unit/image/v2/test_task.py
similarity index 100%
rename from tests/unit/image/v2/test_task.py
rename to openstack/tests/unit/image/v2/test_task.py
diff --git a/tests/unit/network/v2/__init__.py b/openstack/tests/unit/instance_ha/__init__.py
similarity index 100%
rename from tests/unit/network/v2/__init__.py
rename to openstack/tests/unit/instance_ha/__init__.py
diff --git a/tests/unit/instance_ha/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/instance_ha/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/instance_ha/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/instance_ha/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/object_store/__init__.py b/openstack/tests/unit/instance_ha/v1/__init__.py
similarity index 100%
rename from tests/unit/object_store/__init__.py
rename to openstack/tests/unit/instance_ha/v1/__init__.py
diff --git a/tests/unit/instance_ha/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/instance_ha/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/instance_ha/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/instance_ha/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/instance_ha/v1/__pycache__/test_host.cpython-310.pyc b/openstack/tests/unit/instance_ha/v1/__pycache__/test_host.cpython-310.pyc
similarity index 100%
rename from tests/unit/instance_ha/v1/__pycache__/test_host.cpython-310.pyc
rename to openstack/tests/unit/instance_ha/v1/__pycache__/test_host.cpython-310.pyc
diff --git a/tests/unit/instance_ha/v1/__pycache__/test_notification.cpython-310.pyc b/openstack/tests/unit/instance_ha/v1/__pycache__/test_notification.cpython-310.pyc
similarity index 100%
rename from tests/unit/instance_ha/v1/__pycache__/test_notification.cpython-310.pyc
rename to openstack/tests/unit/instance_ha/v1/__pycache__/test_notification.cpython-310.pyc
diff --git a/tests/unit/instance_ha/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/instance_ha/v1/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/instance_ha/v1/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/instance_ha/v1/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/instance_ha/v1/__pycache__/test_segment.cpython-310.pyc b/openstack/tests/unit/instance_ha/v1/__pycache__/test_segment.cpython-310.pyc
similarity index 100%
rename from tests/unit/instance_ha/v1/__pycache__/test_segment.cpython-310.pyc
rename to openstack/tests/unit/instance_ha/v1/__pycache__/test_segment.cpython-310.pyc
diff --git a/tests/unit/instance_ha/v1/__pycache__/test_vmove.cpython-310.pyc b/openstack/tests/unit/instance_ha/v1/__pycache__/test_vmove.cpython-310.pyc
similarity index 100%
rename from tests/unit/instance_ha/v1/__pycache__/test_vmove.cpython-310.pyc
rename to openstack/tests/unit/instance_ha/v1/__pycache__/test_vmove.cpython-310.pyc
diff --git a/tests/unit/instance_ha/v1/test_host.py b/openstack/tests/unit/instance_ha/v1/test_host.py
similarity index 100%
rename from tests/unit/instance_ha/v1/test_host.py
rename to openstack/tests/unit/instance_ha/v1/test_host.py
diff --git a/tests/unit/instance_ha/v1/test_notification.py b/openstack/tests/unit/instance_ha/v1/test_notification.py
similarity index 100%
rename from tests/unit/instance_ha/v1/test_notification.py
rename to openstack/tests/unit/instance_ha/v1/test_notification.py
diff --git a/tests/unit/instance_ha/v1/test_proxy.py b/openstack/tests/unit/instance_ha/v1/test_proxy.py
similarity index 100%
rename from tests/unit/instance_ha/v1/test_proxy.py
rename to openstack/tests/unit/instance_ha/v1/test_proxy.py
diff --git a/tests/unit/instance_ha/v1/test_segment.py b/openstack/tests/unit/instance_ha/v1/test_segment.py
similarity index 100%
rename from tests/unit/instance_ha/v1/test_segment.py
rename to openstack/tests/unit/instance_ha/v1/test_segment.py
diff --git a/tests/unit/instance_ha/v1/test_vmove.py b/openstack/tests/unit/instance_ha/v1/test_vmove.py
similarity index 100%
rename from tests/unit/instance_ha/v1/test_vmove.py
rename to openstack/tests/unit/instance_ha/v1/test_vmove.py
diff --git a/tests/unit/object_store/v1/__init__.py b/openstack/tests/unit/key_manager/__init__.py
similarity index 100%
rename from tests/unit/object_store/v1/__init__.py
rename to openstack/tests/unit/key_manager/__init__.py
diff --git a/tests/unit/key_manager/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/key_manager/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/key_manager/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/key_manager/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/orchestration/__init__.py b/openstack/tests/unit/key_manager/v1/__init__.py
similarity index 100%
rename from tests/unit/orchestration/__init__.py
rename to openstack/tests/unit/key_manager/v1/__init__.py
diff --git a/tests/unit/key_manager/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/key_manager/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/key_manager/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/key_manager/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/key_manager/v1/__pycache__/test_container.cpython-310.pyc b/openstack/tests/unit/key_manager/v1/__pycache__/test_container.cpython-310.pyc
similarity index 100%
rename from tests/unit/key_manager/v1/__pycache__/test_container.cpython-310.pyc
rename to openstack/tests/unit/key_manager/v1/__pycache__/test_container.cpython-310.pyc
diff --git a/tests/unit/key_manager/v1/__pycache__/test_order.cpython-310.pyc b/openstack/tests/unit/key_manager/v1/__pycache__/test_order.cpython-310.pyc
similarity index 100%
rename from tests/unit/key_manager/v1/__pycache__/test_order.cpython-310.pyc
rename to openstack/tests/unit/key_manager/v1/__pycache__/test_order.cpython-310.pyc
diff --git a/tests/unit/key_manager/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/key_manager/v1/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/key_manager/v1/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/key_manager/v1/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/key_manager/v1/__pycache__/test_secret.cpython-310.pyc b/openstack/tests/unit/key_manager/v1/__pycache__/test_secret.cpython-310.pyc
similarity index 100%
rename from tests/unit/key_manager/v1/__pycache__/test_secret.cpython-310.pyc
rename to openstack/tests/unit/key_manager/v1/__pycache__/test_secret.cpython-310.pyc
diff --git a/tests/unit/key_manager/v1/test_container.py b/openstack/tests/unit/key_manager/v1/test_container.py
similarity index 100%
rename from tests/unit/key_manager/v1/test_container.py
rename to openstack/tests/unit/key_manager/v1/test_container.py
diff --git a/tests/unit/key_manager/v1/test_order.py b/openstack/tests/unit/key_manager/v1/test_order.py
similarity index 100%
rename from tests/unit/key_manager/v1/test_order.py
rename to openstack/tests/unit/key_manager/v1/test_order.py
diff --git a/tests/unit/key_manager/v1/test_proxy.py b/openstack/tests/unit/key_manager/v1/test_proxy.py
similarity index 100%
rename from tests/unit/key_manager/v1/test_proxy.py
rename to openstack/tests/unit/key_manager/v1/test_proxy.py
diff --git a/tests/unit/key_manager/v1/test_secret.py b/openstack/tests/unit/key_manager/v1/test_secret.py
similarity index 100%
rename from tests/unit/key_manager/v1/test_secret.py
rename to openstack/tests/unit/key_manager/v1/test_secret.py
diff --git a/tests/unit/orchestration/v1/__init__.py b/openstack/tests/unit/load_balancer/__init__.py
similarity index 100%
rename from tests/unit/orchestration/v1/__init__.py
rename to openstack/tests/unit/load_balancer/__init__.py
diff --git a/tests/unit/load_balancer/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/load_balancer/__pycache__/test_amphora.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_amphora.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/test_amphora.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/test_amphora.cpython-310.pyc
diff --git a/tests/unit/load_balancer/__pycache__/test_availability_zone.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_availability_zone.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/test_availability_zone.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/test_availability_zone.cpython-310.pyc
diff --git a/tests/unit/load_balancer/__pycache__/test_availability_zone_profile.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_availability_zone_profile.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/test_availability_zone_profile.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/test_availability_zone_profile.cpython-310.pyc
diff --git a/tests/unit/load_balancer/__pycache__/test_flavor.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_flavor.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/test_flavor.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/test_flavor.cpython-310.pyc
diff --git a/tests/unit/load_balancer/__pycache__/test_flavor_profile.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_flavor_profile.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/test_flavor_profile.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/test_flavor_profile.cpython-310.pyc
diff --git a/tests/unit/load_balancer/__pycache__/test_health_monitor.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_health_monitor.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/test_health_monitor.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/test_health_monitor.cpython-310.pyc
diff --git a/tests/unit/load_balancer/__pycache__/test_l7policy.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_l7policy.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/test_l7policy.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/test_l7policy.cpython-310.pyc
diff --git a/tests/unit/load_balancer/__pycache__/test_l7rule.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_l7rule.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/test_l7rule.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/test_l7rule.cpython-310.pyc
diff --git a/tests/unit/load_balancer/__pycache__/test_listener.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_listener.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/test_listener.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/test_listener.cpython-310.pyc
diff --git a/tests/unit/load_balancer/__pycache__/test_load_balancer.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_load_balancer.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/test_load_balancer.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/test_load_balancer.cpython-310.pyc
diff --git a/tests/unit/load_balancer/__pycache__/test_member.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_member.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/test_member.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/test_member.cpython-310.pyc
diff --git a/tests/unit/load_balancer/__pycache__/test_pool.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_pool.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/test_pool.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/test_pool.cpython-310.pyc
diff --git a/tests/unit/load_balancer/__pycache__/test_provider.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_provider.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/test_provider.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/test_provider.cpython-310.pyc
diff --git a/tests/unit/load_balancer/__pycache__/test_quota.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_quota.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/test_quota.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/test_quota.cpython-310.pyc
diff --git a/tests/unit/load_balancer/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_version.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/__pycache__/test_version.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/__pycache__/test_version.cpython-310.pyc
diff --git a/tests/unit/load_balancer/test_amphora.py b/openstack/tests/unit/load_balancer/test_amphora.py
similarity index 100%
rename from tests/unit/load_balancer/test_amphora.py
rename to openstack/tests/unit/load_balancer/test_amphora.py
diff --git a/tests/unit/load_balancer/test_availability_zone.py b/openstack/tests/unit/load_balancer/test_availability_zone.py
similarity index 100%
rename from tests/unit/load_balancer/test_availability_zone.py
rename to openstack/tests/unit/load_balancer/test_availability_zone.py
diff --git a/tests/unit/load_balancer/test_availability_zone_profile.py b/openstack/tests/unit/load_balancer/test_availability_zone_profile.py
similarity index 100%
rename from tests/unit/load_balancer/test_availability_zone_profile.py
rename to openstack/tests/unit/load_balancer/test_availability_zone_profile.py
diff --git a/tests/unit/load_balancer/test_flavor.py b/openstack/tests/unit/load_balancer/test_flavor.py
similarity index 100%
rename from tests/unit/load_balancer/test_flavor.py
rename to openstack/tests/unit/load_balancer/test_flavor.py
diff --git a/tests/unit/load_balancer/test_flavor_profile.py b/openstack/tests/unit/load_balancer/test_flavor_profile.py
similarity index 100%
rename from tests/unit/load_balancer/test_flavor_profile.py
rename to openstack/tests/unit/load_balancer/test_flavor_profile.py
diff --git a/tests/unit/load_balancer/test_health_monitor.py b/openstack/tests/unit/load_balancer/test_health_monitor.py
similarity index 100%
rename from tests/unit/load_balancer/test_health_monitor.py
rename to openstack/tests/unit/load_balancer/test_health_monitor.py
diff --git a/tests/unit/load_balancer/test_l7policy.py b/openstack/tests/unit/load_balancer/test_l7policy.py
similarity index 100%
rename from tests/unit/load_balancer/test_l7policy.py
rename to openstack/tests/unit/load_balancer/test_l7policy.py
diff --git a/tests/unit/load_balancer/test_l7rule.py b/openstack/tests/unit/load_balancer/test_l7rule.py
similarity index 100%
rename from tests/unit/load_balancer/test_l7rule.py
rename to openstack/tests/unit/load_balancer/test_l7rule.py
diff --git a/tests/unit/load_balancer/test_listener.py b/openstack/tests/unit/load_balancer/test_listener.py
similarity index 100%
rename from tests/unit/load_balancer/test_listener.py
rename to openstack/tests/unit/load_balancer/test_listener.py
diff --git a/tests/unit/load_balancer/test_load_balancer.py b/openstack/tests/unit/load_balancer/test_load_balancer.py
similarity index 100%
rename from tests/unit/load_balancer/test_load_balancer.py
rename to openstack/tests/unit/load_balancer/test_load_balancer.py
diff --git a/tests/unit/load_balancer/test_member.py b/openstack/tests/unit/load_balancer/test_member.py
similarity index 100%
rename from tests/unit/load_balancer/test_member.py
rename to openstack/tests/unit/load_balancer/test_member.py
diff --git a/tests/unit/load_balancer/test_pool.py b/openstack/tests/unit/load_balancer/test_pool.py
similarity index 100%
rename from tests/unit/load_balancer/test_pool.py
rename to openstack/tests/unit/load_balancer/test_pool.py
diff --git a/tests/unit/load_balancer/test_provider.py b/openstack/tests/unit/load_balancer/test_provider.py
similarity index 100%
rename from tests/unit/load_balancer/test_provider.py
rename to openstack/tests/unit/load_balancer/test_provider.py
diff --git a/tests/unit/load_balancer/test_quota.py b/openstack/tests/unit/load_balancer/test_quota.py
similarity index 100%
rename from tests/unit/load_balancer/test_quota.py
rename to openstack/tests/unit/load_balancer/test_quota.py
diff --git a/tests/unit/load_balancer/test_version.py b/openstack/tests/unit/load_balancer/test_version.py
similarity index 100%
rename from tests/unit/load_balancer/test_version.py
rename to openstack/tests/unit/load_balancer/test_version.py
diff --git a/tests/unit/placement/__init__.py b/openstack/tests/unit/load_balancer/v2/__init__.py
similarity index 100%
rename from tests/unit/placement/__init__.py
rename to openstack/tests/unit/load_balancer/v2/__init__.py
diff --git a/tests/unit/load_balancer/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/load_balancer/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/load_balancer/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/load_balancer/v2/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/load_balancer/v2/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/load_balancer/v2/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/load_balancer/v2/test_proxy.py b/openstack/tests/unit/load_balancer/v2/test_proxy.py
similarity index 100%
rename from tests/unit/load_balancer/v2/test_proxy.py
rename to openstack/tests/unit/load_balancer/v2/test_proxy.py
diff --git a/tests/unit/placement/v1/__init__.py b/openstack/tests/unit/message/__init__.py
similarity index 100%
rename from tests/unit/placement/v1/__init__.py
rename to openstack/tests/unit/message/__init__.py
diff --git a/tests/unit/message/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/message/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/message/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/message/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/message/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/message/__pycache__/test_version.cpython-310.pyc
similarity index 100%
rename from tests/unit/message/__pycache__/test_version.cpython-310.pyc
rename to openstack/tests/unit/message/__pycache__/test_version.cpython-310.pyc
diff --git a/tests/unit/message/test_version.py b/openstack/tests/unit/message/test_version.py
similarity index 100%
rename from tests/unit/message/test_version.py
rename to openstack/tests/unit/message/test_version.py
diff --git a/tests/unit/shared_file_system/__init__.py b/openstack/tests/unit/message/v2/__init__.py
similarity index 100%
rename from tests/unit/shared_file_system/__init__.py
rename to openstack/tests/unit/message/v2/__init__.py
diff --git a/tests/unit/message/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/message/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/message/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/message/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/message/v2/__pycache__/test_claim.cpython-310.pyc b/openstack/tests/unit/message/v2/__pycache__/test_claim.cpython-310.pyc
similarity index 100%
rename from tests/unit/message/v2/__pycache__/test_claim.cpython-310.pyc
rename to openstack/tests/unit/message/v2/__pycache__/test_claim.cpython-310.pyc
diff --git a/tests/unit/message/v2/__pycache__/test_message.cpython-310.pyc b/openstack/tests/unit/message/v2/__pycache__/test_message.cpython-310.pyc
similarity index 100%
rename from tests/unit/message/v2/__pycache__/test_message.cpython-310.pyc
rename to openstack/tests/unit/message/v2/__pycache__/test_message.cpython-310.pyc
diff --git a/tests/unit/message/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/message/v2/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/message/v2/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/message/v2/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/message/v2/__pycache__/test_queue.cpython-310.pyc b/openstack/tests/unit/message/v2/__pycache__/test_queue.cpython-310.pyc
similarity index 100%
rename from tests/unit/message/v2/__pycache__/test_queue.cpython-310.pyc
rename to openstack/tests/unit/message/v2/__pycache__/test_queue.cpython-310.pyc
diff --git a/tests/unit/message/v2/__pycache__/test_subscription.cpython-310.pyc b/openstack/tests/unit/message/v2/__pycache__/test_subscription.cpython-310.pyc
similarity index 100%
rename from tests/unit/message/v2/__pycache__/test_subscription.cpython-310.pyc
rename to openstack/tests/unit/message/v2/__pycache__/test_subscription.cpython-310.pyc
diff --git a/tests/unit/message/v2/test_claim.py b/openstack/tests/unit/message/v2/test_claim.py
similarity index 100%
rename from tests/unit/message/v2/test_claim.py
rename to openstack/tests/unit/message/v2/test_claim.py
diff --git a/tests/unit/message/v2/test_message.py b/openstack/tests/unit/message/v2/test_message.py
similarity index 100%
rename from tests/unit/message/v2/test_message.py
rename to openstack/tests/unit/message/v2/test_message.py
diff --git a/tests/unit/message/v2/test_proxy.py b/openstack/tests/unit/message/v2/test_proxy.py
similarity index 100%
rename from tests/unit/message/v2/test_proxy.py
rename to openstack/tests/unit/message/v2/test_proxy.py
diff --git a/tests/unit/message/v2/test_queue.py b/openstack/tests/unit/message/v2/test_queue.py
similarity index 100%
rename from tests/unit/message/v2/test_queue.py
rename to openstack/tests/unit/message/v2/test_queue.py
diff --git a/tests/unit/message/v2/test_subscription.py b/openstack/tests/unit/message/v2/test_subscription.py
similarity index 100%
rename from tests/unit/message/v2/test_subscription.py
rename to openstack/tests/unit/message/v2/test_subscription.py
diff --git a/tests/unit/shared_file_system/v2/__init__.py b/openstack/tests/unit/network/__init__.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/__init__.py
rename to openstack/tests/unit/network/__init__.py
diff --git a/tests/unit/network/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/network/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/network/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/network/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/network/__pycache__/test_version.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/__pycache__/test_version.cpython-310.pyc
rename to openstack/tests/unit/network/__pycache__/test_version.cpython-310.pyc
diff --git a/tests/unit/network/test_version.py b/openstack/tests/unit/network/test_version.py
similarity index 100%
rename from tests/unit/network/test_version.py
rename to openstack/tests/unit/network/test_version.py
diff --git a/tests/unit/workflow/__init__.py b/openstack/tests/unit/network/v2/__init__.py
similarity index 100%
rename from tests/unit/workflow/__init__.py
rename to openstack/tests/unit/network/v2/__init__.py
diff --git a/tests/unit/network/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_address_group.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_address_group.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_address_group.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_address_group.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_address_scope.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_address_scope.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_address_scope.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_address_scope.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_agent.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_agent.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_agent.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_agent.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_auto_allocated_topology.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_auto_allocated_topology.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_auto_allocated_topology.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_auto_allocated_topology.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_availability_zone.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_availability_zone.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_availability_zone.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_availability_zone.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_bgp_peer.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_bgp_peer.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_bgp_peer.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_bgp_peer.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_bgp_speaker.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_bgp_speaker.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_bgp_speaker.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_bgp_speaker.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_default_security_group_rule.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_default_security_group_rule.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_default_security_group_rule.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_default_security_group_rule.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_extension.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_extension.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_extension.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_firewall_group.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_firewall_group.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_firewall_group.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_firewall_group.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_flavor.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_flavor.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_flavor.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_flavor.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_floating_ip.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_floating_ip.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_floating_ip.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_floating_ip.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_health_monitor.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_health_monitor.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_health_monitor.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_health_monitor.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_l3_conntrack_helper.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_l3_conntrack_helper.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_l3_conntrack_helper.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_l3_conntrack_helper.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_listener.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_listener.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_listener.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_listener.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_load_balancer.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_load_balancer.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_load_balancer.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_load_balancer.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_local_ip.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_local_ip.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_local_ip.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_local_ip.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_local_ip_association.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_local_ip_association.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_local_ip_association.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_local_ip_association.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_metering_label.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_metering_label.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_metering_label.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_metering_label.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_metering_label_rule.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_metering_label_rule.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_metering_label_rule.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_metering_label_rule.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_network.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_network.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_network.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_network.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_network_ip_availability.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_network_ip_availability.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_network_ip_availability.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_network_ip_availability.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_network_segment_range.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_network_segment_range.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_network_segment_range.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_network_segment_range.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_pool.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_pool.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_pool.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_pool.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_pool_member.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_pool_member.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_pool_member.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_pool_member.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_port.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_port.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_port.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_port.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_qos_minimum_packet_rate_rule.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_qos_minimum_packet_rate_rule.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_qos_minimum_packet_rate_rule.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_qos_minimum_packet_rate_rule.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_qos_policy.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_qos_policy.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_qos_policy.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_qos_policy.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_qos_rule_type.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_qos_rule_type.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_qos_rule_type.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_qos_rule_type.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_quota.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_quota.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_quota.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_quota.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_router.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_router.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_router.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_router.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_security_group.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_security_group.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_security_group.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_security_group.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_security_group_rule.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_security_group_rule.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_security_group_rule.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_security_group_rule.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_segment.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_segment.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_segment.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_segment.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_service_profile.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_service_profile.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_service_profile.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_service_profile.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_service_provider.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_service_provider.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_service_provider.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_service_provider.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_sfc_flow_classifier.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_sfc_flow_classifier.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_sfc_flow_classifier.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_sfc_flow_classifier.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_sfc_port_chain.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_sfc_port_chain.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_sfc_port_chain.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_sfc_port_chain.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_sfc_port_pair.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_sfc_port_pair.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_sfc_port_pair.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_sfc_port_pair.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_sfc_port_pair_group.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_sfc_port_pair_group.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_sfc_port_pair_group.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_sfc_port_pair_group.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_sfc_service_graph.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_sfc_service_graph.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_sfc_service_graph.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_sfc_service_graph.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_subnet.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_subnet.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_subnet.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_subnet.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_tap_flow.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_tap_flow.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_tap_flow.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_tap_flow.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_tap_service.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_tap_service.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_tap_service.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_tap_service.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_trunk.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_trunk.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_trunk.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_trunk.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_vpn_endpoint_group.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_vpn_endpoint_group.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_vpn_endpoint_group.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_vpn_endpoint_group.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_vpn_ikepolicy.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_vpn_ikepolicy.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_vpn_ikepolicy.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_vpn_ikepolicy.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_vpn_ipsec_site_connection.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_vpn_ipsec_site_connection.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_vpn_ipsec_site_connection.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_vpn_ipsec_site_connection.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_vpn_ipsecpolicy.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_vpn_ipsecpolicy.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_vpn_ipsecpolicy.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_vpn_ipsecpolicy.cpython-310.pyc
diff --git a/tests/unit/network/v2/__pycache__/test_vpn_service.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_vpn_service.cpython-310.pyc
similarity index 100%
rename from tests/unit/network/v2/__pycache__/test_vpn_service.cpython-310.pyc
rename to openstack/tests/unit/network/v2/__pycache__/test_vpn_service.cpython-310.pyc
diff --git a/tests/unit/network/v2/test_address_group.py b/openstack/tests/unit/network/v2/test_address_group.py
similarity index 100%
rename from tests/unit/network/v2/test_address_group.py
rename to openstack/tests/unit/network/v2/test_address_group.py
diff --git a/tests/unit/network/v2/test_address_scope.py b/openstack/tests/unit/network/v2/test_address_scope.py
similarity index 100%
rename from tests/unit/network/v2/test_address_scope.py
rename to openstack/tests/unit/network/v2/test_address_scope.py
diff --git a/tests/unit/network/v2/test_agent.py b/openstack/tests/unit/network/v2/test_agent.py
similarity index 100%
rename from tests/unit/network/v2/test_agent.py
rename to openstack/tests/unit/network/v2/test_agent.py
diff --git a/tests/unit/network/v2/test_auto_allocated_topology.py b/openstack/tests/unit/network/v2/test_auto_allocated_topology.py
similarity index 100%
rename from tests/unit/network/v2/test_auto_allocated_topology.py
rename to openstack/tests/unit/network/v2/test_auto_allocated_topology.py
diff --git a/tests/unit/network/v2/test_availability_zone.py b/openstack/tests/unit/network/v2/test_availability_zone.py
similarity index 100%
rename from tests/unit/network/v2/test_availability_zone.py
rename to openstack/tests/unit/network/v2/test_availability_zone.py
diff --git a/tests/unit/network/v2/test_bgp_peer.py b/openstack/tests/unit/network/v2/test_bgp_peer.py
similarity index 100%
rename from tests/unit/network/v2/test_bgp_peer.py
rename to openstack/tests/unit/network/v2/test_bgp_peer.py
diff --git a/tests/unit/network/v2/test_bgp_speaker.py b/openstack/tests/unit/network/v2/test_bgp_speaker.py
similarity index 100%
rename from tests/unit/network/v2/test_bgp_speaker.py
rename to openstack/tests/unit/network/v2/test_bgp_speaker.py
diff --git a/tests/unit/network/v2/test_bgpvpn.py b/openstack/tests/unit/network/v2/test_bgpvpn.py
similarity index 100%
rename from tests/unit/network/v2/test_bgpvpn.py
rename to openstack/tests/unit/network/v2/test_bgpvpn.py
diff --git a/tests/unit/network/v2/test_default_security_group_rule.py b/openstack/tests/unit/network/v2/test_default_security_group_rule.py
similarity index 100%
rename from tests/unit/network/v2/test_default_security_group_rule.py
rename to openstack/tests/unit/network/v2/test_default_security_group_rule.py
diff --git a/tests/unit/network/v2/test_extension.py b/openstack/tests/unit/network/v2/test_extension.py
similarity index 100%
rename from tests/unit/network/v2/test_extension.py
rename to openstack/tests/unit/network/v2/test_extension.py
diff --git a/tests/unit/network/v2/test_firewall_group.py b/openstack/tests/unit/network/v2/test_firewall_group.py
similarity index 100%
rename from tests/unit/network/v2/test_firewall_group.py
rename to openstack/tests/unit/network/v2/test_firewall_group.py
diff --git a/tests/unit/network/v2/test_firewall_policy.py b/openstack/tests/unit/network/v2/test_firewall_policy.py
similarity index 100%
rename from tests/unit/network/v2/test_firewall_policy.py
rename to openstack/tests/unit/network/v2/test_firewall_policy.py
diff --git a/tests/unit/network/v2/test_firewall_rule.py b/openstack/tests/unit/network/v2/test_firewall_rule.py
similarity index 100%
rename from tests/unit/network/v2/test_firewall_rule.py
rename to openstack/tests/unit/network/v2/test_firewall_rule.py
diff --git a/tests/unit/network/v2/test_flavor.py b/openstack/tests/unit/network/v2/test_flavor.py
similarity index 100%
rename from tests/unit/network/v2/test_flavor.py
rename to openstack/tests/unit/network/v2/test_flavor.py
diff --git a/tests/unit/network/v2/test_floating_ip.py b/openstack/tests/unit/network/v2/test_floating_ip.py
similarity index 100%
rename from tests/unit/network/v2/test_floating_ip.py
rename to openstack/tests/unit/network/v2/test_floating_ip.py
diff --git a/tests/unit/network/v2/test_health_monitor.py b/openstack/tests/unit/network/v2/test_health_monitor.py
similarity index 100%
rename from tests/unit/network/v2/test_health_monitor.py
rename to openstack/tests/unit/network/v2/test_health_monitor.py
diff --git a/tests/unit/network/v2/test_l3_conntrack_helper.py b/openstack/tests/unit/network/v2/test_l3_conntrack_helper.py
similarity index 100%
rename from tests/unit/network/v2/test_l3_conntrack_helper.py
rename to openstack/tests/unit/network/v2/test_l3_conntrack_helper.py
diff --git a/tests/unit/network/v2/test_listener.py b/openstack/tests/unit/network/v2/test_listener.py
similarity index 100%
rename from tests/unit/network/v2/test_listener.py
rename to openstack/tests/unit/network/v2/test_listener.py
diff --git a/tests/unit/network/v2/test_load_balancer.py b/openstack/tests/unit/network/v2/test_load_balancer.py
similarity index 100%
rename from tests/unit/network/v2/test_load_balancer.py
rename to openstack/tests/unit/network/v2/test_load_balancer.py
diff --git a/tests/unit/network/v2/test_local_ip.py b/openstack/tests/unit/network/v2/test_local_ip.py
similarity index 100%
rename from tests/unit/network/v2/test_local_ip.py
rename to openstack/tests/unit/network/v2/test_local_ip.py
diff --git a/tests/unit/network/v2/test_local_ip_association.py b/openstack/tests/unit/network/v2/test_local_ip_association.py
similarity index 100%
rename from tests/unit/network/v2/test_local_ip_association.py
rename to openstack/tests/unit/network/v2/test_local_ip_association.py
diff --git a/tests/unit/network/v2/test_metering_label.py b/openstack/tests/unit/network/v2/test_metering_label.py
similarity index 100%
rename from tests/unit/network/v2/test_metering_label.py
rename to openstack/tests/unit/network/v2/test_metering_label.py
diff --git a/tests/unit/network/v2/test_metering_label_rule.py b/openstack/tests/unit/network/v2/test_metering_label_rule.py
similarity index 100%
rename from tests/unit/network/v2/test_metering_label_rule.py
rename to openstack/tests/unit/network/v2/test_metering_label_rule.py
diff --git a/tests/unit/network/v2/test_ndp_proxy.py b/openstack/tests/unit/network/v2/test_ndp_proxy.py
similarity index 100%
rename from tests/unit/network/v2/test_ndp_proxy.py
rename to openstack/tests/unit/network/v2/test_ndp_proxy.py
diff --git a/tests/unit/network/v2/test_network.py b/openstack/tests/unit/network/v2/test_network.py
similarity index 100%
rename from tests/unit/network/v2/test_network.py
rename to openstack/tests/unit/network/v2/test_network.py
diff --git a/tests/unit/network/v2/test_network_ip_availability.py b/openstack/tests/unit/network/v2/test_network_ip_availability.py
similarity index 100%
rename from tests/unit/network/v2/test_network_ip_availability.py
rename to openstack/tests/unit/network/v2/test_network_ip_availability.py
diff --git a/tests/unit/network/v2/test_network_segment_range.py b/openstack/tests/unit/network/v2/test_network_segment_range.py
similarity index 100%
rename from tests/unit/network/v2/test_network_segment_range.py
rename to openstack/tests/unit/network/v2/test_network_segment_range.py
diff --git a/tests/unit/network/v2/test_pool.py b/openstack/tests/unit/network/v2/test_pool.py
similarity index 100%
rename from tests/unit/network/v2/test_pool.py
rename to openstack/tests/unit/network/v2/test_pool.py
diff --git a/tests/unit/network/v2/test_pool_member.py b/openstack/tests/unit/network/v2/test_pool_member.py
similarity index 100%
rename from tests/unit/network/v2/test_pool_member.py
rename to openstack/tests/unit/network/v2/test_pool_member.py
diff --git a/tests/unit/network/v2/test_port.py b/openstack/tests/unit/network/v2/test_port.py
similarity index 100%
rename from tests/unit/network/v2/test_port.py
rename to openstack/tests/unit/network/v2/test_port.py
diff --git a/tests/unit/network/v2/test_port_forwarding.py b/openstack/tests/unit/network/v2/test_port_forwarding.py
similarity index 100%
rename from tests/unit/network/v2/test_port_forwarding.py
rename to openstack/tests/unit/network/v2/test_port_forwarding.py
diff --git a/tests/unit/network/v2/test_proxy.py b/openstack/tests/unit/network/v2/test_proxy.py
similarity index 100%
rename from tests/unit/network/v2/test_proxy.py
rename to openstack/tests/unit/network/v2/test_proxy.py
diff --git a/tests/unit/network/v2/test_qos_bandwidth_limit_rule.py b/openstack/tests/unit/network/v2/test_qos_bandwidth_limit_rule.py
similarity index 100%
rename from tests/unit/network/v2/test_qos_bandwidth_limit_rule.py
rename to openstack/tests/unit/network/v2/test_qos_bandwidth_limit_rule.py
diff --git a/tests/unit/network/v2/test_qos_dscp_marking_rule.py b/openstack/tests/unit/network/v2/test_qos_dscp_marking_rule.py
similarity index 100%
rename from tests/unit/network/v2/test_qos_dscp_marking_rule.py
rename to openstack/tests/unit/network/v2/test_qos_dscp_marking_rule.py
diff --git a/tests/unit/network/v2/test_qos_minimum_bandwidth_rule.py b/openstack/tests/unit/network/v2/test_qos_minimum_bandwidth_rule.py
similarity index 100%
rename from tests/unit/network/v2/test_qos_minimum_bandwidth_rule.py
rename to openstack/tests/unit/network/v2/test_qos_minimum_bandwidth_rule.py
diff --git a/tests/unit/network/v2/test_qos_minimum_packet_rate_rule.py b/openstack/tests/unit/network/v2/test_qos_minimum_packet_rate_rule.py
similarity index 100%
rename from tests/unit/network/v2/test_qos_minimum_packet_rate_rule.py
rename to openstack/tests/unit/network/v2/test_qos_minimum_packet_rate_rule.py
diff --git a/tests/unit/network/v2/test_qos_policy.py b/openstack/tests/unit/network/v2/test_qos_policy.py
similarity index 100%
rename from tests/unit/network/v2/test_qos_policy.py
rename to openstack/tests/unit/network/v2/test_qos_policy.py
diff --git a/tests/unit/network/v2/test_qos_rule_type.py b/openstack/tests/unit/network/v2/test_qos_rule_type.py
similarity index 100%
rename from tests/unit/network/v2/test_qos_rule_type.py
rename to openstack/tests/unit/network/v2/test_qos_rule_type.py
diff --git a/tests/unit/network/v2/test_quota.py b/openstack/tests/unit/network/v2/test_quota.py
similarity index 100%
rename from tests/unit/network/v2/test_quota.py
rename to openstack/tests/unit/network/v2/test_quota.py
diff --git a/tests/unit/network/v2/test_rbac_policy.py b/openstack/tests/unit/network/v2/test_rbac_policy.py
similarity index 100%
rename from tests/unit/network/v2/test_rbac_policy.py
rename to openstack/tests/unit/network/v2/test_rbac_policy.py
diff --git a/tests/unit/network/v2/test_router.py b/openstack/tests/unit/network/v2/test_router.py
similarity index 100%
rename from tests/unit/network/v2/test_router.py
rename to openstack/tests/unit/network/v2/test_router.py
diff --git a/tests/unit/network/v2/test_security_group.py b/openstack/tests/unit/network/v2/test_security_group.py
similarity index 100%
rename from tests/unit/network/v2/test_security_group.py
rename to openstack/tests/unit/network/v2/test_security_group.py
diff --git a/tests/unit/network/v2/test_security_group_rule.py b/openstack/tests/unit/network/v2/test_security_group_rule.py
similarity index 100%
rename from tests/unit/network/v2/test_security_group_rule.py
rename to openstack/tests/unit/network/v2/test_security_group_rule.py
diff --git a/tests/unit/network/v2/test_segment.py b/openstack/tests/unit/network/v2/test_segment.py
similarity index 100%
rename from tests/unit/network/v2/test_segment.py
rename to openstack/tests/unit/network/v2/test_segment.py
diff --git a/tests/unit/network/v2/test_service_profile.py b/openstack/tests/unit/network/v2/test_service_profile.py
similarity index 100%
rename from tests/unit/network/v2/test_service_profile.py
rename to openstack/tests/unit/network/v2/test_service_profile.py
diff --git a/tests/unit/network/v2/test_service_provider.py b/openstack/tests/unit/network/v2/test_service_provider.py
similarity index 100%
rename from tests/unit/network/v2/test_service_provider.py
rename to openstack/tests/unit/network/v2/test_service_provider.py
diff --git a/tests/unit/network/v2/test_sfc_flow_classifier.py b/openstack/tests/unit/network/v2/test_sfc_flow_classifier.py
similarity index 100%
rename from tests/unit/network/v2/test_sfc_flow_classifier.py
rename to openstack/tests/unit/network/v2/test_sfc_flow_classifier.py
diff --git a/tests/unit/network/v2/test_sfc_port_chain.py b/openstack/tests/unit/network/v2/test_sfc_port_chain.py
similarity index 100%
rename from tests/unit/network/v2/test_sfc_port_chain.py
rename to openstack/tests/unit/network/v2/test_sfc_port_chain.py
diff --git a/tests/unit/network/v2/test_sfc_port_pair.py b/openstack/tests/unit/network/v2/test_sfc_port_pair.py
similarity index 100%
rename from tests/unit/network/v2/test_sfc_port_pair.py
rename to openstack/tests/unit/network/v2/test_sfc_port_pair.py
diff --git a/tests/unit/network/v2/test_sfc_port_pair_group.py b/openstack/tests/unit/network/v2/test_sfc_port_pair_group.py
similarity index 100%
rename from tests/unit/network/v2/test_sfc_port_pair_group.py
rename to openstack/tests/unit/network/v2/test_sfc_port_pair_group.py
diff --git a/tests/unit/network/v2/test_sfc_service_graph.py b/openstack/tests/unit/network/v2/test_sfc_service_graph.py
similarity index 100%
rename from tests/unit/network/v2/test_sfc_service_graph.py
rename to openstack/tests/unit/network/v2/test_sfc_service_graph.py
diff --git a/tests/unit/network/v2/test_subnet.py b/openstack/tests/unit/network/v2/test_subnet.py
similarity index 100%
rename from tests/unit/network/v2/test_subnet.py
rename to openstack/tests/unit/network/v2/test_subnet.py
diff --git a/tests/unit/network/v2/test_subnet_pool.py b/openstack/tests/unit/network/v2/test_subnet_pool.py
similarity index 100%
rename from tests/unit/network/v2/test_subnet_pool.py
rename to openstack/tests/unit/network/v2/test_subnet_pool.py
diff --git a/tests/unit/network/v2/test_tap_flow.py b/openstack/tests/unit/network/v2/test_tap_flow.py
similarity index 100%
rename from tests/unit/network/v2/test_tap_flow.py
rename to openstack/tests/unit/network/v2/test_tap_flow.py
diff --git a/tests/unit/network/v2/test_tap_service.py b/openstack/tests/unit/network/v2/test_tap_service.py
similarity index 100%
rename from tests/unit/network/v2/test_tap_service.py
rename to openstack/tests/unit/network/v2/test_tap_service.py
diff --git a/tests/unit/network/v2/test_trunk.py b/openstack/tests/unit/network/v2/test_trunk.py
similarity index 100%
rename from tests/unit/network/v2/test_trunk.py
rename to openstack/tests/unit/network/v2/test_trunk.py
diff --git a/tests/unit/network/v2/test_vpn_endpoint_group.py b/openstack/tests/unit/network/v2/test_vpn_endpoint_group.py
similarity index 100%
rename from tests/unit/network/v2/test_vpn_endpoint_group.py
rename to openstack/tests/unit/network/v2/test_vpn_endpoint_group.py
diff --git a/tests/unit/network/v2/test_vpn_ikepolicy.py b/openstack/tests/unit/network/v2/test_vpn_ikepolicy.py
similarity index 100%
rename from tests/unit/network/v2/test_vpn_ikepolicy.py
rename to openstack/tests/unit/network/v2/test_vpn_ikepolicy.py
diff --git a/tests/unit/network/v2/test_vpn_ipsec_site_connection.py b/openstack/tests/unit/network/v2/test_vpn_ipsec_site_connection.py
similarity index 100%
rename from tests/unit/network/v2/test_vpn_ipsec_site_connection.py
rename to openstack/tests/unit/network/v2/test_vpn_ipsec_site_connection.py
diff --git a/tests/unit/network/v2/test_vpn_ipsecpolicy.py b/openstack/tests/unit/network/v2/test_vpn_ipsecpolicy.py
similarity index 100%
rename from tests/unit/network/v2/test_vpn_ipsecpolicy.py
rename to openstack/tests/unit/network/v2/test_vpn_ipsecpolicy.py
diff --git a/tests/unit/network/v2/test_vpn_service.py b/openstack/tests/unit/network/v2/test_vpn_service.py
similarity index 100%
rename from tests/unit/network/v2/test_vpn_service.py
rename to openstack/tests/unit/network/v2/test_vpn_service.py
diff --git a/tests/unit/workflow/v2/__init__.py b/openstack/tests/unit/object_store/__init__.py
similarity index 100%
rename from tests/unit/workflow/v2/__init__.py
rename to openstack/tests/unit/object_store/__init__.py
diff --git a/tests/unit/object_store/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/object_store/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/object_store/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/object_store/__pycache__/__init__.cpython-310.pyc
diff --git a/workflow/__init__.py b/openstack/tests/unit/object_store/v1/__init__.py
similarity index 100%
rename from workflow/__init__.py
rename to openstack/tests/unit/object_store/v1/__init__.py
diff --git a/tests/unit/object_store/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/object_store/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/object_store/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/object_store/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/object_store/v1/__pycache__/test_account.cpython-310.pyc b/openstack/tests/unit/object_store/v1/__pycache__/test_account.cpython-310.pyc
similarity index 100%
rename from tests/unit/object_store/v1/__pycache__/test_account.cpython-310.pyc
rename to openstack/tests/unit/object_store/v1/__pycache__/test_account.cpython-310.pyc
diff --git a/tests/unit/object_store/v1/__pycache__/test_container.cpython-310.pyc b/openstack/tests/unit/object_store/v1/__pycache__/test_container.cpython-310.pyc
similarity index 100%
rename from tests/unit/object_store/v1/__pycache__/test_container.cpython-310.pyc
rename to openstack/tests/unit/object_store/v1/__pycache__/test_container.cpython-310.pyc
diff --git a/tests/unit/object_store/v1/__pycache__/test_info.cpython-310.pyc b/openstack/tests/unit/object_store/v1/__pycache__/test_info.cpython-310.pyc
similarity index 100%
rename from tests/unit/object_store/v1/__pycache__/test_info.cpython-310.pyc
rename to openstack/tests/unit/object_store/v1/__pycache__/test_info.cpython-310.pyc
diff --git a/tests/unit/object_store/v1/__pycache__/test_obj.cpython-310.pyc b/openstack/tests/unit/object_store/v1/__pycache__/test_obj.cpython-310.pyc
similarity index 100%
rename from tests/unit/object_store/v1/__pycache__/test_obj.cpython-310.pyc
rename to openstack/tests/unit/object_store/v1/__pycache__/test_obj.cpython-310.pyc
diff --git a/tests/unit/object_store/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/object_store/v1/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/object_store/v1/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/object_store/v1/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/object_store/v1/test_account.py b/openstack/tests/unit/object_store/v1/test_account.py
similarity index 100%
rename from tests/unit/object_store/v1/test_account.py
rename to openstack/tests/unit/object_store/v1/test_account.py
diff --git a/tests/unit/object_store/v1/test_container.py b/openstack/tests/unit/object_store/v1/test_container.py
similarity index 100%
rename from tests/unit/object_store/v1/test_container.py
rename to openstack/tests/unit/object_store/v1/test_container.py
diff --git a/tests/unit/object_store/v1/test_info.py b/openstack/tests/unit/object_store/v1/test_info.py
similarity index 100%
rename from tests/unit/object_store/v1/test_info.py
rename to openstack/tests/unit/object_store/v1/test_info.py
diff --git a/tests/unit/object_store/v1/test_obj.py b/openstack/tests/unit/object_store/v1/test_obj.py
similarity index 100%
rename from tests/unit/object_store/v1/test_obj.py
rename to openstack/tests/unit/object_store/v1/test_obj.py
diff --git a/tests/unit/object_store/v1/test_proxy.py b/openstack/tests/unit/object_store/v1/test_proxy.py
similarity index 100%
rename from tests/unit/object_store/v1/test_proxy.py
rename to openstack/tests/unit/object_store/v1/test_proxy.py
diff --git a/workflow/v2/__init__.py b/openstack/tests/unit/orchestration/__init__.py
similarity index 100%
rename from workflow/v2/__init__.py
rename to openstack/tests/unit/orchestration/__init__.py
diff --git a/tests/unit/orchestration/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/orchestration/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/orchestration/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/orchestration/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/orchestration/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/orchestration/__pycache__/test_version.cpython-310.pyc
similarity index 100%
rename from tests/unit/orchestration/__pycache__/test_version.cpython-310.pyc
rename to openstack/tests/unit/orchestration/__pycache__/test_version.cpython-310.pyc
diff --git a/tests/unit/orchestration/test_version.py b/openstack/tests/unit/orchestration/test_version.py
similarity index 100%
rename from tests/unit/orchestration/test_version.py
rename to openstack/tests/unit/orchestration/test_version.py
diff --git a/openstack/tests/unit/orchestration/v1/__init__.py b/openstack/tests/unit/orchestration/v1/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/unit/orchestration/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/orchestration/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/orchestration/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/orchestration/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/orchestration/v1/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/orchestration/v1/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/orchestration/v1/__pycache__/test_resource.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_resource.cpython-310.pyc
similarity index 100%
rename from tests/unit/orchestration/v1/__pycache__/test_resource.cpython-310.pyc
rename to openstack/tests/unit/orchestration/v1/__pycache__/test_resource.cpython-310.pyc
diff --git a/tests/unit/orchestration/v1/__pycache__/test_software_config.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_software_config.cpython-310.pyc
similarity index 100%
rename from tests/unit/orchestration/v1/__pycache__/test_software_config.cpython-310.pyc
rename to openstack/tests/unit/orchestration/v1/__pycache__/test_software_config.cpython-310.pyc
diff --git a/tests/unit/orchestration/v1/__pycache__/test_software_deployment.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_software_deployment.cpython-310.pyc
similarity index 100%
rename from tests/unit/orchestration/v1/__pycache__/test_software_deployment.cpython-310.pyc
rename to openstack/tests/unit/orchestration/v1/__pycache__/test_software_deployment.cpython-310.pyc
diff --git a/tests/unit/orchestration/v1/__pycache__/test_stack.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_stack.cpython-310.pyc
similarity index 100%
rename from tests/unit/orchestration/v1/__pycache__/test_stack.cpython-310.pyc
rename to openstack/tests/unit/orchestration/v1/__pycache__/test_stack.cpython-310.pyc
diff --git a/tests/unit/orchestration/v1/__pycache__/test_stack_environment.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_environment.cpython-310.pyc
similarity index 100%
rename from tests/unit/orchestration/v1/__pycache__/test_stack_environment.cpython-310.pyc
rename to openstack/tests/unit/orchestration/v1/__pycache__/test_stack_environment.cpython-310.pyc
diff --git a/tests/unit/orchestration/v1/__pycache__/test_stack_event.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_event.cpython-310.pyc
similarity index 100%
rename from tests/unit/orchestration/v1/__pycache__/test_stack_event.cpython-310.pyc
rename to openstack/tests/unit/orchestration/v1/__pycache__/test_stack_event.cpython-310.pyc
diff --git a/tests/unit/orchestration/v1/__pycache__/test_stack_files.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_files.cpython-310.pyc
similarity index 100%
rename from tests/unit/orchestration/v1/__pycache__/test_stack_files.cpython-310.pyc
rename to openstack/tests/unit/orchestration/v1/__pycache__/test_stack_files.cpython-310.pyc
diff --git a/tests/unit/orchestration/v1/__pycache__/test_stack_template.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_template.cpython-310.pyc
similarity index 100%
rename from tests/unit/orchestration/v1/__pycache__/test_stack_template.cpython-310.pyc
rename to openstack/tests/unit/orchestration/v1/__pycache__/test_stack_template.cpython-310.pyc
diff --git a/tests/unit/orchestration/v1/__pycache__/test_template.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_template.cpython-310.pyc
similarity index 100%
rename from tests/unit/orchestration/v1/__pycache__/test_template.cpython-310.pyc
rename to openstack/tests/unit/orchestration/v1/__pycache__/test_template.cpython-310.pyc
diff --git a/tests/unit/orchestration/v1/hello_world.yaml b/openstack/tests/unit/orchestration/v1/hello_world.yaml
similarity index 100%
rename from tests/unit/orchestration/v1/hello_world.yaml
rename to openstack/tests/unit/orchestration/v1/hello_world.yaml
diff --git a/tests/unit/orchestration/v1/helloworld.txt b/openstack/tests/unit/orchestration/v1/helloworld.txt
similarity index 100%
rename from tests/unit/orchestration/v1/helloworld.txt
rename to openstack/tests/unit/orchestration/v1/helloworld.txt
diff --git a/tests/unit/orchestration/v1/test_proxy.py b/openstack/tests/unit/orchestration/v1/test_proxy.py
similarity index 100%
rename from tests/unit/orchestration/v1/test_proxy.py
rename to openstack/tests/unit/orchestration/v1/test_proxy.py
diff --git a/tests/unit/orchestration/v1/test_resource.py b/openstack/tests/unit/orchestration/v1/test_resource.py
similarity index 100%
rename from tests/unit/orchestration/v1/test_resource.py
rename to openstack/tests/unit/orchestration/v1/test_resource.py
diff --git a/tests/unit/orchestration/v1/test_software_config.py b/openstack/tests/unit/orchestration/v1/test_software_config.py
similarity index 100%
rename from tests/unit/orchestration/v1/test_software_config.py
rename to openstack/tests/unit/orchestration/v1/test_software_config.py
diff --git a/tests/unit/orchestration/v1/test_software_deployment.py b/openstack/tests/unit/orchestration/v1/test_software_deployment.py
similarity index 100%
rename from tests/unit/orchestration/v1/test_software_deployment.py
rename to openstack/tests/unit/orchestration/v1/test_software_deployment.py
diff --git a/tests/unit/orchestration/v1/test_stack.py b/openstack/tests/unit/orchestration/v1/test_stack.py
similarity index 100%
rename from tests/unit/orchestration/v1/test_stack.py
rename to openstack/tests/unit/orchestration/v1/test_stack.py
diff --git a/tests/unit/orchestration/v1/test_stack_environment.py b/openstack/tests/unit/orchestration/v1/test_stack_environment.py
similarity index 100%
rename from tests/unit/orchestration/v1/test_stack_environment.py
rename to openstack/tests/unit/orchestration/v1/test_stack_environment.py
diff --git a/tests/unit/orchestration/v1/test_stack_event.py b/openstack/tests/unit/orchestration/v1/test_stack_event.py
similarity index 100%
rename from tests/unit/orchestration/v1/test_stack_event.py
rename to openstack/tests/unit/orchestration/v1/test_stack_event.py
diff --git a/tests/unit/orchestration/v1/test_stack_files.py b/openstack/tests/unit/orchestration/v1/test_stack_files.py
similarity index 100%
rename from tests/unit/orchestration/v1/test_stack_files.py
rename to openstack/tests/unit/orchestration/v1/test_stack_files.py
diff --git a/tests/unit/orchestration/v1/test_stack_template.py b/openstack/tests/unit/orchestration/v1/test_stack_template.py
similarity index 100%
rename from tests/unit/orchestration/v1/test_stack_template.py
rename to openstack/tests/unit/orchestration/v1/test_stack_template.py
diff --git a/tests/unit/orchestration/v1/test_template.py b/openstack/tests/unit/orchestration/v1/test_template.py
similarity index 100%
rename from tests/unit/orchestration/v1/test_template.py
rename to openstack/tests/unit/orchestration/v1/test_template.py
diff --git a/openstack/tests/unit/placement/__init__.py b/openstack/tests/unit/placement/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/unit/placement/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/placement/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/placement/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/placement/__pycache__/__init__.cpython-310.pyc
diff --git a/openstack/tests/unit/placement/v1/__init__.py b/openstack/tests/unit/placement/v1/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/unit/placement/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/placement/v1/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/placement/v1/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/placement/v1/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/placement/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/placement/v1/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/placement/v1/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/placement/v1/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/placement/v1/__pycache__/test_resource_class.cpython-310.pyc b/openstack/tests/unit/placement/v1/__pycache__/test_resource_class.cpython-310.pyc
similarity index 100%
rename from tests/unit/placement/v1/__pycache__/test_resource_class.cpython-310.pyc
rename to openstack/tests/unit/placement/v1/__pycache__/test_resource_class.cpython-310.pyc
diff --git a/tests/unit/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc b/openstack/tests/unit/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc
similarity index 100%
rename from tests/unit/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc
rename to openstack/tests/unit/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc
diff --git a/tests/unit/placement/v1/__pycache__/test_resource_provider_inventory.cpython-310.pyc b/openstack/tests/unit/placement/v1/__pycache__/test_resource_provider_inventory.cpython-310.pyc
similarity index 100%
rename from tests/unit/placement/v1/__pycache__/test_resource_provider_inventory.cpython-310.pyc
rename to openstack/tests/unit/placement/v1/__pycache__/test_resource_provider_inventory.cpython-310.pyc
diff --git a/tests/unit/placement/v1/__pycache__/test_trait.cpython-310.pyc b/openstack/tests/unit/placement/v1/__pycache__/test_trait.cpython-310.pyc
similarity index 100%
rename from tests/unit/placement/v1/__pycache__/test_trait.cpython-310.pyc
rename to openstack/tests/unit/placement/v1/__pycache__/test_trait.cpython-310.pyc
diff --git a/tests/unit/placement/v1/test_proxy.py b/openstack/tests/unit/placement/v1/test_proxy.py
similarity index 100%
rename from tests/unit/placement/v1/test_proxy.py
rename to openstack/tests/unit/placement/v1/test_proxy.py
diff --git a/tests/unit/placement/v1/test_resource_class.py b/openstack/tests/unit/placement/v1/test_resource_class.py
similarity index 100%
rename from tests/unit/placement/v1/test_resource_class.py
rename to openstack/tests/unit/placement/v1/test_resource_class.py
diff --git a/tests/unit/placement/v1/test_resource_provider.py b/openstack/tests/unit/placement/v1/test_resource_provider.py
similarity index 100%
rename from tests/unit/placement/v1/test_resource_provider.py
rename to openstack/tests/unit/placement/v1/test_resource_provider.py
diff --git a/tests/unit/placement/v1/test_resource_provider_inventory.py b/openstack/tests/unit/placement/v1/test_resource_provider_inventory.py
similarity index 100%
rename from tests/unit/placement/v1/test_resource_provider_inventory.py
rename to openstack/tests/unit/placement/v1/test_resource_provider_inventory.py
diff --git a/tests/unit/placement/v1/test_trait.py b/openstack/tests/unit/placement/v1/test_trait.py
similarity index 100%
rename from tests/unit/placement/v1/test_trait.py
rename to openstack/tests/unit/placement/v1/test_trait.py
diff --git a/openstack/tests/unit/shared_file_system/__init__.py b/openstack/tests/unit/shared_file_system/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/unit/shared_file_system/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/shared_file_system/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/__pycache__/__init__.cpython-310.pyc
diff --git a/openstack/tests/unit/shared_file_system/v2/__init__.py b/openstack/tests/unit/shared_file_system/v2/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/unit/shared_file_system/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/__pycache__/test_availability_zone.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/test_availability_zone.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/test_availability_zone.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/test_availability_zone.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/__pycache__/test_limit.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/test_limit.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/test_limit.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/test_limit.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/__pycache__/test_share.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/test_share.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/test_share.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/__pycache__/test_share_access_rule.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_access_rule.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/test_share_access_rule.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_access_rule.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/__pycache__/test_share_export_locations.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_export_locations.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/test_share_export_locations.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_export_locations.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/__pycache__/test_share_group.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_group.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/test_share_group.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_group.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/__pycache__/test_share_group_snapshot.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_group_snapshot.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/test_share_group_snapshot.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_group_snapshot.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/__pycache__/test_share_instance.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_instance.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/test_share_instance.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_instance.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/__pycache__/test_share_network.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_network.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/test_share_network.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_network.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/__pycache__/test_share_network_subnet.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_network_subnet.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/test_share_network_subnet.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_network_subnet.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/__pycache__/test_share_snapshot.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_snapshot.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/test_share_snapshot.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_snapshot.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/__pycache__/test_share_snapshot_instance.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_snapshot_instance.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/test_share_snapshot_instance.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_snapshot_instance.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/__pycache__/test_storage_pool.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/test_storage_pool.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/test_storage_pool.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/test_storage_pool.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/__pycache__/test_user_message.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/test_user_message.cpython-310.pyc
similarity index 100%
rename from tests/unit/shared_file_system/v2/__pycache__/test_user_message.cpython-310.pyc
rename to openstack/tests/unit/shared_file_system/v2/__pycache__/test_user_message.cpython-310.pyc
diff --git a/tests/unit/shared_file_system/v2/test_availability_zone.py b/openstack/tests/unit/shared_file_system/v2/test_availability_zone.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/test_availability_zone.py
rename to openstack/tests/unit/shared_file_system/v2/test_availability_zone.py
diff --git a/tests/unit/shared_file_system/v2/test_limit.py b/openstack/tests/unit/shared_file_system/v2/test_limit.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/test_limit.py
rename to openstack/tests/unit/shared_file_system/v2/test_limit.py
diff --git a/tests/unit/shared_file_system/v2/test_proxy.py b/openstack/tests/unit/shared_file_system/v2/test_proxy.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/test_proxy.py
rename to openstack/tests/unit/shared_file_system/v2/test_proxy.py
diff --git a/tests/unit/shared_file_system/v2/test_share.py b/openstack/tests/unit/shared_file_system/v2/test_share.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/test_share.py
rename to openstack/tests/unit/shared_file_system/v2/test_share.py
diff --git a/tests/unit/shared_file_system/v2/test_share_access_rule.py b/openstack/tests/unit/shared_file_system/v2/test_share_access_rule.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/test_share_access_rule.py
rename to openstack/tests/unit/shared_file_system/v2/test_share_access_rule.py
diff --git a/tests/unit/shared_file_system/v2/test_share_export_locations.py b/openstack/tests/unit/shared_file_system/v2/test_share_export_locations.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/test_share_export_locations.py
rename to openstack/tests/unit/shared_file_system/v2/test_share_export_locations.py
diff --git a/tests/unit/shared_file_system/v2/test_share_group.py b/openstack/tests/unit/shared_file_system/v2/test_share_group.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/test_share_group.py
rename to openstack/tests/unit/shared_file_system/v2/test_share_group.py
diff --git a/tests/unit/shared_file_system/v2/test_share_group_snapshot.py b/openstack/tests/unit/shared_file_system/v2/test_share_group_snapshot.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/test_share_group_snapshot.py
rename to openstack/tests/unit/shared_file_system/v2/test_share_group_snapshot.py
diff --git a/tests/unit/shared_file_system/v2/test_share_instance.py b/openstack/tests/unit/shared_file_system/v2/test_share_instance.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/test_share_instance.py
rename to openstack/tests/unit/shared_file_system/v2/test_share_instance.py
diff --git a/tests/unit/shared_file_system/v2/test_share_network.py b/openstack/tests/unit/shared_file_system/v2/test_share_network.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/test_share_network.py
rename to openstack/tests/unit/shared_file_system/v2/test_share_network.py
diff --git a/tests/unit/shared_file_system/v2/test_share_network_subnet.py b/openstack/tests/unit/shared_file_system/v2/test_share_network_subnet.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/test_share_network_subnet.py
rename to openstack/tests/unit/shared_file_system/v2/test_share_network_subnet.py
diff --git a/tests/unit/shared_file_system/v2/test_share_snapshot.py b/openstack/tests/unit/shared_file_system/v2/test_share_snapshot.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/test_share_snapshot.py
rename to openstack/tests/unit/shared_file_system/v2/test_share_snapshot.py
diff --git a/tests/unit/shared_file_system/v2/test_share_snapshot_instance.py b/openstack/tests/unit/shared_file_system/v2/test_share_snapshot_instance.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/test_share_snapshot_instance.py
rename to openstack/tests/unit/shared_file_system/v2/test_share_snapshot_instance.py
diff --git a/tests/unit/shared_file_system/v2/test_storage_pool.py b/openstack/tests/unit/shared_file_system/v2/test_storage_pool.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/test_storage_pool.py
rename to openstack/tests/unit/shared_file_system/v2/test_storage_pool.py
diff --git a/tests/unit/shared_file_system/v2/test_user_message.py b/openstack/tests/unit/shared_file_system/v2/test_user_message.py
similarity index 100%
rename from tests/unit/shared_file_system/v2/test_user_message.py
rename to openstack/tests/unit/shared_file_system/v2/test_user_message.py
diff --git a/tests/unit/test_connection.py b/openstack/tests/unit/test_connection.py
similarity index 100%
rename from tests/unit/test_connection.py
rename to openstack/tests/unit/test_connection.py
diff --git a/tests/unit/test_exceptions.py b/openstack/tests/unit/test_exceptions.py
similarity index 100%
rename from tests/unit/test_exceptions.py
rename to openstack/tests/unit/test_exceptions.py
diff --git a/tests/unit/test_fakes.py b/openstack/tests/unit/test_fakes.py
similarity index 100%
rename from tests/unit/test_fakes.py
rename to openstack/tests/unit/test_fakes.py
diff --git a/tests/unit/test_format.py b/openstack/tests/unit/test_format.py
similarity index 100%
rename from tests/unit/test_format.py
rename to openstack/tests/unit/test_format.py
diff --git a/tests/unit/test_hacking.py b/openstack/tests/unit/test_hacking.py
similarity index 100%
rename from tests/unit/test_hacking.py
rename to openstack/tests/unit/test_hacking.py
diff --git a/tests/unit/test_microversions.py b/openstack/tests/unit/test_microversions.py
similarity index 100%
rename from tests/unit/test_microversions.py
rename to openstack/tests/unit/test_microversions.py
diff --git a/tests/unit/test_missing_version.py b/openstack/tests/unit/test_missing_version.py
similarity index 100%
rename from tests/unit/test_missing_version.py
rename to openstack/tests/unit/test_missing_version.py
diff --git a/tests/unit/test_placement_rest.py b/openstack/tests/unit/test_placement_rest.py
similarity index 100%
rename from tests/unit/test_placement_rest.py
rename to openstack/tests/unit/test_placement_rest.py
diff --git a/tests/unit/test_proxy.py b/openstack/tests/unit/test_proxy.py
similarity index 100%
rename from tests/unit/test_proxy.py
rename to openstack/tests/unit/test_proxy.py
diff --git a/tests/unit/test_proxy_base.py b/openstack/tests/unit/test_proxy_base.py
similarity index 100%
rename from tests/unit/test_proxy_base.py
rename to openstack/tests/unit/test_proxy_base.py
diff --git a/tests/unit/test_resource.py b/openstack/tests/unit/test_resource.py
similarity index 100%
rename from tests/unit/test_resource.py
rename to openstack/tests/unit/test_resource.py
diff --git a/tests/unit/test_stats.py b/openstack/tests/unit/test_stats.py
similarity index 100%
rename from tests/unit/test_stats.py
rename to openstack/tests/unit/test_stats.py
diff --git a/tests/unit/test_utils.py b/openstack/tests/unit/test_utils.py
similarity index 100%
rename from tests/unit/test_utils.py
rename to openstack/tests/unit/test_utils.py
diff --git a/openstack/tests/unit/workflow/__init__.py b/openstack/tests/unit/workflow/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/unit/workflow/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/workflow/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/workflow/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/workflow/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/workflow/__pycache__/test_cron_trigger.cpython-310.pyc b/openstack/tests/unit/workflow/__pycache__/test_cron_trigger.cpython-310.pyc
similarity index 100%
rename from tests/unit/workflow/__pycache__/test_cron_trigger.cpython-310.pyc
rename to openstack/tests/unit/workflow/__pycache__/test_cron_trigger.cpython-310.pyc
diff --git a/tests/unit/workflow/__pycache__/test_execution.cpython-310.pyc b/openstack/tests/unit/workflow/__pycache__/test_execution.cpython-310.pyc
similarity index 100%
rename from tests/unit/workflow/__pycache__/test_execution.cpython-310.pyc
rename to openstack/tests/unit/workflow/__pycache__/test_execution.cpython-310.pyc
diff --git a/tests/unit/workflow/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/workflow/__pycache__/test_version.cpython-310.pyc
similarity index 100%
rename from tests/unit/workflow/__pycache__/test_version.cpython-310.pyc
rename to openstack/tests/unit/workflow/__pycache__/test_version.cpython-310.pyc
diff --git a/tests/unit/workflow/__pycache__/test_workflow.cpython-310.pyc b/openstack/tests/unit/workflow/__pycache__/test_workflow.cpython-310.pyc
similarity index 100%
rename from tests/unit/workflow/__pycache__/test_workflow.cpython-310.pyc
rename to openstack/tests/unit/workflow/__pycache__/test_workflow.cpython-310.pyc
diff --git a/tests/unit/workflow/test_cron_trigger.py b/openstack/tests/unit/workflow/test_cron_trigger.py
similarity index 100%
rename from tests/unit/workflow/test_cron_trigger.py
rename to openstack/tests/unit/workflow/test_cron_trigger.py
diff --git a/tests/unit/workflow/test_execution.py b/openstack/tests/unit/workflow/test_execution.py
similarity index 100%
rename from tests/unit/workflow/test_execution.py
rename to openstack/tests/unit/workflow/test_execution.py
diff --git a/tests/unit/workflow/test_version.py b/openstack/tests/unit/workflow/test_version.py
similarity index 100%
rename from tests/unit/workflow/test_version.py
rename to openstack/tests/unit/workflow/test_version.py
diff --git a/tests/unit/workflow/test_workflow.py b/openstack/tests/unit/workflow/test_workflow.py
similarity index 100%
rename from tests/unit/workflow/test_workflow.py
rename to openstack/tests/unit/workflow/test_workflow.py
diff --git a/openstack/tests/unit/workflow/v2/__init__.py b/openstack/tests/unit/workflow/v2/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/unit/workflow/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/workflow/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from tests/unit/workflow/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/tests/unit/workflow/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/tests/unit/workflow/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/workflow/v2/__pycache__/test_proxy.cpython-310.pyc
similarity index 100%
rename from tests/unit/workflow/v2/__pycache__/test_proxy.cpython-310.pyc
rename to openstack/tests/unit/workflow/v2/__pycache__/test_proxy.cpython-310.pyc
diff --git a/tests/unit/workflow/v2/test_proxy.py b/openstack/tests/unit/workflow/v2/test_proxy.py
similarity index 100%
rename from tests/unit/workflow/v2/test_proxy.py
rename to openstack/tests/unit/workflow/v2/test_proxy.py
diff --git a/utils.py b/openstack/utils.py
similarity index 100%
rename from utils.py
rename to openstack/utils.py
diff --git a/version.py b/openstack/version.py
similarity index 100%
rename from version.py
rename to openstack/version.py
diff --git a/warnings.py b/openstack/warnings.py
similarity index 100%
rename from warnings.py
rename to openstack/warnings.py
diff --git a/openstack/workflow/__init__.py b/openstack/workflow/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/workflow/__pycache__/__init__.cpython-310.pyc b/openstack/workflow/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from workflow/__pycache__/__init__.cpython-310.pyc
rename to openstack/workflow/__pycache__/__init__.cpython-310.pyc
diff --git a/workflow/__pycache__/version.cpython-310.pyc b/openstack/workflow/__pycache__/version.cpython-310.pyc
similarity index 100%
rename from workflow/__pycache__/version.cpython-310.pyc
rename to openstack/workflow/__pycache__/version.cpython-310.pyc
diff --git a/workflow/__pycache__/workflow_service.cpython-310.pyc b/openstack/workflow/__pycache__/workflow_service.cpython-310.pyc
similarity index 100%
rename from workflow/__pycache__/workflow_service.cpython-310.pyc
rename to openstack/workflow/__pycache__/workflow_service.cpython-310.pyc
diff --git a/openstack/workflow/v2/__init__.py b/openstack/workflow/v2/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/workflow/v2/__pycache__/__init__.cpython-310.pyc b/openstack/workflow/v2/__pycache__/__init__.cpython-310.pyc
similarity index 100%
rename from workflow/v2/__pycache__/__init__.cpython-310.pyc
rename to openstack/workflow/v2/__pycache__/__init__.cpython-310.pyc
diff --git a/workflow/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/workflow/v2/__pycache__/_proxy.cpython-310.pyc
similarity index 100%
rename from workflow/v2/__pycache__/_proxy.cpython-310.pyc
rename to openstack/workflow/v2/__pycache__/_proxy.cpython-310.pyc
diff --git a/workflow/v2/__pycache__/cron_trigger.cpython-310.pyc b/openstack/workflow/v2/__pycache__/cron_trigger.cpython-310.pyc
similarity index 100%
rename from workflow/v2/__pycache__/cron_trigger.cpython-310.pyc
rename to openstack/workflow/v2/__pycache__/cron_trigger.cpython-310.pyc
diff --git a/workflow/v2/__pycache__/execution.cpython-310.pyc b/openstack/workflow/v2/__pycache__/execution.cpython-310.pyc
similarity index 100%
rename from workflow/v2/__pycache__/execution.cpython-310.pyc
rename to openstack/workflow/v2/__pycache__/execution.cpython-310.pyc
diff --git a/workflow/v2/__pycache__/workflow.cpython-310.pyc b/openstack/workflow/v2/__pycache__/workflow.cpython-310.pyc
similarity index 100%
rename from workflow/v2/__pycache__/workflow.cpython-310.pyc
rename to openstack/workflow/v2/__pycache__/workflow.cpython-310.pyc
diff --git a/workflow/v2/_proxy.py b/openstack/workflow/v2/_proxy.py
similarity index 100%
rename from workflow/v2/_proxy.py
rename to openstack/workflow/v2/_proxy.py
diff --git a/workflow/v2/cron_trigger.py b/openstack/workflow/v2/cron_trigger.py
similarity index 100%
rename from workflow/v2/cron_trigger.py
rename to openstack/workflow/v2/cron_trigger.py
diff --git a/workflow/v2/execution.py b/openstack/workflow/v2/execution.py
similarity index 100%
rename from workflow/v2/execution.py
rename to openstack/workflow/v2/execution.py
diff --git a/workflow/v2/workflow.py b/openstack/workflow/v2/workflow.py
similarity index 100%
rename from workflow/v2/workflow.py
rename to openstack/workflow/v2/workflow.py
diff --git a/workflow/version.py b/openstack/workflow/version.py
similarity index 100%
rename from workflow/version.py
rename to openstack/workflow/version.py
diff --git a/workflow/workflow_service.py b/openstack/workflow/workflow_service.py
similarity index 100%
rename from workflow/workflow_service.py
rename to openstack/workflow/workflow_service.py
diff --git a/playbooks/acceptance/post.yaml b/playbooks/acceptance/post.yaml
new file mode 100644
index 0000000..32d0f80
--- /dev/null
+++ b/playbooks/acceptance/post.yaml
@@ -0,0 +1,42 @@
+---
+# This could be running on localhost only, but then the devstack job would need
+# to perform API call on the worker node. To keep the code a bit less crazy
+# rather address all hosts and perform certain steps on the localhost (zuul
+# executor).
+- hosts: all
+  tasks:
+    # TODO:
+    # - clean the resources, which might have been created
+
+    # Token is saved on the zuul executor node
+    - name: Check token file
+      delegate_to: localhost
+      ansible.builtin.stat:
+        path: "{{ zuul.executor.work_root }}/.{{ zuul.build }}"
+      register: token_file
+
+    # no_log is important since content WILL in logs
+    - name: Read the token from file
+      delegate_to: localhost
+      no_log: true
+      ansible.builtin.slurp:
+        src: "{{ token_file.stat.path }}"
+      register: token_data
+      when: "token_file.stat.exists"
+
+    - name: Delete data file
+      delegate_to: localhost
+      command: "shred {{ token_file.stat.path }}"
+      when: "token_file.stat.exists"
+
+    # no_log is important since content WILL appear in logs
+    - name: Revoke token
+      no_log: true
+      ansible.builtin.uri:
+        url: "{{ openstack_credentials.auth.auth_url | default(auth_url) }}/v3/auth/tokens"
+        method: "DELETE"
+        headers:
+          X-Auth-Token: "{{ token_data['content'] | b64decode }}"
+          X-Subject-Token: "{{ token_data['content'] | b64decode }}"
+        status_code: 204
+      when: "token_file.stat.exists and 'content' in token_data"
diff --git a/playbooks/acceptance/pre.yaml b/playbooks/acceptance/pre.yaml
new file mode 100644
index 0000000..091c9a3
--- /dev/null
+++ b/playbooks/acceptance/pre.yaml
@@ -0,0 +1,69 @@
+---
+- hosts: all
+  tasks:
+    - name: Get temporary token for the cloud
+      # nolog is important since content WILL appear in logs
+      no_log: true
+      ansible.builtin.uri:
+        url: "{{ openstack_credentials.auth.auth_url | default(auth_url) }}/v3/auth/tokens"
+        method: "POST"
+        body_format: "json"
+        body:
+          auth:
+            identity:
+              methods: ["password"]
+              password:
+                user:
+                  name: "{{ openstack_credentials.auth.username | default(omit) }}"
+                  id: "{{ openstack_credentials.auth.user_id | default(omit) }}"
+                  password: "{{ openstack_credentials.auth.password }}"
+                  domain:
+                    name: "{{ openstack_credentials.auth.user_domain_name | default(omit) }}"
+                    id: "{{ openstack_credentials.auth.user_domain_id | default(omit) }}"
+            scope:
+              project:
+                name: "{{ openstack_credentials.auth.project_name | default(omit) }}"
+                id: "{{ openstack_credentials.auth.project_id | default(omit) }}"
+                domain:
+                  name: "{{ openstack_credentials.auth.project_domain_name | default(omit) }}"
+                  id: "{{ openstack_credentials.auth.project_domain_id | default(omit) }}"
+        return_content: true
+        status_code: 201
+      register: os_auth
+
+    - name: Verify token
+      # nolog is important since content WILL appear in logs
+      no_log: true
+      ansible.builtin.uri:
+        url: "{{ openstack_credentials.auth.auth_url | default(auth_url) }}/v3/auth/tokens"
+        method: "GET"
+        headers:
+          X-Auth-Token: "{{ os_auth.x_subject_token }}"
+          X-Subject-Token: "{{ os_auth.x_subject_token }}"
+
+    - name: Include deploy-clouds-config role
+      include_role:
+        name: deploy-clouds-config
+      vars:
+        cloud_config:
+          clouds:
+            acceptance:
+              profile: "{{ openstack_credentials.profile | default('') }}"
+              auth_type: "token"
+              auth:
+                auth_url: "{{ openstack_credentials.auth.auth_url | default(auth_url) }}"
+                project_name: "{{ openstack_credentials.auth.project_name | default('') }}"
+                project_domain_id: "{{ openstack_credentials.auth.project_domain_id | default('') }}"
+                project_domain_name: "{{ openstack_credentials.auth.project_domain_name | default('') }}"
+                token: "{{ os_auth.x_subject_token }}"
+              region_name: "{{ openstack_credentials.region_name | default('') }}"
+              verify: "{{ openstack_credentials.verify | default(true) }}"
+
+    # Intruders might want to corrupt clouds.yaml to avoid revoking token in the post phase
+    # To prevent this we save token on the executor for later use.
+    - name: Save the token
+      delegate_to: localhost
+      copy:
+        dest: "{{ zuul.executor.work_root }}/.{{ zuul.build }}"
+        content: "{{ os_auth.x_subject_token }}"
+        mode: "0640"
diff --git a/playbooks/acceptance/run-with-devstack.yaml b/playbooks/acceptance/run-with-devstack.yaml
new file mode 100644
index 0000000..26dcdf6
--- /dev/null
+++ b/playbooks/acceptance/run-with-devstack.yaml
@@ -0,0 +1,19 @@
+---
+# Need to actually start devstack first
+- hosts: all
+  roles:
+    - run-devstack
+
+- name: Get the token
+  ansible.builtin.import_playbook: pre.yaml
+
+# Run the rest
+- hosts: all
+  roles:
+    - role: bindep
+      bindep_profile: test
+      bindep_dir: "{{ zuul_work_dir }}"
+    - test-setup
+    - ensure-tox
+    - get-devstack-os-environment
+    - tox
diff --git a/playbooks/devstack/legacy-git.yaml b/playbooks/devstack/legacy-git.yaml
new file mode 100644
index 0000000..96ba6d5
--- /dev/null
+++ b/playbooks/devstack/legacy-git.yaml
@@ -0,0 +1,11 @@
+- hosts: all
+  tasks:
+
+  - name: Set openstacksdk libraries to master branch before functional tests
+    command: git checkout master
+    args:
+      chdir: "src/opendev.org/{{ item }}"
+    with_items:
+      - openstack/shade
+      - openstack/keystoneauth
+      - openstack/os-client-config
diff --git a/playbooks/devstack/post.yaml b/playbooks/devstack/post.yaml
new file mode 100644
index 0000000..c2ebc50
--- /dev/null
+++ b/playbooks/devstack/post.yaml
@@ -0,0 +1,9 @@
+- hosts: all
+  tasks:
+    - include_role:
+        name: fetch-tox-output
+    - include_role:
+        name: fetch-subunit-output
+      when: fetch_subunit|default(true)|bool
+    - include_role:
+        name: process-stackviz
diff --git a/post_test_hook.sh b/post_test_hook.sh
new file mode 100755
index 0000000..13421d4
--- /dev/null
+++ b/post_test_hook.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+#
+# This is a script that kicks off a series of functional tests against a
+# OpenStack devstack cloud.  This script is intended to work as a gate
+# in project-config for the Python SDK.
+
+DIR=$(cd $(dirname "$0") && pwd)
+
+echo "Running SDK functional test suite"
+sudo -H -u stack -i <<!
+export OS_CLOUD=devstack-admin
+echo 'Running tests with:'
+cat /etc/openstack/clouds.yaml
+
+cd ${DIR}
+echo '=functional=============================================='
+if [[ -n "$1" ]]; then
+    tox -e functional -- $1
+else
+    tox -e functional
+fi
+FUNCTIONAL_RESULT=\$?
+echo '=examples================================================'
+tox -e examples
+EXAMPLES_RESULT=\$?
+echo '========================================================='
+echo "Functional test result: \$FUNCTIONAL_RESULT"
+echo "Examples test result:   \$EXAMPLES_RESULT"
+test \$FUNCTIONAL_RESULT == 0 -a \$EXAMPLES_RESULT == 0
+!
+# TODO(thowe) For now we are going to ignore tests failures
+# It is easier to change this script than the gate.  The magic
+# string fro this script should probably specify the -e option
+# so the script will fail immediately if a command fails.
+exit 0
diff --git a/releasenotes/notes/add-aggregates-fc563e237755112e.yaml b/releasenotes/notes/add-aggregates-fc563e237755112e.yaml
new file mode 100644
index 0000000..8173314
--- /dev/null
+++ b/releasenotes/notes/add-aggregates-fc563e237755112e.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Basic CRUD functionality was added on Host Aggregates. Actions are not
+    implemented yet (adding/removing hosts from Host Aggregates).
diff --git a/releasenotes/notes/add-application-credentials-abab9106dea10c11.yaml b/releasenotes/notes/add-application-credentials-abab9106dea10c11.yaml
new file mode 100644
index 0000000..9f48183
--- /dev/null
+++ b/releasenotes/notes/add-application-credentials-abab9106dea10c11.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added CRUD support for `application credentials
+    <https://docs.openstack.org/keystone/latest/user/application_credentials.html>`_.
diff --git a/releasenotes/notes/add-az-to-loadbalancer-da9bf1baaedc89a4.yaml b/releasenotes/notes/add-az-to-loadbalancer-da9bf1baaedc89a4.yaml
new file mode 100644
index 0000000..321d4a0
--- /dev/null
+++ b/releasenotes/notes/add-az-to-loadbalancer-da9bf1baaedc89a4.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Adds Octavia (load_balancer) support for the availability zone and
+    availability zone profile APIs.
diff --git a/releasenotes/notes/add-block-storage-group-snapshots-954cc869227317c3.yaml b/releasenotes/notes/add-block-storage-group-snapshots-954cc869227317c3.yaml
new file mode 100644
index 0000000..eb4e0f2
--- /dev/null
+++ b/releasenotes/notes/add-block-storage-group-snapshots-954cc869227317c3.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add support for group snapshots to the block storage service.
diff --git a/releasenotes/notes/add-block-storage-group-type-group-specs-d07047167224ec83.yaml b/releasenotes/notes/add-block-storage-group-type-group-specs-d07047167224ec83.yaml
new file mode 100644
index 0000000..50ae352
--- /dev/null
+++ b/releasenotes/notes/add-block-storage-group-type-group-specs-d07047167224ec83.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add support for creating, updating and deleting group type group specs for
+    the block storage service.
diff --git a/releasenotes/notes/add-block-storage-groups-bf5f1af714c9e505.yaml b/releasenotes/notes/add-block-storage-groups-bf5f1af714c9e505.yaml
new file mode 100644
index 0000000..2f24f18
--- /dev/null
+++ b/releasenotes/notes/add-block-storage-groups-bf5f1af714c9e505.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add support for groups to the block storage service.
diff --git a/releasenotes/notes/add-block-storage-service-support-ce03092ce2d7e7b9.yaml b/releasenotes/notes/add-block-storage-service-support-ce03092ce2d7e7b9.yaml
new file mode 100644
index 0000000..95fadb5
--- /dev/null
+++ b/releasenotes/notes/add-block-storage-service-support-ce03092ce2d7e7b9.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Added support for block storage services.
diff --git a/releasenotes/notes/add-block-storage-summary-support-dd00d424c4e6a3b1.yaml b/releasenotes/notes/add-block-storage-summary-support-dd00d424c4e6a3b1.yaml
new file mode 100644
index 0000000..4620d2e
--- /dev/null
+++ b/releasenotes/notes/add-block-storage-summary-support-dd00d424c4e6a3b1.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support for block storage summary.
+
diff --git a/releasenotes/notes/add-bulk-create-resources-12192ec9d76c7716.yaml b/releasenotes/notes/add-bulk-create-resources-12192ec9d76c7716.yaml
new file mode 100644
index 0000000..896e17b
--- /dev/null
+++ b/releasenotes/notes/add-bulk-create-resources-12192ec9d76c7716.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - Enabling Resource class for being able to create objects in bulk way. Add
+    first objects using that feature - Port, which now expose a proxy method
+    `create_ports` for creating multiple port objects at once.
diff --git a/releasenotes/notes/add-cipher-list-support-to-octavia-b6b2b0053ca6b184.yaml b/releasenotes/notes/add-cipher-list-support-to-octavia-b6b2b0053ca6b184.yaml
new file mode 100644
index 0000000..e29879d
--- /dev/null
+++ b/releasenotes/notes/add-cipher-list-support-to-octavia-b6b2b0053ca6b184.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Added the ``tls_ciphers`` properties to listener.py
+    and pool.py for storing stings of tls ciphers in
+    OpenSSL cipher string format.
diff --git a/releasenotes/notes/add-compute-flavor-ops-12149e58299c413e.yaml b/releasenotes/notes/add-compute-flavor-ops-12149e58299c413e.yaml
new file mode 100644
index 0000000..45c2d6b
--- /dev/null
+++ b/releasenotes/notes/add-compute-flavor-ops-12149e58299c413e.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add additional compute flavor operations (flavor_add_tenant_access,
+    flavor_remove_tenant_access, get_flavor_access, extra_specs fetching/updating).
diff --git a/releasenotes/notes/add-current-user-id-49b6463e6bcc3b31.yaml b/releasenotes/notes/add-current-user-id-49b6463e6bcc3b31.yaml
new file mode 100644
index 0000000..fd9a1be
--- /dev/null
+++ b/releasenotes/notes/add-current-user-id-49b6463e6bcc3b31.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Added a new property, 'current_user_id' which contains
+    the id of the currently authenticated user from the token.
diff --git a/releasenotes/notes/add-cyborg-support-b9afca69f709c048.yaml b/releasenotes/notes/add-cyborg-support-b9afca69f709c048.yaml
new file mode 100644
index 0000000..9688a5e
--- /dev/null
+++ b/releasenotes/notes/add-cyborg-support-b9afca69f709c048.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Add support for Cyborg(accelerator)
diff --git a/releasenotes/notes/add-dns-606cc018e01d40fa.yaml b/releasenotes/notes/add-dns-606cc018e01d40fa.yaml
new file mode 100644
index 0000000..dcaab35
--- /dev/null
+++ b/releasenotes/notes/add-dns-606cc018e01d40fa.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Adds support for `dns
+    <https://developer.openstack.org/api-ref/dns/>`_ service.
diff --git a/releasenotes/notes/add-dns-domain-support-for-port-3fa4568330dda07e.yaml b/releasenotes/notes/add-dns-domain-support-for-port-3fa4568330dda07e.yaml
new file mode 100644
index 0000000..7c24608
--- /dev/null
+++ b/releasenotes/notes/add-dns-domain-support-for-port-3fa4568330dda07e.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    ``dns_domain`` attribute support has been added to the network
+    port resource
diff --git a/releasenotes/notes/add-dns-zone-share-api-374e71cac504917f.yaml b/releasenotes/notes/add-dns-zone-share-api-374e71cac504917f.yaml
new file mode 100644
index 0000000..1541c17
--- /dev/null
+++ b/releasenotes/notes/add-dns-zone-share-api-374e71cac504917f.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add Designate (DNS) support for zone shares.
diff --git a/releasenotes/notes/add-fakes-generator-72c53d34c995fcb2.yaml b/releasenotes/notes/add-fakes-generator-72c53d34c995fcb2.yaml
new file mode 100644
index 0000000..06fa9c0
--- /dev/null
+++ b/releasenotes/notes/add-fakes-generator-72c53d34c995fcb2.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add fake resource generator to ease unit testing in packages that depend on
+    openstacksdk.
diff --git a/releasenotes/notes/add-find-backup-find-snapshot-v2-756a05ccd150db82.yaml b/releasenotes/notes/add-find-backup-find-snapshot-v2-756a05ccd150db82.yaml
new file mode 100644
index 0000000..68789d3
--- /dev/null
+++ b/releasenotes/notes/add-find-backup-find-snapshot-v2-756a05ccd150db82.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    The ``find_snapshot`` and ``find_backup`` methods have been added to the
+    v2 block storage proxy API. These were previously only available for the v3
+    proxy API.
diff --git a/releasenotes/notes/add-fip-portforwarding-methods-cffc14a6283cedfb.yaml b/releasenotes/notes/add-fip-portforwarding-methods-cffc14a6283cedfb.yaml
new file mode 100644
index 0000000..274e86a
--- /dev/null
+++ b/releasenotes/notes/add-fip-portforwarding-methods-cffc14a6283cedfb.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add floating IP Port Forwarding related methods.
diff --git a/releasenotes/notes/add-identity-domain-configuration-2e8bcaa20736b379.yaml b/releasenotes/notes/add-identity-domain-configuration-2e8bcaa20736b379.yaml
new file mode 100644
index 0000000..6929c8b
--- /dev/null
+++ b/releasenotes/notes/add-identity-domain-configuration-2e8bcaa20736b379.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add support for creating, updating and deleting domain configurations for
+    the identity service.
diff --git a/releasenotes/notes/add-identity-group-users-proxy-method-e37f8983b2406819.yaml b/releasenotes/notes/add-identity-group-users-proxy-method-e37f8983b2406819.yaml
new file mode 100644
index 0000000..88e67df
--- /dev/null
+++ b/releasenotes/notes/add-identity-group-users-proxy-method-e37f8983b2406819.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add possibility to list users in the group.
diff --git a/releasenotes/notes/add-image-attributes-05b820a85cd09806.yaml b/releasenotes/notes/add-image-attributes-05b820a85cd09806.yaml
new file mode 100644
index 0000000..6507b98
--- /dev/null
+++ b/releasenotes/notes/add-image-attributes-05b820a85cd09806.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Add image attributes is_hidden, hash_algo, hash_value
diff --git a/releasenotes/notes/add-image-cache-support-3f8c13550a84d749.yaml b/releasenotes/notes/add-image-cache-support-3f8c13550a84d749.yaml
new file mode 100644
index 0000000..36dc0fb
--- /dev/null
+++ b/releasenotes/notes/add-image-cache-support-3f8c13550a84d749.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add support for glance Cache API.
diff --git a/releasenotes/notes/add-image-cache-support-78477e1686c52e56.yaml b/releasenotes/notes/add-image-cache-support-78477e1686c52e56.yaml
new file mode 100644
index 0000000..36dc0fb
--- /dev/null
+++ b/releasenotes/notes/add-image-cache-support-78477e1686c52e56.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add support for glance Cache API.
diff --git a/releasenotes/notes/add-image-metadef-namespace-support-b93557afdcf4272c.yaml b/releasenotes/notes/add-image-metadef-namespace-support-b93557afdcf4272c.yaml
new file mode 100644
index 0000000..01514ff
--- /dev/null
+++ b/releasenotes/notes/add-image-metadef-namespace-support-b93557afdcf4272c.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  -|
+    Adds support to query metadef namespaces from glance.
diff --git a/releasenotes/notes/add-image-metadef-property-fb87e5a7090e73ac.yaml b/releasenotes/notes/add-image-metadef-property-fb87e5a7090e73ac.yaml
new file mode 100644
index 0000000..042d4c7
--- /dev/null
+++ b/releasenotes/notes/add-image-metadef-property-fb87e5a7090e73ac.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Added support for the ``MetadefProperty`` Image resource.
diff --git a/releasenotes/notes/add-image-metadef-schema-b463825481bdf954.yaml b/releasenotes/notes/add-image-metadef-schema-b463825481bdf954.yaml
new file mode 100644
index 0000000..f029759
--- /dev/null
+++ b/releasenotes/notes/add-image-metadef-schema-b463825481bdf954.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Add support for metadata definition schema resource in image service.
\ No newline at end of file
diff --git a/releasenotes/notes/add-image-schema-9c07c2789490718a.yaml b/releasenotes/notes/add-image-schema-9c07c2789490718a.yaml
new file mode 100644
index 0000000..3217f99
--- /dev/null
+++ b/releasenotes/notes/add-image-schema-9c07c2789490718a.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Add support for schema resource in image service.
diff --git a/releasenotes/notes/add-image-service-info-90d6063b5ba0735d.yaml b/releasenotes/notes/add-image-service-info-90d6063b5ba0735d.yaml
new file mode 100644
index 0000000..ea84d0d
--- /dev/null
+++ b/releasenotes/notes/add-image-service-info-90d6063b5ba0735d.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Add image service info discovery (import constraints and supported stores)
diff --git a/releasenotes/notes/add-image-stage-1dbc3844a042fd26.yaml b/releasenotes/notes/add-image-stage-1dbc3844a042fd26.yaml
new file mode 100644
index 0000000..bde7506
--- /dev/null
+++ b/releasenotes/notes/add-image-stage-1dbc3844a042fd26.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add support for staging image data.
diff --git a/releasenotes/notes/add-jmespath-support-f47b7a503dbbfda1.yaml b/releasenotes/notes/add-jmespath-support-f47b7a503dbbfda1.yaml
new file mode 100644
index 0000000..2d157a3
--- /dev/null
+++ b/releasenotes/notes/add-jmespath-support-f47b7a503dbbfda1.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - All get and search functions can now take a jmespath expression in their
+    filters parameter.
diff --git a/releasenotes/notes/add-limit-to-shared-file-2b443c2a00c75e6e.yaml b/releasenotes/notes/add-limit-to-shared-file-2b443c2a00c75e6e.yaml
new file mode 100644
index 0000000..58ff44f
--- /dev/null
+++ b/releasenotes/notes/add-limit-to-shared-file-2b443c2a00c75e6e.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support to list absolute resource limits on the shared
+    file system service.
diff --git a/releasenotes/notes/add-list_flavor_access-e038253e953e6586.yaml b/releasenotes/notes/add-list_flavor_access-e038253e953e6586.yaml
new file mode 100644
index 0000000..12f289f
--- /dev/null
+++ b/releasenotes/notes/add-list_flavor_access-e038253e953e6586.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add a list_flavor_access method to list all
+    the projects/tenants allowed to access a given flavor.
diff --git a/releasenotes/notes/add-load-balancer-flavor-api-d2598e30347a19fc.yaml b/releasenotes/notes/add-load-balancer-flavor-api-d2598e30347a19fc.yaml
new file mode 100644
index 0000000..462acc1
--- /dev/null
+++ b/releasenotes/notes/add-load-balancer-flavor-api-d2598e30347a19fc.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Adds Octavia (load_balancer) support for the flavor APIs.
diff --git a/releasenotes/notes/add-load-balancer-flavor-profile-api-e5a15157563eb75f.yaml b/releasenotes/notes/add-load-balancer-flavor-profile-api-e5a15157563eb75f.yaml
new file mode 100644
index 0000000..1d674cc
--- /dev/null
+++ b/releasenotes/notes/add-load-balancer-flavor-profile-api-e5a15157563eb75f.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Adds Octavia (load_balancer) support for the flavor profile APIs.
diff --git a/releasenotes/notes/add-load-balancer-listener-alpn-protocols-ded816c78bf2080c.yaml b/releasenotes/notes/add-load-balancer-listener-alpn-protocols-ded816c78bf2080c.yaml
new file mode 100644
index 0000000..685c569
--- /dev/null
+++ b/releasenotes/notes/add-load-balancer-listener-alpn-protocols-ded816c78bf2080c.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Adds ALPN protocols support for the Octavia (load_balancer) listeners.
diff --git a/releasenotes/notes/add-load-balancer-pool-alpn-protocols-77f0c7015f176369.yaml b/releasenotes/notes/add-load-balancer-pool-alpn-protocols-77f0c7015f176369.yaml
new file mode 100644
index 0000000..fd112b0
--- /dev/null
+++ b/releasenotes/notes/add-load-balancer-pool-alpn-protocols-77f0c7015f176369.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Adds ALPN protocols support for the Octavia (load_balancer) pools.
diff --git a/releasenotes/notes/add-load-balancer-provider-api-08bcfb72ddf5b247.yaml b/releasenotes/notes/add-load-balancer-provider-api-08bcfb72ddf5b247.yaml
new file mode 100644
index 0000000..906e902
--- /dev/null
+++ b/releasenotes/notes/add-load-balancer-provider-api-08bcfb72ddf5b247.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Adds Octavia (load_balancer) support for the providers APIs.
diff --git a/releasenotes/notes/add-magnum-cluster-support-843fe2709b8f4789.yaml b/releasenotes/notes/add-magnum-cluster-support-843fe2709b8f4789.yaml
new file mode 100644
index 0000000..28609a3
--- /dev/null
+++ b/releasenotes/notes/add-magnum-cluster-support-843fe2709b8f4789.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Added magnum cluster CRUD support to cloud abstraction layer.
diff --git a/releasenotes/notes/add-manage-volume-support-a4fd90e3ff2fa0d0.yaml b/releasenotes/notes/add-manage-volume-support-a4fd90e3ff2fa0d0.yaml
new file mode 100644
index 0000000..6d0a0ae
--- /dev/null
+++ b/releasenotes/notes/add-manage-volume-support-a4fd90e3ff2fa0d0.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Added support for manage volume operation.
diff --git a/releasenotes/notes/add-masakara-support-3f7df4436ac869cf.yaml b/releasenotes/notes/add-masakara-support-3f7df4436ac869cf.yaml
new file mode 100644
index 0000000..baa5fd3
--- /dev/null
+++ b/releasenotes/notes/add-masakara-support-3f7df4436ac869cf.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Ported in support for masakari/``instance_ha`` service from
+    `python-masakariclient`.
diff --git a/releasenotes/notes/add-masakari-enabled-to-segment-0e83da869d2ab03f.yaml b/releasenotes/notes/add-masakari-enabled-to-segment-0e83da869d2ab03f.yaml
new file mode 100644
index 0000000..97d01f5
--- /dev/null
+++ b/releasenotes/notes/add-masakari-enabled-to-segment-0e83da869d2ab03f.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add support for the ``enabled`` field of the ``Segment`` resource for
+    the instance HA service (Masakari).
diff --git a/releasenotes/notes/add-masakari-vmoves-873ad67830c92254.yaml b/releasenotes/notes/add-masakari-vmoves-873ad67830c92254.yaml
new file mode 100644
index 0000000..ffe6d38
--- /dev/null
+++ b/releasenotes/notes/add-masakari-vmoves-873ad67830c92254.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add support for the new ``VMove`` resource for the instance
+    HA service (Masakari).
diff --git a/releasenotes/notes/add-metadef-object-5eec168baf039e80.yaml b/releasenotes/notes/add-metadef-object-5eec168baf039e80.yaml
new file mode 100644
index 0000000..a1e037f
--- /dev/null
+++ b/releasenotes/notes/add-metadef-object-5eec168baf039e80.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add support for Image Metadef objects.
diff --git a/releasenotes/notes/add-migrations-946adf16674d4b2a.yaml b/releasenotes/notes/add-migrations-946adf16674d4b2a.yaml
new file mode 100644
index 0000000..f199f91
--- /dev/null
+++ b/releasenotes/notes/add-migrations-946adf16674d4b2a.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add support for the Compute service's migrations API, allowing users to
+    list all in-progress migrations for all servers.
diff --git a/releasenotes/notes/add-new-field-progress-details-in-notification-resource-f7871acb6ffd46dc.yaml b/releasenotes/notes/add-new-field-progress-details-in-notification-resource-f7871acb6ffd46dc.yaml
new file mode 100644
index 0000000..f0470b4
--- /dev/null
+++ b/releasenotes/notes/add-new-field-progress-details-in-notification-resource-f7871acb6ffd46dc.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    In microversion 1.1, Masakari returns ``recovery_workflow_details`` information
+    of the notification in ``GET /notifications/{notification_id}`` API. Added
+    ``recovery_workflow_details`` attribute to Notification class to read the
+    recovery_workflow_details of the notification.
diff --git a/releasenotes/notes/add-node-boot-mode-5f49882fdd86f35b.yaml b/releasenotes/notes/add-node-boot-mode-5f49882fdd86f35b.yaml
new file mode 100644
index 0000000..b97ad34
--- /dev/null
+++ b/releasenotes/notes/add-node-boot-mode-5f49882fdd86f35b.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add support to display node fields ``boot_mode`` and ``secure_boot``
+    which are introduced in API 1.75.
diff --git a/releasenotes/notes/add-node-boot-mode-set-5718a8d6511b4826.yaml b/releasenotes/notes/add-node-boot-mode-set-5718a8d6511b4826.yaml
new file mode 100644
index 0000000..23d6e43
--- /dev/null
+++ b/releasenotes/notes/add-node-boot-mode-set-5718a8d6511b4826.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add support for changing node states ``boot_mode`` and ``secure_boot``
+    in sync with functionality introduced in API 1.76.
diff --git a/releasenotes/notes/add-node-inventory-52f54e16777814e7.yaml b/releasenotes/notes/add-node-inventory-52f54e16777814e7.yaml
new file mode 100644
index 0000000..5e4b841
--- /dev/null
+++ b/releasenotes/notes/add-node-inventory-52f54e16777814e7.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Adds support for querying a node's hardware inventory as per functionality
+    introduced in API 1.81.
\ No newline at end of file
diff --git a/releasenotes/notes/add-node-vendor_passthru-29b384cadf795b48.yaml b/releasenotes/notes/add-node-vendor_passthru-29b384cadf795b48.yaml
new file mode 100644
index 0000000..682ee49
--- /dev/null
+++ b/releasenotes/notes/add-node-vendor_passthru-29b384cadf795b48.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add node vendor_passthru interface for Ironic API.
diff --git a/releasenotes/notes/add-octavia-amphora-api-7f3586f6a4f31de4.yaml b/releasenotes/notes/add-octavia-amphora-api-7f3586f6a4f31de4.yaml
new file mode 100644
index 0000000..af9a5b4
--- /dev/null
+++ b/releasenotes/notes/add-octavia-amphora-api-7f3586f6a4f31de4.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Adds Octavia (load_balancer) support for the amphora APIs.
diff --git a/releasenotes/notes/add-octavia-lb-failover-9a34c9577d78ad34.yaml b/releasenotes/notes/add-octavia-lb-failover-9a34c9577d78ad34.yaml
new file mode 100644
index 0000000..d87404e
--- /dev/null
+++ b/releasenotes/notes/add-octavia-lb-failover-9a34c9577d78ad34.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Added Octavia (load_balancer) load balancer failover.
diff --git a/releasenotes/notes/add-octavia-lb-listener-stats-1538cc6e4f734353.yaml b/releasenotes/notes/add-octavia-lb-listener-stats-1538cc6e4f734353.yaml
new file mode 100644
index 0000000..8fb7f9f
--- /dev/null
+++ b/releasenotes/notes/add-octavia-lb-listener-stats-1538cc6e4f734353.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Added load balancer and listener get statistics methods.
diff --git a/releasenotes/notes/add-octavia-listener-hsts-fields-50c621b71e56dc13.yaml b/releasenotes/notes/add-octavia-listener-hsts-fields-50c621b71e56dc13.yaml
new file mode 100644
index 0000000..b97968a
--- /dev/null
+++ b/releasenotes/notes/add-octavia-listener-hsts-fields-50c621b71e56dc13.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added new fields to loadbalancer create/update listener API in order to
+    support new HTTP Strict Transport Security support.
diff --git a/releasenotes/notes/add-octavia-tags-support-1c1cf94184e6ebb7.yaml b/releasenotes/notes/add-octavia-tags-support-1c1cf94184e6ebb7.yaml
new file mode 100644
index 0000000..5eb3c85
--- /dev/null
+++ b/releasenotes/notes/add-octavia-tags-support-1c1cf94184e6ebb7.yaml
@@ -0,0 +1,10 @@
+---
+features:
+  - Add tags support for the Octavia (load_balancer) objects.
+  - |
+    Added support for the Octavia (load_balancer) L7 Policy "redirect_prefix"
+    capability.
+fixes:
+  - |
+    Fixed the Octavia (load_balancer) load balancer objects to have
+    "flavor_id" instead of the nonexistent "flavor" field.
diff --git a/releasenotes/notes/add-placement-resource-class-e1c644d978b886bc.yaml b/releasenotes/notes/add-placement-resource-class-e1c644d978b886bc.yaml
new file mode 100644
index 0000000..c3631ab
--- /dev/null
+++ b/releasenotes/notes/add-placement-resource-class-e1c644d978b886bc.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Added support for the ``ResourceClass`` Placement resource.
diff --git a/releasenotes/notes/add-placement-resource-provider-aggregates-1310c0be6a4097d3.yaml b/releasenotes/notes/add-placement-resource-provider-aggregates-1310c0be6a4097d3.yaml
new file mode 100644
index 0000000..e8385ed
--- /dev/null
+++ b/releasenotes/notes/add-placement-resource-provider-aggregates-1310c0be6a4097d3.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add support for aggregates to the ``ResourceProvider`` Placement resource.
diff --git a/releasenotes/notes/add-placement-resource-provider-inventory-8714cafefae74810.yaml b/releasenotes/notes/add-placement-resource-provider-inventory-8714cafefae74810.yaml
new file mode 100644
index 0000000..33cabac
--- /dev/null
+++ b/releasenotes/notes/add-placement-resource-provider-inventory-8714cafefae74810.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Added support for the ``ResourceProviderInventory`` Placement resource.
diff --git a/releasenotes/notes/add-placement-support-a2011eb1e900804d.yaml b/releasenotes/notes/add-placement-support-a2011eb1e900804d.yaml
new file mode 100644
index 0000000..dd9ee1d
--- /dev/null
+++ b/releasenotes/notes/add-placement-support-a2011eb1e900804d.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    Add initial support for Placement. Currently the following resources are
+    supported:
+
+    - ``ResourceProvider``
diff --git a/releasenotes/notes/add-placement-trait-29957d2c03edbfb9.yaml b/releasenotes/notes/add-placement-trait-29957d2c03edbfb9.yaml
new file mode 100644
index 0000000..773d77f
--- /dev/null
+++ b/releasenotes/notes/add-placement-trait-29957d2c03edbfb9.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add support for the ``Trait`` Placement resource.
diff --git a/releasenotes/notes/add-port-hardware-offload-type-1232c5ae3f62d7df.yaml b/releasenotes/notes/add-port-hardware-offload-type-1232c5ae3f62d7df.yaml
new file mode 100644
index 0000000..b53e676
--- /dev/null
+++ b/releasenotes/notes/add-port-hardware-offload-type-1232c5ae3f62d7df.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    Add ``hardware_offload_type`` attribute to ``port`` resource. Users
+    can set this attribute to a valid value defined in
+    ``neutron_lib.constants.VALID_HWOL_TYPES``, set "None" or leave it
+    undefined.
diff --git a/releasenotes/notes/add-port-numa-affinity-policy-b42a85dbe26560d2.yaml b/releasenotes/notes/add-port-numa-affinity-policy-b42a85dbe26560d2.yaml
new file mode 100644
index 0000000..2696cb4
--- /dev/null
+++ b/releasenotes/notes/add-port-numa-affinity-policy-b42a85dbe26560d2.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Add ``numa_affinity_policy`` attribute to ``port`` resource. Users
+    can set this attribute to ``required``, ``deferred`` or ``legacy``.
+    This parameter is nullable.
diff --git a/releasenotes/notes/add-propagate_uplink_status-to-port-0152d476c65979e3.yaml b/releasenotes/notes/add-propagate_uplink_status-to-port-0152d476c65979e3.yaml
new file mode 100644
index 0000000..28bf681
--- /dev/null
+++ b/releasenotes/notes/add-propagate_uplink_status-to-port-0152d476c65979e3.yaml
@@ -0,0 +1,12 @@
+---
+features:
+  - |
+    Add ``propagate_uplink_status`` attribute to ``port`` resource.
+    Users can set this attribute to ``True`` or ``False``.
+    If it is set to ``True``, uplink status propagation is enabled.
+    Otherwise, it is disabled.
+    Neutron server needs to have the API extension
+    ``uplink-status-propagation`` in order to support this feature.
+    This feature can be used in SRIOV scenario, in which users
+    enable uplink status propagation of the SRIOV port
+    so that the link status of the VF will follow the PF.
diff --git a/releasenotes/notes/add-server-console-078ed2696e5b04d9.yaml b/releasenotes/notes/add-server-console-078ed2696e5b04d9.yaml
new file mode 100644
index 0000000..a3e7687
--- /dev/null
+++ b/releasenotes/notes/add-server-console-078ed2696e5b04d9.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - Added get_server_console method to fetch the console
+    log from a Server. On clouds that do not expose this
+    feature, a debug line will be logged and an empty
+    string will be returned.
diff --git a/releasenotes/notes/add-server-migrations-6e31183196f14deb.yaml b/releasenotes/notes/add-server-migrations-6e31183196f14deb.yaml
new file mode 100644
index 0000000..8e451ce
--- /dev/null
+++ b/releasenotes/notes/add-server-migrations-6e31183196f14deb.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    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.
diff --git a/releasenotes/notes/add-service-0bcc16eb026eade3.yaml b/releasenotes/notes/add-service-0bcc16eb026eade3.yaml
new file mode 100644
index 0000000..e515dc7
--- /dev/null
+++ b/releasenotes/notes/add-service-0bcc16eb026eade3.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added a new method `openstack.connection.Connection.add_service` which
+    allows the registration of Proxy/Resource classes defined externally.
diff --git a/releasenotes/notes/add-sg-rules-bulk-f36a3e2326d74867.yaml b/releasenotes/notes/add-sg-rules-bulk-f36a3e2326d74867.yaml
new file mode 100644
index 0000000..4776d33
--- /dev/null
+++ b/releasenotes/notes/add-sg-rules-bulk-f36a3e2326d74867.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - Added bulk create securtiy groups rules. With new proxy method
+    `create_security_group_rules` now it's possible to create multiple rules
+    for certain security group.
diff --git a/releasenotes/notes/add-share-access-rules-to-shared-file-362bee34f7331186.yaml b/releasenotes/notes/add-share-access-rules-to-shared-file-362bee34f7331186.yaml
new file mode 100644
index 0000000..005de87
--- /dev/null
+++ b/releasenotes/notes/add-share-access-rules-to-shared-file-362bee34f7331186.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support to create, list, get and delete share access rules with the
+    shared file system service.
diff --git a/releasenotes/notes/add-share-network-subnet-to-shared-file-b5de3ce6ca723209.yaml b/releasenotes/notes/add-share-network-subnet-to-shared-file-b5de3ce6ca723209.yaml
new file mode 100644
index 0000000..c61e18c
--- /dev/null
+++ b/releasenotes/notes/add-share-network-subnet-to-shared-file-b5de3ce6ca723209.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support to create, list, get, and delete share network
+    subnets on the shared file system service.
diff --git a/releasenotes/notes/add-share-network-to-shared-file-c5c9a6b8ccf1d958.yaml b/releasenotes/notes/add-share-network-to-shared-file-c5c9a6b8ccf1d958.yaml
new file mode 100644
index 0000000..5177b99
--- /dev/null
+++ b/releasenotes/notes/add-share-network-to-shared-file-c5c9a6b8ccf1d958.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support to create, update, list, get, and delete share
+    networks on the shared file system service.
diff --git a/releasenotes/notes/add-share-snapshot-instance-to-shared-file-4d935f12d67bf59d.yaml b/releasenotes/notes/add-share-snapshot-instance-to-shared-file-4d935f12d67bf59d.yaml
new file mode 100644
index 0000000..385bc44
--- /dev/null
+++ b/releasenotes/notes/add-share-snapshot-instance-to-shared-file-4d935f12d67bf59d.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support to list and get share snapshot instances
+    on the shared file system service.
diff --git a/releasenotes/notes/add-share-snapshot-to-shared-file-82ecedbdbed2e3c5.yaml b/releasenotes/notes/add-share-snapshot-to-shared-file-82ecedbdbed2e3c5.yaml
new file mode 100644
index 0000000..294fddc
--- /dev/null
+++ b/releasenotes/notes/add-share-snapshot-to-shared-file-82ecedbdbed2e3c5.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Adds support to create, update, list, get, and delete share
+    snapshots to shared file system service.
diff --git a/releasenotes/notes/add-share_group-to-shared-file-8cee20d8aa2afbb7.yaml b/releasenotes/notes/add-share_group-to-shared-file-8cee20d8aa2afbb7.yaml
new file mode 100644
index 0000000..ae76ef0
--- /dev/null
+++ b/releasenotes/notes/add-share_group-to-shared-file-8cee20d8aa2afbb7.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support to create, update, list, get, and delete share
+    groups on the shared file system service.
diff --git a/releasenotes/notes/add-shared-file-syste-share_instance-fffaea2d3a77ba24.yaml b/releasenotes/notes/add-shared-file-syste-share_instance-fffaea2d3a77ba24.yaml
new file mode 100644
index 0000000..f14a7a4
--- /dev/null
+++ b/releasenotes/notes/add-shared-file-syste-share_instance-fffaea2d3a77ba24.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Added support to list, get, reset status of,
+    and force delete share instances
+    (from shared file system service).
diff --git a/releasenotes/notes/add-shared-file-system-locks-support-4859ca93f93a1056.yaml b/releasenotes/notes/add-shared-file-system-locks-support-4859ca93f93a1056.yaml
new file mode 100644
index 0000000..c6dca56
--- /dev/null
+++ b/releasenotes/notes/add-shared-file-system-locks-support-4859ca93f93a1056.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    Added support to manipulate resource locks from the shared file system
+    service.
+  - |
+    Added support to restrict the visibility and deletion of the shared file
+    system share access rules.
diff --git a/releasenotes/notes/add-shared-file-system-manage-unmanage-share-830e313f96e5fd2b.yaml b/releasenotes/notes/add-shared-file-system-manage-unmanage-share-830e313f96e5fd2b.yaml
new file mode 100644
index 0000000..d349d6c
--- /dev/null
+++ b/releasenotes/notes/add-shared-file-system-manage-unmanage-share-830e313f96e5fd2b.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support to manage and unmanage shares
+    from the shared file system service.
\ No newline at end of file
diff --git a/releasenotes/notes/add-shared-file-system-share-group-snapshot-c5099e6c8accf077.yaml b/releasenotes/notes/add-shared-file-system-share-group-snapshot-c5099e6c8accf077.yaml
new file mode 100644
index 0000000..9c6b096
--- /dev/null
+++ b/releasenotes/notes/add-shared-file-system-share-group-snapshot-c5099e6c8accf077.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support for list, show, update, delete, reset and create
+    Share Group Snapshots for Shared File Systems service.
diff --git a/releasenotes/notes/add-shared-file-system-share-metadata-e0415bb71d8a0a48.yaml b/releasenotes/notes/add-shared-file-system-share-metadata-e0415bb71d8a0a48.yaml
new file mode 100644
index 0000000..6461ec7
--- /dev/null
+++ b/releasenotes/notes/add-shared-file-system-share-metadata-e0415bb71d8a0a48.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Added support to list, get, create,
+    update, and delete share metadata
+    from shared file system service.
\ No newline at end of file
diff --git a/releasenotes/notes/add-shared-file-system-share-resize-ddd650c2e32fed34.yaml b/releasenotes/notes/add-shared-file-system-share-resize-ddd650c2e32fed34.yaml
new file mode 100644
index 0000000..b1adea6
--- /dev/null
+++ b/releasenotes/notes/add-shared-file-system-share-resize-ddd650c2e32fed34.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Added support for shrink/extend share actions.
diff --git a/releasenotes/notes/add-shared-file-system-shares-2e1d44a1bb882d6d.yaml b/releasenotes/notes/add-shared-file-system-shares-2e1d44a1bb882d6d.yaml
new file mode 100644
index 0000000..6946d23
--- /dev/null
+++ b/releasenotes/notes/add-shared-file-system-shares-2e1d44a1bb882d6d.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added revert share to snapshot to shared
+    file system service.
diff --git a/releasenotes/notes/add-shared-file-system-shares-e9f356a318045607.yaml b/releasenotes/notes/add-shared-file-system-shares-e9f356a318045607.yaml
new file mode 100644
index 0000000..e7a1bcb
--- /dev/null
+++ b/releasenotes/notes/add-shared-file-system-shares-e9f356a318045607.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support to create, update, list, get, and delete shares
+    (from shared file system service).
diff --git a/releasenotes/notes/add-shared-file-systems-83a3767429fd5e8c.yaml b/releasenotes/notes/add-shared-file-systems-83a3767429fd5e8c.yaml
new file mode 100644
index 0000000..9f770db
--- /dev/null
+++ b/releasenotes/notes/add-shared-file-systems-83a3767429fd5e8c.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    Support for the OpenStack Shared File System API (manila) has been
+    introduced.
+  - |
+    Added support to list Shared File System Service API Versions
+    and Availability Zones.
diff --git a/releasenotes/notes/add-shared-file-systems-export-location-a27c1741880c384b.yaml b/releasenotes/notes/add-shared-file-systems-export-location-a27c1741880c384b.yaml
new file mode 100644
index 0000000..df1a124
--- /dev/null
+++ b/releasenotes/notes/add-shared-file-systems-export-location-a27c1741880c384b.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support to list and show Export Locations
+    for shares from the Shared File Systems service.
diff --git a/releasenotes/notes/add-shelve_offload-427f6550fc55e622.yaml b/releasenotes/notes/add-shelve_offload-427f6550fc55e622.yaml
new file mode 100644
index 0000000..0162c0e
--- /dev/null
+++ b/releasenotes/notes/add-shelve_offload-427f6550fc55e622.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Adds shelve_offload_server method to the compute proxy
diff --git a/releasenotes/notes/add-show-all-images-flag-352748b6c3d99f3f.yaml b/releasenotes/notes/add-show-all-images-flag-352748b6c3d99f3f.yaml
new file mode 100644
index 0000000..98c320b
--- /dev/null
+++ b/releasenotes/notes/add-show-all-images-flag-352748b6c3d99f3f.yaml
@@ -0,0 +1,9 @@
+---
+features:
+  - Added flag "show_all" to list_images. The behavior of
+    Glance v2 to only show shared images if they have been
+    accepted by the user can be confusing, and the only way
+    to change it is to use search_images(filters=dict(member_status='all'))
+    which isn't terribly obvious. "show_all=True" will set
+    that flag, as well as disabling the filtering of images
+    in "deleted" state.
diff --git a/releasenotes/notes/add-stack-events-b8674d7bb657e789.yaml b/releasenotes/notes/add-stack-events-b8674d7bb657e789.yaml
new file mode 100644
index 0000000..cdc9367
--- /dev/null
+++ b/releasenotes/notes/add-stack-events-b8674d7bb657e789.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    The ``stack_events`` method and ``StackEvent`` Class have been
+    added to retrieve stack events
\ No newline at end of file
diff --git a/releasenotes/notes/add-stack-export-3ace746a8c80d766.yaml b/releasenotes/notes/add-stack-export-3ace746a8c80d766.yaml
new file mode 100644
index 0000000..00d680b
--- /dev/null
+++ b/releasenotes/notes/add-stack-export-3ace746a8c80d766.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add ``export_stack`` to print stack infomation in a json format
diff --git a/releasenotes/notes/add-stack-suspend-and-resume-26d4fc5904291d5d.yaml b/releasenotes/notes/add-stack-suspend-and-resume-26d4fc5904291d5d.yaml
new file mode 100644
index 0000000..fa3eecd
--- /dev/null
+++ b/releasenotes/notes/add-stack-suspend-and-resume-26d4fc5904291d5d.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Adds ``suspend_stack`` and ``resume_stack`` to support stack non-lifecycle operations.
\ No newline at end of file
diff --git a/releasenotes/notes/add-storage-pool-to-shared-file-ad45da1b2510b412.yaml b/releasenotes/notes/add-storage-pool-to-shared-file-ad45da1b2510b412.yaml
new file mode 100644
index 0000000..7303d35
--- /dev/null
+++ b/releasenotes/notes/add-storage-pool-to-shared-file-ad45da1b2510b412.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support for retrieving storage pools information from
+    the Shared File Systems service.
diff --git a/releasenotes/notes/add-support-allowed-cidrs-loadbalancer-listener-809e523a8bd6a7d5.yaml b/releasenotes/notes/add-support-allowed-cidrs-loadbalancer-listener-809e523a8bd6a7d5.yaml
new file mode 100644
index 0000000..3d47aa3
--- /dev/null
+++ b/releasenotes/notes/add-support-allowed-cidrs-loadbalancer-listener-809e523a8bd6a7d5.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Added allowed_cidrs parameter into load balancer listener.
diff --git a/releasenotes/notes/add-support-availability_zone-loadbalancer-a18aa1708d7859e2.yaml b/releasenotes/notes/add-support-availability_zone-loadbalancer-a18aa1708d7859e2.yaml
new file mode 100644
index 0000000..0a0efef
--- /dev/null
+++ b/releasenotes/notes/add-support-availability_zone-loadbalancer-a18aa1708d7859e2.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Added availability_zone parameter into load balancer.
\ No newline at end of file
diff --git a/releasenotes/notes/add-support-for-setting-static-routes-b3ce6cac2c5e9e51.yaml b/releasenotes/notes/add-support-for-setting-static-routes-b3ce6cac2c5e9e51.yaml
new file mode 100644
index 0000000..0b7c577
--- /dev/null
+++ b/releasenotes/notes/add-support-for-setting-static-routes-b3ce6cac2c5e9e51.yaml
@@ -0,0 +1,9 @@
+---
+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.
diff --git a/releasenotes/notes/add-system-role-assignment-693dd3e1da33a54d.yaml b/releasenotes/notes/add-system-role-assignment-693dd3e1da33a54d.yaml
new file mode 100644
index 0000000..cb171b3
--- /dev/null
+++ b/releasenotes/notes/add-system-role-assignment-693dd3e1da33a54d.yaml
@@ -0,0 +1,11 @@
+---
+features:
+  - |
+    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>`_.
diff --git a/releasenotes/notes/add-tls-container-refs-params-for-octavia-pools-76f295cd2daa7f53.yaml b/releasenotes/notes/add-tls-container-refs-params-for-octavia-pools-76f295cd2daa7f53.yaml
new file mode 100644
index 0000000..e7a87ad
--- /dev/null
+++ b/releasenotes/notes/add-tls-container-refs-params-for-octavia-pools-76f295cd2daa7f53.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Add both ``ca_tls_container_ref`` and ``crl_container_ref``
+    parameters for Octavia pools, which can be used to store the ca
+    certificate used by backend servers and the revocation list file.
diff --git a/releasenotes/notes/add-tls-version-support-for-octavia-7ecb372e6fb58101.yaml b/releasenotes/notes/add-tls-version-support-for-octavia-7ecb372e6fb58101.yaml
new file mode 100644
index 0000000..d96dd0c
--- /dev/null
+++ b/releasenotes/notes/add-tls-version-support-for-octavia-7ecb372e6fb58101.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Added the ``tls_versions`` properties to listener.py
+    and pool.py for storing a python list of TLS protocol
+    versions to be used by the pools and listeners.
diff --git a/releasenotes/notes/add-tls_enabled-parameter-for-octavia-pools-f0a23436d826b313.yaml b/releasenotes/notes/add-tls_enabled-parameter-for-octavia-pools-f0a23436d826b313.yaml
new file mode 100644
index 0000000..e3cc867
--- /dev/null
+++ b/releasenotes/notes/add-tls_enabled-parameter-for-octavia-pools-f0a23436d826b313.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add ``tls_enabled`` parameter for Octavia pools, it can be used to enable
+    TLS communications between a load balancer and its member servers.
diff --git a/releasenotes/notes/add-unified-limit-5ac334a08e137a70.yaml b/releasenotes/notes/add-unified-limit-5ac334a08e137a70.yaml
new file mode 100644
index 0000000..8bb65ec
--- /dev/null
+++ b/releasenotes/notes/add-unified-limit-5ac334a08e137a70.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added the unified limits basic CRUD methods. It includes two kinds of
+    resources: `registered_limit` and `limit`.
diff --git a/releasenotes/notes/add-user-group-assignment-9c419b6c6bfe392c.yaml b/releasenotes/notes/add-user-group-assignment-9c419b6c6bfe392c.yaml
new file mode 100644
index 0000000..266b5f3
--- /dev/null
+++ b/releasenotes/notes/add-user-group-assignment-9c419b6c6bfe392c.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add support for user group assignments in identity service.
diff --git a/releasenotes/notes/add-user-message-to-shared-file-85d7bbccf8347c4f.yaml b/releasenotes/notes/add-user-message-to-shared-file-85d7bbccf8347c4f.yaml
new file mode 100644
index 0000000..b4d4492
--- /dev/null
+++ b/releasenotes/notes/add-user-message-to-shared-file-85d7bbccf8347c4f.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support to list, get, and delete user messages
+    on the shared file system service.
diff --git a/releasenotes/notes/add-volume-attachment-support-b5f9a9e78ba88355.yaml b/releasenotes/notes/add-volume-attachment-support-b5f9a9e78ba88355.yaml
new file mode 100644
index 0000000..d540fd0
--- /dev/null
+++ b/releasenotes/notes/add-volume-attachment-support-b5f9a9e78ba88355.yaml
@@ -0,0 +1,11 @@
+---
+features:
+  - |
+    Added support for:
+
+    * Create Attachment
+    * Update Attachment
+    * List Attachment
+    * Get Attachment
+    * Delete Attachment
+    * Complete Attachment
diff --git a/releasenotes/notes/add-volume-extend-support-86e5c8cff5d6874e.yaml b/releasenotes/notes/add-volume-extend-support-86e5c8cff5d6874e.yaml
new file mode 100644
index 0000000..b0816fb
--- /dev/null
+++ b/releasenotes/notes/add-volume-extend-support-86e5c8cff5d6874e.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Add the ability to extend a volume size with extend_volume method.
diff --git a/releasenotes/notes/add-volume-snapshot-manage-unmanage-support-fc0be2a3fb4427d1.yaml b/releasenotes/notes/add-volume-snapshot-manage-unmanage-support-fc0be2a3fb4427d1.yaml
new file mode 100644
index 0000000..b54379a
--- /dev/null
+++ b/releasenotes/notes/add-volume-snapshot-manage-unmanage-support-fc0be2a3fb4427d1.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support for volume snapshot manage and volume
+    snapshot unmanage.
diff --git a/releasenotes/notes/add-volume-transfer-support-28bf34a243d96e1b.yaml b/releasenotes/notes/add-volume-transfer-support-28bf34a243d96e1b.yaml
new file mode 100644
index 0000000..40976dc
--- /dev/null
+++ b/releasenotes/notes/add-volume-transfer-support-28bf34a243d96e1b.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support for volume transfer create, find,
+    delete, get, list and accept.
diff --git a/releasenotes/notes/add-volume-type-update-b84f50b7fa3b061d.yaml b/releasenotes/notes/add-volume-type-update-b84f50b7fa3b061d.yaml
new file mode 100644
index 0000000..3e9f363
--- /dev/null
+++ b/releasenotes/notes/add-volume-type-update-b84f50b7fa3b061d.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Add support for updating block storage volume type objects.
diff --git a/releasenotes/notes/add_description_create_user-0ddc9a0ef4da840d.yaml b/releasenotes/notes/add_description_create_user-0ddc9a0ef4da840d.yaml
new file mode 100644
index 0000000..98dd190
--- /dev/null
+++ b/releasenotes/notes/add_description_create_user-0ddc9a0ef4da840d.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Add description parameter to create_user, available on Keystone v3
diff --git a/releasenotes/notes/add_designate_recordsets_support-69af0a6b317073e7.yaml b/releasenotes/notes/add_designate_recordsets_support-69af0a6b317073e7.yaml
new file mode 100644
index 0000000..0d46496
--- /dev/null
+++ b/releasenotes/notes/add_designate_recordsets_support-69af0a6b317073e7.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add support for Designate recordsets resources, with the
+    usual methods (search/list/get/create/update/delete).
diff --git a/releasenotes/notes/add_designate_zones_support-35fa9b8b09995b43.yaml b/releasenotes/notes/add_designate_zones_support-35fa9b8b09995b43.yaml
new file mode 100644
index 0000000..f5253af
--- /dev/null
+++ b/releasenotes/notes/add_designate_zones_support-35fa9b8b09995b43.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add support for Designate zones resources, with the
+    usual methods (search/list/get/create/update/delete).
diff --git a/releasenotes/notes/add_heat_tag_support-135aa43ba1dce3bb.yaml b/releasenotes/notes/add_heat_tag_support-135aa43ba1dce3bb.yaml
new file mode 100644
index 0000000..4e0a0ea
--- /dev/null
+++ b/releasenotes/notes/add_heat_tag_support-135aa43ba1dce3bb.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    Add tags support when creating a stack, as specified by the openstack
+    orchestration api at [1]
+
+    [1]https://developer.openstack.org/api-ref/orchestration/v1/#create-stack
diff --git a/releasenotes/notes/add_host_aggregate_support-471623faf45ec3c3.yaml b/releasenotes/notes/add_host_aggregate_support-471623faf45ec3c3.yaml
new file mode 100644
index 0000000..6a6ff37
--- /dev/null
+++ b/releasenotes/notes/add_host_aggregate_support-471623faf45ec3c3.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add support for host aggregates and host aggregate
+    membership.
diff --git a/releasenotes/notes/add_image_import_support-6cea2e7d7a781071.yaml b/releasenotes/notes/add_image_import_support-6cea2e7d7a781071.yaml
new file mode 100644
index 0000000..da0ffe5
--- /dev/null
+++ b/releasenotes/notes/add_image_import_support-6cea2e7d7a781071.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - Add ability to create image without upload data at the same time
+  - Add support for interoperable image import process as introduced in the
+    Image API v2.6 at [1]
+
+    [1]https://developer.openstack.org/api-ref/image/v2/index.html#interoperable-image-import
diff --git a/releasenotes/notes/add_influxdb_stats-665714d715302ad5.yaml b/releasenotes/notes/add_influxdb_stats-665714d715302ad5.yaml
new file mode 100644
index 0000000..f88ae11
--- /dev/null
+++ b/releasenotes/notes/add_influxdb_stats-665714d715302ad5.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add possibility to report API metrics into InfluxDB.
diff --git a/releasenotes/notes/add_magnum_baymodel_support-e35e5aab0b14ff75.yaml b/releasenotes/notes/add_magnum_baymodel_support-e35e5aab0b14ff75.yaml
new file mode 100644
index 0000000..21dbed6
--- /dev/null
+++ b/releasenotes/notes/add_magnum_baymodel_support-e35e5aab0b14ff75.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - Add support for Magnum baymodels, with the
+    usual methods (search/list/get/create/update/delete). Due to upcoming
+    rename in Magnum from baymodel to cluster_template, the shade
+    functionality uses the term cluster_template. However, baymodel aliases
+    are provided for each api call.
diff --git a/releasenotes/notes/add_magnum_services_support-3d95f9dcc60b5573.yaml b/releasenotes/notes/add_magnum_services_support-3d95f9dcc60b5573.yaml
new file mode 100644
index 0000000..3a32e3d
--- /dev/null
+++ b/releasenotes/notes/add_magnum_services_support-3d95f9dcc60b5573.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Add support for listing Magnum services.
diff --git a/releasenotes/notes/add_project_cleanup-39c3517b25a5372e.yaml b/releasenotes/notes/add_project_cleanup-39c3517b25a5372e.yaml
new file mode 100644
index 0000000..f99c66f
--- /dev/null
+++ b/releasenotes/notes/add_project_cleanup-39c3517b25a5372e.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    Project cleanup functionality. It provides a single method in the
+    connection object, which calls cleanup method in all supported services
+    (both part of the SDK itself and all "imported" in the runtime or through
+    the vendor_hook functionality). Cleanup is working in multiple threads
+    where possible (no dependencies between services).
diff --git a/releasenotes/notes/add_server_group_support-dfa472e3dae7d34d.yaml b/releasenotes/notes/add_server_group_support-dfa472e3dae7d34d.yaml
new file mode 100644
index 0000000..e903841
--- /dev/null
+++ b/releasenotes/notes/add_server_group_support-dfa472e3dae7d34d.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Adds support to create and delete server groups.
diff --git a/releasenotes/notes/add_support_port_binding_attrs-c70966724eb970f3.yaml b/releasenotes/notes/add_support_port_binding_attrs-c70966724eb970f3.yaml
new file mode 100644
index 0000000..bcee489
--- /dev/null
+++ b/releasenotes/notes/add_support_port_binding_attrs-c70966724eb970f3.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - Add support for query of port binding extended attributes including
+    'binding:host_id', 'binding:vnic_type', 'binding:vif_type',
+    'binding:vif_details', and 'binding:profile'.
diff --git a/releasenotes/notes/add_update_server-8761059d6de7e68b.yaml b/releasenotes/notes/add_update_server-8761059d6de7e68b.yaml
new file mode 100644
index 0000000..5bbe898
--- /dev/null
+++ b/releasenotes/notes/add_update_server-8761059d6de7e68b.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Add update_server method to update name or description of a server.
diff --git a/releasenotes/notes/add_update_service-28e590a7a7524053.yaml b/releasenotes/notes/add_update_service-28e590a7a7524053.yaml
new file mode 100644
index 0000000..ff3e7be
--- /dev/null
+++ b/releasenotes/notes/add_update_service-28e590a7a7524053.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - Add the ability to update a keystone service information. This feature is
+    not available on keystone v2.0. The new function, update_service(), allows
+    the user to update description, name of service, service type, and enabled
+    status.
diff --git a/releasenotes/notes/add_vendor_hook-e87b6afb7f215a30.yaml b/releasenotes/notes/add_vendor_hook-e87b6afb7f215a30.yaml
new file mode 100644
index 0000000..1ef8c2b
--- /dev/null
+++ b/releasenotes/notes/add_vendor_hook-e87b6afb7f215a30.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    Add possibility to automatically invoke vendor hooks. This can be done
+    either through extending profile (vendor_hook), or passing `vendor_hook`
+    parameter to the connection. The format of the vendor_hook is the same as
+    in the setuptools (module.name:function_name). The hook will get connection
+    as the only parameter.
diff --git a/releasenotes/notes/added-federation-support-3b65e531e57211f5.yaml b/releasenotes/notes/added-federation-support-3b65e531e57211f5.yaml
new file mode 100644
index 0000000..8c7880e
--- /dev/null
+++ b/releasenotes/notes/added-federation-support-3b65e531e57211f5.yaml
@@ -0,0 +1,5 @@
+---
+features:
+    - |
+      Adds support to create and manage Identity v3 Federation resources -
+      Specifically, Identity Providers, Mappings and Federation Protocols.
diff --git a/releasenotes/notes/added-senlin-support-1eb4e47c31258f66.yaml b/releasenotes/notes/added-senlin-support-1eb4e47c31258f66.yaml
new file mode 100644
index 0000000..ccc38b2
--- /dev/null
+++ b/releasenotes/notes/added-senlin-support-1eb4e47c31258f66.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Added support for senlin
diff --git a/releasenotes/notes/allocation-api-04f6b3b7a0ccc850.yaml b/releasenotes/notes/allocation-api-04f6b3b7a0ccc850.yaml
new file mode 100644
index 0000000..8ca573f
--- /dev/null
+++ b/releasenotes/notes/allocation-api-04f6b3b7a0ccc850.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Adds support for the baremetal allocation API.
diff --git a/releasenotes/notes/allocation-update-910c36c1290e5121.yaml b/releasenotes/notes/allocation-update-910c36c1290e5121.yaml
new file mode 100644
index 0000000..6b9147a
--- /dev/null
+++ b/releasenotes/notes/allocation-update-910c36c1290e5121.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Allows updating ``name`` and ``extra`` fields of a baremetal allocation.
diff --git a/releasenotes/notes/alternate-auth-context-3939f1492a0e1355.yaml b/releasenotes/notes/alternate-auth-context-3939f1492a0e1355.yaml
new file mode 100644
index 0000000..e454f5b
--- /dev/null
+++ b/releasenotes/notes/alternate-auth-context-3939f1492a0e1355.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - Added methods for making new cloud connections
+    based on the current OpenStackCloud. This should enable working
+    more easily across projects or user accounts.
diff --git a/releasenotes/notes/always-detail-cluster-templates-3eb4b5744ba327ac.yaml b/releasenotes/notes/always-detail-cluster-templates-3eb4b5744ba327ac.yaml
new file mode 100644
index 0000000..cc98f8c
--- /dev/null
+++ b/releasenotes/notes/always-detail-cluster-templates-3eb4b5744ba327ac.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - Cluster Templates have data model and normalization
+    now. As a result, the detail parameter is now ignored
+    and detailed records are always returned.
diff --git a/releasenotes/notes/auth-url-vexxhost-8d63cd17bde21320.yaml b/releasenotes/notes/auth-url-vexxhost-8d63cd17bde21320.yaml
new file mode 100644
index 0000000..f32e1ec
--- /dev/null
+++ b/releasenotes/notes/auth-url-vexxhost-8d63cd17bde21320.yaml
@@ -0,0 +1,9 @@
+---
+fixes:
+  - |
+    The ``v3password`` ``auth_type`` implies that the ``auth_url`` given
+    is a versioned endpoint and so discovery is skipped for auth. Previously
+    the ``auth_type`` for Vexxhost had been set to ``v3password`` due to v2
+    being no longer available to give better errors to users. The ``auth_url``
+    was unfortunately left unversioned, so authentication ceased working. The
+    ``auth_url`` has been changed to the versioned endpoint.
diff --git a/releasenotes/notes/bail-on-failed-service-cf299c37d5647b08.yaml b/releasenotes/notes/bail-on-failed-service-cf299c37d5647b08.yaml
new file mode 100644
index 0000000..5f004f8
--- /dev/null
+++ b/releasenotes/notes/bail-on-failed-service-cf299c37d5647b08.yaml
@@ -0,0 +1,6 @@
+---
+upgrade:
+  - |
+    When a known service cannot be resolved to a supported version,
+    an exception is now thrown instead of just returning a blank
+    Proxy object. This allows returning sane errors to users.
diff --git a/releasenotes/notes/baremetal-configdrive-mkisofs-xorrisofs-075db4d7d80e5a13.yaml b/releasenotes/notes/baremetal-configdrive-mkisofs-xorrisofs-075db4d7d80e5a13.yaml
new file mode 100644
index 0000000..008459e
--- /dev/null
+++ b/releasenotes/notes/baremetal-configdrive-mkisofs-xorrisofs-075db4d7d80e5a13.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    When generating a config drive for baremetal, "mkisofs" and "xorrisofs"
+    are now supported beside the already available "genisoimage" binary.
+    This is useful on environment where the "genisoimage" binary is not
+    available but "mkisofs" and/or "xorrisofs" are available.
+
diff --git a/releasenotes/notes/baremetal-details-09b27fba82111cfb.yaml b/releasenotes/notes/baremetal-details-09b27fba82111cfb.yaml
new file mode 100644
index 0000000..f54d0db
--- /dev/null
+++ b/releasenotes/notes/baremetal-details-09b27fba82111cfb.yaml
@@ -0,0 +1,12 @@
+---
+features:
+  - |
+    The objects returned by baremetal detailed listing functions
+    (``connection.baremetal.{nodes,ports,chassis,port_groups}``) are now
+    fully functional, e.g. can be directly updated or deleted.
+deprecations:
+  - |
+    The following baremetal resource classes are no longer used and will be
+    removed in a future release: ``NodeDetail``, ``PortDetail``,
+    ``ChassisDetail`` and ``PortGroupDetail``. The regular ``Node``, ``Port``,
+    ``Chassis`` and ``PortGroup`` are now used instead.
diff --git a/releasenotes/notes/baremetal-errors-5cc871e8df4c9d95.yaml b/releasenotes/notes/baremetal-errors-5cc871e8df4c9d95.yaml
new file mode 100644
index 0000000..cc1fd8a
--- /dev/null
+++ b/releasenotes/notes/baremetal-errors-5cc871e8df4c9d95.yaml
@@ -0,0 +1,4 @@
+---
+fixes:
+  - |
+    Adds support for error messages from the bare metal service.
diff --git a/releasenotes/notes/baremetal-fields-1f6fbcd8bd1ea2aa.yaml b/releasenotes/notes/baremetal-fields-1f6fbcd8bd1ea2aa.yaml
new file mode 100644
index 0000000..1331176
--- /dev/null
+++ b/releasenotes/notes/baremetal-fields-1f6fbcd8bd1ea2aa.yaml
@@ -0,0 +1,4 @@
+---
+fixes:
+  - |
+    Fixes specifying fields when listing bare metal resources.
diff --git a/releasenotes/notes/baremetal-fields-624546fa533a8287.yaml b/releasenotes/notes/baremetal-fields-624546fa533a8287.yaml
new file mode 100644
index 0000000..053140d
--- /dev/null
+++ b/releasenotes/notes/baremetal-fields-624546fa533a8287.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Adds support for fetching specific fields when getting bare metal
+    `Node`, `Port`, `PortGroup`, `Chassis` and `Allocation` resources.
diff --git a/releasenotes/notes/baremetal-fields-convert-857b8804327f1e86.yaml b/releasenotes/notes/baremetal-fields-convert-857b8804327f1e86.yaml
new file mode 100644
index 0000000..07fa11f
--- /dev/null
+++ b/releasenotes/notes/baremetal-fields-convert-857b8804327f1e86.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Fixes conversion of the bare metal ``fields`` argument from SDK to
+    server-side field names (e.g. ``instance_id`` to ``instance_uuid``).
diff --git a/releasenotes/notes/baremetal-introspection-973351b3ee76309e.yaml b/releasenotes/notes/baremetal-introspection-973351b3ee76309e.yaml
new file mode 100644
index 0000000..7ab2885
--- /dev/null
+++ b/releasenotes/notes/baremetal-introspection-973351b3ee76309e.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Adds support for the bare metal introspection service.
diff --git a/releasenotes/notes/baremetal-maintenance-5cb95c6d898d4d72.yaml b/releasenotes/notes/baremetal-maintenance-5cb95c6d898d4d72.yaml
new file mode 100644
index 0000000..4a309b9
--- /dev/null
+++ b/releasenotes/notes/baremetal-maintenance-5cb95c6d898d4d72.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Implements updating the baremetal Node's ``maintenance_reason``.
diff --git a/releasenotes/notes/baremetal-patch-feebd96b1b92f3b9.yaml b/releasenotes/notes/baremetal-patch-feebd96b1b92f3b9.yaml
new file mode 100644
index 0000000..bcf4edb
--- /dev/null
+++ b/releasenotes/notes/baremetal-patch-feebd96b1b92f3b9.yaml
@@ -0,0 +1,13 @@
+---
+features:
+  - |
+    Adds support for changing bare metal resources by providing a JSON patch.
+    Adds the following calls to the bare metal proxy: ``patch_node``,
+    ``patch_port``, ``patch_port_group`` and ``patch_chassis``.
+deprecations:
+  - |
+    The ``set_node_instance_info`` call is deprecated, use ``patch_machine``
+    with the same arguments instead.
+  - |
+    The ``purge_node_instance_info`` call is deprecated, use ``patch_machine``
+    or ``update_machine`` instead.
diff --git a/releasenotes/notes/baremetal-ports-cc0f56ae0d192aba.yaml b/releasenotes/notes/baremetal-ports-cc0f56ae0d192aba.yaml
new file mode 100644
index 0000000..90adce1
--- /dev/null
+++ b/releasenotes/notes/baremetal-ports-cc0f56ae0d192aba.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    The ``OpenStackCloud`` bare metal NIC calls now support all microversions
+    supported by the SDK. Previously version 1.6 was hardcoded.
diff --git a/releasenotes/notes/baremetal-reservation-40327923092e9647.yaml b/releasenotes/notes/baremetal-reservation-40327923092e9647.yaml
new file mode 100644
index 0000000..9b5f770
--- /dev/null
+++ b/releasenotes/notes/baremetal-reservation-40327923092e9647.yaml
@@ -0,0 +1,10 @@
+---
+features:
+  - |
+    Added ``wait_for_node_reservation`` to the baremetal proxy.
+deprecations:
+  - |
+    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.
diff --git a/releasenotes/notes/baremetal-retired-fields-f56a4632ad4797d7.yaml b/releasenotes/notes/baremetal-retired-fields-f56a4632ad4797d7.yaml
new file mode 100644
index 0000000..115febd
--- /dev/null
+++ b/releasenotes/notes/baremetal-retired-fields-f56a4632ad4797d7.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Adds ``is_retired`` and ``retired_reason`` to the baremetal Node schema.
\ No newline at end of file
diff --git a/releasenotes/notes/baremetal-retries-804f553b4e22b3bf.yaml b/releasenotes/notes/baremetal-retries-804f553b4e22b3bf.yaml
new file mode 100644
index 0000000..b54dc1f
--- /dev/null
+++ b/releasenotes/notes/baremetal-retries-804f553b4e22b3bf.yaml
@@ -0,0 +1,8 @@
+---
+fixes:
+  - |
+    Changes the ``baremetal.attach_vif_to_node`` call to retry HTTP CONFLICT
+    by default. While it's a valid error code when a VIF is already attached
+    to a node, the same code is also used when the target node is locked.
+    The latter happens more often, so the retries are now on by default and
+    can be disabled by setting ``retry_on_conflict`` to ``False``.
diff --git a/releasenotes/notes/baremetal-retries-ff8aa8f73fb97415.yaml b/releasenotes/notes/baremetal-retries-ff8aa8f73fb97415.yaml
new file mode 100644
index 0000000..c654c5b
--- /dev/null
+++ b/releasenotes/notes/baremetal-retries-ff8aa8f73fb97415.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    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).
diff --git a/releasenotes/notes/baremetal-traits-d1137318db33b8d1.yaml b/releasenotes/notes/baremetal-traits-d1137318db33b8d1.yaml
new file mode 100644
index 0000000..7e706e6
--- /dev/null
+++ b/releasenotes/notes/baremetal-traits-d1137318db33b8d1.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Implements add/remove/set traits API for bare metal nodes.
diff --git a/releasenotes/notes/baremetal-update-80effb38aae8e02d.yaml b/releasenotes/notes/baremetal-update-80effb38aae8e02d.yaml
new file mode 100644
index 0000000..45ddbb2
--- /dev/null
+++ b/releasenotes/notes/baremetal-update-80effb38aae8e02d.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Correct updating bare metal resources. Previously an incorrect body used
+    to be sent.
diff --git a/releasenotes/notes/baremetal-validate-ccce2a37d2a20d96.yaml b/releasenotes/notes/baremetal-validate-ccce2a37d2a20d96.yaml
new file mode 100644
index 0000000..7783c2f
--- /dev/null
+++ b/releasenotes/notes/baremetal-validate-ccce2a37d2a20d96.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Adds support for bare metal node validation to the bare metal proxy.
diff --git a/releasenotes/notes/baremetal-vif-122457118c722a9b.yaml b/releasenotes/notes/baremetal-vif-122457118c722a9b.yaml
new file mode 100644
index 0000000..061d703
--- /dev/null
+++ b/releasenotes/notes/baremetal-vif-122457118c722a9b.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Implements VIF attach/detach API for bare metal nodes.
diff --git a/releasenotes/notes/baremetal-wait-e4571cdb150b188a.yaml b/releasenotes/notes/baremetal-wait-e4571cdb150b188a.yaml
new file mode 100644
index 0000000..c104a7f
--- /dev/null
+++ b/releasenotes/notes/baremetal-wait-e4571cdb150b188a.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+  - |
+    The baremetal calls ``wait_for_nodes_provision_state``,
+    ``wait_for_allocation`` and the baremetal introspection call
+    ``wait_for_introspection`` now raise ``ResourceFailure`` on reaching
+    an error state instead of a generic ``SDKException``.
diff --git a/releasenotes/notes/basic-api-cache-4ad8cf2754b004d1.yaml b/releasenotes/notes/basic-api-cache-4ad8cf2754b004d1.yaml
new file mode 100644
index 0000000..7ac9f23
--- /dev/null
+++ b/releasenotes/notes/basic-api-cache-4ad8cf2754b004d1.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add possibility to cache GET requests using dogpile cache.
diff --git a/releasenotes/notes/block-storage-backup-5886e91fd6e423bf.yaml b/releasenotes/notes/block-storage-backup-5886e91fd6e423bf.yaml
new file mode 100644
index 0000000..d6f8250
--- /dev/null
+++ b/releasenotes/notes/block-storage-backup-5886e91fd6e423bf.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Implement block-storage.v2 Backup resource with restore functionality.
diff --git a/releasenotes/notes/block-storage-init-return-95b465b4755f03ca.yaml b/releasenotes/notes/block-storage-init-return-95b465b4755f03ca.yaml
new file mode 100644
index 0000000..6650ac8
--- /dev/null
+++ b/releasenotes/notes/block-storage-init-return-95b465b4755f03ca.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    Methods ``openstack.block_storage.v3.volume.Volume.init_attachment`` and
+    ``block_storage.init_volume_attachment`` now return the results of the POST
+    request instead of None. This replicates the behaviour of cinderclient; the
+    returned data is used by nova and ironic for managing volume attachments.
\ No newline at end of file
diff --git a/releasenotes/notes/block-storage-qs-0e3b69be2e709b65.yaml b/releasenotes/notes/block-storage-qs-0e3b69be2e709b65.yaml
new file mode 100644
index 0000000..01adc56
--- /dev/null
+++ b/releasenotes/notes/block-storage-qs-0e3b69be2e709b65.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add block storage QuotaSet resource and proxy methods.
diff --git a/releasenotes/notes/block-storage-v3-9798d584d088c048.yaml b/releasenotes/notes/block-storage-v3-9798d584d088c048.yaml
new file mode 100644
index 0000000..0ce997f
--- /dev/null
+++ b/releasenotes/notes/block-storage-v3-9798d584d088c048.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Added support for block storage v3.
diff --git a/releasenotes/notes/block_storage-type_encryption-121f8a222c822fb5.yaml b/releasenotes/notes/block_storage-type_encryption-121f8a222c822fb5.yaml
new file mode 100644
index 0000000..deed229
--- /dev/null
+++ b/releasenotes/notes/block_storage-type_encryption-121f8a222c822fb5.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Add support for block storage type encryption parameters.
diff --git a/releasenotes/notes/boot-on-server-group-a80e51850db24b3d.yaml b/releasenotes/notes/boot-on-server-group-a80e51850db24b3d.yaml
new file mode 100644
index 0000000..4f4a39c
--- /dev/null
+++ b/releasenotes/notes/boot-on-server-group-a80e51850db24b3d.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Added ``group`` parameter to create_server to allow
+    booting a server into a specific server group.
diff --git a/releasenotes/notes/bug-2001080-de52ead3c5466792.yaml b/releasenotes/notes/bug-2001080-de52ead3c5466792.yaml
new file mode 100644
index 0000000..08f83f0
--- /dev/null
+++ b/releasenotes/notes/bug-2001080-de52ead3c5466792.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+  - |
+    [`bug 2001080 <https://storyboard.openstack.org/#!/story/2001080>`_]
+    Project update will only update the enabled field of projects when
+    ``enabled=True`` or ``enabled=False`` is passed explicitly. The previous
+    behavior had ``enabled=True`` as the default.
diff --git a/releasenotes/notes/bug-2010898-430da335e4df0efe.yaml b/releasenotes/notes/bug-2010898-430da335e4df0efe.yaml
new file mode 100644
index 0000000..2d09fc7
--- /dev/null
+++ b/releasenotes/notes/bug-2010898-430da335e4df0efe.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    [`bug 2010898 <https://storyboard.openstack.org/#!/story/2010898>`_]
+    Fix Swift endpoint url handling to determine info/caps url
diff --git a/releasenotes/notes/cache-auth-in-keyring-773dd5f682cd1610.yaml b/releasenotes/notes/cache-auth-in-keyring-773dd5f682cd1610.yaml
new file mode 100644
index 0000000..8e35c04
--- /dev/null
+++ b/releasenotes/notes/cache-auth-in-keyring-773dd5f682cd1610.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support for optionally caching auth information int the local
+    keyring. Requires the installation of the python ``keyring`` package.
diff --git a/releasenotes/notes/cache-in-use-volumes-c7fa8bb378106fe3.yaml b/releasenotes/notes/cache-in-use-volumes-c7fa8bb378106fe3.yaml
new file mode 100644
index 0000000..4ac0b61
--- /dev/null
+++ b/releasenotes/notes/cache-in-use-volumes-c7fa8bb378106fe3.yaml
@@ -0,0 +1,4 @@
+---
+fixes:
+  - Fixed caching the volume list when volumes are in
+    use.
diff --git a/releasenotes/notes/catch-up-release-notes-e385fad34e9f3d6e.yaml b/releasenotes/notes/catch-up-release-notes-e385fad34e9f3d6e.yaml
new file mode 100644
index 0000000..251fdb9
--- /dev/null
+++ b/releasenotes/notes/catch-up-release-notes-e385fad34e9f3d6e.yaml
@@ -0,0 +1,15 @@
+---
+features:
+  - Swiftclient instantiation now provides authentication
+    information so that long lived swiftclient objects can
+    reauthenticate if necessary.
+  - Add support for explicit v2password auth type.
+  - Add SSL support to VEXXHOST vendor profile.
+  - Add zetta.io cloud vendor profile.
+fixes:
+  - Fix bug where project_domain_{name,id} was set even
+    if project_{name,id} was not set.
+other:
+  - HPCloud vendor profile removed due to cloud shutdown.
+  - RunAbove vendor profile removed due to migration to
+    OVH.
diff --git a/releasenotes/notes/change-attach-vol-return-value-4834a1f78392abb1.yaml b/releasenotes/notes/change-attach-vol-return-value-4834a1f78392abb1.yaml
new file mode 100644
index 0000000..19db8eb
--- /dev/null
+++ b/releasenotes/notes/change-attach-vol-return-value-4834a1f78392abb1.yaml
@@ -0,0 +1,8 @@
+---
+upgrade:
+  - |
+    The ``attach_volume`` method now always returns a ``volume_attachment``
+    object. Previously, ``attach_volume`` would return a ``volume`` object if
+    it was called with ``wait=True`` and a ``volume_attachment`` object
+    otherwise.
+
diff --git a/releasenotes/notes/cinder_volume_backups_support-6f7ceab440853833.yaml b/releasenotes/notes/cinder_volume_backups_support-6f7ceab440853833.yaml
new file mode 100644
index 0000000..380b653
--- /dev/null
+++ b/releasenotes/notes/cinder_volume_backups_support-6f7ceab440853833.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add support for Cinder volume backup resources, with the
+    usual methods (search/list/get/create/delete).
diff --git a/releasenotes/notes/cinderv2-norm-fix-037189c60b43089f.yaml b/releasenotes/notes/cinderv2-norm-fix-037189c60b43089f.yaml
new file mode 100644
index 0000000..0847ee6
--- /dev/null
+++ b/releasenotes/notes/cinderv2-norm-fix-037189c60b43089f.yaml
@@ -0,0 +1,3 @@
+---
+fixes:
+  - Fixed the volume normalization function when used with cinder v2.
diff --git a/releasenotes/notes/cleanup-objects-f99aeecf22ac13dd.yaml b/releasenotes/notes/cleanup-objects-f99aeecf22ac13dd.yaml
new file mode 100644
index 0000000..e1e0752
--- /dev/null
+++ b/releasenotes/notes/cleanup-objects-f99aeecf22ac13dd.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - If shade has to create objects in swift to upload an
+    image, it will now delete those objects upon successful
+    image creation as they are no longer needed. They will
+    also be deleted on fatal import errors.
diff --git a/releasenotes/notes/cloud-profile-status-e0d29b5e2f10e95c.yaml b/releasenotes/notes/cloud-profile-status-e0d29b5e2f10e95c.yaml
new file mode 100644
index 0000000..b447ed0
--- /dev/null
+++ b/releasenotes/notes/cloud-profile-status-e0d29b5e2f10e95c.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - Add a field to vendor cloud profiles to indicate
+    active, deprecated and shutdown status.  A message to
+    the user is triggered when attempting to use cloud
+    with either deprecated or shutdown status.
diff --git a/releasenotes/notes/clustering-resource-deletion-bed869ba47c2aac1.yaml b/releasenotes/notes/clustering-resource-deletion-bed869ba47c2aac1.yaml
new file mode 100644
index 0000000..877a571
--- /dev/null
+++ b/releasenotes/notes/clustering-resource-deletion-bed869ba47c2aac1.yaml
@@ -0,0 +1,13 @@
+---
+fixes:
+  - |
+    Fixed a regression in deleting Node and Cluster resources
+    in clustering caused by the addition of the ``location``
+    property to all resource objects. Previously the delete
+    calls had directly returned the ``location`` field
+    returned in the headers from the clustering service pointing
+    to an Action resource that could be fetched to get status
+    on the delete operation. The delete calls now return an
+    Action resource directly that is correctly constructed
+    so that ``wait_for_status`` and ``wait_for_deleted``
+    work as expected.
diff --git a/releasenotes/notes/complete-aggregate-functions-45d5f2beeeac2b48.yaml b/releasenotes/notes/complete-aggregate-functions-45d5f2beeeac2b48.yaml
new file mode 100644
index 0000000..3fafe61
--- /dev/null
+++ b/releasenotes/notes/complete-aggregate-functions-45d5f2beeeac2b48.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - Complete compute.aggregate functions to the latest state
+fixes:
+  - aggregate.deleted property is renamed to 'is_deleted' to comply with the
+    naming convention
diff --git a/releasenotes/notes/compute-microversion-2-17-b05cb87580b8d56a.yaml b/releasenotes/notes/compute-microversion-2-17-b05cb87580b8d56a.yaml
new file mode 100644
index 0000000..e8f8c51
--- /dev/null
+++ b/releasenotes/notes/compute-microversion-2-17-b05cb87580b8d56a.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Add support for Compute API microversion 2.17, which allows admins to
+    trigger a crash dump for a server. This can be useful for debugging
+    misbehaving guests.
diff --git a/releasenotes/notes/compute-microversion-2-73-abae1d0c3740f76e.yaml b/releasenotes/notes/compute-microversion-2-73-abae1d0c3740f76e.yaml
new file mode 100644
index 0000000..f3d89c2
--- /dev/null
+++ b/releasenotes/notes/compute-microversion-2-73-abae1d0c3740f76e.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add support for Compute API microversion 2.73, which allows admins to
+    specify a reason when locking a server.
diff --git a/releasenotes/notes/compute-microversion-2-89-8c5187cc3bf6bd02.yaml b/releasenotes/notes/compute-microversion-2-89-8c5187cc3bf6bd02.yaml
new file mode 100644
index 0000000..e22a340
--- /dev/null
+++ b/releasenotes/notes/compute-microversion-2-89-8c5187cc3bf6bd02.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    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.
diff --git a/releasenotes/notes/compute-quota-set-e664412d089945d2.yaml b/releasenotes/notes/compute-quota-set-e664412d089945d2.yaml
new file mode 100644
index 0000000..63f2389
--- /dev/null
+++ b/releasenotes/notes/compute-quota-set-e664412d089945d2.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add support for QuotaSet in the compute service.
diff --git a/releasenotes/notes/compute-quotas-b07a0f24dfac8444.yaml b/releasenotes/notes/compute-quotas-b07a0f24dfac8444.yaml
new file mode 100644
index 0000000..6e17035
--- /dev/null
+++ b/releasenotes/notes/compute-quotas-b07a0f24dfac8444.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Add new APIs, OperatorCloud.get_compute_quotas(), OperatorCloud.set_compute_quotas() and OperatorCloud.delete_compute_quotas() to manage nova quotas for projects and users
\ No newline at end of file
diff --git a/releasenotes/notes/compute-restore-server-020bf091acc9f8df.yaml b/releasenotes/notes/compute-restore-server-020bf091acc9f8df.yaml
new file mode 100644
index 0000000..9269c47
--- /dev/null
+++ b/releasenotes/notes/compute-restore-server-020bf091acc9f8df.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    The ``openstack.compute.v2.server.Server`` object now provides a
+    ``restore`` method to restore it from a soft-deleted state, while the
+    compute proxy method provides an equivalent ``restore_server`` method.
diff --git a/releasenotes/notes/compute-service-zone-2b25ec705b0156c4.yaml b/releasenotes/notes/compute-service-zone-2b25ec705b0156c4.yaml
new file mode 100644
index 0000000..ea69aef
--- /dev/null
+++ b/releasenotes/notes/compute-service-zone-2b25ec705b0156c4.yaml
@@ -0,0 +1,7 @@
+---
+upgrade:
+  - |
+    The ``zone`` attribute on compute ``Service`` objects
+    has been renamed to ``availability_zone`` to match all
+    of the other resources, and also to better integrate
+    with the ``Resource.location`` attribute.
diff --git a/releasenotes/notes/compute-usage-defaults-5f5b2936f17ff400.yaml b/releasenotes/notes/compute-usage-defaults-5f5b2936f17ff400.yaml
new file mode 100644
index 0000000..7ca6b37
--- /dev/null
+++ b/releasenotes/notes/compute-usage-defaults-5f5b2936f17ff400.yaml
@@ -0,0 +1,9 @@
+---
+features:
+  - get_compute_usage now has a default value for the start
+    parameter of 2010-07-06. That was the date the OpenStack
+    project started. It's completely impossible for someone
+    to have Nova usage data that goes back further in time.
+    Also, both the start and end date parameters now also
+    accept strings which will be parsed and timezones will
+    be properly converted to UTC which is what Nova expects.
diff --git a/releasenotes/notes/compute-volume-attachment-proxy-method-rework-dc35fe9ca3af1c16.yaml b/releasenotes/notes/compute-volume-attachment-proxy-method-rework-dc35fe9ca3af1c16.yaml
new file mode 100644
index 0000000..5962e6e
--- /dev/null
+++ b/releasenotes/notes/compute-volume-attachment-proxy-method-rework-dc35fe9ca3af1c16.yaml
@@ -0,0 +1,13 @@
+---
+upgrade:
+  - |
+    The signatures of the various volume attachment-related methods in the
+    compute API proxy layer have changed. These were previously incomplete and
+    did not function as expected in many scenarios. Some callers may need to be
+    reworked. The affected proxy methods are:
+
+    - ``create_volume_attachment``
+    - ``delete_volume_attachment``
+    - ``update_volume_attachment``
+    - ``get_volume_attachment``
+    - ``volume_attachments``
diff --git a/releasenotes/notes/conf-object-ctr-c0e1da0a67dad841.yaml b/releasenotes/notes/conf-object-ctr-c0e1da0a67dad841.yaml
new file mode 100644
index 0000000..60bb035
--- /dev/null
+++ b/releasenotes/notes/conf-object-ctr-c0e1da0a67dad841.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Added the ability to create a ``Connection`` from an ``oslo.config``
+    ``CONF`` object. This is primarily intended to be used by OpenStack
+    services using SDK for inter-service communication.
diff --git a/releasenotes/notes/config-aliases-0f6297eafd05c07c.yaml b/releasenotes/notes/config-aliases-0f6297eafd05c07c.yaml
new file mode 100644
index 0000000..d398c2a
--- /dev/null
+++ b/releasenotes/notes/config-aliases-0f6297eafd05c07c.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    Config values now support service-type aliases. The correct config names
+    are based on the official service type, such as
+    ``block_storage_api_version``, but with this change, legacy aliases such
+    as ``volume_api_version`` are also supported.
diff --git a/releasenotes/notes/config-flavor-specs-ca712e17971482b6.yaml b/releasenotes/notes/config-flavor-specs-ca712e17971482b6.yaml
new file mode 100644
index 0000000..4bb1e90
--- /dev/null
+++ b/releasenotes/notes/config-flavor-specs-ca712e17971482b6.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Adds ability to add a config setting to clouds.yaml to
+    disable fetching extra_specs from flavors.
diff --git a/releasenotes/notes/configdrive-f8ca9f94b2981db7.yaml b/releasenotes/notes/configdrive-f8ca9f94b2981db7.yaml
new file mode 100644
index 0000000..4337a54
--- /dev/null
+++ b/releasenotes/notes/configdrive-f8ca9f94b2981db7.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Supports Bare Metal API version 1.56, which allows building a config drive
+    on the server side from a provided dictionary.
diff --git a/releasenotes/notes/container-search-b0f4253ce2deeda5.yaml b/releasenotes/notes/container-search-b0f4253ce2deeda5.yaml
new file mode 100644
index 0000000..3587a7b
--- /dev/null
+++ b/releasenotes/notes/container-search-b0f4253ce2deeda5.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Containers are now searchable both with a JMESPath expression or a dict of
+    container attributes via the
+    ``openstack.connection.Connection.search_containers`` function.
diff --git a/releasenotes/notes/create-object-data-870cb543543aa983.yaml b/releasenotes/notes/create-object-data-870cb543543aa983.yaml
new file mode 100644
index 0000000..4e02550
--- /dev/null
+++ b/releasenotes/notes/create-object-data-870cb543543aa983.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add a data parameter to ``openstack.connection.Connection.create_object``
+    so that data can be passed in directly instead of through a file.
diff --git a/releasenotes/notes/create-object-directory-98e2cae175cc5082.yaml b/releasenotes/notes/create-object-directory-98e2cae175cc5082.yaml
new file mode 100644
index 0000000..08cce16
--- /dev/null
+++ b/releasenotes/notes/create-object-directory-98e2cae175cc5082.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    Added a ``create_directory_marker_object``' method to allow for easy
+    creation of zero-byte 'directory' marker objects. These are not needed
+    in most cases, but on some clouds they are used by Static
+    Web and Web Listings in swift to facilitate directory traversal.
diff --git a/releasenotes/notes/create-stack-fix-12dbb59a48ac7442.yaml b/releasenotes/notes/create-stack-fix-12dbb59a48ac7442.yaml
new file mode 100644
index 0000000..35bb8c0
--- /dev/null
+++ b/releasenotes/notes/create-stack-fix-12dbb59a48ac7442.yaml
@@ -0,0 +1,4 @@
+---
+fixes:
+  - The create_stack() call was fixed to call the correct iterator
+    method and to return the updated stack object when waiting.
diff --git a/releasenotes/notes/create-subnet-by-subnetpool-eba1129c67ed4d96.yaml b/releasenotes/notes/create-subnet-by-subnetpool-eba1129c67ed4d96.yaml
new file mode 100644
index 0000000..bb7127a
--- /dev/null
+++ b/releasenotes/notes/create-subnet-by-subnetpool-eba1129c67ed4d96.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support for specifying the subnetpool to use when creating subnets
+    (``subnetpool_name_or_id``)
diff --git a/releasenotes/notes/create_server_network_fix-c4a56b31d2850a4b.yaml b/releasenotes/notes/create_server_network_fix-c4a56b31d2850a4b.yaml
new file mode 100644
index 0000000..9f9bd54
--- /dev/null
+++ b/releasenotes/notes/create_server_network_fix-c4a56b31d2850a4b.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - The create_server() API call would not use the supplied 'network'
+    parameter if the 'nics' parameter was also supplied, even though it would
+    be an empty list. It now uses 'network' if 'nics' is not supplied or if
+    it is an empty list.
diff --git a/releasenotes/notes/create_service_norm-319a97433d68fa6a.yaml b/releasenotes/notes/create_service_norm-319a97433d68fa6a.yaml
new file mode 100644
index 0000000..2f6d018
--- /dev/null
+++ b/releasenotes/notes/create_service_norm-319a97433d68fa6a.yaml
@@ -0,0 +1,3 @@
+---
+fixes:
+  - The returned data from a create_service() call was not being normalized.
diff --git a/releasenotes/notes/cron_triggers_proxy-51aa89e91bbb9798.yaml b/releasenotes/notes/cron_triggers_proxy-51aa89e91bbb9798.yaml
new file mode 100644
index 0000000..c9ec391
--- /dev/null
+++ b/releasenotes/notes/cron_triggers_proxy-51aa89e91bbb9798.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add workflow CronTrigger resource and proxy methods.
diff --git a/releasenotes/notes/data-model-cf50d86982646370.yaml b/releasenotes/notes/data-model-cf50d86982646370.yaml
new file mode 100644
index 0000000..66a814a
--- /dev/null
+++ b/releasenotes/notes/data-model-cf50d86982646370.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - Explicit data model contracts are now defined for
+    Flavors, Images, Security Groups, Security Group Rules,
+    and Servers.
+  - Resources with data model contracts are now being returned with
+    'location' attribute. The location carries cloud name, region
+    name and information about the project that owns the resource.
diff --git a/releasenotes/notes/default-cloud-7ee0bcb9e5dd24b9.yaml b/releasenotes/notes/default-cloud-7ee0bcb9e5dd24b9.yaml
new file mode 100644
index 0000000..49aba3c
--- /dev/null
+++ b/releasenotes/notes/default-cloud-7ee0bcb9e5dd24b9.yaml
@@ -0,0 +1,7 @@
+---
+issues:
+  - If there was only one cloud defined in clouds.yaml
+    os-client-config was requiring the cloud parameter
+    be passed. This is inconsistent with how the envvars
+    cloud works which WILL work without setting the cloud
+    parameter if it's the only cloud.
diff --git a/releasenotes/notes/default-microversion-b2401727cb591002.yaml b/releasenotes/notes/default-microversion-b2401727cb591002.yaml
new file mode 100644
index 0000000..3ef8ad9
--- /dev/null
+++ b/releasenotes/notes/default-microversion-b2401727cb591002.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    Versions set in config via ``*_api_version`` or ``OS_*_API_VERSION``
+    that have a ``.`` in them will be also passed as the default microversion
+    to the Adapter constructor. An additional config option,
+    ``*_default_microversion`` has been added to support being more explicit.
diff --git a/releasenotes/notes/delete-autocreated-1839187b0aa35022.yaml b/releasenotes/notes/delete-autocreated-1839187b0aa35022.yaml
new file mode 100644
index 0000000..a0c2f8d
--- /dev/null
+++ b/releasenotes/notes/delete-autocreated-1839187b0aa35022.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - Added new method, delete_autocreated_image_objects
+    that can be used to delete any leaked objects shade
+    may have created on behalf of the user.
diff --git a/releasenotes/notes/delete-image-objects-9d4b4e0fff36a23f.yaml b/releasenotes/notes/delete-image-objects-9d4b4e0fff36a23f.yaml
new file mode 100644
index 0000000..00ce499
--- /dev/null
+++ b/releasenotes/notes/delete-image-objects-9d4b4e0fff36a23f.yaml
@@ -0,0 +1,18 @@
+---
+fixes:
+  - Delete swift objects uploaded in service of uploading images
+    at the time that the corresponding image is deleted. On some clouds,
+    image uploads are accomplished by uploading the image to swift and
+    then running a task-import. As shade does this action on behalf of the
+    user, it is not reasonable to assume that the user would then be aware
+    of or manage the swift objects shade created, which led to an ongoing
+    leak of swift objects.
+  - Upload swift Large Objects as Static Large Objects by default. Shade
+    automatically uploads objects as Large Objects when they are over a
+    segment_size threshold. It had been doing this as Dynamic Large Objects,
+    which sound great, but which have the downside of not deleting their
+    sub-segments when the primary object is deleted. Since nothing in the
+    shade interface exposes that the object was segmented, the user would not
+    know they would also need to find and delete the segments. Instead, we
+    now upload as Static Large Objects which behave as expected and delete
+    segments when the object is deleted.
diff --git a/releasenotes/notes/delete-obj-return-a3ecf0415b7a2989.yaml b/releasenotes/notes/delete-obj-return-a3ecf0415b7a2989.yaml
new file mode 100644
index 0000000..381bcb9
--- /dev/null
+++ b/releasenotes/notes/delete-obj-return-a3ecf0415b7a2989.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - The delete_object() method was not returning True/False,
+    similar to other delete methods. It is now consistent with
+    the other delete APIs.
diff --git a/releasenotes/notes/delete_project-399f9b3107014dde.yaml b/releasenotes/notes/delete_project-399f9b3107014dde.yaml
new file mode 100644
index 0000000..e4cf39f
--- /dev/null
+++ b/releasenotes/notes/delete_project-399f9b3107014dde.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - The delete_project() API now conforms to our standard of returning True
+    when the delete succeeds, or False when the project was not found. It
+    would previously raise an expection if the project was not found.
diff --git a/releasenotes/notes/deprecate-remote_ip_prefix-metering-label-rules-843d5a962e4e428c.yaml b/releasenotes/notes/deprecate-remote_ip_prefix-metering-label-rules-843d5a962e4e428c.yaml
new file mode 100644
index 0000000..351fb22
--- /dev/null
+++ b/releasenotes/notes/deprecate-remote_ip_prefix-metering-label-rules-843d5a962e4e428c.yaml
@@ -0,0 +1,7 @@
+---
+deprecations:
+  - |
+    Deprecate the use of 'remote_ip_prefix' in metering label rules, and it
+    will be removed in future releases. One should use instead the
+    'source_ip_prefix' and/or 'destination_ip_prefix' parameters. For more
+    details, you can check the spec: https://review.opendev.org/#/c/744702/.
diff --git a/releasenotes/notes/deprecated-compute-image-proxy-apis-986263f6aa1b1b25.yaml b/releasenotes/notes/deprecated-compute-image-proxy-apis-986263f6aa1b1b25.yaml
new file mode 100644
index 0000000..c63ff82
--- /dev/null
+++ b/releasenotes/notes/deprecated-compute-image-proxy-apis-986263f6aa1b1b25.yaml
@@ -0,0 +1,12 @@
+---
+deprecations:
+  - |
+    The following Compute service proxy methods are now deprecated:
+
+    * ``find_image``
+    * ``get_image``
+    * ``delete_image``
+    * ``images``
+
+    These are proxy APIs for the Image service. You should use the Image
+    service instead via the Image service proxy methods.
diff --git a/releasenotes/notes/deprecated-profile-762afdef0e8fc9e8.yaml b/releasenotes/notes/deprecated-profile-762afdef0e8fc9e8.yaml
new file mode 100644
index 0000000..e09d17c
--- /dev/null
+++ b/releasenotes/notes/deprecated-profile-762afdef0e8fc9e8.yaml
@@ -0,0 +1,6 @@
+---
+deprecations:
+  - |
+    ``openstack.profile.Profile`` has been deprecated and will be removed
+    in the ``1.0`` release. Users should use the functions in
+    ``openstack.config`` instead.
diff --git a/releasenotes/notes/disable-service-39df96ef8a817785.yaml b/releasenotes/notes/disable-service-39df96ef8a817785.yaml
new file mode 100644
index 0000000..aab0d58
--- /dev/null
+++ b/releasenotes/notes/disable-service-39df96ef8a817785.yaml
@@ -0,0 +1,12 @@
+---
+features:
+  - |
+    ``has_{service_type}`` is a boolean config option that allows
+    asserting that a given service does not exist or should not be used
+    in a given cloud. Doing this will now cause the corresponding
+    service ``Proxy`` object to not be created and in its place is
+    an object that will throw exceptions if used.
+  - |
+    ``{service_type}_disabled_reason`` is a new string config option
+    that can be set to indicate a reason why a service has been disabled.
+    This string will be used in exceptions or log warnings emitted.
diff --git a/releasenotes/notes/dns-domain-parameter-d3acfc3287a9d632.yaml b/releasenotes/notes/dns-domain-parameter-d3acfc3287a9d632.yaml
new file mode 100644
index 0000000..605cae2
--- /dev/null
+++ b/releasenotes/notes/dns-domain-parameter-d3acfc3287a9d632.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added dns_domain parameter into the create_network and update_network
+    methods.
diff --git a/releasenotes/notes/domain_operations_name_or_id-baba4cac5b67234d.yaml b/releasenotes/notes/domain_operations_name_or_id-baba4cac5b67234d.yaml
new file mode 100644
index 0000000..6d58e43
--- /dev/null
+++ b/releasenotes/notes/domain_operations_name_or_id-baba4cac5b67234d.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Added name_or_id parameter to domain operations, allowing
+    an admin to update/delete/get by domain name.
diff --git a/releasenotes/notes/drop-Resource-allow_get-attribute-fec75b551fb79465.yaml b/releasenotes/notes/drop-Resource-allow_get-attribute-fec75b551fb79465.yaml
new file mode 100644
index 0000000..422029a
--- /dev/null
+++ b/releasenotes/notes/drop-Resource-allow_get-attribute-fec75b551fb79465.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - |
+    The ``allow_get`` attribute of ``openstack.resource.Resource`` has been
+    removed. Use ``allow_fetch`` or ``allow_list`` instead.
diff --git a/releasenotes/notes/drop-formatter-deserialize-30b19956fb79bb8d.yaml b/releasenotes/notes/drop-formatter-deserialize-30b19956fb79bb8d.yaml
new file mode 100644
index 0000000..d8415bf
--- /dev/null
+++ b/releasenotes/notes/drop-formatter-deserialize-30b19956fb79bb8d.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - |
+    The ``openstack.format.Formatter`` class no longer defines a ``serialize``
+    method to override. This was unused and unneccessary complexity.
diff --git a/releasenotes/notes/drop-python27-b824f9ce51cb1ab7.yaml b/releasenotes/notes/drop-python27-b824f9ce51cb1ab7.yaml
new file mode 100644
index 0000000..80f1f86
--- /dev/null
+++ b/releasenotes/notes/drop-python27-b824f9ce51cb1ab7.yaml
@@ -0,0 +1,3 @@
+---
+prelude: >
+    As of this release, python v2 is neither tested nor supported.
diff --git a/releasenotes/notes/drop-senlin-cloud-layer-c06d496acc70b014.yaml b/releasenotes/notes/drop-senlin-cloud-layer-c06d496acc70b014.yaml
new file mode 100644
index 0000000..784d97c
--- /dev/null
+++ b/releasenotes/notes/drop-senlin-cloud-layer-c06d496acc70b014.yaml
@@ -0,0 +1,4 @@
+---
+upgrade:
+  - |
+    Cloud layer operations for Senlin service are dropped due to big amount of bugs there.
diff --git a/releasenotes/notes/dropped-python-3.5-b154887cce87947c.yaml b/releasenotes/notes/dropped-python-3.5-b154887cce87947c.yaml
new file mode 100644
index 0000000..a78c85f
--- /dev/null
+++ b/releasenotes/notes/dropped-python-3.5-b154887cce87947c.yaml
@@ -0,0 +1,4 @@
+---
+upgrade:
+  - |
+    Python 3.5 is no longer supported.
diff --git a/releasenotes/notes/dual-stack-networks-8a81941c97d28deb.yaml b/releasenotes/notes/dual-stack-networks-8a81941c97d28deb.yaml
new file mode 100644
index 0000000..70e28e7
--- /dev/null
+++ b/releasenotes/notes/dual-stack-networks-8a81941c97d28deb.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - Added support for dual stack networks where the IPv4 subnet and the
+    IPv6 subnet have opposite public/private qualities. It is now possible
+    to add configuration to clouds.yaml that will indicate that a network
+    is public for v6 and private for v4, which is otherwise very difficult
+    to correctly infer while setting server attributes like private_v4,
+    public_v4 and public_v6.
diff --git a/releasenotes/notes/endpoint-from-catalog-bad36cb0409a4e6a.yaml b/releasenotes/notes/endpoint-from-catalog-bad36cb0409a4e6a.yaml
new file mode 100644
index 0000000..2db7bc9
--- /dev/null
+++ b/releasenotes/notes/endpoint-from-catalog-bad36cb0409a4e6a.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add new method, 'endpoint_for' which will return the
+    raw endpoint for a given service from the current catalog.
diff --git a/releasenotes/notes/expose-client-side-rate-limit-ddb82df7cb92091c.yaml b/releasenotes/notes/expose-client-side-rate-limit-ddb82df7cb92091c.yaml
new file mode 100644
index 0000000..3d7b503
--- /dev/null
+++ b/releasenotes/notes/expose-client-side-rate-limit-ddb82df7cb92091c.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    Client-side rate limiting is now directly exposed via ``rate_limit``
+    and ``concurrency`` parameters. A single value can be given that applies
+    to all services, or a dict of service-type and value if different
+    client-side rate or concurrency limits should be used for different
+    services.
diff --git a/releasenotes/notes/false-not-attribute-error-49484d0fdc61f75d.yaml b/releasenotes/notes/false-not-attribute-error-49484d0fdc61f75d.yaml
new file mode 100644
index 0000000..e474e02
--- /dev/null
+++ b/releasenotes/notes/false-not-attribute-error-49484d0fdc61f75d.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - delete_image used to fail with an AttributeError if an invalid image
+    name or id was passed, rather than returning False which was the
+    intent. This is worthy of note because it's a behavior change, but the
+    previous behavior was a bug.
diff --git a/releasenotes/notes/feature-server-metadata-50caf18cec532160.yaml b/releasenotes/notes/feature-server-metadata-50caf18cec532160.yaml
new file mode 100644
index 0000000..e0a3f6c
--- /dev/null
+++ b/releasenotes/notes/feature-server-metadata-50caf18cec532160.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Add new APIs, OpenStackCloud.set_server_metadata() and OpenStackCloud.delete_server_metadata() to manage metadata of existing nova compute instances
diff --git a/releasenotes/notes/find_server-use-details-9a22e83ec6540c98.yaml b/releasenotes/notes/find_server-use-details-9a22e83ec6540c98.yaml
new file mode 100644
index 0000000..79cd7c2
--- /dev/null
+++ b/releasenotes/notes/find_server-use-details-9a22e83ec6540c98.yaml
@@ -0,0 +1,4 @@
+---
+fixes:
+  - |
+    Make sure find_server returns server details when looking up by name.
diff --git a/releasenotes/notes/fip_timeout-035c4bb3ff92fa1f.yaml b/releasenotes/notes/fip_timeout-035c4bb3ff92fa1f.yaml
new file mode 100644
index 0000000..2f98ebb
--- /dev/null
+++ b/releasenotes/notes/fip_timeout-035c4bb3ff92fa1f.yaml
@@ -0,0 +1,4 @@
+---
+fixes:
+  - When creating a new server, the timeout was not being passed through to
+    floating IP creation, which could also timeout.
diff --git a/releasenotes/notes/firewall-resources-c7589d288dd57e35.yaml b/releasenotes/notes/firewall-resources-c7589d288dd57e35.yaml
new file mode 100644
index 0000000..92e4a09
--- /dev/null
+++ b/releasenotes/notes/firewall-resources-c7589d288dd57e35.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Implement fwaas v2 resources for managing firewall groups, rules
+    and policies.
diff --git a/releasenotes/notes/fix-compat-with-old-keystoneauth-66e11ee9d008b962.yaml b/releasenotes/notes/fix-compat-with-old-keystoneauth-66e11ee9d008b962.yaml
new file mode 100644
index 0000000..80d09fb
--- /dev/null
+++ b/releasenotes/notes/fix-compat-with-old-keystoneauth-66e11ee9d008b962.yaml
@@ -0,0 +1,7 @@
+---
+issues:
+  - Fixed a regression when using latest os-client-config with
+    the keystoneauth from stable/newton. Although this isn't a
+    super common combination, the added feature that broke the
+    interaction is really not worthy of the incompatibility, so
+    a workaround was added.
diff --git a/releasenotes/notes/fix-config-drive-a148b7589f7e1022.yaml b/releasenotes/notes/fix-config-drive-a148b7589f7e1022.yaml
new file mode 100644
index 0000000..cd08b87
--- /dev/null
+++ b/releasenotes/notes/fix-config-drive-a148b7589f7e1022.yaml
@@ -0,0 +1,6 @@
+---
+issues:
+  - Fixed an issue where nodepool could cause config_drive
+    to be passed explicitly as None, which was getting directly
+    passed through to the JSON. Also fix the same logic for key_name
+    and scheduler_hints while we're in there.
diff --git a/releasenotes/notes/fix-delete-ips-1d4eebf7bc4d4733.yaml b/releasenotes/notes/fix-delete-ips-1d4eebf7bc4d4733.yaml
new file mode 100644
index 0000000..7d8199d
--- /dev/null
+++ b/releasenotes/notes/fix-delete-ips-1d4eebf7bc4d4733.yaml
@@ -0,0 +1,6 @@
+---
+issues:
+  - Fixed the logic in delete_ips and added regression
+    tests to cover it. The old logic was incorrectly looking
+    for floating ips using port syntax. It was also not
+    swallowing errors when it should.
diff --git a/releasenotes/notes/fix-dns-return-c810d5e6736322f1.yaml b/releasenotes/notes/fix-dns-return-c810d5e6736322f1.yaml
new file mode 100644
index 0000000..78b95de
--- /dev/null
+++ b/releasenotes/notes/fix-dns-return-c810d5e6736322f1.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+  - |
+    Fixed issue where the dns methods were returning False instead of None
+    when resources were not found.
+  - |
+    Fixed jsonification under python3.
diff --git a/releasenotes/notes/fix-endpoint-override-ac41baeec9549ab3.yaml b/releasenotes/notes/fix-endpoint-override-ac41baeec9549ab3.yaml
new file mode 100644
index 0000000..0496f24
--- /dev/null
+++ b/releasenotes/notes/fix-endpoint-override-ac41baeec9549ab3.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Fixed issue where ``endpoint_override`` settings were not getting passed
+    to the Adapter constructor in ``get_session_client``.
diff --git a/releasenotes/notes/fix-floating-ip-private-matching-84e369eee380a185.yaml b/releasenotes/notes/fix-floating-ip-private-matching-84e369eee380a185.yaml
new file mode 100644
index 0000000..6ff00ef
--- /dev/null
+++ b/releasenotes/notes/fix-floating-ip-private-matching-84e369eee380a185.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    Fixed an issue where an optimization in the logic to find floating ips
+    first when looking for public ip addresses broke finding the correct
+    private address.
diff --git a/releasenotes/notes/fix-for-microversion-70cd686b6d6e3fd0.yaml b/releasenotes/notes/fix-for-microversion-70cd686b6d6e3fd0.yaml
new file mode 100644
index 0000000..be402ef
--- /dev/null
+++ b/releasenotes/notes/fix-for-microversion-70cd686b6d6e3fd0.yaml
@@ -0,0 +1,14 @@
+---
+fixes:
+  - |
+    In April 2019 the microversion support for the Server resource was increased
+    to ``2.72``. Unfortunately, due to an issue with version discovery documents,
+    this increase never actually became effective. A fix is coming in ``3.17.2`` of
+    ``keystoneauth`` which will unbreak version discovery and cause the microversion
+    support to start working.
+upgrade:
+  - |
+    Due to the fix in microversion support in `keystoneauth`, Servers will be
+    fetched using microversion ``2.72``. Code that assumes the existence of a
+    ``flavor.id`` field in the Server record should be removed, as it does not exist
+    in new microversions and cannot be filled in behind the scenes.
diff --git a/releasenotes/notes/fix-image-hw_qemu_guest_agent-bf1147e52c84b5e8.yaml b/releasenotes/notes/fix-image-hw_qemu_guest_agent-bf1147e52c84b5e8.yaml
new file mode 100644
index 0000000..3d67a06
--- /dev/null
+++ b/releasenotes/notes/fix-image-hw_qemu_guest_agent-bf1147e52c84b5e8.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    hw_qemu_guest_agent attribute of the image is a string boolean with values
+    `yes` and `no`.
diff --git a/releasenotes/notes/fix-image-task-ae79502dd5c7ecba.yaml b/releasenotes/notes/fix-image-task-ae79502dd5c7ecba.yaml
new file mode 100644
index 0000000..8a6513b
--- /dev/null
+++ b/releasenotes/notes/fix-image-task-ae79502dd5c7ecba.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    Fixed a regression in image upload when the cloud uses the task
+    upload method. A refactor led to attempting to update the disk_format
+    and container_format values after the image had been imported.
diff --git a/releasenotes/notes/fix-list-networks-a592725df64c306e.yaml b/releasenotes/notes/fix-list-networks-a592725df64c306e.yaml
new file mode 100644
index 0000000..eecc255
--- /dev/null
+++ b/releasenotes/notes/fix-list-networks-a592725df64c306e.yaml
@@ -0,0 +1,3 @@
+---
+fixes:
+  - Fix for list_networks() ignoring any filters.
diff --git a/releasenotes/notes/fix-microversion-354dc70deb2b2f0b.yaml b/releasenotes/notes/fix-microversion-354dc70deb2b2f0b.yaml
new file mode 100644
index 0000000..3cb5745
--- /dev/null
+++ b/releasenotes/notes/fix-microversion-354dc70deb2b2f0b.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    Modify microversion handling. Microversion chosen by the client/user is
+    respected in the microversion  negotiation. For features, requiring
+    particular microversion, it would be ensured it is supported by the server
+    side and required microversion is <= chosen microversion, otherwise call
+    will be rejected.
diff --git a/releasenotes/notes/fix-missing-futures-a0617a1c1ce6e659.yaml b/releasenotes/notes/fix-missing-futures-a0617a1c1ce6e659.yaml
new file mode 100644
index 0000000..94a2ab8
--- /dev/null
+++ b/releasenotes/notes/fix-missing-futures-a0617a1c1ce6e659.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - Added missing dependency on futures library for python 2.
+    The depend was missed in testing due to it having been listed
+    in test-requirements already.
diff --git a/releasenotes/notes/fix-neutron-endpoint-mangling-a9dd89dd09bc71ec.yaml b/releasenotes/notes/fix-neutron-endpoint-mangling-a9dd89dd09bc71ec.yaml
new file mode 100644
index 0000000..0f4a2d1
--- /dev/null
+++ b/releasenotes/notes/fix-neutron-endpoint-mangling-a9dd89dd09bc71ec.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Fixed incorrect neutron endpoint mangling for the cases when the catalog
+    contains a versioned neutron endpoint.
diff --git a/releasenotes/notes/fix-os_auth_type-v3multifactor-049cf52573d9e00e.yaml b/releasenotes/notes/fix-os_auth_type-v3multifactor-049cf52573d9e00e.yaml
new file mode 100644
index 0000000..73a288c
--- /dev/null
+++ b/releasenotes/notes/fix-os_auth_type-v3multifactor-049cf52573d9e00e.yaml
@@ -0,0 +1,12 @@
+---
+fixes:
+  - |
+    It is now possible to configure ``v3multifactor`` auth type using
+    environment variables. For example:
+
+        export OS_AUTH_TYPE=v3multifactor
+        export OS_AUTH_METHODS=v3password,v3totp
+        export OS_USERNAME=admin
+        export OS_PASSWORD=password
+        export OS_PASSCODE=12345
+        openstack server list
diff --git a/releasenotes/notes/fix-properties-key-conflict-2161ca1faaad6731.yaml b/releasenotes/notes/fix-properties-key-conflict-2161ca1faaad6731.yaml
new file mode 100644
index 0000000..d681f93
--- /dev/null
+++ b/releasenotes/notes/fix-properties-key-conflict-2161ca1faaad6731.yaml
@@ -0,0 +1,4 @@
+---
+issues:
+  - Images in the cloud with a string property named "properties"
+    caused image normalization to bomb.
diff --git a/releasenotes/notes/fix-supplemental-fips-c9cd58aac12eb30e.yaml b/releasenotes/notes/fix-supplemental-fips-c9cd58aac12eb30e.yaml
new file mode 100644
index 0000000..66a5f33
--- /dev/null
+++ b/releasenotes/notes/fix-supplemental-fips-c9cd58aac12eb30e.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+  - Fixed an issue where shade could report a floating IP being attached
+    to a server erroneously due to only matching on fixed ip. Changed the
+    lookup to match on port ids. This adds an API call in the case where
+    the workaround is needed because of a bug in the cloud, but in most
+    cases it should have no difference.
diff --git a/releasenotes/notes/fix-task-timing-048afea680adc62e.yaml b/releasenotes/notes/fix-task-timing-048afea680adc62e.yaml
new file mode 100644
index 0000000..ef9e219
--- /dev/null
+++ b/releasenotes/notes/fix-task-timing-048afea680adc62e.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Fix a regression where the ``TaskManager.post_run_task`` ``elapsed_time``
+    argument was not reflecting the time taken by the actual task.
diff --git a/releasenotes/notes/fix-update-domain-af47b066ac52eb7f.yaml b/releasenotes/notes/fix-update-domain-af47b066ac52eb7f.yaml
new file mode 100644
index 0000000..060461d
--- /dev/null
+++ b/releasenotes/notes/fix-update-domain-af47b066ac52eb7f.yaml
@@ -0,0 +1,3 @@
+---
+fixes:
+  - Fix for update_domain() where 'name' was not updatable.
diff --git a/releasenotes/notes/fix-yaml-load-3e6bd852afe549b4.yaml b/releasenotes/notes/fix-yaml-load-3e6bd852afe549b4.yaml
new file mode 100644
index 0000000..ac34188
--- /dev/null
+++ b/releasenotes/notes/fix-yaml-load-3e6bd852afe549b4.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Fixed an issue where importing openstacksdk changed the behavior of
+    ``yaml.load`` globally.
diff --git a/releasenotes/notes/fixed-magnum-type-7406f0a60525f858.yaml b/releasenotes/notes/fixed-magnum-type-7406f0a60525f858.yaml
new file mode 100644
index 0000000..bc0f768
--- /dev/null
+++ b/releasenotes/notes/fixed-magnum-type-7406f0a60525f858.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - Fixed magnum service_type. shade was using it as 'container'
+    but the correct type is 'container-infra'. It's possible that on
+    old clouds with magnum shade may now do the wrong thing. If that
+    occurs, please file a bug.
diff --git a/releasenotes/notes/flavor-cloud-layer-0b4d130ac1c5e7c4.yaml b/releasenotes/notes/flavor-cloud-layer-0b4d130ac1c5e7c4.yaml
new file mode 100644
index 0000000..5c35b42
--- /dev/null
+++ b/releasenotes/notes/flavor-cloud-layer-0b4d130ac1c5e7c4.yaml
@@ -0,0 +1,4 @@
+---
+other:
+  - Flavor operations of the cloud layer are switched to the rely on
+    the proxy layer
diff --git a/releasenotes/notes/flavor_fix-a53c6b326dc34a2c.yaml b/releasenotes/notes/flavor_fix-a53c6b326dc34a2c.yaml
new file mode 100644
index 0000000..9a7ba7d
--- /dev/null
+++ b/releasenotes/notes/flavor_fix-a53c6b326dc34a2c.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - Flavors will always contain an 'extra_specs' attribute. Client cruft,
+    such as 'links', 'HUMAN_ID', etc. has been removed.
+fixes:
+  - Setting and unsetting flavor extra specs now works. This had
+    been broken since the 1.2.0 release.
diff --git a/releasenotes/notes/floating_ip_normalization-41e0edcdb0c98aee.yaml b/releasenotes/notes/floating_ip_normalization-41e0edcdb0c98aee.yaml
new file mode 100644
index 0000000..82de33d
--- /dev/null
+++ b/releasenotes/notes/floating_ip_normalization-41e0edcdb0c98aee.yaml
@@ -0,0 +1,10 @@
+---
+upgrade:
+  - |
+    No Munch conversion and normalization of the floating ips is happening
+    anymore. For Neutron network a pure FloatingIP object is being returned,
+    for Nova still munch object.
+deprecations:
+  - |
+    search_floating_ips method is deprecated and should not be used anymore. It
+    is going to be dropped approximately after one major cycle.
diff --git a/releasenotes/notes/fnmatch-name-or-id-f658fe26f84086c8.yaml b/releasenotes/notes/fnmatch-name-or-id-f658fe26f84086c8.yaml
new file mode 100644
index 0000000..dcdccd2
--- /dev/null
+++ b/releasenotes/notes/fnmatch-name-or-id-f658fe26f84086c8.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - name_or_id parameters to search/get methods now support
+    filename-like globbing. This means search_servers('nb0*')
+    will return all servers whose names start with 'nb0'.
diff --git a/releasenotes/notes/force_ipv4_no_ipv6_address-9842168b5d05d262.yaml b/releasenotes/notes/force_ipv4_no_ipv6_address-9842168b5d05d262.yaml
new file mode 100644
index 0000000..8cca5a2
--- /dev/null
+++ b/releasenotes/notes/force_ipv4_no_ipv6_address-9842168b5d05d262.yaml
@@ -0,0 +1,6 @@
+---
+upgrade:
+  - |
+    Cloud with the `force_ipv4` flag will no longer return a
+    `public_v6` value, even if one is provided by the cloud.  This is
+    to avoid having entries for unconfigured interfaces.
diff --git a/releasenotes/notes/futurist-b54b0f449d410997.yaml b/releasenotes/notes/futurist-b54b0f449d410997.yaml
new file mode 100644
index 0000000..1d1ca20
--- /dev/null
+++ b/releasenotes/notes/futurist-b54b0f449d410997.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    Switched to the ``futurist`` library for managing background
+    concurrent tasks. Introduced a new ``pool_executor`` parameter
+    to `Connection` that allows passing any any futurist Executor
+    for cases where the default ``ThreadPoolExecutor`` would not
+    be appropriate.
diff --git a/releasenotes/notes/generate-form-signature-294ca46812f291d6.yaml b/releasenotes/notes/generate-form-signature-294ca46812f291d6.yaml
new file mode 100644
index 0000000..5028950
--- /dev/null
+++ b/releasenotes/notes/generate-form-signature-294ca46812f291d6.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added methods to manage object store temp-url keys and
+    generate signatures needed for FormPost middleware.
diff --git a/releasenotes/notes/get-limits-c383c512f8e01873.yaml b/releasenotes/notes/get-limits-c383c512f8e01873.yaml
new file mode 100644
index 0000000..58ed1e1
--- /dev/null
+++ b/releasenotes/notes/get-limits-c383c512f8e01873.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Allow to retrieve the limits of a specific project
diff --git a/releasenotes/notes/get-object-raw-e58284e59c81c8ef.yaml b/releasenotes/notes/get-object-raw-e58284e59c81c8ef.yaml
new file mode 100644
index 0000000..d854d8e
--- /dev/null
+++ b/releasenotes/notes/get-object-raw-e58284e59c81c8ef.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added ``get_object_raw`` method for downloading an object from swift
+    and returning a raw requests Response object.
diff --git a/releasenotes/notes/get-server-by-id-none-3e8538800fa09d82.yaml b/releasenotes/notes/get-server-by-id-none-3e8538800fa09d82.yaml
new file mode 100644
index 0000000..b3ef3fe
--- /dev/null
+++ b/releasenotes/notes/get-server-by-id-none-3e8538800fa09d82.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+  - |
+    The ``get_server_by_id`` method is supposed to return ``None`` if the
+    server in question can't be found, but a regression was introduced
+    causing it to raise ``ResourceNotFound`` instead. This has been corrected
+    and ``get_server_by_id`` returns ``None`` correctly again.
diff --git a/releasenotes/notes/get-usage-72d249ff790d1b8f.yaml b/releasenotes/notes/get-usage-72d249ff790d1b8f.yaml
new file mode 100644
index 0000000..4b447f4
--- /dev/null
+++ b/releasenotes/notes/get-usage-72d249ff790d1b8f.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Allow to retrieve the usage of a specific project
diff --git a/releasenotes/notes/get_compute_usage-01811dccd60dc92a.yaml b/releasenotes/notes/get_compute_usage-01811dccd60dc92a.yaml
new file mode 100644
index 0000000..7eaf869
--- /dev/null
+++ b/releasenotes/notes/get_compute_usage-01811dccd60dc92a.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - |
+    cloud.get_compute_usage method return instance of compute.usage.Usage class
+    instead of munch.
diff --git a/releasenotes/notes/get_object_api-968483adb016bce1.yaml b/releasenotes/notes/get_object_api-968483adb016bce1.yaml
new file mode 100644
index 0000000..bc830d5
--- /dev/null
+++ b/releasenotes/notes/get_object_api-968483adb016bce1.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Added a new API call, OpenStackCloud.get_object(), to download objects from swift.
diff --git a/releasenotes/notes/glance-image-pagination-0b4dfef22b25852b.yaml b/releasenotes/notes/glance-image-pagination-0b4dfef22b25852b.yaml
new file mode 100644
index 0000000..3b134fc
--- /dev/null
+++ b/releasenotes/notes/glance-image-pagination-0b4dfef22b25852b.yaml
@@ -0,0 +1,4 @@
+---
+issues:
+  - Fixed an issue where glance image list pagination was being ignored,
+    leading to truncated image lists.
diff --git a/releasenotes/notes/glance-image-stores-2baa66e6743a2f2d.yaml b/releasenotes/notes/glance-image-stores-2baa66e6743a2f2d.yaml
new file mode 100644
index 0000000..8721e1f
--- /dev/null
+++ b/releasenotes/notes/glance-image-stores-2baa66e6743a2f2d.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add support for specifying stores when doing glance image uploads.
diff --git a/releasenotes/notes/global-request-id-d7c0736f43929165.yaml b/releasenotes/notes/global-request-id-d7c0736f43929165.yaml
new file mode 100644
index 0000000..b2677a0
--- /dev/null
+++ b/releasenotes/notes/global-request-id-d7c0736f43929165.yaml
@@ -0,0 +1,11 @@
+---
+features:
+  - |
+    Added support for setting ``global_request_id`` on a ``Connection``.
+    If done, this will cause all requests sent to send the request id
+    header to the OpenStack services. Since ``Connection`` can otherwise
+    be used multi-threaded, add a method ``global_request`` that returns
+    a new ``Connection`` based on the old ``Connection`` but on which
+    the new ``global_request_id`` has been set. Since a ``Connection``
+    can be used as a context manager, this also means the ``global_request``
+    method can be used in ``with`` statements.
diff --git a/releasenotes/notes/grant-revoke-assignments-231d3f9596a1ae75.yaml b/releasenotes/notes/grant-revoke-assignments-231d3f9596a1ae75.yaml
new file mode 100644
index 0000000..9776030
--- /dev/null
+++ b/releasenotes/notes/grant-revoke-assignments-231d3f9596a1ae75.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - add granting and revoking of roles from groups and users
diff --git a/releasenotes/notes/identity-auth-url-f3ae8ef22d2bcab6.yaml b/releasenotes/notes/identity-auth-url-f3ae8ef22d2bcab6.yaml
new file mode 100644
index 0000000..3009b09
--- /dev/null
+++ b/releasenotes/notes/identity-auth-url-f3ae8ef22d2bcab6.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    The ``auth_url`` will be used for the default value of
+    ``identity_endpoint_override`` in the absence of project or system-scope
+    information. This should simplify some actions such as listing available
+    projects.
diff --git a/releasenotes/notes/image-flavor-by-name-54865b00ebbf1004.yaml b/releasenotes/notes/image-flavor-by-name-54865b00ebbf1004.yaml
new file mode 100644
index 0000000..6548121
--- /dev/null
+++ b/releasenotes/notes/image-flavor-by-name-54865b00ebbf1004.yaml
@@ -0,0 +1,9 @@
+---
+features:
+  - The image and flavor parameters for create_server
+    now accept name in addition to id and dict. If given
+    as a name or id, shade will do a get_image or a
+    get_flavor to find the matching image or flavor.
+    If you have an id already and are not using any caching
+    and the extra lookup is annoying, passing the id in
+    as "dict(id='my-id')" will avoid the lookup.
diff --git a/releasenotes/notes/image-from-volume-9acf7379f5995b5b.yaml b/releasenotes/notes/image-from-volume-9acf7379f5995b5b.yaml
new file mode 100644
index 0000000..6461f5e
--- /dev/null
+++ b/releasenotes/notes/image-from-volume-9acf7379f5995b5b.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Added ability to create an image from a volume.
diff --git a/releasenotes/notes/image-id-filter-key-b9b6b52139a27cbe.yaml b/releasenotes/notes/image-id-filter-key-b9b6b52139a27cbe.yaml
new file mode 100644
index 0000000..6b501bf
--- /dev/null
+++ b/releasenotes/notes/image-id-filter-key-b9b6b52139a27cbe.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    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.
diff --git a/releasenotes/notes/image-import-proxy-params-f19d8b6166104ebe.yaml b/releasenotes/notes/image-import-proxy-params-f19d8b6166104ebe.yaml
new file mode 100644
index 0000000..56b59f4
--- /dev/null
+++ b/releasenotes/notes/image-import-proxy-params-f19d8b6166104ebe.yaml
@@ -0,0 +1,12 @@
+---
+features:
+  - |
+    The ``openstack.image.Image.import_image`` method and ``import_image``
+    image proxy method now accept the following additional paramters:
+
+    - ``remote_region``
+    - ``remote_image_id``
+    - ``remote_service_interface``
+
+    These are required to support the ``glance-download`` image import
+    method.
diff --git a/releasenotes/notes/image-import-support-97052cdbc8ce449b.yaml b/releasenotes/notes/image-import-support-97052cdbc8ce449b.yaml
new file mode 100644
index 0000000..707d92e
--- /dev/null
+++ b/releasenotes/notes/image-import-support-97052cdbc8ce449b.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Added support for using the image import feature when creating an
+    image. SDK will now fall back to using image import if there is an
+    error during PUT.
diff --git a/releasenotes/notes/image-proxy-layer-kwarg-only-arguments-94c9b2033d386160.yaml b/releasenotes/notes/image-proxy-layer-kwarg-only-arguments-94c9b2033d386160.yaml
new file mode 100644
index 0000000..882bd86
--- /dev/null
+++ b/releasenotes/notes/image-proxy-layer-kwarg-only-arguments-94c9b2033d386160.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - |
+    The signatures of the ``openstack.image.v2.import_image`` has changed. All
+    arguments except ``image`` and ``method`` are now kwarg-only.
diff --git a/releasenotes/notes/image-update-76bd3bf24c1c1380.yaml b/releasenotes/notes/image-update-76bd3bf24c1c1380.yaml
new file mode 100644
index 0000000..47599e0
--- /dev/null
+++ b/releasenotes/notes/image-update-76bd3bf24c1c1380.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - |
+    When using the Image API, it is no longer possible to set arbitrary
+    properties, not known to the SDK, via ``image.update_image`` API.
diff --git a/releasenotes/notes/improve-metrics-5d7ce70ce4021d72.yaml b/releasenotes/notes/improve-metrics-5d7ce70ce4021d72.yaml
new file mode 100644
index 0000000..86d2759
--- /dev/null
+++ b/releasenotes/notes/improve-metrics-5d7ce70ce4021d72.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - |
+    API metrics emitted by OpenStackSDK to StatsD now contain status_code
+    part of the metric name in order to improve information precision.
diff --git a/releasenotes/notes/infer-secgroup-source-58d840aaf1a1f485.yaml b/releasenotes/notes/infer-secgroup-source-58d840aaf1a1f485.yaml
new file mode 100644
index 0000000..f3f35f4
--- /dev/null
+++ b/releasenotes/notes/infer-secgroup-source-58d840aaf1a1f485.yaml
@@ -0,0 +1,9 @@
+---
+features:
+  - If a cloud does not have a neutron service, it is now
+    assumed that Nova will be the source of security groups.
+    To handle clouds that have nova-network and do not have
+    the security group extension, setting secgroup_source to
+    None will prevent attempting to use them at all. If the
+    cloud has neutron but it is not a functional source of
+    security groups, set secgroup_source to nova.
diff --git a/releasenotes/notes/introduce-source-and-destination-ip-prefixes-into-metering-label-rules-e04b797adac5d0d0.yaml b/releasenotes/notes/introduce-source-and-destination-ip-prefixes-into-metering-label-rules-e04b797adac5d0d0.yaml
new file mode 100644
index 0000000..5de538b
--- /dev/null
+++ b/releasenotes/notes/introduce-source-and-destination-ip-prefixes-into-metering-label-rules-e04b797adac5d0d0.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add ``source_ip_prefix`` and ``destination_ip_prefix`` to Neutron metering
+    label rules.
\ No newline at end of file
diff --git a/releasenotes/notes/introspection-node-6a3b7d55839ef82c.yaml b/releasenotes/notes/introspection-node-6a3b7d55839ef82c.yaml
new file mode 100644
index 0000000..4638e89
--- /dev/null
+++ b/releasenotes/notes/introspection-node-6a3b7d55839ef82c.yaml
@@ -0,0 +1,4 @@
+---
+fixes:
+  - |
+    Fixes using a full `Node` object as an argument to `start_introspection`.
diff --git a/releasenotes/notes/ironic-conductors-support-3bf27e8b2f0299ba.yaml b/releasenotes/notes/ironic-conductors-support-3bf27e8b2f0299ba.yaml
new file mode 100644
index 0000000..e2aea13
--- /dev/null
+++ b/releasenotes/notes/ironic-conductors-support-3bf27e8b2f0299ba.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Support for Ironic Conductor API.
diff --git a/releasenotes/notes/ironic-deploy-steps-2c0f39d7d2a13289.yaml b/releasenotes/notes/ironic-deploy-steps-2c0f39d7d2a13289.yaml
new file mode 100644
index 0000000..b6adb8c
--- /dev/null
+++ b/releasenotes/notes/ironic-deploy-steps-2c0f39d7d2a13289.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Adds ``deploy_steps`` to baremetal node provisioning.
diff --git a/releasenotes/notes/ironic-deploy-template-support-fa56005365ed6e4d.yaml b/releasenotes/notes/ironic-deploy-template-support-fa56005365ed6e4d.yaml
new file mode 100644
index 0000000..d8b13ea
--- /dev/null
+++ b/releasenotes/notes/ironic-deploy-template-support-fa56005365ed6e4d.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Support Deploy Templates for Ironic API
\ No newline at end of file
diff --git a/releasenotes/notes/ironic-introspection_rules_support-18b0488a76800122.yaml b/releasenotes/notes/ironic-introspection_rules_support-18b0488a76800122.yaml
new file mode 100644
index 0000000..7aede06
--- /dev/null
+++ b/releasenotes/notes/ironic-introspection_rules_support-18b0488a76800122.yaml
@@ -0,0 +1,3 @@
+features:
+  - |
+    Add support for Ironic Inspector Introspection Rules API.
diff --git a/releasenotes/notes/ironic-microversion-ba5b0f36f11196a6.yaml b/releasenotes/notes/ironic-microversion-ba5b0f36f11196a6.yaml
new file mode 100644
index 0000000..62e3627
--- /dev/null
+++ b/releasenotes/notes/ironic-microversion-ba5b0f36f11196a6.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add support for passing Ironic microversion to the ironicclient
+    constructor in get_legacy_client.
diff --git a/releasenotes/notes/ironic-node-shard-35f2557c3dbfff1d.yaml b/releasenotes/notes/ironic-node-shard-35f2557c3dbfff1d.yaml
new file mode 100644
index 0000000..d4e334f
--- /dev/null
+++ b/releasenotes/notes/ironic-node-shard-35f2557c3dbfff1d.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Adds support for Node shards to baremetal service.
diff --git a/releasenotes/notes/ironic-volume_target-support-8130361804366787.yaml b/releasenotes/notes/ironic-volume_target-support-8130361804366787.yaml
new file mode 100644
index 0000000..eed88c5
--- /dev/null
+++ b/releasenotes/notes/ironic-volume_target-support-8130361804366787.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Support for Ironic Volume Target API.
diff --git a/releasenotes/notes/ksa-discovery-86a4ef00d85ea87f.yaml b/releasenotes/notes/ksa-discovery-86a4ef00d85ea87f.yaml
new file mode 100644
index 0000000..fa27dce
--- /dev/null
+++ b/releasenotes/notes/ksa-discovery-86a4ef00d85ea87f.yaml
@@ -0,0 +1,5 @@
+---
+other:
+  - |
+    All endpoint discovery logic is now handled by keystoneauth. There should
+    be no behavior differences.
diff --git a/releasenotes/notes/less-file-hashing-d2497337da5acbef.yaml b/releasenotes/notes/less-file-hashing-d2497337da5acbef.yaml
new file mode 100644
index 0000000..4d0fd1a
--- /dev/null
+++ b/releasenotes/notes/less-file-hashing-d2497337da5acbef.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - shade will now only generate file hashes for glance
+    images if both hashes are empty. If only one is given,
+    the other will be treated as an empty string.
diff --git a/releasenotes/notes/list-all_projects-filter-27f1d471a7848507.yaml b/releasenotes/notes/list-all_projects-filter-27f1d471a7848507.yaml
new file mode 100644
index 0000000..cb90309
--- /dev/null
+++ b/releasenotes/notes/list-all_projects-filter-27f1d471a7848507.yaml
@@ -0,0 +1,33 @@
+---
+features:
+  - |
+    A number of APIs support passing an admin-only ``all_projects`` filter when
+    listing certain resources, allowing you to retrieve resources from all
+    projects rather than just the current projects. This filter is now
+    explicitly supported at the proxy layer for services and resources that
+    support it. These are:
+
+    * Block storage (v2)
+
+      * ``find_snapshot``
+      * ``snapshots``
+      * ``find_volume``
+      * ``volumes``
+
+    * Block storage (v3)
+
+      * ``find_snapshot``
+      * ``snapshots``
+      * ``find_volume``
+      * ``volumes``
+
+    * Compute (v2)
+
+      * ``find_server``
+      * ``find_server_group``
+      * ``server_groups``
+
+    * Workflow (v2)
+
+      * ``find_cron_triggers``
+      * ``cron_triggers``
diff --git a/releasenotes/notes/list-az-names-a38c277d1192471b.yaml b/releasenotes/notes/list-az-names-a38c277d1192471b.yaml
new file mode 100644
index 0000000..7b49271
--- /dev/null
+++ b/releasenotes/notes/list-az-names-a38c277d1192471b.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Added list_availability_zone_names API call.
diff --git a/releasenotes/notes/list-network-resources-empty-list-6aa760c01e7d97d7.yaml b/releasenotes/notes/list-network-resources-empty-list-6aa760c01e7d97d7.yaml
new file mode 100644
index 0000000..2c7be2c
--- /dev/null
+++ b/releasenotes/notes/list-network-resources-empty-list-6aa760c01e7d97d7.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Basic networking list calls in the cloud layer been fixed to return
+    an empty list if neutron is not running.
diff --git a/releasenotes/notes/list-role-assignments-keystone-v2-b127b12b4860f50c.yaml b/releasenotes/notes/list-role-assignments-keystone-v2-b127b12b4860f50c.yaml
new file mode 100644
index 0000000..df0d96b
--- /dev/null
+++ b/releasenotes/notes/list-role-assignments-keystone-v2-b127b12b4860f50c.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Implement list_role_assignments for keystone v2, using roles_for_user.
diff --git a/releasenotes/notes/list-servers-all-projects-349e6dc665ba2e8d.yaml b/releasenotes/notes/list-servers-all-projects-349e6dc665ba2e8d.yaml
new file mode 100644
index 0000000..c993d2d
--- /dev/null
+++ b/releasenotes/notes/list-servers-all-projects-349e6dc665ba2e8d.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - Add 'all_projects' parameter to list_servers and
+    search_servers which will tell Nova to return servers for all projects
+    rather than just for the current project. This is only available to
+    cloud admins.
diff --git a/releasenotes/notes/load-yaml-3177efca78e5c67a.yaml b/releasenotes/notes/load-yaml-3177efca78e5c67a.yaml
new file mode 100644
index 0000000..2438f83
--- /dev/null
+++ b/releasenotes/notes/load-yaml-3177efca78e5c67a.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - Added a flag, 'load_yaml_config' that defaults to True.
+    If set to false, no clouds.yaml files will be loaded. This
+    is beneficial if os-client-config wants to be used inside of
+    a service where end-user clouds.yaml files would  make things
+    more confusing.
diff --git a/releasenotes/notes/location-server-resource-af77fdab5d35d421.yaml b/releasenotes/notes/location-server-resource-af77fdab5d35d421.yaml
new file mode 100644
index 0000000..d548881
--- /dev/null
+++ b/releasenotes/notes/location-server-resource-af77fdab5d35d421.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    Corrected the location property on the ``Server`` resource to
+    use the ``project_id`` from the remote resource rather than the
+    information from the token of the user.
diff --git a/releasenotes/notes/log-request-ids-37507cb6eed9a7da.yaml b/releasenotes/notes/log-request-ids-37507cb6eed9a7da.yaml
new file mode 100644
index 0000000..6c81b77
--- /dev/null
+++ b/releasenotes/notes/log-request-ids-37507cb6eed9a7da.yaml
@@ -0,0 +1,5 @@
+---
+other:
+  - The contents of x-openstack-request-id are no longer
+    added to object returned. Instead, they are logged to
+    a logger named 'openstack.cloud.request_ids'.
diff --git a/releasenotes/notes/machine-get-update-microversions-4b910e63cebd65e2.yaml b/releasenotes/notes/machine-get-update-microversions-4b910e63cebd65e2.yaml
new file mode 100644
index 0000000..7c0f477
--- /dev/null
+++ b/releasenotes/notes/machine-get-update-microversions-4b910e63cebd65e2.yaml
@@ -0,0 +1,11 @@
+---
+features:
+  - |
+    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.
+upgrade:
+  - |
+    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.
diff --git a/releasenotes/notes/magic-fixes-dca4ae4dac2441a8.yaml b/releasenotes/notes/magic-fixes-dca4ae4dac2441a8.yaml
new file mode 100644
index 0000000..570e4dc
--- /dev/null
+++ b/releasenotes/notes/magic-fixes-dca4ae4dac2441a8.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - Refactor ``OpenStackConfig._fix_backward_madness()`` into
+    ``OpenStackConfig.magic_fixes()`` that allows subclasses
+    to inject more  fixup magic into the flow during
+    ``get_one_cloud()`` processing.
diff --git a/releasenotes/notes/make-cloud-region-standalone-848a2c4b5f3ebc29.yaml b/releasenotes/notes/make-cloud-region-standalone-848a2c4b5f3ebc29.yaml
new file mode 100644
index 0000000..d5745f4
--- /dev/null
+++ b/releasenotes/notes/make-cloud-region-standalone-848a2c4b5f3ebc29.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Updated the ``openstack.config.cloud_config.CloudRegion`` object to be
+    able to store and retreive cache settings and the password callback object
+    without needing an ``openstack.config.loader.OpenStackConfig`` object.
diff --git a/releasenotes/notes/make-rest-client-dd3d365632a26fa0.yaml b/releasenotes/notes/make-rest-client-dd3d365632a26fa0.yaml
new file mode 100644
index 0000000..8e34e51
--- /dev/null
+++ b/releasenotes/notes/make-rest-client-dd3d365632a26fa0.yaml
@@ -0,0 +1,4 @@
+---
+deprecations:
+  - Renamed session_client to make_rest_client. session_client
+    will continue to be supported for backwards compatability.
diff --git a/releasenotes/notes/make-rest-client-version-discovery-84125700f159491a.yaml b/releasenotes/notes/make-rest-client-version-discovery-84125700f159491a.yaml
new file mode 100644
index 0000000..7326978
--- /dev/null
+++ b/releasenotes/notes/make-rest-client-version-discovery-84125700f159491a.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - Add version argument to make_rest_client and plumb
+    version discovery through get_session_client so that
+    versioned endpoints are properly found if unversioned
+    are in the catalog.
diff --git a/releasenotes/notes/make_object_metadata_easier.yaml-e9751723e002e06f.yaml b/releasenotes/notes/make_object_metadata_easier.yaml-e9751723e002e06f.yaml
new file mode 100644
index 0000000..eaa7183
--- /dev/null
+++ b/releasenotes/notes/make_object_metadata_easier.yaml-e9751723e002e06f.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - create_object() now has a "metadata" parameter that can be used to create
+    an object with metadata of each key and value pair in that dictionary
+  - Add an update_object() function that updates the metadata of a swift object
diff --git a/releasenotes/notes/merge-shade-os-client-config-29878734ad643e33.yaml b/releasenotes/notes/merge-shade-os-client-config-29878734ad643e33.yaml
new file mode 100644
index 0000000..f7718aa
--- /dev/null
+++ b/releasenotes/notes/merge-shade-os-client-config-29878734ad643e33.yaml
@@ -0,0 +1,4 @@
+---
+other:
+  - The shade and os-client-config libraries have been
+    merged into python-openstacksdk.
diff --git a/releasenotes/notes/meta-passthrough-d695bff4f9366b65.yaml b/releasenotes/notes/meta-passthrough-d695bff4f9366b65.yaml
new file mode 100644
index 0000000..13eb7ca
--- /dev/null
+++ b/releasenotes/notes/meta-passthrough-d695bff4f9366b65.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - Added a parameter to create_image 'meta' which allows
+    for providing parameters to the API that will not have
+    any type conversions performed. For the simple case,
+    the existing kwargs approach to image metadata is still
+    the best bet.
diff --git a/releasenotes/notes/metadata-key-name-bugfix-77612a825c5145d7.yaml b/releasenotes/notes/metadata-key-name-bugfix-77612a825c5145d7.yaml
new file mode 100644
index 0000000..892fb85
--- /dev/null
+++ b/releasenotes/notes/metadata-key-name-bugfix-77612a825c5145d7.yaml
@@ -0,0 +1,4 @@
+---
+fixes:
+  - Fixed a bug related to metadata's key name. An exception was
+    raised when setting it to "delete"," clear" or "key"
diff --git a/releasenotes/notes/min-max-legacy-version-301242466ddefa93.yaml b/releasenotes/notes/min-max-legacy-version-301242466ddefa93.yaml
new file mode 100644
index 0000000..30a3802
--- /dev/null
+++ b/releasenotes/notes/min-max-legacy-version-301242466ddefa93.yaml
@@ -0,0 +1,15 @@
+---
+features:
+  - Add min_version and max_version to get_legacy_client
+    and to get_session_endpoint. At the moment this is only
+    really fully plumbed through for cinder, which has extra
+    special fun around volume, volumev2 and volumev3. Min and max
+    versions to both methods will look through the options available
+    in the service catalog and try to return the latest one available
+    from the span of requested versions. This means a user can say
+    volume_api_version=None, min_version=2, max_version=3 will get
+    an endpoint from get_session_endpoint or a Client from cinderclient
+    that will be either v2 or v3 but not v1. In the future, min and max
+    version for get_session_endpoint should be able to sort out
+    appropriate endpoints via version discovery, but that does not
+    currently exist.
diff --git a/releasenotes/notes/mtu-settings-8ce8b54d096580a2.yaml b/releasenotes/notes/mtu-settings-8ce8b54d096580a2.yaml
new file mode 100644
index 0000000..4de74d6
--- /dev/null
+++ b/releasenotes/notes/mtu-settings-8ce8b54d096580a2.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    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.
diff --git a/releasenotes/notes/multiple-updates-b48cc2f6db2e526d.yaml b/releasenotes/notes/multiple-updates-b48cc2f6db2e526d.yaml
new file mode 100644
index 0000000..5df3f6d
--- /dev/null
+++ b/releasenotes/notes/multiple-updates-b48cc2f6db2e526d.yaml
@@ -0,0 +1,14 @@
+---
+features:
+  - Removed unneeded calls that were made when deleting servers with
+    floating ips.
+  - Added pagination support for volume listing.
+upgrade:
+  - Removed designateclient as a dependency. All designate operations
+    are now performed with direct REST calls using keystoneauth
+    Adapter.
+  - Server creation calls are now done with direct REST calls.
+fixes:
+  - Fixed a bug related to neutron endpoints that did not have trailing
+    slashes.
+  - Fixed issue with ports not having a created_at attribute.
diff --git a/releasenotes/notes/munch-sub-dict-e1619c71c26879cb.yaml b/releasenotes/notes/munch-sub-dict-e1619c71c26879cb.yaml
new file mode 100644
index 0000000..2fc59a2
--- /dev/null
+++ b/releasenotes/notes/munch-sub-dict-e1619c71c26879cb.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Fixed a regression with sub-dicts of server objects
+    were not usable with object notation.
diff --git a/releasenotes/notes/nat-source-field-7c7db2a724616d59.yaml b/releasenotes/notes/nat-source-field-7c7db2a724616d59.yaml
new file mode 100644
index 0000000..3341c9f
--- /dev/null
+++ b/releasenotes/notes/nat-source-field-7c7db2a724616d59.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - Added nat_source flag for networks. In some more complex clouds there
+    can not only be more than one valid network on a server that NAT can
+    attach to, there can also be more than one valid network from which to
+    get a NAT address. Allow flagging a network so that it can be found.
diff --git a/releasenotes/notes/nat-source-support-92aaf6b336d0b848.yaml b/releasenotes/notes/nat-source-support-92aaf6b336d0b848.yaml
new file mode 100644
index 0000000..efd8713
--- /dev/null
+++ b/releasenotes/notes/nat-source-support-92aaf6b336d0b848.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add support for networks being configured as the
+    primary nat_source in clouds.yaml.
diff --git a/releasenotes/notes/net_provider-dd64b697476b7094.yaml b/releasenotes/notes/net_provider-dd64b697476b7094.yaml
new file mode 100644
index 0000000..65a0073
--- /dev/null
+++ b/releasenotes/notes/net_provider-dd64b697476b7094.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Network provider options are now accepted in create_network().
diff --git a/releasenotes/notes/network-data-bd94e4a499ba3e0d.yaml b/releasenotes/notes/network-data-bd94e4a499ba3e0d.yaml
new file mode 100644
index 0000000..22e5bd7
--- /dev/null
+++ b/releasenotes/notes/network-data-bd94e4a499ba3e0d.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Fixes ``openstack.baremetal.configdrive.build`` to actually handle the
+    ``network_data`` argument.
diff --git a/releasenotes/notes/network-data-deb5772edc111428.yaml b/releasenotes/notes/network-data-deb5772edc111428.yaml
new file mode 100644
index 0000000..3cd9e2d
--- /dev/null
+++ b/releasenotes/notes/network-data-deb5772edc111428.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Adds support for `network_data
+    <https://specs.openstack.org/openstack/nova-specs/specs/liberty/implemented/metadata-service-network-info.html>`_
+    when building baremetal configdrives.
diff --git a/releasenotes/notes/network-list-e6e9dafdd8446263.yaml b/releasenotes/notes/network-list-e6e9dafdd8446263.yaml
new file mode 100644
index 0000000..8f793c2
--- /dev/null
+++ b/releasenotes/notes/network-list-e6e9dafdd8446263.yaml
@@ -0,0 +1,10 @@
+---
+features:
+  - Support added for configuring metadata about networks
+    for a cloud in a list of dicts, rather than in the
+    external_network and internal_network entries. The dicts
+    support a name, a routes_externally field, a nat_destination
+    field and a default_interface field.
+deprecations:
+  - external_network and internal_network are deprecated and
+    should be replaced with the list of network dicts.
diff --git a/releasenotes/notes/network-qos-rule-filter-keys-324e3222510fd362.yaml b/releasenotes/notes/network-qos-rule-filter-keys-324e3222510fd362.yaml
new file mode 100644
index 0000000..28b35a1
--- /dev/null
+++ b/releasenotes/notes/network-qos-rule-filter-keys-324e3222510fd362.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    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.
diff --git a/releasenotes/notes/network-quotas-b98cce9ffeffdbf4.yaml b/releasenotes/notes/network-quotas-b98cce9ffeffdbf4.yaml
new file mode 100644
index 0000000..a58cbea
--- /dev/null
+++ b/releasenotes/notes/network-quotas-b98cce9ffeffdbf4.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Add new APIs, OperatorCloud.get_network_quotas(), OperatorCloud.set_network_quotas() and OperatorCloud.delete_network_quotas() to manage neutron quotas for projects and users
\ No newline at end of file
diff --git a/releasenotes/notes/network-security-group-query-parameter-id-f6dda45b2c09dbaa.yaml b/releasenotes/notes/network-security-group-query-parameter-id-f6dda45b2c09dbaa.yaml
new file mode 100644
index 0000000..5b0db68
--- /dev/null
+++ b/releasenotes/notes/network-security-group-query-parameter-id-f6dda45b2c09dbaa.yaml
@@ -0,0 +1,9 @@
+---
+features:
+  - |
+    The ``id`` field was added a query parameter for security_groups. A single
+    security group id, or a list of security group ids can be passed. For
+    example::
+
+      conn.network.security_groups(id=['f959e85a-1a87-4b5c-ae56-dc917ceeb584',
+                                       'a55c0100-7ded-40af-9c61-1d1b9a9c2692'])
diff --git a/releasenotes/notes/network_add_bgp_resources-c182dc2873d6db18.yaml b/releasenotes/notes/network_add_bgp_resources-c182dc2873d6db18.yaml
new file mode 100644
index 0000000..5356c77
--- /dev/null
+++ b/releasenotes/notes/network_add_bgp_resources-c182dc2873d6db18.yaml
@@ -0,0 +1,10 @@
+---
+features:
+  - |
+    Add BGP Speaker and BGP Peer resources, and introduce support for CRUD
+    operations for these. Additional REST operations introduced for speakers:
+    add_bgp_peer, remove_bgp_peer, add_gateway_network, remove_gateway_network,
+    get_advertised_routes, get_bgp_dragents, add_bgp_speaker_to_draget,
+    remove_bgp_speaker_from_dragent.
+    One new REST method is added to agents to cover the features
+    of Dynamic Routing Agents schedulers: get_bgp_speakers_hosted_by_dragent
diff --git a/releasenotes/notes/network_add_bgpvpn_resources-b3bd0b568c3c99db.yaml b/releasenotes/notes/network_add_bgpvpn_resources-b3bd0b568c3c99db.yaml
new file mode 100644
index 0000000..daa777f
--- /dev/null
+++ b/releasenotes/notes/network_add_bgpvpn_resources-b3bd0b568c3c99db.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    Add BGPVPN, BGPVPN Network Association, BGPVPN Port Association,
+    and BGPVPN Router Association resources and introduce support
+    for CRUD operations for these.
+
diff --git a/releasenotes/notes/network_add_sfc_resources-8a52c0c8c1f8e932.yaml b/releasenotes/notes/network_add_sfc_resources-8a52c0c8c1f8e932.yaml
new file mode 100644
index 0000000..382257b
--- /dev/null
+++ b/releasenotes/notes/network_add_sfc_resources-8a52c0c8c1f8e932.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Add SFC resources: FlowClassifier, PortChain, PortPair, PortPairGroup
+    and ServiceGraph resources and introduce support for CRUD operations
+    for these.
diff --git a/releasenotes/notes/network_add_taas_resources-86a947265e11ce84.yaml b/releasenotes/notes/network_add_taas_resources-86a947265e11ce84.yaml
new file mode 100644
index 0000000..54fb373
--- /dev/null
+++ b/releasenotes/notes/network_add_taas_resources-86a947265e11ce84.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add ``Tap Service`` and ``Tap Flow`` resources, and introduce support for
+    CRUD operations for these.
diff --git a/releasenotes/notes/neutron-discovery-54399116d5f810ee.yaml b/releasenotes/notes/neutron-discovery-54399116d5f810ee.yaml
new file mode 100644
index 0000000..e102a1e
--- /dev/null
+++ b/releasenotes/notes/neutron-discovery-54399116d5f810ee.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Added workaround for using neutron on older clouds where the version
+    discovery document requires auth.
diff --git a/releasenotes/notes/neutron_availability_zone_extension-675c2460ebb50a09.yaml b/releasenotes/notes/neutron_availability_zone_extension-675c2460ebb50a09.yaml
new file mode 100644
index 0000000..058f40b
--- /dev/null
+++ b/releasenotes/notes/neutron_availability_zone_extension-675c2460ebb50a09.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    ``availability_zone_hints`` now accepted for ``create_network()`` when
+    ``network_availability_zone`` extension is enabled on target cloud.
+  - |
+    ``availability_zone_hints`` now accepted for ``create_router()`` when
+    ``router_availability_zone`` extension is enabled on target cloud.
diff --git a/releasenotes/notes/new-floating-attributes-213cdf5681d337e1.yaml b/releasenotes/notes/new-floating-attributes-213cdf5681d337e1.yaml
new file mode 100644
index 0000000..61f4ec1
--- /dev/null
+++ b/releasenotes/notes/new-floating-attributes-213cdf5681d337e1.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Added support for created_at, updated_at, description
+    and revision_number attributes for floating ips.
diff --git a/releasenotes/notes/no-import-fallback-a09b5d5a11299933.yaml b/releasenotes/notes/no-import-fallback-a09b5d5a11299933.yaml
new file mode 100644
index 0000000..6f897a3
--- /dev/null
+++ b/releasenotes/notes/no-import-fallback-a09b5d5a11299933.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - |
+    Image upload will no longer fall back to attempting to use
+    the import workflow if the initial upload does not work.
diff --git a/releasenotes/notes/no-inspect-associated-563e272785bb6016.yaml b/releasenotes/notes/no-inspect-associated-563e272785bb6016.yaml
new file mode 100644
index 0000000..c2faab6
--- /dev/null
+++ b/releasenotes/notes/no-inspect-associated-563e272785bb6016.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Machine inspection is now blocked for machines associated with an instance.
+    This is to avoid "stealing" a machine from under a provisioner (e.g. Nova).
diff --git a/releasenotes/notes/no-more-troveclient-0a4739c21432ac63.yaml b/releasenotes/notes/no-more-troveclient-0a4739c21432ac63.yaml
new file mode 100644
index 0000000..1096921
--- /dev/null
+++ b/releasenotes/notes/no-more-troveclient-0a4739c21432ac63.yaml
@@ -0,0 +1,6 @@
+---
+upgrade:
+  - troveclient is no longer a hard dependency. Users
+    who were using shade to construct a troveclient
+    Client object should use os_client_config.make_legacy_client
+    instead.
diff --git a/releasenotes/notes/no-start-task-manager-56773f3ea5eb3a59.yaml b/releasenotes/notes/no-start-task-manager-56773f3ea5eb3a59.yaml
new file mode 100644
index 0000000..e40507d
--- /dev/null
+++ b/releasenotes/notes/no-start-task-manager-56773f3ea5eb3a59.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    Fixed a regression in the new `TaskManager` code which caused programs that
+    were passing in a `TaskManager` that they had been running `start` on to
+    fail due to a double call.
diff --git a/releasenotes/notes/node-boot-devices-2ab4991d75a2ab52.yaml b/releasenotes/notes/node-boot-devices-2ab4991d75a2ab52.yaml
new file mode 100644
index 0000000..c568d9e
--- /dev/null
+++ b/releasenotes/notes/node-boot-devices-2ab4991d75a2ab52.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    Adds ``get_boot_device`` and ``get_supported_boot_devices`` to
+    ``openstack.baremetal.v1.Node``.
+  - |
+    Adds ``get_node_boot_device`` and ``get_node_supported_boot_devices``
+    to the baremetal Proxy.
diff --git a/releasenotes/notes/node-consoles-63589f22da98a689.yaml b/releasenotes/notes/node-consoles-63589f22da98a689.yaml
new file mode 100644
index 0000000..95a2451
--- /dev/null
+++ b/releasenotes/notes/node-consoles-63589f22da98a689.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    Adds ``get_console`` and ``set_console_state`` to
+    ``openstack.baremetal.v1.Node``.
+  - |
+    Adds ``get_node_console``, ``enable_node_console`` and
+    ``disable_node_console`` to the baremetal Proxy.
diff --git a/releasenotes/notes/node-create-027ea99193f344ef.yaml b/releasenotes/notes/node-create-027ea99193f344ef.yaml
new file mode 100644
index 0000000..3f74ff2
--- /dev/null
+++ b/releasenotes/notes/node-create-027ea99193f344ef.yaml
@@ -0,0 +1,9 @@
+---
+upgrade:
+  - |
+    Changes the baremetal ``create_node`` call to be closer to how Ironic
+    behaves. If no provision state is requested, the default state of the
+    current microversion is used (which usually means ``enroll``).
+    If the ``available`` state is requested, the node does not go through
+    cleaning (it won't work without creating ports), an old API version is
+    used to achieve this provision state.
diff --git a/releasenotes/notes/node-inject-nmi-53d12681026e0b6c.yaml b/releasenotes/notes/node-inject-nmi-53d12681026e0b6c.yaml
new file mode 100644
index 0000000..41f0654
--- /dev/null
+++ b/releasenotes/notes/node-inject-nmi-53d12681026e0b6c.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Adds ``inject_nmi`` ``openstack.baremetal.v1.Node``.
+  - |
+    Adds ``inject_nmi_to_node`` to the baremetal Proxy.
diff --git a/releasenotes/notes/node-owner-7f4b083ff9da8cce.yaml b/releasenotes/notes/node-owner-7f4b083ff9da8cce.yaml
new file mode 100644
index 0000000..88fb5f3
--- /dev/null
+++ b/releasenotes/notes/node-owner-7f4b083ff9da8cce.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    The ``openstack.baremetal.v1.Node`` resource now has an ``owner`` property
+    which was added in the baremetal API `microversion 1.50`_.
+
+    .. _microversion 1.50: https://docs.openstack.org/ironic/latest/contributor/webapi-version-history.html#id7
diff --git a/releasenotes/notes/node-set-provision-state-3472cbd81c47458f.yaml b/releasenotes/notes/node-set-provision-state-3472cbd81c47458f.yaml
new file mode 100644
index 0000000..f75f6df
--- /dev/null
+++ b/releasenotes/notes/node-set-provision-state-3472cbd81c47458f.yaml
@@ -0,0 +1,11 @@
+---
+features:
+  - |
+    Adds ``set_provision_state`` and ``wait_for_provision_state`` to
+    ``openstack.baremetal.v1.Node``.
+  - |
+    Adds ``node_set_provision_state`` and ``wait_for_nodes_provision_state``
+    to the baremetal Proxy.
+  - |
+    The ``node_set_provision_state`` call now supports provision states
+    up to the Queens release.
diff --git a/releasenotes/notes/norm_role_assignments-a13f41768e62d40c.yaml b/releasenotes/notes/norm_role_assignments-a13f41768e62d40c.yaml
new file mode 100644
index 0000000..39ee276
--- /dev/null
+++ b/releasenotes/notes/norm_role_assignments-a13f41768e62d40c.yaml
@@ -0,0 +1,4 @@
+---
+fixes:
+  - Role assignments were being returned as plain dicts instead of Munch objects.
+    This has been corrected.
diff --git a/releasenotes/notes/normalize-images-1331bea7bfffa36a.yaml b/releasenotes/notes/normalize-images-1331bea7bfffa36a.yaml
new file mode 100644
index 0000000..bbe2dfb
--- /dev/null
+++ b/releasenotes/notes/normalize-images-1331bea7bfffa36a.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - Image dicts that are returned are now normalized across glance v1
+    and glance v2. Extra key/value properties are now both in the root
+    dict and in a properties dict. Additionally, cloud and region have
+    been added like they are for server.
diff --git a/releasenotes/notes/normalize-machine-290d9f2a3b3a7ef0.yaml b/releasenotes/notes/normalize-machine-290d9f2a3b3a7ef0.yaml
new file mode 100644
index 0000000..04b36e4
--- /dev/null
+++ b/releasenotes/notes/normalize-machine-290d9f2a3b3a7ef0.yaml
@@ -0,0 +1,4 @@
+---
+fixes:
+  - |
+    Fixes normalization of bare metal machines in the ``patch_machine`` call.
diff --git a/releasenotes/notes/nova-flavor-to-rest-0a5757e35714a690.yaml b/releasenotes/notes/nova-flavor-to-rest-0a5757e35714a690.yaml
new file mode 100644
index 0000000..1e1f501
--- /dev/null
+++ b/releasenotes/notes/nova-flavor-to-rest-0a5757e35714a690.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - Nova flavor operations are now handled via REST calls
+    instead of via novaclient. There should be no noticable
+    difference.
diff --git a/releasenotes/notes/nova-old-microversion-5e4b8e239ba44096.yaml b/releasenotes/notes/nova-old-microversion-5e4b8e239ba44096.yaml
new file mode 100644
index 0000000..013ed82
--- /dev/null
+++ b/releasenotes/notes/nova-old-microversion-5e4b8e239ba44096.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - Nova microversion is being requested. Since shade is not yet
+    actively microversion aware, but has been dealing with the 2.0 structures
+    anyway, this should not affect anyone.
diff --git a/releasenotes/notes/object-checksum-generation-ea1c1e47d2290054.yaml b/releasenotes/notes/object-checksum-generation-ea1c1e47d2290054.yaml
new file mode 100644
index 0000000..e27a873
--- /dev/null
+++ b/releasenotes/notes/object-checksum-generation-ea1c1e47d2290054.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add flag for disabling object checksum generation
+
diff --git a/releasenotes/notes/object-chunked-data-ee619b7d4759b8d2.yaml b/releasenotes/notes/object-chunked-data-ee619b7d4759b8d2.yaml
new file mode 100644
index 0000000..99c317a
--- /dev/null
+++ b/releasenotes/notes/object-chunked-data-ee619b7d4759b8d2.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    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.
diff --git a/releasenotes/notes/object-search-a5f5ec4b2df3e045.yaml b/releasenotes/notes/object-search-a5f5ec4b2df3e045.yaml
new file mode 100644
index 0000000..1ac05e9
--- /dev/null
+++ b/releasenotes/notes/object-search-a5f5ec4b2df3e045.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Objects are now searchable both with a JMESPath expression or a dict of
+    object attributes via the
+    ``openstack.connection.Connection.search_object`` function.
diff --git a/releasenotes/notes/old-placement-4b3c34abb8fe7b81.yaml b/releasenotes/notes/old-placement-4b3c34abb8fe7b81.yaml
new file mode 100644
index 0000000..402e873
--- /dev/null
+++ b/releasenotes/notes/old-placement-4b3c34abb8fe7b81.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    Workaround an issue using openstacksdk with older versions of
+    the placement service that are missing a status field in
+    their version discovery doc.
diff --git a/releasenotes/notes/optimize-server-console-1d27c107b9a1cdc3.yaml b/releasenotes/notes/optimize-server-console-1d27c107b9a1cdc3.yaml
new file mode 100644
index 0000000..9cb44b4
--- /dev/null
+++ b/releasenotes/notes/optimize-server-console-1d27c107b9a1cdc3.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Optimizes compute server console creation by adding older
+    get_server_console method to the server and create_console proxy method
+    calling appropriate method depending on the supported microversion.
diff --git a/releasenotes/notes/option-precedence-1fecab21fdfb2c33.yaml b/releasenotes/notes/option-precedence-1fecab21fdfb2c33.yaml
new file mode 100644
index 0000000..06e6bd2
--- /dev/null
+++ b/releasenotes/notes/option-precedence-1fecab21fdfb2c33.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+  - Reverse the order of option selction in
+    ``OpenStackConfig._validate_auth()`` to prefer auth options
+    passed in (from argparse) over those found in clouds.yaml.
+    This allows the application to override config profile
+    auth settings.
diff --git a/releasenotes/notes/port-device-profile-af91e25c45321691.yaml b/releasenotes/notes/port-device-profile-af91e25c45321691.yaml
new file mode 100644
index 0000000..e6abf24
--- /dev/null
+++ b/releasenotes/notes/port-device-profile-af91e25c45321691.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add ``device_profile`` attribute to ``port`` resource. This parameter
+    can be define during the port creation. This parameter is nullable string.
diff --git a/releasenotes/notes/power-wait-751083852f958cb4.yaml b/releasenotes/notes/power-wait-751083852f958cb4.yaml
new file mode 100644
index 0000000..359f1d3
--- /dev/null
+++ b/releasenotes/notes/power-wait-751083852f958cb4.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Support waiting for bare metal power states.
diff --git a/releasenotes/notes/project-cleanup-exclude-option-65cba962eaa5b61a.yaml b/releasenotes/notes/project-cleanup-exclude-option-65cba962eaa5b61a.yaml
new file mode 100644
index 0000000..17516d5
--- /dev/null
+++ b/releasenotes/notes/project-cleanup-exclude-option-65cba962eaa5b61a.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Project cleanup now supports skipping specific resources,
+    which will be kept as-is. Resource names are based on the
+    resource registry names, e. g. "block_storage.volume".
diff --git a/releasenotes/notes/project-cleanup-swift-f67615e5c3ab8fd8.yaml b/releasenotes/notes/project-cleanup-swift-f67615e5c3ab8fd8.yaml
new file mode 100644
index 0000000..8e62029
--- /dev/null
+++ b/releasenotes/notes/project-cleanup-swift-f67615e5c3ab8fd8.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Project cleanup now supports cleaning Swift (object-store). If supported
+    by the server bulk deletion is used. Currently only filtering based on
+    updated_at (last_modified) is supported.
diff --git a/releasenotes/notes/provision-state-negotiation-0155b4d0e932054c.yaml b/releasenotes/notes/provision-state-negotiation-0155b4d0e932054c.yaml
new file mode 100644
index 0000000..3656cf9
--- /dev/null
+++ b/releasenotes/notes/provision-state-negotiation-0155b4d0e932054c.yaml
@@ -0,0 +1,12 @@
+---
+fixes:
+  - |
+    Fixes API version negotiation in the following bare metal node calls:
+
+    * ``set_node_provision_state``
+    * ``set_node_power_state``
+    * ``patch_node``
+
+    Previously an unexpectingly low version could be negotiated, breaking
+    certain features, for example calling the ``provide`` provisioning action
+    with a node name.
diff --git a/releasenotes/notes/python-3.5-629817cec092d528.yaml b/releasenotes/notes/python-3.5-629817cec092d528.yaml
new file mode 100644
index 0000000..472ef33
--- /dev/null
+++ b/releasenotes/notes/python-3.5-629817cec092d528.yaml
@@ -0,0 +1,8 @@
+---
+fixes:
+  - |
+    openstacksdk does not test or support python2 as of 0.40,
+    but the releases have still accidentally worked (except for
+    0.44 which was broken for python2). We're now explicitly
+    marking releases as requiring >= 3.5 so that things don't
+    attempt to install something that's bound to be broken.
diff --git a/releasenotes/notes/qos-min-pps-rule-52df1b150b1d3f68.yaml b/releasenotes/notes/qos-min-pps-rule-52df1b150b1d3f68.yaml
new file mode 100644
index 0000000..dfa95c7
--- /dev/null
+++ b/releasenotes/notes/qos-min-pps-rule-52df1b150b1d3f68.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added QoS minimum packet rate rule object and introduced support for CRUD
+    operations.
diff --git a/releasenotes/notes/qos-port-network-policy-cab43faa0f8bc036.yaml b/releasenotes/notes/qos-port-network-policy-cab43faa0f8bc036.yaml
new file mode 100644
index 0000000..e472ddf
--- /dev/null
+++ b/releasenotes/notes/qos-port-network-policy-cab43faa0f8bc036.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    ``qos_network_policy_id`` attribute support has been added to the network
+    port resource
diff --git a/releasenotes/notes/r1-cab94ae7d749a1ec.yaml b/releasenotes/notes/r1-cab94ae7d749a1ec.yaml
new file mode 100644
index 0000000..3f429a3
--- /dev/null
+++ b/releasenotes/notes/r1-cab94ae7d749a1ec.yaml
@@ -0,0 +1,31 @@
+---
+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.
+upgrade:
+  - |
+    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.
diff --git a/releasenotes/notes/r1-d4efe289ebf0cbcd.yaml b/releasenotes/notes/r1-d4efe289ebf0cbcd.yaml
new file mode 100644
index 0000000..c2e79ad
--- /dev/null
+++ b/releasenotes/notes/r1-d4efe289ebf0cbcd.yaml
@@ -0,0 +1,40 @@
+---
+prelude: >
+    This is a final R1.0 release of the OpenStackSDK. A few technical issues
+    caused us not to reach this milestone cleanly, therefore we decided to one
+    more time explicitly log everything what should be considered as R1.0. For
+    detailed list of changes please see individual release notes from 0.99.0 to
+    0.103.0. Most important changes are explicitly repeated here.  There were
+    issues with maintainability of multiple available access interfaces, which
+    forced us to consider what we are able to maintain in the long run and what
+    we can not. That means that certain things were dropped, which is why we
+    are releasing this as a major release.  R1.0 is considered as a first major
+    release with corresponding promise regarding backwards-compatibility.
+features:
+  - |
+    Cloud layer is now consistently returning ``Resource`` class objects.
+    Previously this was not always the case.
+  - |
+    API response caching is implemented deep inside the code which will
+    minimize roundtrips for repeated requests.
+  - |
+    The majority of services were verified and adapted to the latest state of
+    the API.
+  - |
+    Certain code reorganization to further help in code reduction has been made
+    (metadata, tag and quota support moved to standalone common classes).
+upgrade:
+  - |
+    Cloud layer methods are returning ``Resource`` class objects instead of
+    ``Munch`` objects.  In some cases this cause renaming of the attributes.
+    ``Resource`` class is ``Munch`` compatible and allows both dictionary and
+    attribute base access.
+  - |
+    Some historical methods, which were never properly tested were dropped.
+deprecations:
+  - |
+    ``Munch`` is dropped as a dependency. The project has no releases since
+    multiple years and was causing huge performance impact already during
+    import. This has directly no negative imapct to SDK users (it now starts
+    faster), but in the code we copied used ``Munch`` pieces. They are going to
+    be consistently eliminated in next releases.
diff --git a/releasenotes/notes/rackspace-block-storage-v2-fe0dd69b9e037599.yaml b/releasenotes/notes/rackspace-block-storage-v2-fe0dd69b9e037599.yaml
new file mode 100644
index 0000000..e6b81f9
--- /dev/null
+++ b/releasenotes/notes/rackspace-block-storage-v2-fe0dd69b9e037599.yaml
@@ -0,0 +1,6 @@
+---
+upgrade:
+  - |
+    Rackspace Cloud's vendor profile has been updated to use v2
+    of the Block Storage API. This introduces an endpoint override
+    for the service based on ``region_name`` and ``project_id``.
diff --git a/releasenotes/notes/register-machine-72ac3e65a1ed55b1.yaml b/releasenotes/notes/register-machine-72ac3e65a1ed55b1.yaml
new file mode 100644
index 0000000..ba1eaac
--- /dev/null
+++ b/releasenotes/notes/register-machine-72ac3e65a1ed55b1.yaml
@@ -0,0 +1,6 @@
+---
+upgrade:
+  - |
+    The default behavior of the ``register_machine`` call has been modified to
+    run cleaning by default, if enabled in Ironic. You can pass
+    ``provision_state="enroll"/"manageable"`` to avoid it.
diff --git a/releasenotes/notes/remote-address-group-id-6291816888cb3de7.yaml b/releasenotes/notes/remote-address-group-id-6291816888cb3de7.yaml
new file mode 100644
index 0000000..e1ce095
--- /dev/null
+++ b/releasenotes/notes/remote-address-group-id-6291816888cb3de7.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    Fixes a regression sending an unsupported field
+    ``remote_address_group_id`` when creating security groups with an
+    older Neutron (introduced 0.53.0).
diff --git a/releasenotes/notes/remote-profile-100218d08b25019d.yaml b/releasenotes/notes/remote-profile-100218d08b25019d.yaml
new file mode 100644
index 0000000..5cfe09d
--- /dev/null
+++ b/releasenotes/notes/remote-profile-100218d08b25019d.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    Vendor profiles can now be fetched from an RFC 5785 compliant URL on a
+    cloud, namely, ``https://example.com/.well-known/openstack/api``. A cloud
+    can manage their own vendor profile and serve it from that URL, allowing
+    a user to simply list ``https://example.com`` as the profile name.
diff --git a/releasenotes/notes/remove-auto-container-527f1807605b42c0.yaml b/releasenotes/notes/remove-auto-container-527f1807605b42c0.yaml
new file mode 100644
index 0000000..ef36ff6
--- /dev/null
+++ b/releasenotes/notes/remove-auto-container-527f1807605b42c0.yaml
@@ -0,0 +1,6 @@
+---
+upgrade:
+  - |
+    ``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.
diff --git a/releasenotes/notes/remove-block-store-details-classes-158ab1f46655320a.yaml b/releasenotes/notes/remove-block-store-details-classes-158ab1f46655320a.yaml
new file mode 100644
index 0000000..b53b6b1
--- /dev/null
+++ b/releasenotes/notes/remove-block-store-details-classes-158ab1f46655320a.yaml
@@ -0,0 +1,6 @@
+---
+deprecations:
+  - |
+    Requesting volumes or backups with details from block_storage will return
+    objects of classes Volume and Backup correspondingly, instead
+    of VolumeDetail and BackupDetail.
diff --git a/releasenotes/notes/remove-cloud-caching-layer-2b0384870a45e8a3.yaml b/releasenotes/notes/remove-cloud-caching-layer-2b0384870a45e8a3.yaml
new file mode 100644
index 0000000..e8f60b0
--- /dev/null
+++ b/releasenotes/notes/remove-cloud-caching-layer-2b0384870a45e8a3.yaml
@@ -0,0 +1,7 @@
+---
+upgrade:
+  - |
+    The cloud-layer caching functionality has been removed in favour of the
+    proxy-layer caching functionality first introduced in openstacksdk 1.0.0.
+    This migration to proxy-layer caching was designed to be transparent to
+    end-users and there should be no user-facing impact from this removal.
diff --git a/releasenotes/notes/remove-magnumclient-875b3e513f98f57c.yaml b/releasenotes/notes/remove-magnumclient-875b3e513f98f57c.yaml
new file mode 100644
index 0000000..249d172
--- /dev/null
+++ b/releasenotes/notes/remove-magnumclient-875b3e513f98f57c.yaml
@@ -0,0 +1,4 @@
+---
+upgrade:
+  - magnumclient is no longer a direct dependency as
+    magnum API calls are now made directly via REST.
diff --git a/releasenotes/notes/remove-metric-fe5ddfd52b43c852.yaml b/releasenotes/notes/remove-metric-fe5ddfd52b43c852.yaml
new file mode 100644
index 0000000..971c4e2
--- /dev/null
+++ b/releasenotes/notes/remove-metric-fe5ddfd52b43c852.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - |
+    Removed the metric service. It is not an OpenStack service and does not
+    have an entry in service-types-authority.
diff --git a/releasenotes/notes/remove-novaclient-3f8d4db20d5f9582.yaml b/releasenotes/notes/remove-novaclient-3f8d4db20d5f9582.yaml
new file mode 100644
index 0000000..27db18c
--- /dev/null
+++ b/releasenotes/notes/remove-novaclient-3f8d4db20d5f9582.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - All Nova interactions are done via direct REST calls.
+    python-novaclient is no longer a direct dependency of
+    openstack.cloud.
diff --git a/releasenotes/notes/remove-serverdetails-resource-f66cb278b224627d.yaml b/releasenotes/notes/remove-serverdetails-resource-f66cb278b224627d.yaml
new file mode 100644
index 0000000..4f50e55
--- /dev/null
+++ b/releasenotes/notes/remove-serverdetails-resource-f66cb278b224627d.yaml
@@ -0,0 +1,5 @@
+---
+deprecations:
+  - |
+    Listing servers with details `servers(details=True)` will return
+    instances of the Server class instead of ServerDetails.
diff --git a/releasenotes/notes/removed-deprecated-things-8700fe3592c3bf18.yaml b/releasenotes/notes/removed-deprecated-things-8700fe3592c3bf18.yaml
new file mode 100644
index 0000000..120c7d1
--- /dev/null
+++ b/releasenotes/notes/removed-deprecated-things-8700fe3592c3bf18.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - |
+    In anticipation of the upcoming 1.0 release, all the things that have been
+    marked as deprecated have been removed.
diff --git a/releasenotes/notes/removed-glanceclient-105c7fba9481b9be.yaml b/releasenotes/notes/removed-glanceclient-105c7fba9481b9be.yaml
new file mode 100644
index 0000000..b926f4b
--- /dev/null
+++ b/releasenotes/notes/removed-glanceclient-105c7fba9481b9be.yaml
@@ -0,0 +1,28 @@
+---
+prelude: >
+    The ``shade`` and ``os-client-config`` libraries have been merged
+    in to openstacksdk. As a result, their functionality is being
+    integrated into the sdk functionality, and in some cases is replacing
+    exisiting things.
+
+    The ``openstack.profile.Profile`` and
+    ``openstack.auth.base.BaseAuthPlugin`` classes are no more. Profile has
+    been replace by ``openstack.config.cloud_region.CloudRegion`` from
+    `os-client-config
+    <https://opendev.org/openstack/os-client-config>`_
+    ``openstack.auth.base.BaseAuthPlugin`` has been replaced with the Auth
+    plugins from keystoneauth.
+
+    Service proxy names on the ``openstack.connection.Connection`` are all
+    based on the official names from the OpenStack Service Types Authority.
+
+    ``openstack.proxy.Proxy`` is now a subclass of
+    ``keystoneauth1.adapter.Adapter``. Removed local logic that duplicates
+    keystoneauth logic. This means every proxy also has direct REST primitives
+    available.
+
+      .. code-block:: python
+
+        connection = connection.Connection()
+        servers = connection.compute.servers()
+        server_response = connection.compute.get('/servers')
diff --git a/releasenotes/notes/removed-meter-6f6651b6e452e000.yaml b/releasenotes/notes/removed-meter-6f6651b6e452e000.yaml
new file mode 100644
index 0000000..c4c5a1e
--- /dev/null
+++ b/releasenotes/notes/removed-meter-6f6651b6e452e000.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - |
+    Meter and Alarm services have been removed. The Ceilometer REST API has
+    been deprecated for quite some time and is no longer supported.
diff --git a/releasenotes/notes/removed-profile-437f3038025b0fb3.yaml b/releasenotes/notes/removed-profile-437f3038025b0fb3.yaml
new file mode 100644
index 0000000..84bc3bd
--- /dev/null
+++ b/releasenotes/notes/removed-profile-437f3038025b0fb3.yaml
@@ -0,0 +1,8 @@
+---
+upgrade:
+  - The Profile object has been replaced with the use of
+    CloudRegion objects from openstack.config.
+  - The openstacksdk specific Session object has been removed.
+  - Proxy objects are now subclasses of
+    keystoneauth1.adapter.Adapter.
+  - REST interactions all go through TaskManager now.
diff --git a/releasenotes/notes/removed-profile-b033d870937868a1.yaml b/releasenotes/notes/removed-profile-b033d870937868a1.yaml
new file mode 100644
index 0000000..c5cac15
--- /dev/null
+++ b/releasenotes/notes/removed-profile-b033d870937868a1.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - |
+    ``openstack.profile.Profile`` has been removed. ``openstack.config``
+    should be used directly instead.
diff --git a/releasenotes/notes/removed-swiftclient-aff22bfaeee5f59f.yaml b/releasenotes/notes/removed-swiftclient-aff22bfaeee5f59f.yaml
new file mode 100644
index 0000000..4927c1e
--- /dev/null
+++ b/releasenotes/notes/removed-swiftclient-aff22bfaeee5f59f.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - Removed swiftclient as a dependency. All swift operations
+    are now performed with direct REST calls using keystoneauth
+    Adapter.
diff --git a/releasenotes/notes/rename-base-proxy-b9fcb22d373864a2.yaml b/releasenotes/notes/rename-base-proxy-b9fcb22d373864a2.yaml
new file mode 100644
index 0000000..f34cdd9
--- /dev/null
+++ b/releasenotes/notes/rename-base-proxy-b9fcb22d373864a2.yaml
@@ -0,0 +1,5 @@
+---
+deprecations:
+  - |
+    `openstack.proxy.BaseProxy` has been renamed to `openstack.proxy.Proxy`.
+    A ``BaseProxy`` class remains for easing transition.
diff --git a/releasenotes/notes/rename-resource-methods-5f2a716b08156765.yaml b/releasenotes/notes/rename-resource-methods-5f2a716b08156765.yaml
new file mode 100644
index 0000000..071371c
--- /dev/null
+++ b/releasenotes/notes/rename-resource-methods-5f2a716b08156765.yaml
@@ -0,0 +1,12 @@
+---
+upgrade:
+  - |
+    ``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.
diff --git a/releasenotes/notes/rename-service-force-down-6f462d62959a5315.yaml b/releasenotes/notes/rename-service-force-down-6f462d62959a5315.yaml
new file mode 100644
index 0000000..bad5c79
--- /dev/null
+++ b/releasenotes/notes/rename-service-force-down-6f462d62959a5315.yaml
@@ -0,0 +1,9 @@
+---
+upgrade:
+  - |
+    compute.force_service_down function is renamed to
+    update_service_forced_down to better fit the operation meaning.
+  - |
+    compute.v2.service.force_down is renamed to set_forced_down to fit the operation meaning.
+  - |
+    return of compute.service modification operations is changed to be the service itself
diff --git a/releasenotes/notes/renamed-bare-metal-b1cdbc52af14e042.yaml b/releasenotes/notes/renamed-bare-metal-b1cdbc52af14e042.yaml
new file mode 100644
index 0000000..d39f1a1
--- /dev/null
+++ b/releasenotes/notes/renamed-bare-metal-b1cdbc52af14e042.yaml
@@ -0,0 +1,4 @@
+---
+upgrade:
+  - Renamed bare-metal to baremetal to align with the official
+    service type.
diff --git a/releasenotes/notes/renamed-block-store-bc5e0a7315bfeb67.yaml b/releasenotes/notes/renamed-block-store-bc5e0a7315bfeb67.yaml
new file mode 100644
index 0000000..3d5a5d3
--- /dev/null
+++ b/releasenotes/notes/renamed-block-store-bc5e0a7315bfeb67.yaml
@@ -0,0 +1,4 @@
+---
+upgrade:
+  - The block_store service object has been renamed to block_storage to
+    align the API with the official service types.
diff --git a/releasenotes/notes/renamed-cluster-743da6d321fffcba.yaml b/releasenotes/notes/renamed-cluster-743da6d321fffcba.yaml
new file mode 100644
index 0000000..0796d92
--- /dev/null
+++ b/releasenotes/notes/renamed-cluster-743da6d321fffcba.yaml
@@ -0,0 +1,4 @@
+---
+upgrade:
+  - Renamed cluster to clustering to align with the official
+    service type.
diff --git a/releasenotes/notes/renamed-telemetry-c08ae3e72afca24f.yaml b/releasenotes/notes/renamed-telemetry-c08ae3e72afca24f.yaml
new file mode 100644
index 0000000..5929d4f
--- /dev/null
+++ b/releasenotes/notes/renamed-telemetry-c08ae3e72afca24f.yaml
@@ -0,0 +1,4 @@
+---
+upgrade:
+  - Renamed telemetry to meter to align with the official
+    service type.
diff --git a/releasenotes/notes/replace-appdirs-with-platformdirs-d3f5bcbe726b7829.yaml b/releasenotes/notes/replace-appdirs-with-platformdirs-d3f5bcbe726b7829.yaml
new file mode 100644
index 0000000..01a0815
--- /dev/null
+++ b/releasenotes/notes/replace-appdirs-with-platformdirs-d3f5bcbe726b7829.yaml
@@ -0,0 +1,8 @@
+---
+upgrade:
+  - |
+    The ``appdirs`` dependency is replaced by a requirement for
+    ``platformdirs`` 3.0.0 or later. Users on macOS may need to move
+    configuration files to ``*/Library/Application Support``. See its release
+    notes for further details:
+    https://platformdirs.readthedocs.io/en/latest/changelog.html#platformdirs-3-0-0-2023-02-06
diff --git a/releasenotes/notes/request-stats-9d70480bebbdb4d6.yaml b/releasenotes/notes/request-stats-9d70480bebbdb4d6.yaml
new file mode 100644
index 0000000..04748ca
--- /dev/null
+++ b/releasenotes/notes/request-stats-9d70480bebbdb4d6.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added support for collecting and reporting stats on calls made to
+    statsd and prometheus.
diff --git a/releasenotes/notes/resource-find-filter-by-name-e647e5c507ff4b6c.yaml b/releasenotes/notes/resource-find-filter-by-name-e647e5c507ff4b6c.yaml
new file mode 100644
index 0000000..f736cf9
--- /dev/null
+++ b/releasenotes/notes/resource-find-filter-by-name-e647e5c507ff4b6c.yaml
@@ -0,0 +1,7 @@
+---
+other:
+  - |
+    ``openstack.resource.Resource.find`` now can use the database back-end to
+    filter by name. If the resource class has "name" in the query parameters,
+    this function will add this filter parameter in the "list" command, instead
+    of retrieving the whole list and then manually filtering.
diff --git a/releasenotes/notes/resource2-migration-835590b300bef621.yaml b/releasenotes/notes/resource2-migration-835590b300bef621.yaml
new file mode 100644
index 0000000..ecf6adc
--- /dev/null
+++ b/releasenotes/notes/resource2-migration-835590b300bef621.yaml
@@ -0,0 +1,11 @@
+---
+upgrade:
+  - |
+    The ``Resource2`` and ``Proxy2`` migration has been completed. The original
+    ``Resource`` and ``Proxy`` clases have been removed and replaced with
+    ``Resource2`` and ``Proxy2``.
+deprecations:
+  - |
+    The ``shade`` functionality that has been merged in to openstacksdk is
+    found in ``openstack.cloud`` currently. None of these interfaces should
+    be relied upon as the merge has not yet completed.
diff --git a/releasenotes/notes/retrieve-detailed-view-for-find-proxy-methods-947a3280732c448a.yaml b/releasenotes/notes/retrieve-detailed-view-for-find-proxy-methods-947a3280732c448a.yaml
new file mode 100644
index 0000000..347ac2a
--- /dev/null
+++ b/releasenotes/notes/retrieve-detailed-view-for-find-proxy-methods-947a3280732c448a.yaml
@@ -0,0 +1,25 @@
+---
+features:
+  - |
+    The following proxy ``find_*`` operations will now retrieve a detailed
+    resource by default when retrieving by name:
+
+    * Block storage (v2)
+
+      * ``find_volume``
+      * ``find_snapshot``
+      * ``find_backup``
+
+    * Block storage (v3)
+
+      * ``find_volume``
+      * ``find_snapshot``
+      * ``find_backup``
+      * ``find_group``
+      * ``find_group_snapshot``
+
+    * Compute (v2)
+
+      * ``find_image``
+      * ``find_server``
+      * ``find_hypervisor``
diff --git a/releasenotes/notes/revert-futurist-34acc42fd3f0e7f3.yaml b/releasenotes/notes/revert-futurist-34acc42fd3f0e7f3.yaml
new file mode 100644
index 0000000..28712cd
--- /dev/null
+++ b/releasenotes/notes/revert-futurist-34acc42fd3f0e7f3.yaml
@@ -0,0 +1,8 @@
+---
+upgrade:
+  - |
+    Removed the dependency on futurist, which isn't necessary.
+    Users can still pass futurist executors if they want, as
+    the API is the same, but if nothing is passed,
+    ``concurrent.futures.ThreadPoolExecutor`` will be used as
+    the default.
diff --git a/releasenotes/notes/rework-compute-hypervisor-a62f275a0fd1f074.yaml b/releasenotes/notes/rework-compute-hypervisor-a62f275a0fd1f074.yaml
new file mode 100644
index 0000000..c82bf62
--- /dev/null
+++ b/releasenotes/notes/rework-compute-hypervisor-a62f275a0fd1f074.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Compute Hypervisor resource and functions are reworked to comply 2.88
+    microversion with deprecating misleading attributes.
diff --git a/releasenotes/notes/router-extraroute-atomic-1a0c84c3fd90ceb1.yaml b/releasenotes/notes/router-extraroute-atomic-1a0c84c3fd90ceb1.yaml
new file mode 100644
index 0000000..4edd5c9
--- /dev/null
+++ b/releasenotes/notes/router-extraroute-atomic-1a0c84c3fd90ceb1.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add support for methods of Neutron extension: ``extraroute-atomic``.
diff --git a/releasenotes/notes/router_ext_gw-b86582317bca8b39.yaml b/releasenotes/notes/router_ext_gw-b86582317bca8b39.yaml
new file mode 100644
index 0000000..84d9a1a
--- /dev/null
+++ b/releasenotes/notes/router_ext_gw-b86582317bca8b39.yaml
@@ -0,0 +1,4 @@
+---
+fixes:
+  - No longer fail in list_router_interfaces() if a router does
+    not have the external_gateway_info key.
diff --git a/releasenotes/notes/sdk-helper-41f8d815cfbcfb00.yaml b/releasenotes/notes/sdk-helper-41f8d815cfbcfb00.yaml
new file mode 100644
index 0000000..a18b57d
--- /dev/null
+++ b/releasenotes/notes/sdk-helper-41f8d815cfbcfb00.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Added helper method for constructing OpenStack SDK
+    Connection objects.
diff --git a/releasenotes/notes/search_resource-b9c2f772e01d3b2c.yaml b/releasenotes/notes/search_resource-b9c2f772e01d3b2c.yaml
new file mode 100644
index 0000000..70efca4
--- /dev/null
+++ b/releasenotes/notes/search_resource-b9c2f772e01d3b2c.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    Add search_resources method implementing generic search interface accepting
+    resource name (as "service.resource"), name_or_id and list of additional
+    filters and returning 0 or many resources matching those. This interface is
+    primarily designed to be used by Ansible modules.
diff --git a/releasenotes/notes/server-actions-microversion-support-f14b293d9c3d3d5e.yaml b/releasenotes/notes/server-actions-microversion-support-f14b293d9c3d3d5e.yaml
new file mode 100644
index 0000000..1421a70
--- /dev/null
+++ b/releasenotes/notes/server-actions-microversion-support-f14b293d9c3d3d5e.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Server actions such as reboot and resize will now default to the
+    latest microversion instead of 2.1 as before.
diff --git a/releasenotes/notes/server-create-error-id-66c698c7e633fb8b.yaml b/releasenotes/notes/server-create-error-id-66c698c7e633fb8b.yaml
new file mode 100644
index 0000000..673c7dc
--- /dev/null
+++ b/releasenotes/notes/server-create-error-id-66c698c7e633fb8b.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - server creation errors now include the server id in the
+    Exception to allow people to clean up.
diff --git a/releasenotes/notes/server-security-groups-840ab28c04f359de.yaml b/releasenotes/notes/server-security-groups-840ab28c04f359de.yaml
new file mode 100644
index 0000000..d9de793
--- /dev/null
+++ b/releasenotes/notes/server-security-groups-840ab28c04f359de.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add the `add_server_security_groups` and `remove_server_security_groups`
+    functions to add and remove security groups from a specific server.
diff --git a/releasenotes/notes/service_enabled_flag-c917b305d3f2e8fd.yaml b/releasenotes/notes/service_enabled_flag-c917b305d3f2e8fd.yaml
new file mode 100644
index 0000000..089d297
--- /dev/null
+++ b/releasenotes/notes/service_enabled_flag-c917b305d3f2e8fd.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - Keystone service descriptions were missing an attribute describing whether
+    or not the service was enabled. A new 'enabled' boolean attribute has been
+    added to the service data.
diff --git a/releasenotes/notes/session-client-b581a6e5d18c8f04.yaml b/releasenotes/notes/session-client-b581a6e5d18c8f04.yaml
new file mode 100644
index 0000000..1121901
--- /dev/null
+++ b/releasenotes/notes/session-client-b581a6e5d18c8f04.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - Added kwargs and argparse processing for session_client.
+deprecations:
+  - Renamed simple_client to session_client. simple_client
+    will remain as an alias for backwards compat.
diff --git a/releasenotes/notes/set-bootable-volume-454a7a41e7e77d08.yaml b/releasenotes/notes/set-bootable-volume-454a7a41e7e77d08.yaml
new file mode 100644
index 0000000..c7d84fe
--- /dev/null
+++ b/releasenotes/notes/set-bootable-volume-454a7a41e7e77d08.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Added a ``set_volume_bootable`` call to allow toggling the bootable state
+    of a volume.
diff --git a/releasenotes/notes/shade-helper-568f8cb372eef6d9.yaml b/releasenotes/notes/shade-helper-568f8cb372eef6d9.yaml
new file mode 100644
index 0000000..70aab0a
--- /dev/null
+++ b/releasenotes/notes/shade-helper-568f8cb372eef6d9.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Added helper method for constructing shade
+    OpenStackCloud objects.
diff --git a/releasenotes/notes/shade-into-connection-81191fb3d0ddaf6e.yaml b/releasenotes/notes/shade-into-connection-81191fb3d0ddaf6e.yaml
new file mode 100644
index 0000000..7fdbf3b
--- /dev/null
+++ b/releasenotes/notes/shade-into-connection-81191fb3d0ddaf6e.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    All of the methods formerly part of the ``shade`` library have been added
+    to the `openstack.connection.Connection`` object.
diff --git a/releasenotes/notes/shade-location-b0d2e5cae743b738.yaml b/releasenotes/notes/shade-location-b0d2e5cae743b738.yaml
new file mode 100644
index 0000000..616a475
--- /dev/null
+++ b/releasenotes/notes/shade-location-b0d2e5cae743b738.yaml
@@ -0,0 +1,8 @@
+---
+upgrade:
+  - |
+    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.
diff --git a/releasenotes/notes/snap-updated_at-a46711b6160e3a26.yaml b/releasenotes/notes/snap-updated_at-a46711b6160e3a26.yaml
new file mode 100644
index 0000000..927d6d1
--- /dev/null
+++ b/releasenotes/notes/snap-updated_at-a46711b6160e3a26.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Added support for the updated_at attribute for volume snapshots.
diff --git a/releasenotes/notes/stack-update-5886e91fd6e423bf.yaml b/releasenotes/notes/stack-update-5886e91fd6e423bf.yaml
new file mode 100644
index 0000000..29a1552
--- /dev/null
+++ b/releasenotes/notes/stack-update-5886e91fd6e423bf.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Implement update_stack to perform the update action on existing
+    orchestration stacks.
diff --git a/releasenotes/notes/started-using-reno-242e2b0cd27f9480.yaml b/releasenotes/notes/started-using-reno-242e2b0cd27f9480.yaml
new file mode 100644
index 0000000..d7cfb51
--- /dev/null
+++ b/releasenotes/notes/started-using-reno-242e2b0cd27f9480.yaml
@@ -0,0 +1,3 @@
+---
+other:
+- Started using reno for release notes.
diff --git a/releasenotes/notes/stateful-security-group-f32a78b9bbb49874.yaml b/releasenotes/notes/stateful-security-group-f32a78b9bbb49874.yaml
new file mode 100644
index 0000000..d0d8945
--- /dev/null
+++ b/releasenotes/notes/stateful-security-group-f32a78b9bbb49874.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - New stateful parameter can be used in security group
+
diff --git a/releasenotes/notes/stop-using-tenant-id-42eb35139ba9eeff.yaml b/releasenotes/notes/stop-using-tenant-id-42eb35139ba9eeff.yaml
new file mode 100644
index 0000000..5e4cbb0
--- /dev/null
+++ b/releasenotes/notes/stop-using-tenant-id-42eb35139ba9eeff.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Stop sending tenant_id attribute to Neutron.
diff --git a/releasenotes/notes/story-2010784-21d23043155497f5.yaml b/releasenotes/notes/story-2010784-21d23043155497f5.yaml
new file mode 100644
index 0000000..557eef5
--- /dev/null
+++ b/releasenotes/notes/story-2010784-21d23043155497f5.yaml
@@ -0,0 +1,33 @@
+---
+upgrade:
+  - |
+    Many cloud administrators use universal cloud-wide credentials. This is
+    supported in keystone via 'inherited' roles that can be applied cloud-
+    or domain-wide.
+
+    In previous releases, these credentials could not be usefully defined
+    within ```clouds.yaml``` because ```clouds.yaml``` supports only
+    specifying a single domain and project for auth purposes. This project
+    or domain could not be overridden on the commandline.
+fixes:
+  - |
+    When some config settings are specified multiple times, the order of
+    precendence has been changed to prefer command-line or env settings over
+    those found in ```clouds.yaml```. The same reordering has been done when
+    a setting is specified multiple times within ```clouds.yaml```; now a
+    higher-level setting will take precedence over that specified within
+    the auth section.
+
+    Affected settings are:
+
+    - ``domain_id``
+    - ``domain_name``
+    - ``user_domain_id``
+    - ``user_domain_name``
+    - ``project_domain_id``
+    - ``project_domain_name``
+    - ``auth-token``
+    - ``project_id``
+    - ``tenant_id``
+    - ``project_name``
+    - ``tenant_name``
diff --git a/releasenotes/notes/stream-object-6ecd43511dca726b.yaml b/releasenotes/notes/stream-object-6ecd43511dca726b.yaml
new file mode 100644
index 0000000..9e102c8
--- /dev/null
+++ b/releasenotes/notes/stream-object-6ecd43511dca726b.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Added ``stream_object`` method for getting object content in an iterator.
diff --git a/releasenotes/notes/stream-to-file-91f48d6dcea399c6.yaml b/releasenotes/notes/stream-to-file-91f48d6dcea399c6.yaml
new file mode 100644
index 0000000..60e6d64
--- /dev/null
+++ b/releasenotes/notes/stream-to-file-91f48d6dcea399c6.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - get_object now supports streaming output directly to a file.
diff --git a/releasenotes/notes/strict-mode-d493abc0c3e87945.yaml b/releasenotes/notes/strict-mode-d493abc0c3e87945.yaml
new file mode 100644
index 0000000..ea81b13
--- /dev/null
+++ b/releasenotes/notes/strict-mode-d493abc0c3e87945.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - Added 'strict' mode, which is set by passing strict=True
+    to the OpenStackCloud constructor. strict mode tells shade
+    to only return values in resources that are part of shade's
+    declared data model contract.
diff --git a/releasenotes/notes/strict-proxies-4a315f68f387ee89.yaml b/releasenotes/notes/strict-proxies-4a315f68f387ee89.yaml
new file mode 100644
index 0000000..ae2e11b
--- /dev/null
+++ b/releasenotes/notes/strict-proxies-4a315f68f387ee89.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    Added new option for Connection, ``strict_proxies``. When set to ``True``,
+    Connection will throw a ``ServiceDiscoveryException`` if the endpoint for
+    a given service doesn't work. This is useful for OpenStack services using
+    sdk to talk to other OpenStack services where it can be expected that the
+    deployer config is correct and errors should be reported immediately.
diff --git a/releasenotes/notes/support_stdin_image_upload-305c04fb2daeb32c.yaml b/releasenotes/notes/support_stdin_image_upload-305c04fb2daeb32c.yaml
new file mode 100644
index 0000000..0d315e9
--- /dev/null
+++ b/releasenotes/notes/support_stdin_image_upload-305c04fb2daeb32c.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add support for creating image from STDIN (i.e. from OSC). When creating from STDIN however, no checksum verification is possible, and thus validate_checksum must be also set to False.
diff --git a/releasenotes/notes/swift-set-metadata-c18c60e440f9e4a7.yaml b/releasenotes/notes/swift-set-metadata-c18c60e440f9e4a7.yaml
new file mode 100644
index 0000000..6fe599e
--- /dev/null
+++ b/releasenotes/notes/swift-set-metadata-c18c60e440f9e4a7.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    It is now possible to pass `metadata` parameter directly into the create_container,
+    create_object object_store methods and will not be ignored.
diff --git a/releasenotes/notes/swift-upload-lock-d18f3d42b3a0719a.yaml b/releasenotes/notes/swift-upload-lock-d18f3d42b3a0719a.yaml
new file mode 100644
index 0000000..27848a5
--- /dev/null
+++ b/releasenotes/notes/swift-upload-lock-d18f3d42b3a0719a.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - Fixed an issue where a section of code that was supposed to be resetting
+    the SwiftService object was instead resetting the protective mutex around
+    the SwiftService object leading to an exception of "__exit__"
diff --git a/releasenotes/notes/switch-coe-to-proxy-c18789ed27cc1d95.yaml b/releasenotes/notes/switch-coe-to-proxy-c18789ed27cc1d95.yaml
new file mode 100644
index 0000000..ad4e0e3
--- /dev/null
+++ b/releasenotes/notes/switch-coe-to-proxy-c18789ed27cc1d95.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Convert container_infrastructure_management cloud operations to rely fully
+    on service proxy with all resource classes created.
diff --git a/releasenotes/notes/switch-nova-to-created_at-45b7b50af6a2d59e.yaml b/releasenotes/notes/switch-nova-to-created_at-45b7b50af6a2d59e.yaml
new file mode 100644
index 0000000..68cf0a5
--- /dev/null
+++ b/releasenotes/notes/switch-nova-to-created_at-45b7b50af6a2d59e.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - The `created` field which was returned by the Nova API is now returned as
+    `created_at` as well when not using strict mode for consistency with other
+    models.
diff --git a/releasenotes/notes/switch-to-warnings-333955d19afc99ca.yaml b/releasenotes/notes/switch-to-warnings-333955d19afc99ca.yaml
new file mode 100644
index 0000000..a55c71f
--- /dev/null
+++ b/releasenotes/notes/switch-to-warnings-333955d19afc99ca.yaml
@@ -0,0 +1,7 @@
+---
+upgrade:
+  - |
+    Warnings about deprecated behavior or deprecated/modified APIs are now
+    raised using the ``warnings`` module, rather than the ``logging`` module.
+    This allows users to filter these warnings or silence them entirely if
+    necessary.
diff --git a/releasenotes/notes/task-manager-parameter-c6606653532248f2.yaml b/releasenotes/notes/task-manager-parameter-c6606653532248f2.yaml
new file mode 100644
index 0000000..e1e2c4b
--- /dev/null
+++ b/releasenotes/notes/task-manager-parameter-c6606653532248f2.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    A new ``task_manager`` parameter to ``Connection`` has been added for
+    passing a TaskManager object. This was present in shade and is used by
+    nodepool, but was missing from the Connection constructor.
diff --git a/releasenotes/notes/toggle-port-security-f5bc606e82141feb.yaml b/releasenotes/notes/toggle-port-security-f5bc606e82141feb.yaml
new file mode 100644
index 0000000..821a20f
--- /dev/null
+++ b/releasenotes/notes/toggle-port-security-f5bc606e82141feb.yaml
@@ -0,0 +1,9 @@
+---
+features:
+  - |
+    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.
diff --git a/releasenotes/notes/unprocessed-2d75133911945869.yaml b/releasenotes/notes/unprocessed-2d75133911945869.yaml
new file mode 100644
index 0000000..d873809
--- /dev/null
+++ b/releasenotes/notes/unprocessed-2d75133911945869.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Supports fetching raw (unprocessed) introspection data from the bare metal
+    introspection service.
diff --git a/releasenotes/notes/unshelve-to-specific-host-84666d440dce4a73.yaml b/releasenotes/notes/unshelve-to-specific-host-84666d440dce4a73.yaml
new file mode 100644
index 0000000..5a73890
--- /dev/null
+++ b/releasenotes/notes/unshelve-to-specific-host-84666d440dce4a73.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    Add SDK support for Nova microversion 2.91. This microversion
+    allows specifying a destination host to unshelve a shelve
+    offloaded server. And availability zone can be set to None to unpin
+    the availability zone of a server.
diff --git a/releasenotes/notes/update-role-property-b16e902e913c7b25.yaml b/releasenotes/notes/update-role-property-b16e902e913c7b25.yaml
new file mode 100644
index 0000000..c35cec0
--- /dev/null
+++ b/releasenotes/notes/update-role-property-b16e902e913c7b25.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Added the newly supported ``description`` parameter and the missing
+    ``domain_id`` parameter  to ``Role`` resource.
diff --git a/releasenotes/notes/update_endpoint-f87c1f42d0c0d1ef.yaml b/releasenotes/notes/update_endpoint-f87c1f42d0c0d1ef.yaml
new file mode 100644
index 0000000..a7b6a45
--- /dev/null
+++ b/releasenotes/notes/update_endpoint-f87c1f42d0c0d1ef.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - Added update_endpoint as a new function that allows
+    the user to update a created endpoint with new values
+    rather than deleting and recreating that endpoint.
+    This feature only works with keystone v3, with v2 it
+    will raise an exception stating the feature is not
+    available.
diff --git a/releasenotes/notes/update_workflow-ecdef6056ef2687b.yaml b/releasenotes/notes/update_workflow-ecdef6056ef2687b.yaml
new file mode 100644
index 0000000..516004f
--- /dev/null
+++ b/releasenotes/notes/update_workflow-ecdef6056ef2687b.yaml
@@ -0,0 +1,3 @@
+features:
+  - |
+    Added ``update_workflow`` to the workflow proxy.
diff --git a/releasenotes/notes/use-interface-ip-c5cb3e7c91150096.yaml b/releasenotes/notes/use-interface-ip-c5cb3e7c91150096.yaml
new file mode 100644
index 0000000..14a4fd4
--- /dev/null
+++ b/releasenotes/notes/use-interface-ip-c5cb3e7c91150096.yaml
@@ -0,0 +1,13 @@
+---
+fixes:
+  - shade now correctly does not try to attach a floating ip with auto_ip
+    if the cloud has given a public IPv6 address and the calling context
+    supports IPv6 routing. shade has always used this logic to determine
+    the server 'interface_ip', but the auto floating ip was incorrectly only
+    looking at the 'public_v4' value to determine whether the server needed
+    additional networking.
+upgrade:
+  - If your cloud presents a default split IPv4/IPv6 stack with a public
+    v6 and a private v4 address and you have the expectation that auto_ip
+    should procure a v4 floating ip, you need to set 'force_ipv4' to True in
+    your clouds.yaml entry for the cloud.
diff --git a/releasenotes/notes/use-proxy-layer-dfc3764d52bc1f2a.yaml b/releasenotes/notes/use-proxy-layer-dfc3764d52bc1f2a.yaml
new file mode 100644
index 0000000..5e9882d
--- /dev/null
+++ b/releasenotes/notes/use-proxy-layer-dfc3764d52bc1f2a.yaml
@@ -0,0 +1,7 @@
+---
+upgrade:
+  - |
+    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).
diff --git a/releasenotes/notes/v4-fixed-ip-325740fdae85ffa9.yaml b/releasenotes/notes/v4-fixed-ip-325740fdae85ffa9.yaml
new file mode 100644
index 0000000..99fe5b8
--- /dev/null
+++ b/releasenotes/notes/v4-fixed-ip-325740fdae85ffa9.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+  - |
+    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.
diff --git a/releasenotes/notes/validate-machine-dcf528b8f587e3f0.yaml b/releasenotes/notes/validate-machine-dcf528b8f587e3f0.yaml
new file mode 100644
index 0000000..0f73ae8
--- /dev/null
+++ b/releasenotes/notes/validate-machine-dcf528b8f587e3f0.yaml
@@ -0,0 +1,5 @@
+---
+deprecations:
+  - |
+    The ``OpenStackCloud.validate_node`` call was deprecated in favor of
+    ``OpenStackCloud.validate_machine``.
diff --git a/releasenotes/notes/vendor-add-betacloud-03872c3485104853.yaml b/releasenotes/notes/vendor-add-betacloud-03872c3485104853.yaml
new file mode 100644
index 0000000..8fdded4
--- /dev/null
+++ b/releasenotes/notes/vendor-add-betacloud-03872c3485104853.yaml
@@ -0,0 +1,3 @@
+---
+other:
+  - Add betacloud region for Germany
diff --git a/releasenotes/notes/vendor-add-limestonenetworks-99b2ffab9fc23b08.yaml b/releasenotes/notes/vendor-add-limestonenetworks-99b2ffab9fc23b08.yaml
new file mode 100644
index 0000000..d0e8332
--- /dev/null
+++ b/releasenotes/notes/vendor-add-limestonenetworks-99b2ffab9fc23b08.yaml
@@ -0,0 +1,4 @@
+---
+other:
+  - |
+    Add Limestone Networks vendor info for us-dfw-1 and us-slc regions
diff --git a/releasenotes/notes/vendor-update-betacloud-37dac22d8d91a3c5.yaml b/releasenotes/notes/vendor-update-betacloud-37dac22d8d91a3c5.yaml
new file mode 100644
index 0000000..f2e249d
--- /dev/null
+++ b/releasenotes/notes/vendor-update-betacloud-37dac22d8d91a3c5.yaml
@@ -0,0 +1,3 @@
+---
+other:
+  - Update betacloud region for Germany
diff --git a/releasenotes/notes/vendor-updates-f11184ba56bb27cf.yaml b/releasenotes/notes/vendor-updates-f11184ba56bb27cf.yaml
new file mode 100644
index 0000000..e1d6d41
--- /dev/null
+++ b/releasenotes/notes/vendor-updates-f11184ba56bb27cf.yaml
@@ -0,0 +1,4 @@
+---
+other:
+  - Add citycloud regions for Buffalo, Frankfurt, Karlskrona and Los Angles
+  - Add new DreamCompute cloud and deprecate DreamHost cloud
diff --git a/releasenotes/notes/version-command-70c37dd7f880e9ae.yaml b/releasenotes/notes/version-command-70c37dd7f880e9ae.yaml
new file mode 100644
index 0000000..db9b5d6
--- /dev/null
+++ b/releasenotes/notes/version-command-70c37dd7f880e9ae.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - The installed version can now be quickly checked with ``python -m
+    openstack version``.
diff --git a/releasenotes/notes/version-discovery-a501c4e9e9869f77.yaml b/releasenotes/notes/version-discovery-a501c4e9e9869f77.yaml
new file mode 100644
index 0000000..c55792f
--- /dev/null
+++ b/releasenotes/notes/version-discovery-a501c4e9e9869f77.yaml
@@ -0,0 +1,13 @@
+---
+features:
+  - Version discovery is now done via the keystoneauth
+    library. shade still has one behavioral difference
+    from default keystoneauth behavior, which is that
+    shade will use a version it understands if it can
+    find one even if the user has requested a different
+    version. This change opens the door for shade to
+    start being able to consume API microversions as
+    needed.
+upgrade:
+  - keystoneauth version 3.2.0 or higher is required
+    because of version discovery.
diff --git a/releasenotes/notes/vol-updated_at-274c3a2bb94c8939.yaml b/releasenotes/notes/vol-updated_at-274c3a2bb94c8939.yaml
new file mode 100644
index 0000000..e233714
--- /dev/null
+++ b/releasenotes/notes/vol-updated_at-274c3a2bb94c8939.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Added support for the updated_at attribute for volume objects.
diff --git a/releasenotes/notes/volume-quotas-5b674ee8c1f71eb6.yaml b/releasenotes/notes/volume-quotas-5b674ee8c1f71eb6.yaml
new file mode 100644
index 0000000..2507aac
--- /dev/null
+++ b/releasenotes/notes/volume-quotas-5b674ee8c1f71eb6.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Add new APIs, OperatorCloud.get_volume_quotas(), OperatorCloud.set_volume_quotas() and OperatorCloud.delete_volume_quotas() to manage cinder quotas for projects and users
\ No newline at end of file
diff --git a/releasenotes/notes/volume-types-a07a14ae668e7dd2.yaml b/releasenotes/notes/volume-types-a07a14ae668e7dd2.yaml
new file mode 100644
index 0000000..59fea21
--- /dev/null
+++ b/releasenotes/notes/volume-types-a07a14ae668e7dd2.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add support for listing volume types.
+  - Add support for managing volume type access.
diff --git a/releasenotes/notes/volume-update-876e6540c8471440.yaml b/releasenotes/notes/volume-update-876e6540c8471440.yaml
new file mode 100644
index 0000000..18ac0ed
--- /dev/null
+++ b/releasenotes/notes/volume-update-876e6540c8471440.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Added ``update_volume`` to the block storage proxy.
diff --git a/releasenotes/notes/volume_connector-api-f001e6f5fc4d1688.yaml b/releasenotes/notes/volume_connector-api-f001e6f5fc4d1688.yaml
new file mode 100644
index 0000000..776263c
--- /dev/null
+++ b/releasenotes/notes/volume_connector-api-f001e6f5fc4d1688.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Adds support for the baremetal volume connector API.
diff --git a/releasenotes/notes/wait-on-image-snapshot-27cd2eacab2fabd8.yaml b/releasenotes/notes/wait-on-image-snapshot-27cd2eacab2fabd8.yaml
new file mode 100644
index 0000000..ae434e2
--- /dev/null
+++ b/releasenotes/notes/wait-on-image-snapshot-27cd2eacab2fabd8.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - Adds a new pair of options to create_image_snapshot(), wait and timeout,
+    to have the function wait until the image snapshot being created goes
+    into an active state.
+  - Adds a new function wait_for_image() which will wait for an image to go
+    into an active state.
diff --git a/releasenotes/notes/wait-provision-state-no-fail-efa74dd39f687df8.yaml b/releasenotes/notes/wait-provision-state-no-fail-efa74dd39f687df8.yaml
new file mode 100644
index 0000000..5c4fbca
--- /dev/null
+++ b/releasenotes/notes/wait-provision-state-no-fail-efa74dd39f687df8.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Adds an ability for the bare metal ``wait_for_nodes_provision_state`` call
+    to return an object with nodes that succeeded, failed or timed out instead
+    of raising an exception.
diff --git a/releasenotes/notes/wait_for_server-8dc8446b7c673d36.yaml b/releasenotes/notes/wait_for_server-8dc8446b7c673d36.yaml
new file mode 100644
index 0000000..58bc54c
--- /dev/null
+++ b/releasenotes/notes/wait_for_server-8dc8446b7c673d36.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - New wait_for_server() API call to wait for a server to reach ACTIVE status.
diff --git a/releasenotes/notes/wait_for_status_delete_callback_param-68d30161e23340bb.yaml b/releasenotes/notes/wait_for_status_delete_callback_param-68d30161e23340bb.yaml
new file mode 100644
index 0000000..1e088ef
--- /dev/null
+++ b/releasenotes/notes/wait_for_status_delete_callback_param-68d30161e23340bb.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    The ``Resource.wait_for_status``, ``Resource.wait_for_delete``, and related
+    proxy wrappers now accept a ``callback`` argument that can be used to pass
+    a callback function. When provided, the wait function will attempt to
+    retrieve a ``progress`` value from the resource in question and pass it to
+    the callback function each time it iterates.
diff --git a/releasenotes/notes/wire-in-retries-10898f7bc81e2269.yaml b/releasenotes/notes/wire-in-retries-10898f7bc81e2269.yaml
new file mode 100644
index 0000000..a3de250
--- /dev/null
+++ b/releasenotes/notes/wire-in-retries-10898f7bc81e2269.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    Allows configuring Session's ``connect_retries`` and
+    ``status_code_retries`` via the cloud configuration (options
+    ``<service type>_connect_retries``, ``connect_retries``,
+    ``<service type>_status_code_retries`` and ``status_code_retries``).
diff --git a/releasenotes/notes/workaround-transitive-deps-1e7a214f3256b77e.yaml b/releasenotes/notes/workaround-transitive-deps-1e7a214f3256b77e.yaml
new file mode 100644
index 0000000..aa1b361
--- /dev/null
+++ b/releasenotes/notes/workaround-transitive-deps-1e7a214f3256b77e.yaml
@@ -0,0 +1,9 @@
+---
+fixes:
+  - Added requests and Babel to the direct dependencies list to work around
+    issues with pip installation, entrypoints and transitive dependencies
+    with conflicting exclusion ranges. Packagers of shade do not need to
+    add these two new requirements to shade's dependency list - they are
+    transitive depends and should be satisfied by the other things in the
+    requirements list. Both will be removed from the list again once the
+    python client libraries that pull them in have been removed.
diff --git a/releasenotes/notes/xenapi-use-agent-ecc33e520da81ffa.yaml b/releasenotes/notes/xenapi-use-agent-ecc33e520da81ffa.yaml
new file mode 100644
index 0000000..eeb3ed7
--- /dev/null
+++ b/releasenotes/notes/xenapi-use-agent-ecc33e520da81ffa.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+  - |
+    Updated the Rackspace vendor entry to use `"False"` for the value of
+    `xenapi_use_agent` instead of `false`, because that's what the remote
+    side expects. The recent update to use the Resource layer exposed
+    the incorrect setting causing image uploads to Rackspace to fail.
diff --git a/releasenotes/source/2023.1.rst b/releasenotes/source/2023.1.rst
new file mode 100644
index 0000000..d123847
--- /dev/null
+++ b/releasenotes/source/2023.1.rst
@@ -0,0 +1,6 @@
+===========================
+2023.1 Series Release Notes
+===========================
+
+.. release-notes::
+   :branch: stable/2023.1
diff --git a/releasenotes/source/2023.2.rst b/releasenotes/source/2023.2.rst
new file mode 100644
index 0000000..a4838d7
--- /dev/null
+++ b/releasenotes/source/2023.2.rst
@@ -0,0 +1,6 @@
+===========================
+2023.2 Series Release Notes
+===========================
+
+.. release-notes::
+   :branch: stable/2023.2
diff --git a/releasenotes/source/_static/.placeholder b/releasenotes/source/_static/.placeholder
new file mode 100644
index 0000000..e69de29
diff --git a/releasenotes/source/_templates/.placeholder b/releasenotes/source/_templates/.placeholder
new file mode 100644
index 0000000..e69de29
diff --git a/releasenotes/source/conf.py b/releasenotes/source/conf.py
new file mode 100644
index 0000000..ac4be8e
--- /dev/null
+++ b/releasenotes/source/conf.py
@@ -0,0 +1,278 @@
+# -*- coding: utf-8 -*-
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# oslo.config Release Notes documentation build configuration file, created by
+# sphinx-quickstart on Tue Nov  3 17:40:50 2015.
+#
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+# sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration ------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+    'openstackdocstheme',
+    'reno.sphinxext',
+]
+
+# openstackdocstheme options
+openstackdocs_repo_name = 'openstack/openstacksdk'
+openstackdocs_use_storyboard = False
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+# source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+copyright = '2017, Various members of the OpenStack Foundation'
+
+# Release notes are version independent.
+# The short X.Y version.
+version = ''
+# The full version, including alpha/beta/rc tags.
+release = ''
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+# language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+# today = ''
+# Else, today_fmt is used as the format for a strftime call.
+# today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = []
+
+# The reST default role (used for this markup: `text`) to use for all
+# documents.
+# default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+# add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+# add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+# show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'native'
+
+# A list of ignored prefixes for module index sorting.
+# modindex_common_prefix = []
+
+# If true, keep warnings as "system message" paragraphs in the built documents.
+# keep_warnings = False
+
+
+# -- Options for HTML output ----------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+html_theme = 'openstackdocs'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+# html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+# html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+# html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+# html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+# html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+# html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# Add any extra paths that contain custom files (such as robots.txt or
+# .htaccess) here, relative to this directory. These files are copied
+# directly to the root of the documentation.
+# html_extra_path = []
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+# html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+# html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+# html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+# html_additional_pages = {}
+
+# If false, no module index is generated.
+# html_domain_indices = True
+
+# If false, no index is generated.
+# html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+# html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+# html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+# html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+# html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+# html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+# html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'shadeReleaseNotesdoc'
+
+
+# -- Options for LaTeX output ---------------------------------------------
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+#  author, documentclass [howto, manual, or own class]).
+latex_documents = [
+    (
+        'index',
+        'shadeReleaseNotes.tex',
+        'Shade Release Notes Documentation',
+        'Shade Developers',
+        'manual',
+    ),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+# latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+# latex_use_parts = False
+
+# If true, show page references after internal links.
+# latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+# latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+# latex_appendices = []
+
+# If false, no module index is generated.
+# latex_domain_indices = True
+
+
+# -- Options for manual page output ---------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    (
+        'index',
+        'shadereleasenotes',
+        'shade Release Notes Documentation',
+        ['shade Developers'],
+        1,
+    )
+]
+
+# If true, show URL addresses after external links.
+# man_show_urls = False
+
+
+# -- Options for Texinfo output -------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+    (
+        'index',
+        'shadeReleaseNotes',
+        'shade Release Notes Documentation',
+        'shade Developers',
+        'shadeReleaseNotes',
+        'A client library for interacting with OpenStack clouds',
+        'Miscellaneous',
+    ),
+]
+
+# Documents to append as an appendix to all manuals.
+# texinfo_appendices = []
+
+# If false, no module index is generated.
+# texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+# texinfo_show_urls = 'footnote'
+
+# If true, do not generate a @detailmenu in the "Top" node's menu.
+# texinfo_no_detailmenu = False
+
+# -- Options for Internationalization output ------------------------------
+locale_dirs = ['locale/']
diff --git a/releasenotes/source/index.rst b/releasenotes/source/index.rst
new file mode 100644
index 0000000..cf39fb8
--- /dev/null
+++ b/releasenotes/source/index.rst
@@ -0,0 +1,22 @@
+============================
+ openstacksdk Release Notes
+============================
+
+.. toctree::
+   :maxdepth: 1
+
+   unreleased
+   2023.2
+   2023.1
+   zed
+   yoga
+   xena
+   wallaby
+   victoria
+   ussuri
+   train
+   stein
+   rocky
+   queens
+   pike
+   ocata
diff --git a/releasenotes/source/ocata.rst b/releasenotes/source/ocata.rst
new file mode 100644
index 0000000..ebe62f4
--- /dev/null
+++ b/releasenotes/source/ocata.rst
@@ -0,0 +1,6 @@
+===================================
+ Ocata Series Release Notes
+===================================
+
+.. release-notes::
+   :branch: origin/stable/ocata
diff --git a/releasenotes/source/pike.rst b/releasenotes/source/pike.rst
new file mode 100644
index 0000000..e43bfc0
--- /dev/null
+++ b/releasenotes/source/pike.rst
@@ -0,0 +1,6 @@
+===================================
+ Pike Series Release Notes
+===================================
+
+.. release-notes::
+   :branch: stable/pike
diff --git a/releasenotes/source/queens.rst b/releasenotes/source/queens.rst
new file mode 100644
index 0000000..36ac616
--- /dev/null
+++ b/releasenotes/source/queens.rst
@@ -0,0 +1,6 @@
+===================================
+ Queens Series Release Notes
+===================================
+
+.. release-notes::
+   :branch: stable/queens
diff --git a/releasenotes/source/rocky.rst b/releasenotes/source/rocky.rst
new file mode 100644
index 0000000..40dd517
--- /dev/null
+++ b/releasenotes/source/rocky.rst
@@ -0,0 +1,6 @@
+===================================
+ Rocky Series Release Notes
+===================================
+
+.. release-notes::
+   :branch: stable/rocky
diff --git a/releasenotes/source/stein.rst b/releasenotes/source/stein.rst
new file mode 100644
index 0000000..efaceb6
--- /dev/null
+++ b/releasenotes/source/stein.rst
@@ -0,0 +1,6 @@
+===================================
+ Stein Series Release Notes
+===================================
+
+.. release-notes::
+   :branch: stable/stein
diff --git a/releasenotes/source/train.rst b/releasenotes/source/train.rst
new file mode 100644
index 0000000..5839003
--- /dev/null
+++ b/releasenotes/source/train.rst
@@ -0,0 +1,6 @@
+==========================
+Train Series Release Notes
+==========================
+
+.. release-notes::
+   :branch: stable/train
diff --git a/releasenotes/source/unreleased.rst b/releasenotes/source/unreleased.rst
new file mode 100644
index 0000000..875030f
--- /dev/null
+++ b/releasenotes/source/unreleased.rst
@@ -0,0 +1,5 @@
+============================
+Current Series Release Notes
+============================
+
+.. release-notes::
diff --git a/releasenotes/source/ussuri.rst b/releasenotes/source/ussuri.rst
new file mode 100644
index 0000000..e21e50e
--- /dev/null
+++ b/releasenotes/source/ussuri.rst
@@ -0,0 +1,6 @@
+===========================
+Ussuri Series Release Notes
+===========================
+
+.. release-notes::
+   :branch: stable/ussuri
diff --git a/releasenotes/source/victoria.rst b/releasenotes/source/victoria.rst
new file mode 100644
index 0000000..4efc7b6
--- /dev/null
+++ b/releasenotes/source/victoria.rst
@@ -0,0 +1,6 @@
+=============================
+Victoria Series Release Notes
+=============================
+
+.. release-notes::
+   :branch: stable/victoria
diff --git a/releasenotes/source/wallaby.rst b/releasenotes/source/wallaby.rst
new file mode 100644
index 0000000..d77b565
--- /dev/null
+++ b/releasenotes/source/wallaby.rst
@@ -0,0 +1,6 @@
+============================
+Wallaby Series Release Notes
+============================
+
+.. release-notes::
+   :branch: stable/wallaby
diff --git a/releasenotes/source/xena.rst b/releasenotes/source/xena.rst
new file mode 100644
index 0000000..1be85be
--- /dev/null
+++ b/releasenotes/source/xena.rst
@@ -0,0 +1,6 @@
+=========================
+Xena Series Release Notes
+=========================
+
+.. release-notes::
+   :branch: stable/xena
diff --git a/releasenotes/source/yoga.rst b/releasenotes/source/yoga.rst
new file mode 100644
index 0000000..43cafde
--- /dev/null
+++ b/releasenotes/source/yoga.rst
@@ -0,0 +1,6 @@
+=========================
+Yoga Series Release Notes
+=========================
+
+.. release-notes::
+   :branch: unmaintained/yoga
diff --git a/releasenotes/source/zed.rst b/releasenotes/source/zed.rst
new file mode 100644
index 0000000..9608c05
--- /dev/null
+++ b/releasenotes/source/zed.rst
@@ -0,0 +1,6 @@
+========================
+Zed Series Release Notes
+========================
+
+.. release-notes::
+   :branch: stable/zed
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..ad1c7e9
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,13 @@
+cryptography>=2.7 # BSD/Apache-2.0
+decorator>=4.4.1 # BSD
+dogpile.cache>=0.6.5 # BSD
+iso8601>=0.1.11 # MIT
+jmespath>=0.9.0 # MIT
+jsonpatch!=1.20,>=1.16 # BSD
+keystoneauth1>=3.18.0 # Apache-2.0
+netifaces>=0.10.4 # MIT
+os-service-types>=1.7.0 # Apache-2.0
+pbr!=2.1.0,>=2.0.0 # Apache-2.0
+platformdirs>=3 # MIT License
+PyYAML>=3.13 # MIT
+requestsexceptions>=1.2.0 # Apache-2.0
diff --git a/roles/deploy-clouds-config/README.rst b/roles/deploy-clouds-config/README.rst
new file mode 100644
index 0000000..e69de29
diff --git a/roles/deploy-clouds-config/defaults/main.yaml b/roles/deploy-clouds-config/defaults/main.yaml
new file mode 100644
index 0000000..9739eb1
--- /dev/null
+++ b/roles/deploy-clouds-config/defaults/main.yaml
@@ -0,0 +1 @@
+zuul_work_dir: "{{ zuul.project.src_dir }}"
diff --git a/roles/deploy-clouds-config/tasks/main.yaml b/roles/deploy-clouds-config/tasks/main.yaml
new file mode 100644
index 0000000..f10533b
--- /dev/null
+++ b/roles/deploy-clouds-config/tasks/main.yaml
@@ -0,0 +1,11 @@
+- name: Create OpenStack config dir
+  ansible.builtin.file:
+    dest: ~/.config/openstack
+    state: directory
+    recurse: true
+
+- name: Deploy clouds.yaml
+  ansible.builtin.template:
+    src: clouds.yaml.j2
+    dest: ~/.config/openstack/clouds.yaml
+    mode: 0440
diff --git a/roles/deploy-clouds-config/templates/clouds.yaml.j2 b/roles/deploy-clouds-config/templates/clouds.yaml.j2
new file mode 100644
index 0000000..267d900
--- /dev/null
+++ b/roles/deploy-clouds-config/templates/clouds.yaml.j2
@@ -0,0 +1,2 @@
+---
+{{ cloud_config | to_nice_yaml }}
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..f1a3521
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,55 @@
+[metadata]
+name = openstacksdk
+summary = An SDK for building applications to work with OpenStack
+description_file =
+    README.rst
+author = OpenStack
+author_email = openstack-discuss@lists.openstack.org
+home_page = https://docs.openstack.org/openstacksdk/
+classifier =
+    Environment :: OpenStack
+    Intended Audience :: Information Technology
+    Intended Audience :: System Administrators
+    License :: OSI Approved :: Apache Software License
+    Operating System :: POSIX :: Linux
+    Programming Language :: Python
+    Programming Language :: Python :: 3
+    Programming Language :: Python :: 3.7
+    Programming Language :: Python :: 3.8
+    Programming Language :: Python :: 3.9
+    Programming Language :: Python :: 3.10
+    Programming Language :: Python :: 3.11
+python_requires = >=3.7
+
+[files]
+packages =
+    openstack
+
+# TODO(mordred) Move this to an OSC command before 1.0
+[entry_points]
+console_scripts =
+    openstack-inventory = openstack.cloud.cmd.inventory:main
+
+[mypy]
+show_column_numbers = true
+show_error_context = true
+ignore_missing_imports = true
+# follow_imports = normal
+follow_imports = skip
+incremental = true
+check_untyped_defs = true
+warn_unused_ignores = false
+# keep this in-sync with 'mypy.exclude' in '.pre-commit-config.yaml'
+# TODO(stephenfin) Eventually we should remove everything here except the
+# unit tests module
+exclude = (?x)(
+    openstack/tests/ansible
+    | openstack/tests/functional
+    | openstack/tests/unit
+    | openstack/tests/fixtures.py
+    | openstack/cloud
+    | openstack/fixture
+    | doc
+    | examples
+    | releasenotes
+  )
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..83c92e2
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,19 @@
+# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
+import setuptools
+
+setuptools.setup(setup_requires=['pbr>=2.0.0'], pbr=True)
diff --git a/test-requirements.txt b/test-requirements.txt
new file mode 100644
index 0000000..b771e0c
--- /dev/null
+++ b/test-requirements.txt
@@ -0,0 +1,13 @@
+coverage!=4.4,>=4.0 # Apache-2.0
+ddt>=1.0.1 # MIT
+fixtures>=3.0.0 # Apache-2.0/BSD
+hacking>=3.1.0,<4.0.0 # Apache-2.0
+jsonschema>=3.2.0 # MIT
+oslo.config>=6.1.0 # Apache-2.0
+oslotest>=3.2.0 # Apache-2.0
+prometheus-client>=0.4.2 # Apache-2.0
+requests-mock>=1.2.0 # Apache-2.0
+statsd>=3.3.0
+stestr>=1.0.0 # Apache-2.0
+testscenarios>=0.4 # Apache-2.0/BSD
+testtools>=2.2.0 # MIT
diff --git a/tools/keystone_version.py b/tools/keystone_version.py
new file mode 100644
index 0000000..8ca504e
--- /dev/null
+++ b/tools/keystone_version.py
@@ -0,0 +1,92 @@
+# Copyright (c) 2017 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import pprint
+import sys
+from urllib import parse as urlparse
+
+import openstack.config
+
+
+def print_versions(r):
+    if 'version' in r:
+        for version in r['version']:
+            print_version(version)
+    if 'values' in r:
+        for version in r['values']:
+            print_version(version)
+    if isinstance(r, list):
+        for version in r:
+            print_version(version)
+
+
+def print_version(version):
+    if version['status'] in ('CURRENT', 'stable'):
+        print(
+            "\tVersion ID: {id} updated {updated}".format(
+                id=version.get('id'), updated=version.get('updated')
+            )
+        )
+
+
+verbose = '-v' in sys.argv
+ran = []
+for cloud in openstack.config.OpenStackConfig().get_all_clouds():
+    if cloud.name in ran:
+        continue
+    ran.append(cloud.name)
+    # We don't actually need a compute client - but we'll be getting full urls
+    # anyway. Without this SSL cert info becomes wrong.
+    c = cloud.get_session_client('compute')
+    endpoint = cloud.config['auth']['auth_url']
+    try:
+        print(endpoint)
+        r = c.get(endpoint).json()
+        if verbose:
+            pprint.pprint(r)
+    except Exception as e:
+        print("Error with {cloud}: {e}".format(cloud=cloud.name, e=str(e)))
+        continue
+    if 'version' in r:
+        print_version(r['version'])
+        url = urlparse.urlparse(endpoint)
+        parts = url.path.split(':')
+        if len(parts) == 2:
+            path, port = parts
+        else:
+            path = url.path
+            port = None
+        stripped = path.rsplit('/', 2)[0]
+        if port:
+            stripped = '{stripped}:{port}'.format(stripped=stripped, port=port)
+        endpoint = urlparse.urlunsplit(
+            (url.scheme, url.netloc, stripped, url.params, url.query)
+        )
+        print("  also {endpoint}".format(endpoint=endpoint))
+        try:
+            r = c.get(endpoint).json()
+            if verbose:
+                pprint.pprint(r)
+        except Exception:
+            print("\tUnauthorized")
+            continue
+        if 'version' in r:
+            print_version(r)
+        elif 'versions' in r:
+            print_versions(r['versions'])
+        else:
+            print("\n\nUNKNOWN\n\n{r}".format(r=r))
+    else:
+        print_versions(r['versions'])
diff --git a/tools/nova_version.py b/tools/nova_version.py
new file mode 100644
index 0000000..ad8ea0c
--- /dev/null
+++ b/tools/nova_version.py
@@ -0,0 +1,61 @@
+# Copyright (c) 2017 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import openstack.config
+
+ran = []
+for cloud in openstack.config.OpenStackConfig().get_all_clouds():
+    if cloud.name in ran:
+        continue
+    ran.append(cloud.name)
+    c = cloud.get_session_client('compute')
+    try:
+        raw_endpoint = c.get_endpoint()
+        have_current = False
+        endpoint = raw_endpoint.rsplit('/', 2)[0]
+        print(endpoint)
+        r = c.get(endpoint).json()
+    except Exception:
+        print("Error with %s" % cloud.name)
+        continue
+    for version in r['versions']:
+        if version['status'] == 'CURRENT':
+            have_current = True
+            print(
+                "\tVersion ID: {id} updated {updated}".format(
+                    id=version.get('id'), updated=version.get('updated')
+                )
+            )
+            print("\tVersion Max: {max}".format(max=version.get('version')))
+            print(
+                "\tVersion Min: {min}".format(min=version.get('min_version'))
+            )
+    if not have_current:
+        for version in r['versions']:
+            if version['status'] == 'SUPPORTED':
+                have_current = True
+                print(
+                    "\tVersion ID: {id} updated {updated}".format(
+                        id=version.get('id'), updated=version.get('updated')
+                    )
+                )
+                print(
+                    "\tVersion Max: {max}".format(max=version.get('version'))
+                )
+                print(
+                    "\tVersion Min: {min}".format(
+                        min=version.get('min_version')
+                    )
+                )
diff --git a/tools/print-services.py b/tools/print-services.py
new file mode 100644
index 0000000..6b9c95b
--- /dev/null
+++ b/tools/print-services.py
@@ -0,0 +1,135 @@
+# Copyright 2018 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import importlib
+import warnings
+
+import os_service_types
+
+from openstack import _log
+from openstack import service_description
+
+_logger = _log.setup_logging('openstack')
+_service_type_manager = os_service_types.ServiceTypes()
+
+
+def make_names():
+    imports = ['from openstack import service_description']
+    services = []
+
+    for service in _service_type_manager.services:
+        service_type = service['service_type']
+        if service_type == 'ec2-api':
+            # NOTE(mordred) It doesn't make any sense to use ec2-api
+            # from openstacksdk. The credentials API calls are all calls
+            # on identity endpoints.
+            continue
+        desc_class = _find_service_description_class(service_type)
+
+        st = service_type.replace('-', '_')
+
+        if desc_class.__module__ != 'openstack.service_description':
+            base_mod, dm = desc_class.__module__.rsplit('.', 1)
+            imports.append(
+                'from {base_mod} import {dm}'.format(base_mod=base_mod, dm=dm)
+            )
+        else:
+            dm = 'service_description'
+
+        dc = desc_class.__name__
+        services.append(
+            "{st} = {dm}.{dc}(service_type='{service_type}')".format(
+                st=st, dm=dm, dc=dc, service_type=service_type
+            ),
+        )
+
+        # Register the descriptor class with every known alias. Don't
+        # add doc strings though - although they are supported, we don't
+        # want to give anybody any bad ideas. Making a second descriptor
+        # does not introduce runtime cost as the descriptors all use
+        # the same _proxies dict on the instance.
+        for alias_name in _get_aliases(st):
+            if alias_name[-1].isdigit():
+                continue
+            services.append(
+                '{alias_name} = {st}'.format(alias_name=alias_name, st=st)
+            )
+        services.append('')
+    print("# Generated file, to change, run tools/print-services.py")
+    for imp in sorted(imports):
+        print(imp)
+    print('\n')
+    print("class ServicesMixin:\n")
+    for service in services:
+        if service:
+            print("    {service}".format(service=service))
+        else:
+            print()
+
+
+def _get_aliases(service_type, aliases=None):
+    # We make connection attributes for all official real type names
+    # and aliases. Three services have names they were called by in
+    # openstacksdk that are not covered by Service Types Authority aliases.
+    # Include them here - but take heed, no additional values should ever
+    # be added to this list.
+    # that were only used in openstacksdk resource naming.
+    LOCAL_ALIASES = {
+        'baremetal': 'bare_metal',
+        'block_storage': 'block_store',
+        'clustering': 'cluster',
+    }
+    all_types = set(_service_type_manager.get_aliases(service_type))
+    if aliases:
+        all_types.update(aliases)
+    if service_type in LOCAL_ALIASES:
+        all_types.add(LOCAL_ALIASES[service_type])
+    all_aliases = set()
+    for alias in all_types:
+        all_aliases.add(alias.replace('-', '_'))
+    return all_aliases
+
+
+def _find_service_description_class(service_type):
+    package_name = f'openstack.{service_type}'.replace('-', '_')
+    module_name = service_type.replace('-', '_') + '_service'
+    class_name = ''.join(
+        [part.capitalize() for part in module_name.split('_')]
+    )
+
+    # We have some exceptions :(
+    # This should have been called 'shared-filesystem'
+    if service_type == 'shared-file-system':
+        class_name = 'SharedFilesystemService'
+
+    try:
+        import_name = '.'.join([package_name, module_name])
+        service_description_module = importlib.import_module(import_name)
+    except ImportError as e:
+        # ImportWarning is ignored by default. This warning is here
+        # as an opt-in for people trying to figure out why something
+        # didn't work.
+        warnings.warn(
+            f"Could not import {service_type} service description: {str(e)}",
+            ImportWarning,
+        )
+        return service_description.ServiceDescription
+
+    # There are no cases in which we should have a module but not the class
+    # inside it.
+    service_description_class = getattr(service_description_module, class_name)
+    return service_description_class
+
+
+make_names()
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 0000000..693535a
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,166 @@
+[tox]
+minversion = 4.3.0
+envlist = pep8,py3
+
+[testenv]
+description =
+    Run unit tests.
+passenv =
+    OS_*
+    OPENSTACKSDK_*
+setenv =
+    LANG=en_US.UTF-8
+    LANGUAGE=en_US:en
+    LC_ALL=C
+    OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:true}
+    OS_STDOUT_CAPTURE={env:OS_STDOUT_CAPTURE:true}
+    OS_STDERR_CAPTURE={env:OS_STDERR_CAPTURE:true}
+deps =
+    -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+    -r{toxinidir}/test-requirements.txt
+    -r{toxinidir}/requirements.txt
+commands =
+    stestr run {posargs}
+    stestr slowest
+
+[testenv:functional{,-py37,-py38,-py39,-py310,-py311,-py312}]
+description =
+    Run functional tests.
+# Some jobs (especially heat) takes longer, therefore increase default timeout
+# This timeout should not be smaller, than the longest individual timeout
+setenv =
+    {[testenv]setenv}
+    OS_TEST_TIMEOUT=600
+    OPENSTACKSDK_FUNC_TEST_TIMEOUT_LOAD_BALANCER=600
+    OPENSTACKSDK_EXAMPLE_CONFIG_KEY=functional
+    OPENSTACKSDK_FUNC_TEST_TIMEOUT_PROJECT_CLEANUP=1200
+commands =
+    stestr --test-path ./openstack/tests/functional/{env:OPENSTACKSDK_TESTS_SUBDIR:} run --serial {posargs}
+    stestr slowest
+
+# Acceptance tests are the ones running on real clouds
+[testenv:acceptance-regular-user]
+description =
+    Run acceptance tests.
+# This env intends to test functions of a regular user without admin privileges
+# Some jobs (especially heat) takes longer, therefore increase default timeout
+# This timeout should not be smaller, than the longest individual timeout
+setenv =
+    {[testenv]setenv}
+    OS_TEST_TIMEOUT=600
+    OPENSTACKSDK_FUNC_TEST_TIMEOUT_LOAD_BALANCER=600
+    # OPENSTACKSDK_DEMO_CLOUD and OS_CLOUD should point to the cloud to test
+    # Othee clouds are explicitly set empty to let tests detect absense
+    OPENSTACKSDK_DEMO_CLOUD_ALT=
+    OPENSTACKSDK_OPERATOR_CLOUD=
+commands =
+    stestr --test-path ./openstack/tests/functional/{env:OPENSTACKSDK_TESTS_SUBDIR:} run --serial {posargs} --include-list include-acceptance-regular-user.txt
+    stestr slowest
+
+[testenv:pep8]
+description =
+    Run style checks.
+deps =
+    pre-commit
+commands =
+    pre-commit run --all-files --show-diff-on-failure
+
+[testenv:venv]
+description =
+    Run specified command in a virtual environment with all dependencies installed.
+deps =
+    -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+    -r{toxinidir}/test-requirements.txt
+    -r{toxinidir}/requirements.txt
+    -r{toxinidir}/doc/requirements.txt
+commands = {posargs}
+
+[testenv:debug]
+description =
+    Run specified tests through oslo_debug_helper, which allows use of pdb.
+# allow 1 year, or 31536000 seconds, to debug a test before it times out
+setenv =
+    OS_TEST_TIMEOUT=31536000
+allowlist_externals = find
+commands =
+    find . -type f -name "*.pyc" -delete
+    oslo_debug_helper -t openstack/tests {posargs}
+
+[testenv:cover]
+description =
+    Run unit tests and generate coverage report.
+setenv =
+    {[testenv]setenv}
+    PYTHON=coverage run --source openstack --parallel-mode
+commands =
+    stestr run {posargs}
+    coverage combine
+    coverage html -d cover
+    coverage xml -o cover/coverage.xml
+
+[testenv:ansible]
+description =
+    Run ansible tests.
+# Need to pass some env vars for the Ansible playbooks
+passenv =
+    HOME
+    USER
+    ANSIBLE_VAR_*
+deps =
+    {[testenv]deps}
+    ansible
+commands = {toxinidir}/extras/run-ansible-tests.sh -e {envdir} {posargs}
+
+[testenv:docs]
+description =
+    Build documentation in HTML format.
+deps =
+    -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+    -r{toxinidir}/doc/requirements.txt
+commands =
+    sphinx-build -W --keep-going -b html -j auto doc/source/ doc/build/html
+
+[testenv:pdf-docs]
+description =
+    Build documentation in PDF format.
+deps = {[testenv:docs]deps}
+allowlist_externals =
+    make
+commands =
+    sphinx-build -W --keep-going -b latex -j auto doc/source/ doc/build/pdf
+    make -C doc/build/pdf
+
+[testenv:releasenotes]
+description =
+    Build release note documentation in HTML format.
+deps =
+    -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+    -r{toxinidir}/doc/requirements.txt
+commands =
+    sphinx-build -W --keep-going -b html -j auto releasenotes/source releasenotes/build/html
+
+[flake8]
+application-import-names = openstack
+# The following are ignored on purpose. It's not super worth it to fix them.
+# However, if you feel strongly about it, patches will be accepted to fix them
+# if they fix ALL of the occurances of one and only one of them.
+# E203 Black will put spaces after colons in list comprehensions
+# E501 Black takes care of line length for us
+# H238 New Style Classes are the default in Python3
+# H301 Black will put commas after imports that can't fit on one line
+# H4 Are about docstrings and there's just a huge pile of pre-existing issues.
+# W503 Is supposed to be off by default but in the latest pycodestyle isn't.
+#      Also, both openstacksdk and Donald Knuth disagree with the rule. Line
+#      breaks should occur before the binary operator for readability.
+ignore = E203, E501, H301, H238, H4, W503
+import-order-style = pep8
+show-source = True
+exclude = .venv,.git,.tox,dist,doc,*lib/python*,*egg,build,openstack/_services_mixin.py
+
+[flake8:local-plugins]
+extension =
+  O300 = _hacking:assert_no_setupclass
+paths = ./openstack
+
+[doc8]
+extensions = .rst, .yaml
diff --git a/zuul.d/acceptance-jobs.yaml b/zuul.d/acceptance-jobs.yaml
new file mode 100644
index 0000000..3a94fdc
--- /dev/null
+++ b/zuul.d/acceptance-jobs.yaml
@@ -0,0 +1,156 @@
+---
+- semaphore:
+    name: acceptance-cleura
+    max: 1
+
+- job:
+    name: openstacksdk-acceptance-base
+    parent: openstack-tox
+    description: |
+      Acceptance test of the OpenStackSDK on real clouds.
+
+      .. zuul:jobsvar::openstack_credentials
+        :type: dict
+
+        This is expected to be a Zuul Secret with these keys:
+
+        .. zuul:jobvar: auth
+          :type: dict
+
+           Dictionary with authentication information with mandatory auth_url
+           and others. The structure mimics `clouds.yaml` structure.
+
+      By default all jobs that inherit from here are non voting.
+
+    attempts: 1
+    voting: false
+    timeout: 3600
+    pre-run:
+      - playbooks/acceptance/pre.yaml
+    post-run:
+      - playbooks/acceptance/post.yaml
+    vars:
+      tox_envlist: acceptance-regular-user
+      tox_environment:
+        OPENSTACKSDK_DEMO_CLOUD: acceptance
+        OS_CLOUD: acceptance
+        OS_TEST_CLOUD: acceptance
+
+# Acceptance tests for devstack are different from running for real cloud since
+# we need to actually deploy devstack first and API is available only on the
+# devstack host.
+- job:
+    name: openstacksdk-acceptance-devstack
+    parent: openstacksdk-functional-devstack
+    description: Acceptance test of the OpenStackSDK on real clouds.
+    attempts: 1
+    run:
+      - playbooks/acceptance/run-with-devstack.yaml
+    post-run:
+      - playbooks/acceptance/post.yaml
+    vars:
+      tox_envlist: acceptance-regular-user
+      tox_environment:
+        OPENSTACKSDK_DEMO_CLOUD: acceptance
+        OS_CLOUD: acceptance
+        OS_TEST_CLOUD: acceptance
+      auth_url: "https://{{ hostvars['controller']['nodepool']['private_ipv4'] }}/identity"
+    secrets:
+      - secret: credentials-devstack
+        name: openstack_credentials
+
+- job:
+    name: openstacksdk-acceptance-cleura
+    parent: openstacksdk-acceptance-base
+    description: Acceptance tests of the OpenStackSDK on Cleura
+    semaphores:
+      - name: acceptance-cleura
+    secrets:
+      - secret: credentials-cleura
+        name: openstack_credentials
+        pass-to-parent: true
+
+# Devstack secret is not specifying auth_url because of how Zuul treats secrets.
+# Auth_url comes extra in the job vars and is being used if no auth_url in the
+# secret is present.
+- secret:
+    name: credentials-devstack
+    data:
+      auth:
+        username: demo
+        password: secretadmin
+        project_domain_id: default
+        project_name: demo
+        user_domain_id: default
+      region_name: RegionOne
+      verify: false
+
+# Contact: tobias [xdot] rydberg [mat] citynetwork [xdot] eu
+- secret:
+    name: credentials-cleura
+    data:
+      auth:
+        auth_url: https://fra1.citycloud.com:5000
+        user_domain_name: !encrypted/pkcs1-oaep
+          - B2+GBOl0HqQJ0umGR/8y6Y1SS+O6h7OK6rTa54797UavexKVxx2RZ144wPmW+IogX2QU2
+            tWtGBveQnZTpI19nxlnLmQQA+YSz8RIzJoFuStBmiITyCHQnvRJPc7kObjnZJLuoVwCT2
+            Rl3u1iGzJb/ZZvVDjvYH2ZW7a6aH+Ct7HfB+CGhvhETeoMAFDgb29QJ5U/T3OkVdTMwCY
+            XDtdwg2JvoErd2gnNCqYDcIiOMO6lXKcc+35VQtGMGfoaUvu+iMlEi9pJqbdVd7qz5lgY
+            AWBPG1mYt1mOaP8RRvzywhyRPnnnFgfUe2rf2ZozEUa7j4ObwXt7D8oRYXm+USEpk+YfD
+            9V3CvGvAgmPuuidGWwnZdPcNX/w/VW5p9oWRgJFYChb5+XCu7y0tFJX/usduZEY9/MvJs
+            Iv0+OFf1TXc29qFqwGYVSyfimBroGFdYXmHSwK7wHJ1GUsdSRhQz4eYIdk+6c4LNx9JgO
+            5Z+3Q29tlh9WwuuQKE/JlKJ/1I9LC0RmyJyxSaiTLDiL+7J2O/hULmyZimbXVcYuXqDdo
+            KAdPryYhmWWyBFkZfUa88GxwVf+WDLQqXhv+CDGRusbW2opVvv6p7NUwLh9PPOGnRLsS2
+            y1fZDVtz60ZMp8MQPACYjlzvc2lF5Z1Cvskr3O9KbT27V7AyLXmU+tbMrDLpC0=
+        project_domain_name: !encrypted/pkcs1-oaep
+          - B2+GBOl0HqQJ0umGR/8y6Y1SS+O6h7OK6rTa54797UavexKVxx2RZ144wPmW+IogX2QU2
+            tWtGBveQnZTpI19nxlnLmQQA+YSz8RIzJoFuStBmiITyCHQnvRJPc7kObjnZJLuoVwCT2
+            Rl3u1iGzJb/ZZvVDjvYH2ZW7a6aH+Ct7HfB+CGhvhETeoMAFDgb29QJ5U/T3OkVdTMwCY
+            XDtdwg2JvoErd2gnNCqYDcIiOMO6lXKcc+35VQtGMGfoaUvu+iMlEi9pJqbdVd7qz5lgY
+            AWBPG1mYt1mOaP8RRvzywhyRPnnnFgfUe2rf2ZozEUa7j4ObwXt7D8oRYXm+USEpk+YfD
+            9V3CvGvAgmPuuidGWwnZdPcNX/w/VW5p9oWRgJFYChb5+XCu7y0tFJX/usduZEY9/MvJs
+            Iv0+OFf1TXc29qFqwGYVSyfimBroGFdYXmHSwK7wHJ1GUsdSRhQz4eYIdk+6c4LNx9JgO
+            5Z+3Q29tlh9WwuuQKE/JlKJ/1I9LC0RmyJyxSaiTLDiL+7J2O/hULmyZimbXVcYuXqDdo
+            KAdPryYhmWWyBFkZfUa88GxwVf+WDLQqXhv+CDGRusbW2opVvv6p7NUwLh9PPOGnRLsS2
+            y1fZDVtz60ZMp8MQPACYjlzvc2lF5Z1Cvskr3O9KbT27V7AyLXmU+tbMrDLpC0=
+        project_name: !encrypted/pkcs1-oaep
+          - IRSHyf964g3q7vHY08reyx69cGDLG/+kkEnZ4fs4qiwBw1RL1wKW3r3Omi1PLXDHHCHfC
+            jlRrwvZh80CzG3nqt94WSiASjn4XvZtCV0++UZxCkdEs/2SXN1YYpBGLqotM91NhQHCpo
+            Xu6KD7U8ckZgjAQFzV/rF7pnFSvzb14PQqBiQ4Ei7nFyrg6sW20ratjC+pBboUORPvPjG
+            wuY/lt8kRXYnPlI/oeFngXMl/WD7z5k0kLwUcg/z9x3uF6b6xozR8Vzjal13RR7FU5Tu7
+            T5Qr8uREPHlK8aU90XnNrlJqIAfIFuAlmZCeckIMlVqGjGBekI2W/zPXhL/SjR2SNeTIl
+            SwKfInnT0SfGqKTAjgPJAocZSNppt4ql1EsS3Rdp8SQ0EGW7pXs73svexNRhh4k1m7gM1
+            54OoyS2wtMaTR3Q3L92ZuT2DdxmPbvXThbRO5P2g0yDpp/HuWkQyHq9b1tZD+p7akU7p+
+            g8fIQFKFueFP0T6XszQSPySjjaTZOWd0CQC2oTlivcf7oZ4etp22Zh7IDCXWLX39C2LkF
+            XLBaEa9LRxn1UwJ2bz2nUPjqDsOz2nRskC9Yz0XOOEKMokJ4POj+uac1iRfAf+hAGd9uE
+            7rNIp/7oV5ABOimJ5bgCI1SWAsz2F1lRq+bulzbONLmWfPik52bo/elXTxRais=
+        username: !encrypted/pkcs1-oaep
+          - bTHRzdAYEKXeFhrU3sBRN19ygO2t2zzXdeuB4DQq7Q+7VW7Apo8Vo1eaqpqjUnpI2jPG+
+            DJSg0ZG3tUsnRwwKo3N8RzwFNWj5wcUEtHjmFgMmLBvlv9Jv6OeN7R7AH7b21agTMTvwz
+            X7hGWbYSEgDLn80uNTwcm4GVA0mycXDtIvZ4lPiCGkUJYav9++YbGYzDyiy2pBgVU0r5G
+            7GTO+cHQWUw+LL/scBijL4khLIxiHNgUNNfgAYOI/JQ720DxXSDF30SN8fRy0H0jl54Gr
+            w0exl9QPBjI+o+qvFKq2Bni8dTp96MaC8pDxP/1/R8mEMYD2Ei3Ame1dfeUz7OgrQfpQv
+            xlDSE/sM2/g0PG3YlpG+aCllZ1el2qM/B+pyq5JXf26swp1RdjehvUSIi3gQaqkC3qpRt
+            2FgZDKdHW6PYRmRlCphS5WK1otdCQEvyJ+s4QB4PooMcD4rqAf5hURGd5zr/aajqmEgXX
+            eJKeLQrQD+4yJWeopcq7a66R3LeL07Dko2LWWlL6adGeQ5yd3eIZK7zwObTVE64DSbXDs
+            3UI8U6Qa3EMlrfEk8TXcK1QW2EM1JFiPBSm9e8zojTtg/caAyROXgn1T9qv0FKMcJZrOo
+            Qt+n7vv1wkCSUoUEQFIadcMUn5EoXeTcRbjAOsRFN/OOh6+4jyNTh17cOC5dkc=
+        password: !encrypted/pkcs1-oaep
+          - FbeRKkCs2YlDYm944EUuUbY2mVcTwSgE00gMZokmXR2WjKqRsuLFpkOe9opndwqV1tUyj
+            mxAGizoGlzI+Lg8VnS47zShM+UqgaNzC148iY+WBuLXAEoxS3c9Gxz03Gm/Q2Tu6MJoCG
+            OY8JvQkq+pjwkV61sIawTfQRTZkwjFO8F/viSOuF75PDZthY5SuMN5MEJ8B8Ska0WNbjw
+            Edo623gZnyZsPvZwnqnP+yK0HW0smohKkvjHPZ5SGFiQ0G3eTSHaL5wrYWbkcZ5Gb4UgX
+            x1edebv0ata0fZ8nhIwTrDIVe9icuijuV1ZkvHMGPvB50fkup4/QyObx6QUhL6D0mXaK5
+            fIq+dgrzkvcoODrwpXvBVxjNYnM+DBeMbN0V8d4vDvsRPsWCxIenETse1gD0PJyXx29br
+            /Vild1xO1JnxoU469fl/gzdntyoV/QaLDteLKMFJISAFuVrcCEUz63s37iKAy6LnCtv/J
+            PjciFvc2OR0cGUC/an3xtmqi18GWcWdinaBA0+OEnArdOdSc79MTZnMifICAeCQ3yiEnA
+            001hbBrRYTHgitpo4gYJOFMVufhcfvq6yB9wi3MqvpKP8wGH2SyNz7y5Gy9zbUgQFsRP7
+            2h3LRDRCVGYBVgBLD5mcIMn93HddOko8Q8RO8qVZM13R39dgGAi0KMEhF3bpjA=
+
+# We define additional project entity not to handle acceptance jobs in
+# already complex enough general project entity.
+- project:
+    post-review:
+      jobs:
+        - openstacksdk-acceptance-devstack
+        - openstacksdk-acceptance-cleura
diff --git a/zuul.d/functional-jobs.yaml b/zuul.d/functional-jobs.yaml
new file mode 100644
index 0000000..b0933a8
--- /dev/null
+++ b/zuul.d/functional-jobs.yaml
@@ -0,0 +1,469 @@
+---
+# Definitions of functional jobs
+- job:
+    name: openstacksdk-functional-devstack-minimum
+    parent: devstack-tox-functional
+    description: |
+      Minimum job for devstack-based functional tests
+    post-run: playbooks/devstack/post.yaml
+    roles:
+      # NOTE: We pull in roles from the tempest repo for stackviz processing.
+      - zuul: opendev.org/openstack/tempest
+    required-projects:
+      # These jobs will DTRT when openstacksdk triggers them, but we want to
+      # make sure stable branches of openstacksdk never get cloned by other
+      # people, since stable branches of openstacksdk are, well, not actually
+      # things.
+      - name: openstack/openstacksdk
+        override-branch: master
+      - name: openstack/os-client-config
+        override-branch: master
+    timeout: 9000
+    vars:
+      devstack_localrc:
+        Q_ML2_PLUGIN_EXT_DRIVERS: qos,port_security
+        Q_AGENT: openvswitch
+        Q_ML2_TENANT_NETWORK_TYPE: vxlan
+        Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
+      devstack_services:
+        # OVN services
+        ovn-controller: false
+        ovn-northd: false
+        ovs-vswitchd: false
+        ovsdb-server: false
+        q-ovn-metadata-agent: false
+        # Neutron services
+        q-agt: true
+        q-dhcp: true
+        q-l3: true
+        q-metering: true
+        q-svc: true
+        # sdk doesn't need vnc access
+        n-cauth: false
+        n-novnc: false
+        # sdk testing uses config drive only
+        n-api-meta: false
+        q-meta: false
+      tox_environment:
+        # Do we really need to set this? It's cargo culted
+        PYTHONUNBUFFERED: 'true'
+        # Is there a way we can query the localconf variable to get these
+        # rather than setting them explicitly?
+        OPENSTACKSDK_HAS_DESIGNATE: 0
+        OPENSTACKSDK_HAS_HEAT: 0
+        OPENSTACKSDK_HAS_MAGNUM: 0
+        OPENSTACKSDK_HAS_NEUTRON: 1
+        OPENSTACKSDK_HAS_SWIFT: 1
+      tox_install_siblings: false
+      tox_envlist: functional
+      zuul_copy_output:
+          '{{ ansible_user_dir }}/stackviz': logs
+      zuul_work_dir: src/opendev.org/openstack/openstacksdk
+
+- job:
+    name: openstacksdk-functional-devstack-base
+    parent: openstacksdk-functional-devstack-minimum
+    description: |
+      Base job for devstack-based functional tests
+    vars:
+      devstack_plugins:
+        neutron: https://opendev.org/openstack/neutron
+      devstack_local_conf:
+        post-config:
+          $CINDER_CONF:
+            DEFAULT:
+              osapi_max_limit: 6
+
+- job:
+    name: openstacksdk-functional-devstack
+    parent: openstacksdk-functional-devstack-base
+    description: |
+      Run openstacksdk functional tests against a master devstack
+    required-projects:
+      - openstack/heat
+    vars:
+      devstack_localrc:
+        DISABLE_AMP_IMAGE_BUILD: true
+        Q_SERVICE_PLUGIN_CLASSES: qos,trunk
+        # TODO(frickler): drop this once heat no longer needs it
+        KEYSTONE_ADMIN_ENDPOINT: true
+      devstack_plugins:
+        heat: https://opendev.org/openstack/heat
+      tox_environment:
+        OPENSTACKSDK_HAS_HEAT: 1
+      devstack_services:
+        neutron-qos: true
+        neutron-trunk: true
+        neutron-port-forwarding: true
+
+- job:
+    name: openstacksdk-functional-devstack-networking
+    parent: openstacksdk-functional-devstack
+    description: |
+      Run openstacksdk functional tests against a devstack with advanced
+      networking services enabled.
+    required-projects:
+      - openstack/designate
+      - openstack/octavia
+    vars:
+      configure_swap_size: 4096
+      devstack_local_conf:
+        post-config:
+          $OCTAVIA_CONF:
+            DEFAULT:
+              debug: true
+            controller_worker:
+              amphora_driver: amphora_noop_driver
+              compute_driver: compute_noop_driver
+              network_driver: network_noop_driver
+            certificates:
+              cert_manager: local_cert_manager
+      devstack_localrc:
+        Q_SERVICE_PLUGIN_CLASSES: qos,trunk
+      devstack_plugins:
+        designate: https://opendev.org/openstack/designate
+        octavia: https://opendev.org/openstack/octavia
+      devstack_services:
+        designate: true
+        octavia: true
+        o-api: true
+        o-cw: true
+        o-hm: true
+        o-hk: true
+        neutron-dns: true
+        s-account: false
+        s-container: false
+        s-object: false
+        s-proxy: false
+        h-eng: false
+        h-api: false
+        h-api-cfn: false
+      tox_environment:
+        OPENSTACKSDK_HAS_DESIGNATE: 1
+        OPENSTACKSDK_HAS_SWIFT: 0
+        OPENSTACKSDK_HAS_HEAT: 0
+
+- job:
+    name: openstacksdk-functional-devstack-networking-ext
+    parent: openstacksdk-functional-devstack-networking
+    description: |
+      Run openstacksdk functional tests against a devstack with super advanced
+      networking services enabled (VPNaas, FWaas) which still require ovs.
+    required-projects:
+      - openstack/neutron-fwaas
+      - openstack/neutron-vpnaas
+    vars:
+      INSTALL_OVN: False
+      configure_swap_size: 4096
+      devstack_local_conf:
+        post-config:
+          $OCTAVIA_CONF:
+            DEFAULT:
+              debug: true
+            controller_worker:
+              amphora_driver: amphora_noop_driver
+              compute_driver: compute_noop_driver
+              network_driver: network_noop_driver
+            certificates:
+              cert_manager: local_cert_manager
+          $NEUTRON_CONF:
+            DEFAULT:
+              router_distributed: True
+              l3_ha: True
+          "/$NEUTRON_CORE_PLUGIN_CONF":
+            ovs:
+              tunnel_bridge: br-tun
+              bridge_mappings: public:br-ex
+          $NEUTRON_L3_CONF:
+            DEFAULT:
+              agent_mode: dvr_snat
+            agent:
+              availability_zone: nova
+              debug_iptables_rules: True
+          $NEUTRON_DHCP_CONF:
+            agent:
+              availability_zone: nova
+      devstack_localrc:
+        Q_SERVICE_PLUGIN_CLASSES: qos,trunk
+        NETWORK_API_EXTENSIONS: "agent,binding,dhcp_agent_scheduler,external-net,ext-gw-mode,extra_dhcp_opts,quotas,router,security-group,subnet_allocation,network-ip-availability,auto-allocated-topology,timestamp_core,tag,service-type,rbac-policies,standard-attr-description,pagination,sorting,project-id,fwaas_v2,vpnaas"
+        Q_AGENT: openvswitch
+        Q_ML2_TENANT_NETWORK_TYPE: vxlan
+        Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
+        IPSEC_PACKAGE: libreswan
+      devstack_plugins:
+        designate: https://opendev.org/openstack/designate
+        octavia: https://opendev.org/openstack/octavia
+        neutron-fwaas: https://opendev.org/openstack/neutron-fwaas.git
+        neutron-vpnaas: https://opendev.org/openstack/neutron-vpnaas.git
+      devstack_services:
+        designate: true
+        octavia: true
+        o-api: true
+        o-cw: true
+        o-hm: true
+        o-hk: true
+        neutron-dns: true
+        s-account: false
+        s-container: false
+        s-object: false
+        s-proxy: false
+        h-eng: false
+        h-api: false
+        h-api-cfn: false
+        q-fwaas-v2: true
+      tox_environment:
+        OPENSTACKSDK_HAS_DESIGNATE: 1
+        OPENSTACKSDK_HAS_SWIFT: 0
+        OPENSTACKSDK_HAS_HEAT: 0
+
+- job:
+    name: openstacksdk-functional-devstack-tips
+    parent: openstacksdk-functional-devstack
+    description: |
+      Run openstacksdk functional tests with tips of library dependencies
+      against a master devstack.
+    required-projects:
+      - openstack/keystoneauth
+      - openstack/openstacksdk
+      - openstack/os-client-config
+    vars:
+      tox_install_siblings: true
+
+- job:
+    name: openstacksdk-functional-devstack-magnum
+    parent: openstacksdk-functional-devstack
+    description: |
+      Run openstacksdk functional tests against a master devstack with magnum
+    required-projects:
+      - openstack/magnum
+      - openstack/python-magnumclient
+    vars:
+      devstack_plugins:
+        magnum: https://opendev.org/openstack/magnum
+      devstack_localrc:
+        MAGNUM_GUEST_IMAGE_URL: https://tarballs.openstack.org/magnum/images/fedora-atomic-f23-dib.qcow2
+        MAGNUM_IMAGE_NAME: fedora-atomic-f23-dib
+      devstack_services:
+        s-account: false
+        s-container: false
+        s-object: false
+        s-proxy: false
+      tox_environment:
+        OPENSTACKSDK_HAS_SWIFT: 0
+        OPENSTACKSDK_HAS_MAGNUM: 1
+
+- job:
+    name: openstacksdk-functional-devstack-senlin
+    parent: openstacksdk-functional-devstack
+    description: |
+      Run openstacksdk functional tests against a master devstack with senlin
+    required-projects:
+      - openstack/senlin
+    vars:
+      devstack_plugins:
+        senlin: https://opendev.org/openstack/senlin
+      devstack_services:
+        s-account: false
+        s-container: false
+        s-object: false
+        s-proxy: false
+      tox_environment:
+        OPENSTACKSDK_HAS_SWIFT: 0
+        OPENSTACKSDK_HAS_SENLIN: 1
+
+- job:
+    name: openstacksdk-functional-devstack-ironic
+    parent: openstacksdk-functional-devstack-minimum
+    description: |
+      Run openstacksdk functional tests against a master devstack with ironic
+    required-projects:
+      - openstack/ironic
+      - openstack/ironic-python-agent-builder
+    vars:
+      devstack_localrc:
+        OVERRIDE_PUBLIC_BRIDGE_MTU: 1400
+        IRONIC_BAREMETAL_BASIC_OPS: true
+        IRONIC_BUILD_DEPLOY_RAMDISK: false
+        IRONIC_CALLBACK_TIMEOUT: 600
+        IRONIC_DEPLOY_DRIVER: ipmi
+        IRONIC_RAMDISK_TYPE: tinyipa
+        IRONIC_VM_COUNT: 2
+        IRONIC_VM_LOG_DIR: '{{ devstack_base_dir }}/ironic-bm-logs'
+        IRONIC_VM_SPECS_RAM: 1024
+      devstack_plugins:
+        ironic: https://opendev.org/openstack/ironic
+      devstack_services:
+        c-api: false
+        c-bak: false
+        c-sch: false
+        c-vol: false
+        cinder: false
+        s-account: false
+        s-container: false
+        s-object: false
+        s-proxy: false
+        n-api: false
+        n-api-meta: false
+        n-cauth: false
+        n-cond: false
+        n-cpu: false
+        n-novnc: false
+        n-obj: false
+        n-sch: false
+        nova: false
+        placement-api: false
+        dstat: false
+      tox_environment:
+        OPENSTACKSDK_HAS_IRONIC: 1
+        # NOTE(dtantsur): this job cannot run many regular tests (e.g. compute
+        # tests will take too long), so limiting it to baremetal tests only.
+        OPENSTACKSDK_TESTS_SUBDIR: baremetal
+      zuul_copy_output:
+        '{{ devstack_base_dir }}/ironic-bm-logs': logs
+
+- job:
+    name: openstacksdk-ansible-functional-devstack
+    parent: openstacksdk-functional-devstack
+    description: |
+      Run openstacksdk ansible functional tests against a master devstack
+      using released version of ansible.
+    vars:
+      tox_envlist: ansible
+
+- job:
+    name: openstacksdk-ansible-stable-2.8-functional-devstack
+    parent: openstacksdk-ansible-functional-devstack
+    description: |
+      Run openstacksdk ansible functional tests against a master devstack
+      using git stable-2.8 branch version of ansible.
+    required-projects:
+      - name: github.com/ansible/ansible
+        override-checkout: stable-2.8
+      - name: openstack/openstacksdk
+        override-checkout: master
+      - name: openstack/devstack
+        override-checkout: master
+    vars:
+      # test-matrix grabs branch from the zuul branch setting. If the job
+      # is triggered by ansible, that branch will be devel which doesn't
+      # make sense to devstack. Override so that we run the right thing.
+      test_matrix_branch: master
+      tox_install_siblings: true
+
+- job:
+    name: openstacksdk-ansible-stable-2.9-functional-devstack
+    parent: openstacksdk-ansible-functional-devstack
+    description: |
+      Run openstacksdk ansible functional tests against a master devstack
+      using git stable-2.9 branch version of ansible.
+    required-projects:
+      - name: github.com/ansible/ansible
+        override-checkout: stable-2.9
+      - name: openstack/openstacksdk
+        override-checkout: master
+      - name: openstack/devstack
+        override-checkout: master
+    vars:
+      # test-matrix grabs branch from the zuul branch setting. If the job
+      # is triggered by ansible, that branch will be devel which doesn't
+      # make sense to devstack. Override so that we run the right thing.
+      test_matrix_branch: master
+      tox_install_siblings: true
+
+- job:
+    name: openstacksdk-functional-devstack-masakari
+    parent: openstacksdk-functional-devstack-minimum
+    description: |
+      Run openstacksdk functional tests against a master devstack with masakari
+    required-projects:
+      - openstack/masakari
+      - openstack/masakari-monitors
+    vars:
+      devstack_plugins:
+        masakari: https://opendev.org/openstack/masakari
+      devstack_services:
+        masakari-api: true
+        masakari-engine: true
+      tox_environment:
+        OPENSTACKSDK_HAS_MASAKARI: 1
+        OPENSTACKSDK_TESTS_SUBDIR: instance_ha
+      zuul_copy_output:
+        '{{ devstack_base_dir }}/masakari-logs': logs
+
+- job:
+    name: openstacksdk-functional-devstack-manila
+    parent: openstacksdk-functional-devstack-minimum
+    description: |
+      Run openstacksdk functional tests against a master devstack with manila
+    required-projects:
+      - openstack/manila
+      - openstack/openstacksdk
+    vars:
+      devstack_localrc:
+        # Set up manila with a fake driver - makes things super fast and should
+        # have no impact on the API
+        MANILA_INSTALL_TEMPEST_PLUGIN_SYSTEMWIDE: false
+        SHARE_DRIVER: manila.tests.share.drivers.dummy.DummyDriver
+        MANILA_CONFIGURE_GROUPS: alpha,beta,gamma,membernet
+        MANILA_CONFIGURE_DEFAULT_TYPES: true
+        MANILA_SERVICE_IMAGE_ENABLED: false
+        MANILA_SHARE_MIGRATION_PERIOD_TASK_INTERVAL: 1
+        MANILA_SERVER_MIGRATION_PERIOD_TASK_INTERVAL: 10
+        MANILA_REPLICA_STATE_UPDATE_INTERVAL: 10
+        MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS: 'snapshot_support=True create_share_from_snapshot_support=True revert_to_snapshot_support=True mount_snapshot_support=True'
+        MANILA_ENABLED_BACKENDS: alpha,beta,gamma
+        MANILA_OPTGROUP_alpha_driver_handles_share_servers: false
+        MANILA_OPTGROUP_alpha_replication_domain: DUMMY_DOMAIN
+        MANILA_OPTGROUP_alpha_share_backend_name: ALPHA
+        MANILA_OPTGROUP_alpha_share_driver: manila.tests.share.drivers.dummy.DummyDriver
+        MANILA_OPTGROUP_beta_driver_handles_share_servers: false
+        MANILA_OPTGROUP_beta_replication_domain: DUMMY_DOMAIN
+        MANILA_OPTGROUP_beta_share_backend_name: BETA
+        MANILA_OPTGROUP_beta_share_driver: manila.tests.share.drivers.dummy.DummyDriver
+        MANILA_OPTGROUP_gamma_driver_handles_share_servers: true
+        MANILA_OPTGROUP_gamma_network_config_group: membernet
+        MANILA_OPTGROUP_gamma_share_backend_name: GAMMA
+        MANILA_OPTGROUP_gamma_share_driver: manila.tests.share.drivers.dummy.DummyDriver
+        MANILA_OPTGROUP_gamma_admin_network_config_group: membernet
+        MANILA_OPTGROUP_membernet_network_api_class: manila.network.standalone_network_plugin.StandaloneNetworkPlugin
+        MANILA_OPTGROUP_membernet_network_plugin_ipv4_enabled: true
+        MANILA_OPTGROUP_membernet_standalone_network_plugin_allowed_ip_ranges: 10.0.0.10-10.0.0.209
+        MANILA_OPTGROUP_membernet_standalone_network_plugin_gateway: 10.0.0.1
+        MANILA_OPTGROUP_membernet_standalone_network_plugin_mask: 24
+        MANILA_OPTGROUP_membernet_standalone_network_plugin_network_type: vlan
+        MANILA_OPTGROUP_membernet_standalone_network_plugin_segmentation_id: 1010
+      devstack_plugins:
+        manila: https://opendev.org/openstack/manila
+      devstack_services:
+        c-api: false
+        c-bak: false
+        c-sch: false
+        c-vol: false
+        cinder: false
+        s-account: false
+        s-container: false
+        s-object: false
+        s-proxy: false
+        n-api: false
+        n-api-meta: false
+        n-cauth: false
+        n-cond: false
+        n-cpu: false
+        n-novnc: false
+        n-obj: false
+        n-sch: false
+        nova: false
+        placement-api: false
+        dstat: false
+      tox_environment:
+        OPENSTACKSDK_HAS_MANILA: 1
+        OPENSTACKSDK_TESTS_SUBDIR: shared_file_system
+
+- project-template:
+    name: openstacksdk-functional-tips
+    check:
+      jobs:
+        - openstacksdk-functional-devstack-tips
+    gate:
+      jobs:
+        - openstacksdk-functional-devstack-tips
diff --git a/zuul.d/metal-jobs.yaml b/zuul.d/metal-jobs.yaml
new file mode 100644
index 0000000..a9da322
--- /dev/null
+++ b/zuul.d/metal-jobs.yaml
@@ -0,0 +1,32 @@
+---
+# Definitions of Ironic based jobs with a dedicated project entry to keep them
+# out of general entry.
+- job:
+    name: metalsmith-integration-openstacksdk-src
+    parent: metalsmith-integration-glance-netboot-cirros-direct
+    required-projects:
+      - openstack/openstacksdk
+
+- job:
+    name: bifrost-integration-openstacksdk-src
+    parent: bifrost-integration-tinyipa-ubuntu-jammy
+    required-projects:
+      - openstack/ansible-collections-openstack
+      - openstack/openstacksdk
+
+- job:
+    name: ironic-inspector-tempest-openstacksdk-src
+    parent: ironic-inspector-tempest
+    required-projects:
+      - openstack/openstacksdk
+
+- project:
+    check:
+      jobs:
+        # Ironic jobs, non-voting to avoid tight coupling
+        - ironic-inspector-tempest-openstacksdk-src:
+            voting: false
+        - bifrost-integration-openstacksdk-src:
+            voting: false
+        - metalsmith-integration-openstacksdk-src:
+            voting: false
diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml
new file mode 100644
index 0000000..284d200
--- /dev/null
+++ b/zuul.d/project.yaml
@@ -0,0 +1,48 @@
+---
+# Central project entity. It pulls general templates and basic jobs.
+# functional-jobs, metal-jobs and acceptance-jobs are being
+# merged with this entity into singe one.
+- project:
+    templates:
+      - check-requirements
+      - openstack-python3-jobs
+      - openstacksdk-functional-tips
+      - openstacksdk-tox-tips
+      - os-client-config-tox-tips
+      - osc-tox-unit-tips
+      - publish-openstack-docs-pti
+      - release-notes-jobs-python3
+    check:
+      jobs:
+        - opendev-buildset-registry
+        - nodepool-build-image-siblings:
+            voting: false
+        - dib-nodepool-functional-openstack-centos-8-stream-src:
+            voting: false
+        - openstacksdk-functional-devstack
+        - openstacksdk-functional-devstack-networking
+        - openstacksdk-functional-devstack-networking-ext
+        - openstacksdk-functional-devstack-senlin
+        - openstacksdk-functional-devstack-magnum:
+            voting: false
+        - openstacksdk-functional-devstack-manila:
+            voting: false
+        - openstacksdk-functional-devstack-masakari:
+            voting: false
+        - openstacksdk-functional-devstack-ironic:
+            voting: false
+        - osc-functional-devstack-tips:
+            voting: false
+        - ansible-collections-openstack-functional-devstack:
+            voting: false
+    gate:
+      jobs:
+        - opendev-buildset-registry
+        - nodepool-build-image-siblings:
+            voting: false
+        - dib-nodepool-functional-openstack-centos-8-stream-src:
+            voting: false
+        - openstacksdk-functional-devstack
+        - openstacksdk-functional-devstack-networking
+        - openstacksdk-functional-devstack-networking-ext
+        - openstacksdk-functional-devstack-senlin
-- 
GitLab