/** Closes RabbitMQ connection, COORDINATORCMD channel, and LemonGraph * @throws Exception If the connection cannot be closed * */ public void close() throws Exception { closeChannel(channel); closeConnection(connection); log.info("Closing connection to LemonGraph."); LemonGraph.close(); JobManager.close(); }
/** */ public void cancelAllActiveJobs() throws Exception { JobManager jb = new JobManager(); List<LGJob> activeJobs = jb.getAllActive(); for (LGJob j: activeJobs) { log.info("Cancelling Job :"+j.getJobId()); sendCancel(j.getJobId()); } }
public static void feedCoordinator(int sleep, int times, ArrayList<String> approvedAdapters, JSONObject node) throws Exception { String jobId; SubmitToRabbitMQ submit = new SubmitToRabbitMQ(); for (int i = 0; i != times; i++) { LGPayload lgp = new LGPayload(); lgp.addResponseNode(node); JSONObject jobConfig = new JSONObject(); jobConfig.put("depth","6"); lgp.setJobConfig(jobConfig); submit.sendNewJobToCommandController(approvedAdapters, lgp); if (sleep > 0) { Thread.sleep(sleep); // ~500 requests/sec } } submit.close(); }
public static void feedCoordinator(int sleep, int times, ArrayList<String> approvedAdapters, JSONArray nodes) throws Exception { String jobId; SubmitToRabbitMQ submit = new SubmitToRabbitMQ(); for (int i = 0; i != times; i++) { LGPayload lgp = new LGPayload(); lgp.addResponseNodes(nodes); JSONObject jobConfig = new JSONObject(); jobConfig.put("depth","6"); lgp.setJobConfig(jobConfig); submit.sendNewJobToCommandController(approvedAdapters, lgp); if (sleep > 0) { Thread.sleep(sleep); // ~500 requests/sec } } submit.close(); }
/** */ public void sendCancel(String jobId) throws Exception { openConnections(); ArrayList approvedAdapters = new ArrayList<String>(); LGPayload seedPayload = new LGPayload(jobId); LGCommand cmd = new LGCommand(LGCommand.COMMAND_TYPE_STOP, jobId, 100, 255, approvedAdapters, seedPayload); channel.basicPublish("", LGConstants.LEMONGRENADE_COORDINATORCMD , new AMQP.BasicProperties.Builder().priority(LGConstants.QUEUE_PRIORITY_COMMAND).build() , cmd.toByteArray()); }
/** * See api/Job.java for complete description * @param jobId LG job ID to send to * @param approvedAdapters List of approved adapter names * @param seedPayload LGPayload to send to Command Controller */ public void sendPostActionCommandController(String jobId, ArrayList<String> approvedAdapters, LGPayload seedPayload) throws Exception { openConnections(); int ttl = 0; if (seedPayload.getJobConfig().has("ttl")) { ttl = seedPayload.getJobConfig().getInt("ttl"); } seedPayload.setJobId(jobId); LGCommand cmd = new LGCommand(LGCommand.COMMAND_TYPE_POST_ACTION, jobId, ttl, 255, approvedAdapters, seedPayload); channel.basicPublish("", LGConstants.LEMONGRENADE_COORDINATORCMD , new AMQP.BasicProperties.Builder().priority(LGConstants.QUEUE_PRIORITY_NEW_JOB).build() , cmd.toByteArray()); }
public static void main(String[] args) throws Exception { Options options; options = new Options(); CheckSystem checkSystem = new CheckSystem(); options.addOption("h", "help", false, "Show help."); cmd = parser.parse(options, args); if (cmd.hasOption("h")) { checkSystem.printUsage(); checkSystem.printUsage(); boolean zooKeeperResult = checkSystem.testZookeeper(); boolean lemonGraphResult = checkSystem.testLemonGraph(); boolean rabbitMqResult = checkSystem.testRabbit(); boolean mongoResult = checkSystem.testMongoDb(); boolean stormNimbusResult= checkSystem.testStormNimbus(); System.out.println("-----------------------"); System.out.print(" Apache Storm Nimbus..... "); printResult(stormNimbusResult); System.out.print(" RabbitMQ................ "); printResult(rabbitMqResult); System.out.print(" Zookeeper .............. "); printResult(zooKeeperResult); System.out.print(" MongoDB ................ "); printResult(mongoResult); System.out.print(" LemonGraph ............. "); printResult(lemonGraphResult);
@Override public void prepare(final Map config, final TopologyContext context) { checkRunning = false; JOB_MANAGER = new JobManager(); ADAPTER_MANAGER = new AdapterManager(); SUBMIT_TO_RABBIT = new SubmitToRabbitMQ(); LEMONGRAPH = new LemonGraph(); log.info("Performing startup reset/expire for jobs."); resetJobs();//reset required jobs on startup expireJobs();//delete required jobs on startup LAST_RESET = System.currentTimeMillis(); }
public static JSONObject buildJobSubmitObject(List approvedAdapters, String jobId, JSONObject node) { LGPayload lgp = new LGPayload(jobId); if(!node.has("type")) //add "type" if not present node.put("type","id"); if(!node.has("value")) //add value if not present node.put("value",UUID.randomUUID().toString()); lgp.addResponseNode(node); return buildJobSubmitObject(approvedAdapters, lgp); }
public void resetJobs() { Set<String> ids = MongoDBStore.getResetJobs(); if(ids.size() == 0) { log.info("No jobs ready for reset."); return; } log.info("Resetting LEMONGRENADE jobs. IDs:"+ids.toString()); Iterator iterator = ids.iterator(); String reason = "RESET date reached."; while(iterator.hasNext()) { try { String jobId = iterator.next().toString(); SUBMIT_TO_RABBIT.sendReset(jobId, reason); } catch(Exception e) { e.printStackTrace(); } } }
/** * Builds a job with dummy payload based off job_id. (for testing purposes mostly) */ public static JSONObject buildJobSubmitObject(List approvedAdapters, String jobId) { JSONObject node = new JSONObject(); node.put("status","new"); node.put("type", "id"); node.put("value",UUID.randomUUID().toString()); return buildJobSubmitObject(approvedAdapters, jobId, node); }
/** */ public JSONObject readJobFromJsonFile(String jobFile) { File f = new File(jobFile); if(f.exists()) { System.out.println("Unable to find default job file "+jobFile+"... Exiting"); System.exit(0); } JSONObject config = parseJobFile(jobFile); JSONObject job = config.getJSONObject("job"); return job; }
/** */ private JSONObject parseJobFile(String filename) { System.out.println("Parsing job file :"+filename); JSONObject jsonObject = new JSONObject(); try { String jsonData = readFile(filename); jsonObject = new JSONObject(jsonData); } catch (Exception ex) { System.out.println("Error trying to find job json file :"+filename+" "+ex.getMessage()); System.exit(-1); } return jsonObject; }
public static void main(String[] args) throws Exception { ArrayList<String> approvedAdapters = new ArrayList(); approvedAdapters.add("Fail"); JSONObject node = new JSONObject() .put("type", "id") .put("value", UUID.randomUUID()) .put("status", "test") ; //Read file of certs and create job_config object then LGPayload String job_id = UUID.randomUUID().toString(); JSONObject job_config = new JSONObject() .put("job_item", "job_value"); LGPayload payload = new LGPayload(job_id, "", job_config); //Add all nodes payload.addResponseNode(node); SubmitToRabbitMQ submit = new SubmitToRabbitMQ(); submit.sendNewJobToCommandController(approvedAdapters, payload); Thread.sleep(500); submit.close(); System.out.println("Job submitted."); } }
/** * See api/Job.java for complete description * @param jobId String job ID * @param reason String reason for reset * */ public void sendReset(String jobId, String reason) throws Exception { openConnections(); ArrayList approvedAdapters = new ArrayList<String>(); LGPayload cmdPayload = new LGPayload(jobId); JSONObject jobConfig = new JSONObject(); jobConfig.put(LGConstants.LG_RESET_REASON, reason); cmdPayload.setJobConfig(jobConfig); LGCommand cmd = new LGCommand(LGCommand.COMMAND_TYPE_RESET, jobId, 100, 255, approvedAdapters, cmdPayload); channel.basicPublish("", LGConstants.LEMONGRENADE_COORDINATORCMD , new AMQP.BasicProperties.Builder().priority(LGConstants.QUEUE_PRIORITY_COMMAND).build() , cmd.toByteArray()); }
/** * @param jobId LG job ID to send to * @param approvedAdapters List of approved adapter names * @param seedPayload LGPayload for seeding a new job * */ public void sendAddToJobToCommandController(String jobId, ArrayList<String> approvedAdapters, LGPayload seedPayload) throws Exception { openConnections(); int ttl = 0; if (seedPayload.getJobConfig().has("ttl")) { ttl = seedPayload.getJobConfig().getInt("ttl"); } try { LemonGraph.getGraph(jobId); //verify the job already exists in LemonGraph } catch(Exception e) { throw new Exception("job:"+jobId+" doesn't exist. First perform a job create. Error:"+e.getMessage()); } seedPayload.setJobId(jobId); LGCommand cmd = new LGCommand(LGCommand.COMMAND_TYPE_ADD, jobId, ttl, 255, approvedAdapters, seedPayload); channel.basicPublish("", LGConstants.LEMONGRENADE_COORDINATORCMD , new AMQP.BasicProperties.Builder().priority(LGConstants.QUEUE_PRIORITY_NEW_JOB).build() , cmd.toByteArray()); }
public static void main(String[] args) throws Exception { ArrayList<String> approvedAdapters = new ArrayList(); approvedAdapters.add("HelloWorld"); JSONObject node = new JSONObject() .put("type", "id") .put("value", UUID.randomUUID()) .put("status", "test") ; //Read file of certs and create job_config object then LGPayload String job_id = UUID.randomUUID().toString(); JSONObject job_config = new JSONObject() .put("job_item", "job_value"); LGPayload payload = new LGPayload(job_id, "", job_config); //Add all nodes payload.addResponseNode(node); SubmitToRabbitMQ submit = new SubmitToRabbitMQ(); submit.sendNewJobToCommandController(approvedAdapters, payload); Thread.sleep(500); submit.close(); System.out.println("Job submitted."); } }
public static void main(String[] args) throws Exception { ArrayList<String> approvedAdapters = new ArrayList(); approvedAdapters.add("HelloWorld"); approvedAdapters.add("PlusBang"); JSONObject node = new JSONObject() .put("type", "id") .put("value", UUID.randomUUID()) .put("status", "test") ; //Read file of certs and create job_config object then LGPayload String job_id = UUID.randomUUID().toString(); JSONObject job_config = new JSONObject() .put("job_item", "job_value"); LGPayload payload = new LGPayload(job_id, "", job_config); //Add all nodes payload.addResponseNode(node); SubmitToRabbitMQ submit = new SubmitToRabbitMQ(); submit.sendNewJobToCommandController(approvedAdapters, payload); Thread.sleep(500); submit.close(); System.out.println("Job submitted."); } }