package io.cattle.platform.process.driver;
import io.cattle.platform.core.constants.ServiceConstants;
import io.cattle.platform.core.model.Service;
import io.cattle.platform.engine.handler.AbstractProcessLogic;
import io.cattle.platform.engine.handler.HandlerResult;
import io.cattle.platform.engine.handler.ProcessPreListener;
import io.cattle.platform.engine.process.ProcessInstance;
import io.cattle.platform.engine.process.ProcessState;
import io.cattle.platform.object.ObjectManager;
import io.cattle.platform.object.process.ObjectProcessManager;
import io.cattle.platform.object.process.StandardProcess;
import javax.inject.Inject;
import javax.inject.Named;
@Named
public class DriverServiceRemove extends AbstractProcessLogic implements ProcessPreListener {
@Inject
ObjectManager objectManager;
@Inject
ObjectProcessManager processManager;
@Override
public String[] getProcessNames() {
return new String[] { ServiceConstants.PROCESS_SERVICE_REMOVE };
}
@Override
public HandlerResult handle(ProcessState state, ProcessInstance process) {
for (String driverKey : DriverServiceActivate.DRIVERS) {
Class<?> driverClass = objectManager.getSchemaFactory().getSchemaClass(driverKey);
Service service = (Service)state.getResource();
for (Object driver : objectManager.children(service, driverClass)) {
processManager.scheduleStandardProcess(StandardProcess.REMOVE, driver, null);
}
}
return null;
}
}