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

48 lines
2.2 KiB
Plaintext

async def ecs_list(ns={}):
import aiohttp
NETWORK_URL = 'http://api.capitalonline.net/ecs/v1'
action = 'DescribeInstanceList'
method = "GET"
param = {
'AvailableZoneCode': ns.get('AvailableZoneCode') if ns.get('AvailableZoneCode') else '',
'VpcId': ns.get('VpcId') if ns.get('VpcId') else '',
'SearchInfo': ns.get('SearchInfo') if ns.get('SearchInfo') else '',
# 'PageNumber': int(ns.get('PageNumber')) if ns.get('PageNumber') else '',
# 'PageSize': int(ns.get('PageSize')) if ns.get('PageSize') else '',
}
url = get_signature(action, method, NETWORK_URL, param=param)
async with aiohttp.ClientSession() as session:
async with session.request(method, url) as response:
resp = await response.text()
result = json.loads(resp)
if result['Code'] == 'Success':
result['status'] = True
result.pop('Code')
result['data'] = result.pop('Data')
ecs_new_li = []
for ecs_detail in result['data']['EcsList']:
if ns['orgid'] == ecs_detail['EcsName'].split('0_____0')[0]:
ecs_detail['EcsName'] = ecs_detail['EcsName'].split('0_____0')[1]
ecs_detail['VpcName'] = ecs_detail['VpcName'].split('0_____0')[1]
for sgroup in ecs_detail['SecurityGroup']:
if '0_____0' in sgroup['SecurityGroupName']:
sgroup['SecurityGroupName'] = sgroup['SecurityGroupName'].split('0_____0')[1]
ecs_new_li.append(ecs_detail)
result['data']['EcsList'] = ecs_new_li
result['TotalCount'] = len(ecs_new_li)
if result.get('Message'):
result['msg'] = result.pop('Message')
else:
result['msg'] = result.pop('Msg')
else:
result['status'] = False
if result.get('Message'):
result['msg'] = result.pop('Message')
else:
result['msg'] = result.pop('Msg')
return result
ret = await ecs_list(params_kw)
return ret