Files
openstacksdk/doc/source/user/index.rst
Monty Taylor ff5b6bc0c9 Add a descriptor object for each service proxy
The end-goal here is to be able to do version discovery rather than
relying on config and in-code version defaults for what gets attached to
the connection as the service proxy for a service. However, since we're
currently constructing Adapter objects at instantation time we'd have to
authenticate AND do version discovery on every service when we create a
Connection to be able to do that.

That would be bad.

Add a Descriptor class that creates the Proxy object on-demand. That is,
when someone does "conn.compute", a Proxy will be created and returned.

To support doing that without a ton of duplicate copy-pasta for each
service, add a metaclass to Connection which reads os-service-types and
does the import lookup / BaseProxy fallback as part of Connection class
creation. One of the upsides to this is that we can add docstrings to
the service descriptor objects - meaning that the docs for Connection
actually list the proxy objects.

While we're in here, fix a NOTE in a connection doc string and add a
reference to BaseProxy in the docs so that it'll show up in the docs
too.

Change-Id: I3bef5de60b848146fc8563d853774769d0875c65
2018-01-30 19:49:41 -06:00

4.5 KiB

Getting started with the OpenStack SDK

For a listing of terms used throughout the SDK, including the names of projects and services supported by it, see the glossary <../glossary>.

Installation

The OpenStack SDK is available on PyPI under the name openstacksdk. To install it, use pip:

$ pip install openstacksdk

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.

Configuration <config/index> Connect to an OpenStack Cloud <guides/connect> Connect to an OpenStack Cloud Using a Config File <guides/connect_from_config> Using Cloud Abstration Layer <usage> Logging <guides/logging> Microversions <microversions> Baremetal <guides/baremetal> Block Storage <guides/block_storage> Clustering <guides/clustering> Compute <guides/compute> Database <guides/database> 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>

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, the following services may be exposed to you via the ~openstack.proxy.BaseProxy interface.

openstack.proxy.BaseProxy

The combination of your CloudRegion and the catalog of the cloud in question control which services are exposed, but listed below are the ones provided by the SDK.

Baremetal <proxies/baremetal> Block Storage <proxies/block_storage> Clustering <proxies/clustering> Compute <proxies/compute> Database <proxies/database> 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> 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.

Baremetal <resources/baremetal/index> Block Storage <resources/block_storage/index> Clustering <resources/clustering/index> Compute <resources/compute/index> Database <resources/database/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> 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_filter utils

Presentations

multi-cloud-demo