diff options
Diffstat (limited to 'deploy/adapters/ansible/roles/setup-network/files')
-rw-r--r-- | deploy/adapters/ansible/roles/setup-network/files/setup_networks/check_network.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/deploy/adapters/ansible/roles/setup-network/files/setup_networks/check_network.py b/deploy/adapters/ansible/roles/setup-network/files/setup_networks/check_network.py new file mode 100644 index 00000000..72a5db97 --- /dev/null +++ b/deploy/adapters/ansible/roles/setup-network/files/setup_networks/check_network.py @@ -0,0 +1,56 @@ +import yaml +import sys +import subprocess + +import log as logging + +LOG = logging.getLogger("net-check") + +def is_ip_reachable(ip): + cmd = "ping -c 2 %s" % ip + process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=None, shell=True) + + output = process.communicate()[0] + if " 0% packet loss" in output: + LOG.info("%s is reachable", ip) + elif "100% packet loss" in output: + LOG.error("%s is unreachable" % (ip)) + return False + else: + LOG.warn("%r", output) + + return True + +def is_host_ips_reachable(settings): + external = settings["br-prv"]["ip"] + external_gw = settings["br-prv"]["gw"] + storage = settings["storage"]["ip"] + mgmt = settings["mgmt"]["ip"] + + return is_ip_reachable(external) \ + and is_ip_reachable(external_gw) \ + and is_ip_reachable(storage) \ + and is_ip_reachable(mgmt) + +def main(hostname, config): + LOG.info("host is %s", hostname) + + result = True + + for host, settings in config.iteritems(): + LOG.info("check %s network connectivity start", host) + result = result and is_host_ips_reachable(settings) + + if result: + LOG.info("All hosts ips are reachable") + else: + LOG.error("Some hosts ips are unreachable !!!") + sys.exit(-1) + +if __name__ == "__main__": + hostname = yaml.load(sys.argv[1]) + config = yaml.load(sys.argv[2]) + config.pop(hostname, None) + + main(hostname, config) + |