Exemple #1
0
    def get_attribute_response(self):
        """
        获取实例详细信息
        :return:
        """

        instance_id_list = self.get_db_instance_id()
        if not isinstance(instance_id_list, list):
            raise TypeError

        rds_attribute_data_list = []
        try:
            request = DescribeDBInstanceAttributeRequest()
            request.set_accept_format('json')
            for instance_id in instance_id_list:
                request.set_DBInstanceId(instance_id)
                response = self.client.do_action_with_exception(request)
                response_data = json.loads(str(response, encoding="utf8"))
                rds_attribute_data = response_data['Items']['DBInstanceAttribute'][0]
                rds_attribute_data_list.append(rds_attribute_data)

            return rds_attribute_data_list
        except Exception as e:
            print(e)
            return False
Exemple #2
0
 def dds(self, instance):
     """
     获取mongodb实例的详细信息并进行过滤后返回
     :param instance: 实例基本信息,必须包含实例ID和创建和到期时间
     :return dict: 返回实例详细信息
     """
     from aliyunsdkdds.request.v20151201.DescribeDBInstanceAttributeRequest import DescribeDBInstanceAttributeRequest
     ins_id = instance["InstanceID"]
     request = DescribeDBInstanceAttributeRequest()
     request.set_accept_format("json")
     request.set_DBInstanceId(ins_id)
     response = self.AcsClient.do_action_with_exception(request)
     instance_attrib = json.loads(response)["DBInstances"]["DBInstance"][0]
     try:
         instance_name = instance_attrib["DBInstanceDescription"]
     except KeyError:  # 未设置实例别名时会导致KeyError
         instance_name = ""
     instance_info = {
         "InstanceId": ins_id,
         "InstanceName": instance_name if instance_name else ins_id,
         "ZoneId": instance_attrib["ZoneId"],
         "Engine": instance_attrib["Engine"],
         "InstanceClass": instance_attrib["DBInstanceClass"],
         "NetworkType": instance_attrib["NetworkType"],
         "ArchitectureType": instance_attrib["DBInstanceType"],
         "CreateTime": self.get_cst_from_utc(instance["CreateTime"]),
         "EndTime": self.get_cst_from_utc(instance["EndTime"]),
         "RenewalDays": self.get_days(instance["EndTime"])
     }
     return instance_info
Exemple #3
0
    def instance_info(self):
        request = DescribeDBInstanceAttributeRequest()
        request.set_accept_format('json')
        request.set_DBInstanceId(self._DBInstanceId)

        try:
            respone = self._client.do_action_with_exception(request)

            info = json.loads(str(respone, encoding='utf-8'))
            rds_info = {}
            rds_dict = info['Items']
            total_storage = rds_dict['DBInstanceAttribute'][0][
                'DBInstanceStorage']
            disk_usage = rds_dict['DBInstanceAttribute'][0][
                'DBInstanceDiskUsed']
            rds_memory = rds_dict['DBInstanceAttribute'][0][
                'DBInstanceMemory'] / 1024
            rds_cpu = rds_dict['DBInstanceAttribute'][0]['DBInstanceCPU']
            rds_engine = rds_dict['DBInstanceAttribute'][0]['Engine']
            expire_time_str = rds_dict['DBInstanceAttribute'][0]['ExpireTime']

            expire_time = datetime.datetime.strptime(
                expire_time_str, '%Y-%m-%dT%H:%M:%SZ').date()
            current_time = datetime.datetime.today().date()
            expire_day = str(expire_time - current_time).split()[0]

            rds_info['total_storage'] = total_storage
            rds_info['disk_usage'] = disk_usage / 1024 / 1024 / 1024
            rds_info['rds_memory'] = rds_memory
            rds_info['rds_cpu'] = rds_cpu
            rds_info['rds_engine'] = rds_engine
            rds_info['expire_day'] = expire_day
            return rds_info
        except Exception as e:
            print('获取RDS 信息失败!!!')
Exemple #4
0
 def get_rds_attribute(self, instance_id):
     request = DescribeDBInstanceAttributeRequest()
     request.set_accept_format('json')
     request.set_DBInstanceId(instance_id)
     data = self._request(request)
     data = data.get('Items')
     data = data.get('DBInstanceAttribute')
     if data:
         data = data[0]
     return data
def get_rds_info(key, secret, zone):
    clt = client.AcsClient(key, secret, zone)
    request = DescribeDBInstanceAttributeRequest()
    # request.setKey()
    request.set_action_name("DescribeDBInstances")
    # 将数据格式化成 json,默认为 XML
    request.set_accept_format('json')
    # 发起请求,获取数据
    result = json.loads(clt.do_action_with_exception(request)).get('Items').get('DBInstance')
    print(result)
    return result
Exemple #6
0
 def fetch_rds_ins_ver(self):
     """
     获取rds实例的具体信息
     """
     client = self.connect()
     ins_ids = ','.join(self.fetch_rds_instances())
     request = DescribeDBInstanceAttributeRequest()
     request.set_accept_format('json')
     request.set_DBInstanceId(ins_ids)
     response = client.do_action_with_exception(request)
     response = json.loads(str(response, encoding='utf-8'))
     response = response['Items']['DBInstanceAttribute']
     return response
Exemple #7
0
    def get_instance_attribute(self, instance_id):
        """
        通过instance ID获取RDS实例的描述信息
        :param instance_id:
        :return:
        """
        request = DescribeDBInstanceAttributeRequest()
        request.set_accept_format('json')
        request.set_DBInstanceId(instance_id)

        response = self.client.do_action_with_exception(request)
        response = json.loads(str(response, encoding='utf-8'))

        return response['Items']['DBInstanceAttribute'][0]
Exemple #8
0
def get_rdsdata(AcesskeyID, AcesskeySecret, zone):
    """
       1、获取该区域全部RDS实例详细信息
       2、参数:cn-qingdao、cn-hangzhou、cn-beijing 等
    """
    clt = client.AcsClient(AcesskeyID, AcesskeySecret, zone)
    request = DescribeDBInstanceAttributeRequest()
    # request.setKey()
    request.set_action_name("DescribeDBInstances")
    # 将数据格式化成 json,默认为 XML
    request.set_accept_format('json')
    # 发起请求,获取数据
    # 加了.get获取到的数据是一个列表
    result = json.loads(clt.do_action_with_exception(request)).get('Items').get('DBInstance')
    return result
 def __get_rds_attribute(self, ins_id):
     request = DescribeDBInstanceAttributeRequest()
     request.set_DBInstanceId(ins_id)
     response = self.__do_action(request)
     self.instance_list_total.extend(
         response['Items']['DBInstanceAttribute'])