Exemplo n.º 1
0
    def test_aws_sts_role_try_catch(self, session_mock, client_mock,
                                    assume_role_mock):

        region = self.region_mock
        api = "sts"
        roleArn = self.mock_roleArn

        mock_response = {
            'Credentials': {
                'AccessKeyId': 'mock_access_id',
                'SecretAccessKey': 'mock_access_secret',
                'SessionToken': 'mock_session_token',
            },
            'AssumedRoleUser': {
                'AssumedRoleId': 'mock_id_1122Null',
                'Arn': self.mock_roleArn
            },
            'PackedPolicySize': 123
        }

        self.boto3_mock = Mock()
        session_mock.return_value = "session for boto3 client mocked "

        assume_role_mock.return_value = mock_response
        instance = AbstractionLayer(region)
        instance.aws_sts_role(api, roleArn)
Exemplo n.º 2
0
    def test_aws_health_try_catch(self, session_mock, client_mock,
                                  describe_events_mock):
        region = self.region_mock
        services = self.ec2_mock
        codes = "200"
        api = self.health_mock

        mock_response = {
            'events': [
                {
                    'arn': 'arn:health:1212',
                    'service': 'health',
                    'eventTypeCode': '200',
                    'eventTypeCategory': 'accountNotification',
                    'region': 'mock_region',
                    'statusCode': 'open',
                },
            ],
        }

        self.boto3_mock = Mock()
        session_mock.return_value = "session for client mocked "

        # handling the try code block
        describe_events_mock.return_value = mock_response
        instance = AbstractionLayer(region)
        instance.aws_health(api, region, services, codes)
Exemplo n.º 3
0
    def test_scan_region_try_catch(self, session_mock, client_mock,
                                   describe_regions_mock):
        region = self.region_mock
        # with self.assertRaises(SystemExit) as sys_exit:
        self.boto3_mock = Mock()
        session_mock.return_value = "boto3 client mocked "

        instance = AbstractionLayer(region)
        instance.scan_region(self.ec2_mock)
Exemplo n.º 4
0
    def test_scan_region_exception_handling(self, session_mock, client_mock):
        region = self.region_mock
        with self.assertRaises(SystemExit) as sys_exit:
            self.boto3_mock = Mock()
            session_mock.return_value = "boto3 client mocked "

            instance = AbstractionLayer(region)
            instance.scan_region("us-east-2")

        self.assertEqual(sys_exit.exception.code, 1)
Exemplo n.º 5
0
    def test_aws_sts_role_exception_catch(self, session_mock):
        with self.assertRaises(SystemExit) as sys_exit:
            region = self.region_mock
            api = "sts"
            roleArn = ""

            instance = AbstractionLayer(region)
            instance.aws_sts_role(api, roleArn)

        self.assertEqual(sys_exit.exception.code, 1)
Exemplo n.º 6
0
    def test_role_data_extraction_exception_handling(self):
        with self.assertRaises(SystemExit) as sys_exit:
            region = self.region_mock
            mock_credentials = {
                "Credentials": {
                    "AccessKeyId": "mocked_aws_access_key_id",
                }
            }

            instance = AbstractionLayer(region)
            instance.role_data_extraction(mock_credentials)

        self.assertEqual(sys_exit.exception.code, 1)
Exemplo n.º 7
0
    def test_role_data_extraction_try_catch(self):

        region = self.region_mock
        mock_credentials = {
            "Credentials": {
                "AccessKeyId": "mocked_aws_access_key_id",
                "SecretAccessKey": "mocked_aws_access_secret",
                "SessionToken": "mocked_aws_session_token",
            }
        }

        instance = AbstractionLayer(region)
        instance.role_data_extraction(mock_credentials)
def instance_controller(region, extern_call, credentials):

    try:
        aws_instance = LayerClass(region=region)
        logger.info("Spinning the AWS Instance with STS Credentials .")
        obj_status = aws_instance.client_spin_status_check(
            extern_service=extern_call, temp_credentials=credentials)

    except Exception as err:
        logger.exception("Loggging spinned Instance fatal error: " + str(err) +
                         "\n")
        sys.exit(1)

    else:
        return obj_status
Exemplo n.º 9
0
    def test_client_spin_status_outer_exception_handling(self, ):
        with self.assertRaises(SystemExit) as sys_exit:
            region = self.region_mock
            mock_extern_service = self.ec2_mock

            mock_tmp_credentials = [
                "mocked_aws_access_key_id",
                "mocked_aws_access_key_id",
            ]

            instance = AbstractionLayer(region)
            instance.client_spin_status_check(mock_extern_service,
                                              mock_tmp_credentials)

        self.assertEqual(sys_exit.exception.code, 1)
Exemplo n.º 10
0
    def test_aws_health_exception_handling(self, session_mock, client_mock):

        region = self.region_mock
        services = ["ec2_mock", "s3_mock", "sts_mock"]
        codes = ["200", "302", "301"]

        with self.assertRaises(SystemExit) as sys_exit:
            self.boto3_mock = Mock()
            session_mock.return_value = "boto3 client mocked "

            # handling the try code block
            instance = AbstractionLayer(region)
            instance.aws_health("health_mock", region, services, codes)

        self.assertEqual(sys_exit.exception.code, 1)
Exemplo n.º 11
0
    def test_describe_instance_inner_exception_handling(self, session_mock):
        with self.assertRaises(SystemExit) as sys_exit:

            region = self.region_mock
            mock_extern_service = self.ec2_mock

            mock_tmp_credentials = [
                "mocked_aws_access_key_id",
                "mocked_aws_access_key_id",
                "mocked_aws_session_token",
            ]

            instance = AbstractionLayer(region)
            instance.describe_instance(mock_extern_service,
                                       mock_tmp_credentials)

        self.assertEqual(sys_exit.exception.code, 1)
Exemplo n.º 12
0
    def test_describe_instance_try_catch(self, session_mock, client_mock,
                                         describe_instances_mock):

        region = self.region_mock
        mock_extern_service = self.ec2_mock

        mock_credentials = [
            "mocked_aws_access_key_id",
            "mocked_aws_access_key_id",
            "mocked_aws_session_token",
        ]

        mock_response = {
            'Reservations': [{
                'Instances': [{
                    'AmiLaunchIndex': 123,
                    'ImageId': 'mock_id',
                    'InstanceId': 'mock_instance_id',
                    'InstanceType': 't1.micro',
                    'KernelId': 'mock_kernel_id',
                    'KeyName': 'mock_instance_tester',
                    'Monitoring': {
                        'State': 'disabled'
                    },
                    'Placement': {
                        'AvailabilityZone': 'us-east-2',
                        'Affinity': 'mock_high',
                        'PartitionNumber': 123,
                        'HostId': 'mock_host_id',
                        'Tenancy': 'dedicated',
                        'SpreadDomain': 'mock_spread_domain',
                        'HostResourceGroupArn': 'mock_host_resource_arn'
                    },
                }]
            }]
        }

        session_mock.return_value = "session for boto3 client is mocked "
        describe_instances_mock.return_value = mock_response

        instance = AbstractionLayer(region)
        instance.describe_instance(mock_extern_service, mock_credentials)
def ingest_api_call(response):
    # Logging attributes status for the spinned instances using AssumeRole methodology

    if response["roleArn"]:
        try:
            aws_obj = LayerClass(region=response["region"])
            assume_role = aws_obj.aws_sts_role(api_call=response["apis"],
                                               role_arn=response["roleArn"])
            credentials = aws_obj.role_data_extraction(
                assume_role_credentials=assume_role)
            logger.debug("STS rule controller for AWS ")

        except Exception as err:
            logger.exception("Logging STS Error: " + str(err) + "\n")
            sys.exit(1)

        else:
            return credentials

    else:
        logger.exception("Role ARN missing to execute the Boto3 API call ! ")
        sys.exit(1)