From 3c01ccefd52a24bf112691d0273c0cbd465733ff Mon Sep 17 00:00:00 2001 From: Julien Danjou Date: Tue, 26 Jun 2012 14:26:57 +0200 Subject: [PATCH] Split service preparation, periodic interval configurable Change-Id: I71d1e81e2b2347fb7e3ba2edfa7f21eb9cffb401 Signed-off-by: Julien Danjou --- bin/ceilometer-agent | 21 +++++---------------- bin/ceilometer-collector | 11 ++++------- ceilometer/service.py | 32 ++++++++++++++++++++++++++++++++ tests/test_service.py | 27 +++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 23 deletions(-) create mode 100644 ceilometer/service.py create mode 100644 tests/test_service.py diff --git a/bin/ceilometer-agent b/bin/ceilometer-agent index f59940ee..5abb6320 100755 --- a/bin/ceilometer-agent +++ b/bin/ceilometer-agent @@ -19,30 +19,19 @@ import eventlet eventlet.monkey_patch() - import sys -from nova import flags +from ceilometer.service import prepare_service +from ceilometer.openstack.common import cfg from nova import service -from nova import utils -from ceilometer import log + if __name__ == '__main__': - flags.parse_args(sys.argv) - log.setup() - utils.monkey_patch() + prepare_service(sys.argv) server = \ service.Service.create(binary='ceilometer-agent', topic='ceilometer.agent', manager='ceilometer.agent.manager.AgentManager', - # FIXME(dhellmann): The - # periodic_interval is set very - # short for development. After we - # fix the configuration loading we - # can use the config file to - # adjust it and remove this - # hard-coded value. - periodic_interval=10, - ) + periodic_interval=cfg.CONF.periodic_interval) service.serve(server) service.wait() diff --git a/bin/ceilometer-collector b/bin/ceilometer-collector index b890171b..4eb542cb 100755 --- a/bin/ceilometer-collector +++ b/bin/ceilometer-collector @@ -19,18 +19,15 @@ import eventlet eventlet.monkey_patch() - import sys -from nova import flags +from ceilometer.service import prepare_service +from ceilometer.openstack.common import cfg from nova import service -from nova import utils -from ceilometer import log + if __name__ == '__main__': - flags.parse_args(sys.argv) - log.setup() - utils.monkey_patch() + prepare_service(sys.argv) server = \ service.Service.create(binary='ceilometer-collector', topic='ceilometer.collector', diff --git a/ceilometer/service.py b/ceilometer/service.py new file mode 100644 index 00000000..9318f95c --- /dev/null +++ b/ceilometer/service.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- +# +# Copyright © 2012 eNovance +# +# Author: Julien Danjou +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from ceilometer import log +from ceilometer.openstack.common import cfg + +cfg.CONF.register_opts([ + cfg.IntOpt('periodic_interval', + default=60, + help='seconds between running periodic tasks') +]) + + +def prepare_service(argv=[]): + cfg.CONF(argv[1:]) + log.setup() diff --git a/tests/test_service.py b/tests/test_service.py new file mode 100644 index 00000000..91bfe12d --- /dev/null +++ b/tests/test_service.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- +# +# Copyright © 2012 eNovance +# +# Author: Julien Danjou +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import unittest + +from ceilometer import service + + +class ServiceTestCase(unittest.TestCase): + def test_prepare_service(self): + service.prepare_service()