98 lines
3.5 KiB
Plaintext
98 lines
3.5 KiB
Plaintext
async def get_cpcworker(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 = get_module_dbname('cpcc')
|
|
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_nodes"
|
|
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=500,
|
|
verify=False
|
|
)
|
|
status_code = await_resp.get('status_code',505)
|
|
if status_code != 200:
|
|
return {'status': False, 'msg': f'算力中心服务操作失败{status_code}'}
|
|
resp = await_resp.get("content")
|
|
debug(f"pcapi返回值: {json.loads(resp)=}")
|
|
data = json.loads(resp).get('data')
|
|
if json.loads(resp).get("status") == True:
|
|
#node_ns = {
|
|
# 'id':nodeid,
|
|
# 'node_status':'1',
|
|
# 'clusterid':clusterid,
|
|
# 'cpcid':cpcid
|
|
#}
|
|
#debug(f"更新新增工作节点元数据 {node_ns=}")
|
|
#await sor.U('cpcnode', node_ns)
|
|
return {'status': True,'msg': '获取集群实时成员节点成功','data': data}
|
|
else:
|
|
return {'status': False,'msg': '集群准备中,获取集群实时成员节点失败'}
|
|
|
|
return {'status': False,'msg': '其它错误'}
|
|
|
|
ret = await get_cpcworker(params_kw)
|
|
return ret |