pool_id = params_kw.get('pool_id','') try: async with DBPools().sqlorContext(get_module_dbname('pcpool')) as sor: if pool_id: nodes = await sor.R('compute_node', {'pool_id': pool_id}) else: nodes = await sor.R('compute_node', {}) assigned_ids = set() try: async with DBPools().sqlorContext(get_module_dbname('pcc')) as sor: assigned = await sor.R('cluster_node', {}) assigned_ids = set(str(a.node_id) for a in (assigned or [])) except: pass available = [{'value': str(n.id), 'text': str(n.name)} for n in (nodes or []) if str(n.id) not in assigned_ids] return available except: return []