package com.cloudera.sa.node360.nodepuller.operations; import com.cloudera.sa.node360.model.EventPojo; import com.cloudera.sa.node360.nodepuller.listener.EventListener; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutionException; /** * Created by ted.malaska on 6/3/15. */ public class EtcChangesOperation extends AbstractSshExecOperation{ Map<String, String> latestHostsMeta = new HashMap<String, String>(); @Override public String getCommand() { return "ls -lt /etc/hosts; cat /etc/hosts"; } @Override public void processResults(String host, int port, String result, EventListener listener) throws ExecutionException, InterruptedException, IOException { //TODO yes this can be faster int metaIndex = result.indexOf('\n'); String meta = result.substring(0, metaIndex); String latestMeta = latestHostsMeta.get(host); if (latestMeta == null || !latestMeta.equals(meta)) { latestMeta = meta; latestHostsMeta.put(host, latestMeta); listener.publishEvent(new EventPojo(host, System.currentTimeMillis(), "etc/hosts", meta, result.substring(metaIndex + 1))); } } }