From 6c5f7d9e10f059e2bc1e56ea2d4e32a7e4cadc8b Mon Sep 17 00:00:00 2001 From: Derek Higgins Date: Wed, 9 May 2012 21:17:41 +0000 Subject: notify calling process we are ready to serve Fixes bug 980037 Service managers starting keystone-all have no way of being notified when the service is ready to accept connections. This commit allows a configurable command to be called when we are ready e.g. for systemd setting the statup type of a service unit to "notify" and setting onready = systemd-notify --ready in keystone.conf, would notify a waiting systemd that we are ready to serve In an automated envirnment (e.g. puppet) this will allow the startup of the keystone-all service (with systemctl for example) directly followed by usage of the keystone client without the need for a sleep (or retry) while we are waiting for the keystone service to be ready. Change-Id: I3f7aafe9837be60a0f35cae1a7db892f6851cc47 --- bin/keystone-all | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'bin') diff --git a/bin/keystone-all b/bin/keystone-all index f58c2a03..bc4ab4b8 100755 --- a/bin/keystone-all +++ b/bin/keystone-all @@ -20,6 +20,7 @@ from paste import deploy from keystone import config from keystone.common import wsgi +from keystone.common import utils CONF = config.CONF @@ -37,6 +38,13 @@ def serve(*servers): server.port) server.start() + # notify calling process we are ready to serve + if CONF.onready: + try: + utils.check_output(CONF.onready.split()) + except Exception: + logging.exception('Failed to execute onready command') + for server in servers: try: server.wait() -- cgit