EMR查询可用去zone的demo

demo:

import sys
import json
from typing import List

from alibabacloud_emr20160408.client import Client as Emr20160408Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_emr20160408 import models as emr_20160408_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
        access_key_id: str,
        access_key_secret: str,
    ) -> Emr20160408Client:
        """
        使用AK&SK初始化账号Client
        @param access_key_id:
        @param access_key_secret:
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config(
            # 您的 AccessKey ID,
            access_key_id=access_key_id,
            # 您的 AccessKey Secret,
            access_key_secret=access_key_secret
        )
        # 访问的域名
        config.endpoint = f'emr.aliyuncs.com'
        return Emr20160408Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:

        list1 = []
        list_copmpare = []

        destination_resource = ['SystemDisk','DataDisk','InstanceType']  #目标资源
        cluster_type = ['HADOOP','KAFKA','DATA SCIENCE','DRUID','FLINK','GATEWAY','CLICKHOUSE','SHUFFLE_SERVICE','EMR_STUDIO']  #集群类型
        instance_charge_type = ['PostPaid','PrePaid']  #付费类型


        client = Sample.create_client(AK,SK)

        for x in range(len(destination_resource)):
            for y in range(len(cluster_type)):
                for z in range(len(instance_charge_type)):
                    list_emr_available_resource_request = emr_20160408_models.ListEmrAvailableResourceRequest(
                        region_id='cn-shanghai',
                        destination_resource=destination_resource[x],
                        cluster_type=cluster_type[y],
                        instance_charge_type=instance_charge_type[z],

                    )
                    runtime = util_models.RuntimeOptions()

                    try:
                        str1 = str(client.list_emr_available_resource_with_options(list_emr_available_resource_request, runtime))

                    except Exception as e:
                        condition = destination_resource[x] + '/' + cluster_type[y] + '/' + instance_charge_type[z]
                        # print('出错了,条件为:%s'%condition )
                    else:
                        # print(json.loads(str))
                        res = str1.replace('\'','\"')
                        res1 = json.loads(res)
                        # print(res1)


                        for i in range(len(res1['body']['EmrZoneInfoList']['EmrZoneInfo'])):
                            zoneid = res1['body']['EmrZoneInfoList']['EmrZoneInfo'][i]['ZoneId']
                            # print(zoneid)
                            a = res1['body']['EmrZoneInfoList']['EmrZoneInfo']
                            for j in range(len(a[i]['EmrResourceInfoList']['EmrResourceInfo'])):
                                type1 = a[i]['EmrResourceInfoList']['EmrResourceInfo'][j]['Type']
                                b = a[i]['EmrResourceInfoList']['EmrResourceInfo']
                                if type1 == None:
                                    continue
                                for k in range(len(b[j]['SupportedResourceList']['SupportedResource'])):
                                    value = b[j]['SupportedResourceList']['SupportedResource'][k]['Value']      #instancetype
                                    c = b[j]['SupportedResourceList']['SupportedResource']
                                    if c[k]['SupportNodeTypeList']['SupportNodeType'] == []:
                                        SupportNodeType='None'
                                    else:
                                        SupportNodeType = str(c[k]['SupportNodeTypeList']['SupportNodeType'])

                                    str3 = zoneid + '/' +  'EMR' + '/' + destination_resource[x] + '/' + cluster_type[y] + '/' + type1 + '/'+ SupportNodeType + '/' + value
                                    str_compare = zoneid + '/' + type1 + '/' + SupportNodeType
                                    if str_compare not in list_copmpare:
                                        list1.append(str3)
                                        list_copmpare.append(str_compare)

                                    else:
                                        continue


        return list_emr
        #记得可用区 H换成K
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值