~niedbalski/ubuntu/vivid/neutron/fixes-1447803

« back to all changes in this revision

Viewing changes to neutron/wsgi.py

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-10-03 18:45:23 UTC
  • mfrom: (1.1.15)
  • Revision ID: package-import@ubuntu.com-20141003184523-4mt6dy1q3j8n30c9
Tags: 1:2014.2~rc1-0ubuntu1
* New upstream release candidate:
  - d/p/*: Refreshed.
  - d/control: Add python-requests-mock to BD's.
  - d/control: Align versioned requirements with upstream.
* Transition linuxbridge and openvswitch plugin users to modular
  layer 2 plugin (LP: #1323729):
  - d/control: Mark removed plugin packages as transitional, depend
    on neutron-plugin-ml2, mark oldlibs/extra.
  - d/neutron-plugin-{linuxbridge,openvswitch}.install: Drop.
  - d/control: Depend on neutron-plugin-ml2 for linuxbridge
    agent package.
  - d/neutron-plugin-linuxbridge-agent.upstart: Use ml2 plugin
    configuration files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
97
97
                                                self._service._socket)
98
98
 
99
99
    def wait(self):
100
 
        self._service.pool.waitall()
 
100
        if isinstance(self._server, eventlet.greenthread.GreenThread):
 
101
            self._server.wait()
101
102
 
102
103
    def stop(self):
103
104
        if isinstance(self._server, eventlet.greenthread.GreenThread):
113
114
        eventlet.wsgi.MAX_HEADER_LINE = CONF.max_header_line
114
115
        self.pool = eventlet.GreenPool(threads)
115
116
        self.name = name
116
 
        self._launcher = None
117
117
        self._server = None
118
118
 
119
119
    def _get_socket(self, host, port, backlog):
205
205
        self._socket = self._get_socket(self._host,
206
206
                                        self._port,
207
207
                                        backlog=backlog)
 
208
 
 
209
        self._launch(application, workers)
 
210
 
 
211
    def _launch(self, application, workers=0):
 
212
        service = WorkerService(self, application)
208
213
        if workers < 1:
209
 
            # For the case where only one process is required.
210
 
            self._server = self.pool.spawn(self._run, application,
211
 
                                           self._socket)
 
214
            # The API service should run in the current process.
 
215
            self._server = service
 
216
            service.start()
212
217
            systemd.notify_once()
213
218
        else:
 
219
            # The API service runs in a number of child processes.
214
220
            # Minimize the cost of checking for child exit by extending the
215
221
            # wait interval past the default of 0.01s.
216
 
            self._launcher = common_service.ProcessLauncher(wait_interval=1.0)
217
 
            self._server = WorkerService(self, application)
218
 
            self._launcher.launch_service(self._server, workers=workers)
 
222
            self._server = common_service.ProcessLauncher(wait_interval=1.0)
 
223
            self._server.launch_service(service, workers=workers)
219
224
 
220
225
    @property
221
226
    def host(self):
226
231
        return self._socket.getsockname()[1] if self._socket else self._port
227
232
 
228
233
    def stop(self):
229
 
        if self._launcher:
230
 
            # The process launcher does not support stop or kill.
231
 
            self._launcher.running = False
232
 
        else:
233
 
            self._server.kill()
 
234
        self._server.stop()
234
235
 
235
236
    def wait(self):
236
237
        """Wait until all servers have completed running."""
237
238
        try:
238
 
            if self._launcher:
239
 
                self._launcher.wait()
240
 
            else:
241
 
                self.pool.waitall()
 
239
            self._server.wait()
242
240
        except KeyboardInterrupt:
243
241
            pass
244
242