package cz.cuni.mff.d3s.been.web.model; import cz.cuni.mff.d3s.been.api.BeenApi; import cz.cuni.mff.d3s.been.api.BeenApiException; import cz.cuni.mff.d3s.been.core.ri.RuntimeInfo; import cz.cuni.mff.d3s.been.core.task.TaskEntry; import java.util.ArrayList; import java.util.Collection; /** * Author: donarus */ public final class TaskWrkDirChecker { private final BeenApi api; // cached (for this request only) list of all tasks in cluster private java.util.List<TaskEntry> allTasks; public TaskWrkDirChecker(BeenApi api) { this.api = api; } public java.util.List<String> getOldTaskDirsOnRuntime(RuntimeInfo runtime) throws BeenApiException { java.util.List<String> taskDirsOnRuntime = getTaskDirsOnHost(runtime); for (TaskEntry entry : getLiveTasksOnHost(runtime)) { taskDirsOnRuntime.remove(entry.getWorkingDirectory()); } return taskDirsOnRuntime; } private java.util.List<String> getTaskDirsOnHost(RuntimeInfo runtime) { return new ArrayList<>(runtime.getTaskDirs()); } private Collection<TaskEntry> liveTasksOnHosts; private Collection<TaskEntry> getLiveTasksOnHost(RuntimeInfo runtime) throws BeenApiException { if (liveTasksOnHosts == null) { liveTasksOnHosts = api.listActiveTasks(runtime.getId()); } return liveTasksOnHosts; } }