def get_pools(computer): """list pools to which computer belongs""" engine_pools = [] pools = ComputerPool.query_pool_list() for pool in pools: if type(pool['engine_ids']).__name__ == 'list': if computer in pool['engine_ids']: engine_pools.append(pool['name']) return engine_pools
def query_engines_of_pool(self, pool_name): """Return available engines of certain pool.""" pool_computers = self.ip_client.ids if pool_name != None: computers = DrQueueComputerPool.query_pool_members(pool_name) if computers == None: raise ValueError('Pool "%s" is not existing!' % pool_name) return False for comp in pool_computers: if not comp in computers: pool_computers.remove(comp) if pool_computers == []: raise ValueError("No computer of pool %s is available!" % pool_name) return False print ("DEBUG: matching pool: " + pool_name) print (pool_computers) return pool_computers
def set_pools(computer, pool_list): """add computer to list of pools""" if type(pool_list).__name__ != 'list': raise ValueError("argument is not of type list") return False # prepare list of pools of which computer should be taken out old_pools = Computer.get_pools(computer) old_pools_to_delete = old_pools for pool_name in pool_list: # remove name from list if pool_name in old_pools_to_delete: old_pools_to_delete.remove(pool_name) # look if pool is already existing pool = ComputerPool.query_pool_by_name(pool_name) # create new pool if not existing if pool == None: pool = ComputerPool(pool_name, [computer]) # store information in db ComputerPool.store_db(pool) # pool is already existing else: # look if computer is already in pool if computer in pool['engine_ids']: print("Computer %i is already in pool %s" % (computer, pool_name)) else: # add computer to pool print("Computer %i added to pool %s" % (computer, pool_name)) pool['engine_ids'].append(computer) # update information in db ComputerPool.update_db(pool) # work on list of old pools for pool_name in old_pools_to_delete: pool = ComputerPool.query_pool_by_name(pool_name) if pool != None: print("Computer %i removed from pool %s" % (computer, pool_name)) pool['engine_ids'].remove(computer) # update information in db ComputerPool.update_db(pool) return True