Eventlet monkeypatch must be done before anything
This patch ensure eventlet have patched modules before they are loaded and used. Closes-bug: #1288878 Change-Id: Ieb1fc252bde94a19fdba14a87c9f97848208bdc5
This commit is contained in:
parent
79bb83f340
commit
78331c079b
@ -28,13 +28,11 @@ from stevedore import extension
|
||||
from ceilometer.alarm.partition import coordination
|
||||
from ceilometer.alarm import rpc as rpc_alarm
|
||||
from ceilometer.openstack.common.gettextutils import _ # noqa
|
||||
from ceilometer.openstack.common import importutils
|
||||
from ceilometer.openstack.common import log
|
||||
from ceilometer.openstack.common import network_utils
|
||||
from ceilometer.openstack.common.rpc import dispatcher as rpc_dispatcher
|
||||
from ceilometer.openstack.common.rpc import service as rpc_service
|
||||
from ceilometer.openstack.common import service as os_service
|
||||
from ceilometer import service
|
||||
|
||||
|
||||
OPTS = [
|
||||
@ -45,9 +43,6 @@ OPTS = [
|
||||
' collection of underlying metrics.',
|
||||
deprecated_opts=[cfg.DeprecatedOpt(
|
||||
'threshold_evaluation_interval', group='alarm')]),
|
||||
cfg.StrOpt('evaluation_service',
|
||||
default='ceilometer.alarm.service.SingletonAlarmService',
|
||||
help='Class to launch as alarm evaluation service.'),
|
||||
]
|
||||
|
||||
cfg.CONF.register_opts(OPTS, group='alarm')
|
||||
@ -139,12 +134,6 @@ class SingletonAlarmService(AlarmService, os_service.Service):
|
||||
'value': True}])
|
||||
|
||||
|
||||
def alarm_evaluator():
|
||||
service.prepare_service()
|
||||
eval_service = importutils.import_object(cfg.CONF.alarm.evaluation_service)
|
||||
os_service.launch(eval_service).wait()
|
||||
|
||||
|
||||
cfg.CONF.import_opt('host', 'ceilometer.service')
|
||||
|
||||
|
||||
@ -282,9 +271,3 @@ class AlarmNotifierService(rpc_service.Service):
|
||||
data.get('current'),
|
||||
data.get('reason'),
|
||||
data.get('reason_data'))
|
||||
|
||||
|
||||
def alarm_notifier():
|
||||
service.prepare_service()
|
||||
os_service.launch(AlarmNotifierService(
|
||||
cfg.CONF.host, 'ceilometer.alarm')).wait()
|
||||
|
@ -30,7 +30,6 @@ from ceilometer.api import config as api_config
|
||||
from ceilometer.api import hooks
|
||||
from ceilometer.api import middleware
|
||||
from ceilometer.openstack.common import log
|
||||
from ceilometer import service
|
||||
from ceilometer import storage
|
||||
|
||||
LOG = log.getLogger(__name__)
|
||||
@ -122,9 +121,7 @@ def get_server_cls(host):
|
||||
return server_cls
|
||||
|
||||
|
||||
def start():
|
||||
service.prepare_service()
|
||||
|
||||
def build_server():
|
||||
# Build the WSGI app
|
||||
root = VersionSelectorApplication()
|
||||
|
||||
@ -144,5 +141,4 @@ def start():
|
||||
else:
|
||||
LOG.info(_("serving on http://%(host)s:%(port)s") % (
|
||||
{'host': host, 'port': port}))
|
||||
|
||||
srv.serve_forever()
|
||||
return srv
|
||||
|
@ -21,8 +21,6 @@ from oslo.config import cfg
|
||||
|
||||
from ceilometer import agent
|
||||
from ceilometer.openstack.common import log
|
||||
from ceilometer.openstack.common import service as os_service
|
||||
from ceilometer import service
|
||||
|
||||
cfg.CONF.import_group('service_credentials', 'ceilometer.service')
|
||||
|
||||
@ -46,8 +44,3 @@ class AgentManager(agent.AgentManager):
|
||||
insecure=cfg.CONF.service_credentials.insecure)
|
||||
|
||||
super(AgentManager, self).interval_task(task)
|
||||
|
||||
|
||||
def agent_central():
|
||||
service.prepare_service()
|
||||
os_service.launch(AgentManager()).wait()
|
||||
|
@ -19,19 +19,102 @@
|
||||
|
||||
"""Command line tool for creating meter for Ceilometer.
|
||||
"""
|
||||
|
||||
import logging
|
||||
import sys
|
||||
|
||||
import eventlet
|
||||
# NOTE(jd) We need to monkey patch the socket and select module for,
|
||||
# at least, oslo.rpc, otherwise everything's blocked on its first read()
|
||||
# or select()
|
||||
eventlet.monkey_patch(socket=True, select=True)
|
||||
|
||||
|
||||
from oslo.config import cfg
|
||||
|
||||
from ceilometer.alarm import service as alarm_service
|
||||
from ceilometer.api import app
|
||||
from ceilometer.central import manager as central_manager
|
||||
from ceilometer import collector
|
||||
from ceilometer.compute import manager as compute_manager
|
||||
from ceilometer import notification
|
||||
from ceilometer.openstack.common import context
|
||||
from ceilometer.openstack.common import importutils
|
||||
from ceilometer.openstack.common import service as os_service
|
||||
from ceilometer.openstack.common import timeutils
|
||||
from ceilometer import pipeline
|
||||
from ceilometer import sample
|
||||
from ceilometer import service
|
||||
from ceilometer import storage
|
||||
from ceilometer import transformer
|
||||
|
||||
OPTS = [
|
||||
cfg.StrOpt('evaluation_service',
|
||||
default='ceilometer.alarm.service.SingletonAlarmService',
|
||||
help='Class to launch as alarm evaluation service.'),
|
||||
]
|
||||
|
||||
cfg.CONF.register_opts(OPTS, group='alarm')
|
||||
cfg.CONF.import_opt('time_to_live', 'ceilometer.storage',
|
||||
group='database')
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def alarm_notifier():
|
||||
service.prepare_service()
|
||||
os_service.launch(alarm_service.AlarmNotifierService(
|
||||
cfg.CONF.host, 'ceilometer.alarm')).wait()
|
||||
|
||||
|
||||
def alarm_evaluator():
|
||||
service.prepare_service()
|
||||
eval_service = importutils.import_object(cfg.CONF.alarm.evaluation_service)
|
||||
os_service.launch(eval_service).wait()
|
||||
|
||||
|
||||
def agent_central():
|
||||
service.prepare_service()
|
||||
os_service.launch(central_manager.AgentManager()).wait()
|
||||
|
||||
|
||||
def agent_compute():
|
||||
service.prepare_service()
|
||||
os_service.launch(compute_manager.AgentManager()).wait()
|
||||
|
||||
|
||||
def agent_notification():
|
||||
service.prepare_service()
|
||||
os_service.launch(notification.NotificationService(
|
||||
cfg.CONF.host, 'ceilometer.agent.notification')).wait()
|
||||
|
||||
|
||||
def api():
|
||||
service.prepare_service()
|
||||
srv = app.build_server()
|
||||
srv.serve_forever()
|
||||
|
||||
|
||||
def collector_service():
|
||||
service.prepare_service()
|
||||
os_service.launch(collector.CollectorService(
|
||||
cfg.CONF.host, 'ceilometer.collector')).wait()
|
||||
|
||||
|
||||
def storage_dbsync():
|
||||
service.prepare_service()
|
||||
storage.get_connection(cfg.CONF).upgrade()
|
||||
|
||||
|
||||
def storage_expirer():
|
||||
service.prepare_service()
|
||||
if cfg.CONF.database.time_to_live > 0:
|
||||
LOG.debug(_("Clearing expired metering data"))
|
||||
storage_conn = storage.get_connection(cfg.CONF)
|
||||
storage_conn.clear_expired_metering_data(
|
||||
cfg.CONF.database.time_to_live)
|
||||
else:
|
||||
LOG.info(_("Nothing to clean, database time to live is disabled"))
|
||||
|
||||
|
||||
def send_sample():
|
||||
cfg.CONF.register_cli_opts([
|
||||
|
@ -25,7 +25,6 @@ from ceilometer.openstack.common.gettextutils import _ # noqa
|
||||
from ceilometer.openstack.common import log
|
||||
from ceilometer.openstack.common.rpc import dispatcher as rpc_dispatcher
|
||||
from ceilometer.openstack.common.rpc import service as rpc_service
|
||||
from ceilometer.openstack.common import service as os_service
|
||||
from ceilometer.openstack.common import units
|
||||
from ceilometer import service
|
||||
|
||||
@ -106,9 +105,3 @@ class CollectorService(service.DispatchedService, rpc_service.Service):
|
||||
"""
|
||||
self.dispatcher_manager.map_method('record_metering_data',
|
||||
data=data)
|
||||
|
||||
|
||||
def collector():
|
||||
service.prepare_service()
|
||||
os_service.launch(CollectorService(cfg.CONF.host,
|
||||
'ceilometer.collector')).wait()
|
||||
|
@ -19,8 +19,6 @@
|
||||
from ceilometer import agent
|
||||
from ceilometer.compute.virt import inspector as virt_inspector
|
||||
from ceilometer.openstack.common import log
|
||||
from ceilometer.openstack.common import service as os_service
|
||||
from ceilometer import service
|
||||
|
||||
LOG = log.getLogger(__name__)
|
||||
|
||||
@ -34,8 +32,3 @@ class AgentManager(agent.AgentManager):
|
||||
@property
|
||||
def inspector(self):
|
||||
return self._inspector
|
||||
|
||||
|
||||
def agent_compute():
|
||||
service.prepare_service()
|
||||
os_service.launch(AgentManager()).wait()
|
||||
|
@ -24,7 +24,6 @@ from ceilometer.openstack.common import context
|
||||
from ceilometer.openstack.common.gettextutils import _ # noqa
|
||||
from ceilometer.openstack.common import log
|
||||
from ceilometer.openstack.common.rpc import service as rpc_service
|
||||
from ceilometer.openstack.common import service as os_service
|
||||
from ceilometer import pipeline
|
||||
from ceilometer import service
|
||||
from ceilometer.storage import models
|
||||
@ -163,10 +162,3 @@ class NotificationService(service.DispatchedService, rpc_service.Service):
|
||||
with self.pipeline_manager.publisher(context.get_admin_context()) as p:
|
||||
# FIXME(dhellmann): Spawn green thread?
|
||||
p(list(ext.obj.to_samples(notification)))
|
||||
|
||||
|
||||
def agent():
|
||||
service.prepare_service()
|
||||
os_service.launch(NotificationService(
|
||||
cfg.CONF.host,
|
||||
'ceilometer.agent.notification')).wait()
|
||||
|
@ -21,7 +21,6 @@ import os
|
||||
import socket
|
||||
import sys
|
||||
|
||||
import eventlet
|
||||
from oslo.config import cfg
|
||||
from stevedore import named
|
||||
|
||||
@ -108,10 +107,6 @@ class DispatchedService(object):
|
||||
|
||||
|
||||
def prepare_service(argv=None):
|
||||
# NOTE(jd) We need to monkey patch the socket and select module for,
|
||||
# at least, oslo.rpc, otherwise everything's blocked on its first read()
|
||||
# or select()
|
||||
eventlet.monkey_patch(socket=True, select=True)
|
||||
gettextutils.install('ceilometer', lazy=True)
|
||||
rpc.set_defaults(control_exchange='ceilometer')
|
||||
cfg.set_defaults(log.log_opts,
|
||||
|
@ -26,7 +26,6 @@ from stevedore import driver
|
||||
|
||||
from ceilometer.openstack.common.gettextutils import _ # noqa
|
||||
from ceilometer.openstack.common import log
|
||||
from ceilometer import service
|
||||
from ceilometer import utils
|
||||
|
||||
|
||||
@ -157,19 +156,3 @@ class EventFilter(object):
|
||||
self.end_time,
|
||||
self.event_type,
|
||||
six.text_type(self.traits_filter)))
|
||||
|
||||
|
||||
def dbsync():
|
||||
service.prepare_service()
|
||||
get_connection(cfg.CONF).upgrade()
|
||||
|
||||
|
||||
def expirer():
|
||||
service.prepare_service()
|
||||
if cfg.CONF.database.time_to_live > 0:
|
||||
LOG.debug(_("Clearing expired metering data"))
|
||||
storage_conn = get_connection(cfg.CONF)
|
||||
storage_conn.clear_expired_metering_data(
|
||||
cfg.CONF.database.time_to_live)
|
||||
else:
|
||||
LOG.info(_("Nothing to clean, database time to live is disabled"))
|
||||
|
@ -520,6 +520,14 @@
|
||||
|
||||
[alarm]
|
||||
|
||||
#
|
||||
# Options defined in ceilometer.cli
|
||||
#
|
||||
|
||||
# Class to launch as alarm evaluation service. (string value)
|
||||
#evaluation_service=ceilometer.alarm.service.SingletonAlarmService
|
||||
|
||||
|
||||
#
|
||||
# Options defined in ceilometer.alarm.notifier.rest
|
||||
#
|
||||
@ -558,9 +566,6 @@
|
||||
# Deprecated group/name - [alarm]/threshold_evaluation_interval
|
||||
#evaluation_interval=60
|
||||
|
||||
# Class to launch as alarm evaluation service. (string value)
|
||||
#evaluation_service=ceilometer.alarm.service.SingletonAlarmService
|
||||
|
||||
|
||||
#
|
||||
# Options defined in ceilometer.api.controllers.v2
|
||||
|
18
setup.cfg
18
setup.cfg
@ -183,16 +183,16 @@ paste.filter_factory =
|
||||
swift = ceilometer.objectstore.swift_middleware:filter_factory
|
||||
|
||||
console_scripts =
|
||||
ceilometer-api = ceilometer.api.app:start
|
||||
ceilometer-agent-central = ceilometer.central.manager:agent_central
|
||||
ceilometer-agent-compute = ceilometer.compute.manager:agent_compute
|
||||
ceilometer-agent-notification = ceilometer.notification:agent
|
||||
ceilometer-api = ceilometer.cli:api
|
||||
ceilometer-agent-central = ceilometer.cli:agent_central
|
||||
ceilometer-agent-compute = ceilometer.cli:agent_compute
|
||||
ceilometer-agent-notification = ceilometer.cli:agent_notification
|
||||
ceilometer-send-sample = ceilometer.cli:send_sample
|
||||
ceilometer-dbsync = ceilometer.storage:dbsync
|
||||
ceilometer-expirer = ceilometer.storage:expirer
|
||||
ceilometer-collector = ceilometer.collector:collector
|
||||
ceilometer-alarm-evaluator = ceilometer.alarm.service:alarm_evaluator
|
||||
ceilometer-alarm-notifier = ceilometer.alarm.service:alarm_notifier
|
||||
ceilometer-dbsync = ceilometer.cli:storage_dbsync
|
||||
ceilometer-expirer = ceilometer.cli:storage_expirer
|
||||
ceilometer-collector = ceilometer.cli:collector_service
|
||||
ceilometer-alarm-evaluator = ceilometer.cli:alarm_evaluator
|
||||
ceilometer-alarm-notifier = ceilometer.cli:alarm_notifier
|
||||
|
||||
ceilometer.dispatcher =
|
||||
database = ceilometer.dispatcher.database:DatabaseDispatcher
|
||||
|
Loading…
x
Reference in New Issue
Block a user