diff --git a/README.rst b/README.rst
index 55be8bab208ee360c86d1688c312668cdaf1fb85..a3a0625699d8a056680fba28888d8ee49ec1ebff 100644
--- a/README.rst
+++ b/README.rst
@@ -1,9 +1,313 @@
-# Openstacksdk
+============
+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.
 
-Openstacksdk with custom patch (https://review.opendev.org/c/openstack/openstacksdk/+/874541) manually applied to this repo. 
+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.
 
-As of february 2024 the patch is not applied upstream.
+More information about the history of openstacksdk can be found at
+https://docs.openstack.org/openstacksdk/latest/contributor/history.html
 
-This patch is needed in order to make the custom openstack ansible collection (https://git.garr.it/cloud/os/ansible-collections-openstack) work.
+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/openstack/README.md b/openstack/README.md
deleted file mode 100644
index 55be8bab208ee360c86d1688c312668cdaf1fb85..0000000000000000000000000000000000000000
--- a/openstack/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Openstacksdk
-
-
-Openstacksdk with custom patch (https://review.opendev.org/c/openstack/openstacksdk/+/874541) manually applied to this repo. 
-
-As of february 2024 the patch is not applied upstream.
-
-This patch is needed in order to make the custom openstack ansible collection (https://git.garr.it/cloud/os/ansible-collections-openstack) work.
-
diff --git a/openstack/__pycache__/__init__.cpython-310.pyc b/openstack/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index d7c155f41ca79c5452a09c04dc6680a4beeb307d..0000000000000000000000000000000000000000
Binary files a/openstack/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/__pycache__/__main__.cpython-310.pyc b/openstack/__pycache__/__main__.cpython-310.pyc
deleted file mode 100644
index 44091ba30fef38644bab36e52b5239eca7e1bdc6..0000000000000000000000000000000000000000
Binary files a/openstack/__pycache__/__main__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/__pycache__/_hacking.cpython-310.pyc b/openstack/__pycache__/_hacking.cpython-310.pyc
deleted file mode 100644
index f0546ea84f2ac8cb1b8900242ef04e1ec3b81e5c..0000000000000000000000000000000000000000
Binary files a/openstack/__pycache__/_hacking.cpython-310.pyc and /dev/null differ
diff --git a/openstack/__pycache__/_log.cpython-310.pyc b/openstack/__pycache__/_log.cpython-310.pyc
deleted file mode 100644
index 835c4df0bec789ef9fa1f800503d21c67f1b32e2..0000000000000000000000000000000000000000
Binary files a/openstack/__pycache__/_log.cpython-310.pyc and /dev/null differ
diff --git a/openstack/__pycache__/_services_mixin.cpython-310.pyc b/openstack/__pycache__/_services_mixin.cpython-310.pyc
deleted file mode 100644
index fb0adefb195ff939b3e9b17cfb43764fe3250f29..0000000000000000000000000000000000000000
Binary files a/openstack/__pycache__/_services_mixin.cpython-310.pyc and /dev/null differ
diff --git a/openstack/__pycache__/connection.cpython-310.pyc b/openstack/__pycache__/connection.cpython-310.pyc
deleted file mode 100644
index 8fe99bd9e505e397eb9fdfaa2f134711df597264..0000000000000000000000000000000000000000
Binary files a/openstack/__pycache__/connection.cpython-310.pyc and /dev/null differ
diff --git a/openstack/__pycache__/exceptions.cpython-310.pyc b/openstack/__pycache__/exceptions.cpython-310.pyc
deleted file mode 100644
index f935f19890e8850a70c044cb3c4901d8a97a2521..0000000000000000000000000000000000000000
Binary files a/openstack/__pycache__/exceptions.cpython-310.pyc and /dev/null differ
diff --git a/openstack/__pycache__/format.cpython-310.pyc b/openstack/__pycache__/format.cpython-310.pyc
deleted file mode 100644
index b886194f107a6bcbbe54e42d1496fb09eefd4410..0000000000000000000000000000000000000000
Binary files a/openstack/__pycache__/format.cpython-310.pyc and /dev/null differ
diff --git a/openstack/__pycache__/proxy.cpython-310.pyc b/openstack/__pycache__/proxy.cpython-310.pyc
deleted file mode 100644
index 62f239c79e61b29a5e1fdd7cf1cdbc45116df19a..0000000000000000000000000000000000000000
Binary files a/openstack/__pycache__/proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/__pycache__/resource.cpython-310.pyc b/openstack/__pycache__/resource.cpython-310.pyc
deleted file mode 100644
index 4eb65fcd2314215572010adbdeede6a1ee790318..0000000000000000000000000000000000000000
Binary files a/openstack/__pycache__/resource.cpython-310.pyc and /dev/null differ
diff --git a/openstack/__pycache__/service_description.cpython-310.pyc b/openstack/__pycache__/service_description.cpython-310.pyc
deleted file mode 100644
index bd979433992f45ec42d006251a4738eece472f96..0000000000000000000000000000000000000000
Binary files a/openstack/__pycache__/service_description.cpython-310.pyc and /dev/null differ
diff --git a/openstack/__pycache__/utils.cpython-310.pyc b/openstack/__pycache__/utils.cpython-310.pyc
deleted file mode 100644
index 0fc61bee54d4fafdc24b373f03dfbd26f36d735a..0000000000000000000000000000000000000000
Binary files a/openstack/__pycache__/utils.cpython-310.pyc and /dev/null differ
diff --git a/openstack/__pycache__/version.cpython-310.pyc b/openstack/__pycache__/version.cpython-310.pyc
deleted file mode 100644
index 4781b06dea322b60e4983c2a32ee5fd05c7424cd..0000000000000000000000000000000000000000
Binary files a/openstack/__pycache__/version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/__pycache__/warnings.cpython-310.pyc b/openstack/__pycache__/warnings.cpython-310.pyc
deleted file mode 100644
index b587099511cd6b47560861338b0ffb47d658875b..0000000000000000000000000000000000000000
Binary files a/openstack/__pycache__/warnings.cpython-310.pyc and /dev/null differ
diff --git a/openstack/_log.py b/openstack/_log.py
index 6a909fc340e06a17c65a6e4d8eb6f6c238f5d5b9..62f2c7d36a3749afe9c0ad4c2e99d1a0a32714f1 100644
--- a/openstack/_log.py
+++ b/openstack/_log.py
@@ -14,9 +14,14 @@
 
 import logging
 import sys
+import typing as ty
 
 
-def setup_logging(name, handlers=None, level=None):
+def setup_logging(
+    name: str,
+    handlers: ty.Optional[ty.List[logging.Handler]] = None,
+    level: ty.Optional[int] = None,
+) -> logging.Logger:
     """Set up logging for a named logger.
 
     Gets and initializes a named logger, ensuring it at least has a
@@ -34,8 +39,7 @@ def setup_logging(name, handlers=None, level=None):
     handlers = handlers or []
     log = logging.getLogger(name)
     if len(log.handlers) == 0 and not handlers:
-        h = logging.NullHandler()
-        log.addHandler(h)
+        log.addHandler(logging.NullHandler())
     for h in handlers:
         log.addHandler(h)
     if level:
@@ -44,14 +48,14 @@ def setup_logging(name, handlers=None, level=None):
 
 
 def enable_logging(
-    debug=False,
-    http_debug=False,
-    path=None,
-    stream=None,
-    format_stream=False,
-    format_template='%(asctime)s %(levelname)s: %(name)s %(message)s',
-    handlers=None,
-):
+    debug: bool = False,
+    http_debug: bool = False,
+    path: ty.Optional[str] = None,
+    stream: ty.Optional[ty.TextIO] = None,
+    format_stream: bool = False,
+    format_template: str = '%(asctime)s %(levelname)s: %(name)s %(message)s',
+    handlers: ty.Optional[ty.List[logging.Handler]] = None,
+) -> None:
     """Enable logging output.
 
     Helper function to enable logging. This function is available for
diff --git a/openstack/accelerator/__pycache__/__init__.cpython-310.pyc b/openstack/accelerator/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 0ff37ad63174a10108acd3b3cce0f6f9534bf01b..0000000000000000000000000000000000000000
Binary files a/openstack/accelerator/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/accelerator/__pycache__/accelerator_service.cpython-310.pyc b/openstack/accelerator/__pycache__/accelerator_service.cpython-310.pyc
deleted file mode 100644
index 8cd4a309aad123e85adb5183f4079a1016c1e2ad..0000000000000000000000000000000000000000
Binary files a/openstack/accelerator/__pycache__/accelerator_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/accelerator/__pycache__/version.cpython-310.pyc b/openstack/accelerator/__pycache__/version.cpython-310.pyc
deleted file mode 100644
index 005de931104ebd125965ec94e20d7dddfd18167d..0000000000000000000000000000000000000000
Binary files a/openstack/accelerator/__pycache__/version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/accelerator/v2/__pycache__/__init__.cpython-310.pyc b/openstack/accelerator/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 333d2491b6fc556562ae4ca44e0685183ecfbfbb..0000000000000000000000000000000000000000
Binary files a/openstack/accelerator/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/accelerator/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/accelerator/v2/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index dedfc0ed600756a351a2a999877b08f80f75ac38..0000000000000000000000000000000000000000
Binary files a/openstack/accelerator/v2/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/accelerator/v2/__pycache__/accelerator_request.cpython-310.pyc b/openstack/accelerator/v2/__pycache__/accelerator_request.cpython-310.pyc
deleted file mode 100644
index 4191b5cddf0cf0461ccc257351b69c6b92bd7e3f..0000000000000000000000000000000000000000
Binary files a/openstack/accelerator/v2/__pycache__/accelerator_request.cpython-310.pyc and /dev/null differ
diff --git a/openstack/accelerator/v2/__pycache__/deployable.cpython-310.pyc b/openstack/accelerator/v2/__pycache__/deployable.cpython-310.pyc
deleted file mode 100644
index 7f0d467bc2a74e106cfba0108df4faa1ec2554fb..0000000000000000000000000000000000000000
Binary files a/openstack/accelerator/v2/__pycache__/deployable.cpython-310.pyc and /dev/null differ
diff --git a/openstack/accelerator/v2/__pycache__/device.cpython-310.pyc b/openstack/accelerator/v2/__pycache__/device.cpython-310.pyc
deleted file mode 100644
index f7f4875a6e7f01fbf6645050a033ff13119ddf16..0000000000000000000000000000000000000000
Binary files a/openstack/accelerator/v2/__pycache__/device.cpython-310.pyc and /dev/null differ
diff --git a/openstack/accelerator/v2/__pycache__/device_profile.cpython-310.pyc b/openstack/accelerator/v2/__pycache__/device_profile.cpython-310.pyc
deleted file mode 100644
index d5643d4f82d19fd0a94554833293199e883d34a7..0000000000000000000000000000000000000000
Binary files a/openstack/accelerator/v2/__pycache__/device_profile.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/__pycache__/__init__.cpython-310.pyc b/openstack/baremetal/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index be77e95367dcbd7343b634a3e4e35342562efbcf..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/__pycache__/baremetal_service.cpython-310.pyc b/openstack/baremetal/__pycache__/baremetal_service.cpython-310.pyc
deleted file mode 100644
index 4c04be556c50aed0b158bf7a3b022e4c9ef84ac6..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/__pycache__/baremetal_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/__pycache__/configdrive.cpython-310.pyc b/openstack/baremetal/__pycache__/configdrive.cpython-310.pyc
deleted file mode 100644
index 7dae045c0d3bd65211fc9f2c590838b0012ba60f..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/__pycache__/configdrive.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/__pycache__/version.cpython-310.pyc b/openstack/baremetal/__pycache__/version.cpython-310.pyc
deleted file mode 100644
index 3934db7769dff256d184709e867f0fd82610c76c..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/__pycache__/version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/configdrive.py b/openstack/baremetal/configdrive.py
index bcf2fb68962f7990fc2d45b93128cc0396e32660..24bedba82ef2abab35afca21358adfaa5aed7e34 100644
--- a/openstack/baremetal/configdrive.py
+++ b/openstack/baremetal/configdrive.py
@@ -20,6 +20,7 @@ import os
 import shutil
 import subprocess
 import tempfile
+import typing as ty
 
 
 @contextlib.contextmanager
@@ -100,7 +101,7 @@ def build(
         return pack(path)
 
 
-def pack(path):
+def pack(path: str) -> str:
     """Pack a directory with files into a Bare Metal service configdrive.
 
     Creates an ISO image with the files and label "config-2".
@@ -112,6 +113,7 @@ def pack(path):
         # NOTE(toabctl): Luckily, genisoimage, mkisofs and xorrisofs understand
         # the same parameters which are currently used.
         cmds = ['genisoimage', 'mkisofs', 'xorrisofs']
+        error: ty.Optional[Exception]
         for c in cmds:
             try:
                 p = subprocess.Popen(
@@ -153,7 +155,7 @@ def pack(path):
             raise RuntimeError(
                 'Error generating the configdrive.'
                 'Stdout: "%(stdout)s". Stderr: "%(stderr)s"'
-                % {'stdout': stdout, 'stderr': stderr}
+                % {'stdout': stdout.decode(), 'stderr': stderr.decode()}
             )
 
         tmpfile.seek(0)
@@ -163,11 +165,8 @@ def pack(path):
                 shutil.copyfileobj(tmpfile, gz_file)
 
             tmpzipfile.seek(0)
-            cd = base64.b64encode(tmpzipfile.read())
-
-    # NOTE(dtantsur): Ironic expects configdrive to be a string, but base64
-    # returns bytes on Python 3.
-    if not isinstance(cd, str):
-        cd = cd.decode('utf-8')
+            # NOTE(dtantsur): Ironic expects configdrive to be a string, but
+            # base64 returns bytes on Python 3.
+            cd = base64.b64encode(tmpzipfile.read()).decode()
 
     return cd
diff --git a/openstack/baremetal/v1/__pycache__/__init__.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 34ef20c944c056af276f70da752ce1b2c6344831..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/v1/__pycache__/_common.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/_common.cpython-310.pyc
deleted file mode 100644
index 48dd893f7f8b0d757dd72eeeb65988a26d9357a0..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/v1/__pycache__/_common.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 7c5f876806ba9b4206f07fef2821ccd024ec95e3..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/v1/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/v1/__pycache__/allocation.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/allocation.cpython-310.pyc
deleted file mode 100644
index bf518b31b145e5c721b9ed1922b281ec1483e1d2..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/v1/__pycache__/allocation.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/v1/__pycache__/chassis.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/chassis.cpython-310.pyc
deleted file mode 100644
index 99a0fd2e13fb4ad1812532ee58233bcbd409cd6c..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/v1/__pycache__/chassis.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/v1/__pycache__/conductor.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/conductor.cpython-310.pyc
deleted file mode 100644
index eb7f838f2a1ca4f9c9225a470a332844dc0a0330..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/v1/__pycache__/conductor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/v1/__pycache__/deploy_templates.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/deploy_templates.cpython-310.pyc
deleted file mode 100644
index 6304f01fb03fe833f6d41d79fec2b2ad09bf7a07..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/v1/__pycache__/deploy_templates.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/v1/__pycache__/driver.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/driver.cpython-310.pyc
deleted file mode 100644
index 62390641206afe80a846e7fe16b4fbb24cf52565..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/v1/__pycache__/driver.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/v1/__pycache__/node.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/node.cpython-310.pyc
deleted file mode 100644
index 4bac461c23fa8c7e9c82091442e66c8b6e80da43..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/v1/__pycache__/node.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/v1/__pycache__/port.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/port.cpython-310.pyc
deleted file mode 100644
index c22a958f7ad01f416ddde707ff4ea72eccc0665d..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/v1/__pycache__/port.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/v1/__pycache__/port_group.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/port_group.cpython-310.pyc
deleted file mode 100644
index 24091771395fe48c876dad0610bf5ed7e6b4735a..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/v1/__pycache__/port_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/v1/__pycache__/volume_connector.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/volume_connector.cpython-310.pyc
deleted file mode 100644
index 39e6415f2c1e0a69b8552c162cd34450e073d4f5..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/v1/__pycache__/volume_connector.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/v1/__pycache__/volume_target.cpython-310.pyc b/openstack/baremetal/v1/__pycache__/volume_target.cpython-310.pyc
deleted file mode 100644
index 5a0752c33d59513b7acebd1e22828000ee923f9d..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal/v1/__pycache__/volume_target.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal/v1/_common.py b/openstack/baremetal/v1/_common.py
index 787e9b23e4d98ff559e33fa2dfc09f609bf18500..83dbc1a9296906e7d89f7b1f8afb8e5d88a5b1f8 100644
--- a/openstack/baremetal/v1/_common.py
+++ b/openstack/baremetal/v1/_common.py
@@ -89,7 +89,9 @@ CHANGE_BOOT_MODE_VERSION = '1.76'
 """API version in which boot_mode and secure_boot states can be changed"""
 
 
-class ListMixin:
+class Resource(resource.Resource):
+    base_path: str
+
     @classmethod
     def list(cls, session, details=False, **params):
         """This method is a generator which yields resource objects.
@@ -113,7 +115,7 @@ class ListMixin:
         base_path = cls.base_path
         if details:
             base_path += '/detail'
-        return super(ListMixin, cls).list(
+        return super().list(
             session, paginated=True, base_path=base_path, **params
         )
 
diff --git a/openstack/baremetal/v1/_proxy.py b/openstack/baremetal/v1/_proxy.py
index b3fb6550dcc887d61f065d2db0e781038aeecba2..18115e711b8e76a14dab07a496506acd991b4bc5 100644
--- a/openstack/baremetal/v1/_proxy.py
+++ b/openstack/baremetal/v1/_proxy.py
@@ -456,7 +456,7 @@ class Proxy(proxy.Proxy):
         :return: The node boot device
         """
         res = self._get_resource(_node.Node, node)
-        return res.get_boot_device()
+        return res.get_boot_device(self)
 
     def set_node_boot_device(self, node, boot_device, persistent=False):
         """Set node boot device
@@ -479,7 +479,7 @@ class Proxy(proxy.Proxy):
         :return: The node boot device
         """
         res = self._get_resource(_node.Node, node)
-        return res.get_supported_boot_devices()
+        return res.get_supported_boot_devices(self)
 
     def set_node_boot_mode(self, node, target):
         """Make a request to change node's boot mode
diff --git a/openstack/baremetal/v1/allocation.py b/openstack/baremetal/v1/allocation.py
index dadb5e34dc9072f3e9d9861683d6a0d26bc7679c..d4f78163e27efaa7d3302159a1b3705bc60e3adb 100644
--- a/openstack/baremetal/v1/allocation.py
+++ b/openstack/baremetal/v1/allocation.py
@@ -16,7 +16,7 @@ from openstack import resource
 from openstack import utils
 
 
-class Allocation(_common.ListMixin, resource.Resource):
+class Allocation(_common.Resource):
     resources_key = 'allocations'
     base_path = '/allocations'
 
diff --git a/openstack/baremetal/v1/chassis.py b/openstack/baremetal/v1/chassis.py
index 0640bb785e8e1b3e0174ebde91da76e1f251d34c..daa03d56322440780bc9b5fb0b2fe2fd2dcad70c 100644
--- a/openstack/baremetal/v1/chassis.py
+++ b/openstack/baremetal/v1/chassis.py
@@ -14,7 +14,7 @@ from openstack.baremetal.v1 import _common
 from openstack import resource
 
 
-class Chassis(_common.ListMixin, resource.Resource):
+class Chassis(_common.Resource):
     resources_key = 'chassis'
     base_path = '/chassis'
 
diff --git a/openstack/baremetal/v1/conductor.py b/openstack/baremetal/v1/conductor.py
index 15c3b76b7c6051cc361fee08fa12e75d7a85f2a4..ff1f003460f1483973b4d208c2440344a6a791e6 100644
--- a/openstack/baremetal/v1/conductor.py
+++ b/openstack/baremetal/v1/conductor.py
@@ -14,7 +14,7 @@ from openstack.baremetal.v1 import _common
 from openstack import resource
 
 
-class Conductor(_common.ListMixin, resource.Resource):
+class Conductor(_common.Resource):
     resources_key = 'conductors'
     base_path = '/conductors'
 
diff --git a/openstack/baremetal/v1/deploy_templates.py b/openstack/baremetal/v1/deploy_templates.py
index 17f59ea79f5cff78d549dfd188d9244ec728fdc3..edb8a8fa066698deb3824e5038f1dbcf0ce35256 100644
--- a/openstack/baremetal/v1/deploy_templates.py
+++ b/openstack/baremetal/v1/deploy_templates.py
@@ -14,7 +14,7 @@ from openstack.baremetal.v1 import _common
 from openstack import resource
 
 
-class DeployTemplate(_common.ListMixin, resource.Resource):
+class DeployTemplate(_common.Resource):
     resources_key = 'deploy_templates'
     base_path = '/deploy_templates'
 
diff --git a/openstack/baremetal/v1/driver.py b/openstack/baremetal/v1/driver.py
index c4bb374ed74adf915ee5875471ab85813c406a0e..4f457f9e7a9438741281308907c9594e04075e54 100644
--- a/openstack/baremetal/v1/driver.py
+++ b/openstack/baremetal/v1/driver.py
@@ -10,6 +10,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
+import typing as ty
+
 from openstack.baremetal.v1 import _common
 from openstack import exceptions
 from openstack import resource
@@ -153,7 +155,7 @@ class Driver(resource.Resource):
         return response.json()
 
     def call_vendor_passthru(
-        self, session, verb: str, method: str, body: dict = None
+        self, session, verb: str, method: str, body: ty.Optional[dict] = None
     ):
         """Call a vendor specific passthru method
 
diff --git a/openstack/baremetal/v1/node.py b/openstack/baremetal/v1/node.py
index c8d03add63bb50b08da987aa0aca5c7098b126a1..3f7bf99149cbb22b8f50283be16f1e9d50dbecf4 100644
--- a/openstack/baremetal/v1/node.py
+++ b/openstack/baremetal/v1/node.py
@@ -70,7 +70,7 @@ class WaitResult(
     __slots__ = ()
 
 
-class Node(_common.ListMixin, resource.Resource):
+class Node(_common.Resource):
     resources_key = 'nodes'
     base_path = '/nodes'
 
@@ -115,7 +115,7 @@ class Node(_common.ListMixin, resource.Resource):
     chassis_id = resource.Body("chassis_uuid")
     #: The current clean step.
     clean_step = resource.Body("clean_step")
-    #: Hostname of the conductor currently handling this ndoe. Added in API
+    #: Hostname of the conductor currently handling this node. Added in API
     # microversion 1.49.
     conductor = resource.Body("conductor")
     #: Conductor group this node is managed by. Added in API microversion 1.46.
@@ -124,6 +124,8 @@ class Node(_common.ListMixin, resource.Resource):
     created_at = resource.Body("created_at")
     #: The current deploy step. Added in API microversion 1.44.
     deploy_step = resource.Body("deploy_step")
+    #: The description of the node. Added in API microversion 1.51.
+    description = resource.Body("description")
     #: The name of the driver.
     driver = resource.Body("driver")
     #: All the metadata required by the driver to manage this node. List of
@@ -164,6 +166,9 @@ class Node(_common.ListMixin, resource.Resource):
     #: Any error from the most recent transaction that started but failed to
     #: finish.
     last_error = resource.Body("last_error")
+    #: Field indicating if the node is leased to a specific project.
+    #: Added in API version 1.65
+    lessee = resource.Body("lessee")
     #: A list of relative links, including self and bookmark links.
     links = resource.Body("links", type=list)
     #: user settable description of the reason why the node was placed into
@@ -711,11 +716,9 @@ class Node(_common.ListMixin, resource.Resource):
         request = self._prepare_request(requires_id=True)
         request.url = utils.urljoin(request.url, 'management', 'inject_nmi')
 
-        body = {}
-
         response = session.put(
             request.url,
-            json=body,
+            json={},
             headers=request.headers,
             microversion=version,
             retriable_status_codes=_common.RETRIABLE_STATUS_CODES,
@@ -813,7 +816,7 @@ class Node(_common.ListMixin, resource.Resource):
         body = {'id': vif_id}
         retriable_status_codes = _common.RETRIABLE_STATUS_CODES
         if not retry_on_conflict:
-            retriable_status_codes = set(retriable_status_codes) - {409}
+            retriable_status_codes = list(set(retriable_status_codes) - {409})
         response = session.post(
             request.url,
             json=body,
diff --git a/openstack/baremetal/v1/port.py b/openstack/baremetal/v1/port.py
index 1435d7c13cda2afc27b337265e478b1814fb06b7..2105508e60559e5782d2c6eb5763068a5f50f5ef 100644
--- a/openstack/baremetal/v1/port.py
+++ b/openstack/baremetal/v1/port.py
@@ -14,7 +14,7 @@ from openstack.baremetal.v1 import _common
 from openstack import resource
 
 
-class Port(_common.ListMixin, resource.Resource):
+class Port(_common.Resource):
     resources_key = 'ports'
     base_path = '/ports'
 
@@ -32,12 +32,16 @@ class Port(_common.ListMixin, resource.Resource):
         'address',
         'node',
         'portgroup',
+        'shard',
         fields={'type': _common.fields_type},
         node_id='node_uuid',
     )
 
     # The physical_network field introduced in 1.34
-    _max_microversion = '1.34'
+    # The is_smartnic field added in 1.53
+    # Query filter by shard added in 1.82
+    # The name field added in 1.88
+    _max_microversion = '1.88'
 
     #: The physical hardware address of the network port, typically the
     #: hardware MAC address.
@@ -53,6 +57,8 @@ class Port(_common.ListMixin, resource.Resource):
     internal_info = resource.Body('internal_info')
     #: Whether PXE is enabled on the port. Added in API microversion 1.19.
     is_pxe_enabled = resource.Body('pxe_enabled', type=bool)
+    #: Whether the port is a Smart NIC port. Added in API microversion 1.53.
+    is_smartnic = resource.Body('is_smartnic', type=bool)
     #: A list of relative links, including the self and bookmark links.
     links = resource.Body('links', type=list)
     #: The port bindig profile. If specified, must contain ``switch_id`` and
@@ -60,6 +66,8 @@ class Port(_common.ListMixin, resource.Resource):
     #: to be used to store vendor specific information. Added in API
     #: microversion 1.19.
     local_link_connection = resource.Body('local_link_connection')
+    #: The name of the port
+    name = resource.Body('name')
     #: The UUID of node this port belongs to
     node_id = resource.Body('node_uuid')
     #: The name of physical network this port is attached to.
diff --git a/openstack/baremetal/v1/port_group.py b/openstack/baremetal/v1/port_group.py
index 5460058aebcc43ecc12bc73cc5cca44c6515978c..eba7a077bfbe889dcff15c6426432337605bc926 100644
--- a/openstack/baremetal/v1/port_group.py
+++ b/openstack/baremetal/v1/port_group.py
@@ -14,7 +14,7 @@ from openstack.baremetal.v1 import _common
 from openstack import resource
 
 
-class PortGroup(_common.ListMixin, resource.Resource):
+class PortGroup(_common.Resource):
     resources_key = 'portgroups'
     base_path = '/portgroups'
 
diff --git a/openstack/baremetal/v1/volume_connector.py b/openstack/baremetal/v1/volume_connector.py
index 70e009f0217bf78d785a731d8c68538a16f184ba..06495e876cc107df0ec098ff299fb9cce9f9bdf8 100644
--- a/openstack/baremetal/v1/volume_connector.py
+++ b/openstack/baremetal/v1/volume_connector.py
@@ -14,7 +14,7 @@ from openstack.baremetal.v1 import _common
 from openstack import resource
 
 
-class VolumeConnector(_common.ListMixin, resource.Resource):
+class VolumeConnector(_common.Resource):
     resources_key = 'connectors'
     base_path = '/volume/connectors'
 
diff --git a/openstack/baremetal/v1/volume_target.py b/openstack/baremetal/v1/volume_target.py
index f2b93329411eb2ce2e8cc2a678dbd0bd693731db..12d9da5e5821b0cb77fed0d2a0b88958574200e0 100644
--- a/openstack/baremetal/v1/volume_target.py
+++ b/openstack/baremetal/v1/volume_target.py
@@ -14,7 +14,7 @@ from openstack.baremetal.v1 import _common
 from openstack import resource
 
 
-class VolumeTarget(_common.ListMixin, resource.Resource):
+class VolumeTarget(_common.Resource):
     resources_key = 'targets'
     base_path = '/volume/targets'
 
diff --git a/openstack/baremetal_introspection/__pycache__/__init__.cpython-310.pyc b/openstack/baremetal_introspection/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index cd9be58d025071ac61ae16e1c0633bef35de4f38..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal_introspection/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal_introspection/__pycache__/baremetal_introspection_service.cpython-310.pyc b/openstack/baremetal_introspection/__pycache__/baremetal_introspection_service.cpython-310.pyc
deleted file mode 100644
index 26119f43fa65d95c7a5f81836592d1baaf9cc495..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal_introspection/__pycache__/baremetal_introspection_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal_introspection/v1/__pycache__/__init__.cpython-310.pyc b/openstack/baremetal_introspection/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 41461f5885142084ca1eb6b350b035be287cc8b1..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal_introspection/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal_introspection/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/baremetal_introspection/v1/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index f340d41077c28f315983820fd14d71ec2364359d..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal_introspection/v1/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal_introspection/v1/__pycache__/introspection.cpython-310.pyc b/openstack/baremetal_introspection/v1/__pycache__/introspection.cpython-310.pyc
deleted file mode 100644
index f51075d861f7cd1d480ff7257405da878e2b06ed..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal_introspection/v1/__pycache__/introspection.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal_introspection/v1/__pycache__/introspection_rule.cpython-310.pyc b/openstack/baremetal_introspection/v1/__pycache__/introspection_rule.cpython-310.pyc
deleted file mode 100644
index 1e9c6a0682728e920f22c5abcb16135ac3ab0527..0000000000000000000000000000000000000000
Binary files a/openstack/baremetal_introspection/v1/__pycache__/introspection_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/baremetal_introspection/v1/introspection_rule.py b/openstack/baremetal_introspection/v1/introspection_rule.py
index 1d37d4dea9dd6af31ef21ed9f486475a7db0865c..27bf61d797bb5f7d8b738ce4e0e75b89cfe0a1d2 100644
--- a/openstack/baremetal_introspection/v1/introspection_rule.py
+++ b/openstack/baremetal_introspection/v1/introspection_rule.py
@@ -14,7 +14,7 @@ from openstack.baremetal.v1 import _common
 from openstack import resource
 
 
-class IntrospectionRule(_common.ListMixin, resource.Resource):
+class IntrospectionRule(_common.Resource):
     resources_key = 'rules'
     base_path = '/rules'
 
diff --git a/openstack/block_storage/__pycache__/__init__.cpython-310.pyc b/openstack/block_storage/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index c1e980033ceddcdd0a12029c90f43ef771e9cdc5..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/__pycache__/_base_proxy.cpython-310.pyc b/openstack/block_storage/__pycache__/_base_proxy.cpython-310.pyc
deleted file mode 100644
index 3c98626297310be01b14182de7ed05e0362d3673..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/__pycache__/_base_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/__pycache__/block_storage_service.cpython-310.pyc b/openstack/block_storage/__pycache__/block_storage_service.cpython-310.pyc
deleted file mode 100644
index 8133d27ff62939d977ac42652544ac43554f2184..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/__pycache__/block_storage_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v2/__pycache__/__init__.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 5d8e8464e763e5084d219f6747deb75e88efef6d..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index c94f78479c245323a3b408c5bc1377b83873abbe..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v2/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v2/__pycache__/backup.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/backup.cpython-310.pyc
deleted file mode 100644
index 9e2ab32dbbaed4b1a7844318306d2e60111ff885..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v2/__pycache__/backup.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v2/__pycache__/capabilities.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/capabilities.cpython-310.pyc
deleted file mode 100644
index 062bea46efe0ed36fa97eba1cc78f056e567ee5b..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v2/__pycache__/capabilities.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v2/__pycache__/extension.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/extension.cpython-310.pyc
deleted file mode 100644
index dcd354c254a0b57e7118650c137d47e422dc55de..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v2/__pycache__/extension.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v2/__pycache__/limits.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/limits.cpython-310.pyc
deleted file mode 100644
index 5b5c3d0d8753608325478e85b21a00d11e8ce3ca..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v2/__pycache__/limits.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v2/__pycache__/quota_set.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/quota_set.cpython-310.pyc
deleted file mode 100644
index 9675eba7c5ea224d4a8a38ffb3e3cde4826ff0ab..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v2/__pycache__/quota_set.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v2/__pycache__/snapshot.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/snapshot.cpython-310.pyc
deleted file mode 100644
index f1f4ad3c7e891cf5f1c1c7b33e7f19424eca6316..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v2/__pycache__/snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v2/__pycache__/stats.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/stats.cpython-310.pyc
deleted file mode 100644
index f32905bbbb371c6b6dad5ba5c38c6d9b4f35c0ab..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v2/__pycache__/stats.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v2/__pycache__/type.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/type.cpython-310.pyc
deleted file mode 100644
index 4c5c98d5f199b33925add14c8cb487b16618a18a..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v2/__pycache__/type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v2/__pycache__/volume.cpython-310.pyc b/openstack/block_storage/v2/__pycache__/volume.cpython-310.pyc
deleted file mode 100644
index 4776b5fc496fd97b9e8639b6a01da081eefaf7f9..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v2/__pycache__/volume.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v2/backup.py b/openstack/block_storage/v2/backup.py
index a19490abd9239cf3671bed895c5163d45eb2cc97..12c78f1cb46e540773c5bdac0dfdb9ac23fb8093 100644
--- a/openstack/block_storage/v2/backup.py
+++ b/openstack/block_storage/v2/backup.py
@@ -9,6 +9,9 @@
 # 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 typing as ty
+
 from openstack import exceptions
 from openstack import resource
 from openstack import utils
@@ -173,7 +176,7 @@ class Backup(resource.Resource):
         :return: Updated backup instance
         """
         url = utils.urljoin(self.base_path, self.id, "restore")
-        body = {'restore': {}}
+        body: ty.Dict[str, ty.Dict] = {'restore': {}}
         if volume_id:
             body['restore']['volume_id'] = volume_id
         if name:
@@ -188,7 +191,7 @@ class Backup(resource.Resource):
 
     def force_delete(self, session):
         """Force backup deletion"""
-        body = {'os-force_delete': {}}
+        body = {'os-force_delete': None}
         self._action(session, body)
 
     def reset(self, session, status):
diff --git a/openstack/block_storage/v2/volume.py b/openstack/block_storage/v2/volume.py
index 7c7843ddc48152fc9186889475bf8705f92c4d3e..7f17d22ee32ac2d9afbdf26ea3f78fbc4247354e 100644
--- a/openstack/block_storage/v2/volume.py
+++ b/openstack/block_storage/v2/volume.py
@@ -144,7 +144,7 @@ class Volume(resource.Resource, metadata.MetadataMixin):
 
     def unmanage(self, session):
         """Unmanage volume"""
-        body = {'os-unmanage': {}}
+        body = {'os-unmanage': None}
 
         self._action(session, body)
 
@@ -184,7 +184,7 @@ class Volume(resource.Resource, metadata.MetadataMixin):
 
     def force_delete(self, session):
         """Force volume deletion"""
-        body = {'os-force_delete': {}}
+        body = {'os-force_delete': None}
 
         self._action(session, body)
 
diff --git a/openstack/block_storage/v3/__pycache__/__init__.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 6b3cb13bd2510bca4beb3c764aa7735bcd35da5b..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/_proxy.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 3d5c39788f0326148cf59dd614c0ef972b423ceb..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/attachment.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/attachment.cpython-310.pyc
deleted file mode 100644
index 350a1ae49b83a278085ca8c532632bfa7094cd47..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/attachment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/availability_zone.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/availability_zone.cpython-310.pyc
deleted file mode 100644
index 607a937662cbf82ae6c615d4d0c0f98eb462c7f8..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/availability_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/backup.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/backup.cpython-310.pyc
deleted file mode 100644
index f605335beeb19dce482229969ef2f469fce63e56..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/backup.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/block_storage_summary.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/block_storage_summary.cpython-310.pyc
deleted file mode 100644
index 9b77499cc5c8baf69205fa3ef9bd04bb1542ed86..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/block_storage_summary.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/capabilities.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/capabilities.cpython-310.pyc
deleted file mode 100644
index b66cb9d408500d3b57aa49628c508112c8641cac..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/capabilities.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/extension.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/extension.cpython-310.pyc
deleted file mode 100644
index 4eeccf84638690d0c8d86764e9be1e5c81ed2b78..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/extension.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/group.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/group.cpython-310.pyc
deleted file mode 100644
index 1c2cbc16ea232167818a525d6c25860061714ddb..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/group_snapshot.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/group_snapshot.cpython-310.pyc
deleted file mode 100644
index b451f36ce5365211f036c2b826801361d11a6399..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/group_snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/group_type.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/group_type.cpython-310.pyc
deleted file mode 100644
index c519be0331dbe8006397ca8be02e2b499294f405..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/group_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/limits.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/limits.cpython-310.pyc
deleted file mode 100644
index b71db914eed481ac406683ce9c33d2d7bea8762a..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/limits.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/quota_set.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/quota_set.cpython-310.pyc
deleted file mode 100644
index 782856378aafdf0397e017475e16c494a2ee4c6c..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/quota_set.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/resource_filter.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/resource_filter.cpython-310.pyc
deleted file mode 100644
index b45228fc107e2dfffdca2fa4cfc98a4aaee90caf..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/resource_filter.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/service.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/service.cpython-310.pyc
deleted file mode 100644
index 40b8c847cd7d44404605922240a60f544e9b91d5..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/snapshot.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/snapshot.cpython-310.pyc
deleted file mode 100644
index a0df38d8d83fc90f64a7ad6a32768330f9432903..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/stats.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/stats.cpython-310.pyc
deleted file mode 100644
index f071bc0c8d16ad6659f7cd49016acceeafa9b926..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/stats.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/transfer.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/transfer.cpython-310.pyc
deleted file mode 100644
index 9baee3d4a888dad018d9b93bdb1a5546779916f2..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/transfer.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/type.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/type.cpython-310.pyc
deleted file mode 100644
index 68319b33ada1a17438b0f383c076dc54730ac5e3..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/__pycache__/volume.cpython-310.pyc b/openstack/block_storage/v3/__pycache__/volume.cpython-310.pyc
deleted file mode 100644
index 7e8170d6dc893c93404a3c85ba80cf6ecb32ecf5..0000000000000000000000000000000000000000
Binary files a/openstack/block_storage/v3/__pycache__/volume.cpython-310.pyc and /dev/null differ
diff --git a/openstack/block_storage/v3/_proxy.py b/openstack/block_storage/v3/_proxy.py
index f076b7b8c9194fbd00096ee1a11562d66d8099f5..ea5b23d520bb8df6776412d12c156582fd2f85bd 100644
--- a/openstack/block_storage/v3/_proxy.py
+++ b/openstack/block_storage/v3/_proxy.py
@@ -258,6 +258,30 @@ class Proxy(_base_proxy.BaseBlockStorageProxy):
         snapshot = self._get_resource(_snapshot.Snapshot, snapshot)
         snapshot.set_status(self, status, progress)
 
+    def manage_snapshot(self, **attrs):
+        """Creates a snapshot by using existing storage rather than
+        allocating new storage.
+
+        :param dict attrs: Keyword arguments which will be used to create
+            a :class:`~openstack.block_storage.v3.snapshot.Snapshot`,
+            comprised of the properties on the Snapshot class.
+
+        :returns: The results of snapshot creation
+        :rtype: :class:`~openstack.block_storage.v3.snapshot.Snapshot`
+        """
+        return _snapshot.Snapshot.manage(self, **attrs)
+
+    def unmanage_snapshot(self, snapshot):
+        """Unmanage a snapshot from block storage provisioning.
+
+        :param snapshot: Either the ID of a snapshot or a
+            :class:`~openstack.block_storage.v3.snapshot.Snapshot`.
+
+        :returns: None
+        """
+        snapshot_obj = self._get_resource(_snapshot.Snapshot, snapshot)
+        snapshot_obj.unmanage(self)
+
     # ====== TYPES ======
     def get_type(self, type):
         """Get a single type
@@ -469,7 +493,7 @@ class Proxy(_base_proxy.BaseBlockStorageProxy):
             volume_type = self._get_resource(_type.Type, volume_type)
             encryption = self._get(
                 _type.TypeEncryption,
-                volume_type=volume_type.id,
+                volume_type_id=volume_type.id,
                 requires_id=False,
             )
 
@@ -502,7 +526,7 @@ class Proxy(_base_proxy.BaseBlockStorageProxy):
             volume_type = self._get_resource(_type.Type, volume_type)
             encryption = self._get(
                 _type.TypeEncryption,
-                volume_type=volume_type.id,
+                volume_type_id=volume_type.id,
                 requires_id=False,
             )
 
@@ -809,6 +833,18 @@ class Proxy(_base_proxy.BaseBlockStorageProxy):
         volume = self._get_resource(_volume.Volume, volume)
         volume.detach(self, attachment, force, connector)
 
+    def manage_volume(self, **attrs):
+        """Creates a volume by using existing storage rather than
+            allocating new storage.
+
+        :param dict attrs: Keyword arguments which will be used to create
+            a :class:`~openstack.block_storage.v3.volume.Volume`,
+            comprised of the properties on the Volume class.
+        :returns: The results of volume creation
+        :rtype: :class:`~openstack.block_storage.v3.volume.Volume`
+        """
+        return _volume.Volume.manage(self, **attrs)
+
     def unmanage_volume(self, volume):
         """Removes a volume from Block Storage management without removing the
             back-end storage object that is associated with it.
@@ -816,7 +852,8 @@ class Proxy(_base_proxy.BaseBlockStorageProxy):
         :param volume: The value can be either the ID of a volume or a
             :class:`~openstack.block_storage.v3.volume.Volume` instance.
 
-        :returns: None"""
+        :returns: None
+        """
         volume = self._get_resource(_volume.Volume, volume)
         volume.unmanage(self)
 
@@ -948,9 +985,9 @@ class Proxy(_base_proxy.BaseBlockStorageProxy):
             :class:`~openstack.block_storage.v3.volume.Volume` instance.
         :param dict connector: The connector object.
 
-        :returns: None"""
+        :returns: Dictionary containing the modified connector object"""
         volume = self._get_resource(_volume.Volume, volume)
-        volume.init_attachment(self, connector)
+        return volume.init_attachment(self, connector)
 
     def terminate_volume_attachment(self, volume, connector):
         """Update volume status to 'in-use'.
@@ -1717,11 +1754,22 @@ class Proxy(_base_proxy.BaseBlockStorageProxy):
     def find_service(
         self,
         name_or_id: str,
-        ignore_missing: ty.Literal[False] = True,
+        ignore_missing: ty.Literal[False],
         **query,
     ) -> _service.Service:
         ...
 
+    # excuse the duplication here: it's mypy's fault
+    # https://github.com/python/mypy/issues/14764
+    @ty.overload
+    def find_service(
+        self,
+        name_or_id: str,
+        ignore_missing: bool,
+        **query,
+    ) -> ty.Optional[_service.Service]:
+        ...
+
     def find_service(
         self,
         name_or_id: str,
diff --git a/openstack/block_storage/v3/backup.py b/openstack/block_storage/v3/backup.py
index a74688c6a7da4823a43c3e5482d88f91d7f26f7d..b942fe98d8b455f63aa8bd8f8e825f8573f49fb5 100644
--- a/openstack/block_storage/v3/backup.py
+++ b/openstack/block_storage/v3/backup.py
@@ -9,6 +9,9 @@
 # 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 typing as ty
+
 from openstack import exceptions
 from openstack import resource
 from openstack import utils
@@ -189,7 +192,7 @@ class Backup(resource.Resource):
         :return: Updated backup instance
         """
         url = utils.urljoin(self.base_path, self.id, "restore")
-        body = {'restore': {}}
+        body: ty.Dict[str, ty.Dict] = {'restore': {}}
         if volume_id:
             body['restore']['volume_id'] = volume_id
         if name:
@@ -204,7 +207,7 @@ class Backup(resource.Resource):
 
     def force_delete(self, session):
         """Force backup deletion"""
-        body = {'os-force_delete': {}}
+        body = {'os-force_delete': None}
         self._action(session, body)
 
     def reset(self, session, status):
diff --git a/openstack/block_storage/v3/snapshot.py b/openstack/block_storage/v3/snapshot.py
index d551db259f7214a537ed208d652606a16737a136..d98d8e45945aabc0433b6ef7cd98645ae6099544 100644
--- a/openstack/block_storage/v3/snapshot.py
+++ b/openstack/block_storage/v3/snapshot.py
@@ -44,10 +44,18 @@ class Snapshot(resource.Resource, metadata.MetadataMixin):
     allow_list = True
 
     # Properties
+    #: Whether this resource consumes quota or not. Resources that not
+    #: counted for quota usage are usually temporary internal resources
+    #: created to perform an operation.
+    #: This is included from microversion 3.65
+    consumes_quota = resource.Body("consumes_quota")
     #: The timestamp of this snapshot creation.
     created_at = resource.Body("created_at")
     #: Description of snapshot. Default is None.
     description = resource.Body("description")
+    #: The ID of the group snapshot.
+    #: This is included from microversion 3.14
+    group_snapshot_id = resource.Body("group_snapshot_id")
     #: Indicate whether to create snapshot, even if the volume is attached.
     #: Default is ``False``. *Type: bool*
     is_forced = resource.Body("force", type=format.BoolStr)
@@ -62,9 +70,14 @@ class Snapshot(resource.Resource, metadata.MetadataMixin):
     status = resource.Body("status")
     #: The date and time when the resource was updated.
     updated_at = resource.Body("updated_at")
+    #: The UUID of the user.
+    #: This is included from microversion 3.41
+    user_id = resource.Body("user_id")
     #: The ID of the volume this snapshot was taken of.
     volume_id = resource.Body("volume_id")
 
+    _max_microversion = '3.65'
+
     def _action(self, session, body, microversion=None):
         """Preform backup actions given the message body."""
         url = utils.urljoin(self.base_path, self.id, 'action')
@@ -76,7 +89,7 @@ class Snapshot(resource.Resource, metadata.MetadataMixin):
 
     def force_delete(self, session):
         """Force snapshot deletion."""
-        body = {'os-force_delete': {}}
+        body = {'os-force_delete': None}
         self._action(session, body)
 
     def reset(self, session, status):
@@ -91,5 +104,39 @@ class Snapshot(resource.Resource, metadata.MetadataMixin):
             body['os-update_snapshot_status']['progress'] = progress
         self._action(session, body)
 
+    @classmethod
+    def manage(
+        cls,
+        session,
+        volume_id,
+        ref,
+        name=None,
+        description=None,
+        metadata=None,
+    ):
+        """Manage a snapshot under block storage provisioning."""
+        url = '/manageable_snapshots'
+        if not utils.supports_microversion(session, '3.8'):
+            url = '/os-snapshot-manage'
+        body = {
+            'snapshot': {
+                'volume_id': volume_id,
+                'ref': ref,
+                'name': name,
+                'description': description,
+                'metadata': metadata,
+            }
+        }
+        resp = session.post(url, json=body, microversion=cls._max_microversion)
+        exceptions.raise_from_response(resp)
+        snapshot = Snapshot()
+        snapshot._translate_response(resp)
+        return snapshot
+
+    def unmanage(self, session):
+        """Unmanage a snapshot from block storage provisioning."""
+        body = {'os-unmanage': None}
+        self._action(session, body)
+
 
 SnapshotDetail = Snapshot
diff --git a/openstack/block_storage/v3/volume.py b/openstack/block_storage/v3/volume.py
index eb412c40e89530c35df0dba2d67721c6162c0cbc..81d483a77b201ee0f4f9ac7b5e3f22ea327ea1a5 100644
--- a/openstack/block_storage/v3/volume.py
+++ b/openstack/block_storage/v3/volume.py
@@ -81,6 +81,8 @@ class Volume(resource.Resource, metadata.MetadataMixin):
     replication_driver_data = resource.Body(
         "os-volume-replication:driver_data"
     )
+    #: The provider ID for the volume.
+    provider_id = resource.Body("provider_id")
     #: Status of replication on this volume.
     replication_status = resource.Body("replication_status")
     #: Scheduler hints for the volume
@@ -179,9 +181,47 @@ class Volume(resource.Resource, metadata.MetadataMixin):
 
         self._action(session, body)
 
+    @classmethod
+    def manage(
+        cls,
+        session,
+        host,
+        ref,
+        name=None,
+        description=None,
+        volume_type=None,
+        availability_zone=None,
+        metadata=None,
+        bootable=False,
+        cluster=None,
+    ):
+        """Manage an existing volume."""
+        url = '/manageable_volumes'
+        if not utils.supports_microversion(session, '3.8'):
+            url = '/os-volume-manage'
+        body = {
+            'volume': {
+                'host': host,
+                'ref': ref,
+                'name': name,
+                'description': description,
+                'volume_type': volume_type,
+                'availability_zone': availability_zone,
+                'metadata': metadata,
+                'bootable': bootable,
+            }
+        }
+        if cluster is not None:
+            body['volume']['cluster'] = cluster
+        resp = session.post(url, json=body, microversion=cls._max_microversion)
+        exceptions.raise_from_response(resp)
+        volume = Volume()
+        volume._translate_response(resp)
+        return volume
+
     def unmanage(self, session):
         """Unmanage volume"""
-        body = {'os-unmanage': {}}
+        body = {'os-unmanage': None}
 
         self._action(session, body)
 
@@ -229,7 +269,7 @@ class Volume(resource.Resource, metadata.MetadataMixin):
 
     def force_delete(self, session):
         """Force volume deletion"""
-        body = {'os-force_delete': {}}
+        body = {'os-force_delete': None}
 
         self._action(session, body)
 
@@ -264,25 +304,25 @@ class Volume(resource.Resource, metadata.MetadataMixin):
 
     def reserve(self, session):
         """Reserve volume"""
-        body = {'os-reserve': {}}
+        body = {'os-reserve': None}
 
         self._action(session, body)
 
     def unreserve(self, session):
         """Unreserve volume"""
-        body = {'os-unreserve': {}}
+        body = {'os-unreserve': None}
 
         self._action(session, body)
 
     def begin_detaching(self, session):
         """Update volume status to 'detaching'"""
-        body = {'os-begin_detaching': {}}
+        body = {'os-begin_detaching': None}
 
         self._action(session, body)
 
     def abort_detaching(self, session):
         """Roll back volume status to 'in-use'"""
-        body = {'os-roll_detaching': {}}
+        body = {'os-roll_detaching': None}
 
         self._action(session, body)
 
@@ -290,7 +330,8 @@ class Volume(resource.Resource, metadata.MetadataMixin):
         """Initialize volume attachment"""
         body = {'os-initialize_connection': {'connector': connector}}
 
-        self._action(session, body)
+        resp = self._action(session, body).json()
+        return resp['connection_info']
 
     def terminate_attachment(self, session, connector):
         """Terminate volume attachment"""
diff --git a/openstack/cloud/__pycache__/__init__.cpython-310.pyc b/openstack/cloud/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 1f66f514c8b721795b9a3f76a38acfb97f9d65a5..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_accelerator.cpython-310.pyc b/openstack/cloud/__pycache__/_accelerator.cpython-310.pyc
deleted file mode 100644
index 3de6c23c78d6ea70b849ee5c13f0940c29aaf072..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_accelerator.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_baremetal.cpython-310.pyc b/openstack/cloud/__pycache__/_baremetal.cpython-310.pyc
deleted file mode 100644
index 0690c721fa9a35cf37a32e95ffb5857ff20dcaf5..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_baremetal.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_block_storage.cpython-310.pyc b/openstack/cloud/__pycache__/_block_storage.cpython-310.pyc
deleted file mode 100644
index aeec7d7e4584423544fa72e36ccfdb1a6c8e5b60..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_block_storage.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_coe.cpython-310.pyc b/openstack/cloud/__pycache__/_coe.cpython-310.pyc
deleted file mode 100644
index 2a1f111b83033792390dfb252a4a1061c5da9bfe..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_coe.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_compute.cpython-310.pyc b/openstack/cloud/__pycache__/_compute.cpython-310.pyc
deleted file mode 100644
index 95c492f9af5c4e59a7c2c31698c5ff61f0110919..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_compute.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_dns.cpython-310.pyc b/openstack/cloud/__pycache__/_dns.cpython-310.pyc
deleted file mode 100644
index 91fb42236be57e8d1116fe1888de9b7275cffb72..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_dns.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_floating_ip.cpython-310.pyc b/openstack/cloud/__pycache__/_floating_ip.cpython-310.pyc
deleted file mode 100644
index b2fb36b6734c0dd4a14be2d9ff86030ac167e4a2..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_floating_ip.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_identity.cpython-310.pyc b/openstack/cloud/__pycache__/_identity.cpython-310.pyc
deleted file mode 100644
index f62e5ee0828954f0347e5c14a9136c4bd902df9c..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_identity.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_image.cpython-310.pyc b/openstack/cloud/__pycache__/_image.cpython-310.pyc
deleted file mode 100644
index d58135807ee41740dade1909daf705deec306644..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_image.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_network.cpython-310.pyc b/openstack/cloud/__pycache__/_network.cpython-310.pyc
deleted file mode 100644
index 258d3bc13a377be6fe0ca8a4c77a8d9669bec7eb..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_network.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_network_common.cpython-310.pyc b/openstack/cloud/__pycache__/_network_common.cpython-310.pyc
deleted file mode 100644
index 6af5f87ff2aaf224606b252ca1ed332423717fba..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_network_common.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_object_store.cpython-310.pyc b/openstack/cloud/__pycache__/_object_store.cpython-310.pyc
deleted file mode 100644
index 9e559e322b0d66fcc8657caa09141d36c889ee1d..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_object_store.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_orchestration.cpython-310.pyc b/openstack/cloud/__pycache__/_orchestration.cpython-310.pyc
deleted file mode 100644
index 2c405f0ff5c8c33d8029448bd09326e527e07847..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_orchestration.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_security_group.cpython-310.pyc b/openstack/cloud/__pycache__/_security_group.cpython-310.pyc
deleted file mode 100644
index 0e941433fadb890218f46cb912c8bda35a35f751..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_security_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_shared_file_system.cpython-310.pyc b/openstack/cloud/__pycache__/_shared_file_system.cpython-310.pyc
deleted file mode 100644
index 6d4466fd2a7b48c53cd10f64eabb21b0bf9e03b3..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_shared_file_system.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/_utils.cpython-310.pyc b/openstack/cloud/__pycache__/_utils.cpython-310.pyc
deleted file mode 100644
index 7efec01e4b01ed13f579a811f6cdec58aa778759..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/_utils.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/exc.cpython-310.pyc b/openstack/cloud/__pycache__/exc.cpython-310.pyc
deleted file mode 100644
index fe926f91e904d23608dc130a1432f1531a8cb6c6..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/exc.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/inventory.cpython-310.pyc b/openstack/cloud/__pycache__/inventory.cpython-310.pyc
deleted file mode 100644
index d1eae41e60b1414fd393bcbcfa5dcc6fcc64ef28..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/inventory.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/meta.cpython-310.pyc b/openstack/cloud/__pycache__/meta.cpython-310.pyc
deleted file mode 100644
index 4b831f47a9be6219ba28bd21f9399119ee8ee4f4..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/meta.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/__pycache__/openstackcloud.cpython-310.pyc b/openstack/cloud/__pycache__/openstackcloud.cpython-310.pyc
deleted file mode 100644
index 3ef4702fdbe0cecf0d5981b0412f7afb897f7cf0..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/__pycache__/openstackcloud.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/_baremetal.py b/openstack/cloud/_baremetal.py
index aae84eb12704607d7b32217d8bcbb2ac91678a27..81cde756101898487dc5dd7e7037b7e0b00bbe8c 100644
--- a/openstack/cloud/_baremetal.py
+++ b/openstack/cloud/_baremetal.py
@@ -17,7 +17,7 @@ import warnings
 import jsonpatch
 
 from openstack.baremetal.v1._proxy import Proxy
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack import warnings as os_warnings
 
 
@@ -86,7 +86,7 @@ class BaremetalCloudMixin:
         """
         try:
             return self.baremetal.find_node(name_or_id, ignore_missing=False)
-        except exc.OpenStackCloudResourceNotFound:
+        except exceptions.NotFoundException:
             return None
 
     def get_machine_by_mac(self, mac):
@@ -130,7 +130,7 @@ class BaremetalCloudMixin:
         # we need to move the machine back to manageable first.
         if node.provision_state == 'available':
             if node.instance_id:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Refusing to inspect available machine %(node)s "
                     "which is associated with an instance "
                     "(instance_uuid %(inst)s)"
@@ -146,7 +146,7 @@ class BaremetalCloudMixin:
             )
 
         if node.provision_state not in ('manageable', 'inspect failed'):
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Machine %(node)s must be in 'manageable', 'inspect failed' "
                 "or 'available' provision state to start inspection, the "
                 "current state is %(state)s"
@@ -215,29 +215,24 @@ class BaremetalCloudMixin:
                 ]
 
             Alternatively, you can provide an array of MAC addresses.
-
         :param wait: Boolean value, defaulting to false, to wait for the node
             to reach the available state where the node can be provisioned. It
             must be noted, when set to false, the method will still wait for
             locks to clear before sending the next required command.
-
         :param timeout: Integer value, defautling to 3600 seconds, for the wait
             state to reach completion.
-
         :param lock_timeout: Integer value, defaulting to 600 seconds, for
             locks to clear.
-
         :param provision_state: The expected provision state, one of "enroll"
             "manageable" or "available". Using "available" results in automated
             cleaning.
-
         :param kwargs: Key value pairs to be passed to the Ironic API,
             including uuid, name, chassis_uuid, driver_info, properties.
 
-        :raises: OpenStackCloudException on operation error.
-
-        :rtype: :class:`~openstack.baremetal.v1.node.Node`.
         :returns: Current state of the node.
+        :rtype: :class:`~openstack.baremetal.v1.node.Node`.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if provision_state not in ('enroll', 'manageable', 'available'):
             raise ValueError(
@@ -301,14 +296,13 @@ class BaremetalCloudMixin:
         :param nics: An array of strings that consist of MAC addresses
             to be removed.
         :param string uuid: The UUID of the node to be deleted.
-
         :param wait: DEPRECATED, do not use.
-
         :param timeout: Integer value, representing seconds with a default
             value of 600, which controls the maximum amount of time to block
             until a lock is released on machine.
 
-        :raises: OpenStackCloudException on operation failure.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            failure.
         """
         if wait is not None:
             warnings.warn(
@@ -319,7 +313,7 @@ class BaremetalCloudMixin:
         machine = self.get_machine(uuid)
         invalid_states = ['active', 'cleaning', 'clean wait', 'clean failed']
         if machine['provision_state'] in invalid_states:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Error unregistering node '%s' due to current provision "
                 "state '%s'" % (uuid, machine['provision_state'])
             )
@@ -330,8 +324,8 @@ class BaremetalCloudMixin:
         # failure, and resubitted the request in python-ironicclient.
         try:
             self.baremetal.wait_for_node_reservation(machine, timeout)
-        except exc.OpenStackCloudException as e:
-            raise exc.OpenStackCloudException(
+        except exceptions.SDKException as e:
+            raise exceptions.SDKException(
                 "Error unregistering node '%s': Exception occured while"
                 " waiting to be able to proceed: %s" % (machine['uuid'], e)
             )
@@ -375,10 +369,10 @@ class BaremetalCloudMixin:
                     'value': 'administrator'
                 })
 
-        :raises: OpenStackCloudException on operation error.
-
         :returns: Current state of the node.
         :rtype: :class:`~openstack.baremetal.v1.node.Node`.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         return self.baremetal.patch_node(name_or_id, patch)
 
@@ -391,16 +385,16 @@ class BaremetalCloudMixin:
         :param string name_or_id: A machine name or UUID to be updated.
         :param attrs: Attributes to updated on the machine.
 
-        :raises: OpenStackCloudException on operation error.
-
         :returns: Dictionary containing a machine sub-dictonary consisting
             of the updated data returned from the API update operation, and a
             list named changes which contains all of the API paths that
             received updates.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         machine = self.get_machine(name_or_id)
         if not machine:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Machine update failed to find Machine: %s. " % name_or_id
             )
 
@@ -411,7 +405,7 @@ class BaremetalCloudMixin:
                 machine._to_munch(), new_config
             )
         except Exception as e:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Machine update failed - Error generating JSON patch object "
                 "for submission to the API. Machine: %s Error: %s"
                 % (name_or_id, e)
@@ -504,10 +498,10 @@ class BaremetalCloudMixin:
             representing the amount of time to wait for the desire end state to
             be reached.
 
-        :raises: OpenStackCloudException on operation error.
-
         :returns: Current state of the machine upon exit of the method.
         :rtype: :class:`~openstack.baremetal.v1.node.Node`.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         node = self.baremetal.set_node_provision_state(
             name_or_id,
@@ -534,9 +528,9 @@ class BaremetalCloudMixin:
             the baremetal API to allow for notation as to why the node is in
             maintenance state.
 
-        :raises: OpenStackCloudException on operation error.
-
         :returns: None
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if state:
             self.baremetal.set_node_maintenance(name_or_id, reason)
@@ -554,9 +548,9 @@ class BaremetalCloudMixin:
         :param string name_or_id: The Name or UUID value representing the
             baremetal node.
 
-        :raises: OpenStackCloudException on operation error.
-
         :returns: None
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         self.baremetal.unset_node_maintenance(name_or_id)
 
@@ -568,9 +562,9 @@ class BaremetalCloudMixin:
         :params string name_or_id: A string representing the baremetal
             node to have power turned to an "on" state.
 
-        :raises: OpenStackCloudException on operation error.
-
         :returns: None
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         self.baremetal.set_node_power_state(name_or_id, 'power on')
 
@@ -582,9 +576,9 @@ class BaremetalCloudMixin:
         :params string name_or_id: A string representing the baremetal
             node to have power turned to an "off" state.
 
-        :raises: OpenStackCloudException on operation error.
-
-        :returns:
+        :returns: None
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         self.baremetal.set_node_power_state(name_or_id, 'power off')
 
@@ -598,9 +592,9 @@ class BaremetalCloudMixin:
         :params string name_or_id: A string representing the baremetal
             node to have power turned to an "off" state.
 
-        :raises: OpenStackCloudException on operation error.
-
         :returns: None
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         self.baremetal.set_node_power_state(name_or_id, 'rebooting')
 
@@ -637,7 +631,8 @@ class BaremetalCloudMixin:
 
         DEPRECATED, use ``wait_for_node_reservation`` on the `baremetal` proxy.
 
-        :raises: OpenStackCloudException upon client failure.
+        :raises: :class:`~openstack.exceptions.SDKException` upon client
+            failure.
         :returns: None
         """
         warnings.warn(
diff --git a/openstack/cloud/_block_storage.py b/openstack/cloud/_block_storage.py
index a03c4dd816a127f910d2d1035a3b21e92a62a436..501f518518c299b126fa5f5ea4db57c57d4dfd42 100644
--- a/openstack/cloud/_block_storage.py
+++ b/openstack/cloud/_block_storage.py
@@ -15,7 +15,6 @@ import warnings
 from openstack.block_storage.v3._proxy import Proxy
 from openstack.block_storage.v3 import quota_set as _qs
 from openstack.cloud import _utils
-from openstack.cloud import exc
 from openstack import exceptions
 from openstack import warnings as os_warnings
 
@@ -134,9 +133,12 @@ class BlockStorageCloudMixin:
         :param bootable: (optional) Make this volume bootable. If set, wait
             will also be set to true.
         :param kwargs: Keyword arguments as expected for cinder client.
+
         :returns: The created volume ``Volume`` object.
-        :raises: OpenStackCloudTimeout if wait time exceeded.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.ResourceTimeout` if wait time
+            exceeded.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if bootable is not None:
             wait = True
@@ -144,7 +146,7 @@ class BlockStorageCloudMixin:
         if image:
             image_obj = self.get_image(image)
             if not image_obj:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Image {image} was requested as the basis for a new"
                     " volume, but was not found on the cloud".format(
                         image=image
@@ -157,7 +159,7 @@ class BlockStorageCloudMixin:
         volume = self.block_storage.create_volume(**kwargs)
 
         if volume['status'] == 'error':
-            raise exc.OpenStackCloudException("Error in creating volume")
+            raise exceptions.SDKException("Error in creating volume")
 
         if wait:
             self.block_storage.wait_for_status(volume, wait=timeout)
@@ -177,9 +179,7 @@ class BlockStorageCloudMixin:
 
         volume = self.get_volume(name_or_id)
         if not volume:
-            raise exc.OpenStackCloudException(
-                "Volume %s not found." % name_or_id
-            )
+            raise exceptions.SDKException("Volume %s not found." % name_or_id)
 
         volume = self.block_storage.update_volume(volume, **kwargs)
 
@@ -192,15 +192,17 @@ class BlockStorageCloudMixin:
         :param bool bootable: Whether the volume should be bootable.
             (Defaults to True)
 
-        :raises: OpenStackCloudTimeout if wait time exceeded.
-        :raises: OpenStackCloudException on operation error.
         :returns: None
+        :raises: :class:`~openstack.exceptions.ResourceTimeout` if wait time
+            exceeded.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
 
         volume = self.get_volume(name_or_id)
 
         if not volume:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Volume {name_or_id} does not exist".format(
                     name_or_id=name_or_id
                 )
@@ -222,9 +224,12 @@ class BlockStorageCloudMixin:
         :param timeout: Seconds to wait for volume deletion. None is forever.
         :param force: Force delete volume even if the volume is in deleting
             or error_deleting state.
+
         :returns: True if deletion was successful, else False.
-        :raises: OpenStackCloudTimeout if wait time exceeded.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.ResourceTimeout` if wait time
+            exceeded.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         volume = self.block_storage.find_volume(name_or_id)
 
@@ -272,7 +277,7 @@ class BlockStorageCloudMixin:
         if name_or_id:
             project = self.get_project(name_or_id)
             if not project:
-                raise exc.OpenStackCloudException("project does not exist")
+                raise exceptions.SDKException("project does not exist")
             params['project'] = project
         return self.block_storage.get_limits(**params)
 
@@ -317,9 +322,12 @@ class BlockStorageCloudMixin:
         :param volume: The volume dict to detach.
         :param wait: If true, waits for volume to be detached.
         :param timeout: Seconds to wait for volume detachment. None is forever.
+
         :returns: None
-        :raises: OpenStackCloudTimeout if wait time exceeded.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.ResourceTimeout` if wait time
+            exceeded.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         self.compute.delete_volume_attachment(
             server=server['id'],
@@ -354,19 +362,22 @@ class BlockStorageCloudMixin:
         :param device: The device name where the volume will attach.
         :param wait: If true, waits for volume to be attached.
         :param timeout: Seconds to wait for volume attachment. None is forever.
+
         :returns: a volume attachment object.
-        :raises: OpenStackCloudTimeout if wait time exceeded.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.ResourceTimeout` if wait time
+            exceeded.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         dev = self.get_volume_attach_device(volume, server['id'])
         if dev:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Volume %s already attached to server %s on device %s"
                 % (volume['id'], server['id'], dev)
             )
 
         if volume['status'] != 'available':
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Volume %s is not available. Status is '%s'"
                 % (volume['id'], volume['status'])
             )
@@ -422,9 +433,12 @@ class BlockStorageCloudMixin:
         :param wait: If true, waits for volume snapshot to be created.
         :param timeout: Seconds to wait for volume snapshot creation. None is
             forever.
+
         :returns: The created volume ``Snapshot`` object.
-        :raises: OpenStackCloudTimeout if wait time exceeded.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.ResourceTimeout` if wait time
+            exceeded.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         kwargs = self._get_volume_kwargs(kwargs)
         payload = {'volume_id': volume_id, 'force': force}
@@ -500,9 +514,12 @@ class BlockStorageCloudMixin:
             forever.
         :param incremental: If set to true, the backup will be incremental.
         :param snapshot_id: The UUID of the source snapshot to back up.
+
         :returns: The created volume ``Backup`` object.
-        :raises: OpenStackCloudTimeout if wait time exceeded.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.ResourceTimeout` if wait time
+            exceeded.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         payload = {
             'name': name,
@@ -596,12 +613,14 @@ class BlockStorageCloudMixin:
         :param force: Allow delete in state other than error or available.
         :param wait: If true, waits for volume backup to be deleted.
         :param timeout: Seconds to wait for volume backup deletion. None is
-                        forever.
+            forever.
+
         :returns: True if deletion was successful, else False.
-        :raises: OpenStackCloudTimeout if wait time exceeded.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.ResourceTimeout` if wait time
+            exceeded.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
-
         volume_backup = self.get_volume_backup(name_or_id)
 
         if not volume_backup:
@@ -627,9 +646,12 @@ class BlockStorageCloudMixin:
         :param wait: If true, waits for volume snapshot to be deleted.
         :param timeout: Seconds to wait for volume snapshot deletion. None is
             forever.
+
         :returns: True if deletion was successful, else False.
-        :raises: OpenStackCloudTimeout if wait time exceeded.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.ResourceTimeout` if wait time
+            exceeded.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         volumesnapshot = self.get_volume_snapshot(name_or_id)
 
@@ -764,11 +786,12 @@ class BlockStorageCloudMixin:
 
         :param name_or_id: Name or unique ID of the volume type.
         :returns: A volume ``Type`` object if found, else None.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         volume_type = self.get_volume_type(name_or_id)
         if not volume_type:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "VolumeType not found: %s" % name_or_id
             )
 
@@ -781,12 +804,14 @@ class BlockStorageCloudMixin:
 
         :param name_or_id: ID or name of a volume_type
         :param project_id: A project id
+
         :returns: None
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         volume_type = self.get_volume_type(name_or_id)
         if not volume_type:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "VolumeType not found: %s" % name_or_id
             )
 
@@ -797,12 +822,14 @@ class BlockStorageCloudMixin:
 
         :param name_or_id: ID or name of a volume_type
         :param project_id: A project id
+
         :returns: None
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         volume_type = self.get_volume_type(name_or_id)
         if not volume_type:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "VolumeType not found: %s" % name_or_id
             )
         self.block_storage.remove_type_access(volume_type, project_id)
@@ -812,9 +839,10 @@ class BlockStorageCloudMixin:
 
         :param name_or_id: project name or id
         :param kwargs: key/value pairs of quota name and quota value
+
         :returns: None
-        :raises: OpenStackCloudException if the resource to set the
-            quota does not exist.
+        :raises: :class:`~openstack.exceptions.SDKException` if the resource to
+            set the quota does not exist.
         """
 
         proj = self.identity.find_project(name_or_id, ignore_missing=False)
@@ -827,8 +855,10 @@ class BlockStorageCloudMixin:
         """Get volume quotas for a project
 
         :param name_or_id: project name or id
+
         :returns: A volume ``QuotaSet`` object with the quotas
-        :raises: OpenStackCloudException if it's not a valid project
+        :raises: :class:`~openstack.exceptions.SDKException` if it's not a
+            valid project
         """
         proj = self.identity.find_project(name_or_id, ignore_missing=False)
 
@@ -838,9 +868,10 @@ class BlockStorageCloudMixin:
         """Delete volume quotas for a project
 
         :param name_or_id: project name or id
+
         :returns: The deleted volume ``QuotaSet`` object.
-        :raises: OpenStackCloudException if it's not a valid project or the
-            call failed
+        :raises: :class:`~openstack.exceptions.SDKException` if it's not a
+            valid project or the call failed
         """
         proj = self.identity.find_project(name_or_id, ignore_missing=False)
 
diff --git a/openstack/cloud/_coe.py b/openstack/cloud/_coe.py
index f568c6ceb9ac5ce23741aaebb86a0841bfa8f117..6bf0ba059b00479271cfcf0073ab60874fcfde88 100644
--- a/openstack/cloud/_coe.py
+++ b/openstack/cloud/_coe.py
@@ -11,7 +11,7 @@
 # limitations under the License.
 
 from openstack.cloud import _utils
-from openstack.cloud import exc
+from openstack import exceptions
 
 
 class CoeCloudMixin:
@@ -20,8 +20,8 @@ class CoeCloudMixin:
 
         :returns: A list of container infrastructure management ``Cluster``
             objects.
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         return list(self.container_infrastructure_management.clusters())
 
@@ -35,8 +35,8 @@ class CoeCloudMixin:
 
         :returns: A list of container infrastructure management ``Cluster``
             objects.
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         coe_clusters = self.list_coe_clusters()
         return _utils._filter_list(coe_clusters, name_or_id, filters)
@@ -77,11 +77,10 @@ class CoeCloudMixin:
         :param string cluster_template_id: ID of the cluster template to use.
         :param dict kwargs: Any other arguments to pass in.
 
-        :returns: a dict containing the cluster description
         :returns: The created container infrastructure management ``Cluster``
             object.
-        :raises: ``OpenStackCloudException`` if something goes wrong during
-            the OpenStack API call
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call
         """
         cluster = self.container_infrastructure_management.create_cluster(
             name=name,
@@ -95,10 +94,11 @@ class CoeCloudMixin:
         """Delete a COE cluster.
 
         :param name_or_id: Name or unique ID of the cluster.
+
         :returns: True if the delete succeeded, False if the
             cluster was not found.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
 
         cluster = self.get_coe_cluster(name_or_id)
@@ -122,11 +122,12 @@ class CoeCloudMixin:
 
         :returns: The updated cluster ``Cluster`` object.
 
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         cluster = self.get_coe_cluster(name_or_id)
         if not cluster:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "COE cluster %s not found." % name_or_id
             )
 
@@ -158,8 +159,8 @@ class CoeCloudMixin:
             certificate that client will use to communicate with the cluster.
 
         :returns: a dict representing the signed certs.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         return self.container_infrastructure_management.create_cluster_certificate(  # noqa: E501
             cluster_uuid=cluster_id, csr=csr
@@ -172,9 +173,8 @@ class CoeCloudMixin:
             ClusterTemplates are always returned with full details.
 
         :returns: a list of dicts containing the cluster template details.
-
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         return list(
             self.container_infrastructure_management.cluster_templates()
@@ -191,9 +191,8 @@ class CoeCloudMixin:
             detailed output.
 
         :returns: a list of dict containing the cluster templates
-
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException`: if something goes
+            wrong during the OpenStack API call.
         """
         cluster_templates = self.list_cluster_templates(detail=detail)
         return _utils._filter_list(cluster_templates, name_or_id, filters)
@@ -240,9 +239,8 @@ class CoeCloudMixin:
             Other arguments will be passed in kwargs.
 
         :returns: a dict containing the cluster template description
-
-        :raises: ``OpenStackCloudException`` if something goes wrong during
-            the OpenStack API call
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call
         """
         cluster_template = (
             self.container_infrastructure_management.create_cluster_template(
@@ -260,10 +258,11 @@ class CoeCloudMixin:
         """Delete a cluster template.
 
         :param name_or_id: Name or unique ID of the cluster template.
+
         :returns: True if the delete succeeded, False if the
             cluster template was not found.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
 
         cluster_template = self.get_cluster_template(name_or_id)
@@ -287,12 +286,12 @@ class CoeCloudMixin:
         :param name_or_id: Name or ID of the cluster template being updated.
 
         :returns: an update cluster template.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         cluster_template = self.get_cluster_template(name_or_id)
         if not cluster_template:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Cluster template %s not found." % name_or_id
             )
 
@@ -306,8 +305,9 @@ class CoeCloudMixin:
 
     def list_magnum_services(self):
         """List all Magnum services.
-        :returns: a list of dicts containing the service details.
 
-        :raises: OpenStackCloudException on operation error.
+        :returns: a list of dicts containing the service details.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         return list(self.container_infrastructure_management.services())
diff --git a/openstack/cloud/_compute.py b/openstack/cloud/_compute.py
index 971cbd0e4aad9f5fd72b3062901ab5c1d2174284..2a2df8bdb727af7b1f8f82be4fc0d1a229b74860 100644
--- a/openstack/cloud/_compute.py
+++ b/openstack/cloud/_compute.py
@@ -99,8 +99,9 @@ class ComputeCloudMixin:
         :param string include: If given, will return a flavor whose name
             contains this string as a substring.
         :param get_extra:
+
         :returns: A compute ``Flavor`` object.
-        :raises: :class:`~openstack.exceptions.OpenStackCloudException` if no
+        :raises: :class:`~openstack.exceptions.SDKException` if no
             matching flavour could be found.
         """
         flavors = self.list_flavors(get_extra=get_extra)
@@ -109,7 +110,7 @@ class ComputeCloudMixin:
                 not include or include in flavor['name']
             ):
                 return flavor
-        raise exc.OpenStackCloudException(
+        raise exceptions.SDKException(
             "Could not find a flavor with {ram} and '{include}'".format(
                 ram=ram, include=include
             )
@@ -175,10 +176,11 @@ class ComputeCloudMixin:
 
         :param name_or_id: Name or unique ID of the server group(s).
         :param filters: A dict containing additional filters to use.
+
         :returns: A list of compute ``ServerGroup`` objects matching the search
             criteria.
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         server_groups = self.list_server_groups()
         return _utils._filter_list(server_groups, name_or_id, filters)
@@ -283,7 +285,8 @@ class ComputeCloudMixin:
 
         :returns: False if server or security groups are undefined, True
             otherwise.
-        :raises: ``OpenStackCloudException``, on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         server, security_groups = self._get_server_security_groups(
             server, security_groups
@@ -306,7 +309,8 @@ class ComputeCloudMixin:
 
         :returns: False if server or security groups are undefined, True
             otherwise.
-        :raises: ``OpenStackCloudException``, on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         server, security_groups = self._get_server_security_groups(
             server, security_groups
@@ -378,16 +382,18 @@ class ComputeCloudMixin:
 
         :param name_or_id: (optional) project name or ID to get limits for
             if different from the current project
-        :raises: OpenStackCloudException if it's not a valid project
+
         :returns: A compute
             :class:`~openstack.compute.v2.limits.Limits.AbsoluteLimits` object.
+        :raises: :class:`~openstack.exceptions.SDKException` if it's not a
+            valid project
         """
         params = {}
         project_id = None
         if name_or_id:
             proj = self.get_project(name_or_id)
             if not proj:
-                raise exc.OpenStackCloudException("project does not exist")
+                raise exceptions.SDKException("project does not exist")
             project_id = proj.id
             params['tenant_id'] = project_id
         return self.compute.get_limits(**params).absolute
@@ -468,21 +474,21 @@ class ComputeCloudMixin:
 
         :returns: A string containing the text of the console log or an
             empty string if the cloud does not support console logs.
-        :raises: OpenStackCloudException if an invalid server argument is given
-            or if something else unforseen happens
+        :raises: :class:`~openstack.exceptions.SDKException` if an invalid
+            server argument is given or if something else unforseen happens
         """
 
         if not isinstance(server, dict):
             server = self.get_server(server, bare=True)
 
         if not server:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Console log requested for invalid server"
             )
 
         try:
             return self._get_server_console_output(server['id'], length)
-        except exc.OpenStackCloudBadRequest:
+        except exceptions.BadRequestException:
             return ""
 
     def _get_server_console_output(self, server_id, length=None):
@@ -582,8 +588,10 @@ class ComputeCloudMixin:
 
         :param name: Name of the keypair being created.
         :param public_key: Public key for the new keypair.
+
         :returns: The created compute ``Keypair`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         keypair = {
             'name': name,
@@ -598,8 +606,8 @@ class ComputeCloudMixin:
         :param name: Name of the keypair to delete.
 
         :returns: True if delete succeeded, False otherwise.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         try:
             self.compute.delete_keypair(name, ignore_missing=False)
@@ -630,13 +638,15 @@ class ComputeCloudMixin:
         :param wait: If true, waits for image to be created.
         :param timeout: Seconds to wait for image creation. None is forever.
         :param metadata: Metadata to give newly-created image entity
+
         :returns: The created image ``Image`` object.
-        :raises: OpenStackCloudException if there are problems uploading
+        :raises: :class:`~openstack.exceptions.SDKException` if there are
+            problems uploading
         """
         if not isinstance(server, dict):
             server_obj = self.get_server(server, bare=True)
             if not server_obj:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Server {server} could not be found and therefore"
                     " could not be snapshotted.".format(server=server)
                 )
@@ -800,8 +810,10 @@ class ComputeCloudMixin:
         :param group: ServerGroup dict, name or id to boot the server in.
             If a group is provided in both scheduler_hints and in the group
             param, the group param will win. (Optional, defaults to None)
+
         :returns: The created compute ``Server`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         # TODO(shade) Image is optional but flavor is not - yet flavor comes
         # after image in the argument list. Doh.
@@ -840,7 +852,7 @@ class ComputeCloudMixin:
         if group:
             group_obj = self.get_server_group(group)
             if not group_obj:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Server Group {group} was requested but was not found"
                     " on the cloud".format(group=group)
                 )
@@ -856,7 +868,7 @@ class ComputeCloudMixin:
                 # Be nice and help the user out
                 kwargs['nics'] = [kwargs['nics']]
             else:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     'nics parameter to create_server takes a list of dicts.'
                     ' Got: {nics}'.format(nics=kwargs['nics'])
                 )
@@ -871,7 +883,7 @@ class ComputeCloudMixin:
                 else:
                     network_obj = self.get_network(name_or_id=net_name)
                 if not network_obj:
-                    raise exc.OpenStackCloudException(
+                    raise exceptions.SDKException(
                         'Network {network} is not a valid network in'
                         ' {cloud}:{region}'.format(
                             network=network,
@@ -899,7 +911,7 @@ class ComputeCloudMixin:
                 net_name = nic.pop('net-name')
                 nic_net = self.get_network(net_name)
                 if not nic_net:
-                    raise exc.OpenStackCloudException(
+                    raise exceptions.SDKException(
                         "Requested network {net} could not be found.".format(
                             net=net_name
                         )
@@ -908,7 +920,7 @@ class ComputeCloudMixin:
             for ip_key in ('v4-fixed-ip', 'v6-fixed-ip', 'fixed_ip'):
                 fixed_ip = nic.pop(ip_key, None)
                 if fixed_ip and net.get('fixed_ip'):
-                    raise exc.OpenStackCloudException(
+                    raise exceptions.SDKException(
                         "Only one of v4-fixed-ip, v6-fixed-ip or fixed_ip"
                         " may be given"
                     )
@@ -923,7 +935,7 @@ class ComputeCloudMixin:
                 utils.require_microversion(self.compute, '2.42')
                 net['tag'] = nic.pop('tag')
             if nic:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Additional unsupported keys given for server network"
                     " creation: {keys}".format(keys=nic.keys())
                 )
@@ -1018,7 +1030,7 @@ class ComputeCloudMixin:
         if boot_volume:
             volume = self.get_volume(boot_volume)
             if not volume:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     'Volume {boot_volume} is not a valid volume'
                     ' in {cloud}:{region}'.format(
                         boot_volume=boot_volume,
@@ -1041,7 +1053,7 @@ class ComputeCloudMixin:
             else:
                 image_obj = self.get_image(image)
             if not image_obj:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     'Image {image} is not a valid image in'
                     ' {cloud}:{region}'.format(
                         image=image,
@@ -1074,7 +1086,7 @@ class ComputeCloudMixin:
         for volume in volumes:
             volume_obj = self.get_volume(volume)
             if not volume_obj:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     'Volume {volume} is not a valid volume'
                     ' in {cloud}:{region}'.format(
                         volume=volume,
@@ -1126,7 +1138,7 @@ class ComputeCloudMixin:
             # and pass it down into the IP stack.
             remaining_timeout = timeout - int(time.time() - start_time)
             if remaining_timeout <= 0:
-                raise exc.OpenStackCloudTimeout(timeout_message)
+                raise exceptions.ResourceTimeout(timeout_message)
 
             server = self.get_active_server(
                 server=server,
@@ -1159,7 +1171,7 @@ class ComputeCloudMixin:
                 and server['fault'] is not None
                 and 'message' in server['fault']
             ):
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Error in creating the server."
                     " Compute service reports fault: {reason}".format(
                         reason=server['fault']['message']
@@ -1167,7 +1179,7 @@ class ComputeCloudMixin:
                     extra_data=dict(server=server),
                 )
 
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Error in creating the server"
                 " (no further information available)",
                 extra_data=dict(server=server),
@@ -1195,13 +1207,13 @@ class ComputeCloudMixin:
             try:
                 self._delete_server(server=server, wait=wait, timeout=timeout)
             except Exception as e:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     'Server reached ACTIVE state without being'
                     ' allocated an IP address AND then could not'
                     ' be deleted: {0}'.format(e),
                     extra_data=dict(server=server),
                 )
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'Server reached ACTIVE state without being'
                 ' allocated an IP address.',
                 extra_data=dict(server=server),
@@ -1253,12 +1265,14 @@ class ComputeCloudMixin:
         :param dict metadata: A dictionary with the key=value pairs
             to set in the server instance. It only updates the key=value pairs
             provided. Existing ones will remain untouched.
+
         :returns: None
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         server = self.get_server(name_or_id, bare=True)
         if not server:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'Invalid Server {server}'.format(server=name_or_id)
             )
 
@@ -1271,12 +1285,14 @@ class ComputeCloudMixin:
             to update.
         :param metadata_keys: A list with the keys to be deleted
             from the server instance.
+
         :returns: None
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         server = self.get_server(name_or_id, bare=True)
         if not server:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'Invalid Server {server}'.format(server=name_or_id)
             )
 
@@ -1301,9 +1317,11 @@ class ComputeCloudMixin:
             associated with the instance.
         :param int delete_ip_retry: Number of times to retry deleting
             any floating ips, should the first try be unsuccessful.
+
         :returns: True if delete succeeded, False otherwise if the
             server does not exist.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         # If delete_ips is True, we need the server to not be bare.
         server = self.compute.find_server(name_or_id, ignore_missing=True)
@@ -1332,7 +1350,7 @@ class ComputeCloudMixin:
                 ip = self.get_floating_ip(
                     id=None, filters={'floating_ip_address': fip['addr']}
                 )
-            except exc.OpenStackCloudURINotFound:
+            except exceptions.NotFoundException:
                 # We're deleting. If it doesn't exist - awesome
                 # NOTE(mordred) If the cloud is a nova FIP cloud but
                 #               floating_ip_source is set to neutron, this
@@ -1342,7 +1360,7 @@ class ComputeCloudMixin:
                 continue
             deleted = self.delete_floating_ip(ip['id'], retry=delete_ip_retry)
             if not deleted:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Tried to delete floating ip {floating_ip}"
                     " associated with server {id} but there was"
                     " an error deleting it. Not deleting server.".format(
@@ -1396,8 +1414,10 @@ class ComputeCloudMixin:
             detailed = False.
         :param name: New name for the server
         :param description: New description for the server
+
         :returns: The updated compute ``Server`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         server = self.compute.find_server(name_or_id, ignore_missing=False)
 
@@ -1410,8 +1430,10 @@ class ComputeCloudMixin:
 
         :param name: Name of the server group being created
         :param policies: List of policies for the server group.
+
         :returns: The created compute ``ServerGroup`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         sg_attrs = {'name': name}
         if policies:
@@ -1424,8 +1446,10 @@ class ComputeCloudMixin:
         """Delete a server group.
 
         :param name_or_id: Name or ID of the server group to delete
+
         :returns: True if delete succeeded, False otherwise
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         server_group = self.get_server_group(name_or_id)
         if not server_group:
@@ -1462,8 +1486,10 @@ class ComputeCloudMixin:
         :param swap: Swap space in MB
         :param rxtx_factor: RX/TX factor
         :param is_public: Make flavor accessible to the public
+
         :returns: The created compute ``Flavor`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         attrs = {
             'disk': disk,
@@ -1486,8 +1512,10 @@ class ComputeCloudMixin:
         """Delete a flavor
 
         :param name_or_id: ID or name of the flavor to delete.
+
         :returns: True if delete succeeded, False otherwise.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         try:
             flavor = self.compute.find_flavor(name_or_id)
@@ -1497,7 +1525,7 @@ class ComputeCloudMixin:
             self.compute.delete_flavor(flavor)
             return True
         except exceptions.SDKException:
-            raise exceptions.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Unable to delete flavor {name}".format(name=name_or_id)
             )
 
@@ -1507,8 +1535,10 @@ class ComputeCloudMixin:
         :param string flavor_id: ID of the flavor to update.
         :param dict extra_specs: Dictionary of key-value pairs.
 
-        :raises: OpenStackCloudException on operation error.
-        :raises: OpenStackCloudResourceNotFound if flavor ID is not found.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
+        :raises: :class:`~openstack.exceptions.BadRequestException` if flavor
+            ID is not found.
         """
         self.compute.create_flavor_extra_specs(flavor_id, extra_specs)
 
@@ -1518,8 +1548,10 @@ class ComputeCloudMixin:
         :param string flavor_id: ID of the flavor to update.
         :param keys: List of spec keys to delete.
 
-        :raises: OpenStackCloudException on operation error.
-        :raises: OpenStackCloudResourceNotFound if flavor ID is not found.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
+        :raises: :class:`~openstack.exceptions.BadRequestException` if flavor
+            ID is not found.
         """
         for key in keys:
             self.compute.delete_flavor_extra_specs_property(flavor_id, key)
@@ -1530,7 +1562,8 @@ class ComputeCloudMixin:
         :param string flavor_id: ID of the private flavor.
         :param string project_id: ID of the project/tenant.
 
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         self.compute.flavor_add_tenant_access(flavor_id, project_id)
 
@@ -1540,7 +1573,8 @@ class ComputeCloudMixin:
         :param string flavor_id: ID of the private flavor.
         :param string project_id: ID of the project/tenant.
 
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         self.compute.flavor_remove_tenant_access(flavor_id, project_id)
 
@@ -1548,8 +1582,10 @@ class ComputeCloudMixin:
         """List access from a private flavor for a project/tenant.
 
         :param string flavor_id: ID of the private flavor.
+
         :returns: List of dicts with flavor_id and tenant_id attributes.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         return self.compute.get_flavor_access(flavor_id)
 
@@ -1569,10 +1605,11 @@ class ComputeCloudMixin:
 
         :param name: aggregate name or id.
         :param filters: a dict containing additional filters to use.
+
         :returns: A list of compute ``Aggregate`` objects matching the search
             criteria.
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         aggregates = self.list_aggregates()
         return _utils._filter_list(aggregates, name_or_id, filters)
@@ -1612,8 +1649,10 @@ class ComputeCloudMixin:
 
         :param name: Name of the host aggregate being created
         :param availability_zone: Availability zone to assign hosts
+
         :returns: The created compute ``Aggregate`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         return self.compute.create_aggregate(
             name=name, availability_zone=availability_zone
@@ -1626,8 +1665,10 @@ class ComputeCloudMixin:
         :param name_or_id: Name or ID of the aggregate being updated.
         :param name: New aggregate name
         :param availability_zone: Availability zone to assign to hosts
+
         :returns: The updated compute ``Aggregate`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         aggregate = self.get_aggregate(name_or_id)
         return self.compute.update_aggregate(aggregate, **kwargs)
@@ -1636,8 +1677,10 @@ class ComputeCloudMixin:
         """Delete a host aggregate.
 
         :param name_or_id: Name or ID of the host aggregate to delete.
+
         :returns: True if delete succeeded, False otherwise.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if isinstance(name_or_id, (str, bytes)) and not name_or_id.isdigit():
             aggregate = self.get_aggregate(name_or_id)
@@ -1662,12 +1705,12 @@ class ComputeCloudMixin:
             {'key': None} to remove a key)
 
         :returns: a dict representing the new host aggregate.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         aggregate = self.get_aggregate(name_or_id)
         if not aggregate:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Host aggregate %s not found." % name_or_id
             )
 
@@ -1679,11 +1722,12 @@ class ComputeCloudMixin:
         :param name_or_id: Name or ID of the host aggregate.
         :param host_name: Host to add.
 
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         aggregate = self.get_aggregate(name_or_id)
         if not aggregate:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Host aggregate %s not found." % name_or_id
             )
 
@@ -1695,11 +1739,12 @@ class ComputeCloudMixin:
         :param name_or_id: Name or ID of the host aggregate.
         :param host_name: Host to remove.
 
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         aggregate = self.get_aggregate(name_or_id)
         if not aggregate:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Host aggregate %s not found." % name_or_id
             )
 
@@ -1711,8 +1756,8 @@ class ComputeCloudMixin:
         :param name_or_id: project name or id
         :param kwargs: key/value pairs of quota name and quota value
 
-        :raises: OpenStackCloudException if the resource to set the
-            quota does not exist.
+        :raises: :class:`~openstack.exceptions.SDKException` if the resource to
+            set the quota does not exist.
         """
         proj = self.identity.find_project(name_or_id, ignore_missing=False)
         kwargs['force'] = True
@@ -1724,8 +1769,10 @@ class ComputeCloudMixin:
         """Get quota for a project
 
         :param name_or_id: project name or id
+
         :returns: A compute ``QuotaSet`` object if found, else None.
-        :raises: OpenStackCloudException if it's not a valid project
+        :raises: :class:`~openstack.exceptions.SDKException` if it's not a
+            valid project
         """
         proj = self.identity.find_project(name_or_id, ignore_missing=False)
         return self.compute.get_quota_set(proj)
@@ -1734,9 +1781,9 @@ class ComputeCloudMixin:
         """Delete quota for a project
 
         :param name_or_id: project name or id
-        :raises: OpenStackCloudException if it's not a valid project or the
-            nova client call failed
-        :returns: None
+
+        :raises: :class:`~openstack.exceptions.SDKException` if it's not a
+            valid project or the nova client call failed
         """
         proj = self.identity.find_project(name_or_id, ignore_missing=False)
         self.compute.revert_quota_set(proj)
@@ -1750,9 +1797,10 @@ class ComputeCloudMixin:
             was started)
         :param end: :class:`datetime.datetime` or string. End date in UTC.
             Defaults to now
-        :raises: OpenStackCloudException if it's not a valid project
 
         :returns: A :class:`~openstack.compute.v2.usage.Usage` object
+        :raises: :class:`~openstack.exceptions.SDKException` if it's not a
+            valid project
         """
 
         def parse_date(date):
@@ -1762,7 +1810,7 @@ class ComputeCloudMixin:
                 # Yes. This is an exception mask. However,iso8601 is an
                 # implementation detail - and the error message is actually
                 # less informative.
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Date given, {date}, is invalid. Please pass in a date"
                     " string in ISO 8601 format -"
                     " YYYY-MM-DDTHH:MM:SS".format(date=date)
@@ -1775,7 +1823,7 @@ class ComputeCloudMixin:
 
         proj = self.get_project(name_or_id)
         if not proj:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "project does not exist: {name}".format(name=proj.id)
             )
 
diff --git a/openstack/cloud/_dns.py b/openstack/cloud/_dns.py
index a896f90b67338cf08deae6ba405497f2e1e7c955..5c5ca80b3efe8d4f9740639288d38f891d5ec026 100644
--- a/openstack/cloud/_dns.py
+++ b/openstack/cloud/_dns.py
@@ -11,7 +11,6 @@
 # limitations under the License.
 
 from openstack.cloud import _utils
-from openstack.cloud import exc
 from openstack.dns.v2._proxy import Proxy
 from openstack import exceptions
 from openstack import resource
@@ -74,8 +73,8 @@ class DnsCloudMixin:
             if zone_type is secondary)
 
         :returns: a dict representing the created zone.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
 
         # We capitalize in case the user passes time in lowercase, as
@@ -83,7 +82,7 @@ class DnsCloudMixin:
         if zone_type is not None:
             zone_type = zone_type.upper()
             if zone_type not in ('PRIMARY', 'SECONDARY'):
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Invalid type %s, valid choices are PRIMARY or SECONDARY"
                     % zone_type
                 )
@@ -105,7 +104,7 @@ class DnsCloudMixin:
         try:
             return self.dns.create_zone(**zone)
         except exceptions.SDKException:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Unable to create zone {name}".format(name=name)
             )
 
@@ -122,14 +121,12 @@ class DnsCloudMixin:
             if zone_type is secondary)
 
         :returns: a dict representing the updated zone.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         zone = self.get_zone(name_or_id)
         if not zone:
-            raise exc.OpenStackCloudException(
-                "Zone %s not found." % name_or_id
-            )
+            raise exceptions.SDKException("Zone %s not found." % name_or_id)
 
         return self.dns.update_zone(zone['id'], **kwargs)
 
@@ -139,8 +136,8 @@ class DnsCloudMixin:
         :param name_or_id: Name or ID of the zone being deleted.
 
         :returns: True if delete succeeded, False otherwise.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
 
         zone = self.dns.find_zone(name_or_id)
@@ -166,7 +163,7 @@ class DnsCloudMixin:
         else:
             zone_obj = self.get_zone(zone)
         if zone_obj is None:
-            raise exc.OpenStackCloudException("Zone %s not found." % zone)
+            raise exceptions.SDKException("Zone %s not found." % zone)
         return list(self.dns.recordsets(zone_obj))
 
     def get_recordset(self, zone, name_or_id):
@@ -185,7 +182,7 @@ class DnsCloudMixin:
         else:
             zone_obj = self.get_zone(zone)
         if not zone_obj:
-            raise exc.OpenStackCloudException("Zone %s not found." % zone)
+            raise exceptions.SDKException("Zone %s not found." % zone)
         try:
             return self.dns.find_recordset(
                 zone=zone_obj, name_or_id=name_or_id, ignore_missing=False
@@ -211,16 +208,15 @@ class DnsCloudMixin:
         :param ttl: TTL value of the recordset
 
         :returns: a dict representing the created recordset.
-
-        :raises: OpenStackCloudException on operation error.
-
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if isinstance(zone, resource.Resource):
             zone_obj = zone
         else:
             zone_obj = self.get_zone(zone)
         if not zone_obj:
-            raise exc.OpenStackCloudException("Zone %s not found." % zone)
+            raise exceptions.SDKException("Zone %s not found." % zone)
 
         # We capitalize the type in case the user sends in lowercase
         recordset_type = recordset_type.upper()
@@ -247,13 +243,13 @@ class DnsCloudMixin:
         :param ttl: TTL (Time to live) value in seconds of the recordset
 
         :returns: a dict representing the updated recordset.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
 
         rs = self.get_recordset(zone, name_or_id)
         if not rs:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Recordset %s not found." % name_or_id
             )
 
@@ -269,8 +265,8 @@ class DnsCloudMixin:
         :param name_or_id: Name or ID of the recordset being deleted.
 
         :returns: True if delete succeeded, False otherwise.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
 
         recordset = self.get_recordset(zone, name_or_id)
diff --git a/openstack/cloud/_floating_ip.py b/openstack/cloud/_floating_ip.py
index e63dd23fb895e7fb0ee9ffc804f3352a62e78d61..970d337f75576b1857b212e864a47fc518ef6f4b 100644
--- a/openstack/cloud/_floating_ip.py
+++ b/openstack/cloud/_floating_ip.py
@@ -67,7 +67,7 @@ class FloatingIPCloudMixin:
     def _nova_list_floating_ips(self):
         try:
             data = proxy._json_response(self.compute.get('/os-floating-ips'))
-        except exc.OpenStackCloudURINotFound:
+        except exceptions.NotFoundException:
             return []
         return self._get_and_munchify('floating_ips', data)
 
@@ -109,7 +109,7 @@ class FloatingIPCloudMixin:
         if self._use_neutron_floating():
             try:
                 return self._neutron_list_floating_ips(filters)
-            except exc.OpenStackCloudURINotFound as e:
+            except exceptions.NotFoundException as e:
                 # Nova-network don't support server-side floating ips
                 # filtering, so it's safer to return an empty list than
                 # to fallback to Nova which may return more results that
@@ -206,8 +206,8 @@ class FloatingIPCloudMixin:
         :param server: (server) Server the Floating IP is for
 
         :returns: a list of floating IP addresses.
-        :raises: ``OpenStackCloudResourceNotFound``, if an external network
-            that meets the specified criteria cannot be found.
+        :raises: :class:`~openstack.exceptions.BadRequestException` if an
+            external network that meets the specified criteria cannot be found.
         """
         if project_id is None:
             # Make sure we are only listing floatingIPs allocated the current
@@ -229,7 +229,7 @@ class FloatingIPCloudMixin:
                     break
 
             if floating_network_id is None:
-                raise exc.OpenStackCloudResourceNotFound(
+                raise exceptions.NotFoundException(
                     "unable to find external network {net}".format(net=network)
                 )
         else:
@@ -265,9 +265,8 @@ class FloatingIPCloudMixin:
         :param pool: Nova floating IP pool name.
 
         :returns: a list of floating IP addresses.
-
-        :raises: ``OpenStackCloudResourceNotFound``, if a floating IP pool
-            is not specified and cannot be found.
+        :raises: :class:`~openstack.exceptions.BadRequestException` if a
+            floating IP pool is not specified and cannot be found.
         """
 
         with _utils.openstacksdk_exceptions(
@@ -276,7 +275,7 @@ class FloatingIPCloudMixin:
             if pool is None:
                 pools = self.list_floating_ip_pools()
                 if not pools:
-                    raise exc.OpenStackCloudResourceNotFound(
+                    raise exceptions.NotFoundException(
                         "unable to find a floating ip pool"
                     )
                 pool = pools[0]['name']
@@ -323,7 +322,7 @@ class FloatingIPCloudMixin:
                     network=network, server=server
                 )
                 return f_ips[0]
-            except exc.OpenStackCloudURINotFound as e:
+            except exceptions.NotFoundException as e:
                 self.log.debug(
                     "Something went wrong talking to neutron API: "
                     "'%(msg)s'. Trying with Nova.",
@@ -346,7 +345,7 @@ class FloatingIPCloudMixin:
             if floating_network:
                 floating_network_id = floating_network
             else:
-                raise exc.OpenStackCloudResourceNotFound(
+                raise exceptions.NotFoundException(
                     "unable to find an external network"
                 )
         return floating_network_id
@@ -384,8 +383,8 @@ class FloatingIPCloudMixin:
                         provided.
 
         :returns: a floating IP address
-
-        :raises: ``OpenStackCloudException``, on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if self._use_neutron_floating():
             try:
@@ -398,7 +397,7 @@ class FloatingIPCloudMixin:
                     wait=wait,
                     timeout=timeout,
                 )
-            except exc.OpenStackCloudURINotFound as e:
+            except exceptions.NotFoundException as e:
                 self.log.debug(
                     "Something went wrong talking to neutron API: "
                     "'%(msg)s'. Trying with Nova.",
@@ -407,7 +406,7 @@ class FloatingIPCloudMixin:
                 # Fall-through, trying with Nova
 
         if port:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "This cloud uses nova-network which does not support"
                 " arbitrary floating-ip/port mappings. Please nudge"
                 " your cloud provider to upgrade the networking stack"
@@ -440,7 +439,7 @@ class FloatingIPCloudMixin:
                 try:
                     network = self.network.find_network(network_name_or_id)
                 except exceptions.ResourceNotFound:
-                    raise exc.OpenStackCloudResourceNotFound(
+                    raise exceptions.NotFoundException(
                         "unable to find network for floating ips with ID "
                         "{0}".format(network_name_or_id)
                     )
@@ -481,7 +480,7 @@ class FloatingIPCloudMixin:
                         fip = self.get_floating_ip(fip_id)
                         if fip and fip['status'] == 'ACTIVE':
                             break
-                except exc.OpenStackCloudTimeout:
+                except exceptions.ResourceTimeout:
                     self.log.error(
                         "Timed out on floating ip %(fip)s becoming active."
                         " Deleting",
@@ -499,7 +498,7 @@ class FloatingIPCloudMixin:
                     raise
             if fip['port_id'] != port:
                 if server:
-                    raise exc.OpenStackCloudException(
+                    raise exceptions.SDKException(
                         "Attempted to create FIP on port {port} for server"
                         " {server} but FIP has port {port_id}".format(
                             port=port,
@@ -508,7 +507,7 @@ class FloatingIPCloudMixin:
                         )
                     )
                 else:
-                    raise exc.OpenStackCloudException(
+                    raise exceptions.SDKException(
                         "Attempted to create FIP on port {port}"
                         " but something went wrong".format(port=port)
                     )
@@ -521,7 +520,7 @@ class FloatingIPCloudMixin:
             if pool is None:
                 pools = self.list_floating_ip_pools()
                 if not pools:
-                    raise exc.OpenStackCloudResourceNotFound(
+                    raise exceptions.NotFoundException(
                         "unable to find a floating ip pool"
                     )
                 pool = pools[0]['name']
@@ -548,9 +547,9 @@ class FloatingIPCloudMixin:
                       occur.
 
         :returns: True if the IP address has been deleted, False if the IP
-                  address was not found.
-
-        :raises: ``OpenStackCloudException``, on operation error.
+            address was not found.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         for count in range(0, max(0, retry) + 1):
             result = self._delete_floating_ip(floating_ip_id)
@@ -566,7 +565,7 @@ class FloatingIPCloudMixin:
             if not f_ip or f_ip['status'] == 'DOWN':
                 return True
 
-        raise exc.OpenStackCloudException(
+        raise exceptions.SDKException(
             "Attempted to delete Floating IP {ip} with ID {id} a total of"
             " {retry} times. Although the cloud did not indicate any errors"
             " the floating ip is still in existence. Aborting further"
@@ -581,7 +580,7 @@ class FloatingIPCloudMixin:
         if self._use_neutron_floating():
             try:
                 return self._neutron_delete_floating_ip(floating_ip_id)
-            except exc.OpenStackCloudURINotFound as e:
+            except exceptions.NotFoundException as e:
                 self.log.debug(
                     "Something went wrong talking to neutron API: "
                     "'%(msg)s'. Trying with Nova.",
@@ -606,7 +605,7 @@ class FloatingIPCloudMixin:
                     fip_id=floating_ip_id
                 ),
             )
-        except exc.OpenStackCloudURINotFound:
+        except exceptions.NotFoundException:
             return False
         return True
 
@@ -629,8 +628,8 @@ class FloatingIPCloudMixin:
                       occur.
 
         :returns: Number of Floating IPs deleted, False if none
-
-        :raises: ``OpenStackCloudException``, on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         processed = []
         if self._use_neutron_floating():
@@ -669,8 +668,8 @@ class FloatingIPCloudMixin:
                                 FIP to attach to will come from.
 
         :returns: The server ``openstack.compute.v2.server.Server``
-
-        :raises: OpenStackCloudException, on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         # Short circuit if we're asking to attach an IP that's already
         # attached
@@ -697,7 +696,7 @@ class FloatingIPCloudMixin:
                         fixed_address=fixed_address,
                         nat_destination=nat_destination,
                     )
-                except exc.OpenStackCloudURINotFound as e:
+                except exceptions.NotFoundException as e:
                     self.log.debug(
                         "Something went wrong talking to neutron API: "
                         "'%(msg)s'. Trying with Nova.",
@@ -738,7 +737,7 @@ class FloatingIPCloudMixin:
             nat_destination=nat_destination,
         )
         if not port:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "unable to find a port for server {0}".format(server['id'])
             )
 
@@ -753,7 +752,7 @@ class FloatingIPCloudMixin:
     ):
         f_ip = self.get_floating_ip(id=floating_ip_id)
         if f_ip is None:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "unable to find floating IP {0}".format(floating_ip_id)
             )
         error_message = "Error attaching IP {ip} to instance {id}".format(
@@ -777,16 +776,16 @@ class FloatingIPCloudMixin:
         :param floating_ip_id: Id of the floating IP to detach.
 
         :returns: True if the IP has been detached, or False if the IP wasn't
-                  attached to any server.
-
-        :raises: ``OpenStackCloudException``, on operation error.
+            attached to any server.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if self._use_neutron_floating():
             try:
                 return self._neutron_detach_ip_from_server(
                     server_id=server_id, floating_ip_id=floating_ip_id
                 )
-            except exc.OpenStackCloudURINotFound as e:
+            except exceptions.NotFoundException as e:
                 self.log.debug(
                     "Something went wrong talking to neutron API: "
                     "'%(msg)s'. Trying with Nova.",
@@ -820,7 +819,7 @@ class FloatingIPCloudMixin:
     def _nova_detach_ip_from_server(self, server_id, floating_ip_id):
         f_ip = self.get_floating_ip(id=floating_ip_id)
         if f_ip is None:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "unable to find floating IP {0}".format(floating_ip_id)
             )
         error_message = "Error detaching IP {ip} from instance {id}".format(
@@ -921,11 +920,11 @@ class FloatingIPCloudMixin:
                                           floating IP should be on
 
         :returns: The updated server ``openstack.compute.v2.server.Server``
-
-        :raises: ``OpenStackCloudException``, on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
 
-        if type(ips) != list:
+        if type(ips) is list:
             ips = [ips]
 
         for ip in ips:
@@ -999,7 +998,7 @@ class FloatingIPCloudMixin:
                 timeout=timeout,
                 skip_attach=skip_attach,
             )
-        except exc.OpenStackCloudTimeout:
+        except exceptions.ResourceTimeout:
             if self._use_neutron_floating() and created:
                 # We are here because we created an IP on the port
                 # It failed. Delete so as not to leak an unmanaged
@@ -1131,7 +1130,7 @@ class FloatingIPCloudMixin:
         # No floating ip network - no FIPs
         try:
             self._get_floating_network_id()
-        except exc.OpenStackCloudException:
+        except exceptions.SDKException:
             return False
 
         (port_obj, fixed_ip_address) = self._nat_destination_port(
@@ -1169,7 +1168,7 @@ class FloatingIPCloudMixin:
                 if nat_destination:
                     nat_network = self.get_network(nat_destination)
                     if not nat_network:
-                        raise exc.OpenStackCloudException(
+                        raise exceptions.SDKException(
                             'NAT Destination {nat_destination} was configured'
                             ' but not found on the cloud. Please check your'
                             ' config and your cloud and try again.'.format(
@@ -1180,7 +1179,7 @@ class FloatingIPCloudMixin:
                     nat_network = self.get_nat_destination()
 
                 if not nat_network:
-                    raise exc.OpenStackCloudException(
+                    raise exceptions.SDKException(
                         'Multiple ports were found for server {server}'
                         ' but none of the networks are a valid NAT'
                         ' destination, so it is impossible to add a'
@@ -1198,7 +1197,7 @@ class FloatingIPCloudMixin:
                     if maybe_port['network_id'] == nat_network['id']:
                         maybe_ports.append(maybe_port)
                 if not maybe_ports:
-                    raise exc.OpenStackCloudException(
+                    raise exceptions.SDKException(
                         'No port on server {server} was found matching'
                         ' your NAT destination network {dest}. Please '
                         ' check your config'.format(
@@ -1224,7 +1223,7 @@ class FloatingIPCloudMixin:
                     if ip.version == 4:
                         fixed_address = address['ip_address']
                         return port, fixed_address
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "unable to find a free fixed IPv4 address for server "
                 "{0}".format(server['id'])
             )
diff --git a/openstack/cloud/_identity.py b/openstack/cloud/_identity.py
index e0849e8410ed8e2a009147ac2e4b5abf1e6ecfb1..0e90d25f8f7a1dd9864d87230ee7eb9b0d56b945 100644
--- a/openstack/cloud/_identity.py
+++ b/openstack/cloud/_identity.py
@@ -11,7 +11,6 @@
 # limitations under the License.
 
 from openstack.cloud import _utils
-from openstack.cloud import exc
 from openstack import exceptions
 from openstack.identity.v3._proxy import Proxy
 from openstack import utils
@@ -41,7 +40,7 @@ class IdentityCloudMixin:
         # mention api versions
         if utils.supports_version(self.identity, '3'):
             if not domain_id:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "User or project creation requires an explicit domain_id "
                     "argument."
                 )
@@ -87,8 +86,8 @@ class IdentityCloudMixin:
                 "[?last_name==`Smith`] | [?other.gender]==`Female`]"
 
         :returns: A list of identity ``Project`` objects.
-        :raises: ``OpenStackCloudException`` if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         if not filters:
             filters = {}
@@ -154,9 +153,10 @@ class IdentityCloudMixin:
 
                 "[?last_name==`Smith`] | [?other.gender]==`Female`]"
         :param domain_id: Domain ID to scope the retrieved project.
+
         :returns: An identity ``Project`` object.
-        :raises: ``OpenStackCloudException`` if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         return _utils._get_entity(
             self, 'project', name_or_id, filters, domain_id=domain_id
@@ -218,9 +218,10 @@ class IdentityCloudMixin:
 
         :param name_or_id: Name or unique ID of the project.
         :param domain_id: Domain ID to scope the retrieved project.
+
         :returns: True if delete succeeded, False if the project was not found.
-        :raises: ``OpenStackCloudException`` if something goes wrong during
-            the OpenStack API call
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call
         """
         try:
             project = self.identity.find_project(
@@ -245,9 +246,10 @@ class IdentityCloudMixin:
 
         :param name:
         :param domain_id: Domain ID to scope the retrieved users.
+
         :returns: A list of identity ``User`` objects.
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         return list(self.identity.users(**kwargs))
 
@@ -273,9 +275,10 @@ class IdentityCloudMixin:
             Example::
 
                 "[?last_name==`Smith`] | [?other.gender]==`Female`]"
+
         :returns: A list of identity ``User`` objects
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         kwargs = {}
         # NOTE(jdwidari) if name_or_id isn't UUID like then make use of server-
@@ -312,9 +315,10 @@ class IdentityCloudMixin:
             Example::
 
                 "[?last_name==`Smith`] | [?other.gender]==`Female`]"
+
         :returns: an identity ``User`` object
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         return _utils._get_entity(self, 'user', name_or_id, filters, **kwargs)
 
@@ -397,13 +401,13 @@ class IdentityCloudMixin:
     def _get_user_and_group(self, user_name_or_id, group_name_or_id):
         user = self.get_user(user_name_or_id)
         if not user:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'User {user} not found'.format(user=user_name_or_id)
             )
 
         group = self.get_group(group_name_or_id)
         if not group:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'Group {user} not found'.format(user=group_name_or_id)
             )
 
@@ -414,8 +418,9 @@ class IdentityCloudMixin:
 
         :param name_or_id: Name or unique ID of the user.
         :param group_name_or_id: Group name or ID
-        :raises: ``OpenStackCloudException`` if something goes wrong during
-            the OpenStack API call
+
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call
         """
         user, group = self._get_user_and_group(name_or_id, group_name_or_id)
 
@@ -426,9 +431,10 @@ class IdentityCloudMixin:
 
         :param name_or_id: Name or unique ID of the user.
         :param group_name_or_id: Group name or ID
+
         :returns: True if user is in the group, False otherwise
-        :raises: ``OpenStackCloudException`` if something goes wrong during
-            the OpenStack API call
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call
         """
         user, group = self._get_user_and_group(name_or_id, group_name_or_id)
 
@@ -439,8 +445,9 @@ class IdentityCloudMixin:
 
         :param name_or_id: Name or unique ID of the user.
         :param group_name_or_id: Group name or ID
-        :raises: ``OpenStackCloudException`` if something goes wrong during
-            the OpenStack API call
+
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call
         """
         user, group = self._get_user_and_group(name_or_id, group_name_or_id)
 
@@ -455,9 +462,10 @@ class IdentityCloudMixin:
         :param service_type: Service type. (type or service_type required.)
         :param description: Service description (optional).
         :param enabled: Whether the service is enabled (v3 only)
+
         :returns: an identity ``Service`` object
-        :raises: ``OpenStackCloudException`` if something goes wrong during the
-            OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         type_ = kwargs.pop('type', None)
         service_type = kwargs.pop('service_type', None)
@@ -489,8 +497,8 @@ class IdentityCloudMixin:
         """List all Keystone services.
 
         :returns: A list of identity ``Service`` object
-        :raises: ``OpenStackCloudException`` if something goes wrong during the
-            OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         return list(self.identity.services())
 
@@ -515,9 +523,10 @@ class IdentityCloudMixin:
             Example::
 
                 "[?last_name==`Smith`] | [?other.gender]==`Female`]"
+
         :returns: a list of identity ``Service`` objects
-        :raises: ``OpenStackCloudException`` if something goes wrong during the
-            OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         services = self.list_services()
         return _utils._filter_list(services, name_or_id, filters)
@@ -527,9 +536,11 @@ class IdentityCloudMixin:
         """Get exactly one Keystone service.
 
         :param name_or_id: Name or unique ID of the service.
+
         :returns: an identity ``Service`` object
-        :raises: ``OpenStackCloudException`` if something goes wrong during the
-            OpenStack API call or if multiple matches are found.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call or if multiple matches are
+            found.
         """
         return _utils._get_entity(self, 'service', name_or_id, filters)
 
@@ -537,9 +548,10 @@ class IdentityCloudMixin:
         """Delete a Keystone service.
 
         :param name_or_id: Name or unique ID of the service.
+
         :returns: True if delete succeeded, False otherwise.
-        :raises: ``OpenStackCloudException`` if something goes wrong during
-            the OpenStack API call
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call
         """
         service = self.get_service(name_or_id=name_or_id)
         if service is None:
@@ -575,23 +587,25 @@ class IdentityCloudMixin:
         :param admin_url: Endpoint admin URL.
         :param region: Endpoint region.
         :param enabled: Whether the endpoint is enabled
+
         :returns: A list of identity ``Endpoint`` objects
-        :raises: OpenStackCloudException if the service cannot be found or if
-            something goes wrong during the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if the service
+            cannot be found or if something goes wrong during the OpenStack API
+            call.
         """
         public_url = kwargs.pop('public_url', None)
         internal_url = kwargs.pop('internal_url', None)
         admin_url = kwargs.pop('admin_url', None)
 
         if (url or interface) and (public_url or internal_url or admin_url):
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "create_endpoint takes either url and interface OR "
                 "public_url, internal_url, admin_url"
             )
 
         service = self.get_service(name_or_id=service_name_or_id)
         if service is None:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "service {service} not found".format(
                     service=service_name_or_id
                 )
@@ -652,8 +666,8 @@ class IdentityCloudMixin:
         """List Keystone endpoints.
 
         :returns: A list of identity ``Endpoint`` objects
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         return list(self.identity.endpoints())
 
@@ -678,9 +692,10 @@ class IdentityCloudMixin:
             Example::
 
                 "[?last_name==`Smith`] | [?other.gender]==`Female`]"
+
         :returns: A list of identity ``Endpoint`` objects
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         # NOTE(SamYaple): With keystone v3 we can filter directly via the
         # the keystone api, but since the return of all the endpoints even in
@@ -702,9 +717,10 @@ class IdentityCloudMixin:
         """Delete a Keystone endpoint.
 
         :param id: ID of the endpoint to delete.
+
         :returns: True if delete succeeded, False otherwise.
-        :raises: ``OpenStackCloudException`` if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         endpoint = self.get_endpoint(id=id)
         if endpoint is None:
@@ -725,7 +741,8 @@ class IdentityCloudMixin:
         :param description: A description of the domain.
         :param enabled: Is the domain enabled or not (default True).
         :returns: The created identity ``Endpoint`` object.
-        :raise OpenStackCloudException: if the domain cannot be created.
+        :raises: :class:`~openstack.exceptions.SDKException` if the domain
+            cannot be created.
         """
         domain_ref = {'name': name, 'enabled': enabled}
         if description is not None:
@@ -750,16 +767,17 @@ class IdentityCloudMixin:
         :param enabled:
         :param name_or_id: Name or unique ID of the domain.
         :returns: The updated identity ``Domain`` object.
-        :raise OpenStackCloudException: if the domain cannot be updated
+        :raises: :class:`~openstack.exceptions.SDKException` if the domain
+            cannot be updated
         """
         if domain_id is None:
             if name_or_id is None:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "You must pass either domain_id or name_or_id value"
                 )
             dom = self.get_domain(None, name_or_id)
             if dom is None:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Domain {0} not found for updating".format(name_or_id)
                 )
             domain_id = dom['id']
@@ -777,14 +795,15 @@ class IdentityCloudMixin:
 
         :param domain_id: ID of the domain to delete.
         :param name_or_id: Name or unique ID of the domain.
+
         :returns: True if delete succeeded, False otherwise.
-        :raises: ``OpenStackCloudException`` if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         try:
             if domain_id is None:
                 if name_or_id is None:
-                    raise exc.OpenStackCloudException(
+                    raise exceptions.SDKException(
                         "You must pass either domain_id or name_or_id value"
                     )
                 dom = self.get_domain(name_or_id=name_or_id)
@@ -808,8 +827,8 @@ class IdentityCloudMixin:
         """List Keystone domains.
 
         :returns: A list of identity ``Domain`` objects.
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         return list(self.identity.domains(**filters))
 
@@ -835,9 +854,10 @@ class IdentityCloudMixin:
             Example::
 
                 "[?last_name==`Smith`] | [?other.gender]==`Female`]"
+
         :returns: a list of identity ``Domain`` objects
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         if filters is None:
             filters = {}
@@ -872,9 +892,10 @@ class IdentityCloudMixin:
             Example::
 
                 "[?last_name==`Smith`] | [?other.gender]==`Female`]"
+
         :returns: an identity ``Domain`` object
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         if domain_id is None:
             return self.identity.find_domain(name_or_id)
@@ -886,9 +907,10 @@ class IdentityCloudMixin:
         """List Keystone groups.
 
         :param domain_id: Domain ID.
+
         :returns: A list of identity ``Group`` objects
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         return list(self.identity.groups(**kwargs))
 
@@ -915,9 +937,10 @@ class IdentityCloudMixin:
 
                 "[?last_name==`Smith`] | [?other.gender]==`Female`]"
         :param domain_id: domain id.
+
         :returns: A list of identity ``Group`` objects
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         groups = self.list_groups(**kwargs)
         return _utils._filter_list(groups, name_or_id, filters)
@@ -929,9 +952,10 @@ class IdentityCloudMixin:
         """Get exactly one Keystone group.
 
         :param name_or_id: Name or unique ID of the group(s).
+
         :returns: An identity ``Group`` object
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         return _utils._get_entity(self, 'group', name_or_id, filters, **kwargs)
 
@@ -941,9 +965,10 @@ class IdentityCloudMixin:
         :param string name: Group name.
         :param string description: Group description.
         :param string domain: Domain name or ID for the group.
+
         :returns: An identity ``Group`` object
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         group_ref = {'name': name}
         if description:
@@ -951,7 +976,7 @@ class IdentityCloudMixin:
         if domain:
             dom = self.get_domain(domain)
             if not dom:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Creating group {group} failed: Invalid domain "
                     "{domain}".format(group=name, domain=domain)
                 )
@@ -973,13 +998,14 @@ class IdentityCloudMixin:
         :param name_or_id: Name or unique ID of the group.
         :param name: New group name.
         :param description: New group description.
+
         :returns: The updated identity ``Group`` object.
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         group = self.identity.find_group(name_or_id, **kwargs)
         if group is None:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Group {0} not found for updating".format(name_or_id)
             )
 
@@ -997,9 +1023,10 @@ class IdentityCloudMixin:
         """Delete a group
 
         :param name_or_id: Name or unique ID of the group.
+
         :returns: True if delete succeeded, False otherwise.
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         try:
             group = self.identity.find_group(name_or_id)
@@ -1021,8 +1048,8 @@ class IdentityCloudMixin:
         """List Keystone roles.
 
         :returns: A list of identity ``Role`` objects
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         return list(self.identity.roles(**kwargs))
 
@@ -1047,9 +1074,10 @@ class IdentityCloudMixin:
             Example::
 
                 "[?last_name==`Smith`] | [?other.gender]==`Female`]"
+
         :returns: a list of identity ``Role`` objects
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         roles = self.list_roles()
         return _utils._filter_list(roles, name_or_id, filters)
@@ -1061,9 +1089,10 @@ class IdentityCloudMixin:
         """Get a Keystone role.
 
         :param name_or_id: Name or unique ID of the role.
+
         :returns: An identity ``Role`` object if found, else None.
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         return _utils._get_entity(self, 'role', name_or_id, filters, **kwargs)
 
@@ -1120,8 +1149,8 @@ class IdentityCloudMixin:
         :returns: A list of indentity
             :class:`openstack.identity.v3.role_assignment.RoleAssignment`
             objects
-        :raises: ``OpenStackCloudException``: if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         # NOTE(samueldmq): although 'include_names' is a valid query parameter
         # in the keystone v3 list role assignments API, it would have NO effect
@@ -1162,7 +1191,8 @@ class IdentityCloudMixin:
         :param string name: The name of the role.
         :param domain_id: domain id (v3)
         :returns: an identity ``Role`` object
-        :raise OpenStackCloudException: if the role cannot be created
+        :raises: :class:`~openstack.exceptions.SDKException` if the role cannot
+            be created
         """
         kwargs['name'] = name
         return self.identity.create_role(**kwargs)
@@ -1175,7 +1205,8 @@ class IdentityCloudMixin:
         :param string name: The new role name
         :param domain_id: domain id
         :returns: an identity ``Role`` object
-        :raise OpenStackCloudException: if the role cannot be created
+        :raises: :class:`~openstack.exceptions.SDKException` if the role cannot
+            be created
         """
         role = self.get_role(name_or_id, **kwargs)
         if role is None:
@@ -1190,9 +1221,10 @@ class IdentityCloudMixin:
 
         :param name_or_id: Name or unique ID of the role.
         :param domain_id: domain id (v3)
+
         :returns: True if delete succeeded, False otherwise.
-        :raises: ``OpenStackCloudException`` if something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         role = self.get_role(name_or_id, **kwargs)
         if role is None:
@@ -1229,13 +1261,11 @@ class IdentityCloudMixin:
 
         data['role'] = self.identity.find_role(name_or_id=role)
         if not data['role']:
-            raise exc.OpenStackCloudException(
-                'Role {0} not found.'.format(role)
-            )
+            raise exceptions.SDKException('Role {0} not found.'.format(role))
 
         if user:
             # use cloud.get_user to save us from bad searching by name
-            #data['user'] = self.get_user(user, filters=search_args)
+
             data['user'] = self.identity.find_user(
                 user, ignore_missing=False, **search_args
             )
@@ -1245,15 +1275,15 @@ class IdentityCloudMixin:
             )
 
         if data.get('user') and data.get('group'):
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'Specify either a group or a user, not both'
             )
         if data.get('user') is None and data.get('group') is None:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'Must specify either a user or a group'
             )
         if project is None and domain is None and system is None:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'Must specify either a domain, project or system'
             )
 
@@ -1296,8 +1326,8 @@ class IdentityCloudMixin:
         NOTE: precedence is given first to project, then domain, then system
 
         :returns: True if the role is assigned, otherwise False
-
-        :raise OpenStackCloudException: if the role cannot be granted
+        :raises: :class:`~openstack.exceptions.SDKException` if the role cannot
+            be granted
         """
         data = self._get_grant_revoke_params(
             name_or_id,
@@ -1404,8 +1434,8 @@ class IdentityCloudMixin:
         NOTE: precedence is given first to project, then domain, then system
 
         :returns: True if the role is revoke, otherwise False
-
-        :raise OpenStackCloudException: if the role cannot be removed
+        :raises: :class:`~openstack.exceptions.SDKException` if the role cannot
+            be removed
         """
         data = self._get_grant_revoke_params(
             name_or_id,
diff --git a/openstack/cloud/_image.py b/openstack/cloud/_image.py
index 97807faa84a3abf4a0f486b0975143dc45dd42f0..73f342b37ad2befb187b33c6eee6ad371bd98ac5 100644
--- a/openstack/cloud/_image.py
+++ b/openstack/cloud/_image.py
@@ -11,7 +11,7 @@
 # limitations under the License.
 
 from openstack.cloud import _utils
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.image.v2._proxy import Proxy
 from openstack import utils
 
@@ -104,30 +104,32 @@ class ImageCloudMixin:
             this or output_path must be specified
         :param int chunk_size: size in bytes to read from the wire and buffer
             at one time. Defaults to 1024 * 1024 = 1 MiB
+
         :returns: When output_path and output_file are not given - the bytes
             comprising the given Image when stream is False, otherwise a
             :class:`requests.Response` instance. When output_path or
             output_file are given - an image
             :class:`~openstack.image.v2.image.Image` instance.
-        :raises: OpenStackCloudException in the event download_image is called
-            without exactly one of either output_path or output_file
-        :raises: OpenStackCloudResourceNotFound if no images are found matching
-            the name or ID provided
+        :raises: :class:`~openstack.exceptions.SDKException` in the event
+            download_image is called without exactly one of either output_path
+            or output_file
+        :raises: :class:`~openstack.exceptions.BadRequestException` if no
+            images are found matching the name or ID provided
         """
         if output_path is None and output_file is None:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'No output specified, an output path or file object'
                 ' is necessary to write the image data to'
             )
         elif output_path is not None and output_file is not None:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'Both an output path and file object were provided,'
                 ' however only one can be used at once'
             )
 
         image = self.image.find_image(name_or_id)
         if not image:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "No images with name or ID %s were found" % name_or_id, None
             )
 
@@ -167,7 +169,7 @@ class ImageCloudMixin:
             if image['status'] == 'active':
                 return image
             elif image['status'] == 'error':
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     'Image {image} hit error state'.format(image=image_id)
                 )
 
@@ -186,8 +188,8 @@ class ImageCloudMixin:
         :param delete_objects: If True, also deletes uploaded swift objects.
 
         :returns: True if delete succeeded, False otherwise.
-
-        :raises: OpenStackCloudException if there are problems deleting.
+        :raises: :class:`~openstack.exceptions.SDKException` if there are
+            problems deleting.
         """
         image = self.get_image(name_or_id)
         if not image:
@@ -279,7 +281,8 @@ class ImageCloudMixin:
         If a value is in meta and kwargs, meta wins.
 
         :returns: An image :class:`openstack.image.v2.image.Image` object.
-        :raises: OpenStackCloudException if there are problems uploading
+        :raises: :class:`~openstack.exceptions.SDKException` if there are
+            problems uploading
         """
         if volume:
             image = self.block_storage.create_image(
@@ -319,7 +322,7 @@ class ImageCloudMixin:
                 image_obj = self.get_image(image.id)
                 if image_obj and image_obj.status not in ('queued', 'saving'):
                     return image_obj
-        except exc.OpenStackCloudTimeout:
+        except exceptions.ResourceTimeout:
             self.log.debug(
                 "Timeout waiting for image to become ready. Deleting."
             )
diff --git a/openstack/cloud/_network.py b/openstack/cloud/_network.py
index 654dd2dfa4b7af9f52126a8d5077be73d6afa04d..f6718748d06f9f16db9842633325a1273de7b990 100644
--- a/openstack/cloud/_network.py
+++ b/openstack/cloud/_network.py
@@ -35,10 +35,11 @@ class NetworkCloudMixin:
         :param name_or_id: Name or ID of the desired network.
         :param filters: A dict containing additional filters to use. e.g.
             {'router:external': True}
+
         :returns: A list of network ``Network`` objects matching the search
             criteria.
-        :raises: ``OpenStackCloudException`` if something goes wrong during the
-            OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         query = {}
         if name_or_id:
@@ -54,10 +55,11 @@ class NetworkCloudMixin:
         :param name_or_id: Name or ID of the desired router.
         :param filters: A dict containing additional filters to use. e.g.
             {'admin_state_up': True}
+
         :returns: A list of network ``Router`` objects matching the search
             criteria.
-        :raises: ``OpenStackCloudException`` if something goes wrong during the
-            OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         query = {}
         if name_or_id:
@@ -73,10 +75,11 @@ class NetworkCloudMixin:
         :param name_or_id: Name or ID of the desired subnet.
         :param filters: A dict containing additional filters to use. e.g.
             {'enable_dhcp': True}
+
         :returns: A list of network ``Subnet`` objects matching the search
             criteria.
-        :raises: ``OpenStackCloudException`` if something goes wrong during the
-            OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         query = {}
         if name_or_id:
@@ -92,10 +95,11 @@ class NetworkCloudMixin:
         :param name_or_id: Name or ID of the desired port.
         :param filters: A dict containing additional filters to use. e.g.
             {'device_id': '2711c67a-b4a7-43dd-ace7-6187b791c3f0'}
+
         :returns: A list of network ``Port`` objects matching the search
             criteria.
-        :raises: ``OpenStackCloudException`` if something goes wrong during the
-            OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         # If the filter is a string, do not push the filter down to neutron;
         # get all the ports and filter locally.
@@ -208,10 +212,11 @@ class NetworkCloudMixin:
         :param name_or_id: Name or ID of the desired policy.
         :param filters: a dict containing additional filters to use. e.g.
             {'shared': True}
+
         :returns: A list of network ``QosPolicy`` objects matching the search
             criteria.
-        :raises: ``OpenStackCloudException`` if something goes wrong during the
-            OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -467,7 +472,8 @@ class NetworkCloudMixin:
         :param string dns_domain: Specify the DNS domain associated with
             this network.
         :returns: The created network ``Network`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         network = {
             'name': name,
@@ -482,7 +488,7 @@ class NetworkCloudMixin:
 
         if availability_zone_hints is not None:
             if not isinstance(availability_zone_hints, list):
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Parameter 'availability_zone_hints' must be a list"
                 )
             if not self._has_neutron_extension('network_availability_zone'):
@@ -494,7 +500,7 @@ class NetworkCloudMixin:
 
         if provider:
             if not isinstance(provider, dict):
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Parameter 'provider' must be a dict"
                 )
             # Only pass what we know
@@ -515,18 +521,18 @@ class NetworkCloudMixin:
 
         if port_security_enabled is not None:
             if not isinstance(port_security_enabled, bool):
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Parameter 'port_security_enabled' must be a bool"
                 )
             network['port_security_enabled'] = port_security_enabled
 
         if mtu_size:
             if not isinstance(mtu_size, int):
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Parameter 'mtu_size' must be an integer."
                 )
             if not mtu_size >= 68:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Parameter 'mtu_size' must be greater than 67."
                 )
 
@@ -568,13 +574,15 @@ class NetworkCloudMixin:
         :param bool port_security_enabled: Enable or disable port security.
         :param string dns_domain: Specify the DNS domain associated with
             this network.
+
         :returns: The updated network ``Network`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         provider = kwargs.pop('provider', None)
         if provider:
             if not isinstance(provider, dict):
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Parameter 'provider' must be a dict"
                 )
             for key in ('physical_network', 'network_type', 'segmentation_id'):
@@ -586,26 +594,24 @@ class NetworkCloudMixin:
 
         if 'port_security_enabled' in kwargs:
             if not isinstance(kwargs['port_security_enabled'], bool):
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Parameter 'port_security_enabled' must be a bool"
                 )
 
         if 'mtu_size' in kwargs:
             if not isinstance(kwargs['mtu_size'], int):
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Parameter 'mtu_size' must be an integer."
                 )
             if kwargs['mtu_size'] < 68:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Parameter 'mtu_size' must be greater than 67."
                 )
             kwargs['mtu'] = kwargs.pop('mtu_size')
 
         network = self.get_network(name_or_id)
         if not network:
-            raise exc.OpenStackCloudException(
-                "Network %s not found." % name_or_id
-            )
+            raise exceptions.SDKException("Network %s not found." % name_or_id)
 
         network = self.network.update_network(network, **kwargs)
 
@@ -619,8 +625,8 @@ class NetworkCloudMixin:
         :param name_or_id: Name or ID of the network being deleted.
 
         :returns: True if delete succeeded, False otherwise.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         network = self.get_network(name_or_id)
         if not network:
@@ -640,13 +646,13 @@ class NetworkCloudMixin:
         :param name_or_id: project name or id
         :param kwargs: key/value pairs of quota name and quota value
 
-        :raises: OpenStackCloudException if the resource to set the
-            quota does not exist.
+        :raises: :class:`~openstack.exceptions.SDKException` if the resource to
+            set the quota does not exist.
         """
 
         proj = self.get_project(name_or_id)
         if not proj:
-            raise exc.OpenStackCloudException("project does not exist")
+            raise exceptions.SDKException("project does not exist")
 
         self.network.update_quota(proj.id, **kwargs)
 
@@ -656,8 +662,10 @@ class NetworkCloudMixin:
         :param name_or_id: project name or id
         :param details: if set to True it will return details about usage
             of quotas by given project
-        :raises: OpenStackCloudException if it's not a valid project
+
         :returns: A network ``Quota`` object if found, else None.
+        :raises: :class:`~openstack.exceptions.SDKException` if it's not a
+            valid project
         """
         proj = self.identity.find_project(name_or_id, ignore_missing=False)
         return self.network.get_quota(proj.id, details)
@@ -673,14 +681,14 @@ class NetworkCloudMixin:
         """Delete network quotas for a project
 
         :param name_or_id: project name or id
-        :raises: OpenStackCloudException if it's not a valid project or the
-            network client call failed
 
         :returns: dict with the quotas
+        :raises: :class:`~openstack.exceptions.SDKException` if it's not a
+            valid project or the network client call failed
         """
         proj = self.get_project(name_or_id)
         if not proj:
-            raise exc.OpenStackCloudException("project does not exist")
+            raise exceptions.SDKException("project does not exist")
         self.network.delete_quota(proj.id)
 
     @_utils.valid_kwargs(
@@ -1348,8 +1356,10 @@ class NetworkCloudMixin:
         :param bool default: Set the QoS policy as default for project.
         :param string project_id: Specify the project ID this QoS policy
             will be created on (admin-only).
+
         :returns: The created network ``QosPolicy`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -1380,8 +1390,10 @@ class NetworkCloudMixin:
         :param bool shared: If True, the QoS policy will be set as shared.
         :param bool default: If True, the QoS policy will be set as default for
             project.
+
         :returns: The updated network ``QosPolicyRule`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -1404,7 +1416,7 @@ class NetworkCloudMixin:
 
         curr_policy = self.network.find_qos_policy(name_or_id)
         if not curr_policy:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "QoS policy %s not found." % name_or_id
             )
 
@@ -1416,8 +1428,8 @@ class NetworkCloudMixin:
         :param name_or_id: Name or ID of the policy being deleted.
 
         :returns: True if delete succeeded, False otherwise.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -1446,10 +1458,11 @@ class NetworkCloudMixin:
         :param string rule_id: ID of searched rule.
         :param filters: a dict containing additional filters to use. e.g.
             {'max_kbps': 1000}
+
         :returns: A list of network ``QoSBandwidthLimitRule`` objects matching
             the search criteria.
-        :raises: ``OpenStackCloudException`` if something goes wrong during the
-            OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         rules = self.list_qos_bandwidth_limit_rules(policy_name_or_id, filters)
         return _utils._filter_list(rules, rule_id, filters)
@@ -1461,8 +1474,8 @@ class NetworkCloudMixin:
             from rules should be listed.
         :param filters: (optional) A dict of filter conditions to push down
         :returns: A list of network ``QoSBandwidthLimitRule`` objects.
-        :raises: ``OpenStackCloudResourceNotFound`` if QoS policy will not be
-            found.
+        :raises: ``:class:`~openstack.exceptions.BadRequestException``` if QoS
+            policy will not be found.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -1471,7 +1484,7 @@ class NetworkCloudMixin:
 
         policy = self.network.find_qos_policy(policy_name_or_id)
         if not policy:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "QoS policy {name_or_id} not Found.".format(
                     name_or_id=policy_name_or_id
                 )
@@ -1503,7 +1516,7 @@ class NetworkCloudMixin:
 
         policy = self.network.find_qos_policy(policy_name_or_id)
         if not policy:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "QoS policy {name_or_id} not Found.".format(
                     name_or_id=policy_name_or_id
                 )
@@ -1527,8 +1540,10 @@ class NetworkCloudMixin:
         :param int max_burst_kbps: Maximum burst value (in kilobits).
         :param string direction: Ingress or egress.
             The direction in which the traffic will be limited.
+
         :returns: The created network ``QoSBandwidthLimitRule`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -1537,7 +1552,7 @@ class NetworkCloudMixin:
 
         policy = self.network.find_qos_policy(policy_name_or_id)
         if not policy:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "QoS policy {name_or_id} not Found.".format(
                     name_or_id=policy_name_or_id
                 )
@@ -1569,8 +1584,10 @@ class NetworkCloudMixin:
         :param int max_burst_kbps: Maximum burst value (in kilobits).
         :param string direction: Ingress or egress.
             The direction in which the traffic will be limited.
+
         :returns: The updated network ``QoSBandwidthLimitRule`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -1581,7 +1598,7 @@ class NetworkCloudMixin:
             policy_name_or_id, ignore_missing=True
         )
         if not policy:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "QoS policy {name_or_id} not Found.".format(
                     name_or_id=policy_name_or_id
                 )
@@ -1603,7 +1620,7 @@ class NetworkCloudMixin:
             qos_rule=rule_id, qos_policy=policy
         )
         if not curr_rule:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "QoS bandwidth_limit_rule {rule_id} not found in policy "
                 "{policy_id}".format(rule_id=rule_id, policy_id=policy['id'])
             )
@@ -1619,7 +1636,8 @@ class NetworkCloudMixin:
             rule is associated.
         :param string rule_id: ID of rule to update.
 
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -1628,7 +1646,7 @@ class NetworkCloudMixin:
 
         policy = self.network.find_qos_policy(policy_name_or_id)
         if not policy:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "QoS policy {name_or_id} not Found.".format(
                     name_or_id=policy_name_or_id
                 )
@@ -1663,10 +1681,11 @@ class NetworkCloudMixin:
         :param string rule_id: ID of searched rule.
         :param filters: a dict containing additional filters to use. e.g.
             {'dscp_mark': 32}
+
         :returns: A list of network ``QoSDSCPMarkingRule`` objects matching the
             search criteria.
-        :raises: ``OpenStackCloudException`` if something goes wrong during the
-            OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         rules = self.list_qos_dscp_marking_rules(policy_name_or_id, filters)
         return _utils._filter_list(rules, rule_id, filters)
@@ -1678,8 +1697,8 @@ class NetworkCloudMixin:
             from rules should be listed.
         :param filters: (optional) A dict of filter conditions to push down
         :returns: A list of network ``QoSDSCPMarkingRule`` objects.
-        :raises: ``OpenStackCloudResourceNotFound`` if QoS policy will not be
-            found.
+        :raises: ``:class:`~openstack.exceptions.BadRequestException``` if QoS
+            policy will not be found.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -1690,7 +1709,7 @@ class NetworkCloudMixin:
             policy_name_or_id, ignore_missing=True
         )
         if not policy:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "QoS policy {name_or_id} not Found.".format(
                     name_or_id=policy_name_or_id
                 )
@@ -1717,7 +1736,7 @@ class NetworkCloudMixin:
 
         policy = self.network.find_qos_policy(policy_name_or_id)
         if not policy:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "QoS policy {name_or_id} not Found.".format(
                     name_or_id=policy_name_or_id
                 )
@@ -1735,8 +1754,10 @@ class NetworkCloudMixin:
         :param string policy_name_or_id: Name or ID of the QoS policy to which
             rule should be associated.
         :param int dscp_mark: DSCP mark value
+
         :returns: The created network ``QoSDSCPMarkingRule`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -1745,7 +1766,7 @@ class NetworkCloudMixin:
 
         policy = self.network.find_qos_policy(policy_name_or_id)
         if not policy:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "QoS policy {name_or_id} not Found.".format(
                     name_or_id=policy_name_or_id
                 )
@@ -1765,8 +1786,10 @@ class NetworkCloudMixin:
             rule is associated.
         :param string rule_id: ID of rule to update.
         :param int dscp_mark: DSCP mark value
+
         :returns: The updated network ``QoSDSCPMarkingRule`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -1775,7 +1798,7 @@ class NetworkCloudMixin:
 
         policy = self.network.find_qos_policy(policy_name_or_id)
         if not policy:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "QoS policy {name_or_id} not Found.".format(
                     name_or_id=policy_name_or_id
                 )
@@ -1787,7 +1810,7 @@ class NetworkCloudMixin:
 
         curr_rule = self.network.get_qos_dscp_marking_rule(rule_id, policy)
         if not curr_rule:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "QoS dscp_marking_rule {rule_id} not found in policy "
                 "{policy_id}".format(rule_id=rule_id, policy_id=policy['id'])
             )
@@ -1803,7 +1826,8 @@ class NetworkCloudMixin:
             rule is associated.
         :param string rule_id: ID of rule to update.
 
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -1812,7 +1836,7 @@ class NetworkCloudMixin:
 
         policy = self.network.find_qos_policy(policy_name_or_id)
         if not policy:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "QoS policy {name_or_id} not Found.".format(
                     name_or_id=policy_name_or_id
                 )
@@ -1847,10 +1871,11 @@ class NetworkCloudMixin:
         :param string rule_id: ID of searched rule.
         :param filters: a dict containing additional filters to use. e.g.
             {'min_kbps': 1000}
+
         :returns: A list of network ``QoSMinimumBandwidthRule`` objects
             matching the search criteria.
-        :raises: ``OpenStackCloudException`` if something goes wrong during the
-            OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         rules = self.list_qos_minimum_bandwidth_rules(
             policy_name_or_id, filters
@@ -1866,8 +1891,8 @@ class NetworkCloudMixin:
             from rules should be listed.
         :param filters: (optional) A dict of filter conditions to push down
         :returns: A list of network ``QoSMinimumBandwidthRule`` objects.
-        :raises: ``OpenStackCloudResourceNotFound`` if QoS policy will not be
-            found.
+        :raises: ``:class:`~openstack.exceptions.BadRequestException``` if QoS
+            policy will not be found.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -1876,7 +1901,7 @@ class NetworkCloudMixin:
 
         policy = self.network.find_qos_policy(policy_name_or_id)
         if not policy:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "QoS policy {name_or_id} not Found.".format(
                     name_or_id=policy_name_or_id
                 )
@@ -1906,7 +1931,7 @@ class NetworkCloudMixin:
 
         policy = self.network.find_qos_policy(policy_name_or_id)
         if not policy:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "QoS policy {name_or_id} not Found.".format(
                     name_or_id=policy_name_or_id
                 )
@@ -1928,8 +1953,10 @@ class NetworkCloudMixin:
         :param int min_kbps: Minimum bandwidth value (in kilobits per second).
         :param string direction: Ingress or egress.
             The direction in which the traffic will be available.
+
         :returns: The created network ``QoSMinimumBandwidthRule`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -1938,7 +1965,7 @@ class NetworkCloudMixin:
 
         policy = self.network.find_qos_policy(policy_name_or_id)
         if not policy:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "QoS policy {name_or_id} not Found.".format(
                     name_or_id=policy_name_or_id
                 )
@@ -1960,8 +1987,10 @@ class NetworkCloudMixin:
         :param int min_kbps: Minimum bandwidth value (in kilobits per second).
         :param string direction: Ingress or egress.
             The direction in which the traffic will be available.
+
         :returns: The updated network ``QoSMinimumBandwidthRule`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -1970,7 +1999,7 @@ class NetworkCloudMixin:
 
         policy = self.network.find_qos_policy(policy_name_or_id)
         if not policy:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "QoS policy {name_or_id} not Found.".format(
                     name_or_id=policy_name_or_id
                 )
@@ -1984,7 +2013,7 @@ class NetworkCloudMixin:
             rule_id, policy
         )
         if not curr_rule:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "QoS minimum_bandwidth_rule {rule_id} not found in policy "
                 "{policy_id}".format(rule_id=rule_id, policy_id=policy['id'])
             )
@@ -2000,7 +2029,8 @@ class NetworkCloudMixin:
             rule is associated.
         :param string rule_id: ID of rule to delete.
 
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if not self._has_neutron_extension('qos'):
             raise exc.OpenStackCloudUnavailableExtension(
@@ -2009,7 +2039,7 @@ class NetworkCloudMixin:
 
         policy = self.network.find_qos_policy(policy_name_or_id)
         if not policy:
-            raise exc.OpenStackCloudResourceNotFound(
+            raise exceptions.NotFoundException(
                 "QoS policy {name_or_id} not Found.".format(
                     name_or_id=policy_name_or_id
                 )
@@ -2039,8 +2069,10 @@ class NetworkCloudMixin:
         :param dict router: The dict object of the router being changed
         :param string subnet_id: The ID of the subnet to use for the interface
         :param string port_id: The ID of the port to use for the interface
+
         :returns: The raw response body from the request.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         return self.network.add_interface_to_router(
             router=router, subnet_id=subnet_id, port_id=port_id
@@ -2060,8 +2092,8 @@ class NetworkCloudMixin:
         :param string port_id: The ID of the port to use for the interface
 
         :returns: None on success
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         if not subnet_id and not port_id:
             raise ValueError(
@@ -2141,10 +2173,12 @@ class NetworkCloudMixin:
               ]
 
         :param string project_id: Project ID for the router.
-        :param types.ListType availability_zone_hints:
-            A list of availability zone hints.
+        :param types.ListType availability_zone_hints: A list of availability
+            zone hints.
+
         :returns: The created network ``Router`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         router = {'admin_state_up': admin_state_up}
         if project_id is not None:
@@ -2158,7 +2192,7 @@ class NetworkCloudMixin:
             router['external_gateway_info'] = ext_gw_info
         if availability_zone_hints is not None:
             if not isinstance(availability_zone_hints, list):
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Parameter 'availability_zone_hints' must be a list"
                 )
             if not self._has_neutron_extension('router_availability_zone'):
@@ -2213,7 +2247,8 @@ class NetworkCloudMixin:
               ]
 
         :returns: The updated network ``Router`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         router = {}
         if name:
@@ -2240,9 +2275,7 @@ class NetworkCloudMixin:
 
         curr_router = self.get_router(name_or_id)
         if not curr_router:
-            raise exc.OpenStackCloudException(
-                "Router %s not found." % name_or_id
-            )
+            raise exceptions.SDKException("Router %s not found." % name_or_id)
 
         return self.network.update_router(curr_router, **router)
 
@@ -2256,8 +2289,8 @@ class NetworkCloudMixin:
         :param name_or_id: Name or ID of the router being deleted.
 
         :returns: True if delete succeeded, False otherwise.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         router = self.network.find_router(name_or_id, ignore_missing=True)
         if not router:
@@ -2352,8 +2385,10 @@ class NetworkCloudMixin:
             ``use_default_subnetpool`` and ``subnetpool_name_or_id`` may be
             specified at the same time.
         :param kwargs: Key value pairs to be passed to the Neutron API.
+
         :returns: The created network ``Subnet`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
 
         if tenant_id is not None:
@@ -2363,28 +2398,28 @@ class NetworkCloudMixin:
 
         network = self.get_network(network_name_or_id, filters)
         if not network:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Network %s not found." % network_name_or_id
             )
 
         if disable_gateway_ip and gateway_ip:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'arg:disable_gateway_ip is not allowed with arg:gateway_ip'
             )
 
         uses_subnetpool = use_default_subnetpool or subnetpool_name_or_id
         if not cidr and not uses_subnetpool:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'arg:cidr is required when a subnetpool is not used'
             )
 
         if cidr and uses_subnetpool:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'arg:cidr and subnetpool may not be used at the same time'
             )
 
         if use_default_subnetpool and subnetpool_name_or_id:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'arg:use_default_subnetpool and arg:subnetpool_id may not be '
                 'used at the same time'
             )
@@ -2393,7 +2428,7 @@ class NetworkCloudMixin:
         if subnetpool_name_or_id:
             subnetpool = self.get_subnetpool(subnetpool_name_or_id)
             if not subnetpool:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Subnetpool %s not found." % subnetpool_name_or_id
                 )
 
@@ -2402,9 +2437,7 @@ class NetworkCloudMixin:
             try:
                 ip_version = int(ip_version)
             except ValueError:
-                raise exc.OpenStackCloudException(
-                    'ip_version must be an integer'
-                )
+                raise exceptions.SDKException('ip_version must be an integer')
 
         # The body of the neutron message for the subnet we wish to create.
         # This includes attributes that are required or have defaults.
@@ -2457,8 +2490,8 @@ class NetworkCloudMixin:
         :param name_or_id: Name or ID of the subnet being deleted.
 
         :returns: True if delete succeeded, False otherwise.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         subnet = self.network.find_subnet(name_or_id, ignore_missing=True)
         if not subnet:
@@ -2522,7 +2555,8 @@ class NetworkCloudMixin:
               ]
 
         :returns: The updated network ``Subnet`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         subnet = {}
         if subnet_name:
@@ -2545,15 +2579,13 @@ class NetworkCloudMixin:
             return
 
         if disable_gateway_ip and gateway_ip:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'arg:disable_gateway_ip is not allowed with arg:gateway_ip'
             )
 
         curr_subnet = self.get_subnet(name_or_id)
         if not curr_subnet:
-            raise exc.OpenStackCloudException(
-                "Subnet %s not found." % name_or_id
-            )
+            raise exceptions.SDKException("Subnet %s not found." % name_or_id)
 
         return self.network.update_subnet(curr_subnet, **subnet)
 
@@ -2647,8 +2679,10 @@ class NetworkCloudMixin:
             be propagated. (Optional)
         :param mac_learning_enabled: If mac learning should be enabled on the
             port. (Optional)
+
         :returns: The created network ``Port`` object.
-        :raises: ``OpenStackCloudException`` on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         kwargs['network_id'] = network_id
 
@@ -2721,12 +2755,14 @@ class NetworkCloudMixin:
         :param port_security_enabled: The security port state created on
             the network. (Optional)
         :param qos_policy_id: The ID of the QoS policy to apply for port.
+
         :returns: The updated network ``Port`` object.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         port = self.get_port(name_or_id=name_or_id)
         if port is None:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "failed to find port '{port}'".format(port=name_or_id)
             )
 
@@ -2738,8 +2774,8 @@ class NetworkCloudMixin:
         :param name_or_id: ID or name of the port to delete.
 
         :returns: True if delete succeeded, False otherwise.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         port = self.network.find_port(name_or_id)
 
diff --git a/openstack/cloud/_network_common.py b/openstack/cloud/_network_common.py
index 4a9f31c656e8842eeeb31b64c890669900ea697b..bf405e9d2a1b60762ff7de14beb1c9be7e0eb5f0 100644
--- a/openstack/cloud/_network_common.py
+++ b/openstack/cloud/_network_common.py
@@ -12,7 +12,7 @@
 
 import threading
 
-from openstack.cloud import exc
+from openstack import exceptions
 
 
 class NetworkCommonCloudMixin:
@@ -81,7 +81,7 @@ class NetworkCommonCloudMixin:
             # though, that's fine, clearly the neutron introspection is
             # not going to work.
             all_networks = self.list_networks()
-        except exc.OpenStackCloudException:
+        except exceptions.SDKException:
             self._network_list_stamp = True
             return
 
@@ -145,7 +145,7 @@ class NetworkCommonCloudMixin:
             # External Floating IPv4 networks
             if self._nat_source in (network['name'], network['id']):
                 if nat_source:
-                    raise exc.OpenStackCloudException(
+                    raise exceptions.SDKException(
                         'Multiple networks were found matching'
                         ' {nat_net} which is the network configured'
                         ' to be the NAT source. Please check your'
@@ -163,7 +163,7 @@ class NetworkCommonCloudMixin:
             # NAT Destination
             if self._nat_destination in (network['name'], network['id']):
                 if nat_destination:
-                    raise exc.OpenStackCloudException(
+                    raise exceptions.SDKException(
                         'Multiple networks were found matching'
                         ' {nat_net} which is the network configured'
                         ' to be the NAT destination. Please check your'
@@ -180,7 +180,7 @@ class NetworkCommonCloudMixin:
                 if all_subnets is None:
                     try:
                         all_subnets = self.list_subnets()
-                    except exc.OpenStackCloudException:
+                    except exceptions.SDKException:
                         # Thanks Rackspace broken neutron
                         all_subnets = []
 
@@ -198,7 +198,7 @@ class NetworkCommonCloudMixin:
             # Default network
             if self._default_network in (network['name'], network['id']):
                 if default_network:
-                    raise exc.OpenStackCloudException(
+                    raise exceptions.SDKException(
                         'Multiple networks were found matching'
                         ' {default_net} which is the network'
                         ' configured to be the default interface'
@@ -212,7 +212,7 @@ class NetworkCommonCloudMixin:
         # Validate config vs. reality
         for net_name in self._external_ipv4_names:
             if net_name not in [net['name'] for net in external_ipv4_networks]:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Networks: {network} was provided for external IPv4"
                     " access and those networks could not be found".format(
                         network=net_name
@@ -221,7 +221,7 @@ class NetworkCommonCloudMixin:
 
         for net_name in self._internal_ipv4_names:
             if net_name not in [net['name'] for net in internal_ipv4_networks]:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Networks: {network} was provided for internal IPv4"
                     " access and those networks could not be found".format(
                         network=net_name
@@ -230,7 +230,7 @@ class NetworkCommonCloudMixin:
 
         for net_name in self._external_ipv6_names:
             if net_name not in [net['name'] for net in external_ipv6_networks]:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Networks: {network} was provided for external IPv6"
                     " access and those networks could not be found".format(
                         network=net_name
@@ -239,7 +239,7 @@ class NetworkCommonCloudMixin:
 
         for net_name in self._internal_ipv6_names:
             if net_name not in [net['name'] for net in internal_ipv6_networks]:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Networks: {network} was provided for internal IPv6"
                     " access and those networks could not be found".format(
                         network=net_name
@@ -247,21 +247,21 @@ class NetworkCommonCloudMixin:
                 )
 
         if self._nat_destination and not nat_destination:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'Network {network} was configured to be the'
                 ' destination for inbound NAT but it could not be'
                 ' found'.format(network=self._nat_destination)
             )
 
         if self._nat_source and not nat_source:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'Network {network} was configured to be the'
                 ' source for inbound NAT but it could not be'
                 ' found'.format(network=self._nat_source)
             )
 
         if self._default_network and not default_network:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'Network {network} was configured to be the'
                 ' default network interface but it could not be'
                 ' found'.format(network=self._default_network)
diff --git a/openstack/cloud/_object_store.py b/openstack/cloud/_object_store.py
index a80df2bbfecdf92145d3179adcb5ee8da77f01ea..c704c0fc1a387e1229be4f4ee8565ceba8c8076f 100644
--- a/openstack/cloud/_object_store.py
+++ b/openstack/cloud/_object_store.py
@@ -16,7 +16,6 @@ import urllib.parse
 import keystoneauth1.exceptions
 
 from openstack.cloud import _utils
-from openstack.cloud import exc
 from openstack import exceptions
 from openstack.object_store.v1._proxy import Proxy
 
@@ -42,7 +41,8 @@ class ObjectStoreCloudMixin:
         :param prefix: Only objects with this prefix will be returned.
             (optional)
         :returns: A list of object store ``Container`` objects.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         return list(self.object_store.containers(prefix=prefix))
 
@@ -57,8 +57,8 @@ class ObjectStoreCloudMixin:
 
         :returns: A list of object store ``Container`` objects matching the
             search criteria.
-        :raises: ``OpenStackCloudException``: If something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException`: If something goes
+            wrong during the OpenStack API call.
         """
         containers = self.list_containers()
         return _utils._filter_list(containers, name, filters)
@@ -112,7 +112,7 @@ class ObjectStoreCloudMixin:
         except exceptions.NotFoundException:
             return False
         except exceptions.ConflictException:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 'Attempt to delete container {container} failed. The'
                 ' container is not empty. Please delete the objects'
                 ' inside it before deleting the container'.format(
@@ -140,7 +140,7 @@ class ObjectStoreCloudMixin:
         :param refresh: Flag to trigger refresh of the container properties
         """
         if access not in OBJECT_CONTAINER_ACLS:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Invalid container access specified: %s.  Must be one of %s"
                 % (access, list(OBJECT_CONTAINER_ACLS.keys()))
             )
@@ -153,13 +153,12 @@ class ObjectStoreCloudMixin:
 
         :param str name: Name of the container.
         :returns: The contol list for the container.
-        :raises: :class:`~openstack.exceptions.OpenStackCloudException` if the
-            container was not found or container access could not be
-            determined.
+        :raises: :class:`~openstack.exceptions.SDKException` if the container
+            was not found or container access could not be determined.
         """
         container = self.get_container(name, skip_cache=True)
         if not container:
-            raise exc.OpenStackCloudException("Container not found: %s" % name)
+            raise exceptions.SDKException("Container not found: %s" % name)
         acl = container.read_ACL or ''
         for key, value in OBJECT_CONTAINER_ACLS.items():
             # Convert to string for the comparison because swiftclient
@@ -167,7 +166,7 @@ class ObjectStoreCloudMixin:
             # on bytes doesn't work like you'd think
             if str(acl) == str(value):
                 return key
-        raise exc.OpenStackCloudException(
+        raise exceptions.SDKException(
             "Could not determine container access for ACL: %s." % acl
         )
 
@@ -281,8 +280,10 @@ class ObjectStoreCloudMixin:
             uploads of identical data. (optional, defaults to True)
         :param metadata: This dict will get changed into headers that set
             metadata of the object
+
         :returns: The created object store ``Object`` object.
-        :raises: ``OpenStackCloudException`` on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         return self.object_store.create_object(
             container,
@@ -306,8 +307,10 @@ class ObjectStoreCloudMixin:
             metadata of the object
         :param headers: These will be passed through to the object update
             API as HTTP Headers.
+
         :returns: None
-        :raises: ``OpenStackCloudException`` on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         meta = metadata.copy() or {}
         meta.update(**headers)
@@ -320,8 +323,10 @@ class ObjectStoreCloudMixin:
         :param full_listing: Ignored. Present for backwards compat
         :param prefix: Only objects with this prefix will be returned.
             (optional)
+
         :returns: A list of object store ``Object`` objects.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         return list(
             self.object_store.objects(container=container, prefix=prefix)
@@ -338,8 +343,8 @@ class ObjectStoreCloudMixin:
 
         :returns: A list of object store ``Object`` objects matching the
             search criteria.
-        :raises: ``OpenStackCloudException``: If something goes wrong during
-            the OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException`: If something goes
+            wrong during the OpenStack API call.
         """
         objects = self.list_objects(container)
         return _utils._filter_list(objects, name, filters)
@@ -351,8 +356,10 @@ class ObjectStoreCloudMixin:
         :param string name: Name of the object to delete.
         :param dict meta: Metadata for the object in question. (optional, will
             be fetched if not provided)
+
         :returns: True if delete succeeded, False if the object was not found.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         try:
             self.object_store.delete_object(
@@ -404,8 +411,10 @@ class ObjectStoreCloudMixin:
         :param string query_string: Query args for uri. (delimiter, prefix,
             etc.)
         :param bool stream: Whether to stream the response or not.
+
         :returns: A `requests.Response`
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         endpoint = self._get_object_endpoint(container, obj, query_string)
         return self.object_store.get(endpoint, stream=stream)
@@ -437,9 +446,11 @@ class ObjectStoreCloudMixin:
             etc.)
         :param int resp_chunk_size: Chunk size of data to read. Only used if
             the results are
+
         :returns: An iterator over the content or None if the object is not
             found.
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         try:
             for ret in self.object_store.stream_object(
@@ -471,9 +482,11 @@ class ObjectStoreCloudMixin:
             contents. If this option is given, body in the return tuple will be
             None. outfile can either be a file path given as a string, or a
             File like object.
+
         :returns: Tuple (headers, body) of the object, or None if the object
             is not found (404).
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         try:
             obj = self.object_store.get_object(
diff --git a/openstack/cloud/_orchestration.py b/openstack/cloud/_orchestration.py
index fa79872b242cb1b549cdd66c13d91f1982f1c2d0..0d9e7d7f46baec6adbfacbcb6ba138762b8c3391 100644
--- a/openstack/cloud/_orchestration.py
+++ b/openstack/cloud/_orchestration.py
@@ -11,7 +11,7 @@
 # limitations under the License.
 
 from openstack.cloud import _utils
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.orchestration.util import event_utils
 from openstack.orchestration.v1._proxy import Proxy
 
@@ -67,9 +67,8 @@ class OrchestrationCloudMixin:
         specified.
 
         :returns: a dict containing the stack description
-
-        :raises: ``OpenStackCloudException`` if something goes wrong during
-            the OpenStack API call
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call
         """
         params = dict(
             tags=tags,
@@ -124,9 +123,8 @@ class OrchestrationCloudMixin:
         specified.
 
         :returns: a dict containing the stack description
-
-        :raises: ``OpenStackCloudException`` if something goes wrong during
-            the OpenStack API calls
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API calls
         """
         params = dict(
             tags=tags,
@@ -166,9 +164,8 @@ class OrchestrationCloudMixin:
         :param boolean wait: Whether to wait for the delete to finish
 
         :returns: True if delete succeeded, False if the stack was not found.
-
-        :raises: ``OpenStackCloudException`` if something goes wrong during
-            the OpenStack API call
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call
         """
         stack = self.get_stack(name_or_id, resolve_outputs=False)
         if stack is None:
@@ -189,11 +186,11 @@ class OrchestrationCloudMixin:
                 event_utils.poll_for_events(
                     self, stack_name=name_or_id, action='DELETE', marker=marker
                 )
-            except exc.OpenStackCloudHTTPError:
+            except exceptions.HttpException:
                 pass
             stack = self.get_stack(name_or_id, resolve_outputs=False)
             if stack and stack['stack_status'] == 'DELETE_FAILED':
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Failed to delete stack {id}: {reason}".format(
                         id=name_or_id, reason=stack['stack_status_reason']
                     )
@@ -210,9 +207,8 @@ class OrchestrationCloudMixin:
 
         :returns: a list of ``openstack.orchestration.v1.stack.Stack``
             containing the stack description.
-
-        :raises: ``OpenStackCloudException`` if something goes wrong during the
-            OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         stacks = self.list_stacks()
         return _utils._filter_list(stacks, name_or_id, filters)
@@ -221,11 +217,11 @@ class OrchestrationCloudMixin:
         """List all stacks.
 
         :param dict query: Query parameters to limit stacks.
+
         :returns: a list of :class:`openstack.orchestration.v1.stack.Stack`
             objects containing the stack description.
-
-        :raises: ``OpenStackCloudException`` if something goes wrong during the
-            OpenStack API call.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call.
         """
         return list(self.orchestration.stacks(**query))
 
@@ -240,9 +236,9 @@ class OrchestrationCloudMixin:
 
         :returns: a :class:`openstack.orchestration.v1.stack.Stack`
             containing the stack description
-
-        :raises: ``OpenStackCloudException`` if something goes wrong during the
-            OpenStack API call or if multiple matches are found.
+        :raises: :class:`~openstack.exceptions.SDKException` if something goes
+            wrong during the OpenStack API call or if multiple matches are
+            found.
         """
 
         def _search_one_stack(name_or_id=None, filters=None):
@@ -256,7 +252,7 @@ class OrchestrationCloudMixin:
                 )
                 if stack.status == 'DELETE_COMPLETE':
                     return []
-            except exc.OpenStackCloudURINotFound:
+            except exceptions.NotFoundException:
                 return []
             return _utils._filter_list([stack], name_or_id, filters)
 
diff --git a/openstack/cloud/_security_group.py b/openstack/cloud/_security_group.py
index ecbdb4246aa4583bc986966dca4244e10f6e8ee2..d6d70a34fefc077f6cb20dc341c2bc84e87a0190 100644
--- a/openstack/cloud/_security_group.py
+++ b/openstack/cloud/_security_group.py
@@ -128,7 +128,8 @@ class SecurityGroupCloudMixin:
         :returns: A ``openstack.network.v2.security_group.SecurityGroup``
             representing the new security group.
 
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         :raises: OpenStackCloudUnavailableFeature if security groups are
             not supported on this cloud.
         """
@@ -165,7 +166,8 @@ class SecurityGroupCloudMixin:
 
         :returns: True if delete succeeded, False otherwise.
 
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         :raises: OpenStackCloudUnavailableFeature if security groups are
             not supported on this cloud.
         """
@@ -208,8 +210,8 @@ class SecurityGroupCloudMixin:
 
         :returns: A ``openstack.network.v2.security_group.SecurityGroup``
             describing the updated security group.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         # Security groups not supported
         if not self._has_secgroups():
@@ -220,7 +222,7 @@ class SecurityGroupCloudMixin:
         group = self.get_security_group(name_or_id)
 
         if group is None:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Security group %s not found." % name_or_id
             )
 
@@ -298,10 +300,11 @@ class SecurityGroupCloudMixin:
             on (admin-only).
         :param string description:
             Description of the rule, max 255 characters.
+
         :returns: A ``openstack.network.v2.security_group.SecurityGroup``
             representing the new security group rule.
-
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         """
         # Security groups not supported
         if not self._has_secgroups():
@@ -311,7 +314,7 @@ class SecurityGroupCloudMixin:
 
         secgroup = self.get_security_group(secgroup_name_or_id)
         if not secgroup:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Security group %s not found." % secgroup_name_or_id
             )
 
@@ -341,15 +344,13 @@ class SecurityGroupCloudMixin:
         else:
             # NOTE: Neutron accepts None for protocol. Nova does not.
             if protocol is None:
-                raise exc.OpenStackCloudException('Protocol must be specified')
+                raise exceptions.SDKException('Protocol must be specified')
 
             if direction == 'egress':
                 self.log.debug(
                     'Rule creation failed: Nova does not support egress rules'
                 )
-                raise exc.OpenStackCloudException(
-                    'No support for egress rules'
-                )
+                raise exceptions.SDKException('No support for egress rules')
 
             # NOTE: Neutron accepts None for ports, but Nova requires -1
             # as the equivalent value for ICMP.
@@ -399,7 +400,8 @@ class SecurityGroupCloudMixin:
 
         :returns: True if delete succeeded, False otherwise.
 
-        :raises: OpenStackCloudException on operation error.
+        :raises: :class:`~openstack.exceptions.SDKException` on operation
+            error.
         :raises: OpenStackCloudUnavailableFeature if security groups are
             not supported on this cloud.
         """
@@ -422,7 +424,7 @@ class SecurityGroupCloudMixin:
                         '/os-security-group-rules/{id}'.format(id=rule_id)
                     )
                 )
-            except exc.OpenStackCloudResourceNotFound:
+            except exceptions.NotFoundException:
                 return False
 
             return True
diff --git a/openstack/cloud/_utils.py b/openstack/cloud/_utils.py
index 6da820f5e4d329a423a1103ffb658df8faebfd52..232a12bfede7d20d68cb90ef303e957423184bf7 100644
--- a/openstack/cloud/_utils.py
+++ b/openstack/cloud/_utils.py
@@ -23,7 +23,7 @@ import jmespath
 import netifaces
 
 from openstack import _log
-from openstack.cloud import exc
+from openstack import exceptions
 
 
 def _dictify_resource(resource):
@@ -177,7 +177,7 @@ def _get_entity(cloud, resource, name_or_id, filters, **kwargs):
         entities = search(name_or_id, filters, **kwargs)
         if entities:
             if len(entities) > 1:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Multiple matches found for %s" % name_or_id
                 )
             return entities[0]
@@ -231,24 +231,24 @@ def openstacksdk_exceptions(error_message=None):
     """Context manager for dealing with openstack exceptions.
 
     :param string error_message: String to use for the exception message
-        content on non-OpenStackCloudExceptions.
+        content on non-SDKException exception.
 
-        Useful for avoiding wrapping OpenStackCloudException exceptions
+        Useful for avoiding wrapping SDKException exceptions
         within themselves. Code called from within the context may throw such
         exceptions without having to catch and reraise them.
 
-        Non-OpenStackCloudException exceptions thrown within the context will
+        Non-SDKException exceptions thrown within the context will
         be wrapped and the exception message will be appended to the given
         error message.
     """
     try:
         yield
-    except exc.OpenStackCloudException:
+    except exceptions.SDKException:
         raise
     except Exception as e:
         if error_message is None:
             error_message = str(e)
-        raise exc.OpenStackCloudException(error_message)
+        raise exceptions.SDKException(error_message)
 
 
 def safe_dict_min(key, data):
@@ -273,7 +273,7 @@ def safe_dict_min(key, data):
             try:
                 val = int(d[key])
             except ValueError:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Search for minimum value failed. "
                     "Value for {key} is not an integer: {value}".format(
                         key=key, value=d[key]
@@ -306,7 +306,7 @@ def safe_dict_max(key, data):
             try:
                 val = int(d[key])
             except ValueError:
-                raise exc.OpenStackCloudException(
+                raise exceptions.SDKException(
                     "Search for maximum value failed. "
                     "Value for {key} is not an integer: {value}".format(
                         key=key, value=d[key]
@@ -360,7 +360,8 @@ def range_filter(data, key, range_exp):
     :param string range_exp: The expression describing the range of values.
 
     :returns: A list subset of the original data set.
-    :raises: OpenStackCloudException on invalid range expressions.
+    :raises: :class:`~openstack.exceptions.SDKException` on invalid range
+        expressions.
     """
     filtered = []
     range_exp = str(range_exp).upper()
@@ -388,7 +389,7 @@ def range_filter(data, key, range_exp):
 
     # If parsing the range fails, it must be a bad value.
     if val_range is None:
-        raise exc.OpenStackCloudException(
+        raise exceptions.SDKException(
             "Invalid range value: {value}".format(value=range_exp)
         )
 
diff --git a/openstack/cloud/cmd/__pycache__/__init__.cpython-310.pyc b/openstack/cloud/cmd/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index cc37ef484fa333f24443aa51a182e6e6173d2607..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/cmd/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/cmd/__pycache__/inventory.cpython-310.pyc b/openstack/cloud/cmd/__pycache__/inventory.cpython-310.pyc
deleted file mode 100644
index 12fd42ea78d9e12e5eae371e1f43b2c1dd6ba05c..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/cmd/__pycache__/inventory.cpython-310.pyc and /dev/null differ
diff --git a/openstack/cloud/cmd/inventory.py b/openstack/cloud/cmd/inventory.py
index ce6cbeb97affecd53deb3c812972239ff08356aa..06e027cba4036ca811bed9574b069c34983abaa1 100644
--- a/openstack/cloud/cmd/inventory.py
+++ b/openstack/cloud/cmd/inventory.py
@@ -21,6 +21,7 @@ import yaml
 
 import openstack.cloud
 import openstack.cloud.inventory
+from openstack import exceptions
 
 
 def output_format_dict(data, use_yaml):
@@ -76,7 +77,7 @@ def main():
         elif args.host:
             output = inventory.get_host(args.host)
         print(output_format_dict(output, args.yaml))
-    except openstack.cloud.OpenStackCloudException as e:
+    except exceptions.SDKException as e:
         sys.stderr.write(e.message + '\n')
         sys.exit(1)
     sys.exit(0)
diff --git a/openstack/cloud/exc.py b/openstack/cloud/exc.py
index 3d75d487889256ef7ec34752f8bd599aff72acfb..cc831f402ba0c26e1511c8d22bfd8be141d3eefb 100644
--- a/openstack/cloud/exc.py
+++ b/openstack/cloud/exc.py
@@ -15,7 +15,6 @@
 from openstack import exceptions
 
 OpenStackCloudException = exceptions.SDKException
-OpenStackCloudTimeout = exceptions.ResourceTimeout
 
 
 class OpenStackCloudCreateException(OpenStackCloudException):
@@ -39,6 +38,7 @@ class OpenStackCloudUnavailableFeature(OpenStackCloudException):
 
 
 # Backwards compat
+OpenStackCloudTimeout = exceptions.ResourceTimeout
 OpenStackCloudHTTPError = exceptions.HttpException
 OpenStackCloudBadRequest = exceptions.BadRequestException
 OpenStackCloudURINotFound = exceptions.NotFoundException
diff --git a/openstack/cloud/inventory.py b/openstack/cloud/inventory.py
index 7b723ff943611a49af2ec177a89b5b9a092739f2..2c4909a6b0d39d4cb097106a7682c2235843c6b8 100644
--- a/openstack/cloud/inventory.py
+++ b/openstack/cloud/inventory.py
@@ -74,7 +74,7 @@ class OpenStackInventory:
                     detailed=expand, all_projects=all_projects
                 ):
                     hostvars.append(server)
-            except exceptions.OpenStackCloudException:
+            except exceptions.SDKException:
                 # Don't fail on one particular cloud as others may work
                 if fail_on_cloud_config:
                     raise
diff --git a/openstack/cloud/meta.py b/openstack/cloud/meta.py
index 8e57d8964e089000656ad96a2222c49fb3d6cb7e..184c1b984d1a6315ebee3ad0a92c470b82390894 100644
--- a/openstack/cloud/meta.py
+++ b/openstack/cloud/meta.py
@@ -16,7 +16,7 @@ import ipaddress
 import socket
 
 from openstack import _log
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack import utils
 
 
@@ -452,7 +452,7 @@ def _get_supplemental_addresses(cloud, server):
                         server['addresses'][fixed_net].append(
                             _make_address_dict(fip, port)
                         )
-    except exc.OpenStackCloudException:
+    except exceptions.SDKException:
         # If something goes wrong with a cloud call, that's cool - this is
         # an attempt to provide additional data and should not block forward
         # progress
@@ -498,7 +498,7 @@ def add_server_interfaces(cloud, server):
 def expand_server_security_groups(cloud, server):
     try:
         groups = cloud.list_server_security_groups(server)
-    except exc.OpenStackCloudException:
+    except exceptions.SDKException:
         groups = []
     server['security_groups'] = groups or []
 
@@ -550,7 +550,7 @@ def get_hostvars_from_server(cloud, server, mounts=None):
                 # Make things easier to consume elsewhere
                 volume['device'] = volume['attachments'][0]['device']
                 volumes.append(volume)
-        except exc.OpenStackCloudException:
+        except exceptions.SDKException:
             pass
     server_vars['volumes'] = volumes
     if mounts:
diff --git a/openstack/cloud/openstackcloud.py b/openstack/cloud/openstackcloud.py
index 7d847dadeea70f59f148f05efba09dbd08923ed6..b0cccf45ebf46b19e1a65ea58b4b9ac3fbc15192 100644
--- a/openstack/cloud/openstackcloud.py
+++ b/openstack/cloud/openstackcloud.py
@@ -24,7 +24,6 @@ import requestsexceptions
 from openstack import _log
 from openstack.cloud import _object_store
 from openstack.cloud import _utils
-from openstack.cloud import exc
 from openstack.cloud import meta
 import openstack.config
 from openstack.config import cloud_region as cloud_region_mod
@@ -445,7 +444,8 @@ class _OpenStackCloudMixin:
                 {"vcpus": "<=5", "ram": "<=2048", "disk": "1"}
 
         :returns: A list subset of the original data set.
-        :raises: OpenStackCloudException on invalid range expressions.
+        :raises: :class:`~openstack.exceptions.SDKException` on invalid range
+            expressions.
         """
         filtered = []
 
@@ -491,10 +491,10 @@ class _OpenStackCloudMixin:
                 "Endpoint not found in %s cloud: %s", self.name, str(e)
             )
             endpoint = None
-        except exc.OpenStackCloudException:
+        except exceptions.SDKException:
             raise
         except Exception as e:
-            raise exc.OpenStackCloudException(
+            raise exceptions.SDKException(
                 "Error getting {service} endpoint on {cloud}:{region}:"
                 " {error}".format(
                     service=service_key,
@@ -525,7 +525,7 @@ class _OpenStackCloudMixin:
                 kwargs['min_version'] = version
                 kwargs['max_version'] = version
             endpoint = self.get_session_endpoint(service_key, **kwargs)
-        except exc.OpenStackCloudException:
+        except exceptions.SDKException:
             return False
         if endpoint:
             return True
diff --git a/openstack/cloud/tests/__pycache__/__init__.cpython-310.pyc b/openstack/cloud/tests/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 42a2f5a303e72978d99e4c3e035f51142a91d630..0000000000000000000000000000000000000000
Binary files a/openstack/cloud/tests/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/__pycache__/__init__.cpython-310.pyc b/openstack/clustering/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 4cba889df98a89d1722e693460ff073028e68c44..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/__pycache__/clustering_service.cpython-310.pyc b/openstack/clustering/__pycache__/clustering_service.cpython-310.pyc
deleted file mode 100644
index 79a49b142b20427ad8f428f5fd239ccb7115e09d..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/__pycache__/clustering_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/__pycache__/version.cpython-310.pyc b/openstack/clustering/__pycache__/version.cpython-310.pyc
deleted file mode 100644
index 1d25eb00af6374e75f5243120623053d9a1754a2..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/__pycache__/version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/__init__.cpython-310.pyc b/openstack/clustering/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index ea0dad9724125b05df47e8f14e9aa12b1aec3845..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/_async_resource.cpython-310.pyc b/openstack/clustering/v1/__pycache__/_async_resource.cpython-310.pyc
deleted file mode 100644
index 47692f176891da90bd5e7dbaa9f1d0b0e5ee0fb6..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/_async_resource.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/clustering/v1/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index abf5143d92ce4f03f708c38a941c33941d70d4a8..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/action.cpython-310.pyc b/openstack/clustering/v1/__pycache__/action.cpython-310.pyc
deleted file mode 100644
index 6b125f3eecaadb05597c7b121b4d77432a2d95d9..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/action.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/build_info.cpython-310.pyc b/openstack/clustering/v1/__pycache__/build_info.cpython-310.pyc
deleted file mode 100644
index 1adac8a5ba997c8da645daaa8d3fc30bd6047577..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/build_info.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/cluster.cpython-310.pyc b/openstack/clustering/v1/__pycache__/cluster.cpython-310.pyc
deleted file mode 100644
index 2e72419820fcd695047c50703c67982a4fab5136..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/cluster.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/cluster_attr.cpython-310.pyc b/openstack/clustering/v1/__pycache__/cluster_attr.cpython-310.pyc
deleted file mode 100644
index 8c0dfc83377a6dea43c5d4925a8223b7401d9256..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/cluster_attr.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/cluster_policy.cpython-310.pyc b/openstack/clustering/v1/__pycache__/cluster_policy.cpython-310.pyc
deleted file mode 100644
index 4906cf2bc96ffcaae23266ee42beb2ad506e2506..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/cluster_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/event.cpython-310.pyc b/openstack/clustering/v1/__pycache__/event.cpython-310.pyc
deleted file mode 100644
index 22dd0b112088a2f9e8f85ca0c0359e9d34af9063..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/event.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/node.cpython-310.pyc b/openstack/clustering/v1/__pycache__/node.cpython-310.pyc
deleted file mode 100644
index 4463f6483ea631f96c956cd969b32f2265f4d32c..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/node.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/policy.cpython-310.pyc b/openstack/clustering/v1/__pycache__/policy.cpython-310.pyc
deleted file mode 100644
index dbe4850eca31a1a3c8718bf00d59ae46cab0c14d..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/policy_type.cpython-310.pyc b/openstack/clustering/v1/__pycache__/policy_type.cpython-310.pyc
deleted file mode 100644
index d1c60ce1b09907bc07ad6bc30753d84b8b8344bd..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/policy_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/profile.cpython-310.pyc b/openstack/clustering/v1/__pycache__/profile.cpython-310.pyc
deleted file mode 100644
index 7c49c16c5826e0049c3cc9b59a2457851b5b3e43..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/profile.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/profile_type.cpython-310.pyc b/openstack/clustering/v1/__pycache__/profile_type.cpython-310.pyc
deleted file mode 100644
index 2fb546999d76ea7434fc5eaf18bf6438e7288c8b..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/profile_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/receiver.cpython-310.pyc b/openstack/clustering/v1/__pycache__/receiver.cpython-310.pyc
deleted file mode 100644
index 99b1f3eb6ecebeaa6cf88ccf9ebdf5687ce7d457..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/receiver.cpython-310.pyc and /dev/null differ
diff --git a/openstack/clustering/v1/__pycache__/service.cpython-310.pyc b/openstack/clustering/v1/__pycache__/service.cpython-310.pyc
deleted file mode 100644
index 058402403295cf5529cc0aafff9b9574d7bc7ab7..0000000000000000000000000000000000000000
Binary files a/openstack/clustering/v1/__pycache__/service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/common/__pycache__/__init__.cpython-310.pyc b/openstack/common/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 7fee10abf0d987d6a5b14242723d0b71db842ce7..0000000000000000000000000000000000000000
Binary files a/openstack/common/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/common/__pycache__/metadata.cpython-310.pyc b/openstack/common/__pycache__/metadata.cpython-310.pyc
deleted file mode 100644
index 6a95d33cb497e3ca927e4ac32cfbc20182ec8e95..0000000000000000000000000000000000000000
Binary files a/openstack/common/__pycache__/metadata.cpython-310.pyc and /dev/null differ
diff --git a/openstack/common/__pycache__/quota_set.cpython-310.pyc b/openstack/common/__pycache__/quota_set.cpython-310.pyc
deleted file mode 100644
index 21948c045389d2bd67c28832258ea081ddfe35d5..0000000000000000000000000000000000000000
Binary files a/openstack/common/__pycache__/quota_set.cpython-310.pyc and /dev/null differ
diff --git a/openstack/common/__pycache__/tag.cpython-310.pyc b/openstack/common/__pycache__/tag.cpython-310.pyc
deleted file mode 100644
index ebce3faf55443d59a0b2893db6909ad341266922..0000000000000000000000000000000000000000
Binary files a/openstack/common/__pycache__/tag.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/__pycache__/__init__.cpython-310.pyc b/openstack/compute/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index d9ad3f4b7d7c9c4050ea251f76ac3fca848e1126..0000000000000000000000000000000000000000
Binary files a/openstack/compute/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/__pycache__/compute_service.cpython-310.pyc b/openstack/compute/__pycache__/compute_service.cpython-310.pyc
deleted file mode 100644
index 53f4c72dbd4d7fb96a4f471e3161475315eb4a78..0000000000000000000000000000000000000000
Binary files a/openstack/compute/__pycache__/compute_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/__pycache__/version.cpython-310.pyc b/openstack/compute/__pycache__/version.cpython-310.pyc
deleted file mode 100644
index 2a03e88ca08f54544451ffa349feea4eb97a99e1..0000000000000000000000000000000000000000
Binary files a/openstack/compute/__pycache__/version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/__init__.cpython-310.pyc b/openstack/compute/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 52ac78d278ae2f2498ff47367698a0ebc085006e..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/compute/v2/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 943171d15ad16af1e2df59f2789cc8afcb3f83ff..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/aggregate.cpython-310.pyc b/openstack/compute/v2/__pycache__/aggregate.cpython-310.pyc
deleted file mode 100644
index 44eb33a5d9968a75e67fa89de36353b68c6d3d68..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/aggregate.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/availability_zone.cpython-310.pyc b/openstack/compute/v2/__pycache__/availability_zone.cpython-310.pyc
deleted file mode 100644
index 713e1e8969a7e0de1f93e008cc3b38d6a313c373..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/availability_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/extension.cpython-310.pyc b/openstack/compute/v2/__pycache__/extension.cpython-310.pyc
deleted file mode 100644
index 6d417daa1e8b3211418ad358d470d455e1e77a8c..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/extension.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/flavor.cpython-310.pyc b/openstack/compute/v2/__pycache__/flavor.cpython-310.pyc
deleted file mode 100644
index 36aa0da6aefaf56816bd8ca908d6d866a358d189..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/flavor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/hypervisor.cpython-310.pyc b/openstack/compute/v2/__pycache__/hypervisor.cpython-310.pyc
deleted file mode 100644
index a63fe4b74a7b4be3d2e9b854c85ac8cc980a2b97..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/hypervisor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/image.cpython-310.pyc b/openstack/compute/v2/__pycache__/image.cpython-310.pyc
deleted file mode 100644
index 1ea160dae9050c7ed17ffc940fbfa23eed6aeaea..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/image.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/keypair.cpython-310.pyc b/openstack/compute/v2/__pycache__/keypair.cpython-310.pyc
deleted file mode 100644
index 3bf2be3a6caa98db878e0cad4e1b59fca0c130b0..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/keypair.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/limits.cpython-310.pyc b/openstack/compute/v2/__pycache__/limits.cpython-310.pyc
deleted file mode 100644
index c124864b4162b5450284e6c9fbdb87325ef05845..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/limits.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/migration.cpython-310.pyc b/openstack/compute/v2/__pycache__/migration.cpython-310.pyc
deleted file mode 100644
index 3e8b9e8af04434556f6f623fbc44d4389d8b935e..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/migration.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/quota_set.cpython-310.pyc b/openstack/compute/v2/__pycache__/quota_set.cpython-310.pyc
deleted file mode 100644
index d832055227c967d976e97136d45e075790da0011..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/quota_set.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/server.cpython-310.pyc b/openstack/compute/v2/__pycache__/server.cpython-310.pyc
deleted file mode 100644
index d4038f9e979c90484e038f55ebd7b9117faddc9c..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/server.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/server_action.cpython-310.pyc b/openstack/compute/v2/__pycache__/server_action.cpython-310.pyc
deleted file mode 100644
index db028e3b3691aa17618dad9e13816947d0303e12..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/server_action.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/server_diagnostics.cpython-310.pyc b/openstack/compute/v2/__pycache__/server_diagnostics.cpython-310.pyc
deleted file mode 100644
index e323a0797bebcf337d50f051464f73a376e1bea1..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/server_diagnostics.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/server_group.cpython-310.pyc b/openstack/compute/v2/__pycache__/server_group.cpython-310.pyc
deleted file mode 100644
index d7add52322eaecdf5dde7e86a7796d5a9203f6b5..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/server_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/server_interface.cpython-310.pyc b/openstack/compute/v2/__pycache__/server_interface.cpython-310.pyc
deleted file mode 100644
index f719d35d896aad34a3c576c079a1db49f37964eb..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/server_interface.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/server_ip.cpython-310.pyc b/openstack/compute/v2/__pycache__/server_ip.cpython-310.pyc
deleted file mode 100644
index 6cc63be942c22f6a38eb1939e1de1b9b1f3817d8..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/server_ip.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/server_migration.cpython-310.pyc b/openstack/compute/v2/__pycache__/server_migration.cpython-310.pyc
deleted file mode 100644
index 457d377511fe4bcc37096e77251b4844abfea59b..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/server_migration.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/server_remote_console.cpython-310.pyc b/openstack/compute/v2/__pycache__/server_remote_console.cpython-310.pyc
deleted file mode 100644
index 01c2cfddb0d3f4062781620dd6fb7993ba83dfb3..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/server_remote_console.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/service.cpython-310.pyc b/openstack/compute/v2/__pycache__/service.cpython-310.pyc
deleted file mode 100644
index 94f87b43f8af8806bcef627e05d1075b6d3aebaa..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/usage.cpython-310.pyc b/openstack/compute/v2/__pycache__/usage.cpython-310.pyc
deleted file mode 100644
index b63308ce9d27cb3f8fff8a249cbd226542fb6dc6..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/usage.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/__pycache__/volume_attachment.cpython-310.pyc b/openstack/compute/v2/__pycache__/volume_attachment.cpython-310.pyc
deleted file mode 100644
index c0f0f83d58246442a60e9ff73d13ac4e1f504603..0000000000000000000000000000000000000000
Binary files a/openstack/compute/v2/__pycache__/volume_attachment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/compute/v2/server.py b/openstack/compute/v2/server.py
index 2622e7c3b2fee7fa95810c2966942bb223492f1f..817924618f541e0859e4f5ce368436b9b73c8886 100644
--- a/openstack/compute/v2/server.py
+++ b/openstack/compute/v2/server.py
@@ -9,6 +9,9 @@
 # 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 typing as ty
+
 from openstack.common import metadata
 from openstack.common import tag
 from openstack.compute.v2 import flavor
@@ -474,14 +477,13 @@ class Server(resource.Resource, metadata.MetadataMixin, tag.TagMixin):
             microversion = '2.45'
         response = self._action(session, body, microversion)
 
-        body = None
         try:
-            # There might be body, might be not
-            body = response.json()
+            # There might be a body, there might not be
+            response_body = response.json()
         except Exception:
-            pass
-        if body and 'image_id' in body:
-            image_id = body['image_id']
+            response_body = None
+        if response_body and 'image_id' in response_body:
+            image_id = response_body['image_id']
         else:
             image_id = response.headers['Location'].rsplit('/', 1)[1]
 
@@ -634,7 +636,7 @@ class Server(resource.Resource, metadata.MetadataMixin, tag.TagMixin):
         :param locked_reason: The reason for locking the server.
         :returns: None
         """
-        body = {"lock": None}
+        body: ty.Dict[str, ty.Any] = {"lock": None}
         if locked_reason is not None:
             body["lock"] = {
                 "locked_reason": locked_reason,
@@ -662,7 +664,7 @@ class Server(resource.Resource, metadata.MetadataMixin, tag.TagMixin):
             provided, the server will use the existing image. (Optional)
         :returns: None
         """
-        body = {"rescue": {}}
+        body: ty.Dict[str, ty.Any] = {"rescue": {}}
         if admin_pass is not None:
             body["rescue"]["adminPass"] = admin_pass
         if image_ref is not None:
@@ -690,7 +692,7 @@ class Server(resource.Resource, metadata.MetadataMixin, tag.TagMixin):
         :param force: Whether to force evacuation.
         :returns: None
         """
-        body = {"evacuate": {}}
+        body: ty.Dict[str, ty.Any] = {"evacuate": {}}
         if host is not None:
             body["evacuate"]["host"] = host
         if admin_pass is not None:
@@ -795,7 +797,7 @@ class Server(resource.Resource, metadata.MetadataMixin, tag.TagMixin):
             (Optional)
         :returns: None
         """
-        body = {"os-getConsoleOutput": {}}
+        body: ty.Dict[str, ty.Any] = {"os-getConsoleOutput": {}}
         if length is not None:
             body["os-getConsoleOutput"]["length"] = length
         resp = self._action(session, body)
@@ -907,7 +909,7 @@ class Server(resource.Resource, metadata.MetadataMixin, tag.TagMixin):
         disk_over_commit,
     ):
         microversion = None
-        body = {
+        body: ty.Dict[str, ty.Any] = {
             'host': None,
         }
         if block_migration == 'auto':
diff --git a/openstack/compute/v2/server_migration.py b/openstack/compute/v2/server_migration.py
index eb89de1c85629d024b437a470b0c422cd38ea5ec..42585ab32f9d0be7948c6cf547c7ca947ac5f15f 100644
--- a/openstack/compute/v2/server_migration.py
+++ b/openstack/compute/v2/server_migration.py
@@ -18,15 +18,15 @@ from openstack import utils
 class ServerMigration(resource.Resource):
     resource_key = 'migration'
     resources_key = 'migrations'
-    base_path = '/servers/%(server_uuid)s/migrations'
+    base_path = '/servers/%(server_id)s/migrations'
 
     # capabilities
     allow_fetch = True
     allow_list = True
     allow_delete = True
 
-    #: The ID for the server.
-    server_id = resource.URI('server_uuid')
+    #: The ID for the server from the URI of the resource
+    server_id = resource.URI('server_id')
 
     #: The date and time when the resource was created.
     created_at = resource.Body('created_at')
@@ -53,11 +53,8 @@ class ServerMigration(resource.Resource):
     #: The ID of the project that initiated the server migration (since
     #: microversion 2.80)
     project_id = resource.Body('project_id')
-    # FIXME(stephenfin): This conflicts since there is a server ID in the URI
-    # *and* in the body. We need a field that handles both or we need to use
-    # different names.
-    # #: The UUID of the server
-    # server_id = resource.Body('server_uuid')
+    #: The UUID of the server from the response body
+    server_uuid = resource.Body('server_uuid')
     #: The source compute of the migration.
     source_compute = resource.Body('source_compute')
     #: The source node of the migration.
@@ -80,7 +77,7 @@ class ServerMigration(resource.Resource):
         microversion = self._get_microversion(session, action='list')
 
         url = utils.urljoin(
-            self.base_path % {'server_uuid': self.server_id},
+            self.base_path % {'server_id': self.server_id},
             self.id,
             'action',
         )
diff --git a/openstack/config/__pycache__/__init__.cpython-310.pyc b/openstack/config/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index f4b0a6f5828d1e44562612d65f2b08b0104c0759..0000000000000000000000000000000000000000
Binary files a/openstack/config/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/config/__pycache__/_util.cpython-310.pyc b/openstack/config/__pycache__/_util.cpython-310.pyc
deleted file mode 100644
index a20a0fa5b81f78bf270280604becbe19c7b2f646..0000000000000000000000000000000000000000
Binary files a/openstack/config/__pycache__/_util.cpython-310.pyc and /dev/null differ
diff --git a/openstack/config/__pycache__/cloud_config.cpython-310.pyc b/openstack/config/__pycache__/cloud_config.cpython-310.pyc
deleted file mode 100644
index d38a335279b75c64aae8899e9e6f7f90959bfd4f..0000000000000000000000000000000000000000
Binary files a/openstack/config/__pycache__/cloud_config.cpython-310.pyc and /dev/null differ
diff --git a/openstack/config/__pycache__/cloud_region.cpython-310.pyc b/openstack/config/__pycache__/cloud_region.cpython-310.pyc
deleted file mode 100644
index 343b306b0157a9f3b26f5a1dc3ad3dc832ab4f59..0000000000000000000000000000000000000000
Binary files a/openstack/config/__pycache__/cloud_region.cpython-310.pyc and /dev/null differ
diff --git a/openstack/config/__pycache__/defaults.cpython-310.pyc b/openstack/config/__pycache__/defaults.cpython-310.pyc
deleted file mode 100644
index 29eb5e643ca63b27aad04ec17ab3e37297a9a7f1..0000000000000000000000000000000000000000
Binary files a/openstack/config/__pycache__/defaults.cpython-310.pyc and /dev/null differ
diff --git a/openstack/config/__pycache__/exceptions.cpython-310.pyc b/openstack/config/__pycache__/exceptions.cpython-310.pyc
deleted file mode 100644
index c07133de60a9dd9117dbe042f1bb87440cab4be5..0000000000000000000000000000000000000000
Binary files a/openstack/config/__pycache__/exceptions.cpython-310.pyc and /dev/null differ
diff --git a/openstack/config/__pycache__/loader.cpython-310.pyc b/openstack/config/__pycache__/loader.cpython-310.pyc
deleted file mode 100644
index 569539e3060220f196bf49fd793a3efc254300c3..0000000000000000000000000000000000000000
Binary files a/openstack/config/__pycache__/loader.cpython-310.pyc and /dev/null differ
diff --git a/openstack/config/loader.py b/openstack/config/loader.py
index e6e288f413326930ebd2d17bf5c6d5e04b00c713..2d9cf19e8a210f8a10d47a51a93c600b7835cf9b 100644
--- a/openstack/config/loader.py
+++ b/openstack/config/loader.py
@@ -628,7 +628,7 @@ class OpenStackConfig:
             else:
                 # Can't find the requested vendor config, go about business
                 warnings.warn(
-                    f"Couldn't find the vendor profile {profile_name} for"
+                    f"Couldn't find the vendor profile {profile_name} for "
                     f"the cloud {name}",
                     os_warnings.ConfigurationWarning,
                 )
@@ -991,7 +991,7 @@ class OpenStackConfig:
         os_args = dict()
         new_args = dict()
         for key, val in iter(args.items()):
-            if type(args[key]) == dict:
+            if type(args[key]) is dict:
                 # dive into the auth dict
                 new_args[key] = self._fix_args(args[key])
                 continue
diff --git a/openstack/config/vendors/__pycache__/__init__.cpython-310.pyc b/openstack/config/vendors/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 6bb2aec0a9c9f1b42fa8ee083144b405745f82b6..0000000000000000000000000000000000000000
Binary files a/openstack/config/vendors/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/connection.py b/openstack/connection.py
index 9055077a265a44d251f59e7eafb9be99700f1568..499cfd88e4b549be6305b25fdb346d860beaf557 100644
--- a/openstack/connection.py
+++ b/openstack/connection.py
@@ -154,6 +154,77 @@ construct a Connection with the ``CONF`` object and an authenticated Session.
         oslo_conf=CONF,
     )
 
+This can then be used with an appropriate configuration file.
+
+.. code-block:: ini
+
+    [neutron]
+    region_name = RegionOne
+    auth_strategy = keystone
+    project_domain_name = Default
+    project_name = service
+    user_domain_name = Default
+    password = password
+    username = neutron
+    auth_url = http://10.0.110.85/identity
+    auth_type = password
+    service_metadata_proxy = True
+    default_floating_pool = public
+
+You may also wish to configure a service user. As discussed in the `Keystone
+documentation`__, service users are users with specific roles that identify the
+user as a service. The use of service users can avoid issues caused by the
+expiration of the original user's token during long running operations, as a
+fresh token issued for the service user will always accompany the user's token,
+which may have expired.
+
+.. code-block:: python
+
+    from keystoneauth1 import loading as ks_loading
+    from keystoneauth1 import service_token
+    from oslo_config import cfg
+    import openstack
+    from openstack import connection
+
+    CONF = cfg.CONF
+
+    neutron_group = cfg.OptGroup('neutron')
+    ks_loading.register_session_conf_options(CONF, neutron_group)
+    ks_loading.register_auth_conf_options(CONF, neutron_group)
+    ks_loading.register_adapter_conf_options(CONF, neutron_group)
+
+    service_group = cfg.OptGroup('service_user')
+    ks_loading.register_session_conf_options(CONF, service_group)
+    ks_loading.register_auth_conf_options(CONF, service_group)
+
+    CONF()
+    user_auth = ks_loading.load_auth_from_conf_options(CONF, 'neutron')
+    service_auth = ks_loading.load_auth_from_conf_options(CONF, 'service_user')
+    auth = service_token.ServiceTokenAuthWrapper(user_auth, service_auth)
+
+    sess = ks_loading.load_session_from_conf_options(CONF, 'neutron', auth=auth)
+
+    conn = connection.Connection(
+        session=sess,
+        oslo_conf=CONF,
+    )
+
+This will necessitate an additional section in the configuration file used.
+
+.. code-block:: ini
+
+    [service_user]
+    auth_strategy = keystone
+    project_domain_name = Default
+    project_name = service
+    user_domain_name = Default
+    password = password
+    username = nova
+    auth_url = http://10.0.110.85/identity
+    auth_type = password
+
+.. __: https://docs.openstack.org/keystone/latest/admin/manage-services.html
+
 From existing CloudRegion
 ~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -201,15 +272,10 @@ Additional information about the services can be found in the
 """
 import atexit
 import concurrent.futures
+import importlib.metadata as importlib_metadata
 import warnings
 import weakref
 
-try:
-    # For python 3.8 and later
-    import importlib.metadata as importlib_metadata
-except ImportError:
-    # For everyone else
-    import importlib_metadata  # type: ignore
 import keystoneauth1.exceptions
 import requestsexceptions
 
diff --git a/openstack/container_infrastructure_management/__pycache__/__init__.cpython-310.pyc b/openstack/container_infrastructure_management/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index e5fcbb1848b1124daf46ff2a94b852125e360e3a..0000000000000000000000000000000000000000
Binary files a/openstack/container_infrastructure_management/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/container_infrastructure_management/__pycache__/container_infrastructure_management_service.cpython-310.pyc b/openstack/container_infrastructure_management/__pycache__/container_infrastructure_management_service.cpython-310.pyc
deleted file mode 100644
index 794121c22b0a9e5c0efb575beb3c63aeb3712ace..0000000000000000000000000000000000000000
Binary files a/openstack/container_infrastructure_management/__pycache__/container_infrastructure_management_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/container_infrastructure_management/v1/__pycache__/__init__.cpython-310.pyc b/openstack/container_infrastructure_management/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index f64ad81481c88f8a3449a84716f006e2e56d5ff9..0000000000000000000000000000000000000000
Binary files a/openstack/container_infrastructure_management/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/container_infrastructure_management/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/container_infrastructure_management/v1/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 9a54c811ea15c1a16a8f913cb887e3597a8eed4a..0000000000000000000000000000000000000000
Binary files a/openstack/container_infrastructure_management/v1/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/container_infrastructure_management/v1/__pycache__/cluster.cpython-310.pyc b/openstack/container_infrastructure_management/v1/__pycache__/cluster.cpython-310.pyc
deleted file mode 100644
index d3fc853c5969698dc1cce686f282a83aad635eda..0000000000000000000000000000000000000000
Binary files a/openstack/container_infrastructure_management/v1/__pycache__/cluster.cpython-310.pyc and /dev/null differ
diff --git a/openstack/container_infrastructure_management/v1/__pycache__/cluster_certificate.cpython-310.pyc b/openstack/container_infrastructure_management/v1/__pycache__/cluster_certificate.cpython-310.pyc
deleted file mode 100644
index e217cbcddd5e1e6f8eadec968072067f6cf12fd7..0000000000000000000000000000000000000000
Binary files a/openstack/container_infrastructure_management/v1/__pycache__/cluster_certificate.cpython-310.pyc and /dev/null differ
diff --git a/openstack/container_infrastructure_management/v1/__pycache__/cluster_template.cpython-310.pyc b/openstack/container_infrastructure_management/v1/__pycache__/cluster_template.cpython-310.pyc
deleted file mode 100644
index fe297479e2c5cf8de63b330ea56f63112090c0c5..0000000000000000000000000000000000000000
Binary files a/openstack/container_infrastructure_management/v1/__pycache__/cluster_template.cpython-310.pyc and /dev/null differ
diff --git a/openstack/container_infrastructure_management/v1/__pycache__/service.cpython-310.pyc b/openstack/container_infrastructure_management/v1/__pycache__/service.cpython-310.pyc
deleted file mode 100644
index 5d64b0e67ca1250ba112ffd0c95e7d19687061d2..0000000000000000000000000000000000000000
Binary files a/openstack/container_infrastructure_management/v1/__pycache__/service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/database/__pycache__/__init__.cpython-310.pyc b/openstack/database/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index a35a3b069fe8e843377b31ad2a7c39ea9c08d304..0000000000000000000000000000000000000000
Binary files a/openstack/database/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/database/__pycache__/database_service.cpython-310.pyc b/openstack/database/__pycache__/database_service.cpython-310.pyc
deleted file mode 100644
index 9b9c5ca2fdf7b35dd95543605a16b11e5f45ffd4..0000000000000000000000000000000000000000
Binary files a/openstack/database/__pycache__/database_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/database/v1/__pycache__/__init__.cpython-310.pyc b/openstack/database/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 5810b443ac003283468b0049356dbeebc77ccabc..0000000000000000000000000000000000000000
Binary files a/openstack/database/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/database/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/database/v1/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index c7b69eb0b25eea74594017f621659443659a32a7..0000000000000000000000000000000000000000
Binary files a/openstack/database/v1/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/database/v1/__pycache__/database.cpython-310.pyc b/openstack/database/v1/__pycache__/database.cpython-310.pyc
deleted file mode 100644
index d5561a8ea2684f87e0f4fc8a2a194347cf353bb0..0000000000000000000000000000000000000000
Binary files a/openstack/database/v1/__pycache__/database.cpython-310.pyc and /dev/null differ
diff --git a/openstack/database/v1/__pycache__/flavor.cpython-310.pyc b/openstack/database/v1/__pycache__/flavor.cpython-310.pyc
deleted file mode 100644
index 421d82afdf008aec95f28e721fd5c55618b27ce2..0000000000000000000000000000000000000000
Binary files a/openstack/database/v1/__pycache__/flavor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/database/v1/__pycache__/instance.cpython-310.pyc b/openstack/database/v1/__pycache__/instance.cpython-310.pyc
deleted file mode 100644
index c8491d102af1c2c46c5f58e4c3c161689ccef984..0000000000000000000000000000000000000000
Binary files a/openstack/database/v1/__pycache__/instance.cpython-310.pyc and /dev/null differ
diff --git a/openstack/database/v1/__pycache__/user.cpython-310.pyc b/openstack/database/v1/__pycache__/user.cpython-310.pyc
deleted file mode 100644
index 90604a45d7ae5a38c134354be85bde3e2d446869..0000000000000000000000000000000000000000
Binary files a/openstack/database/v1/__pycache__/user.cpython-310.pyc and /dev/null differ
diff --git a/openstack/database/v1/instance.py b/openstack/database/v1/instance.py
index c24abaa4a2a47ce662b516823080346deb9a203d..31f18186208993ae142388f5316e2d566fb393ef 100644
--- a/openstack/database/v1/instance.py
+++ b/openstack/database/v1/instance.py
@@ -89,7 +89,7 @@ class Instance(resource.Resource):
 
         :returns: ``None``
         """
-        body = {'restart': {}}
+        body = {'restart': None}
         url = utils.urljoin(self.base_path, self.id, 'action')
         session.post(url, json=body)
 
diff --git a/openstack/dns/__pycache__/__init__.cpython-310.pyc b/openstack/dns/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 21a6cc3057e4cb4decbf7340fee1a322399243b7..0000000000000000000000000000000000000000
Binary files a/openstack/dns/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/dns/__pycache__/dns_service.cpython-310.pyc b/openstack/dns/__pycache__/dns_service.cpython-310.pyc
deleted file mode 100644
index 0b906e61a9cf00e2d986a7c972b1a0536e35d5ae..0000000000000000000000000000000000000000
Binary files a/openstack/dns/__pycache__/dns_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/dns/__pycache__/version.cpython-310.pyc b/openstack/dns/__pycache__/version.cpython-310.pyc
deleted file mode 100644
index be66e5cfaee62ae34f5fdb46541cc79bb96f316b..0000000000000000000000000000000000000000
Binary files a/openstack/dns/__pycache__/version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/dns/v2/__pycache__/__init__.cpython-310.pyc b/openstack/dns/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index c4aac68dcdca3eb5a5f753383c358c9cadeb0ad9..0000000000000000000000000000000000000000
Binary files a/openstack/dns/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/dns/v2/__pycache__/_base.cpython-310.pyc b/openstack/dns/v2/__pycache__/_base.cpython-310.pyc
deleted file mode 100644
index f441757db86caca65f49216df485b97227b169c2..0000000000000000000000000000000000000000
Binary files a/openstack/dns/v2/__pycache__/_base.cpython-310.pyc and /dev/null differ
diff --git a/openstack/dns/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/dns/v2/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 47bf8d7706be7cf77badc43bbbab96353918da28..0000000000000000000000000000000000000000
Binary files a/openstack/dns/v2/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/dns/v2/__pycache__/floating_ip.cpython-310.pyc b/openstack/dns/v2/__pycache__/floating_ip.cpython-310.pyc
deleted file mode 100644
index aff450ce3a8fc447e4559d8537f0ab3430c82908..0000000000000000000000000000000000000000
Binary files a/openstack/dns/v2/__pycache__/floating_ip.cpython-310.pyc and /dev/null differ
diff --git a/openstack/dns/v2/__pycache__/recordset.cpython-310.pyc b/openstack/dns/v2/__pycache__/recordset.cpython-310.pyc
deleted file mode 100644
index 594444ee349a43fb3cd9b48c142bcd65ba30e964..0000000000000000000000000000000000000000
Binary files a/openstack/dns/v2/__pycache__/recordset.cpython-310.pyc and /dev/null differ
diff --git a/openstack/dns/v2/__pycache__/zone.cpython-310.pyc b/openstack/dns/v2/__pycache__/zone.cpython-310.pyc
deleted file mode 100644
index 6419ed8efc9cc2de9572120d723b39ca8a687fad..0000000000000000000000000000000000000000
Binary files a/openstack/dns/v2/__pycache__/zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/dns/v2/__pycache__/zone_export.cpython-310.pyc b/openstack/dns/v2/__pycache__/zone_export.cpython-310.pyc
deleted file mode 100644
index e07b62c2a4fd4f58ffd63299c148c3143ec21cae..0000000000000000000000000000000000000000
Binary files a/openstack/dns/v2/__pycache__/zone_export.cpython-310.pyc and /dev/null differ
diff --git a/openstack/dns/v2/__pycache__/zone_import.cpython-310.pyc b/openstack/dns/v2/__pycache__/zone_import.cpython-310.pyc
deleted file mode 100644
index cc2b55471f08c2996c3137d8c30ff779a3dec6ef..0000000000000000000000000000000000000000
Binary files a/openstack/dns/v2/__pycache__/zone_import.cpython-310.pyc and /dev/null differ
diff --git a/openstack/dns/v2/__pycache__/zone_share.cpython-310.pyc b/openstack/dns/v2/__pycache__/zone_share.cpython-310.pyc
deleted file mode 100644
index d51f795b641fd6c94c4a1fb4ae01d15f123bbf63..0000000000000000000000000000000000000000
Binary files a/openstack/dns/v2/__pycache__/zone_share.cpython-310.pyc and /dev/null differ
diff --git a/openstack/dns/v2/__pycache__/zone_transfer.cpython-310.pyc b/openstack/dns/v2/__pycache__/zone_transfer.cpython-310.pyc
deleted file mode 100644
index 77ec9ed86c6bf424a856ebc22a92742d2c26e819..0000000000000000000000000000000000000000
Binary files a/openstack/dns/v2/__pycache__/zone_transfer.cpython-310.pyc and /dev/null differ
diff --git a/openstack/dns/v2/_base.py b/openstack/dns/v2/_base.py
index 791d9d537a39f99db4b4da573747faf31742c310..0cac1eac527e2acd16079265b1a29f1239346b97 100644
--- a/openstack/dns/v2/_base.py
+++ b/openstack/dns/v2/_base.py
@@ -9,6 +9,8 @@
 # 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 typing as ty
 import urllib.parse
 
 from openstack import exceptions
@@ -73,7 +75,7 @@ class Resource(resource.Resource):
     @classmethod
     def _get_next_link(cls, uri, response, data, marker, limit, total_yielded):
         next_link = None
-        params = {}
+        params: ty.Dict[str, ty.Union[ty.List[str], str]] = {}
         if isinstance(data, dict):
             links = data.get('links')
             if links:
diff --git a/openstack/dns/v2/zone_share.py b/openstack/dns/v2/zone_share.py
index b778b16207621ba3a814da6e74e42fac172d3a70..af889d3559facd6e6ca9fd2727dca892f84257d3 100644
--- a/openstack/dns/v2/zone_share.py
+++ b/openstack/dns/v2/zone_share.py
@@ -29,17 +29,16 @@ class ZoneShare(_base.Resource):
     _query_mapping = resource.QueryParameters('target_project_id')
 
     # Properties
+    #: The ID of the zone being shared.
+    zone_id = resource.URI('zone_id')
     #: Timestamp when the share was created.
     created_at = resource.Body('created_at')
     #: Timestamp when the member was last updated.
     updated_at = resource.Body('updated_at')
+    # FIXME(stephenfin): This conflicts since there is a zone ID in the URI
     #: The zone ID of the zone being shared.
-    zone_id = resource.Body('zone_id')
+    # zone_id = resource.Body('zone_id')
     #: The project ID that owns the share.
     project_id = resource.Body('project_id')
     #: The target project ID that the zone is shared with.
     target_project_id = resource.Body('target_project_id')
-
-    # URI Properties
-    #: The ID of the zone being shared.
-    zone_id = resource.URI('zone_id')
diff --git a/openstack/exceptions.py b/openstack/exceptions.py
index 747827ffa767bbee9eff71a28f22583baf441ae6..53dc0a6a3afac05619e8c938e9e5302882347d50 100644
--- a/openstack/exceptions.py
+++ b/openstack/exceptions.py
@@ -32,9 +32,6 @@ class SDKException(Exception):
         super(SDKException, self).__init__(self.message)
 
 
-OpenStackCloudException = SDKException
-
-
 class EndpointNotFound(SDKException):
     """A mismatch occurred between what the client and server expect."""
 
@@ -274,3 +271,7 @@ class ServiceDisabledException(ConfigException):
 
 class ServiceDiscoveryException(SDKException):
     """The service cannot be discovered."""
+
+
+# Backwards compatibility
+OpenStackCloudException = SDKException
diff --git a/openstack/fixture/__pycache__/__init__.cpython-310.pyc b/openstack/fixture/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index d2d61c6de774e868bc36cab59ba91e0ffbd0a5eb..0000000000000000000000000000000000000000
Binary files a/openstack/fixture/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/fixture/__pycache__/connection.cpython-310.pyc b/openstack/fixture/__pycache__/connection.cpython-310.pyc
deleted file mode 100644
index a42aee994815d4382aac0e829faa90c17f85fbd3..0000000000000000000000000000000000000000
Binary files a/openstack/fixture/__pycache__/connection.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/__pycache__/__init__.cpython-310.pyc b/openstack/identity/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 881ee077d8d65237e183e54eff7089d250f569e1..0000000000000000000000000000000000000000
Binary files a/openstack/identity/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/__pycache__/identity_service.cpython-310.pyc b/openstack/identity/__pycache__/identity_service.cpython-310.pyc
deleted file mode 100644
index 5d6c9cafce7866254157166637d5558c42bf66fa..0000000000000000000000000000000000000000
Binary files a/openstack/identity/__pycache__/identity_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/__pycache__/version.cpython-310.pyc b/openstack/identity/__pycache__/version.cpython-310.pyc
deleted file mode 100644
index 05347c0dc4fb78a38e2105a6baae1bd7979ccc2e..0000000000000000000000000000000000000000
Binary files a/openstack/identity/__pycache__/version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v2/__pycache__/__init__.cpython-310.pyc b/openstack/identity/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 3f2c7785c1d95cd79619bcb6a20ea24dc5746952..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/identity/v2/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 2a7156b30e717dedf9c6152ebad63d5afb30b077..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v2/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v2/__pycache__/extension.cpython-310.pyc b/openstack/identity/v2/__pycache__/extension.cpython-310.pyc
deleted file mode 100644
index 3a8ddfb946d91d07e84056205968196757b002bc..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v2/__pycache__/extension.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v2/__pycache__/role.cpython-310.pyc b/openstack/identity/v2/__pycache__/role.cpython-310.pyc
deleted file mode 100644
index f9c570f0191ddafed1f972598623d2fb53111945..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v2/__pycache__/role.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v2/__pycache__/tenant.cpython-310.pyc b/openstack/identity/v2/__pycache__/tenant.cpython-310.pyc
deleted file mode 100644
index fb04e6aae014c2749a86e83ebd0cc58f1d7be659..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v2/__pycache__/tenant.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v2/__pycache__/user.cpython-310.pyc b/openstack/identity/v2/__pycache__/user.cpython-310.pyc
deleted file mode 100644
index cafc54c34c66acc881868d249355fdec41c98546..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v2/__pycache__/user.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/__init__.cpython-310.pyc b/openstack/identity/v3/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 505b71666d00d6398adb42121e91827185d226cd..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/_proxy.cpython-310.pyc b/openstack/identity/v3/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index d1ab179090dec562f561e51d7c153b2abd735413..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/application_credential.cpython-310.pyc b/openstack/identity/v3/__pycache__/application_credential.cpython-310.pyc
deleted file mode 100644
index 65bbe2902a6fbba57463589f086fabc6e4692b9b..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/application_credential.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/credential.cpython-310.pyc b/openstack/identity/v3/__pycache__/credential.cpython-310.pyc
deleted file mode 100644
index 8b32db322d48e8442dfd7ae5a170c95ae1e1a9f0..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/credential.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/domain.cpython-310.pyc b/openstack/identity/v3/__pycache__/domain.cpython-310.pyc
deleted file mode 100644
index fbd6d4b5f61f64d86bd7c503ef7b1bf0a354fac9..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/domain.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/domain_config.cpython-310.pyc b/openstack/identity/v3/__pycache__/domain_config.cpython-310.pyc
deleted file mode 100644
index b10fd26bbc89fba0201b01bd36e6c2be5bc17733..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/domain_config.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/endpoint.cpython-310.pyc b/openstack/identity/v3/__pycache__/endpoint.cpython-310.pyc
deleted file mode 100644
index 69254302a751c1fea7d9d6d78781b4c0e8d32a67..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/endpoint.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/federation_protocol.cpython-310.pyc b/openstack/identity/v3/__pycache__/federation_protocol.cpython-310.pyc
deleted file mode 100644
index 2b88b240398e89f0fdd083ddb0ffcfdb6f4ffa4b..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/federation_protocol.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/group.cpython-310.pyc b/openstack/identity/v3/__pycache__/group.cpython-310.pyc
deleted file mode 100644
index b76c64235a9e873c754be835039d35aef65ddc13..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/identity_provider.cpython-310.pyc b/openstack/identity/v3/__pycache__/identity_provider.cpython-310.pyc
deleted file mode 100644
index 5ef1b29b67c1b6d616676cb691fa89090d800031..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/identity_provider.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/limit.cpython-310.pyc b/openstack/identity/v3/__pycache__/limit.cpython-310.pyc
deleted file mode 100644
index 620481e33da2fbc1fa8eec18633fb32683f0550f..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/limit.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/mapping.cpython-310.pyc b/openstack/identity/v3/__pycache__/mapping.cpython-310.pyc
deleted file mode 100644
index a4a1107f9974e7b30db5a7618379e4393685fd46..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/mapping.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/policy.cpython-310.pyc b/openstack/identity/v3/__pycache__/policy.cpython-310.pyc
deleted file mode 100644
index e9e3ff64c20ec6d9c817dc9ef46a03194a2b86d6..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/project.cpython-310.pyc b/openstack/identity/v3/__pycache__/project.cpython-310.pyc
deleted file mode 100644
index ce055c53b7b0b9f20ecd00c9ef4702415c1eff54..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/project.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/region.cpython-310.pyc b/openstack/identity/v3/__pycache__/region.cpython-310.pyc
deleted file mode 100644
index 8d69042fd01c48e761cd723f807e3fb5c9b808be..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/region.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/registered_limit.cpython-310.pyc b/openstack/identity/v3/__pycache__/registered_limit.cpython-310.pyc
deleted file mode 100644
index 8c59ca898fceef83567d03fc0468b7430825a72c..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/registered_limit.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/role.cpython-310.pyc b/openstack/identity/v3/__pycache__/role.cpython-310.pyc
deleted file mode 100644
index 1cecf7fbecaea3ffd5ad7d4b85300a0a3aa26696..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/role.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/role_assignment.cpython-310.pyc b/openstack/identity/v3/__pycache__/role_assignment.cpython-310.pyc
deleted file mode 100644
index 84b8862975c2cfbe42f600434b6cb2e2a417e91a..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/role_assignment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/role_domain_group_assignment.cpython-310.pyc b/openstack/identity/v3/__pycache__/role_domain_group_assignment.cpython-310.pyc
deleted file mode 100644
index 721babd2a57f67aabc40d316caf332d09a005baa..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/role_domain_group_assignment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/role_domain_user_assignment.cpython-310.pyc b/openstack/identity/v3/__pycache__/role_domain_user_assignment.cpython-310.pyc
deleted file mode 100644
index 69338c69f11cfe1ca86e31030340cf4e1c93bf68..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/role_domain_user_assignment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/role_project_group_assignment.cpython-310.pyc b/openstack/identity/v3/__pycache__/role_project_group_assignment.cpython-310.pyc
deleted file mode 100644
index c84ebd46f186a085319e33a4e19ea4bd77ed817d..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/role_project_group_assignment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/role_project_user_assignment.cpython-310.pyc b/openstack/identity/v3/__pycache__/role_project_user_assignment.cpython-310.pyc
deleted file mode 100644
index f5e2b6fa849ee120532f4a6019b9eedbe4fb9a7f..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/role_project_user_assignment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/role_system_group_assignment.cpython-310.pyc b/openstack/identity/v3/__pycache__/role_system_group_assignment.cpython-310.pyc
deleted file mode 100644
index 046988039f32313d5586b15ad3ede96c36ca054d..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/role_system_group_assignment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/role_system_user_assignment.cpython-310.pyc b/openstack/identity/v3/__pycache__/role_system_user_assignment.cpython-310.pyc
deleted file mode 100644
index 17227057c03f188d1261cc54638326c273544236..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/role_system_user_assignment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/service.cpython-310.pyc b/openstack/identity/v3/__pycache__/service.cpython-310.pyc
deleted file mode 100644
index d03c5165811cf06c3effc0cdaf43332e367a2f28..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/system.cpython-310.pyc b/openstack/identity/v3/__pycache__/system.cpython-310.pyc
deleted file mode 100644
index d84e6f27c98b4d8533fb7003f4c8359ae4bb996a..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/system.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/trust.cpython-310.pyc b/openstack/identity/v3/__pycache__/trust.cpython-310.pyc
deleted file mode 100644
index 347d784e915f3d844d4c4455369ba315375b9c99..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/trust.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/__pycache__/user.cpython-310.pyc b/openstack/identity/v3/__pycache__/user.cpython-310.pyc
deleted file mode 100644
index ee0776a79bdef9bc9b370b3b7789f7aca373f6e6..0000000000000000000000000000000000000000
Binary files a/openstack/identity/v3/__pycache__/user.cpython-310.pyc and /dev/null differ
diff --git a/openstack/identity/v3/_proxy.py b/openstack/identity/v3/_proxy.py
index 902e1b3e56ea9332811772197df521b70a809af1..316dfe2664751d191328924cafb0c8fdfd8fb679 100644
--- a/openstack/identity/v3/_proxy.py
+++ b/openstack/identity/v3/_proxy.py
@@ -1169,52 +1169,52 @@ class Proxy(proxy.Proxy):
             )
 
         if domain:
-            domain = self._get_resource(_domain.Domain, domain)
+            domain_id = resource.Resource._get_id(domain)
             if group:
-                group = self._get_resource(_group.Group, group)
+                group_id = resource.Resource._get_id(group)
                 return self._list(
                     _role_domain_group_assignment.RoleDomainGroupAssignment,
-                    domain_id=domain.id,
-                    group_id=group.id,
+                    domain_id=domain_id,
+                    group_id=group_id,
                 )
             else:
-                user = self._get_resource(_user.User, user)
+                user_id = resource.Resource._get_id(user)
                 return self._list(
                     _role_domain_user_assignment.RoleDomainUserAssignment,
-                    domain_id=domain.id,
-                    user_id=user.id,
+                    domain_id=domain_id,
+                    user_id=user_id,
                 )
         elif project:
-            project = self._get_resource(_project.Project, project)
+            project_id = resource.Resource._get_id(project)
             if group:
-                group = self._get_resource(_group.Group, group)
+                group_id = resource.Resource._get_id(group)
                 return self._list(
                     _role_project_group_assignment.RoleProjectGroupAssignment,
-                    project_id=project.id,
-                    group_id=group.id,
+                    project_id=project_id,
+                    group_id=group_id,
                 )
             else:
-                user = self._get_resource(_user.User, user)
+                user_id = resource.Resource._get_id(user)
                 return self._list(
                     _role_project_user_assignment.RoleProjectUserAssignment,
-                    project_id=project.id,
-                    user_id=user.id,
+                    project_id=project_id,
+                    user_id=user_id,
                 )
         else:
-            system = self._get_resource(_project.System, system)
+            system_id = resource.Resource._get_id(system)
             if group:
-                group = self._get_resource(_group.Group, group)
+                group_id = resource.Resource._get_id(group)
                 return self._list(
                     _role_system_group_assignment.RoleSystemGroupAssignment,
-                    system_id=system.id,
-                    group_id=group.id,
+                    system_id=system_id,
+                    group_id=group_id,
                 )
             else:
-                user = self._get_resource(_user.User, user)
+                user_id = resource.Resource._get_id(user)
                 return self._list(
                     _role_system_user_assignment.RoleSystemUserAssignment,
-                    system_id=system.id,
-                    user_id=user.id,
+                    system_id=system_id,
+                    user_id=user_id,
                 )
 
     def role_assignments(self, **query):
diff --git a/openstack/image/__pycache__/__init__.cpython-310.pyc b/openstack/image/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 3bccb9a4be08f0569117fc673e0dda6dbd8ea65a..0000000000000000000000000000000000000000
Binary files a/openstack/image/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/__pycache__/_download.cpython-310.pyc b/openstack/image/__pycache__/_download.cpython-310.pyc
deleted file mode 100644
index 8192777a706688162fe486eeba1199d6322ae529..0000000000000000000000000000000000000000
Binary files a/openstack/image/__pycache__/_download.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/__pycache__/image_service.cpython-310.pyc b/openstack/image/__pycache__/image_service.cpython-310.pyc
deleted file mode 100644
index b15eb09175b3ebecf695774e430db7c45806e4c1..0000000000000000000000000000000000000000
Binary files a/openstack/image/__pycache__/image_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/__pycache__/image_signer.cpython-310.pyc b/openstack/image/__pycache__/image_signer.cpython-310.pyc
deleted file mode 100644
index b41a044b35a6dd966d1592406512d4c9ddbf2268..0000000000000000000000000000000000000000
Binary files a/openstack/image/__pycache__/image_signer.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/__pycache__/iterable_chunked_file.cpython-310.pyc b/openstack/image/__pycache__/iterable_chunked_file.cpython-310.pyc
deleted file mode 100644
index 2337136ef20b7935bc64ff49eb61cc592ecc5e7f..0000000000000000000000000000000000000000
Binary files a/openstack/image/__pycache__/iterable_chunked_file.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/_download.py b/openstack/image/_download.py
index efcecf73cf60a9638f4d100bc3d4bd994957dc5e..e15b8f2adedd0c9aeb252fd6d9d023719a3ce8d4 100644
--- a/openstack/image/_download.py
+++ b/openstack/image/_download.py
@@ -9,9 +9,11 @@
 # 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 io
 
 from openstack import exceptions
+from openstack import resource
 from openstack import utils
 
 
@@ -25,8 +27,29 @@ def _verify_checksum(md5, checksum):
 
 
 class DownloadMixin:
+    id: resource.Body
+    base_path: str
+
+    def fetch(
+        self,
+        session,
+        requires_id=True,
+        base_path=None,
+        error_message=None,
+        skip_cache=False,
+        *,
+        resource_response_key=None,
+        microversion=None,
+        **params,
+    ):
+        ...
+
     def download(
-        self, session, stream=False, output=None, chunk_size=1024 * 1024
+        self,
+        session,
+        stream=False,
+        output=None,
+        chunk_size=1024 * 1024,
     ):
         """Download the data contained in an image"""
         # TODO(briancurtin): This method should probably offload the get
diff --git a/openstack/image/image_signer.py b/openstack/image/image_signer.py
index 4c88e4c3a9b76ae7debf4eaac120dfcf369598a1..13f2765c3788b599bd77110497a95c729210688a 100644
--- a/openstack/image/image_signer.py
+++ b/openstack/image/image_signer.py
@@ -9,7 +9,6 @@
 #   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 cryptography.hazmat.backends import default_backend
 from cryptography.hazmat.primitives.asymmetric import padding
@@ -17,6 +16,7 @@ from cryptography.hazmat.primitives.asymmetric import utils
 from cryptography.hazmat.primitives import hashes
 from cryptography.hazmat.primitives import serialization
 
+from openstack import exceptions
 from openstack.image.iterable_chunked_file import IterableChunkedFile
 
 HASH_METHODS = {
@@ -56,6 +56,9 @@ class ImageSigner:
             )
 
     def generate_signature(self, file_obj):
+        if not self.private_key:
+            raise exceptions.SDKException("private_key not set")
+
         file_obj.seek(0)
         chunked_file = IterableChunkedFile(file_obj)
         for chunk in chunked_file:
diff --git a/openstack/image/v1/__pycache__/__init__.cpython-310.pyc b/openstack/image/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 7d78f8dbda49ae3d6e9b87fc95988c13b0676ac5..0000000000000000000000000000000000000000
Binary files a/openstack/image/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/image/v1/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 748fef5b9a8d925e78054901f18b5f0aac30b92f..0000000000000000000000000000000000000000
Binary files a/openstack/image/v1/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v1/__pycache__/image.cpython-310.pyc b/openstack/image/v1/__pycache__/image.cpython-310.pyc
deleted file mode 100644
index 5649f40623127628a4c43d30f7a3bacdbca87fa5..0000000000000000000000000000000000000000
Binary files a/openstack/image/v1/__pycache__/image.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v1/_proxy.py b/openstack/image/v1/_proxy.py
index 21cf626ebd89aa38a1187ef6a4741dc51a10afac..b32e7a2fdeee8b77030300d1b21330acfef3445e 100644
--- a/openstack/image/v1/_proxy.py
+++ b/openstack/image/v1/_proxy.py
@@ -13,8 +13,7 @@
 import os
 import warnings
 
-from openstack.cloud import exc
-from openstack import exceptions
+from openstack import exceptions as exc
 from openstack.image.v1 import image as _image
 from openstack import proxy
 from openstack import utils
@@ -128,7 +127,7 @@ class Proxy(proxy.Proxy):
             or 'all_stores' in kwargs
             or 'all_stores_must_succeed' in kwargs
         ):
-            raise exceptions.InvalidRequest(
+            raise exc.InvalidRequest(
                 "Glance v1 does not support stores or image import"
             )
 
@@ -151,7 +150,7 @@ class Proxy(proxy.Proxy):
             container_format = 'bare'
 
         if data and filename:
-            raise exceptions.SDKException(
+            raise exc.SDKException(
                 'Passing filename and data simultaneously is not supported'
             )
 
@@ -163,7 +162,7 @@ class Proxy(proxy.Proxy):
             )
 
         if validate_checksum and data and not isinstance(data, bytes):
-            raise exceptions.SDKException(
+            raise exc.SDKException(
                 'Validating checksum is not possible when data is not a '
                 'direct binary object'
             )
@@ -301,11 +300,11 @@ class Proxy(proxy.Proxy):
                     data=image_data,
                 ),
             )
-        except exc.OpenStackCloudHTTPError:
+        except exc.HttpException:
             self.log.debug("Deleting failed upload of image %s", name)
             try:
                 self.delete('/images/{id}'.format(id=image.id))
-            except exc.OpenStackCloudHTTPError:
+            except exc.HttpException:
                 # We're just trying to clean up - if it doesn't work - shrug
                 self.log.warning(
                     "Failed deleting image after we failed uploading it.",
diff --git a/openstack/image/v2/__pycache__/__init__.cpython-310.pyc b/openstack/image/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index a200e24cf84ec098f1a7b32b17ca3d6260c7add5..0000000000000000000000000000000000000000
Binary files a/openstack/image/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/image/v2/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index d7ff551ae45563fb79d1898e118cf51f29249037..0000000000000000000000000000000000000000
Binary files a/openstack/image/v2/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v2/__pycache__/cache.cpython-310.pyc b/openstack/image/v2/__pycache__/cache.cpython-310.pyc
deleted file mode 100644
index be6015e2161b75655f164f39c9bf25cd89918503..0000000000000000000000000000000000000000
Binary files a/openstack/image/v2/__pycache__/cache.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v2/__pycache__/image.cpython-310.pyc b/openstack/image/v2/__pycache__/image.cpython-310.pyc
deleted file mode 100644
index 5cfd1f4337602ce9c4fc4cc8b5c5f658305c6d6a..0000000000000000000000000000000000000000
Binary files a/openstack/image/v2/__pycache__/image.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v2/__pycache__/member.cpython-310.pyc b/openstack/image/v2/__pycache__/member.cpython-310.pyc
deleted file mode 100644
index 20c46700b7d1d2ce8f71051f681d8800e590aace..0000000000000000000000000000000000000000
Binary files a/openstack/image/v2/__pycache__/member.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v2/__pycache__/metadef_namespace.cpython-310.pyc b/openstack/image/v2/__pycache__/metadef_namespace.cpython-310.pyc
deleted file mode 100644
index 668cc376d8b584a0737f766f82d9d08e2bb5523c..0000000000000000000000000000000000000000
Binary files a/openstack/image/v2/__pycache__/metadef_namespace.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v2/__pycache__/metadef_object.cpython-310.pyc b/openstack/image/v2/__pycache__/metadef_object.cpython-310.pyc
deleted file mode 100644
index 5f57878c02a95ac5578abe0e40f746be62f2c5e7..0000000000000000000000000000000000000000
Binary files a/openstack/image/v2/__pycache__/metadef_object.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v2/__pycache__/metadef_property.cpython-310.pyc b/openstack/image/v2/__pycache__/metadef_property.cpython-310.pyc
deleted file mode 100644
index 05f4b7988f887c8b45897bddebba1a1d6184f839..0000000000000000000000000000000000000000
Binary files a/openstack/image/v2/__pycache__/metadef_property.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v2/__pycache__/metadef_resource_type.cpython-310.pyc b/openstack/image/v2/__pycache__/metadef_resource_type.cpython-310.pyc
deleted file mode 100644
index a7d1cf6c4722f90b44c7b2ed55d11652244e82c2..0000000000000000000000000000000000000000
Binary files a/openstack/image/v2/__pycache__/metadef_resource_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v2/__pycache__/metadef_schema.cpython-310.pyc b/openstack/image/v2/__pycache__/metadef_schema.cpython-310.pyc
deleted file mode 100644
index 2c79a161f4f613eaca36a48be776088473b6ac09..0000000000000000000000000000000000000000
Binary files a/openstack/image/v2/__pycache__/metadef_schema.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v2/__pycache__/schema.cpython-310.pyc b/openstack/image/v2/__pycache__/schema.cpython-310.pyc
deleted file mode 100644
index 2e53e2940fec8a66f5c15b070ce34bdf9bee64b4..0000000000000000000000000000000000000000
Binary files a/openstack/image/v2/__pycache__/schema.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v2/__pycache__/service_info.cpython-310.pyc b/openstack/image/v2/__pycache__/service_info.cpython-310.pyc
deleted file mode 100644
index b801f04e0cdb62fd400eee598952e4f78a729372..0000000000000000000000000000000000000000
Binary files a/openstack/image/v2/__pycache__/service_info.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v2/__pycache__/task.cpython-310.pyc b/openstack/image/v2/__pycache__/task.cpython-310.pyc
deleted file mode 100644
index 41a7eb1cf983ce652a5261db5063a6d93eadf090..0000000000000000000000000000000000000000
Binary files a/openstack/image/v2/__pycache__/task.cpython-310.pyc and /dev/null differ
diff --git a/openstack/image/v2/_proxy.py b/openstack/image/v2/_proxy.py
index 5e1ccdbd31ad7e89f2d4baf1483d256150e83444..77638663190338cb8828d78081f8b6eee91adb74 100644
--- a/openstack/image/v2/_proxy.py
+++ b/openstack/image/v2/_proxy.py
@@ -12,6 +12,7 @@
 
 import os
 import time
+import typing as ty
 import warnings
 
 from openstack import exceptions
@@ -602,7 +603,7 @@ class Proxy(proxy.Proxy):
             )
 
     def _make_v2_image_params(self, meta, properties):
-        ret = {}
+        ret: ty.Dict = {}
         for k, v in iter(properties.items()):
             if k in _INT_PROPERTIES:
                 ret[k] = int(v)
diff --git a/openstack/image/v2/image.py b/openstack/image/v2/image.py
index d4ed035ecb5286f369f5982d6e1dabb6b8222162..b42d05314437f029dd23e6b06e226f15a3f4244a 100644
--- a/openstack/image/v2/image.py
+++ b/openstack/image/v2/image.py
@@ -9,6 +9,9 @@
 # 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 typing as ty
+
 from openstack.common import tag
 from openstack import exceptions
 from openstack.image import _download
@@ -335,7 +338,7 @@ class Image(resource.Resource, tag.TagMixin, _download.DownloadMixin):
             stores = stores or []
 
         url = utils.urljoin(self.base_path, self.id, 'import')
-        data = {'method': {'name': method}}
+        data: ty.Dict[str, ty.Any] = {'method': {'name': method}}
 
         if uri:
             if method != 'web-download':
@@ -356,9 +359,8 @@ class Image(resource.Resource, tag.TagMixin, _download.DownloadMixin):
             data['all_stores'] = all_stores
         if all_stores_must_succeed is not None:
             data['all_stores_must_succeed'] = all_stores_must_succeed
-        for s in stores:
-            data.setdefault('stores', [])
-            data['stores'].append(s.id)
+        if stores:
+            data['stores'] = [s.id for s in stores]
 
         headers = {}
         # Backward compat
diff --git a/openstack/image/v2/metadef_property.py b/openstack/image/v2/metadef_property.py
index ae40ebd4b780f3b0b89e47267da490985a15d01e..0f31b023999025934f2c1509bd5df81a58b79a34 100644
--- a/openstack/image/v2/metadef_property.py
+++ b/openstack/image/v2/metadef_property.py
@@ -54,8 +54,10 @@ class MetadefProperty(resource.Resource):
     min_length = resource.Body('minLength', type=int, minimum=0, default=0)
     #: Maximum allowed string length.
     max_length = resource.Body('maxLength', type=int, minimum=0)
+    # FIXME(stephenfin): This is causing conflicts due to the 'dict.items'
+    # method. Perhaps we need to rename it?
     #: Schema for the items in an array.
-    items = resource.Body('items', type=dict)
+    items = resource.Body('items', type=dict)  # type: ignore
     #: Indicates whether all values in the array must be distinct.
     require_unique_items = resource.Body(
         'uniqueItems', type=bool, default=False
diff --git a/openstack/instance_ha/__pycache__/__init__.cpython-310.pyc b/openstack/instance_ha/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 0d4d15a9979fa7f3013d4165e0dc243b686170ec..0000000000000000000000000000000000000000
Binary files a/openstack/instance_ha/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/instance_ha/__pycache__/instance_ha_service.cpython-310.pyc b/openstack/instance_ha/__pycache__/instance_ha_service.cpython-310.pyc
deleted file mode 100644
index 2a0631e016c520e5511cd41ad1e523b9d0e463e4..0000000000000000000000000000000000000000
Binary files a/openstack/instance_ha/__pycache__/instance_ha_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/instance_ha/v1/__pycache__/__init__.cpython-310.pyc b/openstack/instance_ha/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index b093622b6099003543a3f16f83bd9601eb7c6b58..0000000000000000000000000000000000000000
Binary files a/openstack/instance_ha/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/instance_ha/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/instance_ha/v1/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 08ff48f2ec6a49acffacb6637c87ecacfc03e68f..0000000000000000000000000000000000000000
Binary files a/openstack/instance_ha/v1/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/instance_ha/v1/__pycache__/host.cpython-310.pyc b/openstack/instance_ha/v1/__pycache__/host.cpython-310.pyc
deleted file mode 100644
index 7a77bed6bbd65c2cf184e60e3f1b97fb4dcfd8ed..0000000000000000000000000000000000000000
Binary files a/openstack/instance_ha/v1/__pycache__/host.cpython-310.pyc and /dev/null differ
diff --git a/openstack/instance_ha/v1/__pycache__/notification.cpython-310.pyc b/openstack/instance_ha/v1/__pycache__/notification.cpython-310.pyc
deleted file mode 100644
index 23a49a80d9541550b637a8541a31da4ef72d09ad..0000000000000000000000000000000000000000
Binary files a/openstack/instance_ha/v1/__pycache__/notification.cpython-310.pyc and /dev/null differ
diff --git a/openstack/instance_ha/v1/__pycache__/segment.cpython-310.pyc b/openstack/instance_ha/v1/__pycache__/segment.cpython-310.pyc
deleted file mode 100644
index 7d74c609d3935db63fa05f92928635e2ef612f25..0000000000000000000000000000000000000000
Binary files a/openstack/instance_ha/v1/__pycache__/segment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/instance_ha/v1/__pycache__/vmove.cpython-310.pyc b/openstack/instance_ha/v1/__pycache__/vmove.cpython-310.pyc
deleted file mode 100644
index ad038ef42daca251fa72810623d73205851d1cf4..0000000000000000000000000000000000000000
Binary files a/openstack/instance_ha/v1/__pycache__/vmove.cpython-310.pyc and /dev/null differ
diff --git a/openstack/instance_ha/v1/host.py b/openstack/instance_ha/v1/host.py
index 29cc94f9a597b5642289bd6bd4c5d3c6956c26cf..ff356797aee025e71fa4b4cfd2b09efddfd37672 100644
--- a/openstack/instance_ha/v1/host.py
+++ b/openstack/instance_ha/v1/host.py
@@ -32,8 +32,6 @@ class Host(resource.Resource):
     allow_commit = True
     allow_delete = True
 
-    #: A ID of representing this host
-    id = resource.URI("id")
     #: A Uuid of representing this host
     uuid = resource.Body("uuid")
     #: A failover segment ID of this host(in URI)
diff --git a/openstack/key_manager/__pycache__/__init__.cpython-310.pyc b/openstack/key_manager/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index fc902002897768eb43b8211265553bed27f25061..0000000000000000000000000000000000000000
Binary files a/openstack/key_manager/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/key_manager/__pycache__/key_manager_service.cpython-310.pyc b/openstack/key_manager/__pycache__/key_manager_service.cpython-310.pyc
deleted file mode 100644
index e63393af93af041de38abdf3565a34c117d63acd..0000000000000000000000000000000000000000
Binary files a/openstack/key_manager/__pycache__/key_manager_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/key_manager/v1/__pycache__/__init__.cpython-310.pyc b/openstack/key_manager/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 4609082c3c600cdd9c59b98ede89c71721c310da..0000000000000000000000000000000000000000
Binary files a/openstack/key_manager/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/key_manager/v1/__pycache__/_format.cpython-310.pyc b/openstack/key_manager/v1/__pycache__/_format.cpython-310.pyc
deleted file mode 100644
index 528ecc483d487f8a159a4cdb3284ed65de4ebf22..0000000000000000000000000000000000000000
Binary files a/openstack/key_manager/v1/__pycache__/_format.cpython-310.pyc and /dev/null differ
diff --git a/openstack/key_manager/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/key_manager/v1/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 0559077bea8b13e1f9eb7807c78f582f2f4c2276..0000000000000000000000000000000000000000
Binary files a/openstack/key_manager/v1/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/key_manager/v1/__pycache__/container.cpython-310.pyc b/openstack/key_manager/v1/__pycache__/container.cpython-310.pyc
deleted file mode 100644
index 52463327425d34bbee4a6792e7ffd3a2fdd6dff3..0000000000000000000000000000000000000000
Binary files a/openstack/key_manager/v1/__pycache__/container.cpython-310.pyc and /dev/null differ
diff --git a/openstack/key_manager/v1/__pycache__/order.cpython-310.pyc b/openstack/key_manager/v1/__pycache__/order.cpython-310.pyc
deleted file mode 100644
index d41a5b01c73ef741b824cd71adc866eeaaf97700..0000000000000000000000000000000000000000
Binary files a/openstack/key_manager/v1/__pycache__/order.cpython-310.pyc and /dev/null differ
diff --git a/openstack/key_manager/v1/__pycache__/secret.cpython-310.pyc b/openstack/key_manager/v1/__pycache__/secret.cpython-310.pyc
deleted file mode 100644
index 5f3aa23ba72e74b156b25b86919c02687f5f8aac..0000000000000000000000000000000000000000
Binary files a/openstack/key_manager/v1/__pycache__/secret.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/__pycache__/__init__.cpython-310.pyc b/openstack/load_balancer/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index e2929c0f0a15e1175ed43cb7e02a9d28e23bceb8..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/__pycache__/load_balancer_service.cpython-310.pyc b/openstack/load_balancer/__pycache__/load_balancer_service.cpython-310.pyc
deleted file mode 100644
index 963f017825d650ed2b1ddf319f8a04ca6affee1b..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/__pycache__/load_balancer_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/__pycache__/version.cpython-310.pyc b/openstack/load_balancer/__pycache__/version.cpython-310.pyc
deleted file mode 100644
index 10ca650d10e7ad402ed1e1f408517ca40f11110e..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/__pycache__/version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/__init__.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index e3ee5e5628d8f9c73003014cfb1c9575eaf9d743..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 3e3f11d498206a205a0603736fb34f4336e62df7..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/amphora.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/amphora.cpython-310.pyc
deleted file mode 100644
index b1af094f5c1f1b7b0c6acec3c8de104e57fb6318..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/amphora.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/availability_zone.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/availability_zone.cpython-310.pyc
deleted file mode 100644
index 276e3015e684d820c3af247a9b310ea16b616099..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/availability_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/availability_zone_profile.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/availability_zone_profile.cpython-310.pyc
deleted file mode 100644
index 65336bd39d480708211bf54e0a07cd837add320a..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/availability_zone_profile.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/flavor.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/flavor.cpython-310.pyc
deleted file mode 100644
index 95518928bc3307e280e671bcfe44940699d8cde2..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/flavor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/flavor_profile.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/flavor_profile.cpython-310.pyc
deleted file mode 100644
index 9022b46c31acad9a517c4a1cb03c00b6db1758d1..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/flavor_profile.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/health_monitor.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/health_monitor.cpython-310.pyc
deleted file mode 100644
index 51a4f3e6a1e8408f004c48e1376912fc685a3ece..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/health_monitor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/l7_policy.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/l7_policy.cpython-310.pyc
deleted file mode 100644
index 0f4a3bf011fa91576377801d9bb90c756cc07320..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/l7_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/l7_rule.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/l7_rule.cpython-310.pyc
deleted file mode 100644
index d288aa73a1fff35554327a8d2a86b32af068045f..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/l7_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/listener.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/listener.cpython-310.pyc
deleted file mode 100644
index 0371933105a0495f2894c11f7ec8fbebe4fdb171..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/listener.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/load_balancer.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/load_balancer.cpython-310.pyc
deleted file mode 100644
index c38c3cf7a041f6831ae120b1637f62d405bd6ad3..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/load_balancer.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/member.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/member.cpython-310.pyc
deleted file mode 100644
index 2a915b949c2292be24044c49194143739d43fcdd..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/member.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/pool.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/pool.cpython-310.pyc
deleted file mode 100644
index 5ef007db98309c170ce0a9e979c074662b3e895a..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/pool.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/provider.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/provider.cpython-310.pyc
deleted file mode 100644
index fc2f89d21035935e8b8a5a3163afddf0b2246af5..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/provider.cpython-310.pyc and /dev/null differ
diff --git a/openstack/load_balancer/v2/__pycache__/quota.cpython-310.pyc b/openstack/load_balancer/v2/__pycache__/quota.cpython-310.pyc
deleted file mode 100644
index 3119d1ba6405c12f04fe3200fafa0d482a56c571..0000000000000000000000000000000000000000
Binary files a/openstack/load_balancer/v2/__pycache__/quota.cpython-310.pyc and /dev/null differ
diff --git a/openstack/message/__pycache__/__init__.cpython-310.pyc b/openstack/message/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index b65e2a5d3bb5e7c58374a4e6b383021406ebd79f..0000000000000000000000000000000000000000
Binary files a/openstack/message/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/message/__pycache__/message_service.cpython-310.pyc b/openstack/message/__pycache__/message_service.cpython-310.pyc
deleted file mode 100644
index decf8b58593d48a08ea0483ec9fbe7801abb25ae..0000000000000000000000000000000000000000
Binary files a/openstack/message/__pycache__/message_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/message/__pycache__/version.cpython-310.pyc b/openstack/message/__pycache__/version.cpython-310.pyc
deleted file mode 100644
index 3d0805d12874c05ad889a16c55349b76cefec8e0..0000000000000000000000000000000000000000
Binary files a/openstack/message/__pycache__/version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/message/v2/__pycache__/__init__.cpython-310.pyc b/openstack/message/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index f53365aaf6e44529ab07d1aeb054a6030b5260ec..0000000000000000000000000000000000000000
Binary files a/openstack/message/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/message/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/message/v2/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 304f9d89c2e125aa05d27938d3c169a1934b850f..0000000000000000000000000000000000000000
Binary files a/openstack/message/v2/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/message/v2/__pycache__/claim.cpython-310.pyc b/openstack/message/v2/__pycache__/claim.cpython-310.pyc
deleted file mode 100644
index 2401487908a22b56ce5b1cf4dd13bbd2808b9e65..0000000000000000000000000000000000000000
Binary files a/openstack/message/v2/__pycache__/claim.cpython-310.pyc and /dev/null differ
diff --git a/openstack/message/v2/__pycache__/message.cpython-310.pyc b/openstack/message/v2/__pycache__/message.cpython-310.pyc
deleted file mode 100644
index 5fff33aa221a8032207ec9113a1d248d529ae2f0..0000000000000000000000000000000000000000
Binary files a/openstack/message/v2/__pycache__/message.cpython-310.pyc and /dev/null differ
diff --git a/openstack/message/v2/__pycache__/queue.cpython-310.pyc b/openstack/message/v2/__pycache__/queue.cpython-310.pyc
deleted file mode 100644
index a58fa25dd5f0ac28c6bf64e7ead773d21406a455..0000000000000000000000000000000000000000
Binary files a/openstack/message/v2/__pycache__/queue.cpython-310.pyc and /dev/null differ
diff --git a/openstack/message/v2/__pycache__/subscription.cpython-310.pyc b/openstack/message/v2/__pycache__/subscription.cpython-310.pyc
deleted file mode 100644
index 718e4cbbf38d76decde0f8851d3d8952086e72e0..0000000000000000000000000000000000000000
Binary files a/openstack/message/v2/__pycache__/subscription.cpython-310.pyc and /dev/null differ
diff --git a/openstack/message/v2/message.py b/openstack/message/v2/message.py
index 40db3a5e91aab87b92a3eaf08823a8c26992e5a0..da36c58b0a45aa8987d2f3ec5a4113287c9d6cd3 100644
--- a/openstack/message/v2/message.py
+++ b/openstack/message/v2/message.py
@@ -10,6 +10,7 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
+import typing as ty
 import uuid
 
 from openstack import resource
@@ -53,6 +54,10 @@ class Message(resource.Resource):
     #: in case keystone auth is not enabled in Zaqar service.
     project_id = resource.Header("X-PROJECT-ID")
 
+    # FIXME(stephenfin): This is actually a query arg but we need it for
+    # deletions and resource.delete doesn't respect these currently
+    claim_id: ty.Optional[str] = None
+
     def post(self, session, messages):
         request = self._prepare_request(requires_id=False, prepend_key=True)
         headers = {
diff --git a/openstack/network/__pycache__/__init__.cpython-310.pyc b/openstack/network/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index aa1f4562c3cf75bb475571a710bfb79e1ec4c3a6..0000000000000000000000000000000000000000
Binary files a/openstack/network/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/__pycache__/network_service.cpython-310.pyc b/openstack/network/__pycache__/network_service.cpython-310.pyc
deleted file mode 100644
index 0a9caaf36429067597e51753ac60e68eb7950605..0000000000000000000000000000000000000000
Binary files a/openstack/network/__pycache__/network_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/__pycache__/version.cpython-310.pyc b/openstack/network/__pycache__/version.cpython-310.pyc
deleted file mode 100644
index f0d53d22606fffd7bdb1089f3f2800bd1dad8f1b..0000000000000000000000000000000000000000
Binary files a/openstack/network/__pycache__/version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/__init__.cpython-310.pyc b/openstack/network/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 975c8f96c6aee63498ca08ffc8f518e8cf22ca82..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/_base.cpython-310.pyc b/openstack/network/v2/__pycache__/_base.cpython-310.pyc
deleted file mode 100644
index 71545210bfa9f917744a978f3e0b4d57efd4164e..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/_base.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/network/v2/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 2c869dfd05b50eca6d5511556ec56bc7614a5061..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/address_group.cpython-310.pyc b/openstack/network/v2/__pycache__/address_group.cpython-310.pyc
deleted file mode 100644
index 03f995af385cfab3ac5a61d8bd037bd082d8ddf0..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/address_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/address_scope.cpython-310.pyc b/openstack/network/v2/__pycache__/address_scope.cpython-310.pyc
deleted file mode 100644
index 2535b4acc607757e7fea3b5b852fee8e309e93f7..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/address_scope.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/agent.cpython-310.pyc b/openstack/network/v2/__pycache__/agent.cpython-310.pyc
deleted file mode 100644
index d9a78b78e2023bd3c9e621d37f8104949b4d0ab9..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/agent.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/auto_allocated_topology.cpython-310.pyc b/openstack/network/v2/__pycache__/auto_allocated_topology.cpython-310.pyc
deleted file mode 100644
index 31564c14489a462ecd946b63f44c974774e17107..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/auto_allocated_topology.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/availability_zone.cpython-310.pyc b/openstack/network/v2/__pycache__/availability_zone.cpython-310.pyc
deleted file mode 100644
index e8624411b7a6772915281e3fcc0a98e7a7ff6dda..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/availability_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/bgp_peer.cpython-310.pyc b/openstack/network/v2/__pycache__/bgp_peer.cpython-310.pyc
deleted file mode 100644
index 9aba7100cf07f7c8e2dce721da0d727b6c0aef0c..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/bgp_peer.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/bgp_speaker.cpython-310.pyc b/openstack/network/v2/__pycache__/bgp_speaker.cpython-310.pyc
deleted file mode 100644
index ba62cfc3d049e4bf9a51a63838e1d70807860e47..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/bgp_speaker.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/bgpvpn.cpython-310.pyc b/openstack/network/v2/__pycache__/bgpvpn.cpython-310.pyc
deleted file mode 100644
index b2ce635e87e0e5a63f4cb5f90ec3ae89e77460e5..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/bgpvpn.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/bgpvpn_network_association.cpython-310.pyc b/openstack/network/v2/__pycache__/bgpvpn_network_association.cpython-310.pyc
deleted file mode 100644
index 82de3b9b3455990295609aa6979fe045c3868def..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/bgpvpn_network_association.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/bgpvpn_port_association.cpython-310.pyc b/openstack/network/v2/__pycache__/bgpvpn_port_association.cpython-310.pyc
deleted file mode 100644
index 974ce5d82a0f936c80e4e6c8a0c0e41fbc2d2fc1..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/bgpvpn_port_association.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/bgpvpn_router_association.cpython-310.pyc b/openstack/network/v2/__pycache__/bgpvpn_router_association.cpython-310.pyc
deleted file mode 100644
index 0686aa1fbd6ac990cd1587c86b28fbadbd06e010..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/bgpvpn_router_association.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/default_security_group_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/default_security_group_rule.cpython-310.pyc
deleted file mode 100644
index 7d527529608be1a40adfccb4a57a2f6ccc8558c6..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/default_security_group_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/extension.cpython-310.pyc b/openstack/network/v2/__pycache__/extension.cpython-310.pyc
deleted file mode 100644
index 5484a022d8811ab85fa42d1f4bce9cae38bc9d98..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/extension.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/firewall_group.cpython-310.pyc b/openstack/network/v2/__pycache__/firewall_group.cpython-310.pyc
deleted file mode 100644
index 72688bc8418a984346027533b2573ac54399d91c..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/firewall_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/firewall_policy.cpython-310.pyc b/openstack/network/v2/__pycache__/firewall_policy.cpython-310.pyc
deleted file mode 100644
index f642c69c9050d15c3d8dd9c76b5aef0f45f585a6..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/firewall_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/firewall_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/firewall_rule.cpython-310.pyc
deleted file mode 100644
index 75af10337bbe70550d58d2c5a3aeea57991436b8..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/firewall_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/flavor.cpython-310.pyc b/openstack/network/v2/__pycache__/flavor.cpython-310.pyc
deleted file mode 100644
index 826b2666a1bced7c8aab060b6e5c9e5eb09cbbd2..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/flavor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/floating_ip.cpython-310.pyc b/openstack/network/v2/__pycache__/floating_ip.cpython-310.pyc
deleted file mode 100644
index 8622a9bae6a063da5025e28bcdf98dc04859b342..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/floating_ip.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/health_monitor.cpython-310.pyc b/openstack/network/v2/__pycache__/health_monitor.cpython-310.pyc
deleted file mode 100644
index 0def93f17d256ffd5cf49367585085877b228b88..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/health_monitor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/l3_conntrack_helper.cpython-310.pyc b/openstack/network/v2/__pycache__/l3_conntrack_helper.cpython-310.pyc
deleted file mode 100644
index c7cd8a35f815943f09f33c984c9646ff99a36ddf..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/l3_conntrack_helper.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/listener.cpython-310.pyc b/openstack/network/v2/__pycache__/listener.cpython-310.pyc
deleted file mode 100644
index eaf85a129d7838f1e7da8873df7f81b580309740..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/listener.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/load_balancer.cpython-310.pyc b/openstack/network/v2/__pycache__/load_balancer.cpython-310.pyc
deleted file mode 100644
index 77a565b3d1bf14b9193b63439bdab1e7e778116c..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/load_balancer.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/local_ip.cpython-310.pyc b/openstack/network/v2/__pycache__/local_ip.cpython-310.pyc
deleted file mode 100644
index be73f3b2c24b9c9b063fe7b5eff680f3a3062679..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/local_ip.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/local_ip_association.cpython-310.pyc b/openstack/network/v2/__pycache__/local_ip_association.cpython-310.pyc
deleted file mode 100644
index 897ea15a4b377cdc34b66a5280b00df8bed6195b..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/local_ip_association.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/metering_label.cpython-310.pyc b/openstack/network/v2/__pycache__/metering_label.cpython-310.pyc
deleted file mode 100644
index 666546b63303c01bb21b9e79d162b47439305c32..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/metering_label.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/metering_label_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/metering_label_rule.cpython-310.pyc
deleted file mode 100644
index 841bf4ac25d220f508843c2c7ddd722e3f1d28ab..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/metering_label_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/ndp_proxy.cpython-310.pyc b/openstack/network/v2/__pycache__/ndp_proxy.cpython-310.pyc
deleted file mode 100644
index 897e0d1bc799373c2d567c9bc324b40e07431f53..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/ndp_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/network.cpython-310.pyc b/openstack/network/v2/__pycache__/network.cpython-310.pyc
deleted file mode 100644
index e200f96780549180a2efb663160940229bc86858..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/network.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/network_ip_availability.cpython-310.pyc b/openstack/network/v2/__pycache__/network_ip_availability.cpython-310.pyc
deleted file mode 100644
index a5e78042359bfbd08f2e298fae7e6a30f39b576b..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/network_ip_availability.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/network_segment_range.cpython-310.pyc b/openstack/network/v2/__pycache__/network_segment_range.cpython-310.pyc
deleted file mode 100644
index b37185efd8b7f3e9eccb8d304192dd3fdf56db2a..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/network_segment_range.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/pool.cpython-310.pyc b/openstack/network/v2/__pycache__/pool.cpython-310.pyc
deleted file mode 100644
index 126b663f88c53fc898934c42e8dfd7143173386f..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/pool.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/pool_member.cpython-310.pyc b/openstack/network/v2/__pycache__/pool_member.cpython-310.pyc
deleted file mode 100644
index 37136c3a380b667d53d3406a95b126a3ca0a6d88..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/pool_member.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/port.cpython-310.pyc b/openstack/network/v2/__pycache__/port.cpython-310.pyc
deleted file mode 100644
index 711e60c6bc5166371a3842ea18aeb8a86f9a55d0..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/port.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/port_forwarding.cpython-310.pyc b/openstack/network/v2/__pycache__/port_forwarding.cpython-310.pyc
deleted file mode 100644
index a5d463d49e8103783c87b10626ffee579f0787db..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/port_forwarding.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/qos_bandwidth_limit_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/qos_bandwidth_limit_rule.cpython-310.pyc
deleted file mode 100644
index b170495464010628dae788a6e5bc6f1cf36f29c0..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/qos_bandwidth_limit_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/qos_dscp_marking_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/qos_dscp_marking_rule.cpython-310.pyc
deleted file mode 100644
index 78803cbc317e9c79a0c85279a8c9337d6b6c8e50..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/qos_dscp_marking_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/qos_minimum_bandwidth_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/qos_minimum_bandwidth_rule.cpython-310.pyc
deleted file mode 100644
index e7435c16f344a3140a37caec1909dcdb5ff88a3b..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/qos_minimum_bandwidth_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/qos_minimum_packet_rate_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/qos_minimum_packet_rate_rule.cpython-310.pyc
deleted file mode 100644
index 2456b41ee4e9336d7608d395d0d4c6aff44acb46..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/qos_minimum_packet_rate_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/qos_policy.cpython-310.pyc b/openstack/network/v2/__pycache__/qos_policy.cpython-310.pyc
deleted file mode 100644
index 61fa6451d8ba5ae3e760542cbfab6e46bf85b3c9..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/qos_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/qos_rule_type.cpython-310.pyc b/openstack/network/v2/__pycache__/qos_rule_type.cpython-310.pyc
deleted file mode 100644
index 4a61d6d1ad446ee926fe0d91fd00aa5610f79107..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/qos_rule_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/quota.cpython-310.pyc b/openstack/network/v2/__pycache__/quota.cpython-310.pyc
deleted file mode 100644
index 0c3fb74e28f5913752c7159373faf2db282f8a00..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/quota.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/rbac_policy.cpython-310.pyc b/openstack/network/v2/__pycache__/rbac_policy.cpython-310.pyc
deleted file mode 100644
index 44f98555ddfe9fa2859ccf0df0fd3925f5a7c986..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/rbac_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/router.cpython-310.pyc b/openstack/network/v2/__pycache__/router.cpython-310.pyc
deleted file mode 100644
index 579f50729eed2fcc129af7b12844c68f8a53159e..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/router.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/security_group.cpython-310.pyc b/openstack/network/v2/__pycache__/security_group.cpython-310.pyc
deleted file mode 100644
index 775b819c4d18bb6004aca604896e456cdb4c4dd8..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/security_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/security_group_rule.cpython-310.pyc b/openstack/network/v2/__pycache__/security_group_rule.cpython-310.pyc
deleted file mode 100644
index fa964ba54164a7bca144e572d65d567d1a0aad12..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/security_group_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/segment.cpython-310.pyc b/openstack/network/v2/__pycache__/segment.cpython-310.pyc
deleted file mode 100644
index 2bf4b26a72ee4b5eea8867a6d59841d45d58ab8c..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/segment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/service_profile.cpython-310.pyc b/openstack/network/v2/__pycache__/service_profile.cpython-310.pyc
deleted file mode 100644
index bd4a9254b97347423f91c7f53d0211cf43100fdd..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/service_profile.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/service_provider.cpython-310.pyc b/openstack/network/v2/__pycache__/service_provider.cpython-310.pyc
deleted file mode 100644
index 383b82dac0a635fbb4d674cc7e92707bcfa3f581..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/service_provider.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/sfc_flow_classifier.cpython-310.pyc b/openstack/network/v2/__pycache__/sfc_flow_classifier.cpython-310.pyc
deleted file mode 100644
index 2614186de30afecc2cd0fbf662f261cc1449648f..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/sfc_flow_classifier.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/sfc_port_chain.cpython-310.pyc b/openstack/network/v2/__pycache__/sfc_port_chain.cpython-310.pyc
deleted file mode 100644
index e678e476944a59c2425318cd983f3c63a773dba9..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/sfc_port_chain.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/sfc_port_pair.cpython-310.pyc b/openstack/network/v2/__pycache__/sfc_port_pair.cpython-310.pyc
deleted file mode 100644
index 3bd3291b38920372f9fd853aa27e00d5b82cd6b8..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/sfc_port_pair.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/sfc_port_pair_group.cpython-310.pyc b/openstack/network/v2/__pycache__/sfc_port_pair_group.cpython-310.pyc
deleted file mode 100644
index 8452435451f755b1451b64c8e577cb50a9772d35..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/sfc_port_pair_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/sfc_service_graph.cpython-310.pyc b/openstack/network/v2/__pycache__/sfc_service_graph.cpython-310.pyc
deleted file mode 100644
index aeea29700255ad548aa2a2ddbae91160481181e0..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/sfc_service_graph.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/subnet.cpython-310.pyc b/openstack/network/v2/__pycache__/subnet.cpython-310.pyc
deleted file mode 100644
index 5c324977860afdd88b26db2156967689897e5fc1..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/subnet.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/subnet_pool.cpython-310.pyc b/openstack/network/v2/__pycache__/subnet_pool.cpython-310.pyc
deleted file mode 100644
index 7c78acc891d6225bdd07975effa74b82e149006e..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/subnet_pool.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/tap_flow.cpython-310.pyc b/openstack/network/v2/__pycache__/tap_flow.cpython-310.pyc
deleted file mode 100644
index a746d28c75d44613e4452c9e39167aa605aee2bb..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/tap_flow.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/tap_service.cpython-310.pyc b/openstack/network/v2/__pycache__/tap_service.cpython-310.pyc
deleted file mode 100644
index 51068a8684373b0196d4c5c9d54ba9c1ce8f1f58..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/tap_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/trunk.cpython-310.pyc b/openstack/network/v2/__pycache__/trunk.cpython-310.pyc
deleted file mode 100644
index c9069a603bb7e56a77a56de67a7e4a1ad1321734..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/trunk.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/vpn_endpoint_group.cpython-310.pyc b/openstack/network/v2/__pycache__/vpn_endpoint_group.cpython-310.pyc
deleted file mode 100644
index ce75c1a14d9447c2bdac7735b4f0f76ccbe2aa60..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/vpn_endpoint_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/vpn_ike_policy.cpython-310.pyc b/openstack/network/v2/__pycache__/vpn_ike_policy.cpython-310.pyc
deleted file mode 100644
index bd4d4d6f383587c1c44a8d89750e01f733ca44fe..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/vpn_ike_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/vpn_ipsec_policy.cpython-310.pyc b/openstack/network/v2/__pycache__/vpn_ipsec_policy.cpython-310.pyc
deleted file mode 100644
index c28537b4c44e89c4d8e6284f304f8b5cd239c471..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/vpn_ipsec_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/vpn_ipsec_site_connection.cpython-310.pyc b/openstack/network/v2/__pycache__/vpn_ipsec_site_connection.cpython-310.pyc
deleted file mode 100644
index 9212a358f9cda5d49c1aaf9b497a520397ddeb45..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/vpn_ipsec_site_connection.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/__pycache__/vpn_service.cpython-310.pyc b/openstack/network/v2/__pycache__/vpn_service.cpython-310.pyc
deleted file mode 100644
index b68f9a292071831fbd86cf0245d01f9813bae81e..0000000000000000000000000000000000000000
Binary files a/openstack/network/v2/__pycache__/vpn_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/network/v2/_proxy.py b/openstack/network/v2/_proxy.py
index 444c776df13e209743ff58c135f3327ce7155d89..70ed801938f66cb6289a1fe5b75695e44d99da2b 100644
--- a/openstack/network/v2/_proxy.py
+++ b/openstack/network/v2/_proxy.py
@@ -4099,6 +4099,42 @@ class Proxy(proxy.Proxy):
         router = self._get_resource(_router.Router, router)
         return router.remove_gateway(self, **body)
 
+    def add_external_gateways(self, router, body):
+        """Add router external gateways
+
+        :param router: Either the router ID or an instance of
+            :class:`~openstack.network.v2.router.Router`
+        :param body: Body containing the external_gateways parameter.
+        :returns: Router with added gateways
+        :rtype: :class:`~openstack.network.v2.router.Router`
+        """
+        router = self._get_resource(_router.Router, router)
+        return router.add_external_gateways(self, body)
+
+    def update_external_gateways(self, router, body):
+        """Update router external gateways
+
+        :param router: Either the router ID or an instance of
+            :class:`~openstack.network.v2.router.Router`
+        :param body: Body containing the external_gateways parameter.
+        :returns: Router with updated gateways
+        :rtype: :class:`~openstack.network.v2.router.Router`
+        """
+        router = self._get_resource(_router.Router, router)
+        return router.update_external_gateways(self, body)
+
+    def remove_external_gateways(self, router, body):
+        """Remove router external gateways
+
+        :param router: Either the router ID or an instance of
+            :class:`~openstack.network.v2.router.Router`
+        :param body: Body containing the external_gateways parameter.
+        :returns: Router without the removed gateways
+        :rtype: :class:`~openstack.network.v2.router.Router`
+        """
+        router = self._get_resource(_router.Router, router)
+        return router.remove_external_gateways(self, body)
+
     def routers_hosting_l3_agents(self, router, **query):
         """Return a generator of L3 agent hosting a router
 
diff --git a/openstack/network/v2/port.py b/openstack/network/v2/port.py
index 7be8cea21730266e6bbfa13bd1058ffdbc1956ba..bd2f35d2f21a090984495f28ee3a5bfd0d8915d0 100644
--- a/openstack/network/v2/port.py
+++ b/openstack/network/v2/port.py
@@ -10,8 +10,6 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-import typing as ty
-
 from openstack.common import tag
 from openstack.network.v2 import _base
 from openstack import resource
@@ -59,9 +57,7 @@ class Port(_base.NetworkResource, tag.TagMixin):
     # Properties
     #: Allowed address pairs list. Dictionary key ``ip_address`` is required
     #: and key ``mac_address`` is optional.
-    allowed_address_pairs: ty.List[dict] = resource.Body(
-        'allowed_address_pairs', type=list
-    )
+    allowed_address_pairs = resource.Body('allowed_address_pairs', type=list)
     #: The ID of the host where the port is allocated. In some cases,
     #: different implementations can run on different hosts.
     binding_host_id = resource.Body('binding:host_id')
diff --git a/openstack/network/v2/router.py b/openstack/network/v2/router.py
index 30e10ca98ce3f0883bdc41e59bb9f2fb0ea46981..a803c1a49e3cbc23cff9a773023f5a0bf46eafb3 100644
--- a/openstack/network/v2/router.py
+++ b/openstack/network/v2/router.py
@@ -177,6 +177,52 @@ class Router(_base.NetworkResource, tag.TagMixin):
         resp = session.put(url, json=body)
         return resp.json()
 
+    def add_external_gateways(self, session, body):
+        """Add external gateways to a router.
+
+        :param session: The session to communicate through.
+        :type session: :class:`~keystoneauth1.adapter.Adapter`
+        :param dict body: The body requested to be updated on the router
+
+        :returns: The body of the response as a dictionary.
+        """
+        url = utils.urljoin(self.base_path, self.id, 'add_external_gateways')
+        resp = session.put(url, json=body)
+        self._translate_response(resp)
+        return self
+
+    def update_external_gateways(self, session, body):
+        """Update external gateways of a router.
+
+        :param session: The session to communicate through.
+        :type session: :class:`~keystoneauth1.adapter.Adapter`
+        :param dict body: The body requested to be updated on the router
+
+        :returns: The body of the response as a dictionary.
+        """
+        url = utils.urljoin(
+            self.base_path, self.id, 'update_external_gateways'
+        )
+        resp = session.put(url, json=body)
+        self._translate_response(resp)
+        return self
+
+    def remove_external_gateways(self, session, body):
+        """Remove external gateways from a router.
+
+        :param session: The session to communicate through.
+        :type session: :class:`~keystoneauth1.adapter.Adapter`
+        :param dict body: The body requested to be updated on the router
+
+        :returns: The body of the response as a dictionary.
+        """
+        url = utils.urljoin(
+            self.base_path, self.id, 'remove_external_gateways'
+        )
+        resp = session.put(url, json=body)
+        self._translate_response(resp)
+        return self
+
 
 class L3AgentRouter(Router):
     resource_key = 'router'
diff --git a/openstack/object_store/__pycache__/__init__.cpython-310.pyc b/openstack/object_store/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 549283fb1a4aaf2ceb3cdfbac5a3e222953d8c32..0000000000000000000000000000000000000000
Binary files a/openstack/object_store/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/object_store/__pycache__/object_store_service.cpython-310.pyc b/openstack/object_store/__pycache__/object_store_service.cpython-310.pyc
deleted file mode 100644
index f2fed9567329edd0395da337e6cd593cab2980d7..0000000000000000000000000000000000000000
Binary files a/openstack/object_store/__pycache__/object_store_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/object_store/v1/__pycache__/__init__.cpython-310.pyc b/openstack/object_store/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 58be7e245e28376c216905c6afbdca616c34c5be..0000000000000000000000000000000000000000
Binary files a/openstack/object_store/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/object_store/v1/__pycache__/_base.cpython-310.pyc b/openstack/object_store/v1/__pycache__/_base.cpython-310.pyc
deleted file mode 100644
index e978eb85a0cf9ce6eb36b2b55208c8c149336028..0000000000000000000000000000000000000000
Binary files a/openstack/object_store/v1/__pycache__/_base.cpython-310.pyc and /dev/null differ
diff --git a/openstack/object_store/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/object_store/v1/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index d3d3a66609f6abdcf26b2ae0728f385bdb86ca5b..0000000000000000000000000000000000000000
Binary files a/openstack/object_store/v1/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/object_store/v1/__pycache__/account.cpython-310.pyc b/openstack/object_store/v1/__pycache__/account.cpython-310.pyc
deleted file mode 100644
index 51ecfc789e8297b5d606236e33bca9288e605c9b..0000000000000000000000000000000000000000
Binary files a/openstack/object_store/v1/__pycache__/account.cpython-310.pyc and /dev/null differ
diff --git a/openstack/object_store/v1/__pycache__/container.cpython-310.pyc b/openstack/object_store/v1/__pycache__/container.cpython-310.pyc
deleted file mode 100644
index c39ca4f42b44443b77c68d26197cf7e7eba2b553..0000000000000000000000000000000000000000
Binary files a/openstack/object_store/v1/__pycache__/container.cpython-310.pyc and /dev/null differ
diff --git a/openstack/object_store/v1/__pycache__/info.cpython-310.pyc b/openstack/object_store/v1/__pycache__/info.cpython-310.pyc
deleted file mode 100644
index 5b4a68f38bd75c1e8437f6e4c82ce308ec46a39d..0000000000000000000000000000000000000000
Binary files a/openstack/object_store/v1/__pycache__/info.cpython-310.pyc and /dev/null differ
diff --git a/openstack/object_store/v1/__pycache__/obj.cpython-310.pyc b/openstack/object_store/v1/__pycache__/obj.cpython-310.pyc
deleted file mode 100644
index 8966c30426429b075a89aed60986e16dbe465fe4..0000000000000000000000000000000000000000
Binary files a/openstack/object_store/v1/__pycache__/obj.cpython-310.pyc and /dev/null differ
diff --git a/openstack/object_store/v1/_base.py b/openstack/object_store/v1/_base.py
index a39286f5e94ce758fd634bf9536ec59c2e723638..0b1c4dfed638d033229bcfa226075182c5d78c8f 100644
--- a/openstack/object_store/v1/_base.py
+++ b/openstack/object_store/v1/_base.py
@@ -11,6 +11,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
+import typing as ty
+
 from openstack import exceptions
 from openstack import resource
 
@@ -20,11 +22,11 @@ class BaseResource(resource.Resource):
     create_method = 'PUT'
 
     #: Metadata stored for this resource. *Type: dict*
-    metadata = dict()
+    metadata: ty.Dict[str, ty.Any] = {}
 
-    _custom_metadata_prefix = None
-    _system_metadata = dict()
-    _last_headers = dict()
+    _custom_metadata_prefix: str
+    _system_metadata: ty.Dict[str, ty.Any] = {}
+    _last_headers: ty.Dict[str, ty.Any] = {}
 
     def __init__(self, metadata=None, **attrs):
         """Process and save metadata known at creation stage"""
diff --git a/openstack/object_store/v1/_proxy.py b/openstack/object_store/v1/_proxy.py
index f9d74e7e4c3ca70801d246723515a09a9577e91a..a63d9dc2c732d47cf154599e0f3da8c31743fa49 100644
--- a/openstack/object_store/v1/_proxy.py
+++ b/openstack/object_store/v1/_proxy.py
@@ -394,7 +394,8 @@ class Proxy(proxy.Proxy):
         :param metadata: This dict will get changed into headers that set
             metadata of the object
 
-        :raises: ``OpenStackCloudException`` on operation error.
+        :raises: ``:class:`~openstack.exceptions.SDKException``` on operation
+            error.
         """
         if data is not None and filename:
             raise ValueError(
@@ -768,15 +769,17 @@ class Proxy(proxy.Proxy):
         try:
             # caps = self.get_object_capabilities()
             caps = self.get_info()
-        except exceptions.SDKException as e:
-            if e.response.status_code in (404, 412):
-                server_max_file_size = DEFAULT_MAX_FILE_SIZE
-                self._connection.log.info(
-                    "Swift capabilities not supported. "
-                    "Using default max file size."
-                )
-            else:
-                raise
+        except (
+            exceptions.NotFoundException,
+            exceptions.PreconditionFailedException,
+        ):
+            server_max_file_size = DEFAULT_MAX_FILE_SIZE
+            self._connection.log.info(
+                "Swift capabilities not supported. "
+                "Using default max file size."
+            )
+        except exceptions.SDKException:
+            raise
         else:
             server_max_file_size = caps.swift.get('max_file_size', 0)
             min_segment_size = caps.slo.get('min_segment_size', 0)
@@ -934,8 +937,7 @@ class Proxy(proxy.Proxy):
             max_upload_count,
             expires,
         )
-        data = data.encode('utf8')
-        sig = hmac.new(temp_url_key, data, sha1).hexdigest()
+        sig = hmac.new(temp_url_key, data.encode(), sha1).hexdigest()
 
         return (expires, sig)
 
@@ -991,18 +993,17 @@ class Proxy(proxy.Proxy):
                     try:
                         t = time.strptime(seconds, f)
                     except ValueError:
-                        t = None
-                    else:
-                        if f == EXPIRES_ISO8601_FORMAT:
-                            timestamp = timegm(t)
-                        else:
-                            # Use local time if UTC designator is missing.
-                            timestamp = int(time.mktime(t))
+                        continue
 
-                        absolute = True
-                        break
+                    if f == EXPIRES_ISO8601_FORMAT:
+                        timestamp = timegm(t)
+                    else:
+                        # Use local time if UTC designator is missing.
+                        timestamp = int(time.mktime(t))
 
-                if t is None:
+                    absolute = True
+                    break
+                else:
                     raise ValueError()
             else:
                 if not timestamp.is_integer():
@@ -1045,6 +1046,7 @@ class Proxy(proxy.Proxy):
                 method.upper(),
             )
 
+        expiration: float | int
         if not absolute:
             expiration = _get_expiration(timestamp)
         else:
@@ -1073,12 +1075,16 @@ class Proxy(proxy.Proxy):
         ).hexdigest()
 
         if iso8601:
-            expiration = time.strftime(
+            exp = time.strftime(
                 EXPIRES_ISO8601_FORMAT, time.gmtime(expiration)
             )
+        else:
+            exp = str(expiration)
 
         temp_url = u'{path}?temp_url_sig={sig}&temp_url_expires={exp}'.format(
-            path=path_for_body, sig=sig, exp=expiration
+            path=path_for_body,
+            sig=sig,
+            exp=exp,
         )
 
         if ip_range:
@@ -1142,7 +1148,7 @@ class Proxy(proxy.Proxy):
             return
 
         is_bulk_delete_supported = False
-        bulk_delete_max_per_request = None
+        bulk_delete_max_per_request = 1
         try:
             caps = self.get_info()
         except exceptions.SDKException:
diff --git a/openstack/orchestration/__pycache__/__init__.cpython-310.pyc b/openstack/orchestration/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index e598b6f6d73fef2407e5fd1aac8fd9adf9ad59ca..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/__pycache__/orchestration_service.cpython-310.pyc b/openstack/orchestration/__pycache__/orchestration_service.cpython-310.pyc
deleted file mode 100644
index 46cf7783acb27d4ec0d88132bf8258af0413d8f9..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/__pycache__/orchestration_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/__pycache__/version.cpython-310.pyc b/openstack/orchestration/__pycache__/version.cpython-310.pyc
deleted file mode 100644
index b3aae68b8e854004b4c70108e0999cab89b89ff4..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/__pycache__/version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/util/__pycache__/__init__.cpython-310.pyc b/openstack/orchestration/util/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 67863a018d00a255ad2497748764672a71757039..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/util/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/util/__pycache__/environment_format.cpython-310.pyc b/openstack/orchestration/util/__pycache__/environment_format.cpython-310.pyc
deleted file mode 100644
index 106b1bff520c55022c07628a4a9f6958b888b937..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/util/__pycache__/environment_format.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/util/__pycache__/event_utils.cpython-310.pyc b/openstack/orchestration/util/__pycache__/event_utils.cpython-310.pyc
deleted file mode 100644
index 23dba640567fcff83f74efe1e5e1598fe7becb01..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/util/__pycache__/event_utils.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/util/__pycache__/template_format.cpython-310.pyc b/openstack/orchestration/util/__pycache__/template_format.cpython-310.pyc
deleted file mode 100644
index fe21702b8fe7f6375096edc6764ee5de48048c31..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/util/__pycache__/template_format.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/util/__pycache__/template_utils.cpython-310.pyc b/openstack/orchestration/util/__pycache__/template_utils.cpython-310.pyc
deleted file mode 100644
index 3682e339fb0cb49cf1a0fc17648947fe36810fea..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/util/__pycache__/template_utils.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/util/__pycache__/utils.cpython-310.pyc b/openstack/orchestration/util/__pycache__/utils.cpython-310.pyc
deleted file mode 100644
index 08622622eee4c3746487dee6c77ec819fa1bfeda..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/util/__pycache__/utils.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/util/template_format.py b/openstack/orchestration/util/template_format.py
index 618490811585ff4e509bbd6bad9ab01a4e608df5..426a22c662dd07bfa59014a2818d9d550d26906f 100644
--- a/openstack/orchestration/util/template_format.py
+++ b/openstack/orchestration/util/template_format.py
@@ -17,7 +17,7 @@ import yaml
 if hasattr(yaml, 'CSafeLoader'):
     yaml_loader = yaml.CSafeLoader
 else:
-    yaml_loader = yaml.SafeLoader
+    yaml_loader = yaml.SafeLoader  # type: ignore
 
 
 class HeatYamlLoader(yaml_loader):
diff --git a/openstack/orchestration/util/template_utils.py b/openstack/orchestration/util/template_utils.py
index 43bc657be3f211b2eee27a57c1409a2ffb902515..48797f24d40a870702f61eef32488d734a71ac70 100644
--- a/openstack/orchestration/util/template_utils.py
+++ b/openstack/orchestration/util/template_utils.py
@@ -14,6 +14,7 @@
 
 import collections.abc
 import json
+import typing as ty
 from urllib import parse
 from urllib import request
 
@@ -221,8 +222,8 @@ def process_multiple_environments_and_files(
     :return: tuple of files dict and a dict of the consolidated environment
     :rtype:  tuple
     """
-    merged_files = {}
-    merged_env = {}
+    merged_files: ty.Dict[str, str] = {}
+    merged_env: ty.Dict[str, ty.Dict] = {}
 
     # If we're keeping a list of environment files separately, include the
     # contents of the files in the files dict
@@ -275,8 +276,8 @@ def process_environment_and_files(
     :return: tuple of files dict and the loaded environment as a dict
     :rtype:  (dict, dict)
     """
-    files = {}
-    env = {}
+    files: ty.Dict[str, str] = {}
+    env: ty.Dict[str, ty.Dict] = {}
 
     is_object = env_path_is_object and env_path_is_object(env_path)
 
diff --git a/openstack/orchestration/v1/__pycache__/__init__.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 8675cb90c715bdc3a3609f36be1dc37ddaec1610..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index f87fc7b052596f3dd55b1be51ee3421f1bfbb019..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/v1/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/v1/__pycache__/resource.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/resource.cpython-310.pyc
deleted file mode 100644
index 56505fb84492be02a76c03095df8b6ce471c540d..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/v1/__pycache__/resource.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/v1/__pycache__/software_config.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/software_config.cpython-310.pyc
deleted file mode 100644
index 4bc7be0e18775d6581a41c66f54787b195a919c9..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/v1/__pycache__/software_config.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/v1/__pycache__/software_deployment.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/software_deployment.cpython-310.pyc
deleted file mode 100644
index 1b1a1b69f6130e202bd5f065a2d89518a0df9a61..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/v1/__pycache__/software_deployment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/v1/__pycache__/stack.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/stack.cpython-310.pyc
deleted file mode 100644
index e7a531ba570a610e18345a79cd5c26e5186e89e1..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/v1/__pycache__/stack.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/v1/__pycache__/stack_environment.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/stack_environment.cpython-310.pyc
deleted file mode 100644
index 4660c2bc5b9e8d3c06d9b923a85b0d8fdbe7f671..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/v1/__pycache__/stack_environment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/v1/__pycache__/stack_event.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/stack_event.cpython-310.pyc
deleted file mode 100644
index d3900f2abc37d3203d8e40387b45103a24f9c346..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/v1/__pycache__/stack_event.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/v1/__pycache__/stack_files.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/stack_files.cpython-310.pyc
deleted file mode 100644
index f05c56eff878a89227bad44dcecb8e45fd617de5..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/v1/__pycache__/stack_files.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/v1/__pycache__/stack_template.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/stack_template.cpython-310.pyc
deleted file mode 100644
index 1927a1dd4b51d4aaa289d5942794cb4a1c62f70c..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/v1/__pycache__/stack_template.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/v1/__pycache__/template.cpython-310.pyc b/openstack/orchestration/v1/__pycache__/template.cpython-310.pyc
deleted file mode 100644
index 32f02aa10c75ef17580f9212754f8dd57554e40b..0000000000000000000000000000000000000000
Binary files a/openstack/orchestration/v1/__pycache__/template.cpython-310.pyc and /dev/null differ
diff --git a/openstack/orchestration/v1/stack_environment.py b/openstack/orchestration/v1/stack_environment.py
index e61bea9da4a3cb45519f23fa14e405512ce0e114..475efdb22dbdb9c55f58b5d1762479e12aebb0c4 100644
--- a/openstack/orchestration/v1/stack_environment.py
+++ b/openstack/orchestration/v1/stack_environment.py
@@ -29,9 +29,9 @@ class StackEnvironment(resource.Resource):
     # Backwards compat
     stack_name = name
     #: ID of the stack where the template is referenced.
-    id = resource.URI('stack_id')
+    id = resource.URI('stack_id')  # type: ignore
     # Backwards compat
-    stack_id = id
+    stack_id = id  # type: ignore
     #: A list of parameter names whose values are encrypted
     encrypted_param_names = resource.Body('encrypted_param_names')
     #: A list of event sinks
diff --git a/openstack/orchestration/v1/stack_files.py b/openstack/orchestration/v1/stack_files.py
index 71a735623f707086288bfe350e99be820127c5eb..0b72c6b6889d805c210f021e48d1a21c613ed49d 100644
--- a/openstack/orchestration/v1/stack_files.py
+++ b/openstack/orchestration/v1/stack_files.py
@@ -29,9 +29,9 @@ class StackFiles(resource.Resource):
     # Backwards compat
     stack_name = name
     #: ID of the stack where the template is referenced.
-    id = resource.URI('stack_id')
+    id = resource.URI('stack_id')  # type: ignore
     # Backwards compat
-    stack_id = id
+    stack_id = id  # type: ignore
 
     def fetch(self, session, base_path=None):
         # The stack files response contains a map of filenames and file
diff --git a/openstack/placement/__pycache__/__init__.cpython-310.pyc b/openstack/placement/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index b599a5b99d6ad1a834ada1cd946de36360cb0e4d..0000000000000000000000000000000000000000
Binary files a/openstack/placement/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/placement/__pycache__/placement_service.cpython-310.pyc b/openstack/placement/__pycache__/placement_service.cpython-310.pyc
deleted file mode 100644
index e5f4548f89441f01fd58aeb3e7061ae8ca96b978..0000000000000000000000000000000000000000
Binary files a/openstack/placement/__pycache__/placement_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/placement/v1/__pycache__/__init__.cpython-310.pyc b/openstack/placement/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index c2b9d35aef6e42fff616bc2cac5c25085ac40228..0000000000000000000000000000000000000000
Binary files a/openstack/placement/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/placement/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/placement/v1/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 2986e99142b32ecc79b96e66c7d99363ed7668bf..0000000000000000000000000000000000000000
Binary files a/openstack/placement/v1/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/placement/v1/__pycache__/resource_class.cpython-310.pyc b/openstack/placement/v1/__pycache__/resource_class.cpython-310.pyc
deleted file mode 100644
index 0967aae6face34792c8c212798e9c75f5598265c..0000000000000000000000000000000000000000
Binary files a/openstack/placement/v1/__pycache__/resource_class.cpython-310.pyc and /dev/null differ
diff --git a/openstack/placement/v1/__pycache__/resource_provider.cpython-310.pyc b/openstack/placement/v1/__pycache__/resource_provider.cpython-310.pyc
deleted file mode 100644
index b6d9ac7566e2756af3cc4284151ab1ede5d6d381..0000000000000000000000000000000000000000
Binary files a/openstack/placement/v1/__pycache__/resource_provider.cpython-310.pyc and /dev/null differ
diff --git a/openstack/placement/v1/__pycache__/resource_provider_inventory.cpython-310.pyc b/openstack/placement/v1/__pycache__/resource_provider_inventory.cpython-310.pyc
deleted file mode 100644
index 9b25458e7b05b729d81b3d0ac36c3a3e473bdf30..0000000000000000000000000000000000000000
Binary files a/openstack/placement/v1/__pycache__/resource_provider_inventory.cpython-310.pyc and /dev/null differ
diff --git a/openstack/placement/v1/__pycache__/trait.cpython-310.pyc b/openstack/placement/v1/__pycache__/trait.cpython-310.pyc
deleted file mode 100644
index b10b86943d863f71da7deddeebc0c58ccf68b33c..0000000000000000000000000000000000000000
Binary files a/openstack/placement/v1/__pycache__/trait.cpython-310.pyc and /dev/null differ
diff --git a/openstack/placement/v1/resource_provider_inventory.py b/openstack/placement/v1/resource_provider_inventory.py
index 016bb49f3544a95ac2aa466d194e39082ca43af6..4261e6ba1d132600d3a16a0c644ff6db842668ef 100644
--- a/openstack/placement/v1/resource_provider_inventory.py
+++ b/openstack/placement/v1/resource_provider_inventory.py
@@ -19,7 +19,9 @@ class ResourceProviderInventory(resource.Resource):
     resources_key = None
     base_path = '/resource_providers/%(resource_provider_id)s/inventories'
 
-    _query_mapping = {}
+    _query_mapping = resource.QueryParameters(
+        include_pagination_defaults=False
+    )
 
     # Capabilities
 
diff --git a/openstack/proxy.py b/openstack/proxy.py
index 06574cafe975dba74b55743a4a89111dc1f67253..c058964a99f5335db485bd93b5883d1e4a50dc52 100644
--- a/openstack/proxy.py
+++ b/openstack/proxy.py
@@ -74,7 +74,7 @@ def normalize_metric_name(name):
 class Proxy(adapter.Adapter):
     """Represents a service."""
 
-    retriable_status_codes = None
+    retriable_status_codes: ty.Optional[ty.List[int]] = None
     """HTTP status codes that should be retried by default.
 
     The number of retries is defined by the configuration in parameters called
@@ -477,11 +477,43 @@ class Proxy(adapter.Adapter):
             value = resource.Resource._get_id(parent)
         return value
 
+    @ty.overload
     def _find(
         self,
         resource_type: ty.Type[ResourceType],
-        name_or_id,
-        ignore_missing=True,
+        name_or_id: str,
+        ignore_missing: ty.Literal[True] = True,
+        **attrs,
+    ) -> ty.Optional[ResourceType]:
+        ...
+
+    @ty.overload
+    def _find(
+        self,
+        resource_type: ty.Type[ResourceType],
+        name_or_id: str,
+        ignore_missing: ty.Literal[False],
+        **attrs,
+    ) -> ResourceType:
+        ...
+
+    # excuse the duplication here: it's mypy's fault
+    # https://github.com/python/mypy/issues/14764
+    @ty.overload
+    def _find(
+        self,
+        resource_type: ty.Type[ResourceType],
+        name_or_id: str,
+        ignore_missing: bool,
+        **attrs,
+    ) -> ty.Optional[ResourceType]:
+        ...
+
+    def _find(
+        self,
+        resource_type: ty.Type[ResourceType],
+        name_or_id: str,
+        ignore_missing: bool = True,
         **attrs,
     ) -> ty.Optional[ResourceType]:
         """Find a resource
@@ -600,6 +632,13 @@ class Proxy(adapter.Adapter):
         :returns: The result of the ``create``
         :rtype: :class:`~openstack.resource.Resource`
         """
+        # Check for attributes whose names conflict with the parameters
+        # specified in the method.
+        conflicting_attrs = attrs.get('__conflicting_attrs', {})
+        if conflicting_attrs:
+            for k, v in conflicting_attrs.items():
+                attrs[k] = v
+            attrs.pop('__conflicting_attrs')
         conn = self._get_connection()
         res = resource_type.new(connection=conn, **attrs)
         return res.create(self, base_path=base_path)
diff --git a/openstack/resource.py b/openstack/resource.py
index 50387a5790edc48603c9ef3713d90bd190e7ad31..53b786176c2d886c26c95fcebaddf8785f51ad3b 100644
--- a/openstack/resource.py
+++ b/openstack/resource.py
@@ -355,7 +355,7 @@ class QueryParameters:
             parameters, ``limit`` and ``marker``. These are the most common
             query parameters used for listing resources in OpenStack APIs.
         """
-        self._mapping = {}
+        self._mapping: ty.Dict[str, ty.Union[str, ty.Dict]] = {}
         if include_pagination_defaults:
             self._mapping.update({"limit": "limit", "marker": "marker"})
         self._mapping.update({name: name for name in names})
@@ -373,7 +373,7 @@ class QueryParameters:
 
         :returns: Filtered collection of the supported QueryParameters
         """
-        expected_params = list(self._mapping.keys())
+        expected_params = list(self._mapping)
         expected_params.extend(
             value.get('name', key) if isinstance(value, dict) else value
             for key, value in self._mapping.items()
@@ -382,7 +382,7 @@ class QueryParameters:
         if base_path:
             expected_params += utils.get_string_format_keys(base_path)
 
-        invalid_keys = set(query.keys()) - set(expected_params)
+        invalid_keys = set(query) - set(expected_params)
         if not invalid_keys:
             return query
         else:
@@ -393,9 +393,7 @@ class QueryParameters:
                     extra_data=invalid_keys,
                 )
             else:
-                known_keys = set(query.keys()).intersection(
-                    set(expected_params)
-                )
+                known_keys = set(query).intersection(set(expected_params))
                 return {k: query[k] for k in known_keys}
 
     def _transpose(self, query, resource_type):
@@ -460,15 +458,15 @@ class Resource(dict):
     #: Plural form of key for resource.
     resources_key: ty.Optional[str] = None
     #: Key used for pagination links
-    pagination_key = None
+    pagination_key: ty.Optional[str] = None
 
     #: The ID of this resource.
     id = Body("id")
 
     #: The name of this resource.
-    name = Body("name")
+    name: ty.Union[Body, URI] = Body("name")
     #: The OpenStack location of this resource.
-    location = Computed('location')
+    location: ty.Union[Computed, Body, Header] = Computed('location')
 
     #: Mapping of accepted query parameter names.
     _query_mapping = QueryParameters()
@@ -504,13 +502,13 @@ class Resource(dict):
     #: Do calls for this resource require an id
     requires_id = True
     #: Whether create requires an ID (determined from method if None).
-    create_requires_id = None
+    create_requires_id: ty.Optional[bool] = None
     #: Whether create should exclude ID in the body of the request.
     create_exclude_id_from_body = False
     #: Do responses for this resource have bodies
     has_body = True
     #: Does create returns a body (if False requires ID), defaults to has_body
-    create_returns_body = None
+    create_returns_body: ty.Optional[bool] = None
 
     #: Maximum microversion to use for getting/creating/updating the Resource
     _max_microversion: ty.Optional[str] = None
@@ -2248,16 +2246,63 @@ class Resource(dict):
 
         return the_result
 
+    @ty.overload
     @classmethod
     def find(
         cls,
         session,
-        name_or_id,
-        ignore_missing=True,
-        list_base_path=None,
+        name_or_id: str,
+        ignore_missing: ty.Literal[True] = True,
+        list_base_path: ty.Optional[str] = None,
         *,
-        microversion=None,
-        all_projects=None,
+        microversion: ty.Optional[str] = None,
+        all_projects: ty.Optional[bool] = None,
+        **params,
+    ) -> ty.Optional['Resource']:
+        ...
+
+    @ty.overload
+    @classmethod
+    def find(
+        cls,
+        session,
+        name_or_id: str,
+        ignore_missing: ty.Literal[False],
+        list_base_path: ty.Optional[str] = None,
+        *,
+        microversion: ty.Optional[str] = None,
+        all_projects: ty.Optional[bool] = None,
+        **params,
+    ) -> 'Resource':
+        ...
+
+    # excuse the duplication here: it's mypy's fault
+    # https://github.com/python/mypy/issues/14764
+    @ty.overload
+    @classmethod
+    def find(
+        cls,
+        session,
+        name_or_id: str,
+        ignore_missing: bool,
+        list_base_path: ty.Optional[str] = None,
+        *,
+        microversion: ty.Optional[str] = None,
+        all_projects: ty.Optional[bool] = None,
+        **params,
+    ):
+        ...
+
+    @classmethod
+    def find(
+        cls,
+        session,
+        name_or_id: str,
+        ignore_missing: bool = True,
+        list_base_path: ty.Optional[str] = None,
+        *,
+        microversion: ty.Optional[str] = None,
+        all_projects: ty.Optional[bool] = None,
         **params,
     ):
         """Find a resource by its name or id.
diff --git a/openstack/shared_file_system/__pycache__/__init__.cpython-310.pyc b/openstack/shared_file_system/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 00c6ce03a14d629c8152de70b19ea1267f93982a..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/__pycache__/shared_file_system_service.cpython-310.pyc b/openstack/shared_file_system/__pycache__/shared_file_system_service.cpython-310.pyc
deleted file mode 100644
index 154c05fce3b72d37b553d9435d912df1fcd44b99..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/__pycache__/shared_file_system_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/__init__.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 3dc474ee4ce583fe37cc251b2ad2f6649d0b28a8..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 86feff48a3f25084906527944f0002d49db989fe..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/availability_zone.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/availability_zone.cpython-310.pyc
deleted file mode 100644
index f6697fd3a81542c43f4b8d5b29791a3330fc7223..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/availability_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/limit.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/limit.cpython-310.pyc
deleted file mode 100644
index 1869234ff4ecdfed9fd9528372f85a9fb6bf3477..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/limit.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/share.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share.cpython-310.pyc
deleted file mode 100644
index d42f1505fea96f0243ef484a8a7d848cf2279825..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/share.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/share_access_rule.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_access_rule.cpython-310.pyc
deleted file mode 100644
index 1cfe01a0e1c0d3955c1543c7794e5101c52b4386..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/share_access_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/share_export_locations.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_export_locations.cpython-310.pyc
deleted file mode 100644
index a0cf4abb77e20e599ee328e42ceadb93d2e34c39..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/share_export_locations.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/share_group.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_group.cpython-310.pyc
deleted file mode 100644
index 7e3f11b24f4a89b84e0c798099cc0f58dcecedfd..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/share_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/share_group_snapshot.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_group_snapshot.cpython-310.pyc
deleted file mode 100644
index 87638f4a1e97fd0dcc68637c992110f4e1a77a4f..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/share_group_snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/share_instance.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_instance.cpython-310.pyc
deleted file mode 100644
index 20a5173a163b0fc11e3701bd1597ccb9920f08de..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/share_instance.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/share_network.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_network.cpython-310.pyc
deleted file mode 100644
index cbf3da0e08c9244f429bf86247c63e2f45e7faf1..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/share_network.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/share_network_subnet.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_network_subnet.cpython-310.pyc
deleted file mode 100644
index cff894e0af26964d253ef6a7b4f6ffc0c759797c..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/share_network_subnet.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/share_snapshot.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_snapshot.cpython-310.pyc
deleted file mode 100644
index 4be21be818fb8a2ffa11b8132b70891b65d8561c..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/share_snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/share_snapshot_instance.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/share_snapshot_instance.cpython-310.pyc
deleted file mode 100644
index f05fb7220f83d19e2054019d7d780b0718520e1b..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/share_snapshot_instance.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/storage_pool.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/storage_pool.cpython-310.pyc
deleted file mode 100644
index aa5b84f256b64236a82b54eae64f775306c24f24..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/storage_pool.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/__pycache__/user_message.cpython-310.pyc b/openstack/shared_file_system/v2/__pycache__/user_message.cpython-310.pyc
deleted file mode 100644
index 061374ba301916a054f258edce4630e0f461e0c6..0000000000000000000000000000000000000000
Binary files a/openstack/shared_file_system/v2/__pycache__/user_message.cpython-310.pyc and /dev/null differ
diff --git a/openstack/shared_file_system/v2/_proxy.py b/openstack/shared_file_system/v2/_proxy.py
index 76eae7557566c5b9058de9aa915f1cf2fbd343ca..56c5dfb7494e85d75c5ca5a7d316b3e0c685cd3f 100644
--- a/openstack/shared_file_system/v2/_proxy.py
+++ b/openstack/shared_file_system/v2/_proxy.py
@@ -16,6 +16,7 @@ from openstack.shared_file_system.v2 import (
     availability_zone as _availability_zone,
 )
 from openstack.shared_file_system.v2 import limit as _limit
+from openstack.shared_file_system.v2 import resource_locks as _resource_locks
 from openstack.shared_file_system.v2 import share as _share
 from openstack.shared_file_system.v2 import share_group as _share_group
 from openstack.shared_file_system.v2 import (
@@ -56,6 +57,7 @@ class Proxy(proxy.Proxy):
         "share_access_rule": _share_access_rule.ShareAccessRule,
         "share_group": _share_group.ShareGroup,
         "share_group_snapshot": _share_group_snapshot.ShareGroupSnapshot,
+        "resource_locks": _resource_locks.ResourceLock,
     }
 
     def availability_zones(self):
@@ -354,7 +356,13 @@ class Proxy(proxy.Proxy):
         )
 
     def wait_for_status(
-        self, res, status='active', failures=None, interval=2, wait=120
+        self,
+        res,
+        status='active',
+        failures=None,
+        interval=2,
+        wait=120,
+        status_attr_name='status',
     ):
         """Wait for a resource to be in a particular status.
         :param res: The resource to wait on to reach the specified status.
@@ -367,6 +375,8 @@ class Proxy(proxy.Proxy):
             checks. Default to 2.
         :param wait: Maximum number of seconds to wait before the change.
             Default to 120.
+        :param status_attr_name: name of the attribute to reach the desired
+            status.
         :returns: The resource is returned on success.
         :raises: :class:`~openstack.exceptions.ResourceTimeout` if transition
             to the desired status failed to occur in specified seconds.
@@ -377,7 +387,13 @@ class Proxy(proxy.Proxy):
         """
         failures = [] if failures is None else failures
         return resource.wait_for_status(
-            self, res, status, failures, interval, wait
+            self,
+            res,
+            status,
+            failures,
+            interval,
+            wait,
+            attribute=status_attr_name,
         )
 
     def storage_pools(self, details=True, **query):
@@ -846,17 +862,25 @@ class Proxy(proxy.Proxy):
             _share_access_rule.ShareAccessRule, base_path=base_path, **attrs
         )
 
-    def delete_access_rule(self, access_id, share_id, ignore_missing=True):
+    def delete_access_rule(
+        self, access_id, share_id, ignore_missing=True, *, unrestrict=False
+    ):
         """Deletes an access rule
 
         :param access_id: The id of the access rule to get
         :param share_id: The ID of the share
+        :param unrestrict: If Manila must attempt removing locks while deleting
 
         :rtype: ``requests.models.Response`` HTTP response from internal
             requests client
         """
         res = self._get_resource(_share_access_rule.ShareAccessRule, access_id)
-        res.delete(self, share_id, ignore_missing=ignore_missing)
+        return res.delete(
+            self,
+            share_id,
+            ignore_missing=ignore_missing,
+            unrestrict=unrestrict,
+        )
 
     def share_group_snapshots(self, details=True, **query):
         """Lists all share group snapshots.
@@ -1065,3 +1089,112 @@ class Proxy(proxy.Proxy):
             raise exceptions.SDKException(
                 "Some keys failed to be deleted %s" % keys_failed_to_delete
             )
+
+    def resource_locks(self, **query):
+        """Lists all resource locks.
+
+        :param kwargs query: Optional query parameters to be sent to limit
+            the resource locks being returned.  Available parameters include:
+
+            * project_id: The project ID of the user that the lock is
+                created for.
+            * user_id: The ID of a user to filter resource locks by.
+            * all_projects: list locks from all projects (Admin Only)
+            * resource_id: The ID of the resource that the locks pertain to
+                filter resource locks by.
+            * resource_action: The action prevented by the filtered resource
+                locks.
+            * resource_type: The type of the resource that the locks pertain
+                to filter resource locks by.
+            * lock_context: The lock creator’s context to filter locks by.
+            * lock_reason: The lock reason that can be used to filter resource
+                locks. (Inexact search is also available with lock_reason~)
+            * created_since: Search for the list of resources that were created
+                after the specified date. The date is in ‘yyyy-mm-dd’ format.
+            * created_before: Search for the list of resources that were
+                created prior to the specified date. The date is in
+                ‘yyyy-mm-dd’ format.
+            * limit: The maximum number of resource locks to return.
+            * offset: The offset to define start point of resource lock
+                listing.
+            * sort_key: The key to sort a list of shares.
+            * sort_dir: The direction to sort a list of shares
+            * with_count: Whether to show count in API response or not,
+                default is False. This query parameter is useful with
+                pagination.
+
+        :returns: A generator of manila resource locks
+        :rtype: :class:`~openstack.shared_file_system.v2.
+            resource_locks.ResourceLock`
+        """
+        return self._list(_resource_locks.ResourceLock, **query)
+
+    def get_resource_lock(self, resource_lock):
+        """Show details of a resource lock.
+
+        :param resource_lock: The ID of a resource lock or a
+            :class:`~openstack.shared_file_system.v2.
+            resource_locks.ResourceLock` instance.
+        :returns: Details of the identified resource lock.
+        :rtype: :class:`~openstack.shared_file_system.v2.
+            resource_locks.ResourceLock`
+        """
+        return self._get(_resource_locks.ResourceLock, resource_lock)
+
+    def update_resource_lock(self, resource_lock, **attrs):
+        """Updates details of a single resource lock.
+
+        :param resource_lock: The ID of a resource lock or a
+            :class:`~openstack.shared_file_system.v2.
+            resource_locks.ResourceLock` instance.
+        :param dict attrs: The attributes to update on the resource lock
+        :returns: the updated resource lock
+        :rtype: :class:`~openstack.shared_file_system.v2.
+            resource_locks.ResourceLock`
+        """
+        return self._update(
+            _resource_locks.ResourceLock, resource_lock, **attrs
+        )
+
+    def delete_resource_lock(self, resource_lock, ignore_missing=True):
+        """Deletes a single resource lock
+
+        :param resource_lock: The ID of a resource lock or a
+            :class:`~openstack.shared_file_system.v2.
+            resource_locks.ResourceLock` instance.
+        :returns: Result of the ``delete``
+        :rtype: ``None``
+        """
+        return self._delete(
+            _resource_locks.ResourceLock,
+            resource_lock,
+            ignore_missing=ignore_missing,
+        )
+
+    def create_resource_lock(self, **attrs):
+        """Locks a resource.
+
+        :param dict attrs: Attributes which will be used to create
+            a :class:`~openstack.shared_file_system.v2.
+            resource_locks.ResourceLock`, comprised of the properties
+            on the ResourceLock class. Available parameters include:
+
+            * ``resource_id``: ID of the resource to be locked.
+            * ``resource_type``: type of the resource (share, access_rule).
+            * ``resource_action``: action to be locked (delete, show).
+            * ``lock_reason``: reason why you're locking the resource
+                (Optional).
+        :returns: Details of the lock
+        :rtype: :class:`~openstack.shared_file_system.v2.
+            resource_locks.ResourceLock`
+        """
+
+        if attrs.get('resource_type'):
+            # The _create method has a parameter named resource_type, which
+            # refers to the type of resource to be created, so we need to avoid
+            # a conflict of parameters we are sending to the method.
+            attrs['__conflicting_attrs'] = {
+                'resource_type': attrs.get('resource_type')
+            }
+            attrs.pop('resource_type')
+        return self._create(_resource_locks.ResourceLock, **attrs)
diff --git a/openstack/shared_file_system/v2/resource_locks.py b/openstack/shared_file_system/v2/resource_locks.py
new file mode 100644
index 0000000000000000000000000000000000000000..2d5731e131321b138c5016b083855a326323327f
--- /dev/null
+++ b/openstack/shared_file_system/v2/resource_locks.py
@@ -0,0 +1,73 @@
+# 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 resource
+
+
+class ResourceLock(resource.Resource):
+    resource_key = "resource_lock"
+    resources_key = "resource_locks"
+    base_path = "/resource-locks"
+
+    # capabilities
+    allow_create = True
+    allow_fetch = True
+    allow_commit = True
+    allow_delete = True
+    allow_list = True
+    allow_head = False
+
+    _query_mapping = resource.QueryParameters(
+        "project_id",
+        "created_since",
+        "created_before",
+        "limit",
+        "offset",
+        "id",
+        "resource_id",
+        "resource_type",
+        "resource_action",
+        "user_id",
+        "lock_context",
+        "lock_reason",
+        "lock_reason~",
+        "sort_key",
+        "sort_dir",
+        "with_count",
+        "all_projects",
+    )
+    # The resource was introduced in this microversion, so it is the minimum
+    # version to use it. Openstacksdk currently doesn't allow to set
+    # minimum microversions.
+    _max_microversion = '2.81'
+
+    #: Properties
+    #: The date and time stamp when the resource was created within the
+    #: service’s database.
+    created_at = resource.Body("created_at", type=str)
+    #: The date and time stamp when the resource was last modified within the
+    #: service’s database.
+    updated_at = resource.Body("updated_at", type=str)
+    #: The ID of the user that owns the lock
+    user_id = resource.Body("user_id", type=str)
+    #: The ID of the project that owns the lock.
+    project_id = resource.Body("project_id", type=str)
+    #: The type of the resource that is locked, i.e.: share, access rule.
+    resource_type = resource.Body("resource_type", type=str)
+    #: The UUID of the resource that is locked.
+    resource_id = resource.Body("resource_id", type=str)
+    #: What action is currently locked, i.e.: deletion, visibility of fields.
+    resource_action = resource.Body("resource_action", type=str)
+    #: The reason specified while the lock was being placed.
+    lock_reason = resource.Body("lock_reason", type=str)
+    #: The context that placed the lock (user, admin or service).
+    lock_context = resource.Body("lock_context", type=str)
diff --git a/openstack/shared_file_system/v2/share_access_rule.py b/openstack/shared_file_system/v2/share_access_rule.py
index 519c679b9c70d3907afaf0dd265304b4ac9ff041..66be8422387ed7fba41c6c0bb4ffa29b37d83453 100644
--- a/openstack/shared_file_system/v2/share_access_rule.py
+++ b/openstack/shared_file_system/v2/share_access_rule.py
@@ -16,7 +16,7 @@ from openstack import utils
 
 
 class ShareAccessRule(resource.Resource):
-    resource_key = "share_access_rule"
+    resource_key = "access"
     resources_key = "access_list"
     base_path = "/share-access-rules"
 
@@ -30,7 +30,8 @@ class ShareAccessRule(resource.Resource):
 
     _query_mapping = resource.QueryParameters("share_id")
 
-    _max_microversion = '2.45'
+    # Restricted access rules became available in 2.82
+    _max_microversion = '2.82'
 
     #: Properties
     #: The access credential of the entity granted share access.
@@ -56,6 +57,12 @@ class ShareAccessRule(resource.Resource):
     #: The date and time stamp when the resource was last updated within
     #: the service’s database.
     updated_at = resource.Body("updated_at", type=str)
+    #: Whether the visibility of some sensitive fields is restricted or not
+    lock_visibility = resource.Body("lock_visibility", type=bool)
+    #: Whether the deletion of the access rule should be restricted or not
+    lock_deletion = resource.Body("lock_deletion", type=bool)
+    #: Reason for placing the loc
+    lock_reason = resource.Body("lock_reason", type=bool)
 
     def _action(self, session, body, url, action='patch', microversion=None):
         headers = {'Accept': ''}
@@ -75,8 +82,12 @@ class ShareAccessRule(resource.Resource):
             **kwargs
         )
 
-    def delete(self, session, share_id, ignore_missing=True):
+    def delete(
+        self, session, share_id, ignore_missing=True, *, unrestrict=False
+    ):
         body = {"deny_access": {"access_id": self.id}}
+        if unrestrict:
+            body['deny_access']['unrestrict'] = True
         url = utils.urljoin("/shares", share_id, "action")
         response = self._action(session, body, url)
         try:
diff --git a/openstack/test/__pycache__/__init__.cpython-310.pyc b/openstack/test/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index f7dc8c4b0be1c43a0ed38e5846ae16c0784d23f0..0000000000000000000000000000000000000000
Binary files a/openstack/test/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/test/__pycache__/fakes.cpython-310.pyc b/openstack/test/__pycache__/fakes.cpython-310.pyc
deleted file mode 100644
index c8cbd125c374cad67c555bf0eae4d39ccb5b3e4f..0000000000000000000000000000000000000000
Binary files a/openstack/test/__pycache__/fakes.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/__pycache__/__init__.cpython-310.pyc b/openstack/tests/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 1d7f61f6e3fb0eb0fb4f552bef16d8e3689af22a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/__pycache__/base.cpython-310.pyc b/openstack/tests/__pycache__/base.cpython-310.pyc
deleted file mode 100644
index a1f893695259b6db74f122bb3bb79a13969827f4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/__pycache__/base.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/__pycache__/fakes.cpython-310.pyc b/openstack/tests/__pycache__/fakes.cpython-310.pyc
deleted file mode 100644
index 07806c4c0980586e4e11c3d191e9e00536a0142d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/__pycache__/fakes.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/__pycache__/fixtures.cpython-310.pyc b/openstack/tests/__pycache__/fixtures.cpython-310.pyc
deleted file mode 100644
index 87c192bfa648ed0fb88aea443eb89b2ae49e34d4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/__pycache__/fixtures.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index fe824d7ed34f9e62a25b0607c5c0b07f43e53166..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/__pycache__/base.cpython-310.pyc b/openstack/tests/functional/__pycache__/base.cpython-310.pyc
deleted file mode 100644
index 17108b5068bd3c4ee5fe4e0691ed4e593a678d26..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/__pycache__/base.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/baremetal/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 1aba53efe685d8e4c6596e239a4b2348728f8a02..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/baremetal/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/baremetal/__pycache__/base.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/base.cpython-310.pyc
deleted file mode 100644
index ca514f57ac8ace2231d142958ffefa9708c451e1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/baremetal/__pycache__/base.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_allocation.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_allocation.cpython-310.pyc
deleted file mode 100644
index 2a631e35494fc81ebf185fe3c783402223703ce6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_allocation.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_chassis.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_chassis.cpython-310.pyc
deleted file mode 100644
index 9a1eb96164a5e623f492c1eee03b5ccbab9c0a50..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_chassis.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_conductor.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_conductor.cpython-310.pyc
deleted file mode 100644
index 135aa6e9af0e3718766586e978d18e37a57e8212..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_conductor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_deploy_templates.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_deploy_templates.cpython-310.pyc
deleted file mode 100644
index e70dc0321334fefdcea84c9154dec3675799c247..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_deploy_templates.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_driver.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_driver.cpython-310.pyc
deleted file mode 100644
index ae4d9cce617488ac57cf88748dfcf3eceb4c69cc..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_driver.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_node.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_node.cpython-310.pyc
deleted file mode 100644
index 25bf1c06e096b97475645214324c0a96696fd7a8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_node.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_port.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_port.cpython-310.pyc
deleted file mode 100644
index b9615837348293ca6b2fe70019025496cdd1f5b3..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_port.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_port_group.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_port_group.cpython-310.pyc
deleted file mode 100644
index db2755fde4059c61426fce012547c42a01d8ee3f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_port_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_volume_connector.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_volume_connector.cpython-310.pyc
deleted file mode 100644
index a62b517c684ddf85aac35cdbc0d9680ffe3f9218..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_volume_connector.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_volume_target.cpython-310.pyc b/openstack/tests/functional/baremetal/__pycache__/test_baremetal_volume_target.cpython-310.pyc
deleted file mode 100644
index 6c3f6c751b7e3d842bc62ed325ee576db8b89f66..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/baremetal/__pycache__/test_baremetal_volume_target.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/block_storage/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 2ecdb79aa767c158b8105443b711bd235f51a0a3..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/block_storage/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index a4a324b5563c9b7df1e50a882083fa6ba17bac20..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v2/__pycache__/base.cpython-310.pyc b/openstack/tests/functional/block_storage/v2/__pycache__/base.cpython-310.pyc
deleted file mode 100644
index 1a6e4c00c646ebecea0bcaf6e2f5969fa808db2c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v2/__pycache__/base.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v2/__pycache__/test_backup.cpython-310.pyc b/openstack/tests/functional/block_storage/v2/__pycache__/test_backup.cpython-310.pyc
deleted file mode 100644
index 95b7c5e4b1ce458088ce586dfb2d6de68d21fbc7..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v2/__pycache__/test_backup.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc b/openstack/tests/functional/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc
deleted file mode 100644
index eb823979edb13659c0f4a06881f9b33803acc6b1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v2/__pycache__/test_stats.cpython-310.pyc b/openstack/tests/functional/block_storage/v2/__pycache__/test_stats.cpython-310.pyc
deleted file mode 100644
index 882bd967263fff9a3cbd89c3e9eb185c35d21892..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v2/__pycache__/test_stats.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v2/__pycache__/test_type.cpython-310.pyc b/openstack/tests/functional/block_storage/v2/__pycache__/test_type.cpython-310.pyc
deleted file mode 100644
index 431480819431840c07d22bc91ec65145ad9d29a3..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v2/__pycache__/test_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v2/__pycache__/test_volume.cpython-310.pyc b/openstack/tests/functional/block_storage/v2/__pycache__/test_volume.cpython-310.pyc
deleted file mode 100644
index d49a64940cd626d1f14f7b1fe94ae37695d46151..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v2/__pycache__/test_volume.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v3/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 103996e40cc691167bbac26fcd4172fc4ceb287a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v3/__pycache__/base.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/base.cpython-310.pyc
deleted file mode 100644
index 9ba32b4dfced2071e1a970096dce603087e692ed..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/base.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc
deleted file mode 100644
index f3622dbc19731c66a16d40b409228ddb4fc0235a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index cde54d3ae0e2822da2fba314e76359b51f67f125..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/test_availability_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v3/__pycache__/test_backup.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_backup.cpython-310.pyc
deleted file mode 100644
index 557a6adc1662332a45c24fa498b2ad384ba80f6a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/test_backup.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index be6a511d0b56926d18c9e1cf942d8157bbfa588f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/test_block_storage_summary.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc
deleted file mode 100644
index d878e12bb544cccde3680412bd4977c7930f4b96..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v3/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_extension.cpython-310.pyc
deleted file mode 100644
index 4757186e34e1352182a1295f9290dd656c977577..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/test_extension.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v3/__pycache__/test_group.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_group.cpython-310.pyc
deleted file mode 100644
index 7364297896477e40a649686fd2164f0a2d95cd06..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/test_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v3/__pycache__/test_limits.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_limits.cpython-310.pyc
deleted file mode 100644
index 43fa1aec2519a4e02227303e525ad4f171a5f097..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/test_limits.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 3eb10b2167da1d2a252fdcb6c9e53f2caf190de8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/test_resource_filters.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v3/__pycache__/test_service.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_service.cpython-310.pyc
deleted file mode 100644
index 1f1c85373b0149b45599f4281ba47bd63978e35b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/test_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc
deleted file mode 100644
index cf018d96a8fb89b2993b1cac0d6c2577bca05ea8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc
deleted file mode 100644
index 97d55b4927c8a7a0a5370e736c6df3ecc0f2d034..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v3/__pycache__/test_type.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_type.cpython-310.pyc
deleted file mode 100644
index fb4eabbb38ab803c895520bb5c5c5614167f3f51..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/test_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/block_storage/v3/__pycache__/test_volume.cpython-310.pyc b/openstack/tests/functional/block_storage/v3/__pycache__/test_volume.cpython-310.pyc
deleted file mode 100644
index 4c13429bf8febe40f7af85b5668b91f0ec7cab5e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/block_storage/v3/__pycache__/test_volume.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 2859674d188f754983bc50e04dbf32758d528812..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_aggregate.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_aggregate.cpython-310.pyc
deleted file mode 100644
index e36e58800d71d936912057e8b9c168c7c2a5d1f6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_aggregate.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_cluster_templates.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_cluster_templates.cpython-310.pyc
deleted file mode 100644
index 77c05b5e27340bec095c024e2d82de6910e61006..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_cluster_templates.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_clustering.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_clustering.cpython-310.pyc
deleted file mode 100644
index 6214df78e9ef13b626ee29eb27514a9a1d713ff9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_clustering.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_coe_clusters.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_coe_clusters.cpython-310.pyc
deleted file mode 100644
index c779f1d200c5d52631e232874db47a8f841a54f9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_coe_clusters.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_compute.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_compute.cpython-310.pyc
deleted file mode 100644
index 65af06d82712cb1c99099fc9c8c454f09fde1a28..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_compute.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_devstack.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_devstack.cpython-310.pyc
deleted file mode 100644
index c6684d2ed0a4d4556e052327fe1c1a14ca345565..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_devstack.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_domain.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_domain.cpython-310.pyc
deleted file mode 100644
index e7097b32ddd48ac85f50f65ad4c6d74fbc0cf2a4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_domain.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_endpoints.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_endpoints.cpython-310.pyc
deleted file mode 100644
index 8da2d9b86cbf59de863c9696a2d5b5baacedfb66..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_endpoints.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_flavor.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_flavor.cpython-310.pyc
deleted file mode 100644
index 6c7716e1b8a4c25aec8b3fe11cd483003c0a584e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_flavor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_floating_ip.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_floating_ip.cpython-310.pyc
deleted file mode 100644
index 468b42426485a429bcb32d510cb9f9bf5f856686..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_floating_ip.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc
deleted file mode 100644
index d655f9f86586e5e32fb15488a90a698b6394e1cf..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_groups.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_groups.cpython-310.pyc
deleted file mode 100644
index 7812c2518e7eb5d639abd43dc72615ae84f0c0ef..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_groups.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_identity.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_identity.cpython-310.pyc
deleted file mode 100644
index 6983c847cdbf25cdb7024174b9aac52e76ae2bc1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_identity.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_image.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_image.cpython-310.pyc
deleted file mode 100644
index 081bda714f166e44484037220e999dac8d1baf29..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_image.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_inventory.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_inventory.cpython-310.pyc
deleted file mode 100644
index 649bc575f5fccbfbf0919cc309e71846b9b9857f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_inventory.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_keypairs.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_keypairs.cpython-310.pyc
deleted file mode 100644
index 6379785bdacdba66c80351a97b1a4909aff9dd6f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_keypairs.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_limits.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_limits.cpython-310.pyc
deleted file mode 100644
index 0f8676aaf2df7f3da02dc446f71b2d757ac4f88d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_limits.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_magnum_services.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_magnum_services.cpython-310.pyc
deleted file mode 100644
index d62528465ccce6adb07d6cce6052419a0d501a5b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_magnum_services.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_network.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_network.cpython-310.pyc
deleted file mode 100644
index 5b7d4a7d9d2772690e21102e103f9210d27e9b66..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_network.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_object.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_object.cpython-310.pyc
deleted file mode 100644
index 4992787eb3c9e779334a1d6466fa975294690f51..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_object.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_port.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_port.cpython-310.pyc
deleted file mode 100644
index ff694d8bfecc4bd2e5c241cbdf74a6908a0fda8b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_port.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_project.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_project.cpython-310.pyc
deleted file mode 100644
index b3dbcee2a52d6f08a5b1fe270b3c07579b4b631b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_project.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_project_cleanup.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_project_cleanup.cpython-310.pyc
deleted file mode 100644
index f7908e8b8a7fe5daaaa28ea063a6ddc4d39ab09f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_project_cleanup.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 643f65b68e7b8e428f88cd1c6b9fb214cc7f701b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 406a4da611ba05bc78f9d037b699589cbe5c08d0..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 4057b035d43d2401ed24215a46b09667cb4fc239..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_qos_policy.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_qos_policy.cpython-310.pyc
deleted file mode 100644
index 42ebc4587b990d479181bbde2f75694a69a28f77..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_qos_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_quotas.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_quotas.cpython-310.pyc
deleted file mode 100644
index 5c51c036626798fdcded5afa7cf861808b79f632..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_quotas.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_range_search.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_range_search.cpython-310.pyc
deleted file mode 100644
index 07b1f098f2827dcd95a384a85a341ffe000225b8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_range_search.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_recordset.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_recordset.cpython-310.pyc
deleted file mode 100644
index 32bcd47bb8ceff9ab466e782383160038e6e2bac..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_recordset.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_router.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_router.cpython-310.pyc
deleted file mode 100644
index c76a73a8e26bb043d6c5dd95dd65c7e67e36cf25..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_router.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_security_groups.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_security_groups.cpython-310.pyc
deleted file mode 100644
index 17ceed6a271be4248f024461a65e503d44f02b9b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_security_groups.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_server_group.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_server_group.cpython-310.pyc
deleted file mode 100644
index 497a99f82e93988aa3da8de2b05c9ba31d454347..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_server_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_services.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_services.cpython-310.pyc
deleted file mode 100644
index 87ec18b8558495ef5254bf929c68a0ac20262361..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_services.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_stack.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_stack.cpython-310.pyc
deleted file mode 100644
index 65346f257421a56bc2952085eb4cf95616ba030f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_stack.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_users.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_users.cpython-310.pyc
deleted file mode 100644
index b841af4a534e56f5fdbe7abaee7b6afc468017e4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_users.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_volume.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_volume.cpython-310.pyc
deleted file mode 100644
index 16c963b44e9605fabe4aa15eab27477cdb405173..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_volume.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_volume_backup.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_volume_backup.cpython-310.pyc
deleted file mode 100644
index 2eea2b6fc72ecf0f7d2e60a17dff4ed89ddf8a4e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_volume_backup.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_volume_type.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_volume_type.cpython-310.pyc
deleted file mode 100644
index 77deb3daedf9f9a0a56556177a5c0e1bf920a282..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_volume_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/__pycache__/test_zone.cpython-310.pyc b/openstack/tests/functional/cloud/__pycache__/test_zone.cpython-310.pyc
deleted file mode 100644
index 6f0001200f95c44db94b249ce8af99e42521bae6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/cloud/__pycache__/test_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/cloud/test_compute.py b/openstack/tests/functional/cloud/test_compute.py
index 34a08b5ea022b82a21afb84493b78a34742bf45d..48930528ebf7f9a72345707a57a913ea077a84da 100644
--- a/openstack/tests/functional/cloud/test_compute.py
+++ b/openstack/tests/functional/cloud/test_compute.py
@@ -21,7 +21,7 @@ import datetime
 
 from fixtures import TimeoutException
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.tests.functional import base
 from openstack import utils
 
@@ -52,7 +52,7 @@ class TestCompute(base.BaseFunctionalTest):
             for volume in volumes:
                 if volume.status != 'deleting':
                     self.user_cloud.delete_volume(volume.id, wait=True)
-        except (exc.OpenStackCloudTimeout, TimeoutException):
+        except (exceptions.ResourceTimeout, TimeoutException):
             # Ups, some timeout occured during process of deletion server
             # or volumes, so now we will try to call delete each of them
             # once again and we will try to live with it
@@ -197,7 +197,7 @@ class TestCompute(base.BaseFunctionalTest):
     def test_list_all_servers_bad_permissions(self):
         # Normal users are not allowed to pass all_projects=True
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.user_cloud.list_servers,
             all_projects=True,
         )
@@ -252,7 +252,7 @@ class TestCompute(base.BaseFunctionalTest):
 
     def test_get_server_console_bad_server(self):
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.user_cloud.get_server_console,
             server=self.server_name,
         )
@@ -525,7 +525,7 @@ class TestCompute(base.BaseFunctionalTest):
         self.assertEqual(set(updated_server.metadata.items()), set([]))
 
         self.assertRaises(
-            exc.OpenStackCloudURINotFound,
+            exceptions.NotFoundException,
             self.user_cloud.delete_server_metadata,
             self.server_name,
             ['key1'],
diff --git a/openstack/tests/functional/cloud/test_domain.py b/openstack/tests/functional/cloud/test_domain.py
index 7053b9f03bdd5d62119054e17bbff9b7a364a619..b56943202c469b7ef893daa3196366490039c27b 100644
--- a/openstack/tests/functional/cloud/test_domain.py
+++ b/openstack/tests/functional/cloud/test_domain.py
@@ -17,7 +17,7 @@ test_domain
 Functional tests for keystone domain resource.
 """
 
-import openstack.cloud
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -45,9 +45,7 @@ class TestDomain(base.BaseFunctionalTest):
         if exception_list:
             # Raise an error: we must make users aware that something went
             # wrong
-            raise openstack.cloud.OpenStackCloudException(
-                '\n'.join(exception_list)
-            )
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def test_search_domains(self):
         domain_name = self.domain_prefix + '_search'
diff --git a/openstack/tests/functional/cloud/test_endpoints.py b/openstack/tests/functional/cloud/test_endpoints.py
index 9b2713c0d7fbb685daa3df4ce574f90d9d1a3353..e53fc7df79a2397c3c8e1c216e13300a765681f8 100644
--- a/openstack/tests/functional/cloud/test_endpoints.py
+++ b/openstack/tests/functional/cloud/test_endpoints.py
@@ -22,8 +22,8 @@ Functional tests for endpoint resource.
 import random
 import string
 
-from openstack.cloud.exc import OpenStackCloudException
 from openstack.cloud.exc import OpenStackCloudUnavailableFeature
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -65,7 +65,7 @@ class TestEndpoints(base.KeystoneBaseFunctionalTest):
         if exception_list:
             # Raise an error: we must make users aware that something went
             # wrong
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def _cleanup_services(self):
         exception_list = list()
@@ -82,7 +82,7 @@ class TestEndpoints(base.KeystoneBaseFunctionalTest):
         if exception_list:
             # Raise an error: we must make users aware that something went
             # wrong
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def test_create_endpoint(self):
         service_name = self.new_item_name + '_create'
diff --git a/openstack/tests/functional/cloud/test_flavor.py b/openstack/tests/functional/cloud/test_flavor.py
index c1ffc136fd885dac2a25edd0055b22ff0d618a39..29d2fd55570df944d9740f8c54d94acc8183c348 100644
--- a/openstack/tests/functional/cloud/test_flavor.py
+++ b/openstack/tests/functional/cloud/test_flavor.py
@@ -19,7 +19,7 @@ test_flavor
 Functional tests for flavor resource.
 """
 
-from openstack.cloud.exc import OpenStackCloudException
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -47,7 +47,7 @@ class TestFlavor(base.BaseFunctionalTest):
         if exception_list:
             # Raise an error: we must make users aware that something went
             # wrong
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def test_create_flavor(self):
         if not self.operator_cloud:
diff --git a/openstack/tests/functional/cloud/test_floating_ip.py b/openstack/tests/functional/cloud/test_floating_ip.py
index 96df485c52bf3ffe918b006a35b838a326bdc3c7..b280199915ee0f66ac15fc6a7c237937bd858c19 100644
--- a/openstack/tests/functional/cloud/test_floating_ip.py
+++ b/openstack/tests/functional/cloud/test_floating_ip.py
@@ -24,8 +24,8 @@ import sys
 
 from testtools import content
 
-from openstack.cloud.exc import OpenStackCloudException
 from openstack.cloud import meta
+from openstack import exceptions
 from openstack import proxy
 from openstack.tests.functional import base
 from openstack import utils
@@ -116,7 +116,7 @@ class TestFloatingIP(base.BaseFunctionalTest):
         if exception_list:
             # Raise an error: we must make users aware that something went
             # wrong
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def _cleanup_ips(self, server):
         exception_list = list()
@@ -137,7 +137,7 @@ class TestFloatingIP(base.BaseFunctionalTest):
         if exception_list:
             # Raise an error: we must make users aware that something went
             # wrong
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def _setup_networks(self):
         if self.user_cloud.has_service('network'):
diff --git a/openstack/tests/functional/cloud/test_groups.py b/openstack/tests/functional/cloud/test_groups.py
index 729b4a1d9c9db3f24d24815421c0278a4e1fde19..1e4219d496c1df756b1d47fbf178eafc95f85c9f 100644
--- a/openstack/tests/functional/cloud/test_groups.py
+++ b/openstack/tests/functional/cloud/test_groups.py
@@ -17,7 +17,7 @@ test_groups
 Functional tests for keystone group resource.
 """
 
-import openstack.cloud
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -46,9 +46,7 @@ class TestGroup(base.BaseFunctionalTest):
         if exception_list:
             # Raise an error: we must make users aware that something went
             # wrong
-            raise openstack.cloud.OpenStackCloudException(
-                '\n'.join(exception_list)
-            )
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def test_create_group(self):
         group_name = self.group_prefix + '_create'
diff --git a/openstack/tests/functional/cloud/test_identity.py b/openstack/tests/functional/cloud/test_identity.py
index ab5a0a6301267ead798347de426a96ee423e9405..b8a8df251e5e7f663ff5709ea91ab917ce702907 100644
--- a/openstack/tests/functional/cloud/test_identity.py
+++ b/openstack/tests/functional/cloud/test_identity.py
@@ -20,7 +20,7 @@ Functional tests for identity methods.
 import random
 import string
 
-from openstack.cloud.exc import OpenStackCloudException
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -53,7 +53,7 @@ class TestIdentity(base.KeystoneBaseFunctionalTest):
         if exception_list:
             # Raise an error: we must make users aware that something went
             # wrong
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def _cleanup_users(self):
         exception_list = list()
@@ -66,7 +66,7 @@ class TestIdentity(base.KeystoneBaseFunctionalTest):
                     continue
 
         if exception_list:
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def _cleanup_roles(self):
         exception_list = list()
@@ -79,7 +79,7 @@ class TestIdentity(base.KeystoneBaseFunctionalTest):
                     continue
 
         if exception_list:
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def _create_user(self, **kwargs):
         domain_id = None
diff --git a/openstack/tests/functional/cloud/test_network.py b/openstack/tests/functional/cloud/test_network.py
index ee6508cd462edc387be10904e1a9873360b230d4..9e170afe5aa04f6ba9ac16c01264e5d9894e7033 100644
--- a/openstack/tests/functional/cloud/test_network.py
+++ b/openstack/tests/functional/cloud/test_network.py
@@ -17,7 +17,7 @@ test_network
 Functional tests for network methods.
 """
 
-from openstack.cloud.exc import OpenStackCloudException
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -43,7 +43,7 @@ class TestNetwork(base.BaseFunctionalTest):
                     continue
 
         if exception_list:
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def test_create_network_basic(self):
         net1 = self.operator_cloud.create_network(name=self.network_name)
diff --git a/openstack/tests/functional/cloud/test_object.py b/openstack/tests/functional/cloud/test_object.py
index 6212d783ddc8773d984bd337761fee55a89999fd..88e373d4cac190aa32451a6c475cc0df0e145a41 100644
--- a/openstack/tests/functional/cloud/test_object.py
+++ b/openstack/tests/functional/cloud/test_object.py
@@ -23,7 +23,7 @@ import tempfile
 
 from testtools import content
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -97,7 +97,7 @@ class TestObject(base.BaseFunctionalTest):
                 self.assertIsNotNone(
                     self.user_cloud.get_object(container_name, name)
                 )
-            except exc.OpenStackCloudException as e:
+            except exceptions.SDKException as e:
                 self.addDetail(
                     'failed_response',
                     content.text_content(str(e.response.headers)),
@@ -186,7 +186,7 @@ class TestObject(base.BaseFunctionalTest):
                     )
                     downloaded_content = open(fake_file.name, 'rb').read()
                     self.assertEqual(fake_content, downloaded_content)
-            except exc.OpenStackCloudException as e:
+            except exceptions.SDKException as e:
                 self.addDetail(
                     'failed_response',
                     content.text_content(str(e.response.headers)),
diff --git a/openstack/tests/functional/cloud/test_port.py b/openstack/tests/functional/cloud/test_port.py
index 51afd6596be2b6341d8573c3f4e4a52b017d1a50..ea407d453e8c6836b804cbfb9bbfe4ad75eb220f 100644
--- a/openstack/tests/functional/cloud/test_port.py
+++ b/openstack/tests/functional/cloud/test_port.py
@@ -22,7 +22,7 @@ Functional tests for port resource.
 import random
 import string
 
-from openstack.cloud.exc import OpenStackCloudException
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -59,7 +59,7 @@ class TestPort(base.BaseFunctionalTest):
         if exception_list:
             # Raise an error: we must make users aware that something went
             # wrong
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def test_create_port(self):
         port_name = self.new_port_name + '_create'
diff --git a/openstack/tests/functional/cloud/test_project.py b/openstack/tests/functional/cloud/test_project.py
index bb7d5f81695ef25cdf70451d17f90013249881ff..421c5a7d51f46861f5735e2efdc84eb045162a58 100644
--- a/openstack/tests/functional/cloud/test_project.py
+++ b/openstack/tests/functional/cloud/test_project.py
@@ -20,7 +20,7 @@ Functional tests for project resource.
 """
 import pprint
 
-from openstack.cloud.exc import OpenStackCloudException
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -43,7 +43,7 @@ class TestProject(base.KeystoneBaseFunctionalTest):
                     exception_list.append(str(e))
                     continue
         if exception_list:
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def test_create_project(self):
         project_name = self.new_project_name + '_create'
diff --git a/openstack/tests/functional/cloud/test_qos_bandwidth_limit_rule.py b/openstack/tests/functional/cloud/test_qos_bandwidth_limit_rule.py
index 0fb323f7d41e9022088419d79dce6cdbafd4abfa..2d729e7b567221be61803dfe13ad5dacd39eb19a 100644
--- a/openstack/tests/functional/cloud/test_qos_bandwidth_limit_rule.py
+++ b/openstack/tests/functional/cloud/test_qos_bandwidth_limit_rule.py
@@ -18,7 +18,7 @@ test_qos_bandwidth_limit_rule
 Functional tests for QoS bandwidth limit methods.
 """
 
-from openstack.cloud.exc import OpenStackCloudException
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -41,7 +41,7 @@ class TestQosBandwidthLimitRule(base.BaseFunctionalTest):
         try:
             self.operator_cloud.delete_qos_policy(self.policy['id'])
         except Exception as e:
-            raise OpenStackCloudException(e)
+            raise exceptions.SDKException(e)
 
     def test_qos_bandwidth_limit_rule_lifecycle(self):
         max_kbps = 1500
diff --git a/openstack/tests/functional/cloud/test_qos_dscp_marking_rule.py b/openstack/tests/functional/cloud/test_qos_dscp_marking_rule.py
index 69822c8389fe5f86ddbfd4659106fa38ee87bfce..0ce43e896e87aaa61189e6f144ca67a142b390d8 100644
--- a/openstack/tests/functional/cloud/test_qos_dscp_marking_rule.py
+++ b/openstack/tests/functional/cloud/test_qos_dscp_marking_rule.py
@@ -18,7 +18,7 @@ test_qos_dscp_marking_rule
 Functional tests for QoS DSCP marking rule methods.
 """
 
-from openstack.cloud.exc import OpenStackCloudException
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -41,7 +41,7 @@ class TestQosDscpMarkingRule(base.BaseFunctionalTest):
         try:
             self.operator_cloud.delete_qos_policy(self.policy['id'])
         except Exception as e:
-            raise OpenStackCloudException(e)
+            raise exceptions.SDKException(e)
 
     def test_qos_dscp_marking_rule_lifecycle(self):
         dscp_mark = 16
diff --git a/openstack/tests/functional/cloud/test_qos_minimum_bandwidth_rule.py b/openstack/tests/functional/cloud/test_qos_minimum_bandwidth_rule.py
index d70387a63d788028f39375905aea578943052fe6..2810f67aa87390ece164b849228d4ecba222edd8 100644
--- a/openstack/tests/functional/cloud/test_qos_minimum_bandwidth_rule.py
+++ b/openstack/tests/functional/cloud/test_qos_minimum_bandwidth_rule.py
@@ -18,7 +18,7 @@ test_qos_minumum_bandwidth_rule
 Functional tests for QoS minimum bandwidth methods.
 """
 
-from openstack.cloud.exc import OpenStackCloudException
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -41,7 +41,7 @@ class TestQosMinimumBandwidthRule(base.BaseFunctionalTest):
         try:
             self.operator_cloud.delete_qos_policy(self.policy['id'])
         except Exception as e:
-            raise OpenStackCloudException(e)
+            raise exceptions.SDKException(e)
 
     def test_qos_minimum_bandwidth_rule_lifecycle(self):
         min_kbps = 1500
diff --git a/openstack/tests/functional/cloud/test_qos_policy.py b/openstack/tests/functional/cloud/test_qos_policy.py
index ff366e4d2f08d7bb369424447677cc0d4ebeb5b0..002f4975724ed27af4f706573686c944a34043e9 100644
--- a/openstack/tests/functional/cloud/test_qos_policy.py
+++ b/openstack/tests/functional/cloud/test_qos_policy.py
@@ -18,7 +18,7 @@ test_qos_policy
 Functional tests for QoS policies methods.
 """
 
-from openstack.cloud.exc import OpenStackCloudException
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -45,7 +45,7 @@ class TestQosPolicy(base.BaseFunctionalTest):
                     continue
 
         if exception_list:
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def test_create_qos_policy_basic(self):
         policy = self.operator_cloud.create_qos_policy(name=self.policy_name)
diff --git a/openstack/tests/functional/cloud/test_range_search.py b/openstack/tests/functional/cloud/test_range_search.py
index c0a186c0a9e9a3194f7d9f1ed97e2c4357bee3ec..d6662511eedba8eb45583414361051a5a7f1e6f8 100644
--- a/openstack/tests/functional/cloud/test_range_search.py
+++ b/openstack/tests/functional/cloud/test_range_search.py
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -28,7 +28,7 @@ class TestRangeSearch(base.BaseFunctionalTest):
     def test_range_search_bad_range(self):
         flavors = self.user_cloud.list_flavors(get_extra=False)
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.user_cloud.range_search,
             flavors,
             {"ram": "<1a0"},
diff --git a/openstack/tests/functional/cloud/test_router.py b/openstack/tests/functional/cloud/test_router.py
index 1b0db53640a52f3209d16387bd437488b4623cd1..1968492a333678d157cb29c2c520a32ade9834ba 100644
--- a/openstack/tests/functional/cloud/test_router.py
+++ b/openstack/tests/functional/cloud/test_router.py
@@ -19,7 +19,7 @@ Functional tests for router methods.
 
 import ipaddress
 
-from openstack.cloud.exc import OpenStackCloudException
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -64,7 +64,7 @@ class TestRouter(base.BaseFunctionalTest):
                     continue
 
         if exception_list:
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def _cleanup_networks(self):
         exception_list = list()
@@ -77,7 +77,7 @@ class TestRouter(base.BaseFunctionalTest):
                     continue
 
         if exception_list:
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def _cleanup_subnets(self):
         exception_list = list()
@@ -90,7 +90,7 @@ class TestRouter(base.BaseFunctionalTest):
                     continue
 
         if exception_list:
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def test_create_router_basic(self):
         net1_name = self.network_prefix + '_net1'
diff --git a/openstack/tests/functional/cloud/test_services.py b/openstack/tests/functional/cloud/test_services.py
index 92aa5cc6c19d3c3912211a63ef450e67d45be2c8..c7639af2ae4abc88b91cc1bd8910d865475caa98 100644
--- a/openstack/tests/functional/cloud/test_services.py
+++ b/openstack/tests/functional/cloud/test_services.py
@@ -22,8 +22,8 @@ Functional tests for service resource.
 import random
 import string
 
-from openstack.cloud.exc import OpenStackCloudException
-from openstack.cloud.exc import OpenStackCloudUnavailableFeature
+from openstack.cloud import exc
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -57,7 +57,7 @@ class TestServices(base.KeystoneBaseFunctionalTest):
         if exception_list:
             # Raise an error: we must make users aware that something went
             # wrong
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def test_create_service(self):
         service = self.operator_cloud.create_service(
@@ -72,7 +72,7 @@ class TestServices(base.KeystoneBaseFunctionalTest):
         if ver.startswith('2'):
             # NOTE(SamYaple): Update service only works with v3 api
             self.assertRaises(
-                OpenStackCloudUnavailableFeature,
+                exc.OpenStackCloudUnavailableFeature,
                 self.operator_cloud.update_service,
                 'service_id',
                 name='new name',
diff --git a/openstack/tests/functional/cloud/test_stack.py b/openstack/tests/functional/cloud/test_stack.py
index c3399e29ae80ac70df1c5f3e73b342fcc5ca82af..81190a384af1d5f1489d03a90887908f7ef012d9 100644
--- a/openstack/tests/functional/cloud/test_stack.py
+++ b/openstack/tests/functional/cloud/test_stack.py
@@ -19,7 +19,7 @@ Functional tests for stack methods.
 
 import tempfile
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.functional import base
 
@@ -88,7 +88,7 @@ class TestStack(base.BaseFunctionalTest):
         test_template.close()
         stack_name = self.getUniqueString('validate_template')
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.user_cloud.create_stack,
             name=stack_name,
             template_file=test_template.name,
diff --git a/openstack/tests/functional/cloud/test_users.py b/openstack/tests/functional/cloud/test_users.py
index 45572a2f9cf78698577c2303e8a02ffd37636653..08c02ee7d9a8e90136a33be920dbb6033322457a 100644
--- a/openstack/tests/functional/cloud/test_users.py
+++ b/openstack/tests/functional/cloud/test_users.py
@@ -17,7 +17,7 @@ test_users
 Functional tests for user methods.
 """
 
-from openstack.cloud.exc import OpenStackCloudException
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -41,7 +41,7 @@ class TestUsers(base.KeystoneBaseFunctionalTest):
                     continue
 
         if exception_list:
-            raise OpenStackCloudException('\n'.join(exception_list))
+            raise exceptions.SDKException('\n'.join(exception_list))
 
     def _create_user(self, **kwargs):
         domain_id = None
diff --git a/openstack/tests/functional/cloud/test_volume.py b/openstack/tests/functional/cloud/test_volume.py
index 551f75b9ca631d97c47385ec134c976e1878df3c..d8c7df283b33c1e1816a5066ed60a79ccefe0020 100644
--- a/openstack/tests/functional/cloud/test_volume.py
+++ b/openstack/tests/functional/cloud/test_volume.py
@@ -20,7 +20,7 @@ Functional tests for block storage methods.
 from fixtures import TimeoutException
 from testtools import content
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.tests.functional import base
 from openstack import utils
 
@@ -123,7 +123,7 @@ class TestVolume(base.BaseFunctionalTest):
                             break
                     if not found:
                         break
-            except (exc.OpenStackCloudTimeout, TimeoutException):
+            except (exceptions.ResourceTimeout, TimeoutException):
                 # NOTE(slaweq): ups, some volumes are still not removed
                 # so we should try to force delete it once again and move
                 # forward
diff --git a/openstack/tests/functional/cloud/test_volume_type.py b/openstack/tests/functional/cloud/test_volume_type.py
index 51494ecbe360020bbf238e899d9131ff753ac065..1e527cba022c49b663289a03923320cd6068fe0e 100644
--- a/openstack/tests/functional/cloud/test_volume_type.py
+++ b/openstack/tests/functional/cloud/test_volume_type.py
@@ -20,7 +20,7 @@ Functional tests for block storage methods.
 """
 import testtools
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.tests.functional import base
 
 
@@ -94,7 +94,7 @@ class TestVolumeType(base.BaseFunctionalTest):
 
     def test_add_volume_type_access_missing_volume(self):
         with testtools.ExpectedException(
-            exc.OpenStackCloudException, "VolumeType not found.*"
+            exceptions.SDKException, "VolumeType not found.*"
         ):
             self.operator_cloud.add_volume_type_access(
                 'MISSING_VOLUME_TYPE', self.operator_cloud.current_project_id
@@ -102,7 +102,7 @@ class TestVolumeType(base.BaseFunctionalTest):
 
     def test_remove_volume_type_access_missing_volume(self):
         with testtools.ExpectedException(
-            exc.OpenStackCloudException, "VolumeType not found.*"
+            exceptions.SDKException, "VolumeType not found.*"
         ):
             self.operator_cloud.remove_volume_type_access(
                 'MISSING_VOLUME_TYPE', self.operator_cloud.current_project_id
@@ -110,7 +110,7 @@ class TestVolumeType(base.BaseFunctionalTest):
 
     def test_add_volume_type_access_bad_project(self):
         with testtools.ExpectedException(
-            exc.OpenStackCloudBadRequest, "Unable to authorize.*"
+            exceptions.BadRequestException, "Unable to authorize.*"
         ):
             self.operator_cloud.add_volume_type_access(
                 'test-volume-type', 'BAD_PROJECT_ID'
@@ -118,7 +118,7 @@ class TestVolumeType(base.BaseFunctionalTest):
 
     def test_remove_volume_type_access_missing_project(self):
         with testtools.ExpectedException(
-            exc.OpenStackCloudURINotFound, "Unable to revoke.*"
+            exceptions.NotFoundException, "Unable to revoke.*"
         ):
             self.operator_cloud.remove_volume_type_access(
                 'test-volume-type', '00000000000000000000000000000000'
diff --git a/openstack/tests/functional/clustering/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/clustering/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index e53b1551c1657ebe25062fe0b909e3b807d95f57..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/clustering/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/clustering/__pycache__/test_cluster.cpython-310.pyc b/openstack/tests/functional/clustering/__pycache__/test_cluster.cpython-310.pyc
deleted file mode 100644
index 1a302751f067605a1a21690894ff370e0cd3f826..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/clustering/__pycache__/test_cluster.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/compute/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/compute/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index dcfdbc6dd2426ed42ae482ab78f34e8472d6f51b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/compute/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/compute/__pycache__/base.cpython-310.pyc b/openstack/tests/functional/compute/__pycache__/base.cpython-310.pyc
deleted file mode 100644
index e8a6e3d950331591eac20b12c7c97dc60f4482c2..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/compute/__pycache__/base.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/compute/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 5ff152a7138c995a84159047f2a55fb7f75c1ac9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/compute/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/compute/v2/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_extension.cpython-310.pyc
deleted file mode 100644
index 13ab494937b00b5fbdc56e6c7476586077a710e2..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/compute/v2/__pycache__/test_extension.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/compute/v2/__pycache__/test_flavor.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_flavor.cpython-310.pyc
deleted file mode 100644
index 0245c41bf29c9a2881bb62c0083032382ad09476..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/compute/v2/__pycache__/test_flavor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc
deleted file mode 100644
index d71b74f10ba24a4f2a42eff4f55ae41ba6f25dd2..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/compute/v2/__pycache__/test_image.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_image.cpython-310.pyc
deleted file mode 100644
index f0a0fde5c586d2ace2beba4eb1b566f82199fac5..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/compute/v2/__pycache__/test_image.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/compute/v2/__pycache__/test_keypair.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_keypair.cpython-310.pyc
deleted file mode 100644
index 575eb2b36dac51f2f0473e0275b0cf80e6d37e02..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/compute/v2/__pycache__/test_keypair.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/compute/v2/__pycache__/test_limits.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_limits.cpython-310.pyc
deleted file mode 100644
index 29b92644f03a3db79ccee362c1e499e5bf5f4ea9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/compute/v2/__pycache__/test_limits.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/compute/v2/__pycache__/test_quota_set.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_quota_set.cpython-310.pyc
deleted file mode 100644
index ef465f179dd92ccaf954799048076b3a4dde0e55..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/compute/v2/__pycache__/test_quota_set.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/compute/v2/__pycache__/test_server.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_server.cpython-310.pyc
deleted file mode 100644
index 7ae651e9585c2c5dd9131c449344bf433682353d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/compute/v2/__pycache__/test_server.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/compute/v2/__pycache__/test_service.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_service.cpython-310.pyc
deleted file mode 100644
index abd4f160e21e80164cf53cb3e0dfbf809bd682b8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/compute/v2/__pycache__/test_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc b/openstack/tests/functional/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc
deleted file mode 100644
index 6a495b691bd771219af2c89bfba17d0b554f15e8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/dns/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/dns/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 9a939319c85d7103c7abf3a63d5a53afce2d91bc..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/dns/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/dns/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/dns/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index a76949976644318876dc07539fcfcdf3373fdb76..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/dns/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/dns/v2/__pycache__/test_zone.cpython-310.pyc b/openstack/tests/functional/dns/v2/__pycache__/test_zone.cpython-310.pyc
deleted file mode 100644
index 5dce2ca744390f4ce583f7ebbfea64501e1cf3b5..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/dns/v2/__pycache__/test_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/dns/v2/__pycache__/test_zone_share.cpython-310.pyc b/openstack/tests/functional/dns/v2/__pycache__/test_zone_share.cpython-310.pyc
deleted file mode 100644
index 02e267350a15fd0dc854d1171019590ccd1c5174..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/dns/v2/__pycache__/test_zone_share.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/examples/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/examples/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 65f91567d6f11a8215ac35c259de71bec0d29180..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/examples/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/examples/__pycache__/test_compute.cpython-310.pyc b/openstack/tests/functional/examples/__pycache__/test_compute.cpython-310.pyc
deleted file mode 100644
index 8683c4de3a11e15155675ce34fac8b431584c46b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/examples/__pycache__/test_compute.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/examples/__pycache__/test_identity.cpython-310.pyc b/openstack/tests/functional/examples/__pycache__/test_identity.cpython-310.pyc
deleted file mode 100644
index e8af2e7762afbdd4c2f2e1a0c57fd7f63697f7db..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/examples/__pycache__/test_identity.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/examples/__pycache__/test_image.cpython-310.pyc b/openstack/tests/functional/examples/__pycache__/test_image.cpython-310.pyc
deleted file mode 100644
index 6d48df5c5bf2912f57035e849e9f6b2b4665f02a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/examples/__pycache__/test_image.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/examples/__pycache__/test_network.cpython-310.pyc b/openstack/tests/functional/examples/__pycache__/test_network.cpython-310.pyc
deleted file mode 100644
index 1a0e698cd1cb807ae9921fd5d2e2658b717d31d8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/examples/__pycache__/test_network.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/identity/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/identity/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 1076c9bb01e137463a4679724f22c3108cfafb77..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/identity/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/identity/v3/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/identity/v3/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 68fd68db1259e395e680de41049efe3de72a504f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/identity/v3/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/identity/v3/__pycache__/test_application_credential.cpython-310.pyc b/openstack/tests/functional/identity/v3/__pycache__/test_application_credential.cpython-310.pyc
deleted file mode 100644
index 0da38de9566d501884cbfbe1ab03ec48716b5342..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/identity/v3/__pycache__/test_application_credential.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/identity/v3/__pycache__/test_domain_config.cpython-310.pyc b/openstack/tests/functional/identity/v3/__pycache__/test_domain_config.cpython-310.pyc
deleted file mode 100644
index b166600ce1078fd6008a1475d6ccb4034c4fbb64..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/identity/v3/__pycache__/test_domain_config.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/image/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/image/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index b065b1876a86cf0c69df0f72906d3ddfba225337..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/image/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/image/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index ce0a7d86e96dc8b004d7959f68ed3f18bd901dba..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/image/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/image/v2/__pycache__/base.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/base.cpython-310.pyc
deleted file mode 100644
index 60cdab71751701890a3c86f017784d920c1347f1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/image/v2/__pycache__/base.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/image/v2/__pycache__/test_image.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/test_image.cpython-310.pyc
deleted file mode 100644
index d9260dcfae94bad0252bce657d0e62b3c70f62c7..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/image/v2/__pycache__/test_image.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc
deleted file mode 100644
index 080b55bd7622994f604b317d78d9920e6dc4edb8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/image/v2/__pycache__/test_metadef_object.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/test_metadef_object.cpython-310.pyc
deleted file mode 100644
index 1706f7725490a1a30f39ce8dbe5e5d87a6a51131..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/image/v2/__pycache__/test_metadef_object.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/image/v2/__pycache__/test_metadef_property.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/test_metadef_property.cpython-310.pyc
deleted file mode 100644
index c12f1eb915a65ef28e2ddc8c4386fc43a152e66a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/image/v2/__pycache__/test_metadef_property.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index ef8d61c115c8d7494fb4de26666a6051c3fb30dc..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/image/v2/__pycache__/test_metadef_resource_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc
deleted file mode 100644
index aed5bc8d3abd707fcd12fd054d6411188b18c42a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/image/v2/__pycache__/test_schema.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/test_schema.cpython-310.pyc
deleted file mode 100644
index 1411d1314eec9852c9cb99f97974c1171f1e272c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/image/v2/__pycache__/test_schema.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/image/v2/__pycache__/test_task.cpython-310.pyc b/openstack/tests/functional/image/v2/__pycache__/test_task.cpython-310.pyc
deleted file mode 100644
index 81d8a446e4daea7cad3a0c6342397db8ae299777..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/image/v2/__pycache__/test_task.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/instance_ha/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/instance_ha/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 8e72d74fd51eff0ff843db40f7a628f45ad564ba..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/instance_ha/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/instance_ha/__pycache__/test_host.cpython-310.pyc b/openstack/tests/functional/instance_ha/__pycache__/test_host.cpython-310.pyc
deleted file mode 100644
index 86347ac62cdeb875f9c388da9286e826a092d4f1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/instance_ha/__pycache__/test_host.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/instance_ha/__pycache__/test_segment.cpython-310.pyc b/openstack/tests/functional/instance_ha/__pycache__/test_segment.cpython-310.pyc
deleted file mode 100644
index 8f6acc10077e3ae9245a4fba3db0eb33ec4b1d14..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/instance_ha/__pycache__/test_segment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/load_balancer/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/load_balancer/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 9bfd1f7f7859d10d4d01fbbf41eeaa9eb66bc437..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/load_balancer/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/load_balancer/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/load_balancer/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 6b1902109433dd4e43b44d98aacfe188e055cd18..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/load_balancer/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 4c17774a87344523f60747715748a3a7082e6850..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/load_balancer/v2/__pycache__/test_load_balancer.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/network/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 59555e84bb6d9b9199ef28a677577a4396bf814d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 4ccd38e0b0dc9010c71509e8d4d72b9a95becb3a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_address_group.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_address_group.cpython-310.pyc
deleted file mode 100644
index d5af8f7893ae3ef69c5964d3ce03fec37f979e1e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_address_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_address_scope.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_address_scope.cpython-310.pyc
deleted file mode 100644
index 771ba7ac4637a3b6bb6edf878ab9662b5a458061..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_address_scope.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_agent.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_agent.cpython-310.pyc
deleted file mode 100644
index 0cdfba30d5c7fc2d9e2c6d612d3a9bbd646a52d0..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_agent.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index b2a42b55b1e88f74f51352afdcf200145e08a4e2..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_agent_add_remove_network.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 95b00821c5726dd6232d5a80b2cd04d4c1b02e55..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_agent_add_remove_router.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index bc070513f8e3d20bfeaa4d4fe35a4065a30c80df..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_auto_allocated_topology.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_availability_zone.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_availability_zone.cpython-310.pyc
deleted file mode 100644
index 0f4f066e2aa1ed480d983669548d0b622dd94634..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_availability_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_bgp.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_bgp.cpython-310.pyc
deleted file mode 100644
index 9a38357e6cf6975b1b24229498c91b9eaa689ba0..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_bgp.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc
deleted file mode 100644
index 7859c68d2fd12e18bd1f4eccab2e88bdd92469de..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 449032687ec7b1ba03ad043ff732305b0099bea6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_default_security_group_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_dvr_router.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_dvr_router.cpython-310.pyc
deleted file mode 100644
index 2599cf4093c64a25adb3b1b2e715c569df16b991..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_dvr_router.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_extension.cpython-310.pyc
deleted file mode 100644
index 6eb71ff7e933938e4838ae4961149bd066dd7e5d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_extension.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_firewall_group.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_firewall_group.cpython-310.pyc
deleted file mode 100644
index 690fcb15871eadff847a146db9c599977608722a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_firewall_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc
deleted file mode 100644
index b487a920df88df364c0905f656bd9ae9cf8ae4e4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc
deleted file mode 100644
index 1ff24c221a823e486ddbc33bed9fa0e6cfae5732..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index bb1196d1531d446cad67f70b944d89daf4952f5f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_firewall_rule_insert_remove_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_flavor.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_flavor.cpython-310.pyc
deleted file mode 100644
index 48b2906bf6c8b84e47b215b52ae910d1aa05fbb1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_flavor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_floating_ip.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_floating_ip.cpython-310.pyc
deleted file mode 100644
index 12a5b58140aa69add10ef94d7848d2b01a878da7..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_floating_ip.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index bcc5f39c03ccd5c32c27a940492a381a15e5ab31..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_l3_conntrack_helper.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_local_ip.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_local_ip.cpython-310.pyc
deleted file mode 100644
index 0915eb8ed4f41754f6716af2fba23c57c98cf1f4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_local_ip.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 4b30a7037d4cf86877313d37a4f0daf1fb4654c7..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_local_ip_association.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc
deleted file mode 100644
index 1758f056abfae336add6ec628858fa3e5cc3568a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_network.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_network.cpython-310.pyc
deleted file mode 100644
index 046c0afebab81ac698833afe3ec8490455cc1da9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_network.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 8e6c06e003fe44c8c730726f53d11ff2b0693b30..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_network_ip_availability.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index c3d3e4e9c584bd9f96c22ddc60f95ae88e980e9c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_network_segment_range.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_port.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_port.cpython-310.pyc
deleted file mode 100644
index c16d6e030c63895d37de3d4f70985c6b70e3e232..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_port.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc
deleted file mode 100644
index 8ff798174b1e55683d64c533cf35e7c7a3555689..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 255b9f4b0cc1e09bc13eb3be9c5281850a97f2e8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 69381517e15674bdbddbdb8a6dfd19a80359ab29..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 1b78100f0b5f18295f12afa96999b9ca54eec683..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 21c3d841a8672831c8a5f56d03f903663cc321d6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_qos_minimum_packet_rate_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_qos_policy.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_qos_policy.cpython-310.pyc
deleted file mode 100644
index 044594b5fbfd6d303b3cc702a5b0c7794ec44128..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_qos_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 5f4b4ba8be556a75aa74aa5c1b90a5de7d38526a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_qos_rule_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_quota.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_quota.cpython-310.pyc
deleted file mode 100644
index 4190480d76264948ddffc399cb40e1830f139756..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_quota.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc
deleted file mode 100644
index f0b8dd52c05565c1d472601a8d24509b78ce3336..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_router.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_router.cpython-310.pyc
deleted file mode 100644
index 969ed679e223d8ce4f08f627e4725e83e73a138c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_router.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index fa05ccddd5063167aaf19ba1c97b2e75dd51b14e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_router_add_remove_interface.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_security_group.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_security_group.cpython-310.pyc
deleted file mode 100644
index 92dbbd31159ad50e3b39bf7f5d814a9926a9111f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_security_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 7b42bf829abdc80c54c27481b33889e7024e7077..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_security_group_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_segment.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_segment.cpython-310.pyc
deleted file mode 100644
index 1fa7ec6e80be2b5f218257dacef8b8fe764adb47..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_segment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_service_profile.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_service_profile.cpython-310.pyc
deleted file mode 100644
index aaa3b01c1785886188735dd5ba3ae6d78cbdebd7..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_service_profile.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_service_provider.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_service_provider.cpython-310.pyc
deleted file mode 100644
index 889bcfb2e508f09b924d2184e28926da9b0af715..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_service_provider.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_sfc.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_sfc.cpython-310.pyc
deleted file mode 100644
index 57d80ed6a938648ec8994414d6c5df6788f15944..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_sfc.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_subnet.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_subnet.cpython-310.pyc
deleted file mode 100644
index ee45295f7bc49d424b597d0902a1e466c302b136..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_subnet.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 3117f0f0670e2269abd6951d588c9b7958c5d1e3..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_subnet_from_subnet_pool.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc
deleted file mode 100644
index bd99b796073ee875d8b88b5763ea9d13f828c960..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_taas.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_taas.cpython-310.pyc
deleted file mode 100644
index 59cad4075d05c642f8d9c8f3f0e1b1088a699306..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_taas.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_trunk.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_trunk.cpython-310.pyc
deleted file mode 100644
index 4b1ca641ea31e8417b75bbacca87e9e3a1379882..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_trunk.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/network/v2/__pycache__/test_vpnaas.cpython-310.pyc b/openstack/tests/functional/network/v2/__pycache__/test_vpnaas.cpython-310.pyc
deleted file mode 100644
index 915b36d5bcccb0ba4a64ca287dcb3d25cb59ee9e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/network/v2/__pycache__/test_vpnaas.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/object_store/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/object_store/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 9082fb8449d5ca212ff668968d97bcabb68a7814..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/object_store/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/object_store/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/object_store/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 71f44eb647db626ef3e2ca9fd1cdf4d9ab8c9b29..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/object_store/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/object_store/v1/__pycache__/test_account.cpython-310.pyc b/openstack/tests/functional/object_store/v1/__pycache__/test_account.cpython-310.pyc
deleted file mode 100644
index 267cf82a86c3c8b8450841fa110c0777edb747ee..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/object_store/v1/__pycache__/test_account.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/object_store/v1/__pycache__/test_container.cpython-310.pyc b/openstack/tests/functional/object_store/v1/__pycache__/test_container.cpython-310.pyc
deleted file mode 100644
index 392389bae2f71bcf85f3904b0d982404b8ac6be1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/object_store/v1/__pycache__/test_container.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/object_store/v1/__pycache__/test_obj.cpython-310.pyc b/openstack/tests/functional/object_store/v1/__pycache__/test_obj.cpython-310.pyc
deleted file mode 100644
index 5ccc3472c16f436c95aa99984a7d5e2ddf062a8c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/object_store/v1/__pycache__/test_obj.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/orchestration/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/orchestration/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 2ae29e18be24e3ced8fed67209cc9caedac1de5a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/orchestration/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/orchestration/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/orchestration/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index df5a46e26c95e951daa8cba761e62dd2e40fd644..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/orchestration/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/orchestration/v1/__pycache__/test_stack.cpython-310.pyc b/openstack/tests/functional/orchestration/v1/__pycache__/test_stack.cpython-310.pyc
deleted file mode 100644
index 05bd8d594f9f8196682331a0e902e47506c40a25..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/orchestration/v1/__pycache__/test_stack.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/placement/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/placement/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index c6aa5486f47042effd88787c360a5ca68150906d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/placement/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/placement/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/placement/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index afbba454abddd7867447c0eea628fce40b23a26d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/placement/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc b/openstack/tests/functional/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc
deleted file mode 100644
index eff6d33447c0b8d1d6ee0dd9f9d5361da406a3a6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index e99a6114675682d755ed0b7e77fcc0d95172a5f8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/placement/v1/__pycache__/test_resource_provider_inventory.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/placement/v1/__pycache__/test_trait.cpython-310.pyc b/openstack/tests/functional/placement/v1/__pycache__/test_trait.cpython-310.pyc
deleted file mode 100644
index 484681e1588c39606be8aadd8f9b993dea17bc55..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/placement/v1/__pycache__/test_trait.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/shared_file_system/__pycache__/__init__.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 85a6419ee74c27503b5b744397507bf7273d3e84..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/shared_file_system/__pycache__/base.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/base.cpython-310.pyc
deleted file mode 100644
index f3b0a336b7689dd9f508fb1ae4926297c6446986..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/base.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 6ec07ff12453469173aa6804c3a383c3741a73e7..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/test_availability_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 8eb442cfe1b9c4d7663b5b3e8d9ef2d6ada678cd..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/test_export_locations.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/shared_file_system/__pycache__/test_limit.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_limit.cpython-310.pyc
deleted file mode 100644
index ddc1dd0beb607ad8922eee735a3fe0da7b7d8af5..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/test_limit.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/shared_file_system/__pycache__/test_share.cpython-310.pyc b/openstack/tests/functional/shared_file_system/__pycache__/test_share.cpython-310.pyc
deleted file mode 100644
index 0d92250f4193599e2f49b24a5f816f624791f5f9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/test_share.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index ede1e3e6700a1f078a6a7cc979caf970ed080883..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/test_share_access_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 04d6b8a37d79fdef9a45f18d97dc43fade48a112..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/test_share_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 99ff3f0aec22e25c838542eac2a96a725e8e8fb2..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/test_share_group_snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 4d8bddadd46b650c7e67e047af97e286da071ba2..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/test_share_instance.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 59b5303e1abb31a5fe6fde5d488d0f8518536fbb..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/test_share_metadata.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index da9c729d82e250fab56176096a14bb4606ee93b3..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/test_share_network.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 20108cbcd9c1489cd4e522a13d5e0aa362af3ae5..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/test_share_network_subnet.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 62dce06396a3ed7e25b210b4f90b7ad0af1dc08e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/test_share_snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index c0c82672748ae5c855dbedeedda288ddef40471a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/test_share_snapshot_instance.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index b251c8ab7f3524c82b83351d74ce4c0909bb4f01..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/test_storage_pool.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 06871ae173cb4fddad706dd4163899ebd2a716d6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/functional/shared_file_system/__pycache__/test_user_message.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/functional/shared_file_system/base.py b/openstack/tests/functional/shared_file_system/base.py
index f12a48c6b834c7e89a4be6d46351b3b949a277ac..4a1d5a295d26ff99209b0a13fc66153e092c2ef8 100644
--- a/openstack/tests/functional/shared_file_system/base.py
+++ b/openstack/tests/functional/shared_file_system/base.py
@@ -22,8 +22,8 @@ class BaseSharedFileSystemTest(base.BaseFunctionalTest):
         self.require_service(
             'shared-file-system', min_microversion=self.min_microversion
         )
-        self._set_operator_cloud(shared_file_system_api_version='2.78')
-        self._set_user_cloud(shared_file_system_api_version='2.78')
+        self._set_operator_cloud(shared_file_system_api_version='2.82')
+        self._set_user_cloud(shared_file_system_api_version='2.82')
 
     def create_share(self, **kwargs):
         share = self.user_cloud.share.create_share(**kwargs)
@@ -75,3 +75,13 @@ class BaseSharedFileSystemTest(base.BaseFunctionalTest):
         )
         self.assertIsNotNone(share_group.id)
         return share_group
+
+    def create_resource_lock(self, **kwargs):
+        resource_lock = self.user_cloud.share.create_resource_lock(**kwargs)
+        self.addCleanup(
+            self.user_cloud.share.delete_resource_lock,
+            resource_lock.id,
+            ignore_missing=True,
+        )
+        self.assertIsNotNone(resource_lock.id)
+        return resource_lock
diff --git a/openstack/tests/functional/shared_file_system/test_resource_lock.py b/openstack/tests/functional/shared_file_system/test_resource_lock.py
new file mode 100644
index 0000000000000000000000000000000000000000..e4f2b0351fedf49cb63040e340d2b996c3c597b6
--- /dev/null
+++ b/openstack/tests/functional/shared_file_system/test_resource_lock.py
@@ -0,0 +1,96 @@
+# 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.shared_file_system.v2 import resource_locks as _resource_locks
+from openstack.tests.functional.shared_file_system import base
+
+
+class ResourceLocksTest(base.BaseSharedFileSystemTest):
+    def setUp(self):
+        super(ResourceLocksTest, self).setUp()
+
+        self.SHARE_NAME = self.getUniqueString()
+        share = self.user_cloud.shared_file_system.create_share(
+            name=self.SHARE_NAME,
+            size=2,
+            share_type="dhss_false",
+            share_protocol='NFS',
+            description=None,
+        )
+        self.SHARE_ID = share.id
+        self.user_cloud.shared_file_system.wait_for_status(
+            share,
+            status='available',
+            failures=['error'],
+            interval=5,
+            wait=self._wait_for_timeout,
+        )
+        access_rule = self.user_cloud.share.create_access_rule(
+            self.SHARE_ID,
+            access_level="rw",
+            access_type="ip",
+            access_to="0.0.0.0/0",
+        )
+        self.user_cloud.shared_file_system.wait_for_status(
+            access_rule,
+            status='active',
+            failures=['error'],
+            interval=5,
+            wait=self._wait_for_timeout,
+            status_attr_name='state',
+        )
+        self.assertIsNotNone(share)
+        self.assertIsNotNone(share.id)
+        self.ACCESS_ID = access_rule.id
+        share_lock = self.create_resource_lock(
+            resource_action='delete',
+            resource_type='share',
+            resource_id=self.SHARE_ID,
+            lock_reason='openstacksdk testing',
+        )
+        access_lock = self.create_resource_lock(
+            resource_action='show',
+            resource_type='access_rule',
+            resource_id=self.ACCESS_ID,
+            lock_reason='openstacksdk testing',
+        )
+        self.SHARE_LOCK_ID = share_lock.id
+        self.ACCESS_LOCK_ID = access_lock.id
+
+    def test_get(self):
+        share_lock = self.user_cloud.shared_file_system.get_resource_lock(
+            self.SHARE_LOCK_ID
+        )
+        access_lock = self.user_cloud.shared_file_system.get_resource_lock(
+            self.ACCESS_LOCK_ID
+        )
+        assert isinstance(share_lock, _resource_locks.ResourceLock)
+        assert isinstance(access_lock, _resource_locks.ResourceLock)
+        self.assertEqual(self.SHARE_LOCK_ID, share_lock.id)
+        self.assertEqual(self.ACCESS_LOCK_ID, access_lock.id)
+        self.assertEqual('show', access_lock.resource_action)
+
+    def test_list(self):
+        resource_locks = self.user_cloud.share.resource_locks()
+        self.assertGreater(len(list(resource_locks)), 0)
+        lock_attrs = (
+            'id',
+            'lock_reason',
+            'resource_type',
+            'resource_action',
+            'lock_context',
+            'created_at',
+            'updated_at',
+        )
+        for lock in resource_locks:
+            for attribute in lock_attrs:
+                self.assertTrue(hasattr(lock, attribute))
diff --git a/openstack/tests/functional/shared_file_system/test_share_access_rule.py b/openstack/tests/functional/shared_file_system/test_share_access_rule.py
index d8dc4d85bff88f0f4d89cd449dbf5b335478c383..7fc7817a5f8297f53fc87ec2d4ca8776c208fa78 100644
--- a/openstack/tests/functional/shared_file_system/test_share_access_rule.py
+++ b/openstack/tests/functional/shared_file_system/test_share_access_rule.py
@@ -75,3 +75,16 @@ class ShareAccessRuleTest(base.BaseSharedFileSystemTest):
                 'metadata',
             ):
                 self.assertTrue(hasattr(rule, attribute))
+
+    def test_create_delete_access_rule_with_locks(self):
+        access_rule = self.user_cloud.share.create_access_rule(
+            self.SHARE_ID,
+            access_level="rw",
+            access_type="ip",
+            access_to="203.0.113.10",
+            lock_deletion=True,
+            lock_visibility=True,
+        )
+        self.user_cloud.share.delete_access_rule(
+            access_rule['id'], self.SHARE_ID, unrestrict=True
+        )
diff --git a/openstack/tests/unit/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 4f37b1f6839071e6a26c0ebe40dcc19acfe3e7b5..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/__pycache__/base.cpython-310.pyc b/openstack/tests/unit/__pycache__/base.cpython-310.pyc
deleted file mode 100644
index 3b3446dd2cfda876bf1f101fe4721e95659240aa..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/base.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/__pycache__/fakes.cpython-310.pyc b/openstack/tests/unit/__pycache__/fakes.cpython-310.pyc
deleted file mode 100644
index f4c6f137f0d00ba925961ec8d18215e316aada09..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/fakes.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/__pycache__/test_connection.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_connection.cpython-310.pyc
deleted file mode 100644
index e606ccb0e6c3cab686d26be0e1183f8d4b34caee..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/test_connection.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/__pycache__/test_exceptions.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_exceptions.cpython-310.pyc
deleted file mode 100644
index e22b3a875d08445eba4d357e94e65c01e47814ea..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/test_exceptions.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/__pycache__/test_fakes.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_fakes.cpython-310.pyc
deleted file mode 100644
index efbb617509eb5be476d08504d75f03dd49094579..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/test_fakes.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/__pycache__/test_format.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_format.cpython-310.pyc
deleted file mode 100644
index 8d0b807c160c13fa979947ebfea23a66266cfcc8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/test_format.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/__pycache__/test_hacking.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_hacking.cpython-310.pyc
deleted file mode 100644
index 1bcd7f42d797aa29edfe8695dda99edba117605d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/test_hacking.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/__pycache__/test_microversions.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_microversions.cpython-310.pyc
deleted file mode 100644
index 8f6ff1efd1542f24e6c0de9913ae22b139966070..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/test_microversions.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/__pycache__/test_missing_version.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_missing_version.cpython-310.pyc
deleted file mode 100644
index b59455cf9338e9e0d76a7927a6cc11cde9c7ec02..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/test_missing_version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/__pycache__/test_placement_rest.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_placement_rest.cpython-310.pyc
deleted file mode 100644
index faf7576adc8ff41f3fd4e6793a77f9c13250dc3d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/test_placement_rest.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 251a9dce78ded56721b758a4568fd788b4abc82c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/__pycache__/test_proxy_base.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_proxy_base.cpython-310.pyc
deleted file mode 100644
index e1218ed96fb80acf5ff20658253ae5c20cf533e6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/test_proxy_base.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/__pycache__/test_resource.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_resource.cpython-310.pyc
deleted file mode 100644
index 7091913631100300f7bfc7c66f5990389b7eedb8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/test_resource.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/__pycache__/test_stats.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_stats.cpython-310.pyc
deleted file mode 100644
index f4a65bc9416872c221850ba4fd650c1bd12aee00..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/test_stats.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/__pycache__/test_utils.cpython-310.pyc b/openstack/tests/unit/__pycache__/test_utils.cpython-310.pyc
deleted file mode 100644
index 263c956257c7202a19c3e25658216afc1814e615..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/__pycache__/test_utils.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/accelerator/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/accelerator/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 52e94758ee06bf6134bed3025952f639215aeae5..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/accelerator/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/accelerator/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/accelerator/__pycache__/test_version.cpython-310.pyc
deleted file mode 100644
index b1f207d9922a3182cee83e792ad8b5d4a034afee..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/accelerator/__pycache__/test_version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/accelerator/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/accelerator/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index dde37b846b72ade57be9b666ccf9608dd98bdb65..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/accelerator/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/accelerator/v2/__pycache__/test_accelerator_request.cpython-310.pyc b/openstack/tests/unit/accelerator/v2/__pycache__/test_accelerator_request.cpython-310.pyc
deleted file mode 100644
index d8a4b9d72d2350225d5e3954970706549a02984b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/accelerator/v2/__pycache__/test_accelerator_request.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/accelerator/v2/__pycache__/test_deployable.cpython-310.pyc b/openstack/tests/unit/accelerator/v2/__pycache__/test_deployable.cpython-310.pyc
deleted file mode 100644
index adbbd5ee28818b5f2da62a852a12dfd905b6076b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/accelerator/v2/__pycache__/test_deployable.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/accelerator/v2/__pycache__/test_device.cpython-310.pyc b/openstack/tests/unit/accelerator/v2/__pycache__/test_device.cpython-310.pyc
deleted file mode 100644
index 766b512ba2e87338cce78da4a0b65d5cd8baf47f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/accelerator/v2/__pycache__/test_device.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/accelerator/v2/__pycache__/test_device_profile.cpython-310.pyc b/openstack/tests/unit/accelerator/v2/__pycache__/test_device_profile.cpython-310.pyc
deleted file mode 100644
index 32c47ebaed41dfe197e4fc45a2905ed69fe6325d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/accelerator/v2/__pycache__/test_device_profile.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/accelerator/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/accelerator/v2/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 60a6b495e90deb998a38b3f0c5bac8a756229eff..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/accelerator/v2/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/baremetal/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 1f1570c885cef98b069850ef48051eed9a547f52..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/__pycache__/test_configdrive.cpython-310.pyc b/openstack/tests/unit/baremetal/__pycache__/test_configdrive.cpython-310.pyc
deleted file mode 100644
index 64fb2d814d744ef8068157f844b0a6bcb779b765..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal/__pycache__/test_configdrive.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/baremetal/__pycache__/test_version.cpython-310.pyc
deleted file mode 100644
index 3dc883d8d2a5bcc8e431f0f9091624a33aa003c9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal/__pycache__/test_version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/test_configdrive.py b/openstack/tests/unit/baremetal/test_configdrive.py
index 6b694fa3f34e4a20efdfb6c58ee8949f5ef1d733..a2ba7d9a88c331c5aa609d63bb6aa7ad8312c833 100644
--- a/openstack/tests/unit/baremetal/test_configdrive.py
+++ b/openstack/tests/unit/baremetal/test_configdrive.py
@@ -97,12 +97,12 @@ class TestPack(testtools.TestCase):
         )
 
     def test_genisoimage_fails(self, mock_popen):
-        mock_popen.return_value.communicate.return_value = "", "BOOM"
+        mock_popen.return_value.communicate.return_value = b"", b"BOOM"
         mock_popen.return_value.returncode = 1
         self.assertRaisesRegex(RuntimeError, "BOOM", configdrive.pack, "/fake")
 
     def test_success(self, mock_popen):
-        mock_popen.return_value.communicate.return_value = "", ""
+        mock_popen.return_value.communicate.return_value = b"", b""
         mock_popen.return_value.returncode = 0
         result = configdrive.pack("/fake")
         # Make sure the result is string on all python versions
diff --git a/openstack/tests/unit/baremetal/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 44abebf7d0845d8365e70c00f4dfc828ae157597..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/v1/__pycache__/test_allocation.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_allocation.cpython-310.pyc
deleted file mode 100644
index d80ec76df0e89a386c78a3f90b545f1f8a2bfba0..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal/v1/__pycache__/test_allocation.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/v1/__pycache__/test_chassis.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_chassis.cpython-310.pyc
deleted file mode 100644
index 99eba8f3b27f8196ad6eaf40025253e770dd9c49..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal/v1/__pycache__/test_chassis.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/v1/__pycache__/test_conductor.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_conductor.cpython-310.pyc
deleted file mode 100644
index ce0ef70e7294976743b891ad64c89ca5b48f277e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal/v1/__pycache__/test_conductor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/v1/__pycache__/test_deploy_templates.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_deploy_templates.cpython-310.pyc
deleted file mode 100644
index f7099228bf3219e0524a3792e18de2c7d637af57..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal/v1/__pycache__/test_deploy_templates.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/v1/__pycache__/test_driver.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_driver.cpython-310.pyc
deleted file mode 100644
index d751d8a74443f215c15f689e09972f2ab6e0eb5d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal/v1/__pycache__/test_driver.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/v1/__pycache__/test_node.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_node.cpython-310.pyc
deleted file mode 100644
index 1005f0d8a13952866c0ecf4d4889bf0f18279ef8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal/v1/__pycache__/test_node.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/v1/__pycache__/test_port.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_port.cpython-310.pyc
deleted file mode 100644
index 607fcf037fb448e2c51b6b8d0183be2378d0163a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal/v1/__pycache__/test_port.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/v1/__pycache__/test_port_group.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_port_group.cpython-310.pyc
deleted file mode 100644
index 927201bc15777036fea8d7ca749c0ae2a986cdb5..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal/v1/__pycache__/test_port_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 3ad57964568e57136db401fe92304ff4988ad1bf..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal/v1/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/v1/__pycache__/test_volume_connector.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_volume_connector.cpython-310.pyc
deleted file mode 100644
index eeeb4406cf505c49d1565df2c4c4c0a5e4e019a7..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal/v1/__pycache__/test_volume_connector.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/v1/__pycache__/test_volume_target.cpython-310.pyc b/openstack/tests/unit/baremetal/v1/__pycache__/test_volume_target.cpython-310.pyc
deleted file mode 100644
index cf641bfcfe63573c85218ac1f88bc475ed6ceb72..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal/v1/__pycache__/test_volume_target.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal/v1/test_node.py b/openstack/tests/unit/baremetal/v1/test_node.py
index a47eec1dc787dbcbaf1afaa8a3b560e9d50da513..51ebc2e7cffa7d14ef5178ba5be1cfa88c0bdb8d 100644
--- a/openstack/tests/unit/baremetal/v1/test_node.py
+++ b/openstack/tests/unit/baremetal/v1/test_node.py
@@ -23,11 +23,14 @@ from openstack import utils
 
 # NOTE: Sample data from api-ref doc
 FAKE = {
+    "automated_clean": False,
     "boot_mode": "uefi",
     "chassis_uuid": "1",  # NOTE: missed in api-ref sample
     "clean_step": {},
+    "conductor_group": None,
     "console_enabled": False,
     "created_at": "2016-08-18T22:28:48.643434+00:00",
+    "description": "A node.",
     "driver": "agent_ipmitool",
     "driver_info": {"ipmi_password": "******", "ipmi_username": "ADMIN"},
     "driver_internal_info": {},
@@ -38,6 +41,7 @@ FAKE = {
     "instance_info": {},
     "instance_uuid": None,
     "last_error": None,
+    "lessee": None,
     "links": [
         {"href": "http://127.0.0.1:6385/v1/nodes/<NODE_ID>", "rel": "self"},
         {"href": "http://127.0.0.1:6385/nodes/<NODE_ID>", "rel": "bookmark"},
@@ -118,11 +122,15 @@ class TestNode(base.TestCase):
 
         self.assertEqual(FAKE['uuid'], sot.id)
         self.assertEqual(FAKE['name'], sot.name)
-
+        self.assertEqual(
+            FAKE['automated_clean'], sot.is_automated_clean_enabled
+        )
         self.assertEqual(FAKE['boot_mode'], sot.boot_mode)
         self.assertEqual(FAKE['chassis_uuid'], sot.chassis_id)
         self.assertEqual(FAKE['clean_step'], sot.clean_step)
+        self.assertEqual(FAKE['conductor_group'], sot.conductor_group)
         self.assertEqual(FAKE['created_at'], sot.created_at)
+        self.assertEqual(FAKE['description'], sot.description)
         self.assertEqual(FAKE['driver'], sot.driver)
         self.assertEqual(FAKE['driver_info'], sot.driver_info)
         self.assertEqual(
@@ -135,6 +143,7 @@ class TestNode(base.TestCase):
         self.assertEqual(FAKE['console_enabled'], sot.is_console_enabled)
         self.assertEqual(FAKE['maintenance'], sot.is_maintenance)
         self.assertEqual(FAKE['last_error'], sot.last_error)
+        self.assertEqual(FAKE['lessee'], sot.lessee)
         self.assertEqual(FAKE['links'], sot.links)
         self.assertEqual(FAKE['maintenance_reason'], sot.maintenance_reason)
         self.assertEqual(FAKE['name'], sot.name)
@@ -562,7 +571,7 @@ class TestNodeVif(base.TestCase):
             json={'id': self.vif_id},
             headers=mock.ANY,
             microversion='1.28',
-            retriable_status_codes={503},
+            retriable_status_codes=[503],
         )
 
     def test_detach_vif_existing(self):
diff --git a/openstack/tests/unit/baremetal/v1/test_port.py b/openstack/tests/unit/baremetal/v1/test_port.py
index ed98f090e04ed9ee9d2f7d721c83e283b1b3cca5..d688d7fbe874e3fad0c96419d39344a908338202 100644
--- a/openstack/tests/unit/baremetal/v1/test_port.py
+++ b/openstack/tests/unit/baremetal/v1/test_port.py
@@ -19,6 +19,7 @@ FAKE = {
     "created_at": "2016-08-18T22:28:49.946416+00:00",
     "extra": {},
     "internal_info": {},
+    "is_smartnic": True,
     "links": [
         {"href": "http://127.0.0.1:6385/v1/ports/<PORT_ID>", "rel": "self"},
         {"href": "http://127.0.0.1:6385/ports/<PORT_ID>", "rel": "bookmark"},
@@ -28,6 +29,7 @@ FAKE = {
         "switch_id": "0a:1b:2c:3d:4e:5f",
         "switch_info": "switch1",
     },
+    "name": "port_name",
     "node_uuid": "6d85703a-565d-469a-96ce-30b6de53079d",
     "portgroup_uuid": "e43c722c-248e-4c6e-8ce8-0d8ff129387a",
     "pxe_enabled": True,
@@ -56,10 +58,12 @@ class TestPort(base.TestCase):
         self.assertEqual(FAKE['created_at'], sot.created_at)
         self.assertEqual(FAKE['extra'], sot.extra)
         self.assertEqual(FAKE['internal_info'], sot.internal_info)
+        self.assertEqual(FAKE['is_smartnic'], sot.is_smartnic)
         self.assertEqual(FAKE['links'], sot.links)
         self.assertEqual(
             FAKE['local_link_connection'], sot.local_link_connection
         )
+        self.assertEqual(FAKE['name'], sot.name)
         self.assertEqual(FAKE['node_uuid'], sot.node_id)
         self.assertEqual(FAKE['portgroup_uuid'], sot.port_group_id)
         self.assertEqual(FAKE['pxe_enabled'], sot.is_pxe_enabled)
diff --git a/openstack/tests/unit/baremetal_introspection/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/baremetal_introspection/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index e4b9dba9241a717094b64a1b38f2a62e6111e3eb..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal_introspection/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal_introspection/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/baremetal_introspection/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index c2bde05bf3426fc220dfa252ed2c25ce9a73f36c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal_introspection/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 6a5b7e2f9b6728447a1af8fc5801de678c02ed17..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal_introspection/v1/__pycache__/test_introspection_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/baremetal_introspection/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/baremetal_introspection/v1/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 902b6aa69f168f98f938fa4f657e4362daaf0196..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/baremetal_introspection/v1/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/block_storage/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 53e1c54b09cbd5d1276023957b883b469d1cf6cb..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 71c6107ff63782574a0a708304d7c893f53a1460..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v2/__pycache__/test_backup.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_backup.cpython-310.pyc
deleted file mode 100644
index 1ffd741ac9a2a1935f7b31cd6aaa2df554c26e16..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v2/__pycache__/test_backup.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v2/__pycache__/test_capabilities.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_capabilities.cpython-310.pyc
deleted file mode 100644
index a76d4ad9ccf854e34160fe42c6258b278b643d39..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v2/__pycache__/test_capabilities.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v2/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_extension.cpython-310.pyc
deleted file mode 100644
index 3050dfc3c7015e86f597edcbd71fafc884bc771b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v2/__pycache__/test_extension.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v2/__pycache__/test_limits.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_limits.cpython-310.pyc
deleted file mode 100644
index 80b6cc8a4129918d7a9093591b6b9c297f99dbc7..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v2/__pycache__/test_limits.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 1db8d476e87520a1e81b481b92a43e49674f812b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v2/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc
deleted file mode 100644
index 421e7359c4d82274a3acf7f52be9d9211e3cd9cc..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v2/__pycache__/test_snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v2/__pycache__/test_stats.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_stats.cpython-310.pyc
deleted file mode 100644
index 831c5aa1d3fa340eb6f2021b3fdbc769dbe38727..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v2/__pycache__/test_stats.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v2/__pycache__/test_type.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_type.cpython-310.pyc
deleted file mode 100644
index 50ba6d0eef970473c14196e613a5bfe2a3cadcc6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v2/__pycache__/test_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v2/__pycache__/test_volume.cpython-310.pyc b/openstack/tests/unit/block_storage/v2/__pycache__/test_volume.cpython-310.pyc
deleted file mode 100644
index 16e779ebb4c4a12beddada65220ae1289b6efda8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v2/__pycache__/test_volume.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v2/test_backup.py b/openstack/tests/unit/block_storage/v2/test_backup.py
index b877a32d3ec1e966c94b402b9da50961a4d49695..7de7902a5793626796b0b3fcf845f089b4dea8e8 100644
--- a/openstack/tests/unit/block_storage/v2/test_backup.py
+++ b/openstack/tests/unit/block_storage/v2/test_backup.py
@@ -172,7 +172,7 @@ class TestBackup(base.TestCase):
         self.assertIsNone(sot.force_delete(self.sess))
 
         url = 'backups/%s/action' % FAKE_ID
-        body = {'os-force_delete': {}}
+        body = {'os-force_delete': None}
         self.sess.post.assert_called_with(
             url, json=body, microversion=sot._max_microversion
         )
diff --git a/openstack/tests/unit/block_storage/v2/test_volume.py b/openstack/tests/unit/block_storage/v2/test_volume.py
index 41e59f143c0834c1911390fbe68755fe3ac8f124..1fdd8e3121239d5cf8f3d7eaeb2df861f50f8c9d 100644
--- a/openstack/tests/unit/block_storage/v2/test_volume.py
+++ b/openstack/tests/unit/block_storage/v2/test_volume.py
@@ -237,7 +237,7 @@ class TestVolumeActions(TestVolume):
         self.assertIsNone(sot.unmanage(self.sess))
 
         url = 'volumes/%s/action' % FAKE_ID
-        body = {'os-unmanage': {}}
+        body = {'os-unmanage': None}
         self.sess.post.assert_called_with(
             url, json=body, microversion=sot._max_microversion
         )
@@ -330,7 +330,7 @@ class TestVolumeActions(TestVolume):
         self.assertIsNone(sot.force_delete(self.sess))
 
         url = 'volumes/%s/action' % FAKE_ID
-        body = {'os-force_delete': {}}
+        body = {'os-force_delete': None}
         self.sess.post.assert_called_with(
             url, json=body, microversion=sot._max_microversion
         )
diff --git a/openstack/tests/unit/block_storage/v3/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 0115dcbf3f18317598f5186aa33ac719ffead814..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc
deleted file mode 100644
index 04fbe3e5a4f4bd873922c8631bff05b096bb8d22..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_attachment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index e1668c91295e803a3cb9fd7da0ea86bfd8be70e5..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_availability_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v3/__pycache__/test_backup.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_backup.cpython-310.pyc
deleted file mode 100644
index 86f09a1c7c5fdfef8872be4896b6469569659132..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_backup.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index b96c98d6ccb8bdf8dc61f973d68b2fa0f8528993..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_block_storage_summary.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc
deleted file mode 100644
index 3a4b574cc5c25ca9e466446b6578d58622890dad..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_capabilities.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v3/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_extension.cpython-310.pyc
deleted file mode 100644
index 7230bfd85ba9c551683eb1767e035ddd844f0e5b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_extension.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v3/__pycache__/test_group.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_group.cpython-310.pyc
deleted file mode 100644
index 7de1183246c6eaa391f4383968063a0f7c4e23c7..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index aee16eac2e1aac4c35353a6181416f3ec08c1fc0..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_group_snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 84d28f6151cddfd23f0cb352fb216f88b94b2551..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_group_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v3/__pycache__/test_limits.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_limits.cpython-310.pyc
deleted file mode 100644
index e82a4c9a1c73ca72286e3c11f8f4ef86ceeb1202..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_limits.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v3/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 120a7a28d8a63c64a3fa4e0b223adb0af3737f05..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index c493774f2bdcafd4ef24d9db0cbb61d0632f732c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_resource_filter.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v3/__pycache__/test_service.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_service.cpython-310.pyc
deleted file mode 100644
index 8e2d649129b8f6f4fb491a6c0abe31562fe5805b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc
deleted file mode 100644
index c300ee607e26a315765f8467e6d29c1e13a4b107..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc
deleted file mode 100644
index 6077d65776d6c2e37b9324f919082b308aa4d518..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_transfer.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v3/__pycache__/test_type.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_type.cpython-310.pyc
deleted file mode 100644
index 4dbe51a8e032deb193ee574c5b94714d20836ac9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index ae3bb6c4568a76183277402c87e1e785f6d57d1b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_type_encryption.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v3/__pycache__/test_volume.cpython-310.pyc b/openstack/tests/unit/block_storage/v3/__pycache__/test_volume.cpython-310.pyc
deleted file mode 100644
index 6e8264da4ccb0362585110199808bec83c7b467a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/block_storage/v3/__pycache__/test_volume.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/block_storage/v3/test_backup.py b/openstack/tests/unit/block_storage/v3/test_backup.py
index 27772ba78e42227ac474b6bf464c3ae401c8f300..5e73d61c9f1619e7dfdb5da4036478e1d5c03e78 100644
--- a/openstack/tests/unit/block_storage/v3/test_backup.py
+++ b/openstack/tests/unit/block_storage/v3/test_backup.py
@@ -185,7 +185,7 @@ class TestBackup(base.TestCase):
         self.assertIsNone(sot.force_delete(self.sess))
 
         url = 'backups/%s/action' % FAKE_ID
-        body = {'os-force_delete': {}}
+        body = {'os-force_delete': None}
         self.sess.post.assert_called_with(
             url, json=body, microversion=sot._max_microversion
         )
diff --git a/openstack/tests/unit/block_storage/v3/test_proxy.py b/openstack/tests/unit/block_storage/v3/test_proxy.py
index bb517b7e2faa8302d81802014e04ff7c1bb08ae7..1686004f2c1468918e57248babfd2540d01b8b28 100644
--- a/openstack/tests/unit/block_storage/v3/test_proxy.py
+++ b/openstack/tests/unit/block_storage/v3/test_proxy.py
@@ -785,6 +785,24 @@ class TestSnapshot(TestVolumeProxy):
             expected_args=[self.proxy, "key"],
         )
 
+    def test_manage_snapshot(self):
+        kwargs = {
+            "volume_id": "fake_id",
+            "remote_source": "fake_volume",
+            "snapshot_name": "fake_snap",
+            "description": "test_snap",
+            "property": {"k": "v"},
+        }
+        self._verify(
+            "openstack.block_storage.v3.snapshot.Snapshot.manage",
+            self.proxy.manage_snapshot,
+            method_kwargs=kwargs,
+            method_result=snapshot.Snapshot(id="fake_id"),
+            expected_args=[self.proxy],
+            expected_kwargs=kwargs,
+            expected_result=snapshot.Snapshot(id="fake_id"),
+        )
+
 
 class TestType(TestVolumeProxy):
     def test_type_get(self):
@@ -873,11 +891,27 @@ class TestType(TestVolumeProxy):
         )
 
     def test_type_encryption_update(self):
+        # Verify that the get call was made with correct kwargs
+        self.verify_get(
+            self.proxy.get_type_encryption,
+            type.TypeEncryption,
+            method_args=['value'],
+            expected_args=[],
+            expected_kwargs={'volume_type_id': 'value', 'requires_id': False},
+        )
         self.verify_update(
             self.proxy.update_type_encryption, type.TypeEncryption
         )
 
     def test_type_encryption_delete(self):
+        # Verify that the get call was made with correct kwargs
+        self.verify_get(
+            self.proxy.get_type_encryption,
+            type.TypeEncryption,
+            method_args=['value'],
+            expected_args=[],
+            expected_kwargs={'volume_type_id': 'value', 'requires_id': False},
+        )
         self.verify_delete(
             self.proxy.delete_type_encryption, type.TypeEncryption, False
         )
diff --git a/openstack/tests/unit/block_storage/v3/test_snapshot.py b/openstack/tests/unit/block_storage/v3/test_snapshot.py
index bd5d7d517251ce1024570e5937717556cf63234f..6f5498fc9683409be58a5943b6a144d5c1c78d25 100644
--- a/openstack/tests/unit/block_storage/v3/test_snapshot.py
+++ b/openstack/tests/unit/block_storage/v3/test_snapshot.py
@@ -9,6 +9,7 @@
 # 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 copy
 from unittest import mock
 
 from keystoneauth1 import adapter
@@ -18,6 +19,7 @@ from openstack.tests.unit import base
 
 
 FAKE_ID = "ffa9bc5e-1172-4021-acaf-cdcd78a9584d"
+FAKE_VOLUME_ID = "5aa119a8-d25b-45a7-8d1b-88e127885635"
 
 SNAPSHOT = {
     "status": "creating",
@@ -25,7 +27,7 @@ SNAPSHOT = {
     "created_at": "2015-03-09T12:14:57.233772",
     "updated_at": None,
     "metadata": {},
-    "volume_id": "5aa119a8-d25b-45a7-8d1b-88e127885635",
+    "volume_id": FAKE_VOLUME_ID,
     "size": 1,
     "id": FAKE_ID,
     "name": "snap-001",
@@ -104,7 +106,7 @@ class TestSnapshotActions(base.TestCase):
         self.assertIsNone(sot.force_delete(self.sess))
 
         url = 'snapshots/%s/action' % FAKE_ID
-        body = {'os-force_delete': {}}
+        body = {'os-force_delete': None}
         self.sess.post.assert_called_with(
             url, json=body, microversion=sot._max_microversion
         )
@@ -130,3 +132,82 @@ class TestSnapshotActions(base.TestCase):
         self.sess.post.assert_called_with(
             url, json=body, microversion=sot._max_microversion
         )
+
+    @mock.patch(
+        'openstack.utils.supports_microversion',
+        autospec=True,
+        return_value=True,
+    )
+    def test_manage(self, mock_mv):
+        resp = mock.Mock()
+        resp.body = {'snapshot': copy.deepcopy(SNAPSHOT)}
+        resp.json = mock.Mock(return_value=resp.body)
+        resp.headers = {}
+        resp.status_code = 202
+
+        self.sess.post = mock.Mock(return_value=resp)
+
+        sot = snapshot.Snapshot.manage(
+            self.sess, volume_id=FAKE_VOLUME_ID, ref=FAKE_ID
+        )
+
+        self.assertIsNotNone(sot)
+
+        url = '/manageable_snapshots'
+        body = {
+            'snapshot': {
+                'volume_id': FAKE_VOLUME_ID,
+                'ref': FAKE_ID,
+                'name': None,
+                'description': None,
+                'metadata': None,
+            }
+        }
+        self.sess.post.assert_called_with(
+            url, json=body, microversion=sot._max_microversion
+        )
+
+    @mock.patch(
+        'openstack.utils.supports_microversion',
+        autospec=True,
+        return_value=False,
+    )
+    def test_manage_pre_38(self, mock_mv):
+        resp = mock.Mock()
+        resp.body = {'snapshot': copy.deepcopy(SNAPSHOT)}
+        resp.json = mock.Mock(return_value=resp.body)
+        resp.headers = {}
+        resp.status_code = 202
+
+        self.sess.post = mock.Mock(return_value=resp)
+
+        sot = snapshot.Snapshot.manage(
+            self.sess, volume_id=FAKE_VOLUME_ID, ref=FAKE_ID
+        )
+
+        self.assertIsNotNone(sot)
+
+        url = '/os-snapshot-manage'
+        body = {
+            'snapshot': {
+                'volume_id': FAKE_VOLUME_ID,
+                'ref': FAKE_ID,
+                'name': None,
+                'description': None,
+                'metadata': None,
+            }
+        }
+        self.sess.post.assert_called_with(
+            url, json=body, microversion=sot._max_microversion
+        )
+
+    def test_unmanage(self):
+        sot = snapshot.Snapshot(**SNAPSHOT)
+
+        self.assertIsNone(sot.unmanage(self.sess))
+
+        url = 'snapshots/%s/action' % FAKE_ID
+        body = {'os-unmanage': None}
+        self.sess.post.assert_called_with(
+            url, json=body, microversion=sot._max_microversion
+        )
diff --git a/openstack/tests/unit/block_storage/v3/test_volume.py b/openstack/tests/unit/block_storage/v3/test_volume.py
index 7e162252c227feab547d3d0d37fa5502e93eb5cb..8ec8705a29de9454731487209d820cdbcadba2ad 100644
--- a/openstack/tests/unit/block_storage/v3/test_volume.py
+++ b/openstack/tests/unit/block_storage/v3/test_volume.py
@@ -31,6 +31,7 @@ IMAGE_METADATA = {
     u'size': '13167616',
 }
 
+FAKE_HOST = "fake_host@fake_backend#fake_pool"
 VOLUME = {
     "status": "creating",
     "name": "my_volume",
@@ -314,7 +315,7 @@ class TestVolumeActions(TestVolume):
         self.assertIsNone(sot.unmanage(self.sess))
 
         url = 'volumes/%s/action' % FAKE_ID
-        body = {'os-unmanage': {}}
+        body = {'os-unmanage': None}
         self.sess.post.assert_called_with(
             url, json=body, microversion=sot._max_microversion
         )
@@ -434,7 +435,7 @@ class TestVolumeActions(TestVolume):
         self.assertIsNone(sot.force_delete(self.sess))
 
         url = 'volumes/%s/action' % FAKE_ID
-        body = {'os-force_delete': {}}
+        body = {'os-force_delete': None}
         self.sess.post.assert_called_with(
             url, json=body, microversion=sot._max_microversion
         )
@@ -504,7 +505,7 @@ class TestVolumeActions(TestVolume):
         self.assertIsNone(sot.reserve(self.sess))
 
         url = 'volumes/%s/action' % FAKE_ID
-        body = {'os-reserve': {}}
+        body = {'os-reserve': None}
         self.sess.post.assert_called_with(
             url, json=body, microversion=sot._max_microversion
         )
@@ -515,7 +516,7 @@ class TestVolumeActions(TestVolume):
         self.assertIsNone(sot.unreserve(self.sess))
 
         url = 'volumes/%s/action' % FAKE_ID
-        body = {'os-unreserve': {}}
+        body = {'os-unreserve': None}
         self.sess.post.assert_called_with(
             url, json=body, microversion=sot._max_microversion
         )
@@ -526,7 +527,7 @@ class TestVolumeActions(TestVolume):
         self.assertIsNone(sot.begin_detaching(self.sess))
 
         url = 'volumes/%s/action' % FAKE_ID
-        body = {'os-begin_detaching': {}}
+        body = {'os-begin_detaching': None}
         self.sess.post.assert_called_with(
             url, json=body, microversion=sot._max_microversion
         )
@@ -537,7 +538,7 @@ class TestVolumeActions(TestVolume):
         self.assertIsNone(sot.abort_detaching(self.sess))
 
         url = 'volumes/%s/action' % FAKE_ID
-        body = {'os-roll_detaching': {}}
+        body = {'os-roll_detaching': None}
         self.sess.post.assert_called_with(
             url, json=body, microversion=sot._max_microversion
         )
@@ -545,7 +546,14 @@ class TestVolumeActions(TestVolume):
     def test_init_attachment(self):
         sot = volume.Volume(**VOLUME)
 
-        self.assertIsNone(sot.init_attachment(self.sess, {'a': 'b'}))
+        self.resp = mock.Mock()
+        self.resp.body = {'connection_info': {'c': 'd'}}
+        self.resp.status_code = 200
+        self.resp.json = mock.Mock(return_value=self.resp.body)
+        self.sess.post = mock.Mock(return_value=self.resp)
+        self.assertEqual(
+            {'c': 'd'}, sot.init_attachment(self.sess, {'a': 'b'})
+        )
 
         url = 'volumes/%s/action' % FAKE_ID
         body = {'os-initialize_connection': {'connector': {'a': 'b'}}}
@@ -598,3 +606,65 @@ class TestVolumeActions(TestVolume):
             headers={},
             params={},
         )
+
+    @mock.patch(
+        'openstack.utils.supports_microversion',
+        autospec=True,
+        return_value=True,
+    )
+    def test_manage(self, mock_mv):
+        resp = mock.Mock()
+        resp.body = {'volume': copy.deepcopy(VOLUME)}
+        resp.json = mock.Mock(return_value=resp.body)
+        resp.headers = {}
+        resp.status_code = 202
+        self.sess.post = mock.Mock(return_value=resp)
+        sot = volume.Volume.manage(self.sess, host=FAKE_HOST, ref=FAKE_ID)
+        self.assertIsNotNone(sot)
+        url = '/manageable_volumes'
+        body = {
+            'volume': {
+                'host': FAKE_HOST,
+                'ref': FAKE_ID,
+                'name': None,
+                'description': None,
+                'volume_type': None,
+                'availability_zone': None,
+                'metadata': None,
+                'bootable': False,
+            }
+        }
+        self.sess.post.assert_called_with(
+            url, json=body, microversion=sot._max_microversion
+        )
+
+    @mock.patch(
+        'openstack.utils.supports_microversion',
+        autospec=True,
+        return_value=False,
+    )
+    def test_manage_pre_38(self, mock_mv):
+        resp = mock.Mock()
+        resp.body = {'volume': copy.deepcopy(VOLUME)}
+        resp.json = mock.Mock(return_value=resp.body)
+        resp.headers = {}
+        resp.status_code = 202
+        self.sess.post = mock.Mock(return_value=resp)
+        sot = volume.Volume.manage(self.sess, host=FAKE_HOST, ref=FAKE_ID)
+        self.assertIsNotNone(sot)
+        url = '/os-volume-manage'
+        body = {
+            'volume': {
+                'host': FAKE_HOST,
+                'ref': FAKE_ID,
+                'name': None,
+                'description': None,
+                'volume_type': None,
+                'availability_zone': None,
+                'metadata': None,
+                'bootable': False,
+            }
+        }
+        self.sess.post.assert_called_with(
+            url, json=body, microversion=sot._max_microversion
+        )
diff --git a/openstack/tests/unit/cloud/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index b2177e0d816fa8fbbad90be6fd56cf30a1cf3ef9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test__utils.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test__utils.cpython-310.pyc
deleted file mode 100644
index 9409aa194f2f46bce6e883c46c6e2dc0c57e1ef9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test__utils.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_accelerator.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_accelerator.cpython-310.pyc
deleted file mode 100644
index 6bb366ca2ef64cc72331fda1401ce2590e50f49d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_accelerator.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_aggregate.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_aggregate.cpython-310.pyc
deleted file mode 100644
index 021304fc4fd51d89282d3ef482bc80674c2c1356..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_aggregate.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_availability_zones.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_availability_zones.cpython-310.pyc
deleted file mode 100644
index ea4856bde9482f9b7419a9d4d57c4328179d6e9a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_availability_zones.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_baremetal_node.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_baremetal_node.cpython-310.pyc
deleted file mode 100644
index 70f577d108882992a461f81407431be8167a4e9a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_baremetal_node.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_baremetal_ports.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_baremetal_ports.cpython-310.pyc
deleted file mode 100644
index 9ccef14bc12453b98bd86d73b2f7379abb21cc1e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_baremetal_ports.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_cloud.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_cloud.cpython-310.pyc
deleted file mode 100644
index 7886fb56112a9f20771b80ebad88d32b29177a50..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_cloud.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_cluster_templates.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_cluster_templates.cpython-310.pyc
deleted file mode 100644
index c5023f65312925cf60a59706a955e1a2ec448a02..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_cluster_templates.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_clustering.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_clustering.cpython-310.pyc
deleted file mode 100644
index 9e27b05529bf97860152b90c112957afa9672dca..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_clustering.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_coe_clusters.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_coe_clusters.cpython-310.pyc
deleted file mode 100644
index b9122d94c02cbf09ef435877f68b388e3432ed32..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_coe_clusters.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_coe_clusters_certificate.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_coe_clusters_certificate.cpython-310.pyc
deleted file mode 100644
index 9a80fe811e9ca460681e3e4ccd79f58124b8f665..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_coe_clusters_certificate.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_compute.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_compute.cpython-310.pyc
deleted file mode 100644
index d59a9df6de8a0e17990f0710d0154c1b4d6065cb..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_compute.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_create_server.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_create_server.cpython-310.pyc
deleted file mode 100644
index d79a7211d6feb0560a8370a69513d1d29fe4903d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_create_server.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_create_volume_snapshot.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_create_volume_snapshot.cpython-310.pyc
deleted file mode 100644
index e4125c1f24f3c09fee5c0b9d6fc66c21441e2049..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_create_volume_snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_delete_server.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_delete_server.cpython-310.pyc
deleted file mode 100644
index fa535942b40075f6aac17025bd8ab7087aa33795..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_delete_server.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_delete_volume_snapshot.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_delete_volume_snapshot.cpython-310.pyc
deleted file mode 100644
index 7e8042205168fc8053b2d40adea43bf517694858..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_delete_volume_snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_domain_params.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_domain_params.cpython-310.pyc
deleted file mode 100644
index 71c40efd5fe0b98519720cedf8b5cc0140e8f86e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_domain_params.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_domains.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_domains.cpython-310.pyc
deleted file mode 100644
index 8e175bfd0dfb7a9ba8cd0ad995f6c1ae79ccccd3..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_domains.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_endpoints.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_endpoints.cpython-310.pyc
deleted file mode 100644
index 5515cb5fbb9b7ca21c3db676873e7df75dc52372..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_endpoints.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_flavors.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_flavors.cpython-310.pyc
deleted file mode 100644
index bcd2ad446e4744c8153ef6412468235d25d20591..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_flavors.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_floating_ip_common.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_floating_ip_common.cpython-310.pyc
deleted file mode 100644
index 9e69b754a6d1a7950087408dabd30a0677a74bda..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_floating_ip_common.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_floating_ip_neutron.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_floating_ip_neutron.cpython-310.pyc
deleted file mode 100644
index cf33a90629966dca0fdc1d2b51717c8bbf01ed59..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_floating_ip_neutron.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_floating_ip_nova.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_floating_ip_nova.cpython-310.pyc
deleted file mode 100644
index eab1c14436c15c63a547f0cf3ab6e9465a8f98f8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_floating_ip_nova.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc
deleted file mode 100644
index ae5f3b9963b11aff53d3e1c71a9aaf3b095524b9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_floating_ip_pool.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_fwaas.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_fwaas.cpython-310.pyc
deleted file mode 100644
index 8106d891067d1470a5ebb29dc70daf259054aca0..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_fwaas.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_groups.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_groups.cpython-310.pyc
deleted file mode 100644
index ce83a6b349f0defce9bf9520679f9988a474def6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_groups.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_identity_roles.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_identity_roles.cpython-310.pyc
deleted file mode 100644
index d04f6f439919068c23859fd1a69a591044496346..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_identity_roles.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_identity_users.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_identity_users.cpython-310.pyc
deleted file mode 100644
index f299598969519f3a0f5307545bf36b171a3d5a00..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_identity_users.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_image.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_image.cpython-310.pyc
deleted file mode 100644
index 086883d968cfbbb832fd47862f621dde647b723a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_image.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_image_snapshot.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_image_snapshot.cpython-310.pyc
deleted file mode 100644
index 62b015d71cc9fbe9b7a57838bb3f70b06ce2b874..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_image_snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_inventory.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_inventory.cpython-310.pyc
deleted file mode 100644
index 111e0678e9608a1b9514a2b81ff38f087827043c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_inventory.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_keypair.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_keypair.cpython-310.pyc
deleted file mode 100644
index 5cb67d01663931c1b960ea6426a6248418a1b3ae..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_keypair.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_limits.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_limits.cpython-310.pyc
deleted file mode 100644
index dd77e760ade356435a969bcdfeffc4fd3e55c605..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_limits.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_magnum_services.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_magnum_services.cpython-310.pyc
deleted file mode 100644
index e7c7dc7fd0d23a5855aab0f175806f82b95539ac..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_magnum_services.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_meta.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_meta.cpython-310.pyc
deleted file mode 100644
index f561ca7451ece8a94a227179395c54a92ca94d60..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_meta.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_network.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_network.cpython-310.pyc
deleted file mode 100644
index f90df4cfd5d06b164da0c91fa99c30fcba6e4672..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_network.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_object.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_object.cpython-310.pyc
deleted file mode 100644
index ee5a0007084e971201aeef1b226fb6eeca1766fd..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_object.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_openstackcloud.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_openstackcloud.cpython-310.pyc
deleted file mode 100644
index db33595e32cf20d6084d4145c469390a2737a105..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_openstackcloud.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_operator.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_operator.cpython-310.pyc
deleted file mode 100644
index 316d35c9b06f9ad827588f2c049081a6f3703820..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_operator.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_operator_noauth.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_operator_noauth.cpython-310.pyc
deleted file mode 100644
index 149fcabe7c9497fc796ec0a8bf21c5db057e8e85..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_operator_noauth.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_port.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_port.cpython-310.pyc
deleted file mode 100644
index 22c4ed756342a060b065109606f388f5d08c8032..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_port.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_project.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_project.cpython-310.pyc
deleted file mode 100644
index 66bdc9bec585ef0c821370d27fd7b960cd1bfcf6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_project.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 6590d3187c4445c5569b04e26fb8353d8a64653e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 99c7f57168146d543827963e6680e964348f313a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index f120b58a59102eadc9e91e81614ed38382a5cea3..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_qos_policy.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_qos_policy.cpython-310.pyc
deleted file mode 100644
index 9650212f66871517194bc76d3d14ba1b35a33172..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_qos_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_qos_rule_type.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_qos_rule_type.cpython-310.pyc
deleted file mode 100644
index 9e50598677ee98841e4aaa5789f8021b4219d674..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_qos_rule_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_quotas.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_quotas.cpython-310.pyc
deleted file mode 100644
index ce9a16e1a152f11bdcec790f10d45db4d97b0871..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_quotas.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_rebuild_server.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_rebuild_server.cpython-310.pyc
deleted file mode 100644
index 57d0eef209ca94ca632c6fece11ba814a85fa62d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_rebuild_server.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_recordset.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_recordset.cpython-310.pyc
deleted file mode 100644
index ca0240a94c650618fe9cd6f2814e8588788b53e3..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_recordset.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_role_assignment.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_role_assignment.cpython-310.pyc
deleted file mode 100644
index 66ee25640c7eed2ed5a4f199039025397a7f47d8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_role_assignment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_router.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_router.cpython-310.pyc
deleted file mode 100644
index f9593cd245711ce68022c3d3e139aaf3b0156b51..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_router.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_security_groups.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_security_groups.cpython-310.pyc
deleted file mode 100644
index 172dc60e172122e347dbc9e33962b4d711fee470..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_security_groups.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_server_console.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_server_console.cpython-310.pyc
deleted file mode 100644
index 498f55384ce273c77d6f5cdf2f577ae246d464f5..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_server_console.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_server_delete_metadata.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_server_delete_metadata.cpython-310.pyc
deleted file mode 100644
index ff52b66ebb00f145c9bf5f04d66e2373f69903ca..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_server_delete_metadata.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_server_group.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_server_group.cpython-310.pyc
deleted file mode 100644
index 2351e3689ba4f0437f750236bbf33393d9a660cb..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_server_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_server_set_metadata.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_server_set_metadata.cpython-310.pyc
deleted file mode 100644
index 46eec9634a168bd48b11f3ec57d404903c216482..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_server_set_metadata.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_services.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_services.cpython-310.pyc
deleted file mode 100644
index 45f127c53aeda15a03541b9b2ce594e470ef59d5..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_services.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_shared_file_system.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_shared_file_system.cpython-310.pyc
deleted file mode 100644
index 3f5cbc8068a5b5a52c8dcad3aa7f62b219176581..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_shared_file_system.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_stack.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_stack.cpython-310.pyc
deleted file mode 100644
index 73a8aad5d46cbb1603ba30c71998bf1e4bedd9e1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_stack.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_subnet.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_subnet.cpython-310.pyc
deleted file mode 100644
index 3c8742d4fc7d715685584a6a5145d8d87ad8cca6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_subnet.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_update_server.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_update_server.cpython-310.pyc
deleted file mode 100644
index 5b4d22f685657a4fc19a51ffd5fa71ff317ceb7e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_update_server.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_usage.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_usage.cpython-310.pyc
deleted file mode 100644
index 80b5b670defcf91f14630a0a26cde1d38f8b10f3..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_usage.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_users.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_users.cpython-310.pyc
deleted file mode 100644
index 5f0430bc2d7f5f7726e1fffb55e90c64c6d9c671..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_users.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_volume.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_volume.cpython-310.pyc
deleted file mode 100644
index 6d173e34909c8440a05c08cc4b229f7018210323..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_volume.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_volume_access.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_volume_access.cpython-310.pyc
deleted file mode 100644
index bec3d376f5286fca39f8a219feadd4a96fedcf01..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_volume_access.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_volume_backups.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_volume_backups.cpython-310.pyc
deleted file mode 100644
index 43fc1f52bf416f234fd184120a4656ff2601b7a1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_volume_backups.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/__pycache__/test_zone.cpython-310.pyc b/openstack/tests/unit/cloud/__pycache__/test_zone.cpython-310.pyc
deleted file mode 100644
index 5244ccf59c60fa4bf7af6b4b0184c4a98ccbe380..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/cloud/__pycache__/test_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/cloud/test__utils.py b/openstack/tests/unit/cloud/test__utils.py
index de5a37cdee76890ed02cd20738b5392e7db6a352..273a3f6e2894756e528b9c18363feb9c93ebedf0 100644
--- a/openstack/tests/unit/cloud/test__utils.py
+++ b/openstack/tests/unit/cloud/test__utils.py
@@ -18,7 +18,7 @@ from uuid import uuid4
 import testtools
 
 from openstack.cloud import _utils
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.tests.unit import base
 
 RANGE_DATA = [
@@ -200,7 +200,7 @@ class TestUtils(base.TestCase):
         """Test non-integer key value raises OSCE"""
         data = [{'f1': 3}, {'f1': "aaa"}, {'f1': 1}]
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             "Search for minimum value failed. "
             "Value for f1 is not an integer: aaa",
         ):
@@ -240,7 +240,7 @@ class TestUtils(base.TestCase):
         """Test non-integer key value raises OSCE"""
         data = [{'f1': 3}, {'f1': "aaa"}, {'f1': 1}]
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             "Search for maximum value failed. "
             "Value for f1 is not an integer: aaa",
         ):
@@ -308,13 +308,13 @@ class TestUtils(base.TestCase):
 
     def test_range_filter_invalid_int(self):
         with testtools.ExpectedException(
-            exc.OpenStackCloudException, "Invalid range value: <1A0"
+            exceptions.SDKException, "Invalid range value: <1A0"
         ):
             _utils.range_filter(RANGE_DATA, "key1", "<1A0")
 
     def test_range_filter_invalid_op(self):
         with testtools.ExpectedException(
-            exc.OpenStackCloudException, "Invalid range value: <>100"
+            exceptions.SDKException, "Invalid range value: <>100"
         ):
             _utils.range_filter(RANGE_DATA, "key1", "<>100")
 
diff --git a/openstack/tests/unit/cloud/test_baremetal_node.py b/openstack/tests/unit/cloud/test_baremetal_node.py
index 71d9a9027db6e191468b599eec42a2f074757d0b..c768d23781da1c6a06ecb6dc0fcd67d9e9f543f8 100644
--- a/openstack/tests/unit/cloud/test_baremetal_node.py
+++ b/openstack/tests/unit/cloud/test_baremetal_node.py
@@ -21,7 +21,6 @@ import uuid
 
 from testscenarios import load_tests_apply_scenarios as load_tests  # noqa
 
-from openstack.cloud import exc
 from openstack import exceptions
 from openstack.network.v2 import port as _port
 from openstack.tests import fakes
@@ -319,7 +318,7 @@ class TestBaremetalNode(base.IronicTestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.inspect_machine,
             self.fake_baremetal_node['uuid'],
             wait=True,
@@ -344,7 +343,7 @@ class TestBaremetalNode(base.IronicTestCase):
             ]
         )
         self.assertRaisesRegex(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             'associated with an instance',
             self.cloud.inspect_machine,
             self.fake_baremetal_node['uuid'],
@@ -744,7 +743,7 @@ class TestBaremetalNode(base.IronicTestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.inspect_machine,
             self.fake_baremetal_node['uuid'],
             wait=True,
@@ -985,7 +984,7 @@ class TestBaremetalNode(base.IronicTestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.set_machine_power_reboot,
             self.fake_baremetal_node['uuid'],
         )
@@ -1195,7 +1194,7 @@ class TestBaremetalNode(base.IronicTestCase):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.node_set_provision_state,
             self.fake_baremetal_node['uuid'],
             'active',
@@ -1267,7 +1266,7 @@ class TestBaremetalNode(base.IronicTestCase):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.node_set_provision_state,
             self.fake_baremetal_node['uuid'],
             'active',
@@ -1378,7 +1377,7 @@ class TestBaremetalNode(base.IronicTestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.wait_for_baremetal_node_lock,
             self.fake_baremetal_node,
             timeout=0.001,
@@ -1742,7 +1741,7 @@ class TestBaremetalNode(base.IronicTestCase):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.register_machine,
             nics,
             **node_to_post
@@ -1807,7 +1806,7 @@ class TestBaremetalNode(base.IronicTestCase):
         # state to the API is essentially a busy state that we
         # want to block on until it has cleared.
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.register_machine,
             nics,
             timeout=0.001,
@@ -1897,7 +1896,7 @@ class TestBaremetalNode(base.IronicTestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.register_machine,
             nics,
             wait=True,
@@ -1946,7 +1945,7 @@ class TestBaremetalNode(base.IronicTestCase):
             ]
         )
         self.assertRaisesRegex(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             'no ports for you',
             self.cloud.register_machine,
             nics,
@@ -2012,7 +2011,7 @@ class TestBaremetalNode(base.IronicTestCase):
             ]
         )
         self.assertRaisesRegex(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             'no ports for you',
             self.cloud.register_machine,
             nics,
@@ -2101,7 +2100,7 @@ class TestBaremetalNode(base.IronicTestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.unregister_machine,
             nics,
             self.fake_baremetal_node['uuid'],
@@ -2211,7 +2210,7 @@ class TestBaremetalNode(base.IronicTestCase):
 
         for state in invalid_states:
             self.assertRaises(
-                exc.OpenStackCloudException,
+                exceptions.SDKException,
                 self.cloud.unregister_machine,
                 nics,
                 self.fake_baremetal_node['uuid'],
diff --git a/openstack/tests/unit/cloud/test_baremetal_ports.py b/openstack/tests/unit/cloud/test_baremetal_ports.py
index cd2a2152bbda80a67eebc0bff91a44c7fdbf5143..19c5cff54b8a30fe1d64624e47bcfff7e28efa2b 100644
--- a/openstack/tests/unit/cloud/test_baremetal_ports.py
+++ b/openstack/tests/unit/cloud/test_baremetal_ports.py
@@ -19,7 +19,7 @@ Tests for baremetal port related operations
 
 from testscenarios import load_tests_apply_scenarios as load_tests  # noqa
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -71,7 +71,7 @@ class TestBaremetalPort(base.IronicTestCase):
                 )
             ]
         )
-        self.assertRaises(exc.OpenStackCloudException, self.cloud.list_nics)
+        self.assertRaises(exceptions.SDKException, self.cloud.list_nics)
         self.assert_calls()
 
     def test_list_nics_for_machine(self):
@@ -121,7 +121,7 @@ class TestBaremetalPort(base.IronicTestCase):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.list_nics_for_machine,
             self.fake_baremetal_node['uuid'],
         )
diff --git a/openstack/tests/unit/cloud/test_cloud.py b/openstack/tests/unit/cloud/test_cloud.py
index cbed0c86a0cd81bb06ae9f90ed3ea80c6c2854be..8ae554f4677dce3ef2c2b7758984f5746da3f355 100644
--- a/openstack/tests/unit/cloud/test_cloud.py
+++ b/openstack/tests/unit/cloud/test_cloud.py
@@ -15,8 +15,8 @@ import uuid
 
 import testtools
 
-from openstack.cloud import exc
 from openstack import connection
+from openstack import exceptions
 from openstack.tests.unit import base
 from openstack import utils
 
@@ -145,7 +145,7 @@ class TestCloud(base.TestCase):
 
     def test_iterate_timeout_bad_wait(self):
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             "Wait value must be an int or float value.",
         ):
             for count in utils.iterate_timeout(
@@ -174,7 +174,7 @@ class TestCloud(base.TestCase):
     @mock.patch('time.sleep')
     def test_iterate_timeout_timeout(self, mock_sleep):
         message = "timeout test"
-        with testtools.ExpectedException(exc.OpenStackCloudTimeout, message):
+        with testtools.ExpectedException(exceptions.ResourceTimeout, message):
             for count in utils.iterate_timeout(0.1, message, wait=1):
                 pass
         mock_sleep.assert_called_with(1.0)
diff --git a/openstack/tests/unit/cloud/test_cluster_templates.py b/openstack/tests/unit/cloud/test_cluster_templates.py
index a1c5a4c632040d122f94ec3f5a64a51bcbc568bb..75dd40b49bfab0c3b6f8fce1011091fa0c7d86a5 100644
--- a/openstack/tests/unit/cloud/test_cluster_templates.py
+++ b/openstack/tests/unit/cloud/test_cluster_templates.py
@@ -210,9 +210,9 @@ class TestClusterTemplates(base.TestCase):
         # for matching the old error message text. Investigate plumbing
         # an error message in to the adapter call so that we can give a
         # more informative error. Also, the test was originally catching
-        # OpenStackCloudException - but for some reason testtools will not
+        # SDKException - but for some reason testtools will not
         # match the more specific HTTPError, even though it's a subclass
-        # of OpenStackCloudException.
+        # of SDKException.
         with testtools.ExpectedException(exceptions.ForbiddenException):
             self.cloud.create_cluster_template('fake-cluster-template')
         self.assert_calls()
diff --git a/openstack/tests/unit/cloud/test_compute.py b/openstack/tests/unit/cloud/test_compute.py
index 04622ee633bbd9e0c2548ab297db49464336d1e5..90f9845054ee58ff0cfff5ff1c556f166cb54882 100644
--- a/openstack/tests/unit/cloud/test_compute.py
+++ b/openstack/tests/unit/cloud/test_compute.py
@@ -12,7 +12,6 @@
 
 import uuid
 
-from openstack.cloud import exc
 from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
@@ -495,6 +494,6 @@ class TestServers(base.TestCase):
             ]
         )
 
-        self.assertRaises(exc.OpenStackCloudException, self.cloud.list_servers)
+        self.assertRaises(exceptions.SDKException, self.cloud.list_servers)
 
         self.assert_calls()
diff --git a/openstack/tests/unit/cloud/test_create_server.py b/openstack/tests/unit/cloud/test_create_server.py
index 02b4fa6b521a024b0ca7b9c8b76ad9727232114b..1acedb2c3b79703b4793b4d73799c53fa73aa4e4 100644
--- a/openstack/tests/unit/cloud/test_create_server.py
+++ b/openstack/tests/unit/cloud/test_create_server.py
@@ -21,10 +21,10 @@ import base64
 from unittest import mock
 import uuid
 
-from openstack.cloud import exc
 from openstack.cloud import meta
 from openstack.compute.v2 import server
 from openstack import connection
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -81,7 +81,7 @@ class TestCreateServer(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_server,
             'server-name',
             {'id': 'image-id'},
@@ -135,7 +135,7 @@ class TestCreateServer(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_server,
             'server-name',
             {'id': 'image-id'},
@@ -196,7 +196,7 @@ class TestCreateServer(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_server,
             'server-name',
             dict(id='image-id'),
@@ -251,7 +251,7 @@ class TestCreateServer(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudTimeout,
+            exceptions.ResourceTimeout,
             self.cloud.create_server,
             'server-name',
             dict(id='image-id'),
@@ -815,7 +815,7 @@ class TestCreateServer(base.TestCase):
         mock_add_ips_to_server.return_value = fake_server
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_server,
             'server-name',
             {'id': 'image-id'},
@@ -1179,7 +1179,7 @@ class TestCreateServer(base.TestCase):
         self.use_nothing()
         fixed_ip = '10.0.0.1'
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_server,
             'server-name',
             dict(id='image-id'),
diff --git a/openstack/tests/unit/cloud/test_create_volume_snapshot.py b/openstack/tests/unit/cloud/test_create_volume_snapshot.py
index b1e0e2fb5a57163517124894cd65849c2dd7608f..12ca3aeaf489a56d91248fd8e1ef25b40c273fde 100644
--- a/openstack/tests/unit/cloud/test_create_volume_snapshot.py
+++ b/openstack/tests/unit/cloud/test_create_volume_snapshot.py
@@ -18,8 +18,8 @@ Tests for the `create_volume_snapshot` command.
 """
 
 from openstack.block_storage.v3 import snapshot
-from openstack.cloud import exc
 from openstack.cloud import meta
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -125,7 +125,7 @@ class TestCreateVolumeSnapshot(base.TestCase):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudTimeout,
+            exceptions.ResourceTimeout,
             self.cloud.create_volume_snapshot,
             volume_id=volume_id,
             wait=True,
@@ -181,7 +181,7 @@ class TestCreateVolumeSnapshot(base.TestCase):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_volume_snapshot,
             volume_id=volume_id,
             wait=True,
diff --git a/openstack/tests/unit/cloud/test_delete_server.py b/openstack/tests/unit/cloud/test_delete_server.py
index 9a508cfabfa8bce9ab960ea6132565408b9ffa16..3e62f71a00dff62208054a568abcf764ca25f3d8 100644
--- a/openstack/tests/unit/cloud/test_delete_server.py
+++ b/openstack/tests/unit/cloud/test_delete_server.py
@@ -18,7 +18,7 @@ Tests for the `delete_server` command.
 """
 import uuid
 
-from openstack.cloud import exc as shade_exc
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -204,7 +204,7 @@ class TestDeleteServer(base.TestCase):
         )
 
         self.assertRaises(
-            shade_exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.delete_server,
             'speedy',
             wait=False,
diff --git a/openstack/tests/unit/cloud/test_delete_volume_snapshot.py b/openstack/tests/unit/cloud/test_delete_volume_snapshot.py
index c70f938ee4b9ce34ce39e7338e50d3e914c18357..77314b42da3a9538168ccfa6a747c1fa1d3c97ab 100644
--- a/openstack/tests/unit/cloud/test_delete_volume_snapshot.py
+++ b/openstack/tests/unit/cloud/test_delete_volume_snapshot.py
@@ -17,8 +17,8 @@ test_delete_volume_snapshot
 Tests for the `delete_volume_snapshot` command.
 """
 
-from openstack.cloud import exc
 from openstack.cloud import meta
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -66,7 +66,7 @@ class TestDeleteVolumeSnapshot(base.TestCase):
     def test_delete_volume_snapshot_with_error(self):
         """
         Test that a exception while deleting a volume snapshot will cause an
-        OpenStackCloudException.
+        SDKException.
         """
         fake_snapshot = fakes.FakeVolumeSnapshot(
             '1234', 'available', 'foo', 'derpysnapshot'
@@ -94,7 +94,7 @@ class TestDeleteVolumeSnapshot(base.TestCase):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.delete_volume_snapshot,
             name_or_id='1234',
         )
@@ -138,7 +138,7 @@ class TestDeleteVolumeSnapshot(base.TestCase):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudTimeout,
+            exceptions.ResourceTimeout,
             self.cloud.delete_volume_snapshot,
             name_or_id='1234',
             wait=True,
diff --git a/openstack/tests/unit/cloud/test_domain_params.py b/openstack/tests/unit/cloud/test_domain_params.py
index fd52e89b78a66f4f7367530a11e7f8e3945a983a..bbf7f4c089d2244a58995f429b3cea2e96d758dc 100644
--- a/openstack/tests/unit/cloud/test_domain_params.py
+++ b/openstack/tests/unit/cloud/test_domain_params.py
@@ -10,7 +10,7 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.tests.unit import base
 
 
@@ -43,7 +43,7 @@ class TestDomainParams(base.TestCase):
         project_data = self._get_project_data(v3=True)
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud._get_identity_params,
             domain_id=None,
             project=project_data.project_name,
diff --git a/openstack/tests/unit/cloud/test_domains.py b/openstack/tests/unit/cloud/test_domains.py
index 8243779750b464601adb93437969bdbd997f2f20..761e7ced50ec9299eb2400d63ae1e2c0b139dd70 100644
--- a/openstack/tests/unit/cloud/test_domains.py
+++ b/openstack/tests/unit/cloud/test_domains.py
@@ -18,7 +18,7 @@ import uuid
 import testtools
 from testtools import matchers
 
-import openstack.cloud
+from openstack import exceptions
 from openstack.tests.unit import base
 
 
@@ -145,9 +145,7 @@ class TestDomains(base.TestCase):
         domain_data = self._get_domain_data(
             domain_name='domain_name', enabled=True
         )
-        with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudBadRequest
-        ):
+        with testtools.ExpectedException(exceptions.BadRequestException):
             self.register_uris(
                 [
                     dict(
@@ -237,9 +235,7 @@ class TestDomains(base.TestCase):
                 ),
             ]
         )
-        with testtools.ExpectedException(
-            openstack.exceptions.ResourceNotFound
-        ):
+        with testtools.ExpectedException(exceptions.ResourceNotFound):
             self.cloud.delete_domain(domain_data.domain_id)
         self.assert_calls()
 
@@ -320,8 +316,6 @@ class TestDomains(base.TestCase):
                 )
             ]
         )
-        with testtools.ExpectedException(
-            openstack.exceptions.ConflictException
-        ):
+        with testtools.ExpectedException(exceptions.ConflictException):
             self.cloud.delete_domain(domain_data.domain_id)
         self.assert_calls()
diff --git a/openstack/tests/unit/cloud/test_flavors.py b/openstack/tests/unit/cloud/test_flavors.py
index b6026110aa1ac929281c04cb53de1adb095319cc..3f9230f59624864e7b4a396aa75def4f9431b5c0 100644
--- a/openstack/tests/unit/cloud/test_flavors.py
+++ b/openstack/tests/unit/cloud/test_flavors.py
@@ -10,8 +10,7 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-
-import openstack.cloud
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -136,7 +135,7 @@ class TestFlavors(base.TestCase):
         )
 
         self.assertRaises(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.delete_flavor,
             'vanilla',
         )
@@ -278,7 +277,7 @@ class TestFlavors(base.TestCase):
             ]
         )
         self.assertRaises(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.get_flavor_by_ram,
             ram=100,
         )
diff --git a/openstack/tests/unit/cloud/test_floating_ip_neutron.py b/openstack/tests/unit/cloud/test_floating_ip_neutron.py
index 3d3ae24791f5888d339d31b374c51165b379ebc0..b3d6688664f5942a1432006cc60931983b58ef17 100644
--- a/openstack/tests/unit/cloud/test_floating_ip_neutron.py
+++ b/openstack/tests/unit/cloud/test_floating_ip_neutron.py
@@ -22,7 +22,7 @@ Tests Floating IP resource methods for Neutron
 import copy
 import datetime
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 from openstack import utils
@@ -341,7 +341,7 @@ class TestFloatingIP(base.TestCase):
 
         # Fails because we requested a port and the returned FIP has no port
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_floating_ip,
             network='my-network',
             port='ce705c24-c1ef-408a-bda3-7bbd946164ab',
@@ -492,7 +492,7 @@ class TestFloatingIP(base.TestCase):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud._neutron_available_floating_ips,
             network='INVALID',
         )
@@ -993,7 +993,7 @@ class TestFloatingIP(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.delete_floating_ip,
             floating_ip_id=fip_id,
             retry=2,
@@ -1313,7 +1313,7 @@ class TestFloatingIP(base.TestCase):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud._neutron_create_floating_ip,
             server=dict(id='some-server'),
         )
diff --git a/openstack/tests/unit/cloud/test_floating_ip_pool.py b/openstack/tests/unit/cloud/test_floating_ip_pool.py
index d2dd2485ad90c65765386486d88f6a260500a8d0..bfa5645aa7cc3e9019be87676eae18415c68a5d9 100644
--- a/openstack/tests/unit/cloud/test_floating_ip_pool.py
+++ b/openstack/tests/unit/cloud/test_floating_ip_pool.py
@@ -19,7 +19,7 @@ test_floating_ip_pool
 Test floating IP pool resource (managed by nova)
 """
 
-from openstack.cloud.exc import OpenStackCloudException
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -96,7 +96,8 @@ class TestFloatingIPPool(base.TestCase):
         )
 
         self.assertRaises(
-            OpenStackCloudException, self.cloud.list_floating_ip_pools
+            exceptions.SDKException,
+            self.cloud.list_floating_ip_pools,
         )
 
         self.assert_calls()
diff --git a/openstack/tests/unit/cloud/test_image.py b/openstack/tests/unit/cloud/test_image.py
index 731ab7ee3b81758221bfcca7aff256d4dd626f22..8204895cf70923377b3f4e06555444f28ec0b868 100644
--- a/openstack/tests/unit/cloud/test_image.py
+++ b/openstack/tests/unit/cloud/test_image.py
@@ -18,7 +18,6 @@ import tempfile
 from unittest import mock
 import uuid
 
-from openstack.cloud import exc
 from openstack.cloud import meta
 from openstack import connection
 from openstack import exceptions
@@ -70,7 +69,7 @@ class TestImage(BaseTestImage):
 
     def test_download_image_no_output(self):
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.download_image,
             self.image_name,
         )
@@ -78,7 +77,7 @@ class TestImage(BaseTestImage):
     def test_download_image_two_outputs(self):
         fake_fd = io.BytesIO()
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.download_image,
             self.image_name,
             output_path='fake_path',
@@ -110,7 +109,7 @@ class TestImage(BaseTestImage):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudResourceNotFound,
+            exceptions.NotFoundException,
             self.cloud.download_image,
             self.image_name,
             output_path='fake_path',
@@ -1354,7 +1353,7 @@ class TestImage(BaseTestImage):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudHTTPError,
+            exceptions.HttpException,
             self._call_create_image,
             self.image_name,
         )
@@ -1470,7 +1469,7 @@ class TestImage(BaseTestImage):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudHTTPError,
+            exceptions.HttpException,
             self._call_create_image,
             self.image_name,
         )
@@ -1556,7 +1555,7 @@ class TestImage(BaseTestImage):
         self.cloud.image_api_use_tasks = False
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self._call_create_image,
             self.image_name,
             allow_duplicates=True,
diff --git a/openstack/tests/unit/cloud/test_image_snapshot.py b/openstack/tests/unit/cloud/test_image_snapshot.py
index 2e33be1a4e29f1b24d61b755796c122b08eaf7fa..71006b61164e8dcf76c63b95d15a6ca2a1641c5f 100644
--- a/openstack/tests/unit/cloud/test_image_snapshot.py
+++ b/openstack/tests/unit/cloud/test_image_snapshot.py
@@ -14,7 +14,7 @@
 
 import uuid
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -66,7 +66,7 @@ class TestImageSnapshot(base.TestCase):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudTimeout,
+            exceptions.ResourceTimeout,
             self.cloud.create_image_snapshot,
             snapshot_name,
             dict(id=self.server_id),
diff --git a/openstack/tests/unit/cloud/test_keypair.py b/openstack/tests/unit/cloud/test_keypair.py
index 20410609fa83943141558c10b1219dcb0591334b..433cf13c35621bff7f7d536b696b905cb46575c5 100644
--- a/openstack/tests/unit/cloud/test_keypair.py
+++ b/openstack/tests/unit/cloud/test_keypair.py
@@ -13,7 +13,7 @@
 
 import fixtures
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -83,7 +83,7 @@ class TestKeypair(base.TestCase):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_keypair,
             self.keyname,
             self.key['public_key'],
@@ -195,7 +195,5 @@ class TestKeypair(base.TestCase):
                 ),
             ]
         )
-        self.assertRaises(
-            exc.OpenStackCloudException, self.cloud.list_keypairs
-        )
+        self.assertRaises(exceptions.SDKException, self.cloud.list_keypairs)
         self.assert_calls()
diff --git a/openstack/tests/unit/cloud/test_network.py b/openstack/tests/unit/cloud/test_network.py
index 04880b9e18e5daf5aa6e4ec5e24d0afb44d188ea..1490799c0938169e31c93f507c36404523b77d9e 100644
--- a/openstack/tests/unit/cloud/test_network.py
+++ b/openstack/tests/unit/cloud/test_network.py
@@ -15,8 +15,6 @@ from unittest import mock
 
 import testtools
 
-import openstack
-import openstack.cloud
 from openstack import exceptions
 from openstack.network.v2 import network as _network
 from openstack.tests.unit import base
@@ -468,7 +466,7 @@ class TestNetworks(base.TestCase):
     def test_create_network_wrong_availability_zone_hints_type(self):
         azh_opts = "invalid"
         with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             "Parameter 'availability_zone_hints' must be a list",
         ):
             self.cloud.create_network(
@@ -478,7 +476,7 @@ class TestNetworks(base.TestCase):
     def test_create_network_provider_wrong_type(self):
         provider_opts = "invalid"
         with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             "Parameter 'provider' must be a dict",
         ):
             self.cloud.create_network("netname", provider=provider_opts)
@@ -543,14 +541,14 @@ class TestNetworks(base.TestCase):
 
     def test_create_network_with_wrong_mtu_size(self):
         with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             "Parameter 'mtu_size' must be greater than 67.",
         ):
             self.cloud.create_network("netname", mtu_size=42)
 
     def test_create_network_with_wrong_mtu_type(self):
         with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             "Parameter 'mtu_size' must be an integer.",
         ):
             self.cloud.create_network("netname", mtu_size="fourty_two")
@@ -658,7 +656,7 @@ class TestNetworks(base.TestCase):
             ]
         )
         self.assertRaises(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.delete_network,
             network_name,
         )
diff --git a/openstack/tests/unit/cloud/test_object.py b/openstack/tests/unit/cloud/test_object.py
index 643b1346a7ef27379fefdc50e2c7991216d53829..643b41d6eb7fa49c3025640fd274a96371945a47 100644
--- a/openstack/tests/unit/cloud/test_object.py
+++ b/openstack/tests/unit/cloud/test_object.py
@@ -17,8 +17,6 @@ from unittest import mock
 
 import testtools
 
-import openstack.cloud
-from openstack.cloud import exc
 import openstack.cloud.openstackcloud as oc_oc
 from openstack import exceptions
 from openstack.object_store.v1 import _proxy
@@ -198,7 +196,7 @@ class TestObject(BaseTestObject):
             ]
         )
         self.assertRaises(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.delete_container,
             self.container,
         )
@@ -231,7 +229,7 @@ class TestObject(BaseTestObject):
             [dict(method='POST', uri=self.container_endpoint, status_code=409)]
         )
         self.assertRaises(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.update_container,
             self.container,
             dict(foo='bar'),
@@ -284,7 +282,7 @@ class TestObject(BaseTestObject):
 
     def test_set_container_access_invalid(self):
         self.assertRaises(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.set_container_access,
             self.container,
             'invalid',
@@ -319,7 +317,7 @@ class TestObject(BaseTestObject):
         )
 
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             "Could not determine container access for ACL: invalid",
         ):
             self.cloud.get_container_access(self.container)
@@ -329,7 +327,7 @@ class TestObject(BaseTestObject):
             [dict(method='HEAD', uri=self.container_endpoint, status_code=404)]
         )
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             "Container not found: %s" % self.container,
         ):
             self.cloud.get_container_access(self.container)
@@ -368,9 +366,7 @@ class TestObject(BaseTestObject):
             ]
         )
 
-        self.assertRaises(
-            exc.OpenStackCloudException, self.cloud.list_containers
-        )
+        self.assertRaises(exceptions.SDKException, self.cloud.list_containers)
         self.assert_calls()
 
     @mock.patch.object(_proxy, '_get_expiration', return_value=13345)
@@ -660,7 +656,7 @@ class TestObject(BaseTestObject):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.list_objects,
             self.container,
         )
@@ -798,7 +794,7 @@ class TestObject(BaseTestObject):
         )
 
         self.assertRaises(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.get_object,
             self.container,
             self.object,
@@ -1511,7 +1507,7 @@ class TestObjectUploads(BaseTestObject):
         self.cloud.image_api_use_tasks = True
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_object,
             container=self.container,
             name=self.object,
@@ -1594,7 +1590,7 @@ class TestObjectUploads(BaseTestObject):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_object,
             container=self.container,
             name=self.object,
diff --git a/openstack/tests/unit/cloud/test_operator.py b/openstack/tests/unit/cloud/test_operator.py
index 32a2da4847ef457f9d1b43918f0a79f9c9cb603c..1487d32080a646769570635dbbe1e721df08a297 100644
--- a/openstack/tests/unit/cloud/test_operator.py
+++ b/openstack/tests/unit/cloud/test_operator.py
@@ -15,8 +15,8 @@ import uuid
 
 import testtools
 
-from openstack.cloud import exc
 from openstack.config import cloud_region
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -90,7 +90,7 @@ class TestOperatorCloud(base.TestCase):
         self.cloud.name = 'testcloud'
         self.cloud.config.config['region_name'] = 'testregion'
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             "Error getting image endpoint on testcloud:testregion:"
             " No service",
         ):
diff --git a/openstack/tests/unit/cloud/test_port.py b/openstack/tests/unit/cloud/test_port.py
index 0a21aba6f5cc07d25cb8f617546ba101d3adb29f..d184ca440b8755fe3190ce99cc0ea3dd0031ddbf 100644
--- a/openstack/tests/unit/cloud/test_port.py
+++ b/openstack/tests/unit/cloud/test_port.py
@@ -19,7 +19,7 @@ test_port
 Test port resource (managed by neutron)
 """
 
-from openstack.cloud.exc import OpenStackCloudException
+from openstack import exceptions
 from openstack.network.v2 import port as _port
 from openstack.tests.unit import base
 
@@ -203,7 +203,7 @@ class TestPort(base.TestCase):
             ]
         )
         self.assertRaises(
-            OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_port,
             network_id='test-net-id',
             name='test-port-name',
@@ -312,7 +312,7 @@ class TestPort(base.TestCase):
             ]
         )
         self.assertRaises(
-            OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.update_port,
             name_or_id='d80b1a3b-4fc1-49f3-952e-1e2ab7081d8b',
             name='test-port-name-updated',
@@ -368,7 +368,7 @@ class TestPort(base.TestCase):
                 )
             ]
         )
-        self.assertRaises(OpenStackCloudException, self.cloud.list_ports)
+        self.assertRaises(exceptions.SDKException, self.cloud.list_ports)
 
     def test_search_ports_by_id(self):
         port_id = 'f71a6703-d6de-4be1-a91a-a570ede1d159'
@@ -514,7 +514,7 @@ class TestPort(base.TestCase):
             ]
         )
         self.assertRaises(
-            OpenStackCloudException, self.cloud.delete_port, port_name
+            exceptions.SDKException, self.cloud.delete_port, port_name
         )
         self.assert_calls()
 
diff --git a/openstack/tests/unit/cloud/test_project.py b/openstack/tests/unit/cloud/test_project.py
index dde72440dd371d8e6ffb67b072d7b98d39309d3b..244c9d1153d930df6263413350f4cb1b1364b60f 100644
--- a/openstack/tests/unit/cloud/test_project.py
+++ b/openstack/tests/unit/cloud/test_project.py
@@ -15,8 +15,7 @@ import uuid
 import testtools
 from testtools import matchers
 
-import openstack.cloud
-import openstack.cloud._utils
+from openstack import exceptions
 from openstack.tests.unit import base
 
 
@@ -129,7 +128,7 @@ class TestProject(base.TestCase):
         # shade will raise an attribute error instead of the proper
         # project not found exception.
         with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             "Project %s not found." % project_data.project_id,
         ):
             self.cloud.update_project(project_data.project_id)
diff --git a/openstack/tests/unit/cloud/test_qos_bandwidth_limit_rule.py b/openstack/tests/unit/cloud/test_qos_bandwidth_limit_rule.py
index 01b0ca719cad70095edd84b95eb72aee803ebf29..1a88497d26399a2c05aed7c7cdab0719d863c54d 100644
--- a/openstack/tests/unit/cloud/test_qos_bandwidth_limit_rule.py
+++ b/openstack/tests/unit/cloud/test_qos_bandwidth_limit_rule.py
@@ -15,7 +15,7 @@
 
 import copy
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.network.v2 import qos_bandwidth_limit_rule
 from openstack.tests.unit import base
 
@@ -164,7 +164,7 @@ class TestQosBandwidthLimitRule(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudResourceNotFound,
+            exceptions.NotFoundException,
             self.cloud.get_qos_bandwidth_limit_rule,
             self.policy_name,
             self.rule_id,
@@ -184,7 +184,7 @@ class TestQosBandwidthLimitRule(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.get_qos_bandwidth_limit_rule,
             self.policy_name,
             self.rule_id,
@@ -256,7 +256,7 @@ class TestQosBandwidthLimitRule(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_qos_bandwidth_limit_rule,
             self.policy_name,
             max_kbps=100,
@@ -403,7 +403,7 @@ class TestQosBandwidthLimitRule(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.update_qos_bandwidth_limit_rule,
             self.policy_id,
             self.rule_id,
@@ -558,7 +558,7 @@ class TestQosBandwidthLimitRule(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.delete_qos_bandwidth_limit_rule,
             self.policy_name,
             self.rule_id,
diff --git a/openstack/tests/unit/cloud/test_qos_dscp_marking_rule.py b/openstack/tests/unit/cloud/test_qos_dscp_marking_rule.py
index 82835682260faeb1857ecf0251f395aee1e04417..30af9b7cc6b8e021096c8623052523fc57e65f96 100644
--- a/openstack/tests/unit/cloud/test_qos_dscp_marking_rule.py
+++ b/openstack/tests/unit/cloud/test_qos_dscp_marking_rule.py
@@ -15,7 +15,7 @@
 
 import copy
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.network.v2 import qos_dscp_marking_rule
 from openstack.tests.unit import base
 
@@ -147,7 +147,7 @@ class TestQosDscpMarkingRule(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudResourceNotFound,
+            exceptions.NotFoundException,
             self.cloud.get_qos_dscp_marking_rule,
             self.policy_name,
             self.rule_id,
@@ -167,7 +167,7 @@ class TestQosDscpMarkingRule(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.get_qos_dscp_marking_rule,
             self.policy_name,
             self.rule_id,
@@ -239,7 +239,7 @@ class TestQosDscpMarkingRule(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_qos_dscp_marking_rule,
             self.policy_name,
             dscp_mark=16,
@@ -328,7 +328,7 @@ class TestQosDscpMarkingRule(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.update_qos_dscp_marking_rule,
             self.policy_id,
             self.rule_id,
@@ -403,7 +403,7 @@ class TestQosDscpMarkingRule(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.delete_qos_dscp_marking_rule,
             self.policy_name,
             self.rule_id,
diff --git a/openstack/tests/unit/cloud/test_qos_minimum_bandwidth_rule.py b/openstack/tests/unit/cloud/test_qos_minimum_bandwidth_rule.py
index a08ae90b4a7a6653f6b93faced3d5d48922ad426..ac04d8d5be7e1cd559763ff319f8d7d16c425930 100644
--- a/openstack/tests/unit/cloud/test_qos_minimum_bandwidth_rule.py
+++ b/openstack/tests/unit/cloud/test_qos_minimum_bandwidth_rule.py
@@ -15,7 +15,7 @@
 
 import copy
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.network.v2 import qos_minimum_bandwidth_rule
 from openstack.tests.unit import base
 
@@ -148,7 +148,7 @@ class TestQosMinimumBandwidthRule(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudResourceNotFound,
+            exceptions.NotFoundException,
             self.cloud.get_qos_minimum_bandwidth_rule,
             self.policy_name,
             self.rule_id,
@@ -168,7 +168,7 @@ class TestQosMinimumBandwidthRule(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.get_qos_minimum_bandwidth_rule,
             self.policy_name,
             self.rule_id,
@@ -240,7 +240,7 @@ class TestQosMinimumBandwidthRule(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_qos_minimum_bandwidth_rule,
             self.policy_name,
             min_kbps=100,
@@ -328,7 +328,7 @@ class TestQosMinimumBandwidthRule(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.update_qos_minimum_bandwidth_rule,
             self.policy_id,
             self.rule_id,
@@ -403,7 +403,7 @@ class TestQosMinimumBandwidthRule(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.delete_qos_minimum_bandwidth_rule,
             self.policy_name,
             self.rule_id,
diff --git a/openstack/tests/unit/cloud/test_qos_policy.py b/openstack/tests/unit/cloud/test_qos_policy.py
index fe0ed44badf190635ab38187071f273cd95c1f52..bec3e3bee82d2dc1a75168d535878897661d4de8 100644
--- a/openstack/tests/unit/cloud/test_qos_policy.py
+++ b/openstack/tests/unit/cloud/test_qos_policy.py
@@ -15,7 +15,7 @@
 
 import copy
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.network.v2 import qos_policy as _policy
 from openstack.tests.unit import base
 
@@ -110,7 +110,7 @@ class TestQosPolicy(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.get_qos_policy,
             self.policy_name,
         )
@@ -154,7 +154,7 @@ class TestQosPolicy(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_qos_policy,
             name=self.policy_name,
         )
@@ -256,7 +256,7 @@ class TestQosPolicy(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.delete_qos_policy,
             self.policy_name,
         )
@@ -330,7 +330,7 @@ class TestQosPolicy(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.delete_qos_policy,
             self.policy_name,
         )
@@ -420,7 +420,7 @@ class TestQosPolicy(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.update_qos_policy,
             self.policy_id,
             name="goofy",
diff --git a/openstack/tests/unit/cloud/test_qos_rule_type.py b/openstack/tests/unit/cloud/test_qos_rule_type.py
index 0c2e1d2416b9ab24c5e978ca0bec90f079674047..374ad831dbdf95e56645666f3cafb878ea5e6112 100644
--- a/openstack/tests/unit/cloud/test_qos_rule_type.py
+++ b/openstack/tests/unit/cloud/test_qos_rule_type.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.network.v2 import qos_rule_type
 from openstack.tests.unit import base
 
@@ -117,7 +117,7 @@ class TestQosRuleType(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException, self.cloud.list_qos_rule_types
+            exceptions.SDKException, self.cloud.list_qos_rule_types
         )
         self.assert_calls()
 
@@ -184,7 +184,7 @@ class TestQosRuleType(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.get_qos_rule_type_details,
             self.rule_type_name,
         )
@@ -210,7 +210,7 @@ class TestQosRuleType(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.get_qos_rule_type_details,
             self.rule_type_name,
         )
diff --git a/openstack/tests/unit/cloud/test_quotas.py b/openstack/tests/unit/cloud/test_quotas.py
index 3ea3999193d92025818137fee97ca05b3a4f9c13..53b32d2bb8b968eb43646b4acd0ea1bcc5a1ddd6 100644
--- a/openstack/tests/unit/cloud/test_quotas.py
+++ b/openstack/tests/unit/cloud/test_quotas.py
@@ -10,7 +10,7 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.network.v2 import quota as _quota
 from openstack.tests.unit import base
 
@@ -100,7 +100,7 @@ class TestQuotas(base.TestCase):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.set_compute_quotas,
             project.project_id,
         )
diff --git a/openstack/tests/unit/cloud/test_rebuild_server.py b/openstack/tests/unit/cloud/test_rebuild_server.py
index cba4101db8bb4deea153e5c6e3ac5928f31efbdd..cc96d91b75a9f8f42dcc81687f93c3d7f0cc20f8 100644
--- a/openstack/tests/unit/cloud/test_rebuild_server.py
+++ b/openstack/tests/unit/cloud/test_rebuild_server.py
@@ -21,7 +21,7 @@ Tests for the `rebuild_server` command.
 
 import uuid
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -65,7 +65,7 @@ class TestRebuildServer(base.TestCase):
         )
 
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.rebuild_server,
             self.fake_server['id'],
             "a",
@@ -102,7 +102,7 @@ class TestRebuildServer(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.rebuild_server,
             self.fake_server['id'],
             "a",
@@ -139,7 +139,7 @@ class TestRebuildServer(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudTimeout,
+            exceptions.ResourceTimeout,
             self.cloud.rebuild_server,
             self.fake_server['id'],
             "a",
diff --git a/openstack/tests/unit/cloud/test_role_assignment.py b/openstack/tests/unit/cloud/test_role_assignment.py
index 5f2d465af251659c7880d5aa9955b1bbd19b3966..23b5e3d517bc0cb16c97681a1fe47908282ac053 100644
--- a/openstack/tests/unit/cloud/test_role_assignment.py
+++ b/openstack/tests/unit/cloud/test_role_assignment.py
@@ -14,7 +14,7 @@
 import testtools
 from testtools import matchers
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.tests.unit import base
 
 
@@ -1739,7 +1739,7 @@ class TestRoleAssignment(base.TestCase):
         self.register_uris(uris)
 
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             'Role {0} not found'.format(self.role_data.role_name),
         ):
             self.cloud.grant_role(
@@ -1779,7 +1779,7 @@ class TestRoleAssignment(base.TestCase):
         self.register_uris(uris)
 
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             'Role {0} not found'.format(self.role_data.role_name),
         ):
             self.cloud.revoke_role(
@@ -1795,7 +1795,7 @@ class TestRoleAssignment(base.TestCase):
         )
         self.register_uris(uris)
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             'Must specify either a user or a group',
         ):
             self.cloud.grant_role(self.role_data.role_name)
@@ -1807,7 +1807,7 @@ class TestRoleAssignment(base.TestCase):
         )
         self.register_uris(uris)
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             'Must specify either a user or a group',
         ):
             self.cloud.revoke_role(self.role_data.role_name)
@@ -1823,7 +1823,7 @@ class TestRoleAssignment(base.TestCase):
         self.register_uris(uris)
 
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             'Must specify either a user or a group',
         ):
             self.cloud.grant_role(
@@ -1841,7 +1841,7 @@ class TestRoleAssignment(base.TestCase):
         self.register_uris(uris)
 
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             'Must specify either a user or a group',
         ):
             self.cloud.revoke_role(
@@ -1862,7 +1862,7 @@ class TestRoleAssignment(base.TestCase):
         self.register_uris(uris)
 
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             'Specify either a group or a user, not both',
         ):
             self.cloud.grant_role(
@@ -1885,7 +1885,7 @@ class TestRoleAssignment(base.TestCase):
         self.register_uris(uris)
 
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             'Specify either a group or a user, not both',
         ):
             self.cloud.revoke_role(
@@ -2017,7 +2017,7 @@ class TestRoleAssignment(base.TestCase):
         self.register_uris(uris)
 
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             'Must specify either a domain, project or system',
         ):
             self.cloud.grant_role(
@@ -2036,7 +2036,7 @@ class TestRoleAssignment(base.TestCase):
         self.register_uris(uris)
 
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             'Must specify either a domain, project or system',
         ):
             self.cloud.revoke_role(
@@ -2063,7 +2063,7 @@ class TestRoleAssignment(base.TestCase):
                 ),
             ]
         )
-        with testtools.ExpectedException(exc.OpenStackCloudURINotFound):
+        with testtools.ExpectedException(exceptions.NotFoundException):
             self.cloud.grant_role(
                 self.role_data.role_name,
                 user=self.user_data.name,
@@ -2090,7 +2090,7 @@ class TestRoleAssignment(base.TestCase):
                 ),
             ]
         )
-        with testtools.ExpectedException(exc.OpenStackCloudURINotFound):
+        with testtools.ExpectedException(exceptions.NotFoundException):
             self.cloud.revoke_role(
                 self.role_data.role_name,
                 user=self.user_data.name,
diff --git a/openstack/tests/unit/cloud/test_router.py b/openstack/tests/unit/cloud/test_router.py
index 8ab57ac97d89a802ea2eba877122ae94a1045d34..2d3dd69554650a4e20ca06b8c00725b7c17a3644 100644
--- a/openstack/tests/unit/cloud/test_router.py
+++ b/openstack/tests/unit/cloud/test_router.py
@@ -17,7 +17,7 @@ import copy
 
 import testtools
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.network.v2 import port as _port
 from openstack.network.v2 import router as _router
 from openstack.tests.unit import base
@@ -315,7 +315,7 @@ class TestRouter(base.TestCase):
     def test_create_router_wrong_availability_zone_hints_type(self):
         azh_opts = "invalid"
         with testtools.ExpectedException(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             "Parameter 'availability_zone_hints' must be a list",
         ):
             self.cloud.create_router(
@@ -522,7 +522,7 @@ class TestRouter(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException, self.cloud.delete_router, 'mickey'
+            exceptions.SDKException, self.cloud.delete_router, 'mickey'
         )
         self.assert_calls()
 
diff --git a/openstack/tests/unit/cloud/test_security_groups.py b/openstack/tests/unit/cloud/test_security_groups.py
index ff010bf39a448464524cd8888675d8c2687b17c8..cee8b52a1276124182591a0f264881ac25e06a32 100644
--- a/openstack/tests/unit/cloud/test_security_groups.py
+++ b/openstack/tests/unit/cloud/test_security_groups.py
@@ -14,6 +14,7 @@
 import copy
 
 import openstack.cloud
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -786,7 +787,7 @@ class TestSecurityGroups(base.TestCase):
             ]
         )
         self.assertRaises(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_security_group_rule,
             secgroup_name_or_id='nova-sec-group',
             direction='egress',
diff --git a/openstack/tests/unit/cloud/test_server_delete_metadata.py b/openstack/tests/unit/cloud/test_server_delete_metadata.py
index 0183ae18291e4c53c7efdc32a743cd25658e9415..3e98bfdde737268c4256f954f38aaa9362431567 100644
--- a/openstack/tests/unit/cloud/test_server_delete_metadata.py
+++ b/openstack/tests/unit/cloud/test_server_delete_metadata.py
@@ -19,7 +19,7 @@ Tests for the `delete_server_metadata` command.
 
 import uuid
 
-from openstack.cloud.exc import OpenStackCloudURINotFound
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -65,7 +65,7 @@ class TestServerDeleteMetadata(base.TestCase):
         )
 
         self.assertRaises(
-            OpenStackCloudURINotFound,
+            exceptions.NotFoundException,
             self.cloud.delete_server_metadata,
             self.server_name,
             ['key'],
diff --git a/openstack/tests/unit/cloud/test_server_set_metadata.py b/openstack/tests/unit/cloud/test_server_set_metadata.py
index 75bc0facda0b552144246b4dd19427b59fbd8b95..97450994904434dcb783fdd7e719966d98ac8b8b 100644
--- a/openstack/tests/unit/cloud/test_server_set_metadata.py
+++ b/openstack/tests/unit/cloud/test_server_set_metadata.py
@@ -19,7 +19,7 @@ Tests for the `set_server_metadata` command.
 
 import uuid
 
-from openstack.cloud.exc import OpenStackCloudBadRequest
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -59,7 +59,7 @@ class TestServerSetMetadata(base.TestCase):
         )
 
         self.assertRaises(
-            OpenStackCloudBadRequest,
+            exceptions.BadRequestException,
             self.cloud.set_server_metadata,
             self.server_name,
             {'meta': 'data'},
diff --git a/openstack/tests/unit/cloud/test_services.py b/openstack/tests/unit/cloud/test_services.py
index ee37389b2d2e025012418fd523c4aae8c8f20ad4..d9d2e94e82cc9876680282d2b33cd6571e65aa71 100644
--- a/openstack/tests/unit/cloud/test_services.py
+++ b/openstack/tests/unit/cloud/test_services.py
@@ -21,7 +21,7 @@ Tests Keystone services commands.
 
 from testtools import matchers
 
-from openstack.cloud.exc import OpenStackCloudException
+from openstack import exceptions
 from openstack.tests.unit import base
 
 
@@ -203,7 +203,7 @@ class CloudServices(base.TestCase):
         # Multiple matches
         # test we are getting an Exception
         self.assertRaises(
-            OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.get_service,
             name_or_id=None,
             filters={'type': 'type2'},
diff --git a/openstack/tests/unit/cloud/test_stack.py b/openstack/tests/unit/cloud/test_stack.py
index 0e2717bdbf24765dc9bfaa6bbbf36a12577614fa..0246124f10cc52c3ebd088bfcf7909a6bc669a97 100644
--- a/openstack/tests/unit/cloud/test_stack.py
+++ b/openstack/tests/unit/cloud/test_stack.py
@@ -14,7 +14,7 @@ import tempfile
 
 import testtools
 
-import openstack.cloud
+from openstack import exceptions
 from openstack.orchestration.v1 import stack
 from openstack.tests import fakes
 from openstack.tests.unit import base
@@ -95,9 +95,7 @@ class TestStack(base.TestCase):
                 )
             ]
         )
-        with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudURINotFound
-        ):
+        with testtools.ExpectedException(exceptions.NotFoundException):
             self.cloud.list_stacks()
         self.assert_calls()
 
@@ -160,9 +158,7 @@ class TestStack(base.TestCase):
                 )
             ]
         )
-        with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudURINotFound
-        ):
+        with testtools.ExpectedException(exceptions.NotFoundException):
             self.cloud.search_stacks()
 
     def test_delete_stack(self):
@@ -264,9 +260,7 @@ class TestStack(base.TestCase):
                 ),
             ]
         )
-        with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudBadRequest
-        ):
+        with testtools.ExpectedException(exceptions.BadRequestException):
             self.cloud.delete_stack(self.stack_id)
         self.assert_calls()
 
@@ -550,9 +544,7 @@ class TestStack(base.TestCase):
             ]
         )
 
-        with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudException
-        ):
+        with testtools.ExpectedException(exceptions.SDKException):
             self.cloud.delete_stack(self.stack_id, wait=True)
 
         self.assert_calls()
diff --git a/openstack/tests/unit/cloud/test_subnet.py b/openstack/tests/unit/cloud/test_subnet.py
index 02925d686863287571f333dd234c61469c0e65d6..0005a1969ad61c7c40546075c89b93fe80d0ed66 100644
--- a/openstack/tests/unit/cloud/test_subnet.py
+++ b/openstack/tests/unit/cloud/test_subnet.py
@@ -17,7 +17,7 @@ import copy
 
 import testtools
 
-from openstack.cloud import exc
+from openstack import exceptions
 from openstack.network.v2 import subnet as _subnet
 from openstack.tests.unit import base
 
@@ -253,7 +253,7 @@ class TestSubnet(base.TestCase):
             ]
         )
         with testtools.ExpectedException(
-            exc.OpenStackCloudException, "ip_version must be an integer"
+            exceptions.SDKException, "ip_version must be an integer"
         ):
             self.cloud.create_subnet(
                 self.network_name, self.subnet_cidr, ip_version='4x'
@@ -407,7 +407,7 @@ class TestSubnet(base.TestCase):
         )
         gateway = '192.168.200.3'
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_subnet,
             'kooky',
             self.subnet_cidr,
@@ -441,7 +441,7 @@ class TestSubnet(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_subnet,
             'duck',
             self.subnet_cidr,
@@ -475,7 +475,7 @@ class TestSubnet(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.create_subnet,
             self.network_name,
             self.subnet_cidr,
@@ -731,7 +731,7 @@ class TestSubnet(base.TestCase):
             ]
         )
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.delete_subnet,
             self.subnet_name,
         )
@@ -859,7 +859,7 @@ class TestSubnet(base.TestCase):
 
     def test_update_subnet_conflict_gw_ops(self):
         self.assertRaises(
-            exc.OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.update_subnet,
             self.subnet_id,
             gateway_ip="192.168.199.3",
diff --git a/openstack/tests/unit/cloud/test_update_server.py b/openstack/tests/unit/cloud/test_update_server.py
index 88c61b32b563c212f30644ce9839a22cb4c25867..7f800b4ab52ce76337ab957ebf72a85ea0ef19f1 100644
--- a/openstack/tests/unit/cloud/test_update_server.py
+++ b/openstack/tests/unit/cloud/test_update_server.py
@@ -19,7 +19,7 @@ Tests for the `update_server` command.
 
 import uuid
 
-from openstack.cloud.exc import OpenStackCloudException
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -74,7 +74,7 @@ class TestUpdateServer(base.TestCase):
             ]
         )
         self.assertRaises(
-            OpenStackCloudException,
+            exceptions.SDKException,
             self.cloud.update_server,
             self.server_name,
             name=self.updated_server_name,
diff --git a/openstack/tests/unit/cloud/test_users.py b/openstack/tests/unit/cloud/test_users.py
index 29620591d3f763cfa2e09180214f3ba733e8b548..de5a12b27a23a06a19099a6719fee50c4dc29056 100644
--- a/openstack/tests/unit/cloud/test_users.py
+++ b/openstack/tests/unit/cloud/test_users.py
@@ -14,7 +14,7 @@ import uuid
 
 import testtools
 
-import openstack.cloud
+from openstack import exceptions
 from openstack.tests.unit import base
 
 
@@ -83,7 +83,7 @@ class TestUsers(base.TestCase):
             domain_id=uuid.uuid4().hex, email='test@example.com'
         )
         with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             "User or project creation requires an explicit"
             " domain_id argument.",
         ):
diff --git a/openstack/tests/unit/cloud/test_volume.py b/openstack/tests/unit/cloud/test_volume.py
index 2cd42dd2e516654f6e7a44e9435bad04b42e7733..8c41006b8d2ce5e62a8480331f3dfc07fa8c0c85 100644
--- a/openstack/tests/unit/cloud/test_volume.py
+++ b/openstack/tests/unit/cloud/test_volume.py
@@ -14,9 +14,9 @@
 import testtools
 
 from openstack.block_storage.v3 import volume
-import openstack.cloud
 from openstack.cloud import meta
 from openstack.compute.v2 import volume_attachment
+from openstack import exceptions
 from openstack.tests import fakes
 from openstack.tests.unit import base
 
@@ -105,7 +105,7 @@ class TestVolume(base.TestCase):
             ]
         )
         with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudURINotFound
+            exceptions.NotFoundException,
         ):
             self.cloud.attach_volume(server, volume, wait=False)
         self.assert_calls()
@@ -225,7 +225,7 @@ class TestVolume(base.TestCase):
             ]
         )
 
-        with testtools.ExpectedException(openstack.exceptions.ResourceFailure):
+        with testtools.ExpectedException(exceptions.ResourceFailure):
             self.cloud.attach_volume(server, volume)
         self.assert_calls()
 
@@ -234,7 +234,7 @@ class TestVolume(base.TestCase):
         volume = dict(id='volume001', status='error', attachments=[])
 
         with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             "Volume %s is not available. Status is '%s'"
             % (volume['id'], volume['status']),
         ):
@@ -250,7 +250,7 @@ class TestVolume(base.TestCase):
         )
 
         with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             "Volume %s already attached to server %s on device %s"
             % (volume['id'], server['id'], device_id),
         ):
@@ -324,7 +324,7 @@ class TestVolume(base.TestCase):
             ]
         )
         with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudURINotFound
+            exceptions.NotFoundException,
         ):
             self.cloud.detach_volume(server, volume, wait=False)
         self.assert_calls()
@@ -433,7 +433,7 @@ class TestVolume(base.TestCase):
                 ),
             ]
         )
-        with testtools.ExpectedException(openstack.exceptions.ResourceFailure):
+        with testtools.ExpectedException(exceptions.ResourceFailure):
             self.cloud.detach_volume(server, volume)
         self.assert_calls()
 
@@ -535,7 +535,7 @@ class TestVolume(base.TestCase):
                         'public',
                         append=['volumes', volume.id, 'action'],
                     ),
-                    validate=dict(json={'os-force_delete': {}}),
+                    validate=dict(json={'os-force_delete': None}),
                 ),
                 dict(
                     method='GET',
diff --git a/openstack/tests/unit/cloud/test_volume_access.py b/openstack/tests/unit/cloud/test_volume_access.py
index 43cbb1df1d9208c8cd7876aca6917ee91b33d3b8..6c33842e3f3e8154826d37b175449508edccf02f 100644
--- a/openstack/tests/unit/cloud/test_volume_access.py
+++ b/openstack/tests/unit/cloud/test_volume_access.py
@@ -12,10 +12,9 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-
 import testtools
 
-import openstack.cloud
+from openstack import exceptions
 from openstack.tests.unit import base
 
 
@@ -297,7 +296,7 @@ class TestVolumeAccess(base.TestCase):
             ]
         )
         with testtools.ExpectedException(
-            openstack.cloud.OpenStackCloudException,
+            exceptions.SDKException,
             "VolumeType not found: MISSING",
         ):
             self.cloud.add_volume_type_access(
diff --git a/openstack/tests/unit/cloud/test_volume_backups.py b/openstack/tests/unit/cloud/test_volume_backups.py
index 41a779241cd40d7d2d04eeabe5c64667006f868c..7e2e53479ef1e8ec967f9798b22396ee546910f1 100644
--- a/openstack/tests/unit/cloud/test_volume_backups.py
+++ b/openstack/tests/unit/cloud/test_volume_backups.py
@@ -152,8 +152,8 @@ class TestVolumeBackups(base.TestCase):
                         'public',
                         append=['backups', backup_id, 'action'],
                     ),
-                    json={'os-force_delete': {}},
-                    validate=dict(json={u'os-force_delete': {}}),
+                    json={'os-force_delete': None},
+                    validate=dict(json={'os-force_delete': None}),
                 ),
                 dict(
                     method='GET',
diff --git a/openstack/tests/unit/clustering/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/clustering/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index daf56939f42f95837bc8d8f5e4c1154d541e941b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/clustering/__pycache__/test_version.cpython-310.pyc
deleted file mode 100644
index df2ea812eeaa6e6a931a4f7c2a43ac209bc7e5c4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/__pycache__/test_version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index c67543a7f74a7a3b7f6a7877e27367a434d976c9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/v1/__pycache__/test_action.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_action.cpython-310.pyc
deleted file mode 100644
index 7c2b45374116368d922f53125b83297f50e0980f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/v1/__pycache__/test_action.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/v1/__pycache__/test_build_info.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_build_info.cpython-310.pyc
deleted file mode 100644
index 7430ed603c9c5a7614fbc25f59afa11fac748f84..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/v1/__pycache__/test_build_info.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/v1/__pycache__/test_cluster.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_cluster.cpython-310.pyc
deleted file mode 100644
index eebd444d4253d7f2f21de940fa184b67382be610..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/v1/__pycache__/test_cluster.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/v1/__pycache__/test_cluster_attr.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_cluster_attr.cpython-310.pyc
deleted file mode 100644
index 0b6f2dcc15d15ecab22dd30baae7e4c9c23eabd4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/v1/__pycache__/test_cluster_attr.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/v1/__pycache__/test_cluster_policy.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_cluster_policy.cpython-310.pyc
deleted file mode 100644
index c0f2d73604dde66d4b08fec2e59f86305d389842..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/v1/__pycache__/test_cluster_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/v1/__pycache__/test_event.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_event.cpython-310.pyc
deleted file mode 100644
index a2c9d9b16cf565892cb3f8ca01c67f8e48ff8332..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/v1/__pycache__/test_event.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/v1/__pycache__/test_node.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_node.cpython-310.pyc
deleted file mode 100644
index 595b8eaa69393075d05eb3ddcf7ae83c7d5e9e78..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/v1/__pycache__/test_node.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/v1/__pycache__/test_policy.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_policy.cpython-310.pyc
deleted file mode 100644
index 742fec654c88302cee76adb8875a3f3f25b91b98..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/v1/__pycache__/test_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/v1/__pycache__/test_policy_type.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_policy_type.cpython-310.pyc
deleted file mode 100644
index daa35ee0405632025957040748e3a433dd68ff1b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/v1/__pycache__/test_policy_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/v1/__pycache__/test_profile.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_profile.cpython-310.pyc
deleted file mode 100644
index fcb49bae8b60d715351457e4cc54015985a34482..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/v1/__pycache__/test_profile.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/v1/__pycache__/test_profile_type.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_profile_type.cpython-310.pyc
deleted file mode 100644
index 54702d68afc8b4b8cf30d9c180ef1d54e64e969c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/v1/__pycache__/test_profile_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 443c0756c907a3e8e3433d0c9f98d3c44ec01210..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/v1/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/v1/__pycache__/test_receiver.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_receiver.cpython-310.pyc
deleted file mode 100644
index 0223eb8781df9498e9e3fde35c1db1e230c33839..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/v1/__pycache__/test_receiver.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/clustering/v1/__pycache__/test_service.cpython-310.pyc b/openstack/tests/unit/clustering/v1/__pycache__/test_service.cpython-310.pyc
deleted file mode 100644
index 63cfa57b6c150c2641e786f0529bdc0d375bc813..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/clustering/v1/__pycache__/test_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/common/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/common/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index a114af057f7fb6bbe871760dbd57de4bb5ff266b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/common/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/common/__pycache__/test_metadata.cpython-310.pyc b/openstack/tests/unit/common/__pycache__/test_metadata.cpython-310.pyc
deleted file mode 100644
index 417fcb11385ad98d30c2b71359fc5db3c4ef3330..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/common/__pycache__/test_metadata.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/common/__pycache__/test_quota_set.cpython-310.pyc b/openstack/tests/unit/common/__pycache__/test_quota_set.cpython-310.pyc
deleted file mode 100644
index 434cc0acd7bfdefe1e8cc9d1e4d04da22bd60487..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/common/__pycache__/test_quota_set.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/common/__pycache__/test_tag.cpython-310.pyc b/openstack/tests/unit/common/__pycache__/test_tag.cpython-310.pyc
deleted file mode 100644
index a99b8c46b33645da0f22d68eae34eb6474611cd6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/common/__pycache__/test_tag.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/compute/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index c896b7f6033dc6700b701c9048ac016965df9414..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/compute/__pycache__/test_version.cpython-310.pyc
deleted file mode 100644
index 4b7aeb04ff063dc8311019a91ba7f22991d4f4f2..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/__pycache__/test_version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 18a9fcea647d080ce662aa5f2e82f3422d138a05..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_aggregate.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_aggregate.cpython-310.pyc
deleted file mode 100644
index 2ff91789e53707c101826e53ae7048eb074d16b0..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_aggregate.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_availability_zone.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_availability_zone.cpython-310.pyc
deleted file mode 100644
index 217d68c9dfb88149fb7f007f38e31bbbb6510154..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_availability_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_extension.cpython-310.pyc
deleted file mode 100644
index be4486864345620f845857080b75cf78fd8c8d9d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_extension.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_flavor.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_flavor.cpython-310.pyc
deleted file mode 100644
index 6861f600b189e8e64a80fe36d5655c8be21957b1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_flavor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc
deleted file mode 100644
index 8460b8539cee08b15242a7ad5e8ba402a5171e3c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_hypervisor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_image.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_image.cpython-310.pyc
deleted file mode 100644
index eb1a15990201b93e6baf6935d16230d93c59c56c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_image.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_keypair.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_keypair.cpython-310.pyc
deleted file mode 100644
index bee04f09551c5483e026ba47131ad84ba3afc57a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_keypair.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_limits.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_limits.cpython-310.pyc
deleted file mode 100644
index befaf16c4cd4316e8416bbdb179b2ba2b414241f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_limits.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_migration.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_migration.cpython-310.pyc
deleted file mode 100644
index 0a6ba18955a4b7928217c06864b04d509e62d52c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_migration.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index d1f958c3dd97ea30831725362be59d44e27a26ba..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_server.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_server.cpython-310.pyc
deleted file mode 100644
index 4922403668c01c4daaa34ef89bb82ae558383966..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_server.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_server_actions.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_server_actions.cpython-310.pyc
deleted file mode 100644
index 8e7d4763012009f1d3ce7a29faeae009db117e52..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_server_actions.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_server_diagnostics.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_server_diagnostics.cpython-310.pyc
deleted file mode 100644
index 9256401bacc91a1eef550983d8ea4ce01a1a2530..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_server_diagnostics.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_server_group.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_server_group.cpython-310.pyc
deleted file mode 100644
index 16d0bb7afaffc6f636a32aceef6715fc228419e5..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_server_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_server_interface.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_server_interface.cpython-310.pyc
deleted file mode 100644
index c4b644f1164de3d973d8da899c076778900f99c8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_server_interface.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_server_ip.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_server_ip.cpython-310.pyc
deleted file mode 100644
index c1c0d7433d734efaf7e138519cea579062cb27a1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_server_ip.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_server_migration.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_server_migration.cpython-310.pyc
deleted file mode 100644
index d59ba553790d6e84b20e87be2f7373397a3f024f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_server_migration.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 3a65ad9bb74dba43f94f2f6dc03f176022eb25d7..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_server_remote_console.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_service.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_service.cpython-310.pyc
deleted file mode 100644
index b77fb9be1700a2537d7cd8dadbaabf68c21571e9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_usage.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_usage.cpython-310.pyc
deleted file mode 100644
index 905d2284496d7e8ec66abe92366da49195a59deb..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_usage.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc b/openstack/tests/unit/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc
deleted file mode 100644
index 99ef72a5e53a117ee7ea712d078411a984e7b00a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/compute/v2/__pycache__/test_volume_attachment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/compute/v2/test_server_migration.py b/openstack/tests/unit/compute/v2/test_server_migration.py
index cc309f683df87bd28660817654816531442dac76..936a6ca9bfec62a14c609cdb015c7cb72b0aaa9e 100644
--- a/openstack/tests/unit/compute/v2/test_server_migration.py
+++ b/openstack/tests/unit/compute/v2/test_server_migration.py
@@ -17,6 +17,7 @@ from openstack.tests.unit import base
 
 EXAMPLE = {
     'id': 4,
+    'server_id': '4cfba335-03d8-49b2-8c52-e69043d1e8fe',
     'server_uuid': '4cfba335-03d8-49b2-8c52-e69043d1e8fe',
     'user_id': '8dbaa0f0-ab95-4ffe-8cb4-9c89d2ac9d24',
     'project_id': '5f705771-3aa9-4f4c-8660-0d9522ffdbea',
@@ -51,7 +52,7 @@ class TestServerMigration(base.TestCase):
         sot = server_migration.ServerMigration()
         self.assertEqual('migration', sot.resource_key)
         self.assertEqual('migrations', sot.resources_key)
-        self.assertEqual('/servers/%(server_uuid)s/migrations', sot.base_path)
+        self.assertEqual('/servers/%(server_id)s/migrations', sot.base_path)
         self.assertFalse(sot.allow_create)
         self.assertTrue(sot.allow_fetch)
         self.assertTrue(sot.allow_list)
@@ -105,7 +106,7 @@ class TestServerMigration(base.TestCase):
         self.assertIsNone(sot.force_complete(self.sess))
 
         url = 'servers/%s/migrations/%s/action' % (
-            EXAMPLE['server_uuid'],
+            EXAMPLE['server_id'],
             EXAMPLE['id'],
         )
         body = {'force_complete': None}
diff --git a/openstack/tests/unit/config/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 83b282f4e2d37b31e00ac83f0378a2ae795c3f80..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/config/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/config/__pycache__/base.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/base.cpython-310.pyc
deleted file mode 100644
index 418dbb4cebc853d65d715f35671baa7899ed382a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/config/__pycache__/base.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/config/__pycache__/test_cloud_config.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_cloud_config.cpython-310.pyc
deleted file mode 100644
index 389d3ce221a470059e0aac77b03182f0408dfabc..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/config/__pycache__/test_cloud_config.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/config/__pycache__/test_config.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_config.cpython-310.pyc
deleted file mode 100644
index 4d58ebcb08f5cca6ffb4aeb407eaab810bd11176..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/config/__pycache__/test_config.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/config/__pycache__/test_environ.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_environ.cpython-310.pyc
deleted file mode 100644
index a096d8f71d194cb8aae4bf995f4471de09914bc0..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/config/__pycache__/test_environ.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/config/__pycache__/test_from_conf.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_from_conf.cpython-310.pyc
deleted file mode 100644
index 15c11783a474d9ebefb9b6e918a017f3044442c4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/config/__pycache__/test_from_conf.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/config/__pycache__/test_from_session.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_from_session.cpython-310.pyc
deleted file mode 100644
index 87f5b29fd55e1b7ecc0bce2374ed99f447d2c1f3..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/config/__pycache__/test_from_session.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/config/__pycache__/test_init.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_init.cpython-310.pyc
deleted file mode 100644
index e2c5062924bc2eef300304caee242ee96fd1ba43..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/config/__pycache__/test_init.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/config/__pycache__/test_json.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_json.cpython-310.pyc
deleted file mode 100644
index ab4846527c27b05f369ec4bb63ef2a424f6adcec..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/config/__pycache__/test_json.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/config/__pycache__/test_loader.cpython-310.pyc b/openstack/tests/unit/config/__pycache__/test_loader.cpython-310.pyc
deleted file mode 100644
index 0d981e6e2361e295d332bbfa68341d14ff863824..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/config/__pycache__/test_loader.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/container_infrastructure_management/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/container_infrastructure_management/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 2c1dc3c84528224ebf270dcb137d6b337644db86..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/container_infrastructure_management/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/container_infrastructure_management/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/container_infrastructure_management/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 21ad3e71ebeeb09e297acddffc9c1198a4f57e85..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/container_infrastructure_management/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index f2ae716e60b8967179852a5529903bd25c1fb659..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/container_infrastructure_management/v1/__pycache__/test_cluster.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 12888fcc8f81cf600b3d466268588248732c7590..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/container_infrastructure_management/v1/__pycache__/test_cluster_certificate.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index cbae04b81b0950f19e96bcc22bdaf63add3b6d24..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/container_infrastructure_management/v1/__pycache__/test_cluster_template.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 7e6faa7f1fabab38e0bba94692031d62951e2fba..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/container_infrastructure_management/v1/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index ca92ea5b56637987ebb9c943eba92cbf64f207f1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/container_infrastructure_management/v1/__pycache__/test_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/database/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/database/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index f16231362818bd733717e72a7d851aa487bf3b74..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/database/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/database/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/database/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index cb47f93d76a3af39ad765122b6bcc883bc22c1e7..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/database/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/database/v1/__pycache__/test_database.cpython-310.pyc b/openstack/tests/unit/database/v1/__pycache__/test_database.cpython-310.pyc
deleted file mode 100644
index fde8d28c240e7c57a7edf53fbc82149410a421ba..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/database/v1/__pycache__/test_database.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/database/v1/__pycache__/test_flavor.cpython-310.pyc b/openstack/tests/unit/database/v1/__pycache__/test_flavor.cpython-310.pyc
deleted file mode 100644
index c1c1fb2b488236f777783e6092d76a5a47024c9b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/database/v1/__pycache__/test_flavor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/database/v1/__pycache__/test_instance.cpython-310.pyc b/openstack/tests/unit/database/v1/__pycache__/test_instance.cpython-310.pyc
deleted file mode 100644
index 99002d1dbe4e521ded44c0231490f4a65c5c2247..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/database/v1/__pycache__/test_instance.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/database/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/database/v1/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 5dc6fabd0a3bdf80fabb5de265e17524b36d1d03..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/database/v1/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/database/v1/__pycache__/test_user.cpython-310.pyc b/openstack/tests/unit/database/v1/__pycache__/test_user.cpython-310.pyc
deleted file mode 100644
index efd9127fb8a892a20295364f3b4c26483c243dbf..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/database/v1/__pycache__/test_user.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/database/v1/test_instance.py b/openstack/tests/unit/database/v1/test_instance.py
index 0a329d379b08e624007194bd1c434a79251de508..bb2df451da0db19781a8b6c3335796a14f9f49d9 100644
--- a/openstack/tests/unit/database/v1/test_instance.py
+++ b/openstack/tests/unit/database/v1/test_instance.py
@@ -97,7 +97,7 @@ class TestInstance(base.TestCase):
         self.assertIsNone(sot.restart(sess))
 
         url = "instances/%s/action" % IDENTIFIER
-        body = {'restart': {}}
+        body = {'restart': None}
         sess.post.assert_called_with(url, json=body)
 
     def test_action_resize(self):
diff --git a/openstack/tests/unit/dns/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/dns/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index b9f284b6cf6c2058f5233d9ef06316a590d9923f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/dns/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/dns/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/dns/__pycache__/test_version.cpython-310.pyc
deleted file mode 100644
index 941bf1b317db56801e074bbcfbc63a02c0b1f5c6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/dns/__pycache__/test_version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/dns/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 04698ee77282ba021029b45370960cf7782f074f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/dns/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/dns/v2/__pycache__/test_floating_ip.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_floating_ip.cpython-310.pyc
deleted file mode 100644
index 1312940cb1b59035553973432009792d9ab86a8c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/dns/v2/__pycache__/test_floating_ip.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/dns/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 0fdda7c7a1084a247875319d7dd83ed9a0fc7db6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/dns/v2/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/dns/v2/__pycache__/test_recordset.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_recordset.cpython-310.pyc
deleted file mode 100644
index cdabf181e2420734021e9956459939b233a2f281..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/dns/v2/__pycache__/test_recordset.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/dns/v2/__pycache__/test_zone.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_zone.cpython-310.pyc
deleted file mode 100644
index 15cfc8c87ad5b7ef515620f41e46429802cc8afd..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/dns/v2/__pycache__/test_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/dns/v2/__pycache__/test_zone_export.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_zone_export.cpython-310.pyc
deleted file mode 100644
index b843a339634d2ac28d9eece843632f83ea43feb9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/dns/v2/__pycache__/test_zone_export.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/dns/v2/__pycache__/test_zone_import.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_zone_import.cpython-310.pyc
deleted file mode 100644
index c12f6235d2601b4d52c9e5c62698b2827c7fcbcb..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/dns/v2/__pycache__/test_zone_import.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/dns/v2/__pycache__/test_zone_share.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_zone_share.cpython-310.pyc
deleted file mode 100644
index a7c306e3491c464ee79169072ba507dea08c7078..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/dns/v2/__pycache__/test_zone_share.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/dns/v2/__pycache__/test_zone_transfer.cpython-310.pyc b/openstack/tests/unit/dns/v2/__pycache__/test_zone_transfer.cpython-310.pyc
deleted file mode 100644
index 7ae11dc1a9019f45de5ed8fdd2ec082a31b25e93..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/dns/v2/__pycache__/test_zone_transfer.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/fake/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/fake/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 3ab44eded4b39fd22bc181478c68ba2e89a29338..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/fake/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/fake/__pycache__/fake_service.cpython-310.pyc b/openstack/tests/unit/fake/__pycache__/fake_service.cpython-310.pyc
deleted file mode 100644
index 6526cab635bcf39cb4be96e4b8ab3071d4858820..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/fake/__pycache__/fake_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/fake/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/fake/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 36a9966a6718f5273de817c4aab57feb2e32d1b6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/fake/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/fake/v1/__pycache__/_proxy.cpython-310.pyc b/openstack/tests/unit/fake/v1/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index e1ac868b5a0c960f06dc7a961aec83fe344c487d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/fake/v1/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/fake/v1/__pycache__/fake.cpython-310.pyc b/openstack/tests/unit/fake/v1/__pycache__/fake.cpython-310.pyc
deleted file mode 100644
index 4e33b0e3b1bb9d68b03ba79b69a7cfbb949e4efb..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/fake/v1/__pycache__/fake.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/fake/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/fake/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index d770fedb0e1ba36d717cf6bd84668afa183f0708..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/fake/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/fake/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/tests/unit/fake/v2/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 9dbbd1547d1f248a266ecaacf8b88772e3c19d37..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/fake/v2/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/fake/v2/__pycache__/fake.cpython-310.pyc b/openstack/tests/unit/fake/v2/__pycache__/fake.cpython-310.pyc
deleted file mode 100644
index 3bfd2ee001b0ada750ea250b2c052f78c9010a7a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/fake/v2/__pycache__/fake.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/identity/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 7e842c219fcacb366a94906c87970a277a8ff107..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/identity/__pycache__/test_version.cpython-310.pyc
deleted file mode 100644
index 1756efd4d6adb5a7408c46c28951b48670c806c1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/__pycache__/test_version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/identity/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 614d75c24ed97ff47339ef4a6142047b2c67aa8f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v2/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/unit/identity/v2/__pycache__/test_extension.cpython-310.pyc
deleted file mode 100644
index d9d02a119eaa7639823b860bc9f305a413387c8c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v2/__pycache__/test_extension.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/identity/v2/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 24389f0d75857364246259d92001abe4dd296c2f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v2/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v2/__pycache__/test_role.cpython-310.pyc b/openstack/tests/unit/identity/v2/__pycache__/test_role.cpython-310.pyc
deleted file mode 100644
index b0dac3bd4b5a77032b6a1c6f877f19063bf8000f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v2/__pycache__/test_role.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v2/__pycache__/test_tenant.cpython-310.pyc b/openstack/tests/unit/identity/v2/__pycache__/test_tenant.cpython-310.pyc
deleted file mode 100644
index 092d0150b1f371d48f5b39f5dc36c9582ad1c861..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v2/__pycache__/test_tenant.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v2/__pycache__/test_user.cpython-310.pyc b/openstack/tests/unit/identity/v2/__pycache__/test_user.cpython-310.pyc
deleted file mode 100644
index 3fe4b4dab02d9729fd4222afba1ca9c0e514199e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v2/__pycache__/test_user.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index a13d75d2401a277b4b6e5ae1a6975cd5f833881d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_application_credential.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_application_credential.cpython-310.pyc
deleted file mode 100644
index 5916aa34de2ce3a5d3ff456987349b6978b23c5b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_application_credential.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_credential.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_credential.cpython-310.pyc
deleted file mode 100644
index 8a4de39d95c5d1cd03bf1f3001aac113764363be..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_credential.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_domain.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_domain.cpython-310.pyc
deleted file mode 100644
index b826a389ef5a36b884bf9fcb8ca06e70ad4173cd..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_domain.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_domain_config.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_domain_config.cpython-310.pyc
deleted file mode 100644
index 3af2bde71cb90e1980cdce99d0168126bf6509bc..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_domain_config.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_endpoint.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_endpoint.cpython-310.pyc
deleted file mode 100644
index d3e42d58280f8ca6d59230dc6ccf9e4d23d8543e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_endpoint.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_federation_protocol.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_federation_protocol.cpython-310.pyc
deleted file mode 100644
index c67fa21b0ddc82f135947427329696fb80f7022d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_federation_protocol.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_group.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_group.cpython-310.pyc
deleted file mode 100644
index 8933ffadf8ddc7a461ef89f1bbc3dbb2d1c87b97..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_identity_provider.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_identity_provider.cpython-310.pyc
deleted file mode 100644
index 2f087958a8ae51d14ff9a0ba7f1d9db8d86e730e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_identity_provider.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_limit.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_limit.cpython-310.pyc
deleted file mode 100644
index ba1dc9e68e2a94f9dde1068d315e466f78173db1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_limit.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_mapping.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_mapping.cpython-310.pyc
deleted file mode 100644
index cbeb687493147bd267ac217d2e6eed94bb7e2a09..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_mapping.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_policy.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_policy.cpython-310.pyc
deleted file mode 100644
index 514c72e9e938bf409be5a5bba05d1b54b8b82b81..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_project.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_project.cpython-310.pyc
deleted file mode 100644
index 6f89f5c6c3675a86e0b0e1b162ab840046f4dd88..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_project.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index cbf97279f3de9b4a22a1ea9b9aa39a11db581383..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_region.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_region.cpython-310.pyc
deleted file mode 100644
index f40c549e36e460d698f1eeaa19342215f8c244af..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_region.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_registered_limit.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_registered_limit.cpython-310.pyc
deleted file mode 100644
index 7c58098f2249eb8e24bc93c6c1b72be80a048840..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_registered_limit.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_role.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_role.cpython-310.pyc
deleted file mode 100644
index 88a806cf6ee72ab31586a1da8b47dec3feb30cdb..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_role.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_role_assignment.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_role_assignment.cpython-310.pyc
deleted file mode 100644
index 0743a405c13ddde88873efb4655c5ed49b7d18da..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_role_assignment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 1ae517b547cc3f4b1764bb086e3de4b78e39b11f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_role_domain_group_assignment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index b82a2f627c72b149e6664a1c6a58412824fa971c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_role_domain_user_assignment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 9018ac3ddcd77393f8ad2658c2e59162ecbdc30d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_role_project_group_assignment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 3c764c39b7f77ddb5f5d18b48213032f2ce0765d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_role_project_user_assignment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 6a707e8ee6d840ad8829cfbcfc87fbee6c2e249b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_role_system_group_assignment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 8943596ed23f4a94441836adebf410841c09a069..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_role_system_user_assignment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_service.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_service.cpython-310.pyc
deleted file mode 100644
index bca3446fd6f7e7490d0fa6604798905b85606961..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_trust.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_trust.cpython-310.pyc
deleted file mode 100644
index c63e902ddf34a6e21c942895c34f71f7e1ae62e4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_trust.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/__pycache__/test_user.cpython-310.pyc b/openstack/tests/unit/identity/v3/__pycache__/test_user.cpython-310.pyc
deleted file mode 100644
index c3a1e1436afa4e6c04b3b64137a52895c8e69306..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/identity/v3/__pycache__/test_user.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/identity/v3/test_proxy.py b/openstack/tests/unit/identity/v3/test_proxy.py
index a0b7fcfad153a921966d515e43cfe8dbbec75cf0..3b6b9a3e191767e34ca4edeffc772102cd0c00f0 100644
--- a/openstack/tests/unit/identity/v3/test_proxy.py
+++ b/openstack/tests/unit/identity/v3/test_proxy.py
@@ -22,6 +22,12 @@ from openstack.identity.v3 import policy
 from openstack.identity.v3 import project
 from openstack.identity.v3 import region
 from openstack.identity.v3 import role
+from openstack.identity.v3 import role_domain_group_assignment
+from openstack.identity.v3 import role_domain_user_assignment
+from openstack.identity.v3 import role_project_group_assignment
+from openstack.identity.v3 import role_project_user_assignment
+from openstack.identity.v3 import role_system_group_assignment
+from openstack.identity.v3 import role_system_user_assignment
 from openstack.identity.v3 import service
 from openstack.identity.v3 import trust
 from openstack.identity.v3 import user
@@ -411,6 +417,72 @@ class TestIdentityProxyRole(TestIdentityProxyBase):
 
 
 class TestIdentityProxyRoleAssignments(TestIdentityProxyBase):
+    def test_role_assignments_filter__domain_user(self):
+        self.verify_list(
+            self.proxy.role_assignments_filter,
+            role_domain_user_assignment.RoleDomainUserAssignment,
+            method_kwargs={'domain': 'domain', 'user': 'user'},
+            expected_kwargs={
+                'domain_id': 'domain',
+                'user_id': 'user',
+            },
+        )
+
+    def test_role_assignments_filter__domain_group(self):
+        self.verify_list(
+            self.proxy.role_assignments_filter,
+            role_domain_group_assignment.RoleDomainGroupAssignment,
+            method_kwargs={'domain': 'domain', 'group': 'group'},
+            expected_kwargs={
+                'domain_id': 'domain',
+                'group_id': 'group',
+            },
+        )
+
+    def test_role_assignments_filter__project_user(self):
+        self.verify_list(
+            self.proxy.role_assignments_filter,
+            role_project_user_assignment.RoleProjectUserAssignment,
+            method_kwargs={'project': 'project', 'user': 'user'},
+            expected_kwargs={
+                'project_id': 'project',
+                'user_id': 'user',
+            },
+        )
+
+    def test_role_assignments_filter__project_group(self):
+        self.verify_list(
+            self.proxy.role_assignments_filter,
+            role_project_group_assignment.RoleProjectGroupAssignment,
+            method_kwargs={'project': 'project', 'group': 'group'},
+            expected_kwargs={
+                'project_id': 'project',
+                'group_id': 'group',
+            },
+        )
+
+    def test_role_assignments_filter__system_user(self):
+        self.verify_list(
+            self.proxy.role_assignments_filter,
+            role_system_user_assignment.RoleSystemUserAssignment,
+            method_kwargs={'system': 'system', 'user': 'user'},
+            expected_kwargs={
+                'system_id': 'system',
+                'user_id': 'user',
+            },
+        )
+
+    def test_role_assignments_filter__system_group(self):
+        self.verify_list(
+            self.proxy.role_assignments_filter,
+            role_system_group_assignment.RoleSystemGroupAssignment,
+            method_kwargs={'system': 'system', 'group': 'group'},
+            expected_kwargs={
+                'system_id': 'system',
+                'group_id': 'group',
+            },
+        )
+
     def test_assign_domain_role_to_user(self):
         self._verify(
             "openstack.identity.v3.domain.Domain.assign_role_to_user",
diff --git a/openstack/tests/unit/image/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/image/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index b2e6ef78212ffcda907793c1c57dc24270c475fa..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/image/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/image/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 7f7d40866dd6d21249b5fe546cbe0918424ec34e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/image/v1/__pycache__/test_image.cpython-310.pyc b/openstack/tests/unit/image/v1/__pycache__/test_image.cpython-310.pyc
deleted file mode 100644
index 056b8be60ab12247e6b967e456a5c31848579376..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v1/__pycache__/test_image.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/image/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/image/v1/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 163b574c0c99d989e2610aab7950555d39e3c694..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v1/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/image/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index f749f392ef52ecbf7890087b8e398a1dc54a094c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/image/v2/__pycache__/test_cache.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_cache.cpython-310.pyc
deleted file mode 100644
index 0d67cd25db05fc44797ff3c6c48b7c1258ddd604..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v2/__pycache__/test_cache.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/image/v2/__pycache__/test_image.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_image.cpython-310.pyc
deleted file mode 100644
index 57462be2b3534dda10e66a487c6f100a110ba7d2..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v2/__pycache__/test_image.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/image/v2/__pycache__/test_member.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_member.cpython-310.pyc
deleted file mode 100644
index 3ec97bceecbc5cfa624279286706f044975a84ad..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v2/__pycache__/test_member.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc
deleted file mode 100644
index caded10f7d6394b16f64097305726f25eca7109e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v2/__pycache__/test_metadef_namespace.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/image/v2/__pycache__/test_metadef_object.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_metadef_object.cpython-310.pyc
deleted file mode 100644
index acd4021ac5bbfadaca07c25c2d8a4aea61c7b78b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v2/__pycache__/test_metadef_object.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/image/v2/__pycache__/test_metadef_property.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_metadef_property.cpython-310.pyc
deleted file mode 100644
index c6c3b321dcf2ef7021fd9afcf22bbdaf47dc7fef..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v2/__pycache__/test_metadef_property.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 7af96b7aa070ec863c6d547281df8c43fc1c5943..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v2/__pycache__/test_metadef_resource_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 9e76a2b281d2698cbde8935fdb27993b14f34ab4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v2/__pycache__/test_metadef_resource_type_association.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc
deleted file mode 100644
index 79a413a58a49b3850c20d5e79af84910fded9cc6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v2/__pycache__/test_metadef_schema.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/image/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 70118762d03ccce2ef6264c9ed1059d836772e68..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v2/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/image/v2/__pycache__/test_schema.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_schema.cpython-310.pyc
deleted file mode 100644
index 36efc2580dab24a36a13edc37d44552793895340..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v2/__pycache__/test_schema.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/image/v2/__pycache__/test_service_info.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_service_info.cpython-310.pyc
deleted file mode 100644
index 5ca783741b4b255f9866fbe706949c115450a213..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v2/__pycache__/test_service_info.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/image/v2/__pycache__/test_task.cpython-310.pyc b/openstack/tests/unit/image/v2/__pycache__/test_task.cpython-310.pyc
deleted file mode 100644
index 6ff82e3fd1de8cc3395b3152ae9f8e1b1d8d667e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/image/v2/__pycache__/test_task.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/instance_ha/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/instance_ha/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 9525e8df806b31fa3c0db1085b613e47d363ce6e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/instance_ha/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/instance_ha/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/instance_ha/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 92d7455529f7e0c2dced71a71f97b237c6418a9b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/instance_ha/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/instance_ha/v1/__pycache__/test_host.cpython-310.pyc b/openstack/tests/unit/instance_ha/v1/__pycache__/test_host.cpython-310.pyc
deleted file mode 100644
index 4a65b540e802cc7ffb3d1144972e6fd4f7822db0..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/instance_ha/v1/__pycache__/test_host.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/instance_ha/v1/__pycache__/test_notification.cpython-310.pyc b/openstack/tests/unit/instance_ha/v1/__pycache__/test_notification.cpython-310.pyc
deleted file mode 100644
index c6d61a51a7c95089a4e8f27671e60dfc34206361..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/instance_ha/v1/__pycache__/test_notification.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/instance_ha/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/instance_ha/v1/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index a6262cfe37f8c0b05758afc3c12533bd3a3dacb0..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/instance_ha/v1/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/instance_ha/v1/__pycache__/test_segment.cpython-310.pyc b/openstack/tests/unit/instance_ha/v1/__pycache__/test_segment.cpython-310.pyc
deleted file mode 100644
index ab6cc57b25299cac684c6f5905c7f372b0ef8f43..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/instance_ha/v1/__pycache__/test_segment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/instance_ha/v1/__pycache__/test_vmove.cpython-310.pyc b/openstack/tests/unit/instance_ha/v1/__pycache__/test_vmove.cpython-310.pyc
deleted file mode 100644
index ee3a7fc0dbe2cd4df62e4b4f3f439ecc269366e5..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/instance_ha/v1/__pycache__/test_vmove.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/key_manager/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/key_manager/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index ec80d57a4abbffcda45f3aa5aeb3a7d03af94665..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/key_manager/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/key_manager/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/key_manager/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 63fe1164baa2894d9c3c23a362caf7fce9fdb544..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/key_manager/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/key_manager/v1/__pycache__/test_container.cpython-310.pyc b/openstack/tests/unit/key_manager/v1/__pycache__/test_container.cpython-310.pyc
deleted file mode 100644
index 73871d7cbc6821c12d95fefbc4c4233fe0aa1463..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/key_manager/v1/__pycache__/test_container.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/key_manager/v1/__pycache__/test_order.cpython-310.pyc b/openstack/tests/unit/key_manager/v1/__pycache__/test_order.cpython-310.pyc
deleted file mode 100644
index 674e669f35198ab543ea03bcfd9fae387e60960e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/key_manager/v1/__pycache__/test_order.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/key_manager/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/key_manager/v1/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index d1dd7dca8b793284665ed6e2614a47998f6ab8ca..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/key_manager/v1/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/key_manager/v1/__pycache__/test_secret.cpython-310.pyc b/openstack/tests/unit/key_manager/v1/__pycache__/test_secret.cpython-310.pyc
deleted file mode 100644
index 9a7762af06a67e57810c38e97dce4435ab0e52ad..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/key_manager/v1/__pycache__/test_secret.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index b8c2b9262f8e8ca4b7057e1c7e08cee20af4dec9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/__pycache__/test_amphora.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_amphora.cpython-310.pyc
deleted file mode 100644
index bf15db6473d9977b7fc3bafa9558da6d9d21b92e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/test_amphora.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/__pycache__/test_availability_zone.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_availability_zone.cpython-310.pyc
deleted file mode 100644
index 2bed5ca4f10f6833a3d479ae516fc84a8e414970..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/test_availability_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index e341daeeaa63aaa6c63dfb442874cabd7150b1fa..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/test_availability_zone_profile.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/__pycache__/test_flavor.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_flavor.cpython-310.pyc
deleted file mode 100644
index d36844b80b9d46bd8d456f69d0726cf79afd2afc..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/test_flavor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/__pycache__/test_flavor_profile.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_flavor_profile.cpython-310.pyc
deleted file mode 100644
index 8fb3daf2a0a0639861f3f68330fd1333c7cc3a60..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/test_flavor_profile.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/__pycache__/test_health_monitor.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_health_monitor.cpython-310.pyc
deleted file mode 100644
index 3789e69772c57d1df822907f49b2507cd7181c71..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/test_health_monitor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/__pycache__/test_l7policy.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_l7policy.cpython-310.pyc
deleted file mode 100644
index a30dd4e4c6b8220a27619468015ebda766483f31..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/test_l7policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/__pycache__/test_l7rule.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_l7rule.cpython-310.pyc
deleted file mode 100644
index a5d06420863107c0155929b5d9cf2fec0ca138b2..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/test_l7rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/__pycache__/test_listener.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_listener.cpython-310.pyc
deleted file mode 100644
index aaca1d6f71a1062018e900118a4bed39f48f53f6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/test_listener.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/__pycache__/test_load_balancer.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_load_balancer.cpython-310.pyc
deleted file mode 100644
index 23f38f2da7ea1f9e44a761583fc7ae326cca065a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/test_load_balancer.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/__pycache__/test_member.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_member.cpython-310.pyc
deleted file mode 100644
index b42472f49aa08fe2e3e59829c9e97d455949708c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/test_member.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/__pycache__/test_pool.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_pool.cpython-310.pyc
deleted file mode 100644
index 85ab4a845c472ad5b106eaf327d128aec478247e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/test_pool.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/__pycache__/test_provider.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_provider.cpython-310.pyc
deleted file mode 100644
index 6c28d254b08d9a4cf742419ce57daab2192af5fb..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/test_provider.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/__pycache__/test_quota.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_quota.cpython-310.pyc
deleted file mode 100644
index 7f0615cd259a223674770e25e7551fd12f190b19..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/test_quota.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/load_balancer/__pycache__/test_version.cpython-310.pyc
deleted file mode 100644
index 5cde5135686e3e101c9cb2e0ae6c9c01314de1ab..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/__pycache__/test_version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/load_balancer/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 5cceffbba84cd24100d459874ace911111a3199e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/load_balancer/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/load_balancer/v2/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index fdf7236e4b3bd924c51c17151060b8f15b09d107..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/load_balancer/v2/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/message/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/message/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index cc78a38dee07e0d23fd8fec212ddcc03d05c5743..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/message/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/message/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/message/__pycache__/test_version.cpython-310.pyc
deleted file mode 100644
index 71e49e1d71c1eb963c611ee0d9a00efe765c24e3..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/message/__pycache__/test_version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/message/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/message/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 77818b9e4b485373a7cef2bdb06387a09b634202..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/message/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/message/v2/__pycache__/test_claim.cpython-310.pyc b/openstack/tests/unit/message/v2/__pycache__/test_claim.cpython-310.pyc
deleted file mode 100644
index d8ec8a15adf5a42141ff6baa9edb8b757790d72b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/message/v2/__pycache__/test_claim.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/message/v2/__pycache__/test_message.cpython-310.pyc b/openstack/tests/unit/message/v2/__pycache__/test_message.cpython-310.pyc
deleted file mode 100644
index 8c92ee12dad46a155d4fad1d65a83d9868fcee64..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/message/v2/__pycache__/test_message.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/message/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/message/v2/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 55ba1c16ae75ccaa588e1845032737fc1a3fcfd8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/message/v2/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/message/v2/__pycache__/test_queue.cpython-310.pyc b/openstack/tests/unit/message/v2/__pycache__/test_queue.cpython-310.pyc
deleted file mode 100644
index 2d7c1b75702144da8b0703c7f7a8687a5dd36a82..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/message/v2/__pycache__/test_queue.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/message/v2/__pycache__/test_subscription.cpython-310.pyc b/openstack/tests/unit/message/v2/__pycache__/test_subscription.cpython-310.pyc
deleted file mode 100644
index 9772ce3837fc4424c48b2b6a1e45825dedb80397..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/message/v2/__pycache__/test_subscription.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/network/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 4d00e879762522af2f2d6e17843a6a5bc89d314e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/network/__pycache__/test_version.cpython-310.pyc
deleted file mode 100644
index dccb45ac7daee49bc67e14b6122d2149e61f3b85..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/__pycache__/test_version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index e2eb7dc564b038b1dc3bb41a0a4e70e10501699e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_address_group.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_address_group.cpython-310.pyc
deleted file mode 100644
index ed6c1b9fdf3238acf609f5ae419cea4a249365f5..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_address_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_address_scope.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_address_scope.cpython-310.pyc
deleted file mode 100644
index 3bd20ed010440b76f9f8b0084681d3da7f001c42..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_address_scope.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_agent.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_agent.cpython-310.pyc
deleted file mode 100644
index 1b9538c9e2452c530abc3ba4295b11892307e25c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_agent.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 61e0507ed0b417e27ec22cf38c493d2f3ee48bde..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_auto_allocated_topology.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_availability_zone.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_availability_zone.cpython-310.pyc
deleted file mode 100644
index f6f2d66793fb7318821b54c26b77526570fef8b8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_availability_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_bgp_peer.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_bgp_peer.cpython-310.pyc
deleted file mode 100644
index 08f31e73e16d8fb9e3b2042884b17c9fc9c1faf9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_bgp_peer.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_bgp_speaker.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_bgp_speaker.cpython-310.pyc
deleted file mode 100644
index ab6038db0802826f242e7de57d3771a5ee43f8ae..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_bgp_speaker.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc
deleted file mode 100644
index 1ebbe10e5d3ad6e11485fe5cdfda3d1bc3fcaff3..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_bgpvpn.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 5563c85c28b28600110edab458172c1cc438d0a6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_default_security_group_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_extension.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_extension.cpython-310.pyc
deleted file mode 100644
index 46d8afa0d79a760cd7982a3d6c7d43d2bbfe502f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_extension.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_firewall_group.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_firewall_group.cpython-310.pyc
deleted file mode 100644
index cb0a6d864f2c6bde242fb633df4e68791a03c4e4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_firewall_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc
deleted file mode 100644
index 68b8e52d247b28da3a799849c6ab274ccd0c354a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_firewall_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc
deleted file mode 100644
index c09834732d4ad5e340c6b0ad990fe4c6927dd1c5..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_firewall_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_flavor.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_flavor.cpython-310.pyc
deleted file mode 100644
index fa8f52b4b5c759e52da9a169f7e56db750098ba4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_flavor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_floating_ip.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_floating_ip.cpython-310.pyc
deleted file mode 100644
index 9f9d4790a7656651447ebb071744b2bce6eb82cd..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_floating_ip.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_health_monitor.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_health_monitor.cpython-310.pyc
deleted file mode 100644
index b1c5686904f0d5f38c860929b8674ea6c7a41dc6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_health_monitor.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 1160d3f13d5b0c9b1dd348cb01e8e7cb45224d5a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_l3_conntrack_helper.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_listener.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_listener.cpython-310.pyc
deleted file mode 100644
index f88745e849fc0390a63e18a4d29377674eaf6bb8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_listener.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_load_balancer.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_load_balancer.cpython-310.pyc
deleted file mode 100644
index 76368eea9abd021f4aecbf8bdc55e9fed1fa2dd1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_load_balancer.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_local_ip.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_local_ip.cpython-310.pyc
deleted file mode 100644
index 33813233a0e3b7ef1bc4fe23409ef5bf85e9e09c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_local_ip.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 47b9856464388ae352525806ea38f6cb22aabe53..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_local_ip_association.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_metering_label.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_metering_label.cpython-310.pyc
deleted file mode 100644
index 3047f02ffbc67780be0e99155031dabc98e63acb..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_metering_label.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 74c2a5b1a79b776d5145f3e6553a607858b31358..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_metering_label_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc
deleted file mode 100644
index 912419736838aaed9f85631e19ac4f0e8a9f95ed..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_ndp_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_network.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_network.cpython-310.pyc
deleted file mode 100644
index 47ec8f779781c5e19a8264a84343af09344c367c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_network.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 1bccd36732b5d34aa128183b1a541dd239f5eecb..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_network_ip_availability.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 868a11623b3d915b5dc8baca57dfc79ff8c54eb8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_network_segment_range.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_pool.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_pool.cpython-310.pyc
deleted file mode 100644
index 49b2ab37041e329bf59963b722d64807cb2197f3..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_pool.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_pool_member.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_pool_member.cpython-310.pyc
deleted file mode 100644
index f5f8639f64d320a017b2bed5ee902640e9134bbb..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_pool_member.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_port.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_port.cpython-310.pyc
deleted file mode 100644
index 2e151a0212739dfb09d54f3241848f3f8c744955..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_port.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc
deleted file mode 100644
index dd1a9d20797c0142e8c4c078410b10f56e82cbbc..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_port_forwarding.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 1f12d69550f9cb4bf1044b47f0fe3331716c7615..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index da045690ad923435ffc5e2be75fcf7c8511ec5ec..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_qos_bandwidth_limit_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index d57525247a18551d7804a9fc31b1b0026ebb4605..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_qos_dscp_marking_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index d21dd4e132c3094a5b5417c74f93508c674429a8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_qos_minimum_bandwidth_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index d759e761b48e88fcb5779144c7f0f60e61e30fe4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_qos_minimum_packet_rate_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_qos_policy.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_qos_policy.cpython-310.pyc
deleted file mode 100644
index 5caf8a75ca898a00fddabdb5a0bac92c4bd0ab3e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_qos_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 5ac15021c7fc8d0b1afbc19cd29cfb935d54fd5f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_qos_rule_type.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_quota.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_quota.cpython-310.pyc
deleted file mode 100644
index 849adf078f7d4f72b519c5efed07b1b8dd60e1f4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_quota.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc
deleted file mode 100644
index 326186c299f1c4d69cbbd1637abc8cd6e72465ea..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_rbac_policy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_router.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_router.cpython-310.pyc
deleted file mode 100644
index b53ca915eda6202e4d8fe295cda6fe29cc391eff..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_router.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_security_group.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_security_group.cpython-310.pyc
deleted file mode 100644
index ba9fa606a00f55106d2adc09fce23116ae5c6ecc..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_security_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 7e281a402c6ca1f3bc19a902b0980eb0ead427b3..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_security_group_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_segment.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_segment.cpython-310.pyc
deleted file mode 100644
index 43bc20f40db8101a4d8e3f33ae45337935ae8436..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_segment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_service_profile.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_service_profile.cpython-310.pyc
deleted file mode 100644
index f1a7506126f31adc25aa2b947e2e5eafc16b9f44..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_service_profile.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_service_provider.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_service_provider.cpython-310.pyc
deleted file mode 100644
index 92188010ef49ef3e8689f65fc24e8179fb071ccc..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_service_provider.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 1275edbaf90c225c11c7b33bf565129edac5688b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_sfc_flow_classifier.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index a037189419b4a4e747a520253cc65b148c62792b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_sfc_port_chain.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 07de8e7ee255e2fc6628001bbdb63bdc980bc1ab..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_sfc_port_pair.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 6ea56682dee2699cd15d486b2d4807d727522933..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_sfc_port_pair_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 33a2cb8f81be8e2bb29a16b71d7718dcf1d79fb4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_sfc_service_graph.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_subnet.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_subnet.cpython-310.pyc
deleted file mode 100644
index 641393463e37d9919dd536a8eb7edd23b039d194..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_subnet.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc
deleted file mode 100644
index f1ea0eef1544b2aa5766bd75ceb726ff57fcca34..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_subnet_pool.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_tap_flow.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_tap_flow.cpython-310.pyc
deleted file mode 100644
index 90bff83014bd528e1ad3019b874bafa70f28789d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_tap_flow.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_tap_service.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_tap_service.cpython-310.pyc
deleted file mode 100644
index a59e3a0fc5100a1b557a276d9e1919ffbdaebfd6..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_tap_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_trunk.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_trunk.cpython-310.pyc
deleted file mode 100644
index 7e5fdb4a8a5faad2714828f738a961ccdd759f9b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_trunk.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 9ff77793253644422fcafd181c882984c47af08f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_vpn_endpoint_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_vpn_ikepolicy.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_vpn_ikepolicy.cpython-310.pyc
deleted file mode 100644
index 198fec4e80e1a2948e0306d41dda3941a0c37944..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_vpn_ikepolicy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 28e0e5a39ac7039090b3d274068d60b127fdd3dd..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_vpn_ipsec_site_connection.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_vpn_ipsecpolicy.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_vpn_ipsecpolicy.cpython-310.pyc
deleted file mode 100644
index 03bf732b185f0019e180533599e6043418fb197c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_vpn_ipsecpolicy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/__pycache__/test_vpn_service.cpython-310.pyc b/openstack/tests/unit/network/v2/__pycache__/test_vpn_service.cpython-310.pyc
deleted file mode 100644
index d5274a9e85b2e4701e8fb9479377fd7f0bebf6f2..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/network/v2/__pycache__/test_vpn_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/network/v2/test_proxy.py b/openstack/tests/unit/network/v2/test_proxy.py
index 9747fb0d19861b98d79ab016e20a1c26722e8dec..844e844a4f1dfe17a5d8804c3b49ddb73d5dd31b 100644
--- a/openstack/tests/unit/network/v2/test_proxy.py
+++ b/openstack/tests/unit/network/v2/test_proxy.py
@@ -1511,6 +1511,48 @@ class TestNetworkRouter(TestNetworkProxy):
         )
         mock_get.assert_called_once_with(router.Router, "FAKE_ROUTER")
 
+    @mock.patch.object(proxy_base.Proxy, '_get_resource')
+    @mock.patch.object(router.Router, 'add_external_gateways')
+    def test_add_external_gateways(self, mock_add, mock_get):
+        x_router = router.Router.new(id="ROUTER_ID")
+        mock_get.return_value = x_router
+
+        self._verify(
+            "openstack.network.v2.router.Router.add_external_gateways",
+            self.proxy.add_external_gateways,
+            method_args=["FAKE_ROUTER", "bar"],
+            expected_args=[self.proxy, "bar"],
+        )
+        mock_get.assert_called_once_with(router.Router, "FAKE_ROUTER")
+
+    @mock.patch.object(proxy_base.Proxy, '_get_resource')
+    @mock.patch.object(router.Router, 'update_external_gateways')
+    def test_update_external_gateways(self, mock_remove, mock_get):
+        x_router = router.Router.new(id="ROUTER_ID")
+        mock_get.return_value = x_router
+
+        self._verify(
+            "openstack.network.v2.router.Router.update_external_gateways",
+            self.proxy.update_external_gateways,
+            method_args=["FAKE_ROUTER", "bar"],
+            expected_args=[self.proxy, "bar"],
+        )
+        mock_get.assert_called_once_with(router.Router, "FAKE_ROUTER")
+
+    @mock.patch.object(proxy_base.Proxy, '_get_resource')
+    @mock.patch.object(router.Router, 'remove_external_gateways')
+    def test_remove_external_gateways(self, mock_remove, mock_get):
+        x_router = router.Router.new(id="ROUTER_ID")
+        mock_get.return_value = x_router
+
+        self._verify(
+            "openstack.network.v2.router.Router.remove_external_gateways",
+            self.proxy.remove_external_gateways,
+            method_args=["FAKE_ROUTER", "bar"],
+            expected_args=[self.proxy, "bar"],
+        )
+        mock_get.assert_called_once_with(router.Router, "FAKE_ROUTER")
+
     def test_router_hosting_l3_agents_list(self):
         self.verify_list(
             self.proxy.routers_hosting_l3_agents,
diff --git a/openstack/tests/unit/object_store/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/object_store/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index a8879014d2e3a9c8a9bd681867ae1d7d6a2b6ee4..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/object_store/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/object_store/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/object_store/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index e41d032907cd3ae27c861ccaa8902c1db7d4e431..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/object_store/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/object_store/v1/__pycache__/test_account.cpython-310.pyc b/openstack/tests/unit/object_store/v1/__pycache__/test_account.cpython-310.pyc
deleted file mode 100644
index 7686a80316edfc88fc95169ade9a04af1e4db95a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/object_store/v1/__pycache__/test_account.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/object_store/v1/__pycache__/test_container.cpython-310.pyc b/openstack/tests/unit/object_store/v1/__pycache__/test_container.cpython-310.pyc
deleted file mode 100644
index eb626974fb4cedb17575a54e90eba436dc011334..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/object_store/v1/__pycache__/test_container.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/object_store/v1/__pycache__/test_info.cpython-310.pyc b/openstack/tests/unit/object_store/v1/__pycache__/test_info.cpython-310.pyc
deleted file mode 100644
index d8ed3a5b3acdd5a1300cc73cf6841a5a1f8c3786..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/object_store/v1/__pycache__/test_info.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/object_store/v1/__pycache__/test_obj.cpython-310.pyc b/openstack/tests/unit/object_store/v1/__pycache__/test_obj.cpython-310.pyc
deleted file mode 100644
index 041a67e67dca2781f4d3ad0802e1c47f810fee51..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/object_store/v1/__pycache__/test_obj.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/object_store/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/object_store/v1/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 57711ec710ead5e0577aded33f9944c2a7ee7825..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/object_store/v1/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/orchestration/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/orchestration/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index bd4e6a781e5f69c4bf289fc51d00b6396d3097f1..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/orchestration/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/orchestration/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/orchestration/__pycache__/test_version.cpython-310.pyc
deleted file mode 100644
index 9ae5216140821c5d58057652ef44f511878fd53a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/orchestration/__pycache__/test_version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/orchestration/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index bf627370af5db56f9a2820b82667150e4e364014..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/orchestration/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/orchestration/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 2bf40e0bc910475dc3169b8d1e55e482fcbc5258..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/orchestration/v1/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/orchestration/v1/__pycache__/test_resource.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_resource.cpython-310.pyc
deleted file mode 100644
index 61249a4579f56e16bd3a48a95839326ad70a9892..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/orchestration/v1/__pycache__/test_resource.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/orchestration/v1/__pycache__/test_software_config.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_software_config.cpython-310.pyc
deleted file mode 100644
index 6c147bd6e325b9e2394b1c7419b7a99c3547154c..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/orchestration/v1/__pycache__/test_software_config.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/orchestration/v1/__pycache__/test_software_deployment.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_software_deployment.cpython-310.pyc
deleted file mode 100644
index ecde221cdb9e2775a86301070264eee074d673a5..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/orchestration/v1/__pycache__/test_software_deployment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/orchestration/v1/__pycache__/test_stack.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_stack.cpython-310.pyc
deleted file mode 100644
index e687f339604ae2e215f9424c3f0293c809ec0821..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/orchestration/v1/__pycache__/test_stack.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_environment.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_environment.cpython-310.pyc
deleted file mode 100644
index c50f9939f48ce1ef920b5975a6039a7c0a49068a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_environment.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_event.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_event.cpython-310.pyc
deleted file mode 100644
index b96c4cc54b5313468935ae31ca7573650c72615e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_event.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_files.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_files.cpython-310.pyc
deleted file mode 100644
index 3d186b8d25c13078d79e6fe5116718056e9acead..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_files.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_template.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_template.cpython-310.pyc
deleted file mode 100644
index 73b2bf4ca01325dbea1468f759346f6b98f62fac..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/orchestration/v1/__pycache__/test_stack_template.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/orchestration/v1/__pycache__/test_template.cpython-310.pyc b/openstack/tests/unit/orchestration/v1/__pycache__/test_template.cpython-310.pyc
deleted file mode 100644
index f238c70664a749c03ccd85dcb737682800bf2438..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/orchestration/v1/__pycache__/test_template.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/placement/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/placement/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 020022dee4dc8bdf0f2fa0038be483ac4c114592..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/placement/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/placement/v1/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/placement/v1/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 5538fbdf6f81f912e2cae4e60cbc116329c0d139..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/placement/v1/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/placement/v1/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/placement/v1/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index 783fd410403aa2957915e57e6d6813b1b8702bdc..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/placement/v1/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/placement/v1/__pycache__/test_resource_class.cpython-310.pyc b/openstack/tests/unit/placement/v1/__pycache__/test_resource_class.cpython-310.pyc
deleted file mode 100644
index 6a0f00b6874062a29cf489bada6f45cf829619ae..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/placement/v1/__pycache__/test_resource_class.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc b/openstack/tests/unit/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc
deleted file mode 100644
index fb3c81b9a46ee71272692dab78241abc0674ddeb..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/placement/v1/__pycache__/test_resource_provider.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 1ab7557cc918859b607a86147d7e2e21c9cd3976..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/placement/v1/__pycache__/test_resource_provider_inventory.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/placement/v1/__pycache__/test_trait.cpython-310.pyc b/openstack/tests/unit/placement/v1/__pycache__/test_trait.cpython-310.pyc
deleted file mode 100644
index c2f1f8ace657391510bcd4134b1b3616acf29e33..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/placement/v1/__pycache__/test_trait.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/placement/v1/test_resource_provider_inventory.py b/openstack/tests/unit/placement/v1/test_resource_provider_inventory.py
index 6f01f8e46809717122d38885311aaec128ca8743..1194ca81a53f951f1ba74cde13622443d0061cc0 100644
--- a/openstack/tests/unit/placement/v1/test_resource_provider_inventory.py
+++ b/openstack/tests/unit/placement/v1/test_resource_provider_inventory.py
@@ -39,7 +39,7 @@ class TestResourceProviderInventory(base.TestCase):
         self.assertTrue(sot.allow_list)
         self.assertFalse(sot.allow_patch)
 
-        self.assertDictEqual({}, sot._query_mapping)
+        self.assertDictEqual({}, sot._query_mapping._mapping)
 
     def test_make_it(self):
         sot = resource_provider_inventory.ResourceProviderInventory(**FAKE)
diff --git a/openstack/tests/unit/shared_file_system/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/shared_file_system/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 0dc1f86d8faa4d021b4da932c0f0d22e893436d8..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/shared_file_system/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/shared_file_system/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 3a01906b1b93e11c7a00fc27a1beed7ccaf9077f..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 4386595dc0c11cefd673a0dd27392aee92390ffc..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/test_availability_zone.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 1651bc406529e0363cf9cb74b859927204916c0a..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/test_limit.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 114bd4d1a9fc4e2d3c29cdc57d3d6b599ab86cc9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 16ee624d5020fdd702c1c7a8707ce6aa13868a2b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 22dac508090e50bfe1add52cf7333fcf5af3e3ed..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_access_rule.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index e7d2723b36e878f87c036279dece3d18e4564eba..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_export_locations.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 1383b1d13f24786646c71e60db5a9bc68d9f7295..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_group.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 61cd3cbef66724c3fa357f7bff92ab53ffc23c40..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_group_snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 30d4f6812227097c1fd53ff10a73f3f8b0d9209b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_instance.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 23a857e81ae9193ddd77195e1441099d5aa977bc..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_network.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 5c87e44a7de8b2cb566b55111f28f6d9acd3d197..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_network_subnet.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 92395db99da710722b7e074616049e1c58b17258..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_snapshot.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 6eed50c4bf956902adfbd97cfe434cef5fd3531b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/test_share_snapshot_instance.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index c2a4cef2e18684a310eb4386a2fa3e4cf4bddb3b..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/test_storage_pool.cpython-310.pyc and /dev/null differ
diff --git a/openstack/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
deleted file mode 100644
index 9ab69e7bedf86e70891e3320b44847ecbdc6642e..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/shared_file_system/v2/__pycache__/test_user_message.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/shared_file_system/v2/test_proxy.py b/openstack/tests/unit/shared_file_system/v2/test_proxy.py
index 921318f6492c8a46ccae8c2bc8de5936d92ea332..a562a450b5fc145aff08db273c775563d43af127 100644
--- a/openstack/tests/unit/shared_file_system/v2/test_proxy.py
+++ b/openstack/tests/unit/shared_file_system/v2/test_proxy.py
@@ -14,6 +14,7 @@ from unittest import mock
 
 from openstack.shared_file_system.v2 import _proxy
 from openstack.shared_file_system.v2 import limit
+from openstack.shared_file_system.v2 import resource_locks
 from openstack.shared_file_system.v2 import share
 from openstack.shared_file_system.v2 import share_access_rule
 from openstack.shared_file_system.v2 import share_group
@@ -130,7 +131,7 @@ class TestSharedFileSystemShare(TestSharedFileSystemProxy):
         self.proxy.wait_for_status(mock_resource, 'ACTIVE')
 
         mock_wait.assert_called_once_with(
-            self.proxy, mock_resource, 'ACTIVE', [], 2, 120
+            self.proxy, mock_resource, 'ACTIVE', [], 2, 120, attribute='status'
         )
 
 
@@ -473,8 +474,49 @@ class TestAccessRuleProxy(test_proxy_base.TestProxyBase):
             "openstack.shared_file_system.v2.share_access_rule."
             + "ShareAccessRule.delete",
             self.proxy.delete_access_rule,
-            method_args=['access_id', 'share_id', 'ignore_missing'],
+            method_args=[
+                'access_id',
+                'share_id',
+                'ignore_missing',
+            ],
             expected_args=[self.proxy, 'share_id'],
+            expected_kwargs={'unrestrict': False},
+        )
+
+
+class TestResourceLocksProxy(test_proxy_base.TestProxyBase):
+    def setUp(self):
+        super(TestResourceLocksProxy, self).setUp()
+        self.proxy = _proxy.Proxy(self.session)
+
+    def test_list_resource_locks(self):
+        self.verify_list(
+            self.proxy.resource_locks, resource_locks.ResourceLock
+        )
+
+    def test_resource_lock_get(self):
+        self.verify_get(
+            self.proxy.get_resource_lock, resource_locks.ResourceLock
+        )
+
+    def test_resource_lock_delete(self):
+        self.verify_delete(
+            self.proxy.delete_resource_lock, resource_locks.ResourceLock, False
+        )
+
+    def test_resource_lock_delete_ignore(self):
+        self.verify_delete(
+            self.proxy.delete_resource_lock, resource_locks.ResourceLock, True
+        )
+
+    def test_resource_lock_create(self):
+        self.verify_create(
+            self.proxy.create_resource_lock, resource_locks.ResourceLock
+        )
+
+    def test_resource_lock_update(self):
+        self.verify_update(
+            self.proxy.update_resource_lock, resource_locks.ResourceLock
         )
 
 
diff --git a/openstack/tests/unit/workflow/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/workflow/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index ccfab770a114d9f7e9949b74c6a39cefb1acb327..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/workflow/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/workflow/__pycache__/test_cron_trigger.cpython-310.pyc b/openstack/tests/unit/workflow/__pycache__/test_cron_trigger.cpython-310.pyc
deleted file mode 100644
index b771941aa21909a0d1bd76bdc89a83ace305d5a9..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/workflow/__pycache__/test_cron_trigger.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/workflow/__pycache__/test_execution.cpython-310.pyc b/openstack/tests/unit/workflow/__pycache__/test_execution.cpython-310.pyc
deleted file mode 100644
index 8b1b9e4dc81141605797fc53e6ee2e573a861741..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/workflow/__pycache__/test_execution.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/workflow/__pycache__/test_version.cpython-310.pyc b/openstack/tests/unit/workflow/__pycache__/test_version.cpython-310.pyc
deleted file mode 100644
index 464816e147f68fe8545b7107ab94d2f28e4af444..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/workflow/__pycache__/test_version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/workflow/__pycache__/test_workflow.cpython-310.pyc b/openstack/tests/unit/workflow/__pycache__/test_workflow.cpython-310.pyc
deleted file mode 100644
index 69fc51176c396f952285463fd2f087b8614dcdf3..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/workflow/__pycache__/test_workflow.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/workflow/v2/__pycache__/__init__.cpython-310.pyc b/openstack/tests/unit/workflow/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 159bda66a0363fddb3ee46f64642812a1573714d..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/workflow/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/tests/unit/workflow/v2/__pycache__/test_proxy.cpython-310.pyc b/openstack/tests/unit/workflow/v2/__pycache__/test_proxy.cpython-310.pyc
deleted file mode 100644
index f7ceacdd77a9f30d41405805498c040103280651..0000000000000000000000000000000000000000
Binary files a/openstack/tests/unit/workflow/v2/__pycache__/test_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/workflow/__pycache__/__init__.cpython-310.pyc b/openstack/workflow/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 2c384967fd1c23aad818938db82e3c7626ca6198..0000000000000000000000000000000000000000
Binary files a/openstack/workflow/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/workflow/__pycache__/version.cpython-310.pyc b/openstack/workflow/__pycache__/version.cpython-310.pyc
deleted file mode 100644
index 6a59384e0cc86621284a9cb9316d527a106a1e4d..0000000000000000000000000000000000000000
Binary files a/openstack/workflow/__pycache__/version.cpython-310.pyc and /dev/null differ
diff --git a/openstack/workflow/__pycache__/workflow_service.cpython-310.pyc b/openstack/workflow/__pycache__/workflow_service.cpython-310.pyc
deleted file mode 100644
index 3c29f2a20f06ff91a21182514bdae043421afe96..0000000000000000000000000000000000000000
Binary files a/openstack/workflow/__pycache__/workflow_service.cpython-310.pyc and /dev/null differ
diff --git a/openstack/workflow/v2/__pycache__/__init__.cpython-310.pyc b/openstack/workflow/v2/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 9d87f21a1a1af2d703c9dc6400ee075d036e847f..0000000000000000000000000000000000000000
Binary files a/openstack/workflow/v2/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/openstack/workflow/v2/__pycache__/_proxy.cpython-310.pyc b/openstack/workflow/v2/__pycache__/_proxy.cpython-310.pyc
deleted file mode 100644
index 26364b062c43c1037deaa2228d1c37fdd1993f99..0000000000000000000000000000000000000000
Binary files a/openstack/workflow/v2/__pycache__/_proxy.cpython-310.pyc and /dev/null differ
diff --git a/openstack/workflow/v2/__pycache__/cron_trigger.cpython-310.pyc b/openstack/workflow/v2/__pycache__/cron_trigger.cpython-310.pyc
deleted file mode 100644
index 778d3163302c3fa9314823f6e9eed0c6db3546e6..0000000000000000000000000000000000000000
Binary files a/openstack/workflow/v2/__pycache__/cron_trigger.cpython-310.pyc and /dev/null differ
diff --git a/openstack/workflow/v2/__pycache__/execution.cpython-310.pyc b/openstack/workflow/v2/__pycache__/execution.cpython-310.pyc
deleted file mode 100644
index b82ac6a8890815b301995b45ba942b4cc9785b7c..0000000000000000000000000000000000000000
Binary files a/openstack/workflow/v2/__pycache__/execution.cpython-310.pyc and /dev/null differ
diff --git a/openstack/workflow/v2/__pycache__/workflow.cpython-310.pyc b/openstack/workflow/v2/__pycache__/workflow.cpython-310.pyc
deleted file mode 100644
index 657b06970077196f1eeae85d155899f72ea1e7b0..0000000000000000000000000000000000000000
Binary files a/openstack/workflow/v2/__pycache__/workflow.cpython-310.pyc and /dev/null differ
diff --git a/requirements.txt b/requirements.txt
index d7e12ed0da2b31304a6670a8d82eb21b56125080..ad1c7e95a62fae322c86b62a9e25b4bfb8ce2fde 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -7,7 +7,7 @@ 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.0.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/setup.py b/setup.py
index 2006533ac2c31c5c5be55bd5f929c587b6dc4408..83c92e22c850b3ea5def9fba8246f000d946c9f5 100644
--- a/setup.py
+++ b/setup.py
@@ -16,4 +16,4 @@
 # THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
 import setuptools
 
-setuptools.setup(version='2.1.0', setup_requires=['pbr>=2.0.0'], pbr=True)
+setuptools.setup(setup_requires=['pbr>=2.0.0'], pbr=True)