def run(opts):

    # 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)
Return URL for GCS emulation on dev appserver.
dataset/ETHPy150Open dtroyer/python-openstackclient/examples/osc-lib.py/run--crossover with--dataset/ETHPy150Open GoogleCloudPlatform/appengine-opencv-sudoku-python/cloudstorage/common.py/local_api_url