Merge "Do not wait for MessageHandlingServer"
This commit is contained in:
@@ -66,8 +66,8 @@ def main():
|
|||||||
|
|
||||||
launcher.launch_service(wsgi.Service(app, port, host))
|
launcher.launch_service(wsgi.Service(app, port, host))
|
||||||
|
|
||||||
launcher.launch_service(server.get_rpc_service())
|
launcher.launch_service(server.ApiService())
|
||||||
launcher.launch_service(server.get_notification_service())
|
launcher.launch_service(server.NotificationService())
|
||||||
launcher.launch_service(stats.StatsCollectingService())
|
launcher.launch_service(stats.StatsCollectingService())
|
||||||
|
|
||||||
launcher.wait()
|
launcher.wait()
|
||||||
|
@@ -65,8 +65,8 @@ def main():
|
|||||||
|
|
||||||
launcher.launch_service(wsgi.Service(cfapp, cfport, cfhost))
|
launcher.launch_service(wsgi.Service(cfapp, cfport, cfhost))
|
||||||
|
|
||||||
launcher.launch_service(server.get_rpc_service())
|
launcher.launch_service(server.ApiService())
|
||||||
launcher.launch_service(server.get_notification_service())
|
launcher.launch_service(server.NotificationService())
|
||||||
|
|
||||||
launcher.wait()
|
launcher.wait()
|
||||||
except RuntimeError as e:
|
except RuntimeError as e:
|
||||||
|
@@ -19,6 +19,7 @@ from oslo_log import log as logging
|
|||||||
import oslo_messaging as messaging
|
import oslo_messaging as messaging
|
||||||
from oslo_messaging.notify import dispatcher as oslo_dispatcher
|
from oslo_messaging.notify import dispatcher as oslo_dispatcher
|
||||||
from oslo_messaging import target
|
from oslo_messaging import target
|
||||||
|
from oslo_service import service
|
||||||
from oslo_utils import timeutils
|
from oslo_utils import timeutils
|
||||||
from sqlalchemy import desc
|
from sqlalchemy import desc
|
||||||
|
|
||||||
@@ -32,9 +33,6 @@ from murano.services import states
|
|||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
||||||
RPC_SERVICE = None
|
|
||||||
NOTIFICATION_SERVICE = None
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@@ -198,35 +196,52 @@ def get_last_deployment(unit, env_id):
|
|||||||
return query.first()
|
return query.first()
|
||||||
|
|
||||||
|
|
||||||
def _prepare_rpc_service(server_id):
|
class Service(service.Service):
|
||||||
endpoints = [ResultEndpoint()]
|
"""Service class, that contains common methods for custom services"""
|
||||||
|
|
||||||
transport = messaging.get_transport(CONF)
|
def __init__(self):
|
||||||
s_target = target.Target('murano', 'results', server=server_id)
|
super(Service, self).__init__()
|
||||||
return messaging.get_rpc_server(transport, s_target, endpoints, 'eventlet')
|
self.server = None
|
||||||
|
|
||||||
|
def stop(self, graceful=False):
|
||||||
|
if self.server:
|
||||||
|
self.server.stop()
|
||||||
|
if graceful:
|
||||||
|
self.server.wait()
|
||||||
|
super(Service, self).stop()
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
if self.server:
|
||||||
|
self.server.reset()
|
||||||
|
super(Service, self).reset()
|
||||||
|
|
||||||
|
|
||||||
def _prepare_notification_service(server_id):
|
class NotificationService(Service):
|
||||||
endpoints = [report_notification, track_instance, untrack_instance]
|
def __init__(self):
|
||||||
|
super(NotificationService, self).__init__()
|
||||||
|
self.server = None
|
||||||
|
|
||||||
transport = messaging.get_transport(CONF)
|
def start(self):
|
||||||
s_target = target.Target(topic='murano', server=server_id)
|
endpoints = [report_notification, track_instance, untrack_instance]
|
||||||
dispatcher = oslo_dispatcher.NotificationDispatcher(
|
|
||||||
[s_target], endpoints, None, True)
|
transport = messaging.get_transport(CONF)
|
||||||
return messaging.MessageHandlingServer(transport, dispatcher, 'eventlet')
|
s_target = target.Target(topic='murano', server=str(uuid.uuid4()))
|
||||||
|
dispatcher = oslo_dispatcher.NotificationDispatcher(
|
||||||
|
[s_target], endpoints, None, True)
|
||||||
|
self.server = messaging.MessageHandlingServer(
|
||||||
|
transport, dispatcher, 'eventlet')
|
||||||
|
self.server.start()
|
||||||
|
super(NotificationService, self).start()
|
||||||
|
|
||||||
|
|
||||||
def get_rpc_service():
|
class ApiService(Service):
|
||||||
global RPC_SERVICE
|
|
||||||
|
|
||||||
if RPC_SERVICE is None:
|
def start(self):
|
||||||
RPC_SERVICE = _prepare_rpc_service(str(uuid.uuid4()))
|
endpoints = [ResultEndpoint()]
|
||||||
return RPC_SERVICE
|
|
||||||
|
|
||||||
|
transport = messaging.get_transport(CONF)
|
||||||
def get_notification_service():
|
s_target = target.Target('murano', 'results', server=str(uuid.uuid4()))
|
||||||
global NOTIFICATION_SERVICE
|
self.server = messaging.get_rpc_server(
|
||||||
|
transport, s_target, endpoints, 'eventlet')
|
||||||
if NOTIFICATION_SERVICE is None:
|
self.server.start()
|
||||||
NOTIFICATION_SERVICE = _prepare_notification_service(str(uuid.uuid4()))
|
super(ApiService, self).start()
|
||||||
return NOTIFICATION_SERVICE
|
|
||||||
|
Reference in New Issue
Block a user