 d324530532
			
		
	
	d324530532
	
	
	
		
			
			Move auth plugin checking to osc-lib. Change-Id: I673d9c2d6e8bbf724c3000459a729e831d747814
		
			
				
	
	
		
			114 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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 os_client_config import config as cloud_config
 | |
| 
 | |
| from openstackclient.common import clientmanager
 | |
| 
 | |
| 
 | |
| LOG = logging.getLogger('')
 | |
| 
 | |
| 
 | |
| def run(opts):
 | |
|     """Run the examples"""
 | |
| 
 | |
|     # Do configuration file handling
 | |
|     cc = cloud_config.OpenStackConfig()
 | |
|     LOG.debug("defaults: %s", cc.defaults)
 | |
| 
 | |
|     cloud = cc.get_one_cloud(
 | |
|         cloud=opts.cloud,
 | |
|         argparse=opts,
 | |
|     )
 | |
|     LOG.debug("cloud cfg: %s", cloud.config)
 | |
| 
 | |
|     # 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.cacert:
 | |
|         verify = opts.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(
 | |
|         cli_options=cloud,
 | |
|         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))
 |