diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-03-26 08:38:43 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-03-26 08:38:43 +0000 |
commit | ecdb7c20f37c6d26989d53305845bce2fbafbac7 (patch) | |
tree | dd332a269341b0191ac5fd8ad3324fd1b75e5bc4 /ceilometer/service.py | |
parent | f55fcc0e77f2e94fab4acbc320dd9d962f72bf96 (diff) | |
parent | 0f038d2fe22edacb576e2fa82e4243f229098bd0 (diff) | |
download | ceilometer-ecdb7c20f37c6d26989d53305845bce2fbafbac7.tar.gz |
Merge "spawn multiple workers in services"
Diffstat (limited to 'ceilometer/service.py')
-rw-r--r-- | ceilometer/service.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/ceilometer/service.py b/ceilometer/service.py index ac8b413b..26723f09 100644 --- a/ceilometer/service.py +++ b/ceilometer/service.py @@ -28,6 +28,7 @@ from ceilometer.openstack.common import gettextutils from ceilometer.openstack.common.gettextutils import _ # noqa from ceilometer.openstack.common import log from ceilometer.openstack.common import rpc +from ceilometer import utils OPTS = [ @@ -40,6 +41,12 @@ OPTS = [ deprecated_group="collector", default=['database'], help='Dispatcher to process data.'), + cfg.IntOpt('collector_workers', + help='Number of workers for collector service. The default ' + 'will be equal to the number of CPUs available.'), + cfg.IntOpt('notification_workers', + help='Number of workers for notification service. The default ' + 'will be equal to the number of CPUs available.'), ] cfg.CONF.register_opts(OPTS) @@ -88,6 +95,11 @@ cfg.CONF.register_cli_opts(CLI_OPTIONS, group="service_credentials") LOG = log.getLogger(__name__) +class WorkerException(Exception): + """Exception for errors relating to service workers + """ + + class DispatchedService(object): DISPATCHER_NAMESPACE = 'ceilometer.dispatcher' @@ -106,6 +118,17 @@ class DispatchedService(object): self.DISPATCHER_NAMESPACE) +def get_workers(name): + workers = (cfg.CONF.get('%s_workers' % name) or + utils.cpu_count()) + if workers and workers < 1: + msg = (_("%(worker_name)s value of %(workers)s is invalid, " + "must be greater than 0") % + {'worker_name': '%s_workers' % name, 'workers': str(workers)}) + raise WorkerException(msg) + return workers + + def prepare_service(argv=None): gettextutils.install('ceilometer', lazy=True) gettextutils.enable_lazy() |