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:
		| @@ -64,7 +64,7 @@ backdoor_locals = { | |||||||
|  |  | ||||||
| def initialize_if_enabled(): | def initialize_if_enabled(): | ||||||
|     if CONF.backdoor_port is None: |     if CONF.backdoor_port is None: | ||||||
|         return |         return None | ||||||
|  |  | ||||||
|     # NOTE(johannes): The standard sys.displayhook will print the value of |     # NOTE(johannes): The standard sys.displayhook will print the value of | ||||||
|     # the last expression and set it to __builtin__._, which overwrites |     # the last expression and set it to __builtin__._, which overwrites | ||||||
| @@ -76,6 +76,8 @@ def initialize_if_enabled(): | |||||||
|             pprint.pprint(val) |             pprint.pprint(val) | ||||||
|     sys.displayhook = displayhook |     sys.displayhook = displayhook | ||||||
|  |  | ||||||
|     eventlet.spawn(eventlet.backdoor.backdoor_server, |     sock = eventlet.listen(('localhost', CONF.backdoor_port)) | ||||||
|                    eventlet.listen(('localhost', CONF.backdoor_port)), |     port = sock.getsockname()[1] | ||||||
|  |     eventlet.spawn(eventlet.backdoor.backdoor_server, sock, | ||||||
|                    locals=backdoor_locals) |                    locals=backdoor_locals) | ||||||
|  |     return port | ||||||
|   | |||||||
| @@ -140,6 +140,7 @@ class Manager(base.Base): | |||||||
|             host = CONF.host |             host = CONF.host | ||||||
|         self.host = host |         self.host = host | ||||||
|         self.load_plugins() |         self.load_plugins() | ||||||
|  |         self.backdoor_port = None | ||||||
|         super(Manager, self).__init__(db_driver) |         super(Manager, self).__init__(db_driver) | ||||||
|  |  | ||||||
|     def load_plugins(self): |     def load_plugins(self): | ||||||
|   | |||||||
| @@ -111,7 +111,7 @@ class Launcher(object): | |||||||
|  |  | ||||||
|         """ |         """ | ||||||
|         self._services = [] |         self._services = [] | ||||||
|         eventlet_backdoor.initialize_if_enabled() |         self.backdoor_port = eventlet_backdoor.initialize_if_enabled() | ||||||
|  |  | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     def run_server(server): |     def run_server(server): | ||||||
| @@ -131,6 +131,8 @@ class Launcher(object): | |||||||
|         :returns: None |         :returns: None | ||||||
|  |  | ||||||
|         """ |         """ | ||||||
|  |         if self.backdoor_port is not None: | ||||||
|  |             server.backdoor_port = self.backdoor_port | ||||||
|         gt = eventlet.spawn(self.run_server, server) |         gt = eventlet.spawn(self.run_server, server) | ||||||
|         self._services.append(gt) |         self._services.append(gt) | ||||||
|  |  | ||||||
| @@ -382,6 +384,7 @@ class Service(object): | |||||||
|         self.periodic_fuzzy_delay = periodic_fuzzy_delay |         self.periodic_fuzzy_delay = periodic_fuzzy_delay | ||||||
|         self.saved_args, self.saved_kwargs = args, kwargs |         self.saved_args, self.saved_kwargs = args, kwargs | ||||||
|         self.timers = [] |         self.timers = [] | ||||||
|  |         self.backdoor_port = None | ||||||
|  |  | ||||||
|     def start(self): |     def start(self): | ||||||
|         vcs_string = version.version_string_with_vcs() |         vcs_string = version.version_string_with_vcs() | ||||||
| @@ -400,6 +403,9 @@ class Service(object): | |||||||
|  |  | ||||||
|         self.manager.pre_start_hook() |         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) |         self.conn = rpc.create_connection(new=True) | ||||||
|         LOG.debug(_("Creating Consumer connection for Service %s") % |         LOG.debug(_("Creating Consumer connection for Service %s") % | ||||||
|                   self.topic) |                   self.topic) | ||||||
| @@ -578,6 +584,7 @@ class WSGIService(object): | |||||||
|                                   port=self.port) |                                   port=self.port) | ||||||
|         # Pull back actual port used |         # Pull back actual port used | ||||||
|         self.port = self.server.port |         self.port = self.server.port | ||||||
|  |         self.backdoor_port = None | ||||||
|  |  | ||||||
|     def _get_manager(self): |     def _get_manager(self): | ||||||
|         """Initialize a Manager object appropriate for this service. |         """Initialize a Manager object appropriate for this service. | ||||||
| @@ -612,6 +619,8 @@ class WSGIService(object): | |||||||
|         if self.manager: |         if self.manager: | ||||||
|             self.manager.init_host() |             self.manager.init_host() | ||||||
|             self.manager.pre_start_hook() |             self.manager.pre_start_hook() | ||||||
|  |         if self.backdoor_port is not None: | ||||||
|  |             self.manager.backdoor_port = self.backdoor_port | ||||||
|         self.server.start() |         self.server.start() | ||||||
|         if self.manager: |         if self.manager: | ||||||
|             self.manager.post_start_hook() |             self.manager.post_start_hook() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Matthew Treinish
					Matthew Treinish