From 41ac1562b5a10f7dcbdd4131b56784763f40eb69 Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Mon, 30 May 2016 18:33:38 -0400 Subject: [PATCH] Add helper method for OpenStack SDK constructor openstacksdk already has a helper method for dealing with occ, but if a user is already using the occ helper methods, there is no reason we should not provide them an easy path to using the SDK. Change-Id: I1040efb94385fdac0aa02ac960ba95089b954377 --- README.rst | 37 +++++++++++++++++++ os_client_config/__init__.py | 13 +++++++ .../notes/sdk-helper-41f8d815cfbcfb00.yaml | 4 ++ 3 files changed, 54 insertions(+) create mode 100644 releasenotes/notes/sdk-helper-41f8d815cfbcfb00.yaml diff --git a/README.rst b/README.rst index ff95c07..223fcfa 100644 --- a/README.rst +++ b/README.rst @@ -355,6 +355,43 @@ with - as well as a consumption argument. cloud = cloud_config.get_one_cloud(argparse=options) +Constructing OpenStack SDK object +--------------------------------- + +If what you want to do is get an OpenStack SDK Connection and you want it to +do all the normal things related to clouds.yaml, `OS_` environment variables, +a helper function is provided. The following will get you a fully configured +`openstacksdk` instance. + +.. code-block:: python + + import os_client_config + + sdk = os_client_config.make_sdk() + +If you want to do the same thing but on a named cloud. + +.. code-block:: python + + import os_client_config + + sdk = os_client_config.make_sdk(cloud='mtvexx') + +If you want to do the same thing but also support command line parsing. + +.. code-block:: python + + import argparse + + import os_client_config + + sdk = os_client_config.make_sdk(options=argparse.ArgumentParser()) + +It should be noted that OpenStack SDK has ways to construct itself that allow +for additional flexibility. If the helper function here does not meet your +needs, you should see the `from_config` method of +`openstack.connection.Connection `_ + Constructing Legacy Client objects ---------------------------------- diff --git a/os_client_config/__init__.py b/os_client_config/__init__.py index be232fb..c88ccb2 100644 --- a/os_client_config/__init__.py +++ b/os_client_config/__init__.py @@ -67,3 +67,16 @@ def make_client(service_key, constructor=None, options=None, **kwargs): if not constructor: constructor = cloud_config._get_client(service_key) return cloud.get_legacy_client(service_key, constructor) + + +def make_sdk(options=None, **kwargs): + """Simple wrapper for getting an OpenStack SDK Connection. + + For completeness, provide a mechanism that matches make_client and + session_client. The heavy lifting here is done in openstacksdk. + + :rtype: :class:`~openstack.connection.Connection` + """ + from openstack import connection + cloud = get_config(options=options, **kwargs) + return connection.from_config(cloud_config=cloud, options=options) diff --git a/releasenotes/notes/sdk-helper-41f8d815cfbcfb00.yaml b/releasenotes/notes/sdk-helper-41f8d815cfbcfb00.yaml new file mode 100644 index 0000000..a18b57d --- /dev/null +++ b/releasenotes/notes/sdk-helper-41f8d815cfbcfb00.yaml @@ -0,0 +1,4 @@ +--- +features: + - Added helper method for constructing OpenStack SDK + Connection objects.