Refactor method node_list in status.py

Extract same logics into one internal function, and call it
when get one node's values or iterate some nodes' value.

Change-Id: Idd536931a40f2369d3bfc4c623e94844c95f78a0
This commit is contained in:
ChangBo Guo(gcb) 2018-02-02 17:41:48 +08:00
parent a2c2983407
commit 13ac2512ba
1 changed files with 35 additions and 60 deletions

View File

@ -54,75 +54,50 @@ def node_list(zk, node_id=None, detail=False):
if detail:
headers += detail_headers
def _get_node_values(node):
locked = "unlocked"
try:
zk.lockNode(node, blocking=False)
except Exception:
locked = "locked"
else:
zk.unlockNode(node)
values = [
node.id,
node.provider,
node.type,
node.external_id,
node.public_ipv4,
node.public_ipv6,
node.state,
age(node.state_time),
locked
]
if detail:
values += [
node.hostname,
node.private_ipv4,
node.az,
node.connection_port,
node.launcher,
node.allocated_to,
node.hold_job,
node.comment
]
return values
t = PrettyTable(headers)
t.align = 'l'
if node_id:
node = zk.getNode(node_id)
if node:
locked = "unlocked"
try:
zk.lockNode(node, blocking=False)
except Exception:
locked = "locked"
else:
zk.unlockNode(node)
values = [
node.id,
node.provider,
node.type,
node.external_id,
node.public_ipv4,
node.public_ipv6,
node.state,
age(node.state_time),
locked
]
if detail:
values += [
node.hostname,
node.private_ipv4,
node.az,
node.connection_port,
node.launcher,
node.allocated_to,
node.hold_job,
node.comment
]
values = _get_node_values(node)
t.add_row(values)
else:
for node in zk.nodeIterator():
locked = "unlocked"
try:
zk.lockNode(node, blocking=False)
except Exception:
locked = "locked"
else:
zk.unlockNode(node)
values = [
node.id,
node.provider,
node.type,
node.external_id,
node.public_ipv4,
node.public_ipv6,
node.state,
age(node.state_time),
locked
]
if detail:
values += [
node.hostname,
node.private_ipv4,
node.az,
node.connection_port,
node.launcher,
node.allocated_to,
node.hold_job,
node.comment
]
values = _get_node_values(node)
t.add_row(values)
return str(t)