package io.cattle.platform.process.driver; import static io.cattle.platform.core.model.tables.StorageDriverTable.*; import io.cattle.platform.core.dao.GenericResourceDao; import io.cattle.platform.core.model.Host; import io.cattle.platform.core.model.StorageDriver; import io.cattle.platform.engine.handler.HandlerResult; import io.cattle.platform.engine.process.ProcessInstance; import io.cattle.platform.engine.process.ProcessState; import io.cattle.platform.process.common.handler.AbstractObjectProcessHandler; import io.cattle.platform.storage.service.StorageService; import java.util.List; import javax.inject.Inject; import javax.inject.Named; @Named public class StorageDriverSetupPoolProcess extends AbstractObjectProcessHandler { @Inject GenericResourceDao resourceDao; @Inject StorageService storageService; @Override public String[] getProcessNames() { return new String[] {"storagedriver.activate", "host.activate", "storagedriver.deactivate"}; } @Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Object resource = state.getResource(); if (resource instanceof Host) { List<StorageDriver> drivers = objectManager.find(StorageDriver.class, STORAGE_DRIVER.ACCOUNT_ID, ((Host) resource).getAccountId(), STORAGE_DRIVER.REMOVED, null); for (StorageDriver driver : drivers) { storageService.setupPools(driver); } } else if (resource instanceof StorageDriver) { storageService.setupPools((StorageDriver)resource); } return null; } }