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"]
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
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)