# 查询可用算力节点 # 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)}