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.partition import coordination
|
||||||
from ceilometer.alarm import rpc as rpc_alarm
|
from ceilometer.alarm import rpc as rpc_alarm
|
||||||
from ceilometer.openstack.common.gettextutils import _ # noqa
|
from ceilometer.openstack.common.gettextutils import _ # noqa
|
||||||
from ceilometer.openstack.common import importutils
|
|
||||||
from ceilometer.openstack.common import log
|
from ceilometer.openstack.common import log
|
||||||
from ceilometer.openstack.common import network_utils
|
from ceilometer.openstack.common import network_utils
|
||||||
from ceilometer.openstack.common.rpc import dispatcher as rpc_dispatcher
|
from ceilometer.openstack.common.rpc import dispatcher as rpc_dispatcher
|
||||||
from ceilometer.openstack.common.rpc import service as rpc_service
|
from ceilometer.openstack.common.rpc import service as rpc_service
|
||||||
from ceilometer.openstack.common import service as os_service
|
from ceilometer.openstack.common import service as os_service
|
||||||
from ceilometer import service
|
|
||||||
|
|
||||||
|
|
||||||
OPTS = [
|
OPTS = [
|
||||||
@ -45,9 +43,6 @@ OPTS = [
|
|||||||
' collection of underlying metrics.',
|
' collection of underlying metrics.',
|
||||||
deprecated_opts=[cfg.DeprecatedOpt(
|
deprecated_opts=[cfg.DeprecatedOpt(
|
||||||
'threshold_evaluation_interval', group='alarm')]),
|
'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')
|
cfg.CONF.register_opts(OPTS, group='alarm')
|
||||||
@ -139,12 +134,6 @@ class SingletonAlarmService(AlarmService, os_service.Service):
|
|||||||
'value': True}])
|
'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')
|
cfg.CONF.import_opt('host', 'ceilometer.service')
|
||||||
|
|
||||||
|
|
||||||
@ -282,9 +271,3 @@ class AlarmNotifierService(rpc_service.Service):
|
|||||||
data.get('current'),
|
data.get('current'),
|
||||||
data.get('reason'),
|
data.get('reason'),
|
||||||
data.get('reason_data'))
|
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 hooks
|
||||||
from ceilometer.api import middleware
|
from ceilometer.api import middleware
|
||||||
from ceilometer.openstack.common import log
|
from ceilometer.openstack.common import log
|
||||||
from ceilometer import service
|
|
||||||
from ceilometer import storage
|
from ceilometer import storage
|
||||||
|
|
||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
@ -122,9 +121,7 @@ def get_server_cls(host):
|
|||||||
return server_cls
|
return server_cls
|
||||||
|
|
||||||
|
|
||||||
def start():
|
def build_server():
|
||||||
service.prepare_service()
|
|
||||||
|
|
||||||
# Build the WSGI app
|
# Build the WSGI app
|
||||||
root = VersionSelectorApplication()
|
root = VersionSelectorApplication()
|
||||||
|
|
||||||
@ -144,5 +141,4 @@ def start():
|
|||||||
else:
|
else:
|
||||||
LOG.info(_("serving on http://%(host)s:%(port)s") % (
|
LOG.info(_("serving on http://%(host)s:%(port)s") % (
|
||||||
{'host': host, 'port': port}))
|
{'host': host, 'port': port}))
|
||||||
|
return srv
|
||||||
srv.serve_forever()
|
|
||||||
|
@ -21,8 +21,6 @@ from oslo.config import cfg
|
|||||||
|
|
||||||
from ceilometer import agent
|
from ceilometer import agent
|
||||||
from ceilometer.openstack.common import log
|
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')
|
cfg.CONF.import_group('service_credentials', 'ceilometer.service')
|
||||||
|
|
||||||
@ -46,8 +44,3 @@ class AgentManager(agent.AgentManager):
|
|||||||
insecure=cfg.CONF.service_credentials.insecure)
|
insecure=cfg.CONF.service_credentials.insecure)
|
||||||
|
|
||||||
super(AgentManager, self).interval_task(task)
|
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.
|
"""Command line tool for creating meter for Ceilometer.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import sys
|
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 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 context
|
||||||
|
from ceilometer.openstack.common import importutils
|
||||||
|
from ceilometer.openstack.common import service as os_service
|
||||||
from ceilometer.openstack.common import timeutils
|
from ceilometer.openstack.common import timeutils
|
||||||
from ceilometer import pipeline
|
from ceilometer import pipeline
|
||||||
from ceilometer import sample
|
from ceilometer import sample
|
||||||
from ceilometer import service
|
from ceilometer import service
|
||||||
|
from ceilometer import storage
|
||||||
from ceilometer import transformer
|
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():
|
def send_sample():
|
||||||
cfg.CONF.register_cli_opts([
|
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 import log
|
||||||
from ceilometer.openstack.common.rpc import dispatcher as rpc_dispatcher
|
from ceilometer.openstack.common.rpc import dispatcher as rpc_dispatcher
|
||||||
from ceilometer.openstack.common.rpc import service as rpc_service
|
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.openstack.common import units
|
||||||
from ceilometer import service
|
from ceilometer import service
|
||||||
|
|
||||||
@ -106,9 +105,3 @@ class CollectorService(service.DispatchedService, rpc_service.Service):
|
|||||||
"""
|
"""
|
||||||
self.dispatcher_manager.map_method('record_metering_data',
|
self.dispatcher_manager.map_method('record_metering_data',
|
||||||
data=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 import agent
|
||||||
from ceilometer.compute.virt import inspector as virt_inspector
|
from ceilometer.compute.virt import inspector as virt_inspector
|
||||||
from ceilometer.openstack.common import log
|
from ceilometer.openstack.common import log
|
||||||
from ceilometer.openstack.common import service as os_service
|
|
||||||
from ceilometer import service
|
|
||||||
|
|
||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
@ -34,8 +32,3 @@ class AgentManager(agent.AgentManager):
|
|||||||
@property
|
@property
|
||||||
def inspector(self):
|
def inspector(self):
|
||||||
return self._inspector
|
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.gettextutils import _ # noqa
|
||||||
from ceilometer.openstack.common import log
|
from ceilometer.openstack.common import log
|
||||||
from ceilometer.openstack.common.rpc import service as rpc_service
|
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 pipeline
|
||||||
from ceilometer import service
|
from ceilometer import service
|
||||||
from ceilometer.storage import models
|
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:
|
with self.pipeline_manager.publisher(context.get_admin_context()) as p:
|
||||||
# FIXME(dhellmann): Spawn green thread?
|
# FIXME(dhellmann): Spawn green thread?
|
||||||
p(list(ext.obj.to_samples(notification)))
|
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 socket
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import eventlet
|
|
||||||
from oslo.config import cfg
|
from oslo.config import cfg
|
||||||
from stevedore import named
|
from stevedore import named
|
||||||
|
|
||||||
@ -108,10 +107,6 @@ class DispatchedService(object):
|
|||||||
|
|
||||||
|
|
||||||
def prepare_service(argv=None):
|
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)
|
gettextutils.install('ceilometer', lazy=True)
|
||||||
rpc.set_defaults(control_exchange='ceilometer')
|
rpc.set_defaults(control_exchange='ceilometer')
|
||||||
cfg.set_defaults(log.log_opts,
|
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.gettextutils import _ # noqa
|
||||||
from ceilometer.openstack.common import log
|
from ceilometer.openstack.common import log
|
||||||
from ceilometer import service
|
|
||||||
from ceilometer import utils
|
from ceilometer import utils
|
||||||
|
|
||||||
|
|
||||||
@ -157,19 +156,3 @@ class EventFilter(object):
|
|||||||
self.end_time,
|
self.end_time,
|
||||||
self.event_type,
|
self.event_type,
|
||||||
six.text_type(self.traits_filter)))
|
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]
|
[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
|
# Options defined in ceilometer.alarm.notifier.rest
|
||||||
#
|
#
|
||||||
@ -558,9 +566,6 @@
|
|||||||
# Deprecated group/name - [alarm]/threshold_evaluation_interval
|
# Deprecated group/name - [alarm]/threshold_evaluation_interval
|
||||||
#evaluation_interval=60
|
#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
|
# 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
|
swift = ceilometer.objectstore.swift_middleware:filter_factory
|
||||||
|
|
||||||
console_scripts =
|
console_scripts =
|
||||||
ceilometer-api = ceilometer.api.app:start
|
ceilometer-api = ceilometer.cli:api
|
||||||
ceilometer-agent-central = ceilometer.central.manager:agent_central
|
ceilometer-agent-central = ceilometer.cli:agent_central
|
||||||
ceilometer-agent-compute = ceilometer.compute.manager:agent_compute
|
ceilometer-agent-compute = ceilometer.cli:agent_compute
|
||||||
ceilometer-agent-notification = ceilometer.notification:agent
|
ceilometer-agent-notification = ceilometer.cli:agent_notification
|
||||||
ceilometer-send-sample = ceilometer.cli:send_sample
|
ceilometer-send-sample = ceilometer.cli:send_sample
|
||||||
ceilometer-dbsync = ceilometer.storage:dbsync
|
ceilometer-dbsync = ceilometer.cli:storage_dbsync
|
||||||
ceilometer-expirer = ceilometer.storage:expirer
|
ceilometer-expirer = ceilometer.cli:storage_expirer
|
||||||
ceilometer-collector = ceilometer.collector:collector
|
ceilometer-collector = ceilometer.cli:collector_service
|
||||||
ceilometer-alarm-evaluator = ceilometer.alarm.service:alarm_evaluator
|
ceilometer-alarm-evaluator = ceilometer.cli:alarm_evaluator
|
||||||
ceilometer-alarm-notifier = ceilometer.alarm.service:alarm_notifier
|
ceilometer-alarm-notifier = ceilometer.cli:alarm_notifier
|
||||||
|
|
||||||
ceilometer.dispatcher =
|
ceilometer.dispatcher =
|
||||||
database = ceilometer.dispatcher.database:DatabaseDispatcher
|
database = ceilometer.dispatcher.database:DatabaseDispatcher
|
||||||
|
Loading…
x
Reference in New Issue
Block a user