diff --git a/bin/nova-all b/bin/nova-all index 5c0644b8..6aee8780 100755 --- a/bin/nova-all +++ b/bin/nova-all @@ -28,7 +28,7 @@ continue attempting to launch the rest of the services. """ import eventlet -eventlet.monkey_patch() +eventlet.monkey_patch(os=False) import os import sys @@ -54,25 +54,26 @@ if __name__ == '__main__': flags.parse_args(sys.argv) logging.setup() utils.monkey_patch() - servers = [] + launcher = service.ProcessLauncher() + # nova-api for api in flags.FLAGS.enabled_apis: try: - servers.append(service.WSGIService(api)) + server = service.WSGIService(api) + launcher.launch_server(server, workers=server.workers or 1) except (Exception, SystemExit): LOG.exception(_('Failed to load %s') % '%s-api' % api) for mod in [s3server, xvp_proxy]: try: - servers.append(mod.get_wsgi_server()) + launcher.launch_server(mod.get_wsgi_server()) except (Exception, SystemExit): LOG.exception(_('Failed to load %s') % mod.__name__) for binary in ['nova-compute', 'nova-volume', 'nova-network', 'nova-scheduler', 'nova-cert']: try: - servers.append(service.Service.create(binary=binary)) + launcher.launch_server(service.Service.create(binary=binary)) except (Exception, SystemExit): LOG.exception(_('Failed to load %s'), binary) - service.serve(*servers) - service.wait() + launcher.wait() diff --git a/bin/nova-api b/bin/nova-api index e6779df4..b778854f 100755 --- a/bin/nova-api +++ b/bin/nova-api @@ -24,7 +24,7 @@ Starts both the EC2 and OpenStack APIs in separate greenthreads. """ import eventlet -eventlet.monkey_patch() +eventlet.monkey_patch(os=False) import os import sys @@ -45,8 +45,8 @@ if __name__ == '__main__': flags.parse_args(sys.argv) logging.setup() utils.monkey_patch() - servers = [] + launcher = service.ProcessLauncher() for api in flags.FLAGS.enabled_apis: - servers.append(service.WSGIService(api)) - service.serve(*servers) - service.wait() + server = service.WSGIService(api) + launcher.launch_server(server, workers=server.workers or 1) + launcher.wait() diff --git a/bin/nova-api-ec2 b/bin/nova-api-ec2 index b53c9158..f76f3dd7 100755 --- a/bin/nova-api-ec2 +++ b/bin/nova-api-ec2 @@ -20,7 +20,7 @@ """Starter script for Nova EC2 API.""" import eventlet -eventlet.monkey_patch() +eventlet.monkey_patch(os=False) import os import sys @@ -42,5 +42,5 @@ if __name__ == '__main__': logging.setup() utils.monkey_patch() server = service.WSGIService('ec2') - service.serve(server) + service.serve(server, workers=server.workers) service.wait() diff --git a/bin/nova-api-metadata b/bin/nova-api-metadata index 2f2ef945..2aad9345 100755 --- a/bin/nova-api-metadata +++ b/bin/nova-api-metadata @@ -20,7 +20,7 @@ """Starter script for Nova Metadata API.""" import eventlet -eventlet.monkey_patch() +eventlet.monkey_patch(os=False) import os import sys @@ -42,5 +42,5 @@ if __name__ == '__main__': logging.setup() utils.monkey_patch() server = service.WSGIService('metadata') - service.serve(server) + service.serve(server, workers=server.workers) service.wait() diff --git a/bin/nova-api-os-compute b/bin/nova-api-os-compute index 75c92194..c8385525 100755 --- a/bin/nova-api-os-compute +++ b/bin/nova-api-os-compute @@ -20,7 +20,7 @@ """Starter script for Nova OS API.""" import eventlet -eventlet.monkey_patch() +eventlet.monkey_patch(os=False) import os import sys @@ -42,5 +42,5 @@ if __name__ == '__main__': logging.setup() utils.monkey_patch() server = service.WSGIService('osapi_compute') - service.serve(server) + service.serve(server, workers=server.workers) service.wait() diff --git a/bin/nova-api-os-volume b/bin/nova-api-os-volume index b93fd51a..f08c6938 100755 --- a/bin/nova-api-os-volume +++ b/bin/nova-api-os-volume @@ -20,7 +20,7 @@ """Starter script for Nova OS API.""" import eventlet -eventlet.monkey_patch() +eventlet.monkey_patch(os=False) import os import sys @@ -42,5 +42,5 @@ if __name__ == '__main__': logging.setup() utils.monkey_patch() server = service.WSGIService('osapi_volume') - service.serve(server) + service.serve(server, workers=server.workers) service.wait()