troveclient.apiclient.client module

OpenStack Client interface. Handles the REST calls and responses.

class troveclient.apiclient.client.BaseClient(http_client, extensions=None)

Bases: object

Top-level object to access the OpenStack API.

This client uses HTTPClient to send requests. HTTPClient will handle a bunch of issues such as authentication.

cached_endpoint = None
client_request(method, url, **kwargs)
delete(url, **kwargs)
endpoint_type = None
get(url, **kwargs)
static get_class(api_name, version, version_map)

Returns the client class for the requested API version

Parameters:
  • api_name – the name of the API, e.g. ‘compute’, ‘image’, etc

  • version – the requested API version

  • version_map – a dict of client classes keyed by version

Return type:

a client class for the requested API version

head(url, **kwargs)
patch(url, **kwargs)
post(url, **kwargs)
put(url, **kwargs)
service_type = None
class troveclient.apiclient.client.HTTPClient(auth_plugin, region_name=None, endpoint_type='publicURL', original_ip=None, verify=True, cert=None, timeout=None, timings=False, keyring_saver=None, debug=False, user_agent=None, http=None)

Bases: object

This client handles sending HTTP requests to OpenStack servers.

Features:

  • share authentication information between several clients to different services (e.g., for compute and image clients);

  • reissue authentication request for expired tokens;

  • encode/decode JSON bodies;

  • raise exceptions on HTTP errors;

  • pluggable authentication;

  • store authentication information in a keyring;

  • store time spent for requests;

  • register clients for particular services, so one can use http_client.identity or http_client.compute;

  • log requests and responses in a format that is easy to copy-and-paste into terminal and send the same request with curl.

add_client(base_client_instance)

Add a new instance of BaseClient descendant.

self will store a reference to base_client_instance.

Example:

>>> def test_clients():
...     from keystoneclient.auth import keystone
...     from openstack.common.apiclient import client
...     auth = keystone.KeystoneAuthPlugin(
...         username="user", password="pass", tenant_name="tenant",
...         auth_url="http://auth:5000/v2.0")
...     openstack_client = client.HTTPClient(auth)
...     # create nova client
...     from novaclient.v1_1 import client
...     client.Client(openstack_client)
...     # create keystone client
...     from keystoneclient.v2_0 import client
...     client.Client(openstack_client)
...     # use them
...     openstack_client.identity.tenants.list()
...     openstack_client.compute.servers.list()
authenticate()
client_request(client, method, url, **kwargs)

Send an http request using client’s endpoint and specified url.

If request was rejected as unauthorized (possibly because the token is expired), issue one authorization attempt and send the request once again.

Parameters:
  • client – instance of BaseClient descendant

  • method – method of HTTP request

  • url – URL of HTTP request

  • kwargs – any other parameter that can be passed to HTTPClient.request

static concat_url(endpoint, url)

Concatenate endpoint and final URL.

E.g., “http://keystone/v2.0/” and “/tokens” are concatenated to “http://keystone/v2.0/tokens”.

Parameters:
  • endpoint – the base URL

  • url – the final URL

get_timings()
request(method, url, **kwargs)

Send an http request with the specified characteristics.

Wrapper around requests.Session.request to handle tasks such as setting headers, JSON encoding/decoding, and error handling.

Parameters:
  • method – method of HTTP request

  • url – URL of HTTP request

  • kwargs – any other parameter that can be passed to requests.Session.request (such as headers) or json that will be encoded as JSON and used as data argument

reset_timings()
serialize(kwargs)
user_agent = 'troveclient.apiclient'