kboss/b/cpcc/cpcpod/get_cpcpod.dspy
2025-07-16 14:27:17 +08:00

88 lines
3.1 KiB
Plaintext

async def get_cpcpod(params_kw={}):
ns = params_kw.copy()
debug(f'资源实例看板接口输入参数:{ns=}')
#{'_webbricks_': '1', 'width': '1139', 'height': '940', '_is_mobile': '0',
#'clusterid': '4hBm8atruISOU2bs24t_N', 'cpcid': 'AROU9udKtPNyh0AZtO_WY', 'page': '1', 'rows': '160'}
cpcid = params_kw.cpcid
clusterid = params_kw.clusterid
# 写数据库的步骤先pass
dbname = 'kboss'
db = DBPools()
async with db.sqlorContext(dbname) as sor:
# 通过算力中心ID,获取算力中心部署所在设备的http(s)协议信息
cpcs = await sor.R('cpclist', {'id':cpcid})
if len(cpcs) < 1:
e = Exception(f'cpclist {cpcid=} not exists')
exception(f'{e}')
raise e
cpc = cpcs[0]
# 通过集群ID,获取算力集群控制节点所在设备的ssh协议参数
cpclusters = await sor.R('cpccluster', {'id':clusterid})
if len(cpclusters) < 1:
e = Exception(f'cpclist {clusterid=} not exists')
exception(f'{e}')
raise e
cpcluster = cpclusters[0]
nodeid = cpcluster.get("controllerid")
kubeconfig = cpcluster.get("kubeconfig")
nodes = await sor.R('cpcnode', {'id':nodeid})
# 这里有问题:没有匹配到节点信息!!!
if len(nodes) < 1:
e = Exception(f'cpcnode {nodeid=} 节点基础信息不匹配')
exception(f'{e}')
raise e
node = nodes[0]
url = cpc.pcapi_url + "/pcapi/api/v1/cluster/common/get_cluster_pods"
debug(f"请求url: {url=}")
debug(f"目标IP认证信息: {node.ip=} {node.sshport=} {node.adminuser=} {node.adminpwd=}")
# 请求方式待定,取决于获取参数值方式
headers = basic_auth_headers(cpc.api_user, cpc.api_pwd)
hc = HttpClient()
import requests
params = {
'host':node.ip,
'port':node.sshport,
'user':node.adminuser,
'password':node.adminpwd,
'kubeconfig':kubeconfig
}
debug(f'请求参数{params=}')
#resp = await hc.request(url, method='GET',
# headers = headers,
# data=params
#)
# 框架不支持超时时间
#resp = requests.post(url,
# headers = headers,
# data=params,
# timeout=1.5,
# verify=False
#)
await_resp = await async_post(
url=url,
headers=headers,
data=params,
timeout=1,
verify=False
)
resp = await_resp.get("content")
debug(f"pcapi返回值: {json.loads(resp)=}")
data = json.loads(resp).get('data')
if json.loads(resp).get("status") == True:
return {'status': True,'msg': '获取集群实时资源实例成功','data': data}
else:
return {'status': False,'msg': '获取集群实时资源实例失败1'}
return {'status': False,'msg': '获取集群实时资源实例失败2'}
ret = await get_cpcpod(params_kw)
return ret