Exemple #1
0
    def run_instances(self):
        """
        调用ECS API
        instance_id得出的是列表
        :return:
        """
        request = RunInstancesRequest()
        request.set_DryRun(self.dry_run)

        request.set_InstanceType(self.instance_type)
        request.set_InstanceChargeType(self.instance_charge_type)
        request.set_ImageId(self.image_id)
        request.set_SecurityGroupId(self.security_group_id)
        request.set_ZoneId(self.zone_id)
        request.set_InternetChargeType(self.internet_charge_type)
        request.set_VSwitchId(self.vswitch_id)
        request.set_InstanceName(self.instance_name)
        request.set_Password(self.password)
        request.set_Amount(self.amount)
        request.set_InternetMaxBandwidthOut(self.internet_max_bandwidth_out)
        request.set_SystemDiskSize(self.system_disk_size)
        request.set_SystemDiskCategory(self.system_disk_category)
        request.set_DataDisks(self.data_disks)
        request.set_Tags(self.tags)

        body = self.client.do_action_with_exception(request)
        data = json.loads(body)
        instance_id = data['InstanceIdSets']['InstanceIdSet']
        print('Success Instance Create. InstanceId: {}'.format(' '.join(instance_id)))
        return instance_id
Exemple #2
0
    def run_instances(self):
        """
        调用创建实例的API,得到实例ID后继续查询实例状态
        :return:instance_ids 需要检查的实例ID
        """
        request = RunInstancesRequest()

        request.set_DryRun(self.dry_run)

        request.set_InstanceType(self.instance_type)
        request.set_InstanceChargeType(self.instance_charge_type)
        request.set_ImageId(self.image_id)
        request.set_SecurityGroupId(self.security_group_id)
        request.set_Period(self.period)
        request.set_PeriodUnit(self.period_unit)
        request.set_ZoneId(self.zone_id)
        request.set_InternetChargeType(self.internet_charge_type)
        request.set_VSwitchId(self.vswitch_id)
        request.set_InstanceName(self.instance_name)
        request.set_Amount(self.amount)
        request.set_InternetMaxBandwidthOut(self.internet_max_bandwidth_out)
        request.set_HostName(self.host_name)
        request.set_IoOptimized(self.io_optimized)
        request.set_KeyPairName(self.key_pair_name)
        request.set_SecurityEnhancementStrategy(
            self.security_enhancement_strategy)
        request.set_SystemDiskSize(self.system_disk_size)
        request.set_SystemDiskCategory(self.system_disk_category)

        body = self.client.do_action_with_exception(request)
        data = json.loads(body)
        instance_ids = data['InstanceIdSets']['InstanceIdSet']
        print('Success. Instance creation succeed. InstanceIds: {}'.format(
            ', '.join(instance_ids)))
        return instance_ids
Exemple #3
0
    def run_instances(self):
        """
        调用创建实例的API,得到实例ID后继续查询实例状态
        :return:instance_ids 需要检查的实例ID
        """
        request = RunInstancesRequest()

        request.set_DryRun(self.dry_run)

        request.set_InstanceChargeType(self.instance_charge_type)
        request.set_Period(self.period)
        request.set_PeriodUnit(self.period_unit)
        request.set_ZoneId(self.zone_id)
        request.set_InternetChargeType(self.internet_charge_type)
        request.set_ImageId(self.image_id)
        request.set_SecurityGroupId(self.security_group_id)
        request.set_InstanceName(self.instance_name)
        request.set_PasswordInherit(self.password_inherit)
        request.set_Amount(self.amount)
        request.set_InternetMaxBandwidthOut(self.internet_max_bandwidth_out)
        request.set_UniqueSuffix(self.unique_suffix)
        request.set_IoOptimized(self.io_optimized)
        request.set_SecurityEnhancementStrategy(
            self.security_enhancement_strategy)
        request.set_InstanceType(self.instance_type)
        request.set_SystemDiskSize(self.system_disk_size)
        request.set_SystemDiskCategory(self.system_disk_category)
        request.set_DataDisks(self.data_disks)

        body = self.client.do_action_with_exception(request)
        data = json.loads(body)
        instance_ids = data["InstanceIdSets"]["InstanceIdSet"]
        print("Success. Instance creation succeed. InstanceIds: {}".format(
            ", ".join(instance_ids)))
        return instance_ids
Exemple #4
0
    def run_instance(self):
        """
        调用创建实例的API,得到实例ID后继续查询实例状态
        :return:instance_ids 需要检查的实例ID
        """
        request = RunInstancesRequest()
       
        request.set_DryRun(self.dry_run)
        
        request.set_InstanceType(self.instance_type)
        request.set_InstanceChargeType(self.instance_charge_type)
        request.set_ImageId(self.image_id)
        request.set_SecurityGroupId(self.security_group_id)
        request.set_Period(self.period)
        request.set_PeriodUnit(self.period_unit)
        request.set_ZoneId(self.zone_id)
        request.set_InternetChargeType(self.internet_charge_type)
        request.set_VSwitchId(self.vswitch_id)
        request.set_Amount(self.amount)
        request.set_InternetMaxBandwidthOut(self.internet_max_bandwidth_out)
        request.set_IoOptimized(self.io_optimized)
        request.set_KeyPairName(self.key_pair_name)
        request.set_SecurityEnhancementStrategy(self.security_enhancement_strategy)
        request.set_SystemDiskSize(self.system_disk_size)
        request.set_SystemDiskCategory(self.system_disk_category)

#         shellScript = """#!/bin/bash
# echo "{}" > {}
# chmod 777 {}
# """.format(flag, targetFile, targetFile)
#         print(shellScript)

        # userData = base64.b64encode(bytes(shellScript, encoding = "utf-8"))
        # userData = userData.decode(encoding='utf-8')
        # print(userData)

        # request.set_UserData(userData)

        body = self.client.do_action_with_exception(request)
        data = json.loads(body)
        instance_ids = data['InstanceIdSets']['InstanceIdSet']
        # print('Success. Instance creation succeed. InstanceIds: {}'.format(', '.join(instance_ids)))
        return instance_ids
    def run_instances(self):
        """
        调用创建实例的API,得到实例ID后继续查询实例状态
        :return:instance_ids 需要检查的实例ID
        """
        request = RunInstancesRequest()

        # true:发送检查请求,不会创建实例。检查项包括是否填写了必需参数、请求格式、业务限制和ECS库存。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码DryRunOperation
        # false(默认):发送正常请求,通过检查后直接创建实例。
        request.set_DryRun(self.dry_run)

        request.set_InstanceType(self.instance_type)
        request.set_InstanceChargeType(self.instance_charge_type)
        request.set_ImageId(self.image_id)
        request.set_SecurityGroupId(self.security_group_id)
        request.set_Period(self.period)
        request.set_PeriodUnit(self.period_unit)
        request.set_ZoneId(self.zone_id)
        request.set_InternetChargeType(self.internet_charge_type)
        request.set_VSwitchId(self.vswitch_id)
        request.set_InstanceName(self.instance_name)
        request.set_Password(self.password)
        request.set_Amount(self.amount)
        request.set_InternetMaxBandwidthOut(self.internet_max_bandwidth_out)
        request.set_UniqueSuffix(self.unique_suffix)
        request.set_IoOptimized(self.io_optimized)
        request.set_SecurityEnhancementStrategy(
            self.security_enhancement_strategy)
        if self.auto_release_time:
            request.set_AutoReleaseTime(self.auto_release_time)
        request.set_SystemDiskSize(self.system_disk_size)
        request.set_SystemDiskCategory(self.system_disk_category)
        request.set_DataDisks(self.data_disks)
        request.set_Tags(self.tags)

        body = self.client.do_action_with_exception(request)
        data = json.loads(body)
        instance_ids = data['InstanceIdSets']['InstanceIdSet']
        print('Success. Instance creation succeed. InstanceIds: {}'.format(
            ', '.join(instance_ids)))

        # instance_ids 输出为一个list
        return instance_ids
Exemple #6
0
    def _launch_instance(self):
        """Launch an instance of the given image."""
        client = self._connect()
        instance_name = self._generate_instance_name()

        request = RunInstancesRequest()
        request.set_InstanceType(self.instance_type or ALIYUN_DEFAULT_TYPE)
        request.set_InstanceChargeType('PostPaid')
        request.set_ImageId(self.image_id)
        request.set_InstanceName(instance_name)
        request.set_Amount(1)
        request.set_InternetMaxBandwidthOut(5)
        request.set_SystemDiskSize(20)
        request.set_IoOptimized('optimized')
        request.set_SecurityEnhancementStrategy('Active')
        request.set_VSwitchId(self.v_switch_id)
        request.set_SecurityGroupId(self.security_group_id)

        if self.zone:
            request.set_ZoneId(self.zone)

        if self.ssh_key_name:
            request.set_KeyPairName(self.ssh_key_name)
        else:
            request.set_UserData(b64encode(self._get_user_data().encode()))

        try:
            response = json.loads(client.do_action_with_exception(request))
        except Exception as error:
            raise AliyunCloudException(
                'Unable to create instance: {0}.'.format(error))

        self.running_instance_id = \
            response['InstanceIdSets']['InstanceIdSet'][0]
        self.logger.debug('ID of instance: %s' % self.running_instance_id)
        self._wait_on_instance('Running', self.timeout)