def describe_instances(self): """ 获取实例信息 :return: 实例信息列表 """ offset = 0 total_count = len(self.instance_ids) instances = [] while offset < total_count: ids = self.instance_ids[offset:min(offset + self.page_size, total_count)] request = DescribeInstancesRequest() request.set_PageSize(self.page_size) request.set_InstanceChargeType(self.instance_charge_type) request.set_InstanceIds(ids) body = self.client.do_action_with_exception(request) data = json.loads(body) ins = data['Instances']['Instance'] ret_instance_ids = [instance['InstanceId'] for instance in ins] invalid_instance_ids = set(ids) - set(ret_instance_ids) if invalid_instance_ids: raise InvalidInstanceId('Fail. Invalid InstanceIds: {}'.format( ', '.join(invalid_instance_ids))) instances.extend(ins) offset += self.page_size return instances
def get_renew_instance_ids(self): """ 获取需要续费的实例ID :param instance_id: 实例ID列表 :return: """ start_time_utc = '2018-10-21T16:00Z' end_time_utc = '2018-12-01T16:00Z' page_num = 1 total_count = 1 instance_ids = [] while len(instance_ids) < total_count: request = DescribeInstancesRequest() request.set_Filter3Key(self.expired_start_time) request.set_Filter3Value(start_time_utc) request.set_Filter4Key(self.expired_end_time) request.set_Filter4Value(end_time_utc) request.set_InstanceChargeType(self.instance_charge_type) request.set_PageSize(self.page_size) request.set_PageNumber(page_num) body = self.client.do_action_with_exception(request) data = json.loads(body) if not data['TotalCount']: return instance_ids ids = [ str(instance['InstanceId']) for instance in data['Instances']['Instance'] ] instance_ids.extend(ids) total_count = data['TotalCount'] page_num += 1 print('Success. Instances which should be renewed include: {}'.format( ', '.join(instance_ids))) return instance_ids