in service-monitor/src/main/java/org/apache/airavata/datalake/service/monitor/ServiceMonitor.java [10:55]
public static void main(String[] args) throws IOException, InterruptedException {
if (args.length == 0) {
throw new RuntimeException("please give a list of names to monitor", null);
}
ProcessManager processManager = new ProcessManager();
Map<String, String> fileMap = parseFile(args[0]);
List<String> unavailableServices = processManager.getUnavailableServices(new ArrayList<String>(fileMap.keySet()));
MessageSender messageSender = new MessageSender(args[1]);
for (String service : unavailableServices) {
if (service != null && !service.isEmpty()) {
messageSender.sendMessage(service, MessageSender.SERVICE_STATUS.STOPPED);
}
}
List<String> servicesToBeStarted = unavailableServices.stream().map(service -> {
if (service != null && !service.isEmpty()) {
return fileMap.get(service);
}
return null;
}).collect(Collectors.toList());
List<String> listWithoutNulls = servicesToBeStarted.parallelStream()
.filter(Objects::nonNull)
.collect(Collectors.toList());
processManager.startServices(listWithoutNulls);
List<String> failedServices = processManager.getUnavailableServices(new ArrayList<String>(fileMap.keySet()));
listWithoutNulls = failedServices.parallelStream()
.filter(Objects::nonNull)
.collect(Collectors.toList());
if (listWithoutNulls.isEmpty()) {
for (String service : unavailableServices) {
if (service != null && !service.isEmpty()) {
messageSender.sendMessage(service, MessageSender.SERVICE_STATUS.STARTED);
}
}
}
}