diff options
Diffstat (limited to 'clusterman/commands/node.py')
| -rw-r--r-- | clusterman/commands/node.py | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/clusterman/commands/node.py b/clusterman/commands/node.py index bd7c443..04ede32 100644 --- a/clusterman/commands/node.py +++ b/clusterman/commands/node.py @@ -1,5 +1,5 @@ -import os - +import os, json +from clusterman.config import CONF def ls(): @@ -7,8 +7,9 @@ def ls(): def scan(ip4_from,ip4_to,timeout=0.1): - from_split=[int(n) for n in ip4_from.split(".")] - to_split=[int(n) for n in ip4_to.split(".")] + from_split=[int(n) for n in CONF["cluster"]["ip4_from"].split(".")] + to_split=[int(n) for n in CONF["cluster"]["ip4_to"].split(".")] + ignore_list=[ip.strip(" ") for ip in CONF["cluster"]["ip4_ignore"]] nodes=list() print("----- Starting node scan (timeout={}s) -----".format(timeout)) for W in range(from_split[0],to_split[0]+1): @@ -16,11 +17,37 @@ def scan(ip4_from,ip4_to,timeout=0.1): for Y in range(from_split[2],to_split[2]+1): for Z in range(from_split[3],to_split[3]+1): ip="{}.{}.{}.{}".format(W,X,Y,Z) + if ip in ignore_list: + print("Skipping {}".format(ip)) + continue response = os.system("ping -c 1 -W " + str(timeout)+ " " + ip + " &>/dev/null") print("Contacting {}...".format(ip),end='') if response==0: - nodes.append() + nodes.append(ip) print("=> Found!!") else: print("") + with open(CONF["paths"]["nodes"], "w") as f: + f.write(json.dumps(nodes)) +def check(timeout=0.1): + nodes_path=CONF["paths"]["nodes"] + nodes=None + if os.path.exists(nodes_path): + with open(nodes_path) as f: + nodes=json.load(f) + if not nodes == None: + fail=False + for ip in nodes: + print("Contacting {}...".format(ip),end='') + response = os.system("ping -c 1 -W " + str(timeout)+ " " + ip + " &>/dev/null") + if response == 0: + print("") + else: + fail=True + print("=> Not responding!!") + + if not fail: + print("Succeed: All nodes are reachable") + else: + print("Error: Some of your nodes are not reachable") |
