Add support for backdoor_port to be returned with a rpc call.

This adds an rpc call for compute and network that will return
the eventlet_backdoor port for the service.

Change-Id: I95fdb5ca9bce9f3128300e3b5601fb2b2fc5e82f
Signed-off-by: Matthew Treinish <treinish@linux.vnet.ibm.com>
This commit is contained in:
Matthew Treinish
2012-11-08 14:41:59 -05:00
parent c047160288
commit 2bdac5cb58
3 changed files with 16 additions and 4 deletions

View File

@@ -64,7 +64,7 @@ backdoor_locals = {
def initialize_if_enabled():
if CONF.backdoor_port is None:
return
return None
# NOTE(johannes): The standard sys.displayhook will print the value of
# the last expression and set it to __builtin__._, which overwrites
@@ -76,6 +76,8 @@ def initialize_if_enabled():
pprint.pprint(val)
sys.displayhook = displayhook
eventlet.spawn(eventlet.backdoor.backdoor_server,
eventlet.listen(('localhost', CONF.backdoor_port)),
sock = eventlet.listen(('localhost', CONF.backdoor_port))
port = sock.getsockname()[1]
eventlet.spawn(eventlet.backdoor.backdoor_server, sock,
locals=backdoor_locals)
return port

View File

@@ -140,6 +140,7 @@ class Manager(base.Base):
host = CONF.host
self.host = host
self.load_plugins()
self.backdoor_port = None
super(Manager, self).__init__(db_driver)
def load_plugins(self):

View File

@@ -111,7 +111,7 @@ class Launcher(object):
"""
self._services = []
eventlet_backdoor.initialize_if_enabled()
self.backdoor_port = eventlet_backdoor.initialize_if_enabled()
@staticmethod
def run_server(server):
@@ -131,6 +131,8 @@ class Launcher(object):
:returns: None
"""
if self.backdoor_port is not None:
server.backdoor_port = self.backdoor_port
gt = eventlet.spawn(self.run_server, server)
self._services.append(gt)
@@ -382,6 +384,7 @@ class Service(object):
self.periodic_fuzzy_delay = periodic_fuzzy_delay
self.saved_args, self.saved_kwargs = args, kwargs
self.timers = []
self.backdoor_port = None
def start(self):
vcs_string = version.version_string_with_vcs()
@@ -400,6 +403,9 @@ class Service(object):
self.manager.pre_start_hook()
if self.backdoor_port is not None:
self.manager.backdoor_port = self.backdoor_port
self.conn = rpc.create_connection(new=True)
LOG.debug(_("Creating Consumer connection for Service %s") %
self.topic)
@@ -578,6 +584,7 @@ class WSGIService(object):
port=self.port)
# Pull back actual port used
self.port = self.server.port
self.backdoor_port = None
def _get_manager(self):
"""Initialize a Manager object appropriate for this service.
@@ -612,6 +619,8 @@ class WSGIService(object):
if self.manager:
self.manager.init_host()
self.manager.pre_start_hook()
if self.backdoor_port is not None:
self.manager.backdoor_port = self.backdoor_port
self.server.start()
if self.manager:
self.manager.post_start_hook()