ADD Initial Code Import
[dmaap/messagerouter/mirroragent.git] / src / main / java / org / onap / dmaap / messagerouter / mirroragent / nsa / dmaapMMAgent / utils / MirrorMakerProcessHandler.java
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 (file)
index 0000000..05c81be
--- /dev/null
@@ -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();
+               }
+       }
+}