Skip to content

Commit

Permalink
[FIXED JENKINS-17305] add option to ignore offline nodes in parameter…
Browse files Browse the repository at this point in the history
… factory
  • Loading branch information
imod committed Mar 28, 2013
1 parent 8c046cc commit 7b44cfb
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
Expand Up @@ -17,6 +17,7 @@
import org.jenkinsci.plugins.tokenmacro.MacroEvaluationException;
import org.jenkinsci.plugins.tokenmacro.TokenMacro;
import org.jvnet.jenkins.plugins.nodelabelparameter.Messages;
import org.jvnet.jenkins.plugins.nodelabelparameter.NodeUtil;
import org.kohsuke.stapler.DataBoundConstructor;

import com.google.common.base.Function;
Expand All @@ -28,6 +29,7 @@
public class AllNodesForLabelBuildParameterFactory extends AbstractBuildParameterFactory {
public final String name;
public final String nodeLabel;
public final boolean ignoreOfflineNodes;

private static final Function<Node, String> SELF_LABEL_FUNCTION = new Function<Node, String>() {
public String apply(Node node) {
Expand All @@ -36,9 +38,10 @@ public String apply(Node node) {
};

@DataBoundConstructor
public AllNodesForLabelBuildParameterFactory(String name, String nodeLabel) {
public AllNodesForLabelBuildParameterFactory(String name, String nodeLabel, boolean ignoreOfflineNodes) {
this.name = name;
this.nodeLabel = nodeLabel;
this.ignoreOfflineNodes = ignoreOfflineNodes;
}

@Override
Expand All @@ -60,12 +63,25 @@ public List<AbstractBuildParameters> getParameters(AbstractBuild<?, ?> build, Ta
params.add(new NodeLabelBuildParameter(name, labelExpanded));
} else {
for (Node node : nodes) {
params.add(new NodeLabelBuildParameter(name, node.getSelfLabel().getName()));
final String nodeSelfLabel = node.getSelfLabel().getName();
if (ignoreOfflineNodes) {
if(NodeUtil.isNodeOnline(nodeSelfLabel)) {
params.add(new NodeLabelBuildParameter(name, nodeSelfLabel));
} else {
listener.getLogger().println(Messages.NodeListBuildParameterFactory_skippOfflineNode(nodeSelfLabel));
}
} else {
params.add(new NodeLabelBuildParameter(name, nodeSelfLabel));
}
}
}

return params;
}

public boolean isIgnoreOfflineNodes() {
return ignoreOfflineNodes;
}

@Extension(optional = true)
public static class DescriptorImpl extends AbstractBuildParameterFactoryDescriptor {
Expand Down
Expand Up @@ -6,5 +6,8 @@
<f:entry field="nodeLabel" title="${%Label}">
<f:textbox />
</f:entry>
<f:entry field="ignoreOfflineNodes" title="${%ignore offline Nodes}">
<f:checkbox checked="${it.isIgnoreOfflineNodes()}" />
</f:entry>

</j:jelly>

0 comments on commit 7b44cfb

Please sign in to comment.