package io.cattle.platform.process.instance; import io.cattle.platform.allocator.service.AllocatorService; import io.cattle.platform.core.constants.CommonStatesConstants; import io.cattle.platform.core.dao.GenericMapDao; import io.cattle.platform.core.model.Instance; import io.cattle.platform.core.model.InstanceHostMap; 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.base.AbstractDefaultProcessHandler; import java.util.HashMap; import java.util.Map; import javax.inject.Inject; import javax.inject.Named; @Named public class InstanceDeallocate extends AbstractDefaultProcessHandler { @Inject AllocatorService allocatorService; @Inject GenericMapDao mapDao; @Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Instance instance = (Instance)state.getResource(); allocatorService.instanceDeallocate(instance); return afterDeallocate(state, process, new HashMap<Object, Object>()); } protected HandlerResult afterDeallocate(ProcessState state, ProcessInstance process, Map<Object, Object> result) { Instance instance = (Instance) state.getResource(); for (InstanceHostMap map : mapDao.findToRemove(InstanceHostMap.class, Instance.class, instance.getId())) { if (CommonStatesConstants.ACTIVATING.equals(map.getState()) || CommonStatesConstants.ACTIVE.equals(map.getState())) { deactivate(map, state.getData()); } remove(map, state.getData()); } return new HandlerResult(result); } }