Package hudson.model
Class Label
- java.lang.Object
-
- hudson.model.AbstractModelObject
-
- hudson.model.Actionable
-
- hudson.model.Label
-
- All Implemented Interfaces:
ModelObject
,SearchableModelObject
,SearchItem
,Comparable<Label>
,ModelObjectWithChildren
,ModelObjectWithContextMenu
- Direct Known Subclasses:
LabelAtom
,LabelExpression
@ExportedBean public abstract class Label extends Actionable implements Comparable<Label>, ModelObjectWithChildren
Group ofNode
s.- Author:
- Kohsuke Kawaguchi
- See Also:
Jenkins.getLabels()
,Jenkins.getLabel(String)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Label.ConverterImpl
-
Nested classes/interfaces inherited from interface jenkins.model.ModelObjectWithContextMenu
ModelObjectWithContextMenu.ContextMenu, ModelObjectWithContextMenu.ContextMenuVisibility, ModelObjectWithContextMenu.MenuItem, ModelObjectWithContextMenu.MenuItemType
-
-
Field Summary
Fields Modifier and Type Field Description LoadStatistics
loadStatistics
protected String
name
Display name of this label.NodeProvisioner
nodeProvisioner
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract <V,P>
Vaccept(LabelVisitor<V,P> visitor, P param)
Accepts a visitor and call its respective "onXYZ" method based no the actual type of 'this'.Label
and(Label rhs)
Returns the label that representsthis&&rhs
int
compareTo(Label that)
boolean
contains(Node node)
ModelObjectWithContextMenu.ContextMenu
doChildrenContextMenu(org.kohsuke.stapler.StaplerRequest request, org.kohsuke.stapler.StaplerResponse response)
Generates the context menu to list up all the children.boolean
equals(Object that)
static Label
get(String l)
Obtains a label by its name.Api
getApi()
Expose this object to the remote API.int
getBusyExecutors()
Number of busyExecutor
s that are carrying out some work right now.Set<Cloud>
getClouds()
Gets allCloud
s that can launch for this label.String
getDescription()
Returns a human readable text that explains this label.String
getDisplayName()
Returns a human-readable text that represents this label.abstract String
getExpression()
Returns a label expression that represents this label.int
getIdleExecutors()
Number of idleExecutor
s that can start working immediately.String
getName()
Alias forgetDisplayName()
.Set<Node>
getNodes()
Gets allNode
s that belong to this label.String
getSearchUrl()
Returns the URL of this item relative to the parentSearchItem
.Set<Node>
getSortedNodes()
int
getTiedJobCount()
Returns an approximate count of projects that are tied on this node.List<AbstractProject>
getTiedJobs()
Returns projects that are tied on this node.int
getTotalConfiguredExecutors()
Number of totalExecutor
s that belong to this label.int
getTotalExecutors()
Number of totalExecutor
s that belong to this label that are functioning.String
getUrl()
Relative URL from the context path, that ends with '/'.int
hashCode()
Label
iff(Label rhs)
Returns the label that representsthis<->rhs
Label
implies(Label rhs)
Returns the label that representsthis->rhs
boolean
isAssignable()
Can jobs be assigned to this label?boolean
isAtom()
Returns true iff this label is an atom.boolean
isEmpty()
boolean
isOffline()
Returns true if all the nodes of this label is offline.boolean
isSelfLabel()
Returns true if this label is a "self label", which means the label is the name of aNode
.Set<LabelAtom>
listAtoms()
Lists up all the atoms contained in in this label.boolean
matches(Node n)
abstract boolean
matches(VariableResolver<Boolean> resolver)
Evaluates whether the label expression is true given the specified value assignment.boolean
matches(Collection<LabelAtom> labels)
Evaluates whether the label expression is true when an entity owns the given set ofLabelAtom
s.Label
not()
Returns the label that represents!this
Label
or(Label rhs)
Returns the label that representsthis||rhs
Label
paren()
Returns the label that represents(this)
This is a pointless operation for machines, but useful for humans who find the additional parenthesis often usefulstatic Set<LabelAtom>
parse(String labels)
Convert a whitespace-separate list of tokens into a set ofLabel
s.static Label
parseExpression(String labelExpression)
Parses the expression into a label expression tree.abstract LabelOperatorPrecedence
precedence()
Precedence of the top most operator.String
toString()
-
Methods inherited from class hudson.model.Actionable
addAction, addOrReplaceAction, doContextMenu, getAction, getAction, getActions, getActions, getAllActions, getDynamic, removeAction, removeActions, replaceAction, replaceActions
-
Methods inherited from class hudson.model.AbstractModelObject
getSearch, getSearchIndex, getSearchName, makeSearchIndex, requirePOST, sendError, sendError, sendError, sendError, sendError
-
-
-
-
Field Detail
-
name
@NonNull protected final transient String name
Display name of this label.
-
loadStatistics
@Exported @NonNull public final transient LoadStatistics loadStatistics
-
nodeProvisioner
@NonNull public final transient NodeProvisioner nodeProvisioner
-
-
Constructor Detail
-
Label
protected Label(@NonNull String name)
-
-
Method Detail
-
getName
@NonNull @Exported(visibility=2) public final String getName()
Alias forgetDisplayName()
.
-
getDisplayName
@NonNull public String getDisplayName()
Returns a human-readable text that represents this label.- Specified by:
getDisplayName
in interfaceModelObject
-
getExpression
public abstract String getExpression()
Returns a label expression that represents this label.
-
getUrl
public String getUrl()
Relative URL from the context path, that ends with '/'.
-
getSearchUrl
public String getSearchUrl()
Description copied from interface:SearchItem
Returns the URL of this item relative to the parentSearchItem
.- Specified by:
getSearchUrl
in interfaceSearchItem
- Returns:
- URL like "foo" or "foo/bar". The path can end with '/'. The path that starts with '/' will be interpreted as the absolute path (within the context path of Jenkins.)
-
isAtom
public boolean isAtom()
Returns true iff this label is an atom.- Since:
- 1.580
-
matches
public abstract boolean matches(VariableResolver<Boolean> resolver)
Evaluates whether the label expression is true given the specified value assignment. IOW, returns true if the assignment provided by the resolver matches this label expression.
-
matches
public final boolean matches(Collection<LabelAtom> labels)
Evaluates whether the label expression is true when an entity owns the given set ofLabelAtom
s.
-
matches
public final boolean matches(Node n)
-
isSelfLabel
public boolean isSelfLabel()
Returns true if this label is a "self label", which means the label is the name of aNode
.
-
getSortedNodes
@Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) public Set<Node> getSortedNodes()
-
isAssignable
public boolean isAssignable()
Can jobs be assigned to this label?The answer is yes if there is a reasonable basis to believe that Hudson can have an executor under this label, given the current configuration. This includes situations such as (1) there are offline agents that have this label (2) clouds exist that can provision agents that have this label.
-
getTotalConfiguredExecutors
public int getTotalConfiguredExecutors()
Number of totalExecutor
s that belong to this label.This includes executors that belong to offline nodes, so the result can be thought of as a potential capacity, whereas
getTotalExecutors()
is the currently functioning total number of executors.This method doesn't take the dynamically allocatable nodes (via
Cloud
) into account. If you just want to test if there's some executors, useisAssignable()
.
-
getTotalExecutors
@Exported public int getTotalExecutors()
Number of totalExecutor
s that belong to this label that are functioning.This excludes executors that belong to offline nodes.
-
getBusyExecutors
@Exported public int getBusyExecutors()
Number of busyExecutor
s that are carrying out some work right now.
-
getIdleExecutors
@Exported public int getIdleExecutors()
Number of idleExecutor
s that can start working immediately.
-
isOffline
@Exported public boolean isOffline()
Returns true if all the nodes of this label is offline.
-
getDescription
@Exported public String getDescription()
Returns a human readable text that explains this label.
-
getTiedJobs
@Exported public List<AbstractProject> getTiedJobs()
Returns projects that are tied on this node.
-
getTiedJobCount
public int getTiedJobCount()
Returns an approximate count of projects that are tied on this node. In a system without security this should be the same asgetTiedJobs().size()
but significantly faster as it involves fewer temporary objects and avoids sorting the intermediary list. In a system with security, this will likely return a higher value as it counts all jobs (mostly) irrespective of access.- Returns:
- a count of projects that are tied on this node.
-
contains
public boolean contains(Node node)
-
isEmpty
public boolean isEmpty()
-
getApi
public Api getApi()
Expose this object to the remote API.
-
accept
public abstract <V,P> V accept(LabelVisitor<V,P> visitor, P param)
Accepts a visitor and call its respective "onXYZ" method based no the actual type of 'this'.
-
listAtoms
public Set<LabelAtom> listAtoms()
Lists up all the atoms contained in in this label.- Since:
- 1.420
-
not
public Label not()
Returns the label that represents!this
-
paren
public Label paren()
Returns the label that represents(this)
This is a pointless operation for machines, but useful for humans who find the additional parenthesis often useful
-
precedence
public abstract LabelOperatorPrecedence precedence()
Precedence of the top most operator.
-
compareTo
public final int compareTo(Label that)
- Specified by:
compareTo
in interfaceComparable<Label>
-
doChildrenContextMenu
public ModelObjectWithContextMenu.ContextMenu doChildrenContextMenu(org.kohsuke.stapler.StaplerRequest request, org.kohsuke.stapler.StaplerResponse response) throws Exception
Description copied from interface:ModelObjectWithChildren
Generates the context menu to list up all the children.- Specified by:
doChildrenContextMenu
in interfaceModelObjectWithChildren
- Throws:
Exception
-
parse
@NonNull public static Set<LabelAtom> parse(@CheckForNull String labels)
Convert a whitespace-separate list of tokens into a set ofLabel
s.- Parameters:
labels
- Strings like "abc def ghi". Can be empty or null.- Returns:
- Can be empty but never null. A new writable set is always returned, so that the caller can add more to the set.
- Since:
- 1.308
-
parseExpression
public static Label parseExpression(@NonNull String labelExpression)
Parses the expression into a label expression tree. TODO: replace this with a real parser later- Parameters:
labelExpression
- the label expression to be parsed- Throws:
IllegalArgumentException
- if the label expression cannot be parsed
-
-