Exemple #1
0
def client_factory_instance():
    with mock.patch.object(ClientFactory, '__init__', return_value=None):
        aws_clients = ClientFactory(None)
    aws_clients._credential_sets = {'default': [None, None, None, None]}
    aws_clients.logger = logging.getLogger()
    aws_clients._clients = {"default": {}}
    aws_clients._lock = Lock()
    return aws_clients
Exemple #2
0
    def test___init__(self):
        # Mock the put_credential_set method that is called during init
        with mock.patch.object(ClientFactory,
                               'put_credential_set',
                               return_value=None):
            aws_clients = ClientFactory(None)

            msg = "clients should be empty"
            self.assertEqual({"default": {}}, aws_clients._clients, msg)

            msg = "lock should be an instance of Lock"
            self.assertEqual(type(Lock()), type(aws_clients._lock), msg)

            msg = "logger should exist and level set to ERROR"
            logger = logging.getLogger()
            logger.setLevel(logging.ERROR)
            self.assertEqual(logger, aws_clients.logger, msg)

            msg = "logger should exist and level set to WARNING"
            logger.setLevel(logging.WARNING)
            aws_clients = ClientFactory(logger)
            self.assertEqual(logger, aws_clients.logger, msg)
Exemple #3
0
    def test_regional_cred_map(self):
        aws_clients = ClientFactory(
            regional_cred_map={'ap-east-1': {
                'profile_name': 'blah'
            }})
        self.assertEquals(aws_clients._credential_sets['ap-east-1'],
                          [None, None, None, 'blah'])
        self.assertEquals(aws_clients._credential_sets['default'],
                          [None, None, None, None])

        ClientFactory._create_client.reset_mock()
        aws_clients.get("test_service", region='ap-east-1')
        ClientFactory._create_client.assert_called_once_with(
            'ap-east-1', 'ap-east-1', 'test_service', 'default_sig_version')
Exemple #4
0
 def __init__(self,
              path_to_templates,
              user_config_file=None,
              use_upstream_mappings=True,
              client_factory=None):
     if client_factory:
         AMIUpdater.client_factory = client_factory
     else:
         AMIUpdater.client_factory = ClientFactory()
     self.all_regions = False
     if use_upstream_mappings:
         Config.load(self.upstream_config_file, configtype='Upstream')
     if user_config_file:
         Config.load(user_config_file, configtype='User')
     self._template_path = path_to_templates
Exemple #5
0
    def __init__(
        self,
        input_path,
        target_bucket_name,
        source_bucket_name=None,
        target_key_prefix=None,
        source_key_prefix=None,
        output_directory=None,
        rewrite_mode=OBJECT_REWRITE_MODE,
        verbose=False,
        dry_run=False
    ):
        """
        Construct an Alchemist object.

        :param input_path: Directory path to the root of the assets
        :param target_bucket_name: Target S3 bucket to use as replacement and to upload to
        :param source_bucket_name: Source S3 bucket to search for replacement
        :param target_key_prefix: Target S3 key prefix to prepend to all object (including an ending forward slash '/')
        :param output_directory: Directory to save rewritten assets to
        :param rewrite_mode: Mode for rewriting like CFNAlchemist.OBJECT_REWRITE_MODE or CFNAlchemist.BASIC_REWRITE_MODE
        :param verbose: Set to True to log debug messages
        :param dry_run: Set to True to perform a dry run
        """
        # create logger
        self.logger = logging.getLogger('alchemist')
        self.logger.setLevel(logging.INFO)
        # create console handler and set level to debug
        self.ch = logging.StreamHandler()
        self.ch.setLevel(logging.INFO)
        # create formatter
        self.formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        # add formatter to ch
        self.ch.setFormatter(self.formatter)
        # add ch to logger
        self.logger.addHandler(self.ch)

        # Constants
        self._TEMPLATE_EXT = ['.template', '.json', '.yaml', '.yml']
        self._GIT_EXT = ['.git', '.gitmodules', '.gitignore', '.gitattributes']
        self._EXCLUDED_DIRS = ['.git', 'ci', '.idea', '.vs']

        # properties
        self._boto_clients = ClientFactory(logger=self.logger)
        self._auth_mode = None
        self._aws_profile = None
        self._aws_access_key_id = None
        self._aws_secret_access_key = None
        self._aws_session_token = None

        # properties with setters/getters
        self._input_path = None
        self._target_bucket_name = None
        self._target_key_prefix = None
        self._output_directory = None
        self._rewrite_mode = self.OBJECT_REWRITE_MODE
        self._excluded_prefixes = None
        self._verbose = False
        self._dry_run = False
        self._prod_bucket_name = 'aws-quickstart'
        self._prod_key_prefix = None
        self._default_region = 'us-east-1'
        self._file_list = None

        # initialize
        self.set_input_path(input_path)
        self.set_prod_bucket_name(source_bucket_name)
        self.set_target_bucket_name(target_bucket_name)
        self.set_target_key_prefix(target_key_prefix)
        self.set_output_directory(output_directory)
        if rewrite_mode not in [self.OBJECT_REWRITE_MODE, self.BASIC_REWRITE_MODE]:
            self.logger.error("Invalid rewrite_mode.")
        else:
            self.set_rewrite_mode(rewrite_mode)
        self.set_verbose(verbose)
        self.set_dry_run(dry_run)
        self.set_prod_key_prefix(source_key_prefix)

        return
Exemple #6
0
def client_factory_instance():
    with mock.patch.object(ClientFactory, '__init__', return_value=None):
        aws_clients = ClientFactory(None)
    aws_clients._credential_sets = {'default': [None, None, None, None]}
    return aws_clients