package io.cattle.platform.process.network; import io.cattle.platform.core.constants.NetworkConstants; import io.cattle.platform.core.model.Network; import io.cattle.platform.engine.handler.HandlerResult; import io.cattle.platform.engine.handler.ProcessPostListener; import io.cattle.platform.engine.process.ProcessInstance; import io.cattle.platform.engine.process.ProcessState; import io.cattle.platform.process.common.handler.AbstractObjectProcessLogic; import io.cattle.platform.resource.pool.PooledResourceOptions; import io.cattle.platform.resource.pool.ResourcePoolManager; import io.cattle.platform.resource.pool.util.ResourcePoolConstants; import io.cattle.platform.util.type.Priority; import javax.inject.Inject; import javax.inject.Named; @Named public class MacAddressNetworkPurge extends AbstractObjectProcessLogic implements ProcessPostListener, Priority { ResourcePoolManager resourcePoolManager; @Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Network network = (Network) state.getResource(); resourcePoolManager.releaseResource(ResourcePoolManager.GLOBAL, network, new PooledResourceOptions().withQualifier(ResourcePoolConstants.MAC_PREFIX)); return new HandlerResult(NetworkConstants.FIELD_MAC_PREFIX, new Object[] { null }).withShouldContinue(true); } @Override public String[] getProcessNames() { return new String[] { "network.purge" }; } @Override public int getPriority() { return Priority.DEFAULT; } public ResourcePoolManager getResourcePoolManager() { return resourcePoolManager; } @Inject public void setResourcePoolManager(ResourcePoolManager resourcePoolManager) { this.resourcePoolManager = resourcePoolManager; } }