package io.cattle.platform.process.host;
import io.cattle.platform.core.dao.AgentDao;
import io.cattle.platform.core.dao.GenericResourceDao;
import io.cattle.platform.core.dao.HostDao;
import io.cattle.platform.core.model.Agent;
import io.cattle.platform.core.model.Host;
import io.cattle.platform.engine.process.util.ProcessEngineUtils;
import io.cattle.platform.object.process.ObjectProcessManager;
import io.cattle.platform.object.process.StandardProcess;
import io.cattle.platform.task.Task;
import javax.inject.Inject;
public class HostRemoveMonitorImpl implements Task {
@Inject
HostDao hostDao;
@Inject
AgentDao agentDao;
@Inject
ObjectProcessManager processManager;
@Inject
GenericResourceDao resourceDao;
@Override
public void run() {
if (!ProcessEngineUtils.enabled()) {
return;
}
hostDao.updateNullUpdatedHosts();
for (Host host : hostDao.findHostsRemove()) {
processManager.scheduleStandardChainedProcessAsync(StandardProcess.DEACTIVATE, StandardProcess.REMOVE,
host, null);
}
for (Agent agent : agentDao.findAgentsToRemove()) {
processManager.scheduleStandardChainedProcessAsync(StandardProcess.DEACTIVATE, StandardProcess.REMOVE,
agent, null);
}
}
@Override
public String getName() {
return "evacuate.hosts";
}
}