X-Git-Url: https://gerrit.onap.org/r/gitweb?p=dmaap%2Fmessagerouter%2Fmirroragent.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fdmaap%2Fmessagerouter%2Fmirroragent%2Fnsa%2FdmaapMMAgent%2Futils%2FMirrorMakerProcessHandler.java;fp=src%2Fmain%2Fjava%2Forg%2Fonap%2Fdmaap%2Fmessagerouter%2Fmirroragent%2Fnsa%2FdmaapMMAgent%2Futils%2FMirrorMakerProcessHandler.java;h=05c81be671d804afa3de5dbabc3403a783eb44e1;hp=0000000000000000000000000000000000000000;hb=2b4d7eb39b0ceb182467d564ab457a61ce873ed3;hpb=f5c12be64c403ae0b1b816e97b064d28479faac3 diff --git a/src/main/java/org/onap/dmaap/messagerouter/mirroragent/nsa/dmaapMMAgent/utils/MirrorMakerProcessHandler.java b/src/main/java/org/onap/dmaap/messagerouter/mirroragent/nsa/dmaapMMAgent/utils/MirrorMakerProcessHandler.java new file mode 100644 index 0000000..05c81be --- /dev/null +++ b/src/main/java/org/onap/dmaap/messagerouter/mirroragent/nsa/dmaapMMAgent/utils/MirrorMakerProcessHandler.java @@ -0,0 +1,154 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * org.onap.dmaap + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * + *******************************************************************************/ + +package org.onap.dmaap.messagerouter.mirroragent.nsa.dmaapMMAgent.utils; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; + +import org.apache.log4j.Logger; +import org.onap.dmaap.messagerouter.mirroragent.nsa.dmaapMMAgent.MirrorMakerAgent; + +public class MirrorMakerProcessHandler { + static final Logger logger = Logger.getLogger(MirrorMakerProcessHandler.class); + + public static boolean checkMirrorMakerProcess(String agentname) { + try { + Runtime rt = Runtime.getRuntime(); + Process mmprocess = null; + + if (System.getProperty("os.name").contains("Windows")) { + String args = ""; + args = "wmic.exe process where \"commandline like '%agentname=" + agentname + + "~%' and caption='java.exe'\""; + mmprocess = rt.exec(args); + } else { + String args[] = { "/bin/sh", "-c", "ps -ef |grep java |grep agentname=" + agentname + "~" }; + mmprocess = rt.exec(args); + } + + InputStream is = mmprocess.getInputStream(); + InputStreamReader isr = new InputStreamReader(is); + BufferedReader br = new BufferedReader(isr); + String line; + while ((line = br.readLine()) != null) { + // System.out.println(line); + if (line.contains("agentname=" + agentname) && line.contains("/bin/sh -c") == false) { + return true; + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return false; + } + + public static void stopMirrorMaker(String agentname) { + try { + Runtime rt = Runtime.getRuntime(); + Process killprocess = null; + + if (System.getProperty("os.name").contains("Windows")) { + String args = "wmic.exe process where \"commandline like '%agentname=" + agentname + + "~%' and caption='java.exe'\" call terminate"; + killprocess = rt.exec(args); + } else { + String args[] = { "/bin/sh", "-c", + "kill -9 $(ps -ef |grep java |grep agentname=" + agentname + "~| awk '{print $2}')" }; + // args = "kill $(ps -ef |grep java |grep agentname=" + + // agentname + "~| awk '{print $2}')"; + killprocess = rt.exec(args); + } + + InputStream is = killprocess.getInputStream(); + InputStreamReader isr = new InputStreamReader(is); + BufferedReader br = new BufferedReader(isr); + String line; + while ((line = br.readLine()) != null) { + // System.out.println(line); + } + + logger.info("Mirror Maker " + agentname + " Stopped"); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + public static void startMirrorMaker(String mmagenthome, String kafkaHome, String agentName, String consumerConfig, + String producerConfig, String whitelist) { + try { + Runtime rt = Runtime.getRuntime(); + + if (System.getProperty("os.name").contains("Windows")) { + String args = kafkaHome + "/bin/windows/kafka-run-class.bat -Dagentname=" + agentName + + "~ kafka.tools.MirrorMaker --consumer.config " + consumerConfig + " --producer.config " + + producerConfig + " --whitelist '" + whitelist + "' > " + mmagenthome + "/logs/" + agentName + + "_MMaker.log"; + final Process process = rt.exec(args); + new Thread() { + public void run() { + try { + InputStream is = process.getInputStream(); + InputStreamReader isr = new InputStreamReader(is); + BufferedReader br = new BufferedReader(isr); + String line; + while ((line = br.readLine()) != null) { + // System.out.println(line); + } + } catch (Exception anExc) { + anExc.printStackTrace(); + } + } + }.start(); + } else { + String args[] = { "/bin/sh", "-c", + kafkaHome + "/bin/kafka-run-class.sh -Dagentname=" + agentName + + "~ kafka.tools.MirrorMaker --consumer.config " + consumerConfig + + " --producer.config " + producerConfig + " --whitelist '" + whitelist + "' >" + + mmagenthome + "/logs/" + agentName + "_MMaker.log 2>&1" }; + final Process process = rt.exec(args); + new Thread() { + public void run() { + try { + InputStream is = process.getInputStream(); + InputStreamReader isr = new InputStreamReader(is); + BufferedReader br = new BufferedReader(isr); + String line; + while ((line = br.readLine()) != null) { + // System.out.println(line); + } + } catch (Exception anExc) { + anExc.printStackTrace(); + } + } + }.start(); + } + + logger.info("Mirror Maker " + agentName + " Started" + " WhiteListing:" + whitelist); + + } catch (Exception e) { + e.printStackTrace(); + } + } +}