diff options
Diffstat (limited to 'clusterman/commands/node.py')
| -rw-r--r-- | clusterman/commands/node.py | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/clusterman/commands/node.py b/clusterman/commands/node.py index e949887..24759f0 100644 --- a/clusterman/commands/node.py +++ b/clusterman/commands/node.py @@ -2,6 +2,25 @@ import os, json, time, re, sys from clusterman.config import CONF +def get_node_in_group(group): + nodes_path=CONF.NODE_FILE + nodes=None + if os.path.exists(nodes_path): + with open(nodes_path) as f: + nodes=json.load(f) + # Search + ingroup=list() + if nodes is not None and group in CONF["cluster"]["groups"]: + patterns=[re.compile(pattern) for pattern in CONF["cluster"]["groups"][group]] + for node in nodes: + for pattern in patterns: + if pattern.match(node): + ingroup.append(node) + break; + return ingroup + + + def ls(group=None): nodes_path=CONF.NODE_FILE nodes=None @@ -11,20 +30,12 @@ def ls(group=None): else: print("Please perform a scan before") exit(0) - # Setup group pattern - pattern=None - if group is not None: - if group in CONF["cluster"]["groups"]: - pattern = re.compile(CONF["cluster"]["groups"][group]) - else: - print("Group {} not found".format(group)) - sys.exit(1) # Print nodes - for node in nodes: - if pattern is not None: - if pattern.match(node): - print(node) - else: + if group is not None: + for node in get_node_in_group(group): + print(node) + else: + for node in nodes: print(node) def scan(timeout): |
