From 2ecb77e4a1817ecc7ce62dd59fefbb701eac6a83 Mon Sep 17 00:00:00 2001 From: Stephen Soltesz Date: Thu, 8 Jan 2009 22:05:36 +0000 Subject: [PATCH] moved nodecommon.py into monitor module updated many files that imported nodecommon added 'node-discovered' message to eamilZabbix added 'node-discovered' message to zabbixsite.py --- findbad.py | 2 +- findbadpcu.py | 2 +- grouprins.py | 2 +- nodecommon.py => monitor/common.py | 0 monitor/database/zabbixapi/emailZabbix.py | 12 ++++++++++ monitor/scanapi.py | 2 +- nodebad.py | 2 +- nodeconfig.py | 2 +- nodegroups.py | 2 +- nodehistory.py | 2 +- nodeinfo.py | 2 +- nodequery.py | 2 +- pcubad.py | 2 +- showlatlon.py | 2 +- sitebad.py | 2 +- siteinfo.py | 2 +- zabbix/zabbix-auto-login.diff | 5 +++- zabbix/zabbixsite.py | 28 ++++++++++++++++------- zabbix/zabbixsync.py | 9 ++++---- 19 files changed, 55 insertions(+), 27 deletions(-) rename nodecommon.py => monitor/common.py (100%) diff --git a/findbad.py b/findbad.py index 4c73e45..78ba65e 100755 --- a/findbad.py +++ b/findbad.py @@ -20,7 +20,7 @@ from monitor.scanapi import * from nodequery import verify,query_to_dict,node_select import traceback -from nodecommon import nmap_port_status +from monitor.common import nmap_port_status #print "starting sqlfindbad.py" # QUERY all nodes. diff --git a/findbadpcu.py b/findbadpcu.py index 9feb62d..2d27f79 100755 --- a/findbadpcu.py +++ b/findbadpcu.py @@ -20,7 +20,7 @@ from monitor import database from monitor import util from monitor.wrapper import plc, plccache from nodequery import pcu_select -from nodecommon import nmap_port_status +from monitor.common import nmap_port_status from monitor.scanapi import * plc_lock = threading.Lock() diff --git a/grouprins.py b/grouprins.py index ba3ba88..c30e85d 100755 --- a/grouprins.py +++ b/grouprins.py @@ -24,7 +24,7 @@ api = plc.getAuthAPI() import traceback from optparse import OptionParser -from nodecommon import * +from monitor.common import * from nodequery import verify,query_to_dict,node_select from monitor.model import * import os diff --git a/nodecommon.py b/monitor/common.py similarity index 100% rename from nodecommon.py rename to monitor/common.py diff --git a/monitor/database/zabbixapi/emailZabbix.py b/monitor/database/zabbixapi/emailZabbix.py index 3f61fff..740ac1e 100644 --- a/monitor/database/zabbixapi/emailZabbix.py +++ b/monitor/database/zabbixapi/emailZabbix.py @@ -119,6 +119,18 @@ You can acknowledge this notice by visiting the link below or by letting us know http://%(hostname)s/zabbix/acknow.php?eventid={EVENT.ID} http://%(hostname)s/zabbix/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID} +Thank you for your help, + -- PlanetLab Central (%(support_email)s) +""" + node_discovered_subject = """Discovered {HOSTNAME} and online""" + node_discovered = """ +Thank you for registering and installing this machine: + + {HOSTNAME} + +Our monitoring infrastructure has detected it, and in the future it will alert you in the event of unexpected downtime. + + {TRIGGER.NAME}: {STATUS} Thank you for your help, -- PlanetLab Central (%(support_email)s) """ diff --git a/monitor/scanapi.py b/monitor/scanapi.py index bbc99d7..194ab40 100644 --- a/monitor/scanapi.py +++ b/monitor/scanapi.py @@ -21,7 +21,7 @@ from monitor.sources import comon from monitor.wrapper import plc, plccache import traceback -from nodecommon import nmap_port_status +from monitor.common import nmap_port_status COMON_COTOPURL= "http://summer.cs.princeton.edu/status/tabulator.cgi?" + \ "table=table_nodeview&" + \ diff --git a/nodebad.py b/nodebad.py index f9f6edf..767a4fe 100755 --- a/nodebad.py +++ b/nodebad.py @@ -8,7 +8,7 @@ from datetime import datetime,timedelta from nodequery import verify,query_to_dict,node_select -from nodecommon import * +from monitor.common import * from monitor import config from monitor.wrapper import plc,plccache diff --git a/nodeconfig.py b/nodeconfig.py index b205900..401ff83 100755 --- a/nodeconfig.py +++ b/nodeconfig.py @@ -7,7 +7,7 @@ api = plc.getAuthAPI() from monitor import parser as parsermodule from sets import Set -from nodecommon import * +from monitor.common import * from monitor import database from monitor.database import FindbadNodeRecord diff --git a/nodegroups.py b/nodegroups.py index 9e14e2f..8302404 100755 --- a/nodegroups.py +++ b/nodegroups.py @@ -22,7 +22,7 @@ from monitor import parser as parsermodule api = plc.getAuthAPI() from nodequery import verify,query_to_dict,node_select -from nodecommon import * +from monitor.common import * from sets import Set def main(): diff --git a/nodehistory.py b/nodehistory.py index 7ea30fb..6302823 100755 --- a/nodehistory.py +++ b/nodehistory.py @@ -12,7 +12,7 @@ import calendar import sys import time from monitor.model import * -from nodecommon import * +from monitor.common import * def get_filefromglob(d, str): import os diff --git a/nodeinfo.py b/nodeinfo.py index 29d77bb..9afed5c 100755 --- a/nodeinfo.py +++ b/nodeinfo.py @@ -12,7 +12,7 @@ from pcucontrol import reboot import time from monitor.model import * -from nodecommon import * +from monitor.common import * #from monitor.model import node_end_record, PersistFlags parser = parsermodule.getParser() diff --git a/nodequery.py b/nodequery.py index bcebf15..dfe3f95 100755 --- a/nodequery.py +++ b/nodequery.py @@ -3,7 +3,7 @@ import sys from monitor import database -from nodecommon import * +from monitor.common import * from monitor.model import Record import glob import os diff --git a/pcubad.py b/pcubad.py index 6ca478f..181f001 100755 --- a/pcubad.py +++ b/pcubad.py @@ -15,7 +15,7 @@ from monitor.database.dborm import mon_session as session from monitor.wrapper import plc,plccache from monitor.const import MINUP -from nodecommon import * +from monitor.common import * from nodequery import verify,query_to_dict,node_select from monitor.model import * diff --git a/showlatlon.py b/showlatlon.py index a556953..1d06594 100755 --- a/showlatlon.py +++ b/showlatlon.py @@ -9,7 +9,7 @@ from datetime import datetime, timedelta import database import comon -from nodecommon import color_pcu_state, datetime_fromstr +from monitor.common import color_pcu_state, datetime_fromstr from nodehistory import get_filefromglob import time import traceback diff --git a/sitebad.py b/sitebad.py index 781cab6..5132233 100755 --- a/sitebad.py +++ b/sitebad.py @@ -14,7 +14,7 @@ from monitor.database.info.model import HistorySiteRecord, FindbadNodeRecord, se from monitor.wrapper import plc, plccache from monitor.const import MINUP -from nodecommon import * +from monitor.common import * from nodequery import verify,query_to_dict,node_select from monitor.model import * diff --git a/siteinfo.py b/siteinfo.py index 9101443..cfce458 100755 --- a/siteinfo.py +++ b/siteinfo.py @@ -7,7 +7,7 @@ from monitor import database from pcucontrol import reboot import time -from nodecommon import * +from monitor.common import * from monitor import util from monitor import parser as parsermodule diff --git a/zabbix/zabbix-auto-login.diff b/zabbix/zabbix-auto-login.diff index a55f138..3d79cea 100644 --- a/zabbix/zabbix-auto-login.diff +++ b/zabbix/zabbix-auto-login.diff @@ -14,13 +14,16 @@ if(isset($_REQUEST['enter'])&&($_REQUEST['enter']=='Enter')){ $name = get_request('name',''); -@@ -154,6 +157,10 @@ +@@ -154,6 +157,13 @@ $row["url"] = get_profile('web.menu.view.last','index.php'); unset($USER_DETAILS); } + if ( array_key_exists('url', $_GET) ) + { + $row['url'] = urldecode($_GET['url']); ++ } ++ if ( $row['url'] == 'index.php' ) { ++ $row['url'] = 'dashboard.php'; + } redirect($row["url"]); die(); diff --git a/zabbix/zabbixsite.py b/zabbix/zabbixsite.py index 419b84b..07ad9d4 100755 --- a/zabbix/zabbixsite.py +++ b/zabbix/zabbixsite.py @@ -146,9 +146,6 @@ def merge_iplist(iplist): def setup_site(loginbase, techemail, piemail, iplist): - # TODO: send a message when host is discovered. - - # TODO: update 'discovered' hosts with dns name. # TODO: remove old nodes that are no longer in the plcdb. # TODO: remove old users that are no longer in the plcdb. # TODO: consider creating two user groups for Tech & PI emails @@ -162,11 +159,14 @@ def setup_site(loginbase, techemail, piemail, iplist): raise Exception("iplist length is too long!") BI_WEEKLY_ESC_PERIOD = int(60*60*24) - #BI_WEEKLY_ESC_PERIOD = int(60) # testing... + DISCOVERY_DELAY = 3600 + BI_WEEKLY_ESC_PERIOD = int(240) # testing... + DISCOVERY_DELAY = 120 # testing # User Group site_user_group = UsrGrp.find_or_create(name=USERGROUP_NAME % loginbase) - for user in set(techemail + piemail + [config.cc_email]): + #for user in set(techemail + piemail + [config.cc_email]): + for user in set([config.cc_email]): if not user: continue # USER u = User.find_or_create(alias=user, type=1, @@ -193,7 +193,7 @@ def setup_site(loginbase, techemail, piemail, iplist): # DISCOVERY RULE & CHECK dr = DiscoveryRule.find_or_create(name=discovery_rule_name, - delay=3600, + delay=DISCOVERY_DELAY, proxy_hostid=0, set_if_new = {'iprange':iplist}, exec_if_new=lambda obj: \ @@ -234,6 +234,15 @@ def setup_site(loginbase, techemail, piemail, iplist): ] # THEN a.actionoperation_list=[ + # Send Email + ActionOperation( + operationtype=defines.OPERATION_TYPE_MESSAGE, + shortdata=mailtxt.node_discovered_subject, + longdata=mailtxt.node_discovered, + object=defines.OPERATION_OBJECT_GROUP, + objectid=site_user_group.usrgrpid, + esc_period=0, esc_step_to=1, esc_step_from=1, + ), # Add Host ActionOperation( operationtype=defines.OPERATION_TYPE_HOST_ADD, @@ -249,7 +258,7 @@ def setup_site(loginbase, techemail, piemail, iplist): operationtype=defines.OPERATION_TYPE_GROUP_ADD, object=0, objectid=site_host_group.groupid, esc_period=0, esc_step_from=1, esc_step_to=1), - # Link to Template 'Template_Linux_Minimal' + # Link to Template 'Template_Linux_PLC_Host' ActionOperation( operationtype=defines.OPERATION_TYPE_TEMPLATE_ADD, object=0, objectid=plctemplate.hostid, @@ -258,7 +267,10 @@ def setup_site(loginbase, techemail, piemail, iplist): else: # TODO: verify iplist is up-to-date # NOTE: len(a.actioncondition_list) > 0 - ip_condition = a.actioncondition_list[0] + #ip_condition = a.actioncondition_list[0] + ip_condition = filter(lambda x: x.conditiontype == defines.CONDITION_TYPE_DHOST_IP, a.actioncondition_list)[0] + print ip_condition.conditiontype + print defines.CONDITION_TYPE_DHOST_IP assert ip_condition.conditiontype == defines.CONDITION_TYPE_DHOST_IP if ip_condition.value != iplist: ip_condition.value = iplist diff --git a/zabbix/zabbixsync.py b/zabbix/zabbixsync.py index 1c0e405..e35798c 100755 --- a/zabbix/zabbixsync.py +++ b/zabbix/zabbixsync.py @@ -20,9 +20,10 @@ def get_site_iplist(loginbase): # TODO: if it is, then we need to break up the discovery rule. ip_list = "" for node in node_list: - ip = netid2ip[node['nodenetwork_ids'][0]] - if len(ip_list) > 0: ip_list += "," - ip_list += ip + if len(node['nodenetwork_ids']) > 0: + ip = netid2ip[node['nodenetwork_ids'][0]] + if len(ip_list) > 0: ip_list += "," + ip_list += ip return ip_list @@ -59,7 +60,7 @@ if __name__=="__main__": query.update({'login_base' : opts.site}) sites = api.GetSites(query, ['login_base']) - for site in sites: + for site in sites[:10]: add_loginbase(site['login_base']) session.flush() -- 2.43.0