moved nodecommon.py into monitor module
authorStephen Soltesz <soltesz@cs.princeton.edu>
Thu, 8 Jan 2009 22:05:36 +0000 (22:05 +0000)
committerStephen Soltesz <soltesz@cs.princeton.edu>
Thu, 8 Jan 2009 22:05:36 +0000 (22:05 +0000)
updated many files that imported nodecommon
added 'node-discovered' message to eamilZabbix
added 'node-discovered' message to zabbixsite.py

19 files changed:
findbad.py
findbadpcu.py
grouprins.py
monitor/common.py [moved from nodecommon.py with 100% similarity]
monitor/database/zabbixapi/emailZabbix.py
monitor/scanapi.py
nodebad.py
nodeconfig.py
nodegroups.py
nodehistory.py
nodeinfo.py
nodequery.py
pcubad.py
showlatlon.py
sitebad.py
siteinfo.py
zabbix/zabbix-auto-login.diff
zabbix/zabbixsite.py
zabbix/zabbixsync.py

index 4c73e45..78ba65e 100755 (executable)
@@ -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.
index 9feb62d..2d27f79 100755 (executable)
@@ -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()
index ba3ba88..c30e85d 100755 (executable)
@@ -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
similarity index 100%
rename from nodecommon.py
rename to monitor/common.py
index 3f61fff..740ac1e 100644 (file)
@@ -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)
 """
index bbc99d7..194ab40 100644 (file)
@@ -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&" + \
index f9f6edf..767a4fe 100755 (executable)
@@ -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
index b205900..401ff83 100755 (executable)
@@ -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
 
index 9e14e2f..8302404 100755 (executable)
@@ -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():
index 7ea30fb..6302823 100755 (executable)
@@ -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
index 29d77bb..9afed5c 100755 (executable)
@@ -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()
index bcebf15..dfe3f95 100755 (executable)
@@ -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
index 6ca478f..181f001 100755 (executable)
--- 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 *
 
index a556953..1d06594 100755 (executable)
@@ -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
index 781cab6..5132233 100755 (executable)
@@ -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 *
 
index 9101443..cfce458 100755 (executable)
@@ -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
index a55f138..3d79cea 100644 (file)
        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();
index 419b84b..07ad9d4 100755 (executable)
@@ -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
index 1c0e405..e35798c 100755 (executable)
@@ -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()