예제 #1
0
 def test_s3_head_exists(self, mock_session):
     aws_manager = AwsManager('test-profile', 'us-east-1')
     mock_session.return_value.client.return_value.head_object.return_value = 'response'
     response = aws_manager.s3_head('some-test-bucket', 'key')
     mock_session.return_value.client.return_value.head_object.assert_called_with(
         Bucket='some-test-bucket', Key='key')
     self.assertEqual(response, 'response')
예제 #2
0
    def test_create_and_upload_stack_template(self, mock_git_repo,
                                              mock_os_path, mock_session):
        aws_manager = AwsManager('test-profile', 'us-east-1')
        stack = Stack('my-stack', 'prod', 'template.json', None, None,
                      'OneAtATime', None, None, None, None, None, None)
        environment = Environment('my-env', 'test-profile', 'us-east-1', None,
                                  'my-deploy-arn', 'my-deploy-bucket', None,
                                  [stack])
        service = Service('my-service', 'my-team', 9000, '/health', None,
                          False, [environment])

        mock_os_path.return_value.exists.return_value = True
        mock_git_repo.return_value.is_dirty.return_value = False
        mock_git_repo.return_value.git.return_value.rev_list.return_value = False
        mock_session.return_value.client.return_value.head_object.return_value = 'response'
        m = mock.mock_open(read_data='test template'.encode('utf-8'))

        with mock.patch('nova.core.managers.aws_manager.open', m, create=True):
            aws_manager.create_and_upload_stack_template(
                'my-bucket', service, environment)

        mock_session.return_value.client.return_value.head_object.assert_called_with(
            Bucket='my-bucket',
            Key='my-service/my-stack_template.json',
            IfMatch='5a6bce91d3a7b4667d36c1509bb0efc4')
예제 #3
0
 def test_create_bucket_exists(self, mock_session):
     aws_manager = AwsManager('test-profile', 'us-east-1')
     aws_manager.create_bucket('some-test-bucket', '')
     mock_session.return_value.client.return_value.head_bucket.assert_called_with(
         Bucket='some-test-bucket')
     mock_session.return_value.client.return_value.create_bucket.assert_not_called(
     )
예제 #4
0
 def test_s3_head(self, mock_session):
     aws_manager = AwsManager('test-profile', 'us-east-1')
     mock_session.return_value.client.return_value.get_object.side_effect = ClientError(
         {'Error': {}}, 'test-op')
     response = aws_manager.s3_get('some-test-bucket', 'key')
     mock_session.return_value.client.return_value.get_object.assert_called_with(
         Bucket='some-test-bucket', Key='key')
     self.assertEqual(response, None)
예제 #5
0
 def test_create_bucket(self, mock_session):
     aws_manager = AwsManager('test-profile', 'us-east-1')
     mock_session.return_value.client.return_value.head_bucket.side_effect = ClientError(
         {'Error': {}}, 'test-op')
     aws_manager.create_bucket('some-test-bucket', '')
     mock_session.return_value.client.return_value.head_bucket.assert_called_with(
         Bucket='some-test-bucket')
     mock_session.return_value.client.return_value.create_bucket.assert_called_with(
         Bucket='some-test-bucket')
예제 #6
0
 def test_s3_put(self, mock_session):
     aws_manager = AwsManager('test-profile', 'us-east-1')
     aws_manager.s3_put('some-test-bucket', 'body', 'key', 'meta')
     mock_session.return_value.client.return_value.put_object.assert_called_with(
         Bucket='some-test-bucket',
         Body='body',
         Key='key',
         Metadata='meta'
     )
예제 #7
0
 def test_s3_put(self, mock_session):
     aws_manager = AwsManager('test-profile', 'us-east-1')
     aws_manager.s3_put('some-test-bucket', 'body', 'key', 'meta')
     mock_session.return_value.client.return_value.put_object.assert_called_with(
         Bucket='some-test-bucket',
         Body='body',
         Key='key',
         Metadata='meta'
     )
예제 #8
0
    def test_create_and_upload_stack_template(self, mock_git_repo, mock_os_path, mock_session):
        aws_manager = AwsManager('test-profile', 'us-east-1')
        stack = Stack('my-stack', 'prod', 'template.json', None, None, 'OneAtATime',  None, None, None, None, None, None)
        environment = Environment('my-env', 'test-profile', 'us-east-1', None, 'my-deploy-arn', 'my-deploy-bucket', None, [stack])
        service = Service('my-service', 'my-team', 9000, '/health', None, False, [environment])

        mock_os_path.return_value.exists.return_value = True
        mock_git_repo.return_value.is_dirty.return_value = False
        mock_git_repo.return_value.git.return_value.rev_list.return_value = False
        mock_session.return_value.client.return_value.head_object.return_value = 'response'
        m = mock.mock_open(read_data='test template'.encode('utf-8'))

        with mock.patch('nova.core.managers.aws_manager.open', m, create=True):
            aws_manager.create_and_upload_stack_template('my-bucket', service, environment)

        mock_session.return_value.client.return_value.head_object.assert_called_with(
            Bucket='my-bucket',
            Key='my-service/my-stack_template.json',
            IfMatch='5a6bce91d3a7b4667d36c1509bb0efc4'
        )
예제 #9
0
    def test_push_revision(self, mock_session):
        aws_manager = AwsManager('test-profile', 'us-east-1')

        mock_session.return_value.client.return_value.head_object.return_value = {'ETag': '1'}

        with self._temporary_directory() as nova_dir:
            aws_manager.push_revision('my-deployment-bucket', '0.0.1', 'code-deploy-app', nova_dir)

        mock_session.return_value.client.return_value.register_application_revision.assert_called_with(
            applicationName='code-deploy-app',
            revision={
                'revisionType': 'S3',
                's3Location': {
                    'bucket': 'my-deployment-bucket',
                    'key': '0.0.1',
                    'bundleType': 'tgz',
                    'eTag': '1'
                }
            }
        )
예제 #10
0
    def test_push_revision(self, mock_session):
        aws_manager = AwsManager('test-profile', 'us-east-1')

        mock_session.return_value.client.return_value.head_object.return_value = {'ETag': '1'}

        with self._temporary_directory() as nova_dir:
            aws_manager.push_revision('my-deployment-bucket', '0.0.1', 'code-deploy-app', nova_dir)

        mock_session.return_value.client.return_value.register_application_revision.assert_called_with(
            applicationName='code-deploy-app',
            revision={
                'revisionType': 'S3',
                's3Location': {
                    'bucket': 'my-deployment-bucket',
                    'key': '0.0.1',
                    'bundleType': 'tgz',
                    'eTag': '1'
                }
            }
        )
예제 #11
0
    def test_create_stack(self, mock_waiter, mock_user_query, mock_session):
        aws_manager = AwsManager('test-profile', 'us-east-1')

        mock_user_query.return_value = 'y'
        mock_session.return_value.client.return_value.create_change_set.return_value = {'Id': '123456789'}
        mock_session.return_value.client.return_value.describe_change_set.return_value = {}

        cf_stack = mock.MagicMock(stack_name='my-service-prod')
        aws_manager.update_stack('my-service', 'template', 'changeset_id', cf_stack)

        mock_session.return_value.client.return_value.create_change_set.assert_called_with(
            StackName='my-service-prod',
            TemplateBody='template',
            Capabilities=["CAPABILITY_IAM"],
            ChangeSetName='changeset_id'
        )

        mock_session.return_value.client.return_value.execute_change_set.assert_called_with(
            ChangeSetName='changeset_id',
            StackName='my-service-prod'
        )
예제 #12
0
    def test_create_stack(self, mock_waiter, mock_user_query, mock_session):
        aws_manager = AwsManager('test-profile', 'us-east-1')

        mock_user_query.return_value = 'y'
        mock_session.return_value.client.return_value.create_change_set.return_value = {'Id': '123456789'}
        mock_session.return_value.client.return_value.describe_change_set.return_value = {}

        cf_stack = mock.MagicMock(stack_name='my-service-prod')
        aws_manager.update_stack('my-service', 'template', 'changeset_id', cf_stack)

        mock_session.return_value.client.return_value.create_change_set.assert_called_with(
            StackName='my-service-prod',
            TemplateBody='template',
            Capabilities=["CAPABILITY_IAM"],
            ChangeSetName='changeset_id'
        )

        mock_session.return_value.client.return_value.execute_change_set.assert_called_with(
            ChangeSetName='changeset_id',
            StackName='my-service-prod'
        )
예제 #13
0
 def test_create_stack(self, mock_waiter, mock_session):
     aws_manager = AwsManager('test-profile', 'us-east-1')
     mock_session.return_value.resource.return_value.create_stack.return_value = '123456'
     stack_id = aws_manager.create_stack('my-service', 'template')
     self.assertEqual(stack_id, '123456')
예제 #14
0
 def test_create_bucket_exists(self, mock_session):
     aws_manager = AwsManager('test-profile', 'us-east-1')
     aws_manager.create_bucket('some-test-bucket', '')
     mock_session.return_value.client.return_value.head_bucket.assert_called_with(Bucket='some-test-bucket')
     mock_session.return_value.client.return_value.create_bucket.assert_not_called()
예제 #15
0
 def test_account_alias(self, mock_session):
     aws_manager = AwsManager('test-profile', 'us-east-1')
     mock_session.return_value.client.return_value.list_account_aliases.return_value = {'AccountAliases': ['test-account']}
     self.assertEqual(aws_manager.account_alias, 'test-account')
예제 #16
0
 def aws_manager(profile, region):
     return AwsManager(profile, region)
예제 #17
0
 def test_create_bucket(self, mock_session):
     aws_manager = AwsManager('test-profile', 'us-east-1')
     mock_session.return_value.client.return_value.head_bucket.side_effect = ClientError({'Error': {}}, 'test-op')
     aws_manager.create_bucket('some-test-bucket', '')
     mock_session.return_value.client.return_value.head_bucket.assert_called_with(Bucket='some-test-bucket')
     mock_session.return_value.client.return_value.create_bucket.assert_called_with(Bucket='some-test-bucket')
예제 #18
0
 def test_s3_head(self, mock_session):
     aws_manager = AwsManager('test-profile', 'us-east-1')
     mock_session.return_value.client.return_value.get_object.side_effect = ClientError({'Error': {}}, 'test-op')
     response = aws_manager.s3_get('some-test-bucket', 'key')
     mock_session.return_value.client.return_value.get_object.assert_called_with(Bucket='some-test-bucket', Key='key')
     self.assertEqual(response, None)
예제 #19
0
 def test_s3_head_exists(self, mock_session):
     aws_manager = AwsManager('test-profile', 'us-east-1')
     mock_session.return_value.client.return_value.head_object.return_value = 'response'
     response = aws_manager.s3_head('some-test-bucket', 'key')
     mock_session.return_value.client.return_value.head_object.assert_called_with(Bucket='some-test-bucket', Key='key')
     self.assertEqual(response, 'response')
예제 #20
0
 def test_create_stack(self, mock_waiter, mock_session):
     aws_manager = AwsManager('test-profile', 'us-east-1')
     mock_session.return_value.resource.return_value.create_stack.return_value = '123456'
     stack_id = aws_manager.create_stack('my-service', 'template')
     self.assertEqual(stack_id, '123456')