kboss/b/volcengine/DescribeAvailableResource.dspy
2025-07-16 14:27:17 +08:00

62 lines
2.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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