pcpool/wwwroot/api/node_list_available.dspy

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)}