summaryrefslogtreecommitdiffstats
path: root/install/tools/ipa-replica-conncheck
diff options
context:
space:
mode:
Diffstat (limited to 'install/tools/ipa-replica-conncheck')
-rwxr-xr-xinstall/tools/ipa-replica-conncheck98
1 files changed, 51 insertions, 47 deletions
diff --git a/install/tools/ipa-replica-conncheck b/install/tools/ipa-replica-conncheck
index cd1b1385d..934744dd3 100755
--- a/install/tools/ipa-replica-conncheck
+++ b/install/tools/ipa-replica-conncheck
@@ -63,7 +63,7 @@ class SshExec(object):
def __call__(self, command, verbose=False):
# Bail if ssh is not installed
if self.cmd is None:
- print("WARNING: ssh not installed, skipping ssh test")
+ root_logger.warning("WARNING: ssh not installed, skipping ssh test")
return ('', '', 0)
tmpf = tempfile.NamedTemporaryFile()
@@ -112,11 +112,6 @@ BASE_PORTS = [
]
-def print_info(msg):
- if not QUIET:
- print(msg)
-
-
def parse_options():
def ca_cert_file_callback(option, opt, value, parser):
if not os.path.exists(value):
@@ -210,10 +205,6 @@ def parse_options():
if not options.hostname:
options.hostname = socket.getfqdn()
- if options.quiet:
- global QUIET
- QUIET = True
-
return safe_options, options
@@ -223,7 +214,8 @@ def logging_setup(options):
if os.getegid() == 0 and options.log_to_file:
log_file = paths.IPAREPLICA_CONNCHECK_LOG
- standard_logging_setup(log_file, debug=options.debug)
+ standard_logging_setup(log_file, verbose=(not options.quiet),
+ debug=options.debug, console_format='%(message)s')
def sigterm_handler(signum, frame):
@@ -402,13 +394,14 @@ def port_check(host, port_list):
else:
ports_failed.append(port)
result = "FAILED"
- print_info(" %s (%d): %s" % (port.description, port.port, result))
+ root_logger.info(" %s (%d): %s" % (port.description, port.port, result))
if ports_udp_warning:
- print("The following UDP ports could not be verified as open: %s" \
- % ", ".join(str(port.port) for port in ports_udp_warning))
- print("This can happen if they are already bound to an application")
- print("and ipa-replica-conncheck cannot attach own UDP responder.")
+ root_logger.warning(
+ ("The following UDP ports could not be verified as open: %s\n"
+ "This can happen if they are already bound to an application\n"
+ "and ipa-replica-conncheck cannot attach own UDP responder.")
+ % ", ".join(str(port.port) for port in ports_udp_warning))
if ports_failed:
msg_ports = []
@@ -438,29 +431,34 @@ def main():
"PKI-CA: Directory Service port"))
if options.replica:
- print_info("Check connection from master to remote replica '%s':" % options.replica)
+ root_logger.info("Check connection from master to remote replica '%s':"
+ % options.replica)
port_check(options.replica, required_ports)
- print_info("\nConnection from master to replica is OK.")
+ root_logger.info("\nConnection from master to replica is OK.")
# kinit to foreign master
if options.master:
# check ports on master first
- print_info("Check connection from replica to remote master '%s':" % options.master)
+ root_logger.info("Check connection from replica to remote master '%s':"
+ % options.master)
tcp_ports = [ port for port in required_ports if port.port_type == SOCK_STREAM ]
udp_ports = [ port for port in required_ports if port.port_type == SOCK_DGRAM ]
port_check(options.master, tcp_ports)
if udp_ports:
- print_info("\nThe following list of ports use UDP protocol and would need to be")
- print_info("checked manually:")
+ root_logger.info("\nThe following list of ports use UDP protocol"
+ "and would need to be\n"
+ "checked manually:")
for port in udp_ports:
result = "SKIPPED"
- print_info(" %s (%d): %s" % (port.description, port.port, result))
+ root_logger.info(" %s (%d): %s"
+ % (port.description, port.port, result))
- print_info("\nConnection from replica to master is OK.")
+ root_logger.info("\nConnection from replica to master is OK.")
# create listeners
- print_info("Start listening on required ports for remote master check")
+ root_logger.info("Start listening on required ports for remote "
+ "master check")
RESPONDER = PortResponder(required_ports)
RESPONDER.start()
@@ -474,7 +472,7 @@ def main():
remote_check_opts = ['--replica %s' % options.hostname]
if options.auto_master_check:
- print_info("Get credentials to log in to remote master")
+ root_logger.info("Get credentials to log in to remote master")
cred = None
if options.principal is None:
# Check if ccache is available
@@ -531,7 +529,7 @@ def main():
result.error_output)
try:
- print_info("Check RPC connection to remote master")
+ root_logger.info("Check RPC connection to remote master")
xmlrpc_uri = ('https://%s/ipa/xml' %
ipautil.format_netloc(options.master))
@@ -568,11 +566,11 @@ def main():
api.Backend.rpcclient.connect()
api.Command.ping()
except Exception as e:
- print_info(
+ root_logger.info(
"Could not connect to the remote host: %s" % e)
raise
- print_info("Execute check on remote master")
+ root_logger.info("Execute check on remote master")
try:
result = api.Backend.rpcclient.forward(
'server_conncheck',
@@ -581,7 +579,7 @@ def main():
version=u'2.162',
)
except (errors.CommandError, errors.NetworkError) as e:
- print_info(
+ root_logger.info(
"Remote master does not support check over RPC: "
"%s" % e)
raise
@@ -590,7 +588,7 @@ def main():
stderr = e
else:
for message in result['messages']:
- print_info(message['message'])
+ root_logger.info(message['message'])
returncode = int(not result['result'])
stderr = ("ipa-replica-conncheck returned non-zero "
"exit code")
@@ -598,48 +596,54 @@ def main():
if api.Backend.rpcclient.isconnected():
api.Backend.rpcclient.disconnect()
except Exception:
- print_info("Retrying using SSH...")
+ root_logger.info("Retrying using SSH...")
# Ticket 5812 Always qualify requests for admin
user = principal
ssh = SshExec(user, options.master)
- print_info("Check SSH connection to remote master")
+ root_logger.info("Check SSH connection to remote master")
result = ssh('echo OK', verbose=True)
if result.returncode != 0:
- print('Could not SSH into remote host. Error output:')
- for line in result.error_output.splitlines():
- print(' %s' % line)
- raise RuntimeError('Could not SSH to remote host.')
+ root_logger.debug(result.error_output)
+ raise RuntimeError(
+ 'Could not SSH to remote host.\n'
+ 'See /var/log/ipareplica-conncheck.log for more '
+ 'information.')
- print_info("Execute check on remote master")
+ root_logger.info("Execute check on remote master")
result = ssh(
"/usr/sbin/ipa-replica-conncheck " +
" ".join(remote_check_opts))
returncode = result.returncode
stderr = result.error_output
- print_info(result.output)
+ root_logger.info(result.output)
if returncode != 0:
- raise RuntimeError("Remote master check failed with following error message(s):\n%s" % stderr)
+ raise RuntimeError(
+ "Remote master check failed with following "
+ "error message(s):\n%s" % stderr)
else:
# wait until user test is ready
- print_info("Listeners are started. Use CTRL+C to terminate the listening part after the test.")
- print_info("")
- print_info("Please run the following command on remote master:")
-
- print_info("/usr/sbin/ipa-replica-conncheck " + " ".join(remote_check_opts))
+ root_logger.info(
+ "Listeners are started. Use CTRL+C to terminate the listening "
+ "part after the test.\n\n"
+ "Please run the following command on remote master:\n"
+ "/usr/sbin/ipa-replica-conncheck {opts}".format(
+ opts=" ".join(remote_check_opts)))
time.sleep(3600)
- print_info("Connection check timeout: terminating listening program")
+ root_logger.info(
+ "Connection check timeout: terminating listening program")
if __name__ == "__main__":
try:
sys.exit(main())
except KeyboardInterrupt:
- print_info("\nCleaning up...")
+ root_logger.info("\nCleaning up...")
sys.exit(1)
except RuntimeError as e:
- sys.exit(e)
+ root_logger.error('ERROR: {ex}'.format(ex=e))
+ sys.exit(1)
finally:
if RESPONDER is not None:
RESPONDER.stop()