From 2888cb5e92615f9f8c44c1be7fe6c099f0919472 Mon Sep 17 00:00:00 2001 From: Edin Sarajlic Date: Thu, 19 Sep 2019 12:19:25 +1000 Subject: [PATCH] Add a function that checks port access given a list of units --- zaza/openstack/utilities/generic.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/zaza/openstack/utilities/generic.py b/zaza/openstack/utilities/generic.py index 8b562ab..c8e942e 100644 --- a/zaza/openstack/utilities/generic.py +++ b/zaza/openstack/utilities/generic.py @@ -744,3 +744,21 @@ def is_port_open(port, address): logging.error("connection refused connecting" " to {}:{}".format(address, port)) return False + + +def port_knock_units(units, port=22, expect_success=True): + """Open a TCP socket to check for a listening sevice on each + listed juju unit. + :param units: list of unit pointers + :param port: TCP port number, default to 22 + :param timeout: Connect timeout, default to 15 seconds + :expect_success: True by default, set False to invert logic + :returns: None if successful, Failure message otherwise + """ + for u in units: + host = u.public_address + connected = is_port_open(port, host) + if not connected and expect_success: + return 'Socket connect failed.' + elif connected and not expect_success: + return 'Socket connected unexpectedly.'