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
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
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 信息失败!!!')
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
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
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]
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'])