From ff2290a6082c4da46fd03d5ff1baee728874976a Mon Sep 17 00:00:00 2001 From: Stephen Soltesz Date: Tue, 24 Mar 2009 15:11:26 +0000 Subject: [PATCH] add actions to gui add penalty_applied bit --- monitor/database/info/history.py | 3 +- monitor/wrapper/plc.py | 56 +++++++++++++++++++ web/MonitorWeb/monitorweb/controllers.py | 5 +- .../monitorweb/templates/pcuview.kid | 48 ++++++++++++++-- zabbix/zabbixsync.py | 4 +- 5 files changed, 107 insertions(+), 9 deletions(-) diff --git a/monitor/database/info/history.py b/monitor/database/info/history.py index e31be2e..6f04c44 100644 --- a/monitor/database/info/history.py +++ b/monitor/database/info/history.py @@ -55,7 +55,8 @@ class HistorySiteRecord(Entity): message_queue = Field(String, default=None) message_created = Field(DateTime, default=None) - penalty_level = Field(Int, default=0) + penalty_level = Field(Int, default=0) + penalty_applied = Field(Boolean, default=False) @classmethod def by_loginbase(cls, loginbase): diff --git a/monitor/wrapper/plc.py b/monitor/wrapper/plc.py index 2ab1808..37519a5 100644 --- a/monitor/wrapper/plc.py +++ b/monitor/wrapper/plc.py @@ -327,6 +327,19 @@ def nodePOD(nodename): except Exception, exc: logger.info("nodePOD: %s" % exc) +''' +Freeze all site slices. +''' +def suspendSiteSlices(loginbase): + api = xmlrpclib.Server(auth.server, verbose=False) + for slice in slices(loginbase): + logger.info("Suspending slice %s" % slice) + try: + if not debug: + api.AddSliceAttribute(auth.auth, slice, "enabled", "0") + except Exception, exc: + logger.info("suspendSlices: %s" % exc) + ''' Freeze all site slices. ''' @@ -340,6 +353,25 @@ def suspendSlices(nodename): except Exception, exc: logger.info("suspendSlices: %s" % exc) +def enableSiteSlices(loginbase): + api = xmlrpclib.Server(auth.server, verbose=False, allow_none=True) + for slice in slices(loginbase): + logger.info("Enabling slices %s" % slice) + try: + if not debug: + slice_list = api.GetSlices(auth.auth, {'name': slice}, None) + if len(slice_list) == 0: + return + slice_id = slice_list[0]['slice_id'] + l_attr = api.GetSliceAttributes(auth.auth, {'slice_id': slice_id}, None) + for attr in l_attr: + if "enabled" == attr['name'] and attr['value'] == "0": + logger.info("Deleted enable=0 attribute from slice %s" % slice) + api.DeleteSliceAttribute(auth.auth, attr['slice_attribute_id']) + except Exception, exc: + logger.info("enableSiteSlices: %s" % exc) + print "exception: %s" % exc + def enableSlices(nodename): api = xmlrpclib.Server(auth.server, verbose=False, allow_none=True) for slice in slices(siteId(nodename)): @@ -369,6 +401,17 @@ def enableSlices(nodename): # logger.info("Suspending slice %s" % slice) # api.SliceAttributeAdd(auth.auth, slice, "plc_slice_state", {"state" : "suspended"}) # +def enableSiteSliceCreation(loginbase): + api = xmlrpclib.Server(auth.server, verbose=False, allow_none=True) + try: + logger.info("Enabling slice creation for site %s" % loginbase) + if not debug: + logger.info("\tcalling UpdateSite(%s, enabled=True)" % loginbase) + api.UpdateSite(auth.auth, loginbase, {'enabled': True}) + except Exception, exc: + print "ERROR: enableSiteSliceCreation: %s" % exc + logger.info("ERROR: enableSiteSliceCreation: %s" % exc) + def enableSliceCreation(nodename): api = xmlrpclib.Server(auth.server, verbose=False, allow_none=True) try: @@ -381,6 +424,19 @@ def enableSliceCreation(nodename): print "ERROR: enableSliceCreation: %s" % exc logger.info("ERROR: enableSliceCreation: %s" % exc) +''' +Removes site's ability to create slices. Returns previous max_slices +''' +def removeSiteSliceCreation(sitename): + print "removeSiteSliceCreation(%s)" % sitename + api = xmlrpclib.Server(auth.server, verbose=False) + try: + logger.info("Removing slice creation for site %s" % sitename) + if not debug: + api.UpdateSite(auth.auth, sitename, {'enabled': False}) + except Exception, exc: + logger.info("removeSiteSliceCreation: %s" % exc) + ''' Removes ability to create slices. Returns previous max_slices ''' diff --git a/web/MonitorWeb/monitorweb/controllers.py b/web/MonitorWeb/monitorweb/controllers.py index 2112979..617c46a 100644 --- a/web/MonitorWeb/monitorweb/controllers.py +++ b/web/MonitorWeb/monitorweb/controllers.py @@ -279,6 +279,7 @@ class Root(controllers.RootController): sitequery=[] pcuquery=[] nodequery=[] + actions=[] exceptions = None for key in data: @@ -291,6 +292,8 @@ class Root(controllers.RootController): exceptions = data['exceptions'] if loginbase: + actions = ActionRecord.query.filter_by(loginbase=loginbase).order_by(ActionRecord.date_created.desc()) + actions = [ a for a in actions ] sitequery = [HistorySiteRecord.by_loginbase(loginbase)] pcus = {} for plcnode in site_lb2hn[loginbase]: @@ -338,7 +341,7 @@ class Root(controllers.RootController): prep_pcu_for_display(pcu) pcuquery += [pcu] - return dict(sitequery=sitequery, pcuquery=pcuquery, nodequery=nodequery, exceptions=exceptions) + return dict(sitequery=sitequery, pcuquery=pcuquery, nodequery=nodequery, actions=actions, exceptions=exceptions) @expose(template="monitorweb.templates.pculist") def pcu(self, filter='all'): diff --git a/web/MonitorWeb/monitorweb/templates/pcuview.kid b/web/MonitorWeb/monitorweb/templates/pcuview.kid index c9e1bd4..a39810e 100644 --- a/web/MonitorWeb/monitorweb/templates/pcuview.kid +++ b/web/MonitorWeb/monitorweb/templates/pcuview.kid @@ -141,7 +141,7 @@ from links import * Hostname last_contact - Last_checked + last_checked Port Status @@ -193,11 +193,47 @@ from links import *
-

Convenience Calls

- -
+ +

Recent Actions

+

+ There are no recent actions taken for this site. +

+ + + + + + + + + + + + + + + + + + + + + + + +
DateAction taken onAction TypeMessage IDErrors
+ + ${act.hostname} + + + ${act.loginbase} +
+ + +

Convenience Calls

+
ssh -o PasswordAuthentication=yes -o PubkeyAuthentication=no diff --git a/zabbix/zabbixsync.py b/zabbix/zabbixsync.py index 5cc2cd3..aaee4ff 100755 --- a/zabbix/zabbixsync.py +++ b/zabbix/zabbixsync.py @@ -44,7 +44,7 @@ if __name__=="__main__": from monitor import parser as parsermodule parser = parsermodule.getParser(['cacheset']) - parser.set_defaults( setupglobal=False, syncsite=True, site=None, setupids=False) + parser.set_defaults( setupglobal=False, syncsite=True, site=None, sitelist=None, setupids=False) parser.add_option("", "--setupids", action="store_true", dest="setupids", help="Setup global IDs.") parser.add_option("", "--setupglobal", action="store_true", dest="setupglobal", @@ -53,6 +53,8 @@ if __name__=="__main__": help="Do not sync sites.") parser.add_option("", "--site", dest="site", help="Sync only given site name.") + parser.add_option("", "--sitelist", dest="sitelist", + help="Sync only given site names in the list.") opts = parsermodule.parse_args(parser) os.system("""echo '' > /usr/share/monitor/nodelist.txt""") -- 2.43.0