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()
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)
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()
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)
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'])
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)
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')
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)
def test_set_version_bad_service(self): pref = user_preference.UserPreference() self.assertRaises(exceptions.SDKException, pref.set_version, 'bogus', 'v2')