
We were using logging.warning() to warn the user about fields that had been removed in recent API versions or behavior that was now considered deprecated in SDK. This was the wrong API to use. We shouldn't have been logging, we have been using 'warnings'. From the Python docs [1]: Task you want to perform: Issue a warning regarding a particular runtime event warnings.warn() in library code if the issue is avoidable and the client application should be modified to eliminate the warning logging.warning() if there is nothing the client application can do about the situation, but the event should still be noted Based on this, introduce a new module, 'openstack.warnings', containing a number of custom 'DeprecationWarning' subclasses. 'DeprecationWarning' isn't show by default in most cases [2] but users can opt-in to showing them and do so selectively. For example, they may wish to ignore warnings about fields that have been removed in recent API versions while raising errors if they are relying on deprecated SDK behavior. [1] https://docs.python.org/3/howto/logging.html#when-to-use-logging [2] https://docs.python.org/3/library/exceptions.html#DeprecationWarning Change-Id: I3846e8fcffdb5de2afe64365952d90b5ecb0f74a Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
5.5 KiB
Using the OpenStack SDK
This section of documentation pertains to those who wish to use this SDK in their own application. If you're looking for documentation on how to contribute to or extend the SDK, refer to the contributor section.
For a listing of terms used throughout the SDK, including the names
of projects and services supported by it, see the glossary <../glossary>
.
User Guides
These guides walk you through how to make use of the libraries we provide to work with each OpenStack service. If you're looking for a cookbook approach, this is where you'll want to begin.
Introduction <guides/intro> Configuration <config/index> Connect to an OpenStack Cloud <guides/connect> Connect to an OpenStack Cloud Using a Config File <guides/connect_from_config> Logging <guides/logging> Statistics reporting <guides/stats> Microversions <microversions> Baremetal <guides/baremetal> Block Storage <guides/block_storage> Clustering <guides/clustering> Compute <guides/compute> Database <guides/database> DNS <guides/dns> Identity <guides/identity> Image <guides/image> Key Manager <guides/key_manager> Message <guides/message> Network <guides/network> Object Store <guides/object_store> Orchestration <guides/orchestration> Shared File System <guides/shared_file_system>
API Documentation
Service APIs are exposed through a two-layered approach. The classes exposed through our Connection interface are the place to start if you're an application developer consuming an OpenStack cloud. The Resource interface is the layer upon which the Connection is built, with Connection methods accepting and returning Resource objects.
The Cloud Abstraction layer has a data model.
model
Connection Interface
A Connection instance maintains your cloud config, session and authentication information providing you with a set of higher-level interfaces to work with OpenStack services.
connection
Once you have a Connection instance, services are accessed
through instances of ~openstack.proxy.Proxy
or subclasses of it that
exist as attributes on the ~openstack.connection.Connection
.
Service Proxies
The following service proxies exist on the ~openstack.connection.Connection
. The service
proxies are all always present on the ~openstack.connection.Connection
object, but the
combination of your CloudRegion
and the catalog of the
cloud in question control which services can be used.
Accelerator <proxies/accelerator> Baremetal <proxies/baremetal> Baremetal Introspection <proxies/baremetal_introspection> Block Storage v2 <proxies/block_storage_v2> Block Storage v3 <proxies/block_storage_v3> Clustering <proxies/clustering> Compute <proxies/compute> Container Infrastructure Management <proxies/container_infrastructure_management> Database <proxies/database> DNS <proxies/dns> Identity v2 <proxies/identity_v2> Identity v3 <proxies/identity_v3> Image v1 <proxies/image_v1> Image v2 <proxies/image_v2> Key Manager <proxies/key_manager> Load Balancer <proxies/load_balancer_v2> Message v2 <proxies/message_v2> Network <proxies/network> Object Store <proxies/object_store> Orchestration <proxies/orchestration> Placement <proxies/placement> Shared File System <proxies/shared_file_system> Workflow <proxies/workflow>
Resource Interface
The Resource layer is a lower-level interface to communicate with OpenStack services. While the classes exposed by the Connection build a convenience layer on top of this, Resources can be used directly. However, the most common usage of this layer is in receiving an object from a class in the Connection layer, modifying it, and sending it back into the Connection layer, such as to update a resource on the server.
The following services have exposed Resource classes.
Accelerator <resources/accelerator/index> Baremetal <resources/baremetal/index> Baremetal Introspection <resources/baremetal_introspection/index> Block Storage <resources/block_storage/index> Clustering <resources/clustering/index> Compute <resources/compute/index> Container Infrastructure Management <resources/container_infrastructure_management/index> Database <resources/database/index> DNS <resources/dns/index> Identity <resources/identity/index> Image <resources/image/index> Key Management <resources/key_manager/index> Load Balancer <resources/load_balancer/index> Network <resources/network/index> Orchestration <resources/orchestration/index> Object Store <resources/object_store/index> Placement <resources/placement/index> Shared File System <resources/shared_file_system/index> Workflow <resources/workflow/index>
Low-Level Classes
The following classes are not commonly used by application developers, but are used to construct applications to talk to OpenStack APIs. Typically these parts are managed through the Connection Interface, but their use can be customized.
resource service_description utils warnings
Presentations
multi-cloud-demo