62 lines
2.8 KiB
Plaintext
62 lines
2.8 KiB
Plaintext
async def DescribeAvailableResource(ns):
|
||
"""
|
||
计算资源的库存信息 包含 DescribeInstanceTypes(服务器规格信息)
|
||
instance_charge_type= PostPaid(默认):按量计费 | PrePaid:包年包月
|
||
zone_id= 可用地区id
|
||
"""
|
||
configuration = volcenginesdkcore.Configuration()
|
||
configuration.ak = "AKLTOTc3ODVmNWNlZjBhNDM4ZDhhNzczZmZiNDRkYTY5Zjg"
|
||
configuration.sk = "TldNMlpHSmlOVGt6TkRGbE5EUXdNRGhqTlRVM1lUSTNNRGs0TmpJMVlUVQ=="
|
||
configuration.region = "cn-beijing"
|
||
# set default configuration
|
||
volcenginesdkcore.Configuration.set_default(configuration)
|
||
api_instance = volcenginesdkecs.ECSApi()
|
||
data_list = []
|
||
data_statusAvailable = []
|
||
resps = ''
|
||
try:
|
||
#判断前段传递是否有分页数据,没有就证明是第一次进页面
|
||
if not ns.get('data_statusAvailable'):
|
||
data = volcenginesdkecs.DescribeAvailableResourceRequest(
|
||
destination_resource = 'InstanceType',
|
||
instance_charge_type = ns['instance_charge_type'],
|
||
# zone_id = 'cn-beijing-a'
|
||
)
|
||
resps = api_instance.describe_available_resource(data).to_dict()
|
||
for i in resps['available_zones']:
|
||
for j in i['available_resources']:
|
||
data_list.extend(j['supported_resources'])
|
||
for i in data_list:
|
||
if i['status'] == 'Available':
|
||
if i not in data_statusAvailable:
|
||
#携带参数如果有实例类型
|
||
if ns.get('types'):
|
||
typea = (i['value'].split('.'))[1]
|
||
if typea in ns.get('types'):
|
||
data_statusAvailable.append(i)
|
||
else:
|
||
data_statusAvailable.append(i)
|
||
#携带参数有实例类型判断
|
||
"""
|
||
服务器规格信息
|
||
next_token = 上页次返回的分页标识next_token
|
||
data_statusAvailable = 每页10条数据id 前端获取
|
||
"""
|
||
instance_type_ids = []
|
||
if ns.get('data_statusAvailable'):
|
||
for i in data_statusAvailable:
|
||
instance_type_ids.append(i['value'])
|
||
else:
|
||
#第一次请求时构造10条数据返回
|
||
for i in data_statusAvailable[:10]:
|
||
instance_type_ids.append(i['value'])
|
||
data = volcenginesdkecs.DescribeInstanceTypesRequest(
|
||
instance_type_ids=instance_type_ids
|
||
)
|
||
resp = api_instance.describe_instance_types(data)
|
||
return {"status":True,'data':resp.to_dict(),'list':data_statusAvailable}
|
||
except ApiException as e:
|
||
return {'status': False, 'msg': "Exception when calling api: %s\n" % e}
|
||
|
||
ret = await DescribeAvailableResource(params_kw)
|
||
return ret |