Example #1
0
 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
Example #2
0
    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