package io.cattle.platform.process.nic; import static io.cattle.platform.core.model.tables.NicTable.*; import io.cattle.platform.core.dao.GenericMapDao; import io.cattle.platform.core.model.IpAddress; import io.cattle.platform.core.model.IpAddressNicMap; import io.cattle.platform.core.model.Network; import io.cattle.platform.core.model.Nic; 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 io.cattle.platform.resource.pool.PooledResourceOptions; import io.cattle.platform.resource.pool.ResourcePoolManager; import io.cattle.platform.resource.pool.util.ResourcePoolConstants; import javax.inject.Inject; import javax.inject.Named; @Named public class NicPurge extends AbstractDefaultProcessHandler { GenericMapDao mapDao; ResourcePoolManager poolManager; @Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Nic nic = (Nic) state.getResource(); Network network = loadResource(Network.class, nic.getNetworkId()); for (IpAddressNicMap map : mapDao.findToRemove(IpAddressNicMap.class, Nic.class, nic.getId())) { IpAddress ipAddress = getObjectManager().loadResource(IpAddress.class, map.getIpAddressId()); deactivateThenRemove(ipAddress, state.getData()); } if (network != null) { poolManager.releaseResource(network, nic, new PooledResourceOptions().withQualifier(ResourcePoolConstants.MAC)); } return new HandlerResult(NIC.MAC_ADDRESS, new Object[] { null }).withShouldContinue(true); } public GenericMapDao getMapDao() { return mapDao; } @Inject public void setMapDao(GenericMapDao mapDao) { this.mapDao = mapDao; } public ResourcePoolManager getPoolManager() { return poolManager; } @Inject public void setPoolManager(ResourcePoolManager poolManager) { this.poolManager = poolManager; } }