예제 #1
0
def runInstance(client, instance_name, password, template_id):
    request = RunInstancesRequest()
    request.set_accept_format('json')
    request.set_InstanceName(instance_name)
    request.set_Password(password)
    request.set_LaunchTemplateId(template_id)
    response = client.do_action_with_exception(request)
    return response
예제 #2
0
 def build_request_run_ecs(self, params):
     request = RunInstancesRequest()
     for k in params:
         if k == 'account':
             pass
         else:
             request.add_query_param(k, params[k])
     return request
예제 #3
0
파일: Ecs.py 프로젝트: lingh0205/ecs
 def create(self, template_id, template_name):
     """
     :argument template_id ***************
     :argument template_name ***************
     :return:
     """
     request = RunInstancesRequest()
     request.set_accept_format('json')
     request.set_LaunchTemplateName(template_name)
     request.set_LaunchTemplateId(template_id)
     try:
         logging.info("Start to create ecs instance for template %s." %
                      template_name)
         response = self.client.do_action_with_exception(request)
         if ResponseUtil.success(response):
             instance_id = get_instance_id(str(response, encoding='utf-8'))
             if not instance_id:
                 raise ValueError("Instance ID NullPointException")
             logging.info(
                 "Successfully create instance %s with template %s." %
                 (instance_id, template_name))
             return True, instance_id
         else:
             return False, str(response, encoding='utf-8')
     except Exception as e:
         logging.error("Failed to create ecs, cause by exception : ", e)
         return False, e
예제 #4
0
 def test_default_request_timeout(self):
     client = AcsClient(self.access_key_id,
                        self.access_key_secret,
                        self.region_id,
                        auto_retry=False)
     self._patch_client(client)
     self._test_timeout(client, CreateInstanceRequest(), 86, 5)
     self._test_timeout(client, DescribeInstancesRequest(), 10, 5)
     self._test_timeout(client, RunInstancesRequest(), 86, 5)
예제 #5
0
    def run_instances(self, **params):
        request = RunInstancesRequest()
        instance_ids = _get_response(self._client, request, params, 'InstanceIdSets.InstanceIdSet')

        instances = []
        for instance_id in instance_ids:
            instance = ECSInstanceResource(instance_id, _client=self._client)
            instances.append(instance)
        return instances
예제 #6
0
 def test_connect_timeout_priority(self):
     client = AcsClient(self.access_key_id,
                        self.access_key_secret,
                        self.region_id,
                        connect_timeout=12,
                        auto_retry=False)
     describe_instances = DescribeInstancesRequest()
     describe_instances.set_connect_timeout(6)
     list_users = ListUsersRequest()
     list_users.set_connect_timeout(7)
     run_instances = RunInstancesRequest()
     run_instances.set_connect_timeout(8)
     create_instance = CreateInstanceRequest()
     create_instance.set_connect_timeout(9)
     self._patch_client(client)
     self._test_timeout(client, describe_instances, 10, 6)
     self._test_timeout(client, list_users, 10, 7)
     self._test_timeout(client, run_instances, 86, 8)
     self._test_timeout(client, create_instance, 86, 9)
예제 #7
0
 def test_client_customized_timeout(self):
     client = AcsClient(self.access_key_id,
                        self.access_key_secret,
                        self.region_id,
                        timeout=7,
                        connect_timeout=8,
                        auto_retry=False)
     self._patch_client(client)
     self._test_timeout(client, DescribeInstancesRequest(), 7, 8)
     self._test_timeout(client, ListUsersRequest(), 7, 8)
     self._test_timeout(client, RunInstancesRequest(), 7, 8)
     self._test_timeout(client, CreateInstanceRequest(), 7, 8)
예제 #8
0
 def test_default_time_out(self):
     client = AcsClient(self.access_key_id,
                        self.access_key_secret,
                        self.region_id,
                        auto_retry=False)
     self._patch_client(client)
     self._test_timeout(client, DescribeInstancesRequest(), 10)
     self._test_timeout(client, CreateInstanceRequest(), 86)
     self._test_timeout(client, DescribeInstanceHistoryEventsRequest(), 19)
     self._test_timeout(client, DescribeDisksRequest(), 19)
     self._test_timeout(client, RunInstancesRequest(), 86)
     self._test_timeout(client, ListUsersRequest(),
                        10)  # not configured, using default
예제 #9
0
 def test_user_set_time_out(self):
     client = AcsClient(self.access_key_id,
                        self.access_key_secret,
                        self.region_id,
                        timeout=20,
                        auto_retry=False)
     self._patch_client(client)
     self._test_timeout(client, DescribeInstancesRequest(), 20)
     self._test_timeout(client, CreateInstanceRequest(), 20)
     self._test_timeout(client, DescribeInstanceHistoryEventsRequest(), 20)
     self._test_timeout(client, DescribeDisksRequest(), 20)
     self._test_timeout(client, RunInstancesRequest(), 20)
     self._test_timeout(client, ListUsersRequest(), 20)
예제 #10
0
 def test_request_customized_timeout(self):
     client = AcsClient(self.access_key_id,
                        self.access_key_secret,
                        self.region_id,
                        auto_retry=False)
     describe_instances = DescribeInstancesRequest()
     describe_instances.set_read_timeout(3)
     describe_instances.set_connect_timeout(4)
     list_users = ListUsersRequest()
     list_users.set_read_timeout(6)
     list_users.set_connect_timeout(7)
     run_instances = RunInstancesRequest()
     run_instances.set_read_timeout(21)
     run_instances.set_connect_timeout(15)
     create_instance = CreateInstanceRequest()
     create_instance.set_read_timeout(22)
     create_instance.set_connect_timeout(16)
     self._patch_client(client)
     self._test_timeout(client, describe_instances, 3, 4)
     self._test_timeout(client, list_users, 6, 7)
     self._test_timeout(client, run_instances, 21, 15)
     self._test_timeout(client, create_instance, 22, 16)
예제 #11
0
    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
예제 #12
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_Description(self.description)
        request.set_PasswordInherit(self.password_inherit)
        request.set_Amount(self.amount)
        request.set_InternetMaxBandwidthOut(self.internet_max_bandwidth_out)
        request.set_HostName(self.host_name)
        request.set_UniqueSuffix(self.unique_suffix)
        request.set_IoOptimized(self.io_optimized)
        request.set_AutoReleaseTime(self.auto_release_time)
        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
예제 #13
0
def create(user_data):
    request = RunInstancesRequest()
    request.set_accept_format('json')

    request.set_ImageId("ubuntu_18_04_64_20G_alibase_20190624.vhd")
    request.set_InstanceType("ecs.t5-lc2m1.nano")
    request.set_SecurityGroupId("sg-j6c0z0xdiqgujaby8hu4")
    request.set_VSwitchId("vsw-j6cpqku7fl7zjcej0fj1b")
    request.set_InstanceName("ss-slave")
    request.set_Description("ss-slave")
    request.set_InternetMaxBandwidthOut(100)
    request.set_HostName("ss-slave")
    request.set_UniqueSuffix(True)
    request.set_InternetChargeType("PayByTraffic")
    request.set_UserData(user_data)
    request.set_KeyPairName("ss-slave")
    request.set_Amount(1)

    response = client.do_action_with_exception(request)
    res = json.loads(response)
    return res["InstanceIdSets"]["InstanceIdSet"]
예제 #14
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
response = json.loads(client.do_action_with_exception(request))

# 確認
SECURITY_GROUP_ID = response["SecurityGroupId"]
print("SECURITY_GROUP_ID : ", SECURITY_GROUP_ID)
print("\n")
print(json.dumps(response, indent=4, sort_keys=True))

# ECS Instanceの作成
from aliyunsdkecs.request.v20140526.RunInstancesRequest import RunInstancesRequest

# 変数の準備
IMAGE_ID = "ubuntu_18_04_64_20G_alibase_20190624.vhd"
INSTANCE_TYPE = "ecs.t5-lc1m1.small"

request = RunInstancesRequest()
request.set_accept_format('json')
request.set_ImageId(IMAGE_ID)
request.set_InstanceType(INSTANCE_TYPE)
request.set_SecurityGroupId(SECURITY_GROUP_ID)
request.set_VSwitchId(VSWITCH_ID)
request.set_ZoneId(ZONE_ID)

# 確認
# ECS Instanceが作成されてから, Tagをつけられるまで何秒間のタイムラグがある
response = json.loads(client.do_action_with_exception(request))
INSTANCE_ID = response["InstanceIdSets"]["InstanceIdSet"][0]
print("INSTANCE_ID :  ", INSTANCE_ID)
print("\n")
print(json.dumps(response, indent=4, sort_keys=True))
예제 #16
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
예제 #17
0
파일: ALI.py 프로젝트: y1xiaoc/dpgen
 def create_machine(self):
     AccessKey_ID = self.adata["AccessKey_ID"]
     AccessKey_Secret = self.adata["AccessKey_Secret"]
     strategy = self.adata["pay_strategy"]
     pwd = self.adata["password"]
     regionID = self.mdata_machine['regionID']
     template_name = '%s_%s_%s' % (self.mdata_resources['partition'], self.mdata_resources['numb_gpu'], strategy)
     instance_name = self.adata["instance_name"]
     client = AcsClient(AccessKey_ID,AccessKey_Secret, regionID)
     request = RunInstancesRequest()
     request.set_accept_format('json')
     request.set_UniqueSuffix(True)
     request.set_Password(pwd)
     request.set_InstanceName(instance_name)
     request.set_Amount(self.nchunks)
     request.set_LaunchTemplateName(template_name)
     response = client.do_action_with_exception(request)
     response = json.loads(response)
     self.instance_list = response["InstanceIdSets"]["InstanceIdSet"]
     time.sleep(50)
     request = DescribeInstancesRequest()
     request.set_accept_format('json')
     request.set_InstanceIds(self.instance_list)
     response = client.do_action_with_exception(request)
     response = json.loads(response)
     ip = []
     for i in range(len(response["Instances"]["Instance"])):
         ip.append(response["Instances"]["Instance"][i]["PublicIpAddress"]['IpAddress'][0])
     self.ip_list = ip
예제 #18
0
    def run_instances(
        self,
        instance_type,
        image_id,
        tags,
        security_group_id,
        vswitch_id,
        key_pair_name,
        amount=1,
        optimized="optimized",
        instance_charge_type="PostPaid",
        spot_strategy="SpotWithPriceLimit",
        internet_charge_type="PayByTraffic",
        internet_max_bandwidth_out=1,
    ):
        """ Create one or more pay-as-you-go or subscription
            Elastic Compute Service (ECS) instances

        :param instance_type: The instance type of the ECS.
        :param image_id: The ID of the image used to create the instance.
        :param tags: The tags of the instance.
        :param security_group_id: The ID of the security group to which to
                                  assign the instance. Instances in the same
                                  security group can communicate with
                                  each other.
        :param vswitch_id: The ID of the vSwitch to which to connect
                           the instance.
        :param key_pair_name: The name of the key pair to be bound to
                              the instance.
        :param amount: The number of instances that you want to create.
        :param optimized: Specifies whether the instance is I/O optimized
        :param instance_charge_type: The billing method of the instance.
                                     Default value: PostPaid.
        :param spot_strategy: The preemption policy for the pay-as-you-go
                              instance.
        :param internet_charge_type: The billing method for network usage.
                                     Default value: PayByTraffic.
        :param internet_max_bandwidth_out: The maximum inbound public
                                           bandwidth. Unit: Mbit/s.
        :return: The created instance IDs.
        """
        request = RunInstancesRequest()
        request.set_InstanceType(instance_type)
        request.set_ImageId(image_id)
        request.set_IoOptimized(optimized)
        request.set_InstanceChargeType(instance_charge_type)
        request.set_SpotStrategy(spot_strategy)
        request.set_InternetChargeType(internet_charge_type)
        request.set_InternetMaxBandwidthOut(internet_max_bandwidth_out)
        request.set_Tags(tags)
        request.set_Amount(amount)
        request.set_SecurityGroupId(security_group_id)
        request.set_VSwitchId(vswitch_id)
        request.set_KeyPairName(key_pair_name)

        response = self._send_request(request)
        if response is not None:
            instance_ids = response.get("InstanceIdSets").get("InstanceIdSet")
            return instance_ids
        logging.error("instance created failed.")
        return None
예제 #19
0
def create_ali_ecs_PrePaid(ImageId, InstanceType,
                   SecurityGroupIds, VSwitchId,
                   InstanceName, Description,
                   HostName, ZoneId,
                   regionId, service_name, PeriodUnit, *args, **kwargs):

    print(args)
    print(kwargs)

    client = AcsClient(accessKeyId, accessSecret, regionId)
    request = RunInstancesRequest()
    request.set_accept_format('json')

    password = '******'

    request.set_ImageId(ImageId)
    request.set_InstanceType(InstanceType)
    request.set_SecurityGroupIdss(SecurityGroupIds)
    request.set_VSwitchId(VSwitchId)
    request.set_InstanceName(InstanceName)
    request.set_Description(Description)
    request.set_HostName(HostName)
    request.set_Password(password)
    request.set_ZoneId(ZoneId)
    request.set_Amount(1)
    request.set_SecurityEnhancementStrategy("Active")

    request.set_Tags([
      {
        "Key": "group",
        "Value": service_name
      }
    ])

    for kwarg in kwargs:
        # 判断数据盘指定与否
        if 'datadisk' in kwarg:
            DataDisk = kwargs['datadisk']
            request.set_DataDisks([
                {
                    "Size": DataDisk,
                    "Category": "cloud_ssd"
                }
            ])

    request.set_Period(1)
    request.set_PeriodUnit(PeriodUnit)
    request.set_AutoRenew(True)
    request.set_AutoRenewPeriod(1)
    request.set_InstanceChargeType("PrePaid")

    response = client.do_action_with_exception(request)
    res = json.loads(str(response, encoding='utf-8'))
    return res
    def test_retry_conditions(self):

        default_retry_policy = retry_policy.get_default_retry_policy()

        def CE(code):
            return ClientException(code, "some error")

        def SE(code):
            return ServerException(code, "some error")

        def _get_retryable(*conditions):
            context = RetryPolicyContext(*conditions)
            return default_retry_policy.should_retry(context)

        def _assert_not_retryable(*conditions):
            retryable = _get_retryable(*conditions)
            self.assertTrue(retryable & RetryCondition.NO_RETRY)

        def _assert_retryable(*conditions):
            retryable = _get_retryable(*conditions)
            self.assertFalse(retryable & RetryCondition.NO_RETRY)

        def _assert_retryable_with_client_token(request):
            conditions = [request, SE("InternalError"), 0, 500]
            retryable = _get_retryable(*conditions)
            self.assertTrue(retryable &
                            RetryCondition.SHOULD_RETRY_WITH_THROTTLING_BACKOFF)

        def _assert_not_retryable_with_client_token(request):
            conditions = [request, SE("InternalError"), 0, 500]
            retryable = _get_retryable(*conditions)
            self.assertFalse(retryable & RetryCondition.SHOULD_RETRY_WITH_THROTTLING_BACKOFF)

        no_retry_request = AttachDiskRequest()
        retryable_request = DescribeInstancesRequest()

        timeout_exception = CE(error_code.SDK_HTTP_ERROR)
        invalid_param_excpetion = SE("MissingParameter")
        unknown_error = SE(error_code.SDK_UNKNOWN_SERVER_ERROR)
        internal_error = SE("InternalError")

        _assert_retryable(retryable_request, timeout_exception, 0, 500)
        _assert_retryable(retryable_request, timeout_exception, 2, 500)
        _assert_retryable(retryable_request, unknown_error, 0, 500)
        _assert_retryable(retryable_request, unknown_error, 0, 502)
        _assert_retryable(retryable_request, unknown_error, 0, 503)
        _assert_retryable(retryable_request, unknown_error, 0, 504)
        _assert_retryable(retryable_request, internal_error, 0, 500)
        _assert_retryable(retryable_request, SE("Throttling"), 0, 400)
        _assert_retryable(retryable_request, SE("ServiceUnavailable"), 0, 503)
        _assert_retryable(DescribeInstanceHistoryEventsRequest(),
                          SE("ServiceUnavailable"), 0, 503)
        _assert_retryable(DescribeDisksRequest(), SE("ServiceUnavailable"), 0, 503)

        _assert_not_retryable(no_retry_request, timeout_exception, 0, 500)
        _assert_not_retryable(no_retry_request, unknown_error, 0, 504)
        _assert_not_retryable(no_retry_request, invalid_param_excpetion, 0, 400)
        _assert_not_retryable(retryable_request, invalid_param_excpetion, 0, 400)
        _assert_not_retryable(retryable_request, timeout_exception, 3, 500)
        _assert_not_retryable(retryable_request, SE("InvalidAccessKeyId.NotFound"), 0, 404)

        _assert_retryable_with_client_token(CreateInstanceRequest())
        _assert_retryable_with_client_token(CreateDiskRequest())
        _assert_retryable_with_client_token(RunInstancesRequest())
        _assert_not_retryable_with_client_token(AttachDiskRequest())
        _assert_not_retryable_with_client_token(DescribeInstancesRequest())
예제 #21
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)
    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_UserData(self.user_data)
        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
예제 #23
0
def build_request():
    request = RunInstancesRequest()
    request.set_ImageId(image_id)
    request.set_VSwitchId(vswitch_id)
    request.set_SecurityGroupId(security_group_id)
    request.set_InstanceName("Instance12-04")
    request.set_InstanceType(instance_type)
    return request
예제 #24
0
파일: Five86_1.py 프로젝트: Freeaes/CTF
    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