diff options
Diffstat (limited to 'designate/worker/service.py')
-rw-r--r-- | designate/worker/service.py | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/designate/worker/service.py b/designate/worker/service.py index b08cf923..af86cd5c 100644 --- a/designate/worker/service.py +++ b/designate/worker/service.py @@ -41,25 +41,38 @@ class AlsoNotifyTask(object): pass -class Service(service.RPCService, service.Service): +class Service(service.RPCService): RPC_API_VERSION = '1.0' target = messaging.Target(version=RPC_API_VERSION) + def __init__(self): + self._central_api = None + self._storage = None + + self._executor = None + self._pools_map = None + + super(Service, self).__init__( + self.service_name, cfg.CONF['service:worker'].topic, + threads=cfg.CONF['service:worker'].threads, + ) + @property def central_api(self): - if not hasattr(self, '_central_api'): + if not self._central_api: self._central_api = central_api.CentralAPI.get_instance() return self._central_api - def _setup_target_backends(self, pool): + @staticmethod + def _setup_target_backends(pool): for target in pool.targets: # Fetch an instance of the Backend class target.backend = backend.get_backend(target) LOG.info('%d targets setup', len(pool.targets)) - if len(pool.targets) == 0: + if not pool.targets: raise exceptions.NoPoolTargetsConfigured() return pool @@ -97,21 +110,21 @@ class Service(service.RPCService, service.Service): @property def storage(self): - if not hasattr(self, '_storage'): + if not self._storage: storage_driver = cfg.CONF['service:worker'].storage_driver self._storage = storage.get_storage(storage_driver) return self._storage @property def executor(self): - if not hasattr(self, '_executor'): + if not self._executor: # TODO(elarson): Create this based on config self._executor = processing.Executor() return self._executor @property def pools_map(self): - if not hasattr(self, '_pools_map'): + if self._pools_map is None: self._pools_map = {} return self._pools_map @@ -125,6 +138,9 @@ class Service(service.RPCService, service.Service): super(Service, self).start() LOG.info('Started worker') + def stop(self, graceful=True): + super(Service, self).stop(graceful) + def _do_zone_action(self, context, zone): pool = self.get_pool(zone.pool_id) all_tasks = [] |