Beispiel #1
0
    def test_get_name(self):
        src = {
            "Tags": [
                {
                    "Key": "Not Name",
                    "Value": "xyz"
                },
                {
                    "Key": "Name",
                    "Value": "abc"
                },
            ],
            "default_attribute":
            "default_value",
        }
        dst = {}
        default_attribute = "default_attribute"
        assert get_name(src, dst, default_attribute) == "abc"
        assert dst["name"] == "abc"

        src = {
            "Tags": [{
                "Key": "Not Name",
                "Value": "xyz"
            }],
            "default_attribute": "default_value",
        }
        dst = {}
        default_attribute = "default_attribute"
        assert get_name(src, dst, default_attribute) == "default_value"
        assert dst["name"] == "default_value"
    async def _parse_instance(self, raw_instance):
        instance = {}
        id = raw_instance['InstanceId']
        instance['id'] = id
        instance['reservation_id'] = raw_instance['ReservationId']
        instance['monitoring_enabled'] = raw_instance['Monitoring'][
            'State'] == 'enabled'
        instance['user_data'] = await self.facade.ec2.get_instance_user_data(
            self.region, id)
        instance['user_data_secrets'] = self._identify_user_data_secrets(
            instance['user_data'])

        get_name(raw_instance, instance, 'InstanceId')
        get_keys(raw_instance, instance, [
            'KeyName', 'LaunchTime', 'InstanceType', 'State',
            'IamInstanceProfile', 'SubnetId'
        ])

        instance['network_interfaces'] = {}
        for eni in raw_instance['NetworkInterfaces']:
            nic = {}
            get_keys(eni, nic, [
                'Association', 'Groups', 'PrivateIpAddresses', 'SubnetId',
                'Ipv6Addresses'
            ])
            instance['network_interfaces'][eni['NetworkInterfaceId']] = nic

        return id, instance
    def _parse_network_acl(self, raw_network_acl):
        raw_network_acl['id'] = raw_network_acl.pop('NetworkAclId')
        get_name(raw_network_acl, raw_network_acl, 'id')
        raw_network_acl['rules'] = {}
        raw_network_acl['rules']['ingress'] = self._parse_network_acl_entries(raw_network_acl['Entries'], False)
        raw_network_acl['rules']['egress'] = self._parse_network_acl_entries(raw_network_acl['Entries'], True)
        raw_network_acl.pop('Entries')

        return raw_network_acl['id'], raw_network_acl
Beispiel #4
0
    def _parse_subnet(self, raw_subnet):
        raw_subnet['id'] = raw_subnet['SubnetId']
        get_name(raw_subnet, raw_subnet, 'SubnetId')
        raw_subnet.pop('SubnetId')

        if raw_subnet['Ipv6CidrBlockAssociationSet']:
            raw_subnet['CidrBlockv6'] = raw_subnet['Ipv6CidrBlockAssociationSet'][0]['Ipv6CidrBlock']
        else:
            raw_subnet['CidrBlockv6'] = None

        return raw_subnet['id'], raw_subnet
Beispiel #5
0
 def _parse_network_acl(self, raw_network_acl):
     raw_network_acl['id'] = raw_network_acl.pop('NetworkAclId')
     get_name(raw_network_acl, raw_network_acl, 'id')
     raw_network_acl['rules'] = {}
     raw_network_acl['rules']['ingress'] = self._parse_network_acl_entries(
         raw_network_acl['Entries'], False)
     raw_network_acl['rules']['egress'] = self._parse_network_acl_entries(
         raw_network_acl['Entries'], True)
     raw_network_acl.pop('Entries')
     raw_network_acl['arn'] = format_arn(self.partition, self.service,
                                         self.region,
                                         raw_network_acl.get('OwnerId'),
                                         raw_network_acl.get('id'),
                                         self.resource_type)
     return raw_network_acl['id'], raw_network_acl
Beispiel #6
0
    async def _parse_instance(self, raw_instance):
        instance = {}
        id = raw_instance['InstanceId']
        instance['id'] = id
        instance['arn'] = format_arn(self.partition, self.service, self.region,
                                     raw_instance['OwnerId'],
                                     raw_instance['InstanceId'],
                                     self.resource_type)
        instance['reservation_id'] = raw_instance['ReservationId']
        instance['availability_zone'] = raw_instance.get(
            'Placement', {}).get('AvailabilityZone')
        instance['monitoring_enabled'] = raw_instance['Monitoring'][
            'State'] == 'enabled'
        instance['user_data'] = await self.facade.ec2.get_instance_user_data(
            self.region, id)
        instance['user_data_secrets'] = self._identify_user_data_secrets(
            instance['user_data'])

        get_name(raw_instance, instance, 'InstanceId')
        get_keys(raw_instance, instance, [
            'KeyName', 'LaunchTime', 'InstanceType', 'State',
            'IamInstanceProfile', 'SubnetId', 'Tags'
        ])

        if "IamInstanceProfile" in raw_instance:
            instance['iam_instance_profile_id'] = raw_instance[
                'IamInstanceProfile']['Id']
            instance['iam_instance_profile_arn'] = raw_instance[
                'IamInstanceProfile']['Arn']

        instance['network_interfaces'] = {}
        for eni in raw_instance['NetworkInterfaces']:
            nic = {}
            get_keys(eni, nic, [
                'Association', 'Groups', 'PrivateIpAddresses', 'SubnetId',
                'Ipv6Addresses'
            ])
            instance['network_interfaces'][eni['NetworkInterfaceId']] = nic

        instance['metadata_options'] = raw_instance.get('MetadataOptions', {})

        if 'IamInstanceProfile' in raw_instance:
            instance['iam_role'] = raw_instance['IamInstanceProfile'][
                'Arn'].split('/')[-1]
        else:
            instance['iam_role'] = None

        return id, instance
Beispiel #7
0
 def _parse_volume(self, raw_volume):
     raw_volume['id'] = raw_volume.pop('VolumeId')
     raw_volume['name'] = get_name(raw_volume, raw_volume, 'id')
     raw_volume['arn'] = format_arn(self.partition, self.service,
                                    self.region, self.facade.owner_id,
                                    raw_volume.get('id'),
                                    self.resource_type)
     return raw_volume['id'], raw_volume
Beispiel #8
0
 def _parse_snapshot(self, raw_snapshot):
     raw_snapshot['id'] = raw_snapshot.pop('SnapshotId')
     raw_snapshot['name'] = get_name(raw_snapshot, raw_snapshot, 'id')
     raw_snapshot['public'] = self._is_public(raw_snapshot)
     raw_snapshot['arn'] = 'arn:aws:ec2:{}:{}:snapshot/{}'.format(
         self.get('region'), raw_snapshot.get('OwnerId'),
         raw_snapshot.get('name'))
     return raw_snapshot['id'], raw_snapshot
Beispiel #9
0
 def _parse_volume(self, raw_volume):
     raw_volume['id'] = raw_volume.pop('VolumeId')
     raw_volume['name'] = get_name(raw_volume, raw_volume, 'id')
     if "Tags" in raw_volume:
         raw_volume['tags'] = {
             x["Key"]: x["Value"]
             for x in raw_volume["Tags"]
         }
     return raw_volume['id'], raw_volume
Beispiel #10
0
 def _parse_snapshot(self, raw_snapshot):
     snapshot_dict = {}
     snapshot_dict['id'] = raw_snapshot.get('SnapshotId')
     snapshot_dict['name'] = get_name(raw_snapshot, raw_snapshot,
                                      'SnapshotId')
     snapshot_dict['description'] = raw_snapshot.get('Description')
     snapshot_dict['public'] = self._is_public(raw_snapshot)
     snapshot_dict['encrypted'] = raw_snapshot.get('Encrypted')
     snapshot_dict['kms_key_id'] = raw_snapshot.get('KmsKeyId')
     snapshot_dict['owner_id'] = raw_snapshot.get('OwnerId')
     snapshot_dict['progress'] = raw_snapshot.get('Progress')
     snapshot_dict['start_time'] = raw_snapshot.get('StartTime')
     snapshot_dict['state'] = raw_snapshot.get('State')
     snapshot_dict['volume_id'] = raw_snapshot.get('VolumeId')
     snapshot_dict['volume_size'] = raw_snapshot.get('VolumeSize')
     snapshot_dict['create_volume_permissions'] = raw_snapshot.get(
         'CreateVolumePermissions')
     snapshot_dict['arn'] = format_arn(self.partition, self.service,
                                       self.region,
                                       raw_snapshot.get('OwnerId'),
                                       raw_snapshot.get('SnapshotId'),
                                       self.resource_type)
     return snapshot_dict['id'], snapshot_dict
Beispiel #11
0
 def _parse_volume(self, raw_volume):
     raw_volume['id'] = raw_volume.pop('VolumeId')
     raw_volume['name'] = get_name(raw_volume, raw_volume, 'id')
     return raw_volume['id'], raw_volume
Beispiel #12
0
 def _parse_volume(self, raw_volume):
     raw_volume['id'] = raw_volume.pop('VolumeId')
     raw_volume['name'] = get_name(raw_volume, raw_volume, 'id')
     raw_volume['arn'] = 'arn:aws:ec2:{}:{}:volume/{}'.format(
         self.region, self.facade.owner_id, raw_volume.get('name'))
     return raw_volume['id'], raw_volume
Beispiel #13
0
 def _parse_snapshot(self, raw_snapshot):
     raw_snapshot['id'] = raw_snapshot.pop('SnapshotId')
     raw_snapshot['name'] = get_name(raw_snapshot, raw_snapshot, 'id')
     raw_snapshot['public'] = self._is_public(raw_snapshot)
     return raw_snapshot['id'], raw_snapshot
Beispiel #14
0
 def _parse_log(self, raw_log):
     get_name(raw_log, raw_log, 'FlowLogId')
     log_id = raw_log.pop('FlowLogId')
     return log_id, raw_log
    def _parse_subnet(self, raw_subnet):
        raw_subnet['id'] = raw_subnet['SubnetId']
        get_name(raw_subnet, raw_subnet, 'SubnetId')
        raw_subnet.pop('SubnetId')

        return raw_subnet['id'], raw_subnet