summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clusterman/__main__.py3
-rw-r--r--clusterman/commands/node.py37
-rw-r--r--clusterman/config.py5
3 files changed, 39 insertions, 6 deletions
diff --git a/clusterman/__main__.py b/clusterman/__main__.py
index 706a288..8f3c416 100644
--- a/clusterman/__main__.py
+++ b/clusterman/__main__.py
@@ -18,7 +18,8 @@ def main():
# Run the proper handler
if args.command == "node":
print("Do node related stuff")
- node.scan("10.0.0.1","10.0.0.10")
+ #node.scan("10.0.0.1","10.0.0.10")
+ node.check()
if args.command == "frontend":
print("Do frontend related stuff")
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")
diff --git a/clusterman/config.py b/clusterman/config.py
index fefd753..72a8b2b 100644
--- a/clusterman/config.py
+++ b/clusterman/config.py
@@ -8,6 +8,11 @@ class Config:
DEFAULT_CONFIG = {
"paths": {
"nodes": os.path.join(CONF_DIR,"nodeslist.json")
+ },
+ "cluster": {
+ "ip4_from": "10.128.0.133",
+ "ip4_to": "10.128.0.140",
+ "ip4_ignore": ["10.0.0.5", "10.0.0.1"]
}
}