diff --git a/ironic/cmd/api.py b/ironic/cmd/api.py index 2323c4b09c..f75aa9ee7d 100644 --- a/ironic/cmd/api.py +++ b/ironic/cmd/api.py @@ -39,7 +39,7 @@ def main(): launcher = ironic_service.process_launcher() server = wsgi_service.WSGIService('ironic_api', CONF.api.enable_ssl_api) launcher.launch_service(server, workers=server.workers) - launcher.wait() + sys.exit(launcher.wait()) if __name__ == '__main__': diff --git a/ironic/cmd/conductor.py b/ironic/cmd/conductor.py index 8431858906..5fa4c84899 100644 --- a/ironic/cmd/conductor.py +++ b/ironic/cmd/conductor.py @@ -67,7 +67,7 @@ def main(): issue_startup_warnings(CONF) launcher = service.launch(CONF, mgr, restart_method='mutate') - launcher.wait() + sys.exit(launcher.wait()) if __name__ == '__main__': diff --git a/ironic/cmd/singleprocess.py b/ironic/cmd/singleprocess.py index ea2e01365c..20a348ae5c 100644 --- a/ironic/cmd/singleprocess.py +++ b/ironic/cmd/singleprocess.py @@ -49,4 +49,4 @@ def main(): wsgi = wsgi_service.WSGIService('ironic_api', CONF.api.enable_ssl_api) launcher.launch_service(wsgi) - launcher.wait() + sys.exit(launcher.wait()) diff --git a/releasenotes/notes/service-exit-77bcf3a538fab4bc.yaml b/releasenotes/notes/service-exit-77bcf3a538fab4bc.yaml new file mode 100644 index 0000000000..3d0aeee193 --- /dev/null +++ b/releasenotes/notes/service-exit-77bcf3a538fab4bc.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + Services (``ironic``, ``ironic-api``, ``ironic-conductor``) now correctly + return a non-zero exit code on start-up failures.