提交 4061c551 编写于 作者: K Kohsuke Kawaguchi

Merge pull request #514 from vjuranek/put_online

Put slave back online automatically, if there's enough disk space again ...
......@@ -41,11 +41,16 @@ public abstract class AbstractDiskSpaceMonitor extends NodeMonitor {
public Object data(Computer c) {
DiskSpace size = (DiskSpace) super.data(c);
if(size!=null && size.size < getThresholdBytes()) {
size.setTriggered(true);
size.setTriggered(this.getClass(), true);
if(getDescriptor().markOffline(c,size)) {
LOGGER.warning(Messages.DiskSpaceMonitor_MarkedOffline(c.getName()));
}
}
if(size!=null && size.size > getThresholdBytes() && c.isOffline() && c.getOfflineCause() instanceof DiskSpace)
if(this.getClass().equals(((DiskSpace)c.getOfflineCause()).getTrigger()))
if(getDescriptor().markOnline(c)) {
LOGGER.warning(Messages.DiskSpaceMonitor_MarkedOnline(c.getName()));
}
return size;
}
......
......@@ -129,6 +129,19 @@ public abstract class AbstractNodeMonitorDescriptor<T> extends Descriptor<Node
return m==null || m.isIgnored();
}
/**
* Utility method to mark the computer online for derived classes.
*
* @return true
* if the node was actually taken online by this act (as opposed to us deciding not to do it,
* or the computer was already online.)
*/
protected boolean markOnline(Computer c) {
if(isIgnored() || c.isOnline()) return false; // noop
c.setTemporarilyOffline(false,null);
return true;
}
/**
* Utility method to mark the computer offline for derived classes.
*
......
......@@ -57,6 +57,7 @@ import org.kohsuke.stapler.export.Exported;
public final long size;
private boolean triggered;
private Class<? extends AbstractDiskSpaceMonitor> trigger;
/**
* @deprecated as of 1.467
......@@ -121,6 +122,18 @@ import org.kohsuke.stapler.export.Exported;
this.triggered = triggered;
}
/**
* Same as {@link DiskSpace#setTriggered(boolean)}, also sets the trigger class which made the decision
*/
protected void setTriggered(Class<? extends AbstractDiskSpaceMonitor> trigger, boolean triggered) {
this.trigger = trigger;
this.triggered = triggered;
}
public Class<? extends AbstractDiskSpaceMonitor> getTrigger() {
return trigger;
}
/**
* Parses a human readable size description like "1GB", "0.5m", etc. into {@link DiskSpace}
*
......
......@@ -23,6 +23,7 @@
ArchitectureMonitor.DisplayName=Architecture
ClockMonitor.DisplayName=Clock Difference
DiskSpaceMonitor.MarkedOffline=Making {0} offline temporarily due to the lack of disk space
DiskSpaceMonitor.MarkedOnline=Putting {0} back online as there is enough disk space again
DiskSpaceMonitor.DisplayName=Free Disk Space
ResponseTimeMonitor.DisplayName=Response Time
ResponseTimeMonitor.MarkedOffline=Making {0} offline because it''s not responding
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册