def lookup_pool(self, respool_path): request = respool.LookupRequest(path=respool.ResourcePoolPath( value=respool_path)) try: resp = self.client.respool_svc.LookupResourcePoolID( request, metadata=self.client.resmgr_metadata, timeout=default_timeout, ) return resp.id.value except Exception as e: print_fail("Failed to get resource pool by path %s: %s" % (respool_path, str(e))) raise
def ensure_respool(self): # lookup respool request = respool.LookupRequest(path=respool.ResourcePoolPath( value="/" + RESPOOL_PATH)) resp = self.peloton_client.respool_svc.LookupResourcePoolID( request, metadata=self.peloton_client.resmgr_metadata, timeout=default_timeout, ) respool_id = resp.id.value if not respool_id: raise ResPoolNotFoundException return respool_id
def deallocate_pools(client): ''' Deallocate all resource pools of the given client ''' # query resource pool and delete all of them for resource_pool in query_pools(client): if resource_pool.id.value == "root": continue delete_request = respool.DeleteRequest(path=respool.ResourcePoolPath( value=resource_pool.path.value)) resp = client.respool_svc.DeleteResourcePool( delete_request, metadata=client.resmgr_metadata, timeout=10, )
def ensure_exists(self): """ creates a resource pool if it doesn't exist based on the config :return: resource pool ID """ respool_name = self.config.respool_config.name request = respool.LookupRequest( path=respool.ResourcePoolPath(value=RESPOOL_ROOT + respool_name) ) resp = self.client.respool_svc.LookupResourcePoolID( request, metadata=self.client.resmgr_metadata, timeout=self.config.rpc_timeout_sec, ) if resp.id.value is None or resp.id.value == u"": request = respool.CreateRequest(config=self.config.respool_config) attempts = 0 while attempts < self.config.max_retry_attempts: attempts += 1 resp = self.client.respool_svc.CreateResourcePool( request, metadata=self.client.resmgr_metadata, timeout=self.config.rpc_timeout_sec, ) if resp.HasField("error"): log.debug( "failed to create respool %s (%s)", respool_name, resp.error, ) time.sleep(self.config.sleep_time_sec) continue break else: assert False, resp id = resp.result.value log.info("created respool %s (%s)", respool_name, id) else: id = resp.id.value log.info("found respool %s (%s)", respool_name, id) assert id self.id = id return self.id
def delete(self): """ deletes the resource pool, all the jobs in the pool must be stopped before calling it. """ if not self.id: return respool_name = self.config.respool_config.name request = respool.DeleteRequest( path=respool.ResourcePoolPath(value=RESPOOL_ROOT + respool_name), ) resp = self.client.respool_svc.DeleteResourcePool( request, metadata=self.client.resmgr_metadata, timeout=self.config.rpc_timeout_sec, ) assert not resp.HasField('error'), resp log.info('deleted respool: %s', respool_name)
def ensure_exists(self): """ creates a resource pool if it doesn't exist based on the config :return: resource pool ID """ respool_name = self.config.respool_config.name request = respool.LookupRequest( path=respool.ResourcePoolPath(value=RESPOOL_ROOT + respool_name), ) resp = self.client.respool_svc.LookupResourcePoolID( request, metadata=self.client.resmgr_metadata, timeout=self.config.rpc_timeout_sec, ) if resp.id.value is None or resp.id.value == u'': request = respool.CreateRequest( config=self.config.respool_config, ) deadline = time.time() + self.config.rpc_timeout_sec while time.time() < deadline: resp = self.client.respool_svc.CreateResourcePool( request, metadata=self.client.resmgr_metadata, timeout=self.config.rpc_timeout_sec, ) if resp.HasField('error'): time.sleep(0.5) continue break else: assert False, resp id = resp.result.value log.info('created respool %s (%s)', respool_name, id) else: id = resp.id.value log.info('found respool %s (%s)', respool_name, id) assert id self.id = id return self.id