/** * Marks the computer as temporarily offline. This retains the underlying {@link Channel} * connection, but prevent builds from executing. * * @param cause If the first argument is true, specify the reason why the node is being put * offline. */ public void setTemporarilyOffline(boolean temporarilyOffline, OfflineCause cause) { offlineCause = temporarilyOffline ? cause : null; this.temporarilyOffline = temporarilyOffline; Node node = getNode(); if (node != null) { node.setTemporaryOfflineCause(offlineCause); } Jenkins.getInstance().getQueue().scheduleMaintenance(); synchronized (statusChangeLock) { statusChangeLock.notifyAll(); } for (ComputerListener cl : ComputerListener.all()) { if (temporarilyOffline) cl.onTemporarilyOffline(this, cause); else cl.onTemporarilyOnline(this); } }