From fdf155c4afcdae35d23be5cd216915c14683ab5c Mon Sep 17 00:00:00 2001 From: Marin Atanasov Nikolov Date: Fri, 30 Jan 2015 10:55:56 +0200 Subject: [PATCH] A VPollerWorker instance now can take advantage of using an expiring cache for managed objects --- src/vpoller/worker.py | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/vpoller/worker.py b/src/vpoller/worker.py index c0c24d5..e198843 100644 --- a/src/vpoller/worker.py +++ b/src/vpoller/worker.py @@ -85,6 +85,8 @@ def __init__(self, config_file, num_workers=0): 'proxy': 'tcp://localhost:10123', 'helpers': None, 'tasks': None, + 'cache_enabled': False, + 'cache_ttl': 3600, } def start(self): @@ -141,7 +143,9 @@ def load_config(self): self.config['proxy'] = parser.get('worker', 'proxy') self.config['helpers'] = parser.get('worker', 'helpers') self.config['tasks'] = parser.get('worker', 'tasks') - + self.config['cache_ttl'] = parser.getint('cache', 'ttl') + self.config['cache_enabled'] = parser.getboolean('cache', 'enabled') + if self.config['helpers']: self.config['helpers'] = self.config['helpers'].split(',') @@ -173,7 +177,9 @@ def start_workers(self): db=self.config.get('db'), proxy=self.config.get('proxy'), helpers=self.config.get('helpers'), - tasks=self.config.get('tasks') + tasks=self.config.get('tasks'), + cache_enabled=self.config.get('cache_enabled'), + cache_ttl=self.config.get('cache_ttl') ) worker.daemon = True self.workers.append(worker) @@ -301,16 +307,20 @@ class VPollerWorker(multiprocessing.Process): run() method """ - def __init__(self, db, proxy, helpers, tasks): + def __init__(self, db, proxy, helpers, tasks, cache_enabled, cache_ttl): """ Initialize a new VPollerWorker object Args: - db (str): Path to the vConnector database file - proxy (str): Endpoint to which vPoller Workers connect - and receive new tasks for processing - helpers (list): A list of helper modules to be loaded - task (list): A list of task modules to be loaded + db (str): Path to the vConnector database file + proxy (str): Endpoint to which vPoller Workers connect + and receive new tasks for processing + helpers (list): A list of helper modules to be loaded + task (list): A list of task modules to be loaded + cache_enabled (bool): If True use an expiring cache for the + managed objects + cache_ttl (int): Time in seconds after which a cached + object is considered as expired """ super(VPollerWorker, self).__init__() @@ -319,6 +329,8 @@ def __init__(self, db, proxy, helpers, tasks): 'proxy': proxy, 'helpers': helpers, 'tasks': tasks, + 'cache_ttl': cache_ttl, + 'cache_enabled': cache_enabled, } self.task_modules = {} self.helper_modules = {} @@ -565,7 +577,9 @@ def create_agents(self): a = VConnector( user=agent['user'], pwd=agent['pwd'], - host=agent['host'] + host=agent['host'], + cache_enabled=self.config.get('cache_enabled'), + cache_ttl=self.config.get('cache_ttl') ) self.agents[a.host] = a logger.info('Created vSphere Agent for %s', agent['host'])