summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/utils/MirrorMakerProcessHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/dmaap/mr/dmaapMMAgent/utils/MirrorMakerProcessHandler.java')
-rw-r--r--src/main/java/org/onap/dmaap/mr/dmaapMMAgent/utils/MirrorMakerProcessHandler.java200
1 files changed, 200 insertions, 0 deletions
diff --git a/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/utils/MirrorMakerProcessHandler.java b/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/utils/MirrorMakerProcessHandler.java
new file mode 100644
index 0000000..82086a3
--- /dev/null
+++ b/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/utils/MirrorMakerProcessHandler.java
@@ -0,0 +1,200 @@
+/*******************************************************************************
+ * ============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.mr.dmaapMMAgent.utils;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import org.apache.log4j.Logger;
+
+public class MirrorMakerProcessHandler {/*
+ static final Logger logger = Logger.getLogger(MirrorMakerProcessHandler.class);
+ static String mmagenthome = System.getProperty("MMAGENTHOME");
+
+ public static boolean checkMirrorMakerProcess(String agentname, boolean enablelogCheck, String grepLog) throws Exception {
+ String line,linelog;
+ 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 + "~" };
+
+ String args[] = { "/bin/sh", "-c", "ps -ef | grep `ps -ef |grep agentname=" + agentname + "~ | egrep -v 'grep|java' | awk '{print $2}' `| egrep -v '/bin/sh|grep' "};
+ logger.info("CheckMM process->"+args[2]);
+ mmprocess = rt.exec(args);
+ }
+
+ InputStream is = mmprocess.getInputStream();
+ InputStreamReader isr = new InputStreamReader(is);
+ BufferedReader br = new BufferedReader(isr);
+
+ while ((line = br.readLine()) != null) {
+ System.out.println(line);
+ // if (line.contains("agentname=" + agentname) && line.contains("/bin/sh -c") == false) {
+
+ //If enablelogCheck Check MirrorMaker log for errors and restart mirrormaker
+ if(enablelogCheck) {
+ logger.info("Check if MM log contains any errors");
+ String args2[];
+ args2 = new String[] { "/bin/sh", "-c", "grep -i ERROR "+ mmagenthome + "/logs/" + agentname + "_MMaker.log"};
+ if(null!=grepLog && !grepLog.isEmpty())
+ {
+ args2 = new String[]{ "/bin/sh", "-c", grepLog +" " + mmagenthome + "/logs/" + agentname + "_MMaker.log"};
+ }
+ logger.info("Grep log args-- "+args2[2]);
+ mmprocess = rt.exec(args2);
+ InputStream islog = mmprocess.getInputStream();
+ InputStreamReader isrlog = new InputStreamReader(islog);
+ BufferedReader brlog = new BufferedReader(isrlog);
+
+ while ((linelog = brlog.readLine()) != null)
+ {
+ logger.info("Error from MM log--"+linelog);
+
+ if (linelog.toLowerCase().contains("ERROR".toLowerCase()) ||
+ linelog.toLowerCase().contains("Issue".toLowerCase()) )
+ {
+ logger.info("MM log contains error Stop MM and restart");
+ stopMirrorMaker(agentname);
+ isrlog.close();
+ brlog.close();
+ return false;
+ }
+
+
+ }
+ isrlog.close();
+ brlog.close();
+ }
+
+ 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}')" };
+
+ //String args[] = { "/bin/sh", "-c",
+ // "kill -9 `ps -ef |grep agentname=" + agentname + "~| egrep -v 'grep|java' | awk '{print $2}'` | egrep -v '/bin/sh|grep'"};
+ String args[] = { "/bin/sh", "-c",
+ "for i in `ps -ef |grep agentname="+ agentname + "~ | egrep -v 'grep|java' | awk '{print $2}'`;do kill -9 `ps -eaf | grep $i | egrep -v '/bin/sh|grep' | awk '{print $2}'` ;done"};
+ logger.info ("Stop MM ->"+args[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, int numStreams, 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 +" --num.streams " + numStreams + " --abort.on.send.failure true" +" --whitelist '" + whitelist + "' > " + mmagenthome + "/logs/" + agentName
+ + "_MMaker.log";
+ final Process process = rt.exec(args);
+ new Thread() {
+ @Override
+ 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 + " --num.streams " + numStreams + " --abort.on.send.failure true" + " --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();
+ }
+ }
+*/}