25 lines
973 B
Plaintext
25 lines
973 B
Plaintext
# 查询可用算力节点
|
|
# params: pool_id (必填), role (可选 control/compute)
|
|
pool_id = params_kw.get('pool_id', '')
|
|
role = params_kw.get('role', '')
|
|
if not pool_id:
|
|
return {'status': 'error', 'message': 'Missing pool_id'}
|
|
|
|
env = request._run_ns
|
|
dbname = env.get_module_dbname('pccs')
|
|
async with DBPools().sqlorContext(dbname) as sor:
|
|
sql = "SELECT * FROM compute_node WHERE pool_id = ${pid}$ AND status = 'available'"
|
|
params = {'pid': pool_id}
|
|
if role:
|
|
sql = sql + " AND node_type = ${role}$"
|
|
params['role'] = role
|
|
sql = sql + " ORDER BY cpu_cores DESC, memory_gb DESC"
|
|
rows = await sor.sqlExe(sql, params)
|
|
result = [{
|
|
'id': r.id, 'name': r.name, 'ip_address': r.ip_address,
|
|
'cpu_cores': r.cpu_cores, 'memory_gb': r.memory_gb,
|
|
'gpu_count': r.gpu_count, 'gpu_type': r.gpu_type,
|
|
'node_type': r.node_type
|
|
} for r in rows]
|
|
return {'status': 'ok', 'data': result, 'total': len(result)}
|