Class Computer
- All Implemented Interfaces:
ExtensionPoint,DescriptorByNameOwner,ExecutorListener,ModelObject,SearchableModelObject,SearchItem,AccessControlled,IComputer,ModelObjectWithContextMenu,Named,HasWidgets,IconSpec,org.kohsuke.stapler.StaplerProxy
- Direct Known Subclasses:
Jenkins.MasterComputer,SlaveComputer
Executors.
Executors on one Computer are transparently interchangeable
(that is the definition of Computer).
This object is related to Node but they have some significant differences.
Computer primarily works as a holder of Executors, so
if a Node is configured (probably temporarily) with 0 executors,
you won't have a Computer object for it (except for the built-in node,
which always gets its Computer in case we have no static executors and
we need to run a Queue.FlyweightTask - see JENKINS-7291 for more discussion.)
Also, even if you remove a Node, it takes time for the corresponding
Computer to be removed, if some builds are already in progress on that
node. Or when the node configuration is changed, unaffected Computer object
remains intact, while all the Node objects will go away.
This object also serves UI (unlike Node), and can be used along with
TransientComputerActionFactory to add Actions to Computers.
- Author:
- Kohsuke Kawaguchi
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic classUsed to trace requests to terminate a computer.Nested classes/interfaces inherited from interface hudson.ExtensionPoint
ExtensionPoint.LegacyInstancesAreScopedToHudsonNested classes/interfaces inherited from interface jenkins.model.ModelObjectWithContextMenu
ModelObjectWithContextMenu.ContextMenu, ModelObjectWithContextMenu.ContextMenuVisibility, ModelObjectWithContextMenu.MenuItem, ModelObjectWithContextMenu.MenuItemType -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Permissionstatic final Permissionstatic final Permissionstatic final Permissionstatic final Permissionstatic final Permissionstatic final Permissionstatic final Permission[]protected StringNodeobject may be created and deleted independently from this object.protected OfflineCauseContains info about reason behind computer being offline.static final PermissionGroupstatic booleanEscape hatch for StaplerProxy-based access controlprotected final Objectstatic final ExecutorService -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract Future<?> _connect(boolean forceReconnect) Allows implementing-classes to provide an implementation for the connect method.protected void_doScript(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp, String view) voidAdds a new action.buildEnvironment(TaskListener listener) Creates an environment variable override to be used for launching processes on this node.voidcliConnect(boolean force) Deprecated.voidcliDisconnect(String cause) Deprecated.Implementation of CLI command "disconnect-node" moved toDisconnectNodeCommand.voidcliOffline(String cause) Deprecated.Implementation of CLI command "offline-node" moved toOfflineNodeCommand.voidDeprecated.Implementation of CLI command "online-node" moved toOnlineNodeCommand.final Future<?> connect(boolean forceReconnect) Do the same asdoLaunchSlaveAgent(StaplerRequest2, StaplerResponse2)but outside the context of serving a request.final intReturns the number ofIExecutors that are doing some work right now.final intReturns the current size of the executor pool for this computer.intReturns the number of idleExecutors that can start working immediately.static ComputerGets the currentComputerthat the build is running.Future<?> Deprecated.as of 1.320.Future<?> disconnect(OfflineCause cause) Disconnect this computer.org.kohsuke.stapler.HttpResponsedoChangeOfflineCause(String offlineMessage) voiddoConfigDotXml(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) Acceptsconfig.xmlsubmission, as well as serve it.voiddoConfigSubmit(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) Accepts the update to the node configuration.org.kohsuke.stapler.HttpResponseReally deletes the agent.voiddoDumpExportTable(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) Dumps the contents of the export table.abstract voiddoLaunchSlaveAgent(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) IfgetChannel()==null, attempts to relaunch the agent.voiddoProgressiveLog(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) Handles incremental log.voiddoRssAll(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) voiddoRssFailed(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) voiddoRssLatest(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) Retrieve the RSS feed for the last build for each project executed in this computer.voiddoScript(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) For system diagnostics.voiddoScriptText(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) Run arbitrary Groovy script and return result as plain text.org.kohsuke.stapler.HttpResponsedoToggleOffline(String offlineMessage) Returns the transientActions associated with the computer.Gets the read-only snapshot view of allExecutorinstances including OneOffExecutors.getApi()abstract hudson.remoting.VirtualChannelGets the channel that can be used to run a program on this computer.Returns list of all boxesComputerPanelBoxs.final longGets the time (since epoch) when this computer connected.abstract CharsetGets the default charset of this computer.final longReturns the time when this computer first became in demand.Returns theNodedescription for this computer.Used to render the list of executors.Returns cached environment variables (copy to prevent modification) for the JVM on this computer.Deprecated.as of 1.292 UsegetEnvironment()instead.Gets the read-only snapshot view of allExecutors.Obtains the heap dump.This method tries to compute the name of the host that's reachable by all the other nodes.getIcon()Returns the icon for this computer.Returns the class name that will be used to look up the icon.final longReturns the time when this computer last became idle.getLog()Gets the string representation of the agent log.protected FileDirectory where rotated agent logs are stored.This is where the log from the remote agent goes.Gets the logs recorded by this agent.Used to URL-bindAnnotatedLargeText.Expose monitoring data for the remote API.getName()Returns the name of this object.getNode()Returns theNodethat this computer represents.intNumber ofExecutors that are configured for this computer.If the computer was offline (either temporarily or not), this method will return the cause.If the computer was offline (either temporarily or not), this method will return the cause as a string (without user info).Gets the read-only snapshot view of allOneOffExecutors.abstract RetentionStrategyRetentionStrategyassociated with this computer.Returns the URL of this item relative to the parentSearchItem.Gets the system properties of the JVM on this computer.Returns the list of captured termination requests for this Computer.Gets the thread dump of the agent JVM.Returns projects that are tied on this node.Deprecated.getUrl()Gets the object that coordinates the workspace allocation on this computer.booleanvoidInterrupt allExecutors.booleanReturnstrueif the computer is accepting tasks.protected booleanisAlive()Returns true if any of the executors are active.booleanIndicates whether the agent is actually connected to the controller.final booleanisIdle()Returns true if all the executors of this computer are idle.booleanDeprecated.since 2008-05-18.booleanbooleanThis method is called to determine whether manual launching of the agent is allowed at this point in time.booleanReturns whether the agent is offline for scheduling new tasks.final booleanisOnline()Indicates whether the agent can accept a new task when it becomes idle.final booleanReturns true if this computer has some idle executors that can take more workload.booleanDeprecated.You should almost always wantisOffline().abstract BooleanisUnix()True if this computer is a Unix machine (as opposed to Windows machine).protected voidkill()Called byAbstractCIBase.updateComputerList(boolean, Collection)to notifyComputerthat it will be discarded.final voidlaunch()Deprecated.since 2009-01-06.protected voidCalled byJenkinswhen this computer is removed.voidThis method captures the information of a request to terminate a computer instance.static voidRelocate log files in the old location to the new location.protected voidCalled byExecutorto kill excessive executors from this computer.static ComputerresolveForCLI(String name) Used for CLI binding.protected voidvoidsetNumExecutors(int n) Calling path, *means protected by Queue.withLock Computer.doConfigSubmit -> Computer.replaceBy ->Jenkins.setNodes* ->Computer.setNode AbstractCIBase.updateComputerList->Computer.setNumExecutors* AbstractCIBase.updateComputerList->AbstractCIBase.updateComputer* ->Computer.setNode AbstractCIBase.updateComputerList->AbstractCIBase.killComputer->Computer.kill Computer.constructor->Computer.setNode Computer.kill is called after numExecutors set to zero(Computer.inflictMortalWound) so not need the Queue.lockvoidsetOfflineCause(OfflineCause cause) Allows a caller to define anOfflineCausefor a computer that has never been online.voidsetTemporarilyOffline(boolean temporarilyOffline) Deprecated.as of 1.320.voidsetTemporarilyOffline(boolean temporarilyOffline, OfflineCause cause) Deprecated.UsesetTemporaryOfflineCause(OfflineCause)instead.voidsetTemporaryOfflineCause(OfflineCause temporaryOfflineCause) Marks the computer as temporarily offline.voidupdateByXml(InputStream source) Updates Job by its XML definition.voidvoidBlocks until the node becomes online/offline.Methods inherited from class hudson.model.Actionable
addOrReplaceAction, doContextMenu, doContextMenu, getAction, getAction, getActions, getAllActions, getDynamic, getDynamic, removeAction, removeActions, replaceAction, replaceActionsMethods inherited from class hudson.model.AbstractModelObject
getSearch, getSearchIndex, getSearchName, makeSearchIndex, requirePOST, sendError, sendError, sendError, sendError, sendError, sendError, sendError, sendErrorMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface hudson.security.AccessControlled
checkAnyPermission, checkPermission, hasAnyPermission, hasPermission, hasPermission, hasPermission2Methods inherited from interface hudson.model.DescriptorByNameOwner
getDescriptorByNameMethods inherited from interface hudson.model.ExecutorListener
taskAccepted, taskCompleted, taskCompletedWithProblems, taskStartedMethods inherited from interface jenkins.widgets.HasWidgets
getWidget, getWidgetsMethods inherited from interface jenkins.model.IComputer
getACL, getIconAltText, getTooltip, isConnectingMethods inherited from interface hudson.search.SearchItem
getSearchIcon
-
Field Details
-
offlineCause
Contains info about reason behind computer being offline. -
nodeName
Nodeobject may be created and deleted independently from this object. -
transientActions
-
statusChangeLock
-
threadPoolForRemoting
-
SKIP_PERMISSION_CHECK
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static boolean SKIP_PERMISSION_CHECKEscape hatch for StaplerProxy-based access control -
PERMISSIONS
-
CONFIGURE
-
EXTENDED_READ
- Since:
- 1.532
-
DELETE
-
CREATE
-
DISCONNECT
-
CONNECT
-
BUILD
-
EXTENDED_READ_AND_CONNECT
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static final Permission[] EXTENDED_READ_AND_CONNECT
-
-
Constructor Details
-
Computer
-
-
Method Details
-
recordTermination
public void recordTermination()This method captures the information of a request to terminate a computer instance. Method is public as it needs to be called fromAbstractCloudSlaveandNodes. In general you should not need to call this method directly, however if implementing a custom node type or a different path for removing nodes, it may make sense to call this method in order to capture the originating request.- Since:
- 1.607
-
getTerminatedBy
Returns the list of captured termination requests for this Computer. This method is used byExecutorto provide details on why a Computer was removed in-between work being scheduled against theExecutorand theExecutorstarting to execute the task.- Returns:
- the (possibly empty) list of termination requests.
- Since:
- 1.607
- See Also:
-
getComputerPanelBoxs
Returns list of all boxesComputerPanelBoxs. -
getActions
Returns the transientActions associated with the computer.- Overrides:
getActionsin classActionable- Returns:
- a possibly empty list
-
addAction
Description copied from class:ActionableAdds a new action. Note: calls toActionable.getAllActions()that happen before calls to this method may not see the update. Note: this method will always modify the actions- Overrides:
addActionin classActionable
-
getLogFile
This is where the log from the remote agent goes. The method also creates a log directory if required.- See Also:
-
getLogDir
Directory where rotated agent logs are stored. The method also creates a log directory if required.- Since:
- 1.613
-
getWorkspaceList
Gets the object that coordinates the workspace allocation on this computer. -
getLog
Gets the string representation of the agent log.- Throws:
IOException
-
getLogText
Used to URL-bindAnnotatedLargeText. -
getOfflineCause
If the computer was offline (either temporarily or not), this method will return the cause.- Specified by:
getOfflineCausein interfaceIComputer- Returns:
- null if the system was put offline without given a cause.
-
hasOfflineCause
public boolean hasOfflineCause()- Specified by:
hasOfflineCausein interfaceIComputer- Returns:
trueif this computer has a defined offline cause, @{code false} otherwise.
-
getOfflineCauseReason
Description copied from interface:IComputerIf the computer was offline (either temporarily or not), this method will return the cause as a string (without user info).hasOfflineCause() == trueimplies this must be nonempty.- Specified by:
getOfflineCauseReasonin interfaceIComputer- Returns:
- empty string if the system was put offline without given a cause.
-
getChannel
@Nullable public abstract hudson.remoting.VirtualChannel getChannel()Gets the channel that can be used to run a program on this computer.- Returns:
- never null when
isOffline()==false.
-
getDefaultCharset
Gets the default charset of this computer.- Returns:
- never null when
isOffline()==false.
-
getLogRecords
Gets the logs recorded by this agent.- Throws:
IOExceptionInterruptedException
-
doLaunchSlaveAgent
public abstract void doLaunchSlaveAgent(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException IfgetChannel()==null, attempts to relaunch the agent.- Throws:
IOExceptionjakarta.servlet.ServletException
-
launch
Deprecated.since 2009-01-06. Useconnect(boolean) -
connect
Do the same asdoLaunchSlaveAgent(StaplerRequest2, StaplerResponse2)but outside the context of serving a request.If already connected or if this computer doesn't support proactive launching, no-op. This method may return immediately while the launch operation happens asynchronously.
- Specified by:
connectin interfaceIComputer- Parameters:
forceReconnect- If true and a connect activity is already in progress, it will be cancelled and the new one will be started. If false, and a connect activity is already in progress, this method will do nothing and just return the pending connection operation.- Returns:
- A
Futurerepresenting pending completion of the task. The 'completion' includes both a successful completion and a non-successful completion (such distinction typically doesn't make much sense because as soon asComputeris connected it can be disconnected by some other threads.) - See Also:
-
_connect
Allows implementing-classes to provide an implementation for the connect method.If already connected or if this computer doesn't support proactive launching, no-op. This method may return immediately while the launch operation happens asynchronously.
- Parameters:
forceReconnect- If true and a connect activity is already in progress, it will be cancelled and the new one will be started. If false, and a connect activity is already in progress, this method will do nothing and just return the pending connection operation.- Returns:
- A
Futurerepresenting pending completion of the task. The 'completion' includes both a successful completion and a non-successful completion (such distinction typically doesn't make much sense because as soon asComputeris connected it can be disconnected by some other threads.) - See Also:
-
cliConnect
Deprecated.Implementation of CLI command "connect-node" moved toConnectNodeCommand.- Parameters:
force- If true cancel any currently pending connect operation and retry from scratch- Throws:
ExecutionExceptionInterruptedException
-
getConnectTime
public final long getConnectTime()Gets the time (since epoch) when this computer connected.- Returns:
- The time in ms since epoch when this computer last connected.
-
disconnect
Disconnect this computer. If this is the built-in node, no-op. This method may return immediately while the launch operation happens asynchronously.- Parameters:
cause- Object that identifies the reason the node was disconnected.- Returns:
Futureto track the asynchronous disconnect operation.- Since:
- 1.320
- See Also:
-
disconnect
Deprecated.as of 1.320. Usedisconnect(OfflineCause)and specify the cause.Equivalent todisconnect(null) -
cliDisconnect
Deprecated.Implementation of CLI command "disconnect-node" moved toDisconnectNodeCommand.- Parameters:
cause- Record the note about why you are disconnecting this node- Throws:
ExecutionExceptionInterruptedException
-
cliOffline
Deprecated.Implementation of CLI command "offline-node" moved toOfflineNodeCommand.- Parameters:
cause- Record the note about why you are disconnecting this node- Throws:
ExecutionExceptionInterruptedException
-
cliOnline
Deprecated.Implementation of CLI command "online-node" moved toOnlineNodeCommand. -
getNumExecutors
@Exported public int getNumExecutors()Number ofExecutors that are configured for this computer.When this value is decreased, it is temporarily possible for
executorsto have a larger number than this. -
getName
Description copied from interface:NamedReturns the name of this object. -
isUnix
True if this computer is a Unix machine (as opposed to Windows machine).- Returns:
nullif the computer is disconnected and therefore we don't know whether it is Unix or not.- Since:
- 1.624
-
getNode
Returns theNodethat this computer represents.- Returns:
- null if the configuration has changed and the node is removed, yet the corresponding
Computeris not yet gone.
-
getLoadStatistics
-
getTimeline
@Deprecated @Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) public BuildTimelineWidget getTimeline()Deprecated. -
isOffline
@Exported public boolean isOffline()Description copied from interface:IComputerReturns whether the agent is offline for scheduling new tasks. Even iftrue, the agent may still be connected to the controller and executing a task, but is considered offline for scheduling. -
isOnline
public final boolean isOnline()Description copied from interface:IComputerIndicates whether the agent can accept a new task when it becomes idle.falsedoes not necessarily mean the agent is disconnected. -
isConnected
public boolean isConnected()Indicates whether the agent is actually connected to the controller.Uses
getChannel()to check the connection. A connected agent may still be offline for scheduling if marked temporarily offline.- Specified by:
isConnectedin interfaceIComputer- Returns:
trueif the agent is connected,falseotherwise.- See Also:
-
isManualLaunchAllowed
@Exported public boolean isManualLaunchAllowed()This method is called to determine whether manual launching of the agent is allowed at this point in time.- Returns:
trueif manual launching of the agent is allowed at this point in time.
-
isJnlpAgent
Deprecated.since 2008-05-18. See isLaunchSupported() and ComputerLauncherReturns true if this computer is supposed to be launched via inbound protocol. -
isLaunchSupported
@Exported public boolean isLaunchSupported()- Specified by:
isLaunchSupportedin interfaceIComputer- Returns:
- true if this computer can be launched by Jenkins proactively and automatically.
For example, inbound agents return
falsefrom this, because the launch process needs to be initiated from the agent side.
-
isTemporarilyOffline
Deprecated.You should almost always wantisOffline(). This method is marked as deprecated to warn people when they accidentally call this method.Returns true if this node is marked temporarily offline by the user.In contrast,
isOffline()represents the actual online/offline state. For example, this method may return false whileisOffline()returns true if the agent failed to launch. -
setOfflineCause
Allows a caller to define anOfflineCausefor a computer that has never been online.- Since:
- 2.483
-
setTemporarilyOffline
Deprecated.as of 1.320. UsesetTemporaryOfflineCause(OfflineCause) -
setTemporarilyOffline
@Deprecated(since="2.482") public void setTemporarilyOffline(boolean temporarilyOffline, OfflineCause cause) Deprecated.UsesetTemporaryOfflineCause(OfflineCause)instead. -
setTemporaryOfflineCause
Marks the computer as temporarily offline. This retains the underlyingChannelconnection, but prevent builds from executing.- Parameters:
temporaryOfflineCause- The reason why the node is being put offline. If null, this cancels the status- Since:
- 2.482
-
getTemporaryOfflineCauseReason
- Returns:
- If the node is temporarily offline, the reason why.
- Since:
- 2.482
-
getIcon
Description copied from interface:IComputerReturns the icon for this computer.It is both the recommended and default implementation to serve different icons based on
IComputer.isOffline() -
getIconClassName
Returns the class name that will be used to look up the icon.This class name will be added as a class tag to the html img tags where the icon should show up followed by a size specifier given by
Icon.toNormalizedIconSizeClass(String)The conversion of class tag to src tag is registered throughIconSet.addIcon(Icon)- Specified by:
getIconClassNamein interfaceIComputer- Specified by:
getIconClassNamein interfaceIconSpec- Returns:
- The Icon class specification e.g. 'icon-notepad'.
- See Also:
-
getDisplayName
- Specified by:
getDisplayNamein interfaceModelObject
-
getCaption
-
getUrl
-
getAssignedLabels
-
getTiedJobs
Returns projects that are tied on this node. -
getBuilds
-
setNode
-
kill
protected void kill()Called byAbstractCIBase.updateComputerList(boolean, Collection)to notifyComputerthat it will be discarded.Note that at this point
getNode()returns null.- See Also:
-
onRemoved
protected void onRemoved()Called byJenkinswhen this computer is removed.This happens when list of nodes are updated (for example by
Jenkins.setNodes(List)and the computer becomes redundant. SuchComputers get killed, then after all its executors are finished, this method is called.Note that at this point
getNode()returns null.- Since:
- 1.510
- See Also:
-
setNumExecutors
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public void setNumExecutors(int n) Calling path, *means protected by Queue.withLock Computer.doConfigSubmit -> Computer.replaceBy ->Jenkins.setNodes* ->Computer.setNode AbstractCIBase.updateComputerList->Computer.setNumExecutors* AbstractCIBase.updateComputerList->AbstractCIBase.updateComputer* ->Computer.setNode AbstractCIBase.updateComputerList->AbstractCIBase.killComputer->Computer.kill Computer.constructor->Computer.setNode Computer.kill is called after numExecutors set to zero(Computer.inflictMortalWound) so not need the Queue.lock- Parameters:
n- number of executors
-
countIdle
public int countIdle()Returns the number of idleExecutors that can start working immediately. -
countBusy
public final int countBusy()Description copied from interface:IComputerReturns the number ofIExecutors that are doing some work right now. -
countExecutors
public final int countExecutors()Returns the current size of the executor pool for this computer. This number may temporarily differ fromgetNumExecutors()if there are busy tasks when the configured size is decreased. OneOffExecutors are not included in this count.- Specified by:
countExecutorsin interfaceIComputer
-
getExecutors
Gets the read-only snapshot view of allExecutors. -
getOneOffExecutors
Gets the read-only snapshot view of allOneOffExecutors. -
getAllExecutors
Gets the read-only snapshot view of allExecutorinstances including OneOffExecutors.- Returns:
- the read-only snapshot view of all
Executorinstances including OneOffExecutors. - Since:
- 2.55
-
getDisplayExecutors
Used to render the list of executors.- Specified by:
getDisplayExecutorsin interfaceIComputer- Returns:
- a snapshot of the executor display information
- Since:
- 1.607
-
isIdle
@Exported public final boolean isIdle()Returns true if all the executors of this computer are idle. -
isPartiallyIdle
public final boolean isPartiallyIdle()Returns true if this computer has some idle executors that can take more workload. -
getIdleStartMilliseconds
public final long getIdleStartMilliseconds()Returns the time when this computer last became idle.If this computer is already idle, the return value will point to the time in the past since when this computer has been idle.
If this computer is busy, the return value will point to the time in the future where this computer will be expected to become free.
-
getDemandStartMilliseconds
public final long getDemandStartMilliseconds()Returns the time when this computer first became in demand. -
getDescription
@Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) @Exported @NonNull public String getDescription() -
removeExecutor
Called byExecutorto kill excessive executors from this computer. -
isAlive
protected boolean isAlive()Returns true if any of the executors are active.- Since:
- 1.509
-
interrupt
public void interrupt()Interrupt allExecutors. Called fromJenkins.cleanUp(). -
getSearchUrl
Description copied from interface:SearchItemReturns the URL of this item relative to the parentSearchItem.- Specified by:
getSearchUrlin 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.)
-
getSearchGroup
- Specified by:
getSearchGroupin interfaceSearchItem
-
getRetentionStrategy
RetentionStrategyassociated with this computer.- Returns:
- never null. This method return
RetentionStrategy<? super T>whereT=this.getClass().
-
getMonitorData
Expose monitoring data for the remote API. -
getMonitoringData
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public Map<NodeMonitor,Object> getMonitoringData() -
getSystemProperties
Gets the system properties of the JVM on this computer. If this is the master, it returns the system property of the master computer.- Throws:
IOExceptionInterruptedException
-
getEnvVars
Deprecated.as of 1.292 UsegetEnvironment()instead.- Throws:
IOExceptionInterruptedException
-
getEnvironment
Returns cached environment variables (copy to prevent modification) for the JVM on this computer. If this is the master, it returns the system property of the master computer.- Throws:
IOExceptionInterruptedException
-
buildEnvironment
@NonNull public EnvVars buildEnvironment(@NonNull TaskListener listener) throws IOException, InterruptedException Creates an environment variable override to be used for launching processes on this node.- Throws:
IOExceptionInterruptedException- Since:
- 1.489
- See Also:
-
getThreadDump
Gets the thread dump of the agent JVM.- Returns:
- key is the thread name, and the value is the pre-formatted dump.
- Throws:
IOExceptionInterruptedException
-
getHeapDump
Obtains the heap dump.- Throws:
IOException
-
getHostName
This method tries to compute the name of the host that's reachable by all the other nodes.Since it's possible that the agent is not reachable from the master (it may be behind a firewall, connecting to master via inbound protocol), this method may return null. It's surprisingly tricky for a machine to know a name that other systems can get to, especially between things like DNS search suffix, the hosts file, and YP.
So the technique here is to compute possible interfaces and names on the agent, then try to ping them from the master, and pick the one that worked.
The computation may take some time, so it employs caching to make the successive lookups faster.
- Returns:
- null if the host name cannot be computed (for example because this computer is offline, because the agent is behind the firewall, etc.)
- Throws:
IOExceptionInterruptedException- Since:
- 1.300
-
doRssAll
@Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) public void doRssAll(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException - Throws:
IOExceptionjakarta.servlet.ServletException
-
doRssFailed
@Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) public void doRssFailed(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException - Throws:
IOExceptionjakarta.servlet.ServletException
-
doRssLatest
@Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) public void doRssLatest(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException Retrieve the RSS feed for the last build for each project executed in this computer. Only the information fromAbstractProjectis displayed since there isn't a proper API to gather information about the node where the builds are executed for other sorts of projects such as Pipeline- Throws:
IOExceptionjakarta.servlet.ServletException- Since:
- 2.215
-
doToggleOffline
public org.kohsuke.stapler.HttpResponse doToggleOffline(@QueryParameter String offlineMessage) throws IOException, jakarta.servlet.ServletException - Throws:
IOExceptionjakarta.servlet.ServletException
-
doChangeOfflineCause
public org.kohsuke.stapler.HttpResponse doChangeOfflineCause(@QueryParameter String offlineMessage) throws IOException, jakarta.servlet.ServletException - Throws:
IOExceptionjakarta.servlet.ServletException
-
getApi
-
doDumpExportTable
public void doDumpExportTable(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException, InterruptedException Dumps the contents of the export table.- Throws:
IOExceptionjakarta.servlet.ServletExceptionInterruptedException
-
doScript
public void doScript(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException For system diagnostics. Run arbitrary Groovy script.- Throws:
IOExceptionjakarta.servlet.ServletException
-
doScriptText
public void doScriptText(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException Run arbitrary Groovy script and return result as plain text.- Throws:
IOExceptionjakarta.servlet.ServletException
-
_doScript
protected void _doScript(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp, String view) throws IOException, jakarta.servlet.ServletException - Throws:
IOExceptionjakarta.servlet.ServletException
-
doConfigSubmit
@POST public void doConfigSubmit(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException, Descriptor.FormException Accepts the update to the node configuration.- Throws:
IOExceptionjakarta.servlet.ServletExceptionDescriptor.FormException
-
doConfigDotXml
@WebMethod(name="config.xml") public void doConfigDotXml(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException Acceptsconfig.xmlsubmission, as well as serve it.- Throws:
IOExceptionjakarta.servlet.ServletException
-
updateByXml
Updates Job by its XML definition.- Throws:
IOExceptionjakarta.servlet.ServletException- Since:
- 1.526
-
doDoDelete
Really deletes the agent.- Throws:
IOException
-
waitUntilOnline
Blocks until the node becomes online/offline.- Throws:
InterruptedException
-
waitUntilOffline
- Throws:
InterruptedException
-
doProgressiveLog
public void doProgressiveLog(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException Handles incremental log.- Throws:
IOException
-
getTarget
- Specified by:
getTargetin interfaceorg.kohsuke.stapler.StaplerProxy
-
currentComputer
Gets the currentComputerthat the build is running. This method only works when called during a build, such as byPublisher,BuildWrapper, etc.- Returns:
- the
Computerassociated withExecutor.currentExecutor(), or (consistently as of 1.591) null if not on an executor thread
-
isAcceptingTasks
@OverrideMustInvoke public boolean isAcceptingTasks()Description copied from interface:IComputerReturnstrueif the computer is accepting tasks. Needed to allow agents programmatic suspension of task scheduling that does not overlap with being offline.- Specified by:
isAcceptingTasksin interfaceIComputer- Returns:
trueif the computer is accepting tasks- See Also:
-
resolveForCLI
@CLIResolver public static Computer resolveForCLI(String name) throws org.kohsuke.args4j.CmdLineException Used for CLI binding.- Throws:
org.kohsuke.args4j.CmdLineException
-
relocateOldLogs
Relocate log files in the old location to the new location. Files were used to be $JENKINS_ROOT/slave-NAME.log (and .1, .2, ...) but now they are at $JENKINS_ROOT/logs/slaves/NAME/slave.log (and .1, .2, ...)- See Also:
-
ConnectNodeCommand.