import lia.Monitor.JiniClient.Store.Main; import lia.Monitor.monitor.monPredicate; import lia.Monitor.monitor.Result; import lia.Monitor.monitor.eResult; import lia.Monitor.monitor.ExtResult; import lia.Monitor.monitor.AccountingResult; import lia.Monitor.monitor.DataReceiver; import lia.Monitor.monitor.MFarm; import lia.Monitor.DataCache.DataSelect; import lia.Monitor.Store.TransparentStoreFast; import lia.Monitor.Store.TransparentStoreFactory; /*START ADDED CODE*/ import lia.util.mail.DirectMailSender; /*END ADDED CODE*/ import java.util.Vector; public class TriggerClient { public static void main(String args[]){ // start the repository service Main jClient = new Main(); // register a MyDataReceiver object to receive any new information jClient.addDataReceiver(new MyDataReceiver()); try { Thread.sleep(60*1000); }catch(Throwable t) { } //Uncomment this if you would like to stop the client when main() exits //jClient.stopIt(); } private static class MyDataReceiver implements DataReceiver { /*START ADDED CODE*/ /* * Recipient's addresses used by this filter/trigger to notify the problem */ private final static String[] RCPT = {"fvlingen@caltech.edu"}; //every five minutes private final static long MAIL_DELAY_NOTIF = 1 * 60 * 6 * 1000; /* * internal var used to keep track of last sent email */ private long lastSentMail = 0; /** * threshold...above this we have an alarm() to trigger */ public final static double MAX_LOAD = .1; private String msg=""; /*END ADDED CODE*/ private Vector vWatchFor; private TransparentStoreFast store; public MyDataReceiver(){ vWatchFor = new Vector(); vWatchFor.add(new monPredicate("*", "*", "*", -1, -1, new String[]{"var_i"}, null)); try{ store = (TransparentStoreFast) TransparentStoreFactory.getStore(); } catch(Exception ex){ System.out.println("ERROR: "+ex.toString()); } } public void addResult(Result r){ for (int i=0; i0 ? ""+(d/vData.size()) : "NA")+"\n"); } } } } public void addResult(eResult er){ } public void addResult(ExtResult er){ } public void addResult(AccountingResult ar){ } public void updateConfig(MFarm f){ } /*START ADDED CODE*/ public void alarm() { if ( lastSentMail + MAIL_DELAY_NOTIF < System.currentTimeMillis() ) { System.out.println( " TriggerClient Sending mail...." ); sendMail( "support@monalisa.cern.ch", "var_i on SimpleCluster is higher than " + MAX_LOAD, "Test Message from TriggerClient@repository \n\n:"+this.msg ); lastSentMail = System.currentTimeMillis(); } else { //Take some action ... System.out.println( " TriggerClient Taking action ...." ); } } /** * Helper method to send an email to one or more RCPTs * * @param subj Subject of the mail * @param msg Body of the mail * @param from */ private void sendMail( String from, String subj, String msg ) { try { DirectMailSender.getInstance().sendMessage( "support@monalisa.cern.ch", RCPT, subj, msg ); } catch ( Throwable t ) { System.out.println( " TriggerClient Cannot send email...Got Exception: " + t.getMessage() ); } } /*END ADDED CODE*/ } }