summaryrefslogtreecommitdiff
path: root/ceilometer/service.py
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-03-26 08:38:43 +0000
committerGerrit Code Review <review@openstack.org>2014-03-26 08:38:43 +0000
commitecdb7c20f37c6d26989d53305845bce2fbafbac7 (patch)
treedd332a269341b0191ac5fd8ad3324fd1b75e5bc4 /ceilometer/service.py
parentf55fcc0e77f2e94fab4acbc320dd9d962f72bf96 (diff)
parent0f038d2fe22edacb576e2fa82e4243f229098bd0 (diff)
downloadceilometer-ecdb7c20f37c6d26989d53305845bce2fbafbac7.tar.gz
Merge "spawn multiple workers in services"
Diffstat (limited to 'ceilometer/service.py')
-rw-r--r--ceilometer/service.py23
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()