summaryrefslogtreecommitdiff
path: root/examples/object_api.py
diff options
context:
space:
mode:
authorDean Troyer <dtroyer@gmail.com>2014-10-12 22:55:41 -0500
committerDean Troyer <dtroyer@gmail.com>2014-11-15 16:29:14 -0600
commit01a5ff6d3234457fd0f8268be13fca487a1793c2 (patch)
treeb08cbb849c669ec99b73961dd52b9ec18a11a605 /examples/object_api.py
parent126b2c543617866e9e1ea45ef9c5770ce5f5dda9 (diff)
downloadpython-openstackclient-01a5ff6d3234457fd0f8268be13fca487a1793c2.tar.gz
Add more session/api examples
* examples/object_api.py - Example of using the Object_Store API * examples/osc-lib.py - Minimal client to use ClientManager as a library Also add matching functional tests Change-Id: I4243a21141a821420951d4b6352d41029cdcccbc
Diffstat (limited to 'examples/object_api.py')
-rwxr-xr-xexamples/object_api.py106
1 files changed, 106 insertions, 0 deletions
diff --git a/examples/object_api.py b/examples/object_api.py
new file mode 100755
index 00000000..5c6bd9f0
--- /dev/null
+++ b/examples/object_api.py
@@ -0,0 +1,106 @@
+#!/usr/bin/env python
+# object_api.py - Example object-store API usage
+
+# 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.
+
+"""
+Object Store API Examples
+
+This script shows the basic use of the low-level Object Store API
+
+"""
+
+import argparse
+import logging
+import sys
+
+import common
+
+
+from openstackclient.api import object_store_v1 as object_store
+from openstackclient.identity import client as identity_client
+
+
+LOG = logging.getLogger('')
+
+
+def run(opts):
+ """Run the examples"""
+
+ # Set up certificate verification and CA bundle
+ # NOTE(dtroyer): This converts from the usual OpenStack way to the single
+ # requests argument and is an app-specific thing because
+ # we want to be like OpenStackClient.
+ if opts.os_cacert:
+ verify = opts.os_cacert
+ else:
+ verify = not opts.insecure
+
+ # get a session
+ # common.make_session() does all the ugly work of mapping
+ # CLI options/env vars to the required plugin arguments.
+ # The returned session will have a configured auth object
+ # based on the selected plugin's available options.
+ # So to do...oh, just go to api.auth.py and look at what it does.
+ session = common.make_session(opts, verify=verify)
+
+ # Extract an endpoint
+ auth_ref = session.auth.get_auth_ref(session)
+
+ if opts.os_url:
+ endpoint = opts.os_url
+ else:
+ endpoint = auth_ref.service_catalog.url_for(
+ service_type='object-store',
+ endpoint_type='public',
+ )
+
+ # At this point we have a working session with a configured authentication
+ # plugin. From here on it is the app making the decisions. Need to
+ # talk to two clouds? Go back and make another session but with opts
+ # set to different credentials. Or use a config file and load it
+ # directly into the plugin. This example doesn't show that (yet).
+ # Want to work ahead? Look into the plugin load_from_*() methods
+ # (start in keystoneclient/auth/base.py).
+
+ # This example is for the Object Store API so make one
+ obj_api = object_store.APIv1(
+ session=session,
+ service_type='object-store',
+ endpoint=endpoint,
+ )
+
+ # Do useful things with it
+
+ c_list = obj_api.container_list()
+ print("Name\tCount\tBytes")
+ for c in c_list:
+ print("%s\t%d\t%d" % (c['name'], c['count'], c['bytes']))
+
+ if len(c_list) > 0:
+ # See what is in the first container
+ o_list = obj_api.object_list(c_list[0]['name'])
+ print("\nObject")
+ for o in o_list:
+ print("%s" % o)
+
+
+if __name__ == "__main__":
+ opts = common.base_parser(
+ identity_client.build_option_parser(
+ argparse.ArgumentParser(description='Object API Example')
+ )
+ ).parse_args()
+
+ common.configure_logging(opts)
+ sys.exit(common.main(opts, run))