提交 bb9ecf6d 编写于 作者: K Kohsuke Kawaguchi

allow classification by the type of blockage

上级 8f6b8f1e
......@@ -4,6 +4,7 @@ import hudson.model.Queue.Task;
import hudson.model.Node;
import hudson.model.Messages;
import hudson.model.Label;
import hudson.slaves.Cloud;
import org.jvnet.localizer.Localizable;
/**
......@@ -33,10 +34,37 @@ public abstract class CauseOfBlockage {
};
}
/**
* Marker interface to indicates that we can reasonably expect
* that adding a suitable executor/node will resolve this blockage.
*
* Primarily this is used by {@link Cloud} to see if it should
* consider provisioning new node.
*
* @since 1.427
*/
interface NeedsMoreExecutor {}
public static CauseOfBlockage createNeedsMoreExecutor(Localizable l) {
return new NeedsMoreExecutorImpl(l);
}
private static final class NeedsMoreExecutorImpl extends CauseOfBlockage implements NeedsMoreExecutor {
private final Localizable l;
private NeedsMoreExecutorImpl(Localizable l) {
this.l = l;
}
public String getShortDescription() {
return l.toString();
}
}
/**
* Build is blocked because a node is offline.
*/
public static final class BecauseNodeIsOffline extends CauseOfBlockage {
public static final class BecauseNodeIsOffline extends CauseOfBlockage implements NeedsMoreExecutor {
public final Node node;
public BecauseNodeIsOffline(Node node) {
......@@ -51,7 +79,7 @@ public abstract class CauseOfBlockage {
/**
* Build is blocked because all the nodes that match a given label is offline.
*/
public static final class BecauseLabelIsOffline extends CauseOfBlockage {
public static final class BecauseLabelIsOffline extends CauseOfBlockage implements NeedsMoreExecutor {
public final Label label;
public BecauseLabelIsOffline(Label l) {
......@@ -66,7 +94,7 @@ public abstract class CauseOfBlockage {
/**
* Build is blocked because a node is fully busy
*/
public static final class BecauseNodeIsBusy extends CauseOfBlockage {
public static final class BecauseNodeIsBusy extends CauseOfBlockage implements NeedsMoreExecutor {
public final Node node;
public BecauseNodeIsBusy(Node node) {
......@@ -81,7 +109,7 @@ public abstract class CauseOfBlockage {
/**
* Build is blocked because everyone that matches the specified label is fully busy
*/
public static final class BecauseLabelIsBusy extends CauseOfBlockage {
public static final class BecauseLabelIsBusy extends CauseOfBlockage implements NeedsMoreExecutor {
public final Label label;
public BecauseLabelIsBusy(Label label) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册