예제 #1
0
    def get_launch_configs(self, user_obj, names=None, max=-1, startToken=None):
        next_token = None

        dts = self._dtrs_client.list_dts(user_obj.access_id)
        dts.sort()

        # now that we have the final list, look up each description
        lc_list_type = AWSListType('LaunchConfigurations')
        for lc_name in dts:
            if lc_list_type.get_length() >= max and max > -1:
                break

            dt_descr = self._get_dt_details(lc_name, user_obj.access_id)
            for site in sorted(dt_descr['mappings'].keys()):
                mapped_def = dt_descr['mappings'][site]
                out_name = '%s@%s' % (lc_name, site)
                if lc_list_type.get_length() >= max and max > -1:
                    break

                if out_name == startToken:
                    startToken = None

                if startToken is None and (names is None or out_name in names):
                    ot_lc = LaunchConfigurationType('LaunchConfiguration')
                    ot_lc.BlockDeviceMappings = AWSListType('BlockDeviceMappings')

                    if 'CreatedTime' not in mapped_def.keys():
                        # This is an LC that was created with the new Phantom API, ignore it
                        continue

                    tm = _get_time(mapped_def['CreatedTime'])
                    ot_lc.CreatedTime = DateTimeType('CreatedTime', tm)

                    ot_lc.ImageId = mapped_def['iaas_image']
                    ot_lc.InstanceMonitoring = InstanceMonitoringType('InstanceMonitoring')
                    ot_lc.InstanceMonitoring.Enabled = False
                    ot_lc.InstanceType = mapped_def['iaas_allocation']
                    ot_lc.KernelId = None
                    ot_lc.KeyName = phantom_get_default_key_name()
                    ot_lc.LaunchConfigurationARN = mapped_def['LaunchConfigurationARN']
                    ot_lc.LaunchConfigurationName = out_name
                    ot_lc.RamdiskId = None
                    ot_lc.SecurityGroups = AWSListType('SecurityGroups')
                    contextualization = dt_descr.get('contextualization')
                    if contextualization is not None and contextualization.get('method') == 'userdata':
                        # UserData should be base64-encoded to be properly decoded by boto
                        ot_lc.UserData = base64.b64encode(contextualization.get('userdata'))
                    else:
                        ot_lc.UserData = None

                    lc_list_type.add_item(ot_lc)

        # XXX need to set next_token
        return (lc_list_type, next_token)
예제 #2
0
def db_launch_config_to_outtype(lcdb):
    lc = LaunchConfigurationType('LaunchConfiguration')
    lc.ImageId = lcdb.ImageId
    lc.InstanceType = lcdb.InstanceType
    lc.KernelId = lcdb.KernelId
    lc.KeyName = lcdb.KeyName
    lc.LaunchConfigurationARN = lcdb.LaunchConfigurationARN
    lc.LaunchConfigurationName = lcdb.LaunchConfigurationName
    lc.RamdiskId = lcdb.RamdiskId
    lc.UserData = lcdb.UserData

    for sg in lcdb.security_groups:
        lc.SecurityGroups.type_list.append(sg.name)
    lc.InstanceMonitoring.Enabled = lcdb.InstanceMonitoring
    #lc.BlockDeviceMappings
    lc.CreatedTime = DateTimeType('CreatedTime', lcdb.CreatedTime)

    return lc
예제 #3
0
    def get_launch_configs(self,
                           user_obj,
                           names=None,
                           max=-1,
                           startToken=None):
        next_token = None

        dts = self._dtrs_client.list_dts(user_obj.access_id)
        dts.sort()

        # now that we have the final list, look up each description
        lc_list_type = AWSListType('LaunchConfigurations')
        for lc_name in dts:
            if lc_list_type.get_length() >= max and max > -1:
                break

            dt_descr = self._get_dt_details(lc_name, user_obj.access_id)
            for site in sorted(dt_descr['mappings'].keys()):
                mapped_def = dt_descr['mappings'][site]
                out_name = '%s@%s' % (lc_name, site)
                if lc_list_type.get_length() >= max and max > -1:
                    break

                if out_name == startToken:
                    startToken = None

                if startToken is None and (names is None or out_name in names):
                    ot_lc = LaunchConfigurationType('LaunchConfiguration')
                    ot_lc.BlockDeviceMappings = AWSListType(
                        'BlockDeviceMappings')

                    if 'CreatedTime' not in mapped_def.keys():
                        # This is an LC that was created with the new Phantom API, ignore it
                        continue

                    tm = _get_time(mapped_def['CreatedTime'])
                    ot_lc.CreatedTime = DateTimeType('CreatedTime', tm)

                    ot_lc.ImageId = mapped_def['iaas_image']
                    ot_lc.InstanceMonitoring = InstanceMonitoringType(
                        'InstanceMonitoring')
                    ot_lc.InstanceMonitoring.Enabled = False
                    ot_lc.InstanceType = mapped_def['iaas_allocation']
                    ot_lc.KernelId = None
                    ot_lc.KeyName = phantom_get_default_key_name()
                    ot_lc.LaunchConfigurationARN = mapped_def[
                        'LaunchConfigurationARN']
                    ot_lc.LaunchConfigurationName = out_name
                    ot_lc.RamdiskId = None
                    ot_lc.SecurityGroups = AWSListType('SecurityGroups')
                    contextualization = dt_descr.get('contextualization')
                    if contextualization is not None and contextualization.get(
                            'method') == 'userdata':
                        # UserData should be base64-encoded to be properly decoded by boto
                        ot_lc.UserData = base64.b64encode(
                            contextualization.get('userdata'))
                    else:
                        ot_lc.UserData = None

                    lc_list_type.add_item(ot_lc)

        # XXX need to set next_token
        return (lc_list_type, next_token)