コード例 #1
0
ファイル: mifeng.py プロジェクト: deassain/Mifeng
    def get_instance_description(self, instance_list):
        """

        :param instance_list: must be of type list
        :return: returns the json response
        """
        request = DescribeInstancesRequest.DescribeInstancesRequest()
        request.set_PageSize(50)
        request.set_InstanceIds(json.dumps(instance_list))
        response = self.client.do_action_with_exception(request)

        result = json.loads(response)
        total_instances = float(result["TotalCount"])
        if total_instances > 50:
            pages = math.ceil(total_instances / 50)
            page = 2
            while (page <= pages):
                request = DescribeInstancesRequest.DescribeInstancesRequest()
                request.set_PageNumber(page)
                request.set_PageSize(50)
                response = self.client.do_action_with_exception(request)
                jsonify = json.loads(response)
                result["Instances"]["Instance"] = result["Instances"][
                    "Instance"] + jsonify["Instances"]["Instance"]
                page = page + 1
        return result
コード例 #2
0
def get_host():
    # 创建request,并设置参数
    request = DescribeInstancesRequest.DescribeInstancesRequest()
    request.set_PageSize(10)
    # 发起API请求并显示返回值
    response = client.do_action_with_exception(request)
    return response
コード例 #3
0
ファイル: DescribeInstances.py プロジェクト: muergou/Modules
def DescribeInstancesPerzone(zoneid):
    clt = client.AcsClient(accesskey['accesskeyid'],accesskey['accesskeysecret'])
    request = DescribeInstancesRequest.DescribeInstancesRequest()
    request.set_accept_format('json')
    request.add_query_param('RegionId', zoneid)
    response = clt.do_action_with_exception(request)
    return response
def getecsconf(ecs_id):
	global name,ecsid,inIP,outIP,networktype,CPU,memory,osname
	clt = client.AcsClient('这里填写ak','这里填写sk','对应地域')

	# 设置参数
	request = DescribeInstancesRequest.DescribeInstancesRequest()
	request.set_accept_format('json')

	request.add_query_param('RegionId', '对应地域')
	request.add_query_param('InstanceIds', ecs_id)

	# 发起请求
	response = clt.do_action(request)

	#print(response)
	data = str(response, encoding = "utf-8")
	ecs = json.loads(data)
	name = str(ecs['Instances']['Instance'][0]['InstanceName'])
	ecsid = str(ecs['Instances']['Instance'][0]['InstanceId'])
	inIP = str(ecs['Instances']['Instance'][0]['VpcAttributes']['PrivateIpAddress']['IpAddress'])[1:-1]
	outIP = str(ecs['Instances']['Instance'][0]['PublicIpAddress']['IpAddress'])[1:-1]
	networktype = str(ecs['Instances']['Instance'][0]['InstanceNetworkType'])
	CPU = int(ecs['Instances']['Instance'][0]['Cpu'])
	memory = int(ecs['Instances']['Instance'][0]['Memory'])
	osname = str(ecs['Instances']['Instance'][0]['OSName'])
コード例 #5
0
    def aliyun_list(self):
        """
        获取阿里云主机SN列表
        :return:
        """
        page_size = 100
        page_number = 1
        true = True
        false = False
        all_ali = []

        while 1:
            request = DescribeInstancesRequest.DescribeInstancesRequest()
            connect = self.aliyun_connect(request, page_size, page_number)
            page_number += 1
            req = eval(connect)
            connect = ''

            if req['Instances']['Instance'] != []:
                all_ali += req['Instances']['Instance']
                # tmplist = req['Instances']['Instance']
                # for info in tmplist:
                #     all_ali.append(info['SerialNumber'])
            else:
                break

        return all_ali
コード例 #6
0
 def describe_instances(self):
     request = DescribeInstancesRequest.DescribeInstancesRequest()
     key_list = ["InstanceName", "InstanceIds"]
     self.vm_params.setdefault("InstanceName",
                               self.vm_params["InstanceName"])
     request = self._add_params(request, key_list, self.vm_params)
     return self._send_request(request)
コード例 #7
0
    def getAliyunEcsInfo(self):
        # 获取ecs实例信息,利用迭代器,可直接遍历函数得到ecs实例信息
        # for a in get_aliyun_ecs(ali_key, ali_secret, region_ids):
        #   for ecs in a:
        #       print(ecs['InstanceId'], ecs['HostName'], ecs['ZoneId'], ecs['PublicIpAddress']['IpAddress'], ecs['InnerIpAddress']['IpAddress'], ecs['StartTime'])
        # ecs instance各字段解释:https://help.aliyun.com/document_detail/25656.html?spm=a2c4g.11186623.2.2.a0TLxW#InstanceAttributesType
        # 设置初始页码
        pageNumber = 1

        # 创建request,并设置参数
        request = DescribeInstancesRequest.DescribeInstancesRequest()
        request.set_accept_format('json')
        request.set_PageSize(10)
        request.set_PageNumber(pageNumber)
        # request.set_
        response = self.client.do_action_with_exception(request)

        # 发起API请求并显示返回值
        response_dict = json.loads(response)

        # 生成生成器
        while response_dict['Instances']['Instance']:
            yield response_dict['Instances']['Instance']
            pageNumber += 1
            request.set_PageNumber(pageNumber)
            response = self.client.do_action_with_exception(request)
            response_dict = json.loads(response)
コード例 #8
0
ファイル: aliyun_utils.py プロジェクト: zhujinhe/myops
def get_aliyun_ecs(region_id):
    """
    获取某个可用区的完整服务器信息列表
    :param region_id:
    :return:
    """
    ecs_instances = []
    page_number = 1
    page_size = 10

    aliyun_client = get_aliyun_client(region_id=region_id)
    # 获取完整的Instances列表
    while True:
        aliyun_request = DescribeInstancesRequest.DescribeInstancesRequest()
        aliyun_request.set_accept_format('json')
        aliyun_request.set_PageSize(page_size)
        aliyun_request.add_query_param('PageNumber', page_number)
        aliyun_request.add_query_param('RegionId', region_id)
        aliyun_response = aliyun_client.do_action_with_exception(
            aliyun_request)
        response_data = json.loads(aliyun_response)

        ecs_instances.extend(response_data['Instances']['Instance'])

        total_count = response_data['TotalCount']
        page_size = response_data['PageSize']

        if total_count < page_number * page_size:
            break

        page_number += 1

    return ecs_instances
コード例 #9
0
 def get_ecs_pubilcIP(self, regions_id):
     page = 1
     errornum = 0
     while True:
         if errornum == 5: break
         try:
             clt = client.AcsClient(self.AccessKeyId, self.AccessKeySecret,
                                    regions_id)
             request = DescribeInstancesRequest.DescribeInstancesRequest()
             request.set_accept_format('json')
             request.set_PageSize(100)
             request.set_PageNumber(page)  # 设置页数
             json_response = json.loads(
                 clt.do_action_with_exception(request))
             if json_response['TotalCount'] > 0 and len(
                     json_response['Instances']['Instance']) > 0:
                 for instance in json_response['Instances']['Instance']:
                     if len(instance['PublicIpAddress']['IpAddress']) > 0:
                         for IpAddress in instance['PublicIpAddress'][
                                 'IpAddress']:
                             self.ip_list.append(IpAddress)
                     elif len(instance['EipAddress']) > 0:
                         if instance['EipAddress']['IpAddress']:
                             self.ip_list.append(
                                 instance['EipAddress']['IpAddress'])
             else:
                 break
             page += 1
         except:
             errornum += 1
             continue
     return
コード例 #10
0
 def delete_all_test_ecs_instance(client):
     mylogger.info("list all ecs instances")
     request = DescribeInstancesRequest.DescribeInstancesRequest()
     request.set_PageNumber(1)
     request.set_PageSize(30)
     content = client.do_action_with_exception(request)
     response = json.loads(content)
     mylogger.info("success! TotalCount = %s", response.get('TotalCount'))
     instances = response.get('Instances').get('Instance')
     for instance in instances:
         instance_name = instance.get('InstanceName')
         if instance_name.startswith('SdkIntegrationTestInstance'):
             create_time = int(instance_name[26:len(instance_name)])
             current_time = int(time.time())
             if create_time - current_time < 3600:
                 mylogger.info(
                     "found undeleted ecs instance(%s) but created in 60 minutes, try to delete next time"
                     % instance_name)
             else:
                 mylogger.info(
                     "found undeleted ecs instance(%s), status=%s, try to delete it."
                     % instance_name, instance['Status'])
                 if instance['Status'] == "Running":
                     # running -> stopped
                     TestEcsIntegration.stop_instance(
                         client, instance['InstanceId'])
                 if instance['Status'] == "Stopped":
                     # stopped -> deleted
                     TestEcsIntegration.delete_instance(
                         client, instance['InstanceId'])
                     # wait
                     TestEcsIntegration.wait_for_instance(
                         client, instance['InstanceId'], 'Deleted')
コード例 #11
0
ファイル: ecs.py プロジェクト: jokimina/aliyunpy
    def list_ecs(self, name_only=False, **kwargs):
        """
        获取实例列表信息
        https://help.aliyun.com/document_detail/25506.html?spm=a2c4g.11186623.6.941.2b453215sQTZIS
        :param name_only:
        :param kwargs:
        :return:
        """
        result_list = []
        request = DescribeInstancesRequest.DescribeInstancesRequest()
        regions = self.get_regions(id_only=True)
        for region in regions:
            request.set_PageSize(100)
            request.set_PageNumber(1)
            for k, v in kwargs.items():
                request.add_query_param(k, v)
            request.add_query_param('RegionId', region)
            result = self.client.do_action(request)
            result_list.extend(result.get('Instances', {}).get('Instance'))

            total_count = float(result.get('TotalCount', 0))
            if not total_count:
                continue
            page_count = float(result.get('PageSize', 1))
            _p = total_count / page_count
            if _p > 1:
                for _p_num in range(2, int(_p) + 2):
                    request.set_PageNumber(_p_num)
                    result = self.client.do_action(request)
                    result_list.extend(result.get('Instances').get('Instance'))

        if name_only:
            result_list = [i['InstanceName'] for i in result_list]
        return result_list
コード例 #12
0
def get_id_name():
    id_name_address = {"cn-beijing": [], "cn-hangzhou": []}
    request = DescribeInstancesRequest.DescribeInstancesRequest()
    for region in region_list:
        request.add_query_param('RegionId', region)
        request.add_query_param('PageSize', 50)
        request.add_query_param('PageNumber', 1)
        response_id_name = get_do_action(request)

        #获取实例数据的总个数和总页数
        totalcount = response_id_name["TotalCount"]
        page = response_id_name["PageSize"]
        total = int(totalcount) // int(page) + 2

        #获取所有实例的完整信息
        if total > 1:
            for t in range(1, total):
                request.add_query_param('PageNumber', t)
                response = get_do_action(request)
                instance = response["Instances"]["Instance"]
                for inst in instance:
                    ip_address = inst.get("EipAddress").get("IpAddress")
                    instanceid = inst.get("InstanceId")
                    instancename = inst.get("InstanceName")
                    #如果绑定公网ip
                    if ip_address:
                        id_name_address[region].append({
                            "instancename": instancename,
                            "instanceid": instanceid,
                            "ipaddress": ip_address
                        })
    return id_name_address
コード例 #13
0
 def selectecsinfo(self,ecsip):
     """查询ecs实例Id"""
     request = DescribeInstancesRequest.DescribeInstancesRequest()
     values = {'RegionId':"cn-hangzhou","InnerIpAddresses":[str(ecsip)]}
     info = self.request_aliyun_api(request,values)
     for i in info["Instances"]["Instance"]:
         return i["InstanceId"]
コード例 #14
0
def desc_instance_status(instance_ids):
    """
    检测实例状态
    Running
    Starting
    Stopping
    Stopped
    :param instance_ids:
    :return:
    """
    request = DescribeInstancesRequest.DescribeInstancesRequest()
    request.set_InstanceIds(instance_ids)
    response = client.do_action_with_exception(request)
    result = json.loads(response)
    # print(result.keys())
    # print(result)
    status = result["Instances"]["Instance"][0]["Status"]
    desc = ""
    if status == "Running":
        desc = "实例运行中... 实例状态: %s"
    elif status == "Starting":
        desc = "实例启动中... 实例状态: %s"
    elif status == "Stopping":
        desc = "实例停止中... 实例状态: %s"
    elif status == "Stopped":
        desc = "实例已停止... 实例状态: %s"
    elif status == "Pending":
        desc = "实例初始化中... 实例状态: %s"
    print(desc % status)
    return status
コード例 #15
0
 def ecs_info(self) -> GaugeMetricFamily:
     req = DescribeECS.DescribeInstancesRequest()
     nested_handler = {
         'InnerIpAddress': lambda obj: try_or_else(lambda: obj['IpAddress'][0], ''),
         'PublicIpAddress': lambda obj: try_or_else(lambda: obj['IpAddress'][0], ''),
         'VpcAttributes': lambda obj: try_or_else(lambda: obj['PrivateIpAddress']['IpAddress'][0], ''),
     }
     return self.info_template(req, 'aliyun_meta_ecs_info', nested_handler=nested_handler)
コード例 #16
0
def get_instance(region):
    client = AcsClient(aliAccessKeyID, aliAccessKeySecret, region)
    request = DescribeInstancesRequest.DescribeInstancesRequest()
    request.set_PageSize(10)
    # 发起 API 请求并打印返回
    response = client.do_action_with_exception(request)
    res_info = json.loads(response.decode('utf-8'))
    return res_info['Instances']['Instance']
コード例 #17
0
ファイル: instances.py プロジェクト: askarymrumhadi/monkey
 def get_instances(self):
     # Create a request and set parameters
     request = DescribeInstancesRequest.DescribeInstancesRequest()
     request.set_PageSize(10)
     # Initiate an API request and display the response value
     response = client.do_action_with_exception(request)
     response = json.loads(response)
     return response['Instances']['Instance']
コード例 #18
0
ファイル: aliyun.py プロジェクト: linux-xiayun/Flask-CMDB
 def InfoList(self):
     request = DescribeInstancesRequest.DescribeInstancesRequest()
     request.set_PageSize(100)
     request.set_accept_format('json')
     response = json.loads(
         self.acs_client.do_action_with_exception(request).decode('utf-8'))
     info_list = response.get('Instances').get('Instance')
     return info_list
コード例 #19
0
ファイル: aliytools.py プロジェクト: pygray/devops
 def get_total_server(self):
     """
     :return: 服务器总数量
     """
     request = DescribeInstancesRequest.DescribeInstancesRequest()
     response = self.client.do_action_with_exception(request)
     ecs_info = json.loads(response.decode("utf-8"))
     total_num_count = ecs_info["TotalCount"]
     return total_num_count
コード例 #20
0
 def get_instanceid(self, ip):
     request = DescribeInstancesRequest.DescribeInstancesRequest()
     request.set_InstanceNetworkType('classic')
     request.set_InnerIpAddresses(ip)
     response = self.client.do_action_with_exception(request)
     response_dic = json.loads(response)
     instance_id = response_dic.get('Instances').get('Instance')[0].get(
         'InstanceId')
     return instance_id
コード例 #21
0
def get_sys_info():
    clt = client.AcsClient('xxx','xxx','cn-hangzhou')
    request = DescribeInstancesRequest.DescribeInstancesRequest()
    #request.set_PageNumber(1)   #设置页数
    request.set_PageSize(50)        #设置每页返回多少,默认为10条
    request.set_accept_format('json')
    result = json.loads(clt.do_action(request)).get('Instances').get('Instance')
    #result = clt.do_action(request)
    return result
コード例 #22
0
    def GetInfo(self, TotalPage):

        data = []

        for PageNum in range(1, TotalPage + int(1)):
            request = DescribeInstancesRequest.DescribeInstancesRequest()
            request.set_PageNumber(PageNum)

            response = json.loads(self.client.do_action_with_exception(request))

            for i in response["Instances"]["Instance"]:
                PublicIp = i["PublicIpAddress"]["IpAddress"]
                EipAddress = i["EipAddress"]["IpAddress"]

                if len(PublicIp) == 0:
                    PublicIpAddress = EipAddress
                else:
                    PublicIpAddress = PublicIp[0]

                try:
                    tagsValues = i["Tags"]["Tag"][0]["TagValue"]
                except KeyError:
                    tagsValues = i["InstanceName"]
                    text = "{} 没有打标签,请登录{} 账号检查。".format(tagsValues, self.Account)
                    slack_send.alert(text)
                    print(text)
                try:
                    tagsKey = i["Tags"]["Tag"][0]["TagKey"]
                except KeyError:
                    tagsKey = i["InstanceName"]
                    text = "{} 没有打标签,请登录{} 账号检查。".format(tagsKey, self.Account)
                    slack_send.alert(text)
                    print(text)

                info = (
                    i["RegionId"],
                    i["ZoneId"],
                    i["InstanceId"],
                    i["InstanceName"],
                    tagsValues,
                    tagsKey,
                    i["NetworkInterfaces"]["NetworkInterface"][0]["PrimaryIpAddress"],
                    PublicIpAddress,
                    i["InternetMaxBandwidthOut"],
                    i["InstanceType"],
                    i["Cpu"],
                    i["Memory"],
                    i["OSType"],
                    i["OSName"],
                    i["Status"],
                    self.Account,
                    i["CreationTime"],
                    i["ExpiredTime"]
                )
                data.append(info)
        return data
コード例 #23
0
def query_ecs_info(instanceids):
    # 设置参数
    request = DescribeInstancesRequest.DescribeInstancesRequest()
    request.set_accept_format('json')
    request.add_query_param('RegionId', 'cn-hangzhou')
    request.add_query_param('InstanceIds', instanceids)

    # 发起请求
    response = clt.do_action(request)
    json_response = json.loads(response)
    print json_response

    # 获取实例区域
    RegionId = json_response['Instances']['Instance'][0]['RegionId']
    # 获取过期时间
    ExpiredTime = json_response['Instances']['Instance'][0]['ExpiredTime']
    # 获取内存大小
    Memory = json_response['Instances']['Instance'][0]['Memory']
    # 获取系统类型
    OSType = json_response['Instances']['Instance'][0]['OSType']
    # 获取实例状态
    Status = json_response['Instances']['Instance'][0]['Status']
    # 获取网络类型
    NetworkType = json_response['Instances']['Instance'][0][
        'InstanceNetworkType']
    # 获取内网IP
    InnerIpAddress = json_response['Instances']['Instance'][0][
        'InnerIpAddress']['IpAddress'][0]
    # 获取实例名称
    InstanceName = json_response['Instances']['Instance'][0]['InstanceName']
    # 获取CPU核数
    Cpu = json_response['Instances']['Instance'][0]['Cpu']
    # 获取公网IP
    try:
        PublicIpAddress = json_response['Instances']['Instance'][0][
            'PublicIpAddress']['IpAddress'][0]
    except:
        PublicIpAddress = ''
    # 获取操作系统版本
    OSName = json_response['Instances']['Instance'][0]['OSName']

    # 存入字典
    dict = {}
    dict['RegionId'] = RegionId
    dict['ExpiredTime'] = ExpiredTime.replace("Z", "").replace("T", " ")
    dict['Memory'] = Memory
    dict['OSType'] = OSType
    dict['Status'] = Status
    dict['NetworkType'] = NetworkType
    dict['InnerIpAddress'] = InnerIpAddress
    dict['InstanceName'] = InstanceName
    dict['Cpu'] = Cpu
    dict['PublicIpAddress'] = PublicIpAddress
    dict['OSName'] = OSName

    return dict
コード例 #24
0
def list_vms(region, ids=None):
    client = create_acs_client(region=region)

    request = DescribeInstancesRequest.DescribeInstancesRequest()
    request.set_action_name('DescribeInstances')
    # request.add_query_param('RegionId', region)
    response = client.do_action_with_exception(request)
    r = json.loads(response.decode())
    log.debug(r)
    return r
コード例 #25
0
ファイル: create_ecs.py プロジェクト: bugbear1982/ChenWork
def getinstance(ids):
    describeInstancesRequest = DescribeInstancesRequest.DescribeInstancesRequest(
    )
    describeInstancesRequest.set_accept_format('json')
    describeInstancesRequest.set_InstanceIds(ids)
    describeInstancesRequest.set_PageNumber(1)
    describeInstancesRequest.set_PageSize(100)
    result = clt.do_action_with_exception(describeInstancesRequest)
    # print result
    return json.loads(result)
コード例 #26
0
 def get_sys_info(self):
     clt = client.AcsClient(self.accessKey, self.accessSecret, self.region)
     request = DescribeInstancesRequest.DescribeInstancesRequest()
     # request.set_PageNumber(1)   #设置页数
     request.set_PageSize(50)  # 设置每页返回多少,默认为10条
     request.set_accept_format('json')
     self.result = json.loads(
         clt.do_action(request)).get('Instances').get('Instance')
     # result = clt.do_action(request)
     return self.result
コード例 #27
0
def get_aliyun_instanceId():
    request = DescribeInstancesRequest.DescribeInstancesRequest()
    request.set_accept_format("JSON")
    total_count = json.loads(
        client.do_action_with_exception(request)).get("TotalCount")
    pagesize = 10
    page_number = get_page_number(total_count, pagesize)
    datas = []
    for num in range(1, page_number + 1):
        data = []
        req = DescribeInstancesRequest.DescribeInstancesRequest()
        req.set_accept_format("JSON")
        request.set_PageSize(pagesize)
        req.set_PageNumber(num)
        instances = json.loads(client.do_action_with_exception(req)).get(
            "Instances").get("Instance")
        data = Conversion_format(instances)
        datas.extend(data)
    return datas
コード例 #28
0
ファイル: create_ecs.py プロジェクト: bugbear1982/ChenWork
def import_alito_dbandzabbix(clt, instance_names):
    describeInstancesRequest = DescribeInstancesRequest.DescribeInstancesRequest(
    )  #获取详细信息
    describeInstancesRequest.set_accept_format('json')
    #describeInstancesRequest.set_InstanceIds(ids)
    #describeInstancesRequest.set_Tags(tags)
    describeInstancesRequest.set_InstanceName(instance_names)
    describeInstancesRequest.set_PageNumber(1)
    describeInstancesRequest.set_PageSize(100)
    result = clt.do_action_with_exception(describeInstancesRequest)
    Ins = json.loads(result)

    zabbix = ZabbixOperate()
    invdb = InventoryDB_Operate(conn, dbtable)

    for ins in Ins["Instances"].get("Instance"):  #.get?
        _instance_id = str(ins["InstanceId"])
        _instance_name = ins["InstanceName"]
        _instance_name_format = _instance_name.replace('-', '_')
        _instance_type = str(ins["InstanceTypeFamily"])

        try:
            _instance_innerip = str(ins["VpcAttributes"].get(
                "PrivateIpAddress").get("IpAddress")[0])
        except IndexError:
            _instance_innerip = str(ins["InnerIpAddress"].get("IpAddress")[0])

        try:
            _instance_outterip = (str(ins["EipAddress"]["IpAddress"])
                                  if ins["EipAddress"]["IpAddress"] else str(
                                      ins["PublicIpAddress"]["IpAddress"][0]))
        except IndexError:
            _instance_outterip = ""
        try:
            _project_name = _instance_name_format.split('_')[0]
            _region_alias = _instance_name_format.split('_')[1]
        except Exception, e:
            _project_name = "other"
            _region_alias = "unknown"
#import to db
        print(_project_name, _region_alias, _instance_id, _instance_name,
              _instance_innerip, _instance_outterip, _instance_type)
        invdb.import_instance(_project_name, _region_alias, _instance_id,
                              _instance_name, _instance_innerip,
                              _instance_outterip, _instance_type)

        #add to zabbix
        if '_SG_Ali_' in _instance_name:
            proxytype = "alisg"
            zabbix.host_add_viaproxy(_instance_name, _instance_innerip,
                                     proxytype)
        elif '_FK_Ali_' in _instance_name:
            proxytype = "alifk"
            zabbix.host_add_viaproxy(_instance_name, _instance_innerip,
                                     proxytype)
コード例 #29
0
def update_ecs_info(instance_id):
    # 设置参数
    request = DescribeInstancesRequest.DescribeInstancesRequest()
    request.set_accept_format('json')
    request.add_query_param('RegionId', 'cn-hangzhou')
    request.add_query_param('InstanceIds', instance_id)

    # 发起请求
    response = clt.do_action(request)
    json_response = json.loads(response)

    # 获取实例区域
    region_id = json_response['Instances']['Instance'][0]['RegionId']
    # 获取过期时间
    expire_time = json_response['Instances']['Instance'][0]['ExpiredTime']
    # 获取内存大小
    memory = json_response['Instances']['Instance'][0]['Memory']
    # 获取系统类型
    os_type = json_response['Instances']['Instance'][0]['OSType']
    # 获取实例状态
    status = json_response['Instances']['Instance'][0]['Status']
    # 获取网络类型
    network_type = json_response['Instances']['Instance'][0][
        'InstanceNetworkType']
    # 获取内网IP
    inner_ip_address = json_response['Instances']['Instance'][0][
        'InnerIpAddress']['IpAddress'][0]
    # 获取实例名称
    instance_name = json_response['Instances']['Instance'][0]['InstanceName']
    # 获取CPU核数
    cpu = json_response['Instances']['Instance'][0]['Cpu']
    # 获取公网IP
    try:
        public_ip_address = json_response['Instances']['Instance'][0][
            'PublicIpAddress']['IpAddress'][0]
    except:
        public_ip_address = ''
    # 获取操作系统版本
    os_name = json_response['Instances']['Instance'][0]['OSName']

    # 存入字典
    dict = {}
    dict['RegionId'] = region_id
    dict['ExpiredTime'] = expire_time.replace("Z", "").replace("T", " ")
    dict['Memory'] = memory
    dict['OSType'] = os_type
    dict['Status'] = status
    dict['NetworkType'] = network_type
    dict['InnerIpAddress'] = inner_ip_address
    dict['InstanceName'] = instance_name
    dict['Cpu'] = cpu
    dict['PublicIpAddress'] = public_ip_address
    dict['OSName'] = os_name

    return dict
コード例 #30
0
def ecs_instance_list_request(region=DEFAULT_CONFIG['region_id'],zone_id=''):
    """ECS封装API-获取主机列表
    """
    # 创建 request,并设置参数
    request = DescribeInstancesRequest.DescribeInstancesRequest()
    request.set_PageSize(PAGE_SIZE)
    request.set_PageNumber(PAGE_NUM)
    if zone_id:
        request.set_ZoneId(zone_id)
    # 发起 API 请求并返回数据
    return _do_action(_get_config(region), request)