package hudson.plugins.vmware.labmgr; import java.text.MessageFormat; import java.util.logging.Logger; import hudson.Extension; import hudson.model.Descriptor; import hudson.slaves.RetentionStrategy; import hudson.util.TimeUnit2; public class VMLabMgrRetentionStrategy extends RetentionStrategy<VMLabMgrComputer> { private static final Logger LOGGER = Logger.getLogger(VMLabMgrRetentionStrategy.class.getName()); @Extension public static final class DescriptorImpl extends Descriptor<RetentionStrategy<?>> { @Override public String getDisplayName() { return "VMWare Labmanager"; } } @Override public synchronized long check(VMLabMgrComputer computer) { if (computer.isIdle()) { final long idleTime = System.currentTimeMillis() - computer.getIdleStartMilliseconds(); if (idleTime > TimeUnit2.MINUTES.toMillis(1)) { LOGGER.info(MessageFormat.format("Disconnecting from {0}", computer.getName())); computer.getNode().terminate(); } } return 1l; } @Override public void start(VMLabMgrComputer computer) { computer.connect(false); } }