コード例 #1
0
ファイル: test_session.py プロジェクト: boto/botocore
 def update_session_config_mapping(self, logical_name, **kwargs):
     config_chain_builder = ConfigChainFactory(
         session=self.session,
         environ=self.environ,
     )
     self.session.get_component('config_store').set_config_provider(
         logical_name,
         config_chain_builder.create_config_chain(**kwargs),
     )
コード例 #2
0
ファイル: test_session.py プロジェクト: zdutta/botocore
 def update_session_config_mapping(self, logical_name, **kwargs):
     config_chain_builder = ConfigChainFactory(
         session=self.session,
         environ=self.environ,
     )
     self.session.get_component('config_store').set_config_provider(
         logical_name,
         config_chain_builder.create_config_chain(**kwargs),
     )
コード例 #3
0
 def assert_chain_does_provide(self, instance_map, environ_map,
                               scoped_config_map, create_config_chain_args,
                               expected_value):
     fake_session = mock.Mock(spec=session.Session)
     fake_session.get_scoped_config.return_value = scoped_config_map
     fake_session.instance_variables.return_value = instance_map
     builder = ConfigChainFactory(fake_session, environ=environ_map)
     chain = builder.create_config_chain(**create_config_chain_args)
     value = chain.provide()
     self.assertEqual(value, expected_value)
コード例 #4
0
 def setUp(self):
     self.environ = {}
     self.environ_patch = mock.patch('os.environ', self.environ)
     self.environ_patch.start()
     self.environ['FOO_PROFILE'] = 'foo'
     self.environ['FOO_REGION'] = 'us-west-11'
     data_path = os.path.join(os.path.dirname(__file__), 'data')
     self.environ['FOO_DATA_PATH'] = data_path
     config_path = os.path.join(os.path.dirname(__file__), 'cfg',
                                'foo_config')
     self.environ['FOO_CONFIG_FILE'] = config_path
     self.session = create_session()
     config_chain_builder = ConfigChainFactory(
         session=self.session,
         environ=self.environ,
     )
     config_store = self.session.get_component('config_store')
     config_updates = {
         'profile':
         config_chain_builder.create_config_chain(
             instance_name='profile',
             env_var_names='FOO_PROFILE',
         ),
         'region':
         config_chain_builder.create_config_chain(
             instance_name='region',
             env_var_names='FOO_REGION',
             config_property_names='foo_region',
         ),
         'data_path':
         config_chain_builder.create_config_chain(
             instance_name='data_path',
             env_var_names='FOO_DATA_PATH',
             config_property_names='data_path',
         ),
         'config_file':
         config_chain_builder.create_config_chain(
             instance_name='config_file',
             env_var_names='FOO_CONFIG_FILE',
         ),
         'credentials_file':
         config_chain_builder.create_config_chain(
             instance_name='credentials_file',
             default='/tmp/nowhere',
         ),
         'ca_bundle':
         config_chain_builder.create_config_chain(
             instance_name='ca_bundle',
             env_var_names='FOO_AWS_CA_BUNDLE',
             config_property_names='foo_ca_bundle',
         ),
         'api_versions':
         config_chain_builder.create_config_chain(
             instance_name='api_versions',
             config_property_names='foo_api_versions',
             default={},
         ),
     }
     for name, provider in config_updates.items():
         config_store.set_config_provider(name, provider)
コード例 #5
0
ファイル: test_config_provider.py プロジェクト: boto/botocore
 def assert_chain_does_provide(self, instance_map, environ_map,
                               scoped_config_map, create_config_chain_args,
                               expected_value):
     fake_session = mock.Mock(spec=session.Session)
     fake_session.get_scoped_config.return_value = scoped_config_map
     fake_session.instance_variables.return_value = instance_map
     builder = ConfigChainFactory(fake_session, environ=environ_map)
     chain = builder.create_config_chain(
         **create_config_chain_args
     )
     value = chain.provide()
     self.assertEqual(value, expected_value)
コード例 #6
0
 def _register_config_store(self):
     chain_builder = ConfigChainFactory(session=self)
     config_store_component = ConfigValueStore(
         mapping=create_botocore_default_config_mapping(chain_builder)
     )
     self._components.register_component('config_store',
                                         config_store_component)
コード例 #7
0
ファイル: test_session.py プロジェクト: boto/botocore
 def setUp(self):
     self.environ = {}
     self.environ_patch = mock.patch('os.environ', self.environ)
     self.environ_patch.start()
     self.environ['FOO_PROFILE'] = 'foo'
     self.environ['FOO_REGION'] = 'us-west-11'
     data_path = os.path.join(os.path.dirname(__file__), 'data')
     self.environ['FOO_DATA_PATH'] = data_path
     config_path = os.path.join(os.path.dirname(__file__), 'cfg',
                                'foo_config')
     self.environ['FOO_CONFIG_FILE'] = config_path
     self.session = create_session()
     config_chain_builder = ConfigChainFactory(
         session=self.session,
         environ=self.environ,
     )
     config_store = self.session.get_component('config_store')
     config_updates = {
         'profile': config_chain_builder.create_config_chain(
             instance_name='profile',
             env_var_names='FOO_PROFILE',
         ),
         'region': config_chain_builder.create_config_chain(
             instance_name='region',
             env_var_names='FOO_REGION',
             config_property_name='foo_region',
         ),
         'data_path': config_chain_builder.create_config_chain(
             instance_name='data_path',
             env_var_names='FOO_DATA_PATH',
             config_property_name='data_path',
         ),
         'config_file': config_chain_builder.create_config_chain(
             instance_name='config_file',
             env_var_names='FOO_CONFIG_FILE',
         ),
         'credentials_file': config_chain_builder.create_config_chain(
             instance_name='credentials_file',
             default='/tmp/nowhere',
         ),
         'ca_bundle': config_chain_builder.create_config_chain(
             instance_name='ca_bundle',
             env_var_names='FOO_AWS_CA_BUNDLE',
             config_property_name='foo_ca_bundle',
         ),
         'api_versions': config_chain_builder.create_config_chain(
             instance_name='api_versions',
             config_property_name='foo_api_versions',
             default={},
         ),
     }
     for name, provider in config_updates.items():
         config_store.set_config_provider(name, provider)
コード例 #8
0
 def _update_config_store_from_session_vars(self, logical_name,
                                            config_options):
     # This is for backwards compatibility. The new preferred way to
     # modify configuration logic is to use the component system to get
     # the config_store component from the session, and then update
     # a key with a custom config provider(s).
     # This backwards compatibility method takes the old session_vars
     # list of tuples and and transforms that into a set of updates to
     # the config_store component.
     config_chain_builder = ConfigChainFactory(session=self._session)
     config_name, env_vars, default, typecast = config_options
     config_store = self._session.get_component('config_store')
     config_store.set_config_provider(
         logical_name,
         config_chain_builder.create_config_chain(
             instance_name=logical_name,
             env_var_names=env_vars,
             config_property_names=config_name,
             default=default,
             conversion_func=typecast,
         ))
コード例 #9
0
ファイル: session.py プロジェクト: boto/botocore
 def _update_config_store_from_session_vars(self, logical_name,
                                            config_options):
     # This is for backwards compatibility. The new preferred way to
     # modify configuration logic is to use the component system to get
     # the config_store component from the session, and then update
     # a key with a custom config provider(s).
     # This backwards compatibility method takes the old session_vars
     # list of tuples and and transforms that into a set of updates to
     # the config_store component.
     config_chain_builder = ConfigChainFactory(session=self._session)
     config_name, env_vars, default, typecast = config_options
     config_store = self._session.get_component('config_store')
     config_store.set_config_provider(
         logical_name,
         config_chain_builder.create_config_chain(
             instance_name=logical_name,
             env_var_names=env_vars,
             config_property_name=config_name,
             default=default,
             conversion_func=typecast,
         )
     )
コード例 #10
0
class SubsetChainConfigFactory(object):
    """A class for creating backwards compatible configuration chains.

    This class can be used instead of
    :class:`botocore.configprovider.ConfigChainFactory` to make it honor the
    methods argument to get_config_variable. This class can be used to filter
    out providers that are not in the methods tuple when creating a new config
    chain.
    """
    def __init__(self, session, methods, environ=None):
        self._factory = ConfigChainFactory(session, environ)
        self._supported_methods = methods

    def create_config_chain(self,
                            instance_name=None,
                            env_var_names=None,
                            config_property_name=None,
                            default=None,
                            conversion_func=None):
        """Build a config chain following the standard botocore pattern.

        This config chain factory will omit any providers not in the methods
        tuple provided at initialization. For example if given the tuple
        ('instance', 'config',) it will not inject the environment provider
        into the standard config chain. This lets the botocore session support
        the custom ``methods`` argument for all the default botocore config
        variables when calling ``get_config_variable``.
        """
        if 'instance' not in self._supported_methods:
            instance_name = None
        if 'env' not in self._supported_methods:
            env_var_names = None
        if 'config' not in self._supported_methods:
            config_property_name = None
        return self._factory.create_config_chain(
            instance_name=instance_name,
            env_var_names=env_var_names,
            config_property_names=config_property_name,
            default=default,
            conversion_func=conversion_func,
        )
コード例 #11
0
ファイル: session.py プロジェクト: boto/botocore
class SubsetChainConfigFactory(object):
    """A class for creating backwards compatible configuration chains.

    This class can be used instead of
    :class:`botocore.configprovider.ConfigChainFactory` to make it honor the
    methods argument to get_config_variable. This class can be used to filter
    out providers that are not in the methods tuple when creating a new config
    chain.
    """
    def __init__(self, session, methods, environ=None):
        self._factory = ConfigChainFactory(session, environ)
        self._supported_methods = methods

    def create_config_chain(self, instance_name=None, env_var_names=None,
                            config_property_name=None, default=None,
                            conversion_func=None):
        """Build a config chain following the standard botocore pattern.

        This config chain factory will omit any providers not in the methods
        tuple provided at initialization. For example if given the tuple
        ('instance', 'config',) it will not inject the environment provider
        into the standard config chain. This lets the botocore session support
        the custom ``methods`` argument for all the default botocore config
        variables when calling ``get_config_variable``.
        """
        if 'instance' not in self._supported_methods:
            instance_name = None
        if 'env' not in self._supported_methods:
            env_var_names = None
        if 'config' not in self._supported_methods:
            config_property_name = None
        return self._factory.create_config_chain(
            instance_name=instance_name,
            env_var_names=env_var_names,
            config_property_name=config_property_name,
            default=default,
            conversion_func=conversion_func,
        )
コード例 #12
0
 def _register_config_store(self):
     chain_builder = ConfigChainFactory(session=self)
     config_store = ConfigValueStore(
         mapping=create_botocore_default_config_mapping(chain_builder))
     return config_store
コード例 #13
0
ファイル: session.py プロジェクト: Baba7080/electr
 def __init__(self, session, methods, environ=None):
     self._factory = ConfigChainFactory(session, environ)
     self._supported_methods = methods
コード例 #14
0
ファイル: session.py プロジェクト: boto/botocore
 def __init__(self, session, methods, environ=None):
     self._factory = ConfigChainFactory(session, environ)
     self._supported_methods = methods