103 lines
3.2 KiB
Python
103 lines
3.2 KiB
Python
![]() |
#!/usr/bin/env python
|
||
|
# osc-lib.py - Example using OSC as a library
|
||
|
|
||
|
# 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.
|
||
|
|
||
|
"""
|
||
|
OpenStackClient Library Examples
|
||
|
|
||
|
This script shows the basic use of the OpenStackClient ClientManager
|
||
|
as a library.
|
||
|
|
||
|
"""
|
||
|
|
||
|
import argparse
|
||
|
import logging
|
||
|
import sys
|
||
|
|
||
|
import common
|
||
|
|
||
|
from openstackclient.common import clientmanager
|
||
|
|
||
|
|
||
|
LOG = logging.getLogger('')
|
||
|
|
||
|
|
||
|
def run(opts):
|
||
|
"""Run the examples"""
|
||
|
|
||
|
# Loop through extensions to get API versions
|
||
|
# Currently API versions are statically selected. Once discovery
|
||
|
# is working this can go away...
|
||
|
api_version = {}
|
||
|
for mod in clientmanager.PLUGIN_MODULES:
|
||
|
version_opt = getattr(opts, mod.API_VERSION_OPTION, None)
|
||
|
if version_opt:
|
||
|
api = mod.API_NAME
|
||
|
api_version[api] = version_opt
|
||
|
|
||
|
# 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 ClientManager
|
||
|
# Collect the auth and config options together and give them to
|
||
|
# ClientManager and it will wrangle all of the goons into place.
|
||
|
client_manager = clientmanager.ClientManager(
|
||
|
auth_options=opts,
|
||
|
verify=verify,
|
||
|
api_version=api_version,
|
||
|
)
|
||
|
|
||
|
# At this point we have a working client manager with a configured
|
||
|
# session and authentication plugin. From here on it is the app
|
||
|
# making the decisions. Need to talk to two clouds? Make another
|
||
|
# client manager with different opts. Or use a config file and load it
|
||
|
# directly into the plugin. This example doesn't show that (yet).
|
||
|
|
||
|
# Do useful things with it
|
||
|
|
||
|
# Look in the object store
|
||
|
c_list = client_manager.object_store.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 = client_manager.object_store.object_list(c_list[0]['name'])
|
||
|
print("\nObject")
|
||
|
for o in o_list:
|
||
|
print("%s" % o)
|
||
|
|
||
|
# Look at the compute flavors
|
||
|
flavor_list = client_manager.compute.flavors.list()
|
||
|
print("\nFlavors:")
|
||
|
for f in flavor_list:
|
||
|
print("%s" % f)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
parser = argparse.ArgumentParser(description='ClientManager Example')
|
||
|
opts = common.base_parser(
|
||
|
clientmanager.build_plugin_option_parser(parser),
|
||
|
).parse_args()
|
||
|
|
||
|
common.configure_logging(opts)
|
||
|
sys.exit(common.main(opts, run))
|