# Given a nodelist, it could tag each one with a nodegroup name.
# *
-import plc
+from monitor import database
+from monitor.database.info.model import FindbadNodeRecord
+from monitor import util
+from monitor.wrapper import plc
+from monitor import parser as parsermodule
+
api = plc.getAuthAPI()
-from optparse import OptionParser
-from sets import Set
from nodequery import verify,query_to_dict,node_select
-
-from nodecommon import *
-import database
+from monitor.common import *
+from sets import Set
def main():
- from config import config
- fb = database.dbLoad("findbad")
-
- parser = OptionParser()
- parser.set_defaults(nodegroup="Alpha",
- node=None,
- nodelist=None,
- list=True,
+
+ parser = parsermodule.getParser(['nodesets'])
+ parser.set_defaults( list=True,
add=False,
nocolor=False,
notng=False,
- delete=False,
- nodeselect=None,
- )
+ delete=False,)
+
parser.add_option("", "--not", dest="notng", action="store_true",
help="All nodes NOT in nodegroup.")
- parser.add_option("", "--nodegroup", dest="nodegroup", metavar="NodegroupName",
- help="Specify a nodegroup to perform actions on")
- parser.add_option("", "--nodeselect", dest="nodeselect", metavar="querystring",
- help="Specify a query to perform on findbad db")
- parser.add_option("", "--site", dest="site", metavar="site name",
- help="Specify a site to view node status")
-
parser.add_option("", "--nocolor", dest="nocolor", action="store_true",
help="Enable color")
parser.add_option("", "--list", dest="list", action="store_true",
help="Add nodes to the given nodegroup")
parser.add_option("", "--delete", dest="delete", action="store_true",
help="Delete nodes from the given nodegroup")
- parser.add_option("", "--node", dest="node", metavar="nodename.edu",
- help="A single node name to add to the nodegroup")
- parser.add_option("", "--nodelist", dest="nodelist", metavar="list.txt",
- help="Use all nodes in the given file for operation.")
- config = config(parser)
- config.parse_args()
+
+ parser = parsermodule.getParser(['defaults'], parser)
+ config = parsermodule.parse_args(parser)
# COLLECT nodegroups, nodes and node lists
if config.node or config.nodelist:
if config.node:
hostlist = [ config.node ]
else:
- hostlist = config.getListFromFile(config.nodelist)
+ hostlist = util.file.getListFromFile(config.nodelist)
# NOTE: preserve order given in file. Otherwise, return values are not in order
# given to GetNodes
nodelist = []
for h in hostlist:
- nodelist += api.GetNodes(h)
+ nodelist.append( plccache.GetNodeByName(h) )
- #nodelist = api.GetNodes(hostlist)
group_str = "Given"
elif config.site:
- site = api.GetSites(config.site)
+ site = plccache.GetSitesByName([config.site])
if len (site) > 0:
site = site[0]
- nodelist = api.GetNodes(site['node_ids'])
+ nodelist = plccache.GetNodesByIds(site['node_ids'])
else:
nodelist = []
elif config.nodeselect:
hostlist = node_select(config.nodeselect)
- nodelist = api.GetNodes(hostlist)
+ nodelist = [ plccache.GetNodeByName(h) for h in hostlist ]
group_str = "selection"
else:
ng = api.GetNodeGroups({'name' : config.nodegroup})
- nodelist = api.GetNodes(ng[0]['node_ids'])
+ nodelist = plccache.GetNodesByIds(ng[0]['node_ids'])
group_str = config.nodegroup
ng_nodes = nodelist
# Get all nodes
- all_nodes = api.GetNodes({'peer_id': None})
+ all_nodes = plccache.l_nodes
# remove ngnodes from all node list
ng_list = [ x['hostname'] for x in ng_nodes ]
elif config.list:
print " ---- Nodes in the %s Node Group ----" % group_str
+ print " Hostname plc obs pcu key kernel last_contact, last change, comon uptime"
i = 1
for node in nodelist:
print "%-2d" % i,
- print nodegroup_display(node, fb, config)
+ fbrec = FindbadNodeRecord.get_latest_by(hostname=node['hostname'])
+ fbdata = fbrec.to_dict()
+ print nodegroup_display(node, fbdata, config)
i += 1
else: