|
@@ -0,0 +1,47 @@
|
|
|
+#!/usr/bin/env python3
|
|
|
+"""Ping nodes and show unavailable."""
|
|
|
+import json
|
|
|
+import os
|
|
|
+import sys
|
|
|
+import subprocess
|
|
|
+
|
|
|
+RED = '\x1b[01;31m'
|
|
|
+GREEN = '\x1b[01;32m'
|
|
|
+YELLOW = '\x1b[01;33m'
|
|
|
+END = '\x1b[0m'
|
|
|
+
|
|
|
+
|
|
|
+def validate(path):
|
|
|
+ """Test a single set of peering creds."""
|
|
|
+ result = True
|
|
|
+ print("Pinging %s" % path)
|
|
|
+ try:
|
|
|
+ with open(path) as f:
|
|
|
+ for host in json.loads(f.read()):
|
|
|
+ if host[0] == '[': continue
|
|
|
+ ipv4 = host.split(':')[0]
|
|
|
+ res = subprocess.call(['ping', '-c3', '-W5', ipv4], stdout=subprocess.DEVNULL)
|
|
|
+ if res:
|
|
|
+ print(" %s%s is failed%s" % (RED, ipv4, END))
|
|
|
+ result = False
|
|
|
+ else:
|
|
|
+ print(" %s%s is ok%s" % (GREEN, ipv4, END))
|
|
|
+ except ValueError:
|
|
|
+ print(" %sInvalid JSON!%s" % (RED, END))
|
|
|
+ result = False
|
|
|
+ except KeyboardInterrupt:
|
|
|
+ print(" %sInterrupt%s" % (RED, END))
|
|
|
+ sys.exit(1)
|
|
|
+ return result
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ success = True
|
|
|
+ for directory, subdirs, files in os.walk('.'):
|
|
|
+ if len(files) > 0:
|
|
|
+ if directory != '.' and not directory.startswith('./.git'):
|
|
|
+ for f in files:
|
|
|
+ result = validate("%s/%s" % (directory, f))
|
|
|
+ if not result:
|
|
|
+ success = False
|
|
|
+ if not success:
|
|
|
+ sys.exit(1)
|