From f960450820c13284b52b4c5f420f0f1191a45619 Mon Sep 17 00:00:00 2001 From: Florence Blanc-Renaud Date: Thu, 18 May 2017 17:01:19 +0200 Subject: [PATCH] ipa-replica-conncheck: handle ssh not installed When ipa-replica-conncheck is run but ssh is not installed, the tool exits with a stack trace. Properly handle the error by raising an Exception in the SshExec constructor, and catch the exception in order to ignore the error and skip ssh test. The tool will exit with the following output: [...] Check RPC connection to remote master trying https://master.domain.com/ipa/session/json Forwarding 'schema' to json server 'https://master.domain.com/ipa/session/json' Retrying using SSH... WARNING: ssh not installed, skipping ssh test https://pagure.io/freeipa/issue/6935 Reviewed-By: Martin Babinsky --- install/tools/ipa-replica-conncheck | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/install/tools/ipa-replica-conncheck b/install/tools/ipa-replica-conncheck index 528242268..9b92de3f6 100755 --- a/install/tools/ipa-replica-conncheck +++ b/install/tools/ipa-replica-conncheck @@ -59,12 +59,11 @@ class SshExec(object): self.user = user self.addr = addr self.cmd = distutils.spawn.find_executable('ssh') - - def __call__(self, command, verbose=False): # Bail if ssh is not installed if self.cmd is None: - root_logger.warning("WARNING: ssh not installed, skipping ssh test") - return ('', '', 0) + raise RuntimeError("ssh not installed") + + def __call__(self, command, verbose=False): tmpf = tempfile.NamedTemporaryFile() cmd = [ @@ -596,7 +595,11 @@ def main(): # Ticket 5812 Always qualify requests for admin user = principal - ssh = SshExec(user, options.master) + try: + ssh = SshExec(user, options.master) + except RuntimeError as e: + root_logger.warning("WARNING: %s, skipping ssh test" % e) + return 0 root_logger.info("Check SSH connection to remote master") result = ssh('echo OK', verbose=True)