Merge "Use nova's ping method to find out if the service is alive"

This commit is contained in:
Zuul 2019-05-08 00:37:34 +00:00 committed by Gerrit Code Review
commit 02af9df330

View File

@ -17,8 +17,8 @@
""" """
Health probe script for OpenStack service that uses RPC/unix domain socket for Health probe script for OpenStack service that uses RPC/unix domain socket for
communication. Check's the RPC tcp socket status on the process and send communication. Check's the RPC tcp socket status on the process and send
message to service through rpc call method and expects a reply. It is expected message to service through rpc call method and expects a reply.
to receive failure from the service's RPC server as the method does not exist. Use nova's ping method that is designed just for such simple purpose.
Script returns failure to Kubernetes only when Script returns failure to Kubernetes only when
a. TCP socket for the RPC communication are not established. a. TCP socket for the RPC communication are not established.
@ -28,7 +28,7 @@ Script returns failure to Kubernetes only when
sys.stderr.write() writes to pod's events on failures. sys.stderr.write() writes to pod's events on failures.
Usage example for Nova Compute: Usage example for Nova Compute:
# python health-probe-rpc.py --config-file /etc/nova/nova.conf \ # python health-probe.py --config-file /etc/nova/nova.conf \
# --service-queue-name compute # --service-queue-name compute
""" """
@ -50,12 +50,15 @@ def check_service_status(transport):
"""Verify service status. Return success if service consumes message""" """Verify service status. Return success if service consumes message"""
try: try:
target = oslo_messaging.Target(topic=cfg.CONF.service_queue_name, target = oslo_messaging.Target(topic=cfg.CONF.service_queue_name,
server=socket.gethostname()) server=socket.gethostname(),
namespace='baseapi',
version="1.1")
client = oslo_messaging.RPCClient(transport, target, client = oslo_messaging.RPCClient(transport, target,
timeout=60, timeout=60,
retry=2) retry=2)
client.call(context.RequestContext(), client.call(context.RequestContext(),
'pod_health_probe_method_ignore_errors') 'ping',
arg=None)
except oslo_messaging.exceptions.MessageDeliveryFailure: except oslo_messaging.exceptions.MessageDeliveryFailure:
# Log to pod events # Log to pod events
sys.stderr.write("Health probe unable to reach message bus") sys.stderr.write("Health probe unable to reach message bus")