コード例 #1
0
    def __init__(self, transport, authenticator, preference=None):
        """Create a new object with a transport and authenticator.

        Session layer which uses the transport for communication.  The
        authenticator also uses the transport to keep authenticated.

        :param transport: A transport that provides an HTTP request method.
            The transport is also to be used by the authenticator, if needed.
        :type transport: :class:`~openstack.transport.Transport`
        :param authenticator: An authenticator that provides get_token and
            get_endpoint methods for the session.
        :type authenticator: :class:`~openstack.auth.base.BaseAuthPlugin`
        :param preference: If the user has any special preferences such as the
            service name, region, version or visibility, they may be provided
            in the preference object.  If no preferences are provided, the
            services that appear first in the service catalog will be used.
        :type preference: :class:`~openstack.user_preference.UserPreference`

        All the other methods of the session accept the following parameters:

        :param str path: Path relative to service base url.
        :param service: a service filter for the authenticator to determine
            the correct endpoint to use.
        :type service: :class:`~openstack.auth.service_filter.ServiceFilter`
        :param bool authenticate: A flag that indicates if a token should be
            attached to the request.  This parameter defaults to true.
        :param kwargs: The remaining arguments are passed to the transport
            request method.
        """
        self.transport = transport
        self.authenticator = authenticator
        self.preference = preference or user_preference.UserPreference()
コード例 #2
0
 def test_set(self):
     pref = user_preference.UserPreference()
     self.assertEqual(None, pref.get_preference('compute'))
     pref.set_version('compute', 'v2')
     self.assertEqual('v2', pref.get_preference('compute').version)
     self.assertEqual(None, pref.get_preference('database'))
     pref.set_version('database', 'v3')
     self.assertEqual('v3', pref.get_preference('database').version)
     self.assertEqual(None, pref.get_preference('identity'))
     pref.set_version('identity', 'v4')
     self.assertEqual('v4', pref.get_preference('identity').version)
     self.assertEqual(None, pref.get_preference('image'))
     pref.set_version('image', 'v5')
     self.assertEqual('v5', pref.get_preference('image').version)
     self.assertEqual(None, pref.get_preference('metering'))
     pref.set_version('metering', 'v6')
     self.assertEqual('v6', pref.get_preference('metering').version)
     self.assertEqual(None, pref.get_preference('metric'))
     pref.set_version('metric', 'v9')
     self.assertEqual('v9', pref.get_preference('metric').version)
     self.assertEqual(None, pref.get_preference('network'))
     pref.set_version('network', 'v7')
     self.assertEqual('v7', pref.get_preference('network').version)
     self.assertEqual(None, pref.get_preference('object-store'))
     pref.set_version('object-store', 'v8')
     self.assertEqual('v8', pref.get_preference('object-store').version)
     self.assertEqual(None, pref.get_preference('orchestration'))
     pref.set_version('orchestration', 'v9')
     self.assertEqual('v9', pref.get_preference('orchestration').version)
コード例 #3
0
 def setUp(self):
     super(TestConnection, self).setUp()
     self.xport = transport.Transport()
     self.auth = v2.Token(auth_url='http://127.0.0.1/v2', token='b')
     self.pref = user_preference.UserPreference()
     self.conn = connection.Connection(authenticator=mock.MagicMock(),
                                       transport=mock.MagicMock())
     self.conn.session = mock.MagicMock()
コード例 #4
0
 def test_set_all(self):
     pref = user_preference.UserPreference()
     pref.set_name(pref.ALL, 'fee')
     pref.set_region(pref.ALL, 'fie')
     pref.set_version(pref.ALL, 'foe')
     pref.set_visibility(pref.ALL, 'public')
     for service in pref.service_names:
         self.assertEqual('fee', pref.get_preference(service).service_name)
         self.assertEqual('fie', pref.get_preference(service).region)
         self.assertEqual('foe', pref.get_preference(service).version)
         self.assertEqual('public', pref.get_preference(service).visibility)
コード例 #5
0
    def setUp(self):
        test_cloud = os_client_config.OpenStackConfig().get_one_cloud(
            'test_cloud')

        pref = user_preference.UserPreference()
        pref.set_region(pref.ALL, test_cloud.region)

        self.conn = connection.Connection(
            preference=pref,
            auth_url=test_cloud.config['auth']['auth_url'],
            project_name=test_cloud.config['auth']['project_name'],
            username=test_cloud.config['auth']['username'],
            password=test_cloud.config['auth']['password'])
コード例 #6
0
 def test_init(self):
     pref = user_preference.UserPreference()
     expected = [
         'compute',
         'database',
         'identity',
         'image',
         'keystore',
         'metering',
         'metric',
         'network',
         'object-store',
         'orchestration',
     ]
     self.assertEqual(expected, pref.service_names)
コード例 #7
0
    def setUp(self):
        test_cloud = os_client_config.OpenStackConfig().get_one_cloud(
            'test_cloud')

        pref = user_preference.UserPreference()
        pref.set_region(pref.ALL, test_cloud.region)

        self.conn = connection.Connection(
            preference=pref,
            auth_url=test_cloud.config['auth']['auth_url'],
            project_name=test_cloud.config['auth']['project_name'],
            username=test_cloud.config['auth']['username'],
            password=test_cloud.config['auth']['password'])

        if self.conn.compute.find_keypair('heat_key') is None:
            self.conn.compute.create_keypair(name='heat_key')
コード例 #8
0
class UserPreferenceAction(argparse.Action):
    """A custom action to parse user preferences as key=value pairs

    Stores results in users preferences object.
    """
    pref = user_preference.UserPreference()

    @classmethod
    def env(cls, *vars):
        for v in vars:
            values = os.environ.get(v, None)
            if values is None:
                continue
            cls.set_option(v, values)
            return cls.pref
        return cls.pref

    @classmethod
    def set_option(cls, var, values):
        if var == 'OS_REGION_NAME':
            var = 'region'
        var = var.replace('--os-api-', '')
        var = var.replace('OS_API_', '')
        var = var.lower()
        for kvp in values.split(','):
            if '=' in kvp:
                service, value = kvp.split('=')
            else:
                service = cls.pref.ALL
                value = kvp
            if var == 'name':
                cls.pref.set_name(service, value)
            elif var == 'region':
                cls.pref.set_region(service, value)
            elif var == 'version':
                cls.pref.set_version(service, value)
            elif var == 'visibility':
                cls.pref.set_visibility(service, value)

    def __call__(self, parser, namespace, values, option_string=None):
        if getattr(namespace, self.dest, None) is None:
            setattr(namespace, self.dest, UserPreferenceAction.pref)
        self.set_option(option_string, values)
コード例 #9
0
 def test_set_version_bad_service(self):
     pref = user_preference.UserPreference()
     self.assertRaises(exceptions.SDKException, pref.set_version, 'bogus',
                       'v2')