+++ /dev/null
-#!/usr/bin/python
-
-from monitor.wrapper import plc
-api = plc.getAuthAPI()
-
-from monitor import database
-
-import time
-from monitor.common import *
-
-from monitor import util
-from monitor import parser as parsermodule
-from monitor.model import *
-
-
-parser = parsermodule.getParser()
-parser.set_defaults(site=None,
- findbad=False,
- enable=False,
- disable=False
- )
-parser.add_option("", "--site", dest="site", metavar="login_base",
- help="The sitename to present")
-parser.add_option("", "--findbad", dest="findbad", action="store_true",
- help="Re-run findbad on the nodes we're going to check before acting.")
-parser.add_option("", "--enable", dest="enable", action="store_true",
- help="")
-parser.add_option("", "--disable", dest="disable", action="store_true",
- help="")
-config = parsermodule.parse_args(parser)
-
-def color_sitestatus(status):
- if status == "good":
- return green(status)
- elif status == "down":
- return red(status)
- else:
- return status
-
-
-def pf_print_siteinfo(sitename):
- pf = PersistFlags(sitename, 1, db='site_persistflags')
- if pf.checkattr('last_changed'):
- print " Checked: %s" % diff_time(pf.last_checked)
- print "\t status | nodes up / total | last_change"
- print "\t %6s | %8s / %5s | %s" % \
- ( color_sitestatus(pf.status), pf.nodes_up, pf.nodes_total, diff_time(pf.last_changed) )
- else:
- print "no such site in pf"
- del pf
-
-
-def plc_print_siteinfo(plcsite):
- print ""
- print " Checked: %s" % time.ctime()
- print "\t login_base | used / max | enabled | last_updated "
- print "\t %13s | %4s / %3s | %7s | %12s" % \
- (plcsite['login_base'],
- len(plcsite['slice_ids']),
- plcsite['max_slices'],
- plcsite['enabled'],
- diff_time(plcsite['last_updated']))
-
- print ""
- nodes = plccache.GetNodesByIds(plcsite['node_ids'])
- print " Checked: %s" % time.ctime()
- print "\t host | state | obs | created | updated | last_contact "
- for plcnode in nodes:
- fbnode = FindbadNodeRecord.get_latest_by(hostname=plcnode['hostname']).to_dict()
- plcnode['state'] = color_boot_state(get_current_state(fbnode))
- print "\t %37s | %5s | %5s | %11.11s | %11.11s | %12s " % \
- (plcnode['hostname'], color_boot_state(plcnode['boot_state']), plcnode['state'],
- diff_time(plcnode['date_created']), diff_time(plcnode['last_updated']),
- diff_time(plcnode['last_contact']))
-
-
-act_all = database.dbLoad("act_all")
-
-for site in config.args:
- config.site = site
-
- plc_siteinfo = plccache.GetSitesByName([config.site])
- url = "https://www.planet-lab.org/db/sites/index.php?site_pattern="
- plc_siteinfo['url'] = url + plc_siteinfo['login_base']
-
- if config.findbad:
- # rerun findbad with the nodes in the given nodes.
- import os
- file = "findbad.txt"
- nodes = plccache.GetNodesByIds(plc_siteinfo['node_ids'])
- nodes = [ n['hostname'] for n in nodes ]
- util.file.setFileFromList(file, nodes)
- os.system("./findbad.py --cachenodes --debug=0 --dbname=findbad --increment --nodelist %s" % file)
-
- print "%(login_base)s %(url)s" % plc_siteinfo
- pf_print_siteinfo(config.site)
- plc_print_siteinfo(plc_siteinfo)
-
- if config.enable:
- api.UpdateSite(config.site, {'enabled' : True})
- if config.disable:
- api.UpdateSite(config.site, {'enabled' : False})