summaryrefslogtreecommitdiff
path: root/clusterman/commands/node.py
diff options
context:
space:
mode:
Diffstat (limited to 'clusterman/commands/node.py')
-rw-r--r--clusterman/commands/node.py37
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")