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.
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()
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
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)
"""
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&" + \
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
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
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():
import sys
import time
from monitor.model import *
-from nodecommon import *
+from monitor.common import *
def get_filefromglob(d, str):
import os
import time
from monitor.model import *
-from nodecommon import *
+from monitor.common import *
#from monitor.model import node_end_record, PersistFlags
parser = parsermodule.getParser()
import sys
from monitor import database
-from nodecommon import *
+from monitor.common import *
from monitor.model import Record
import glob
import os
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 *
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
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 *
from pcucontrol import reboot
import time
-from nodecommon import *
+from monitor.common import *
from monitor import util
from monitor import parser as parsermodule
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();
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
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,
# 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: \
]
# 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,
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,
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
# 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
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()