public abstract class DelegatingComputerLauncher extends ComputerLauncher
ComputerLauncher
that to be used by launchers that
perform some initialization (typically something cloud/v12n related
to power up the machine), and then delegate to another ComputerLauncher
to connect.
If you are delegating to another ComputerLauncher
you must extend this base classModifier and Type | Class and Description |
---|---|
static class |
DelegatingComputerLauncher.DescriptorImpl |
ExtensionPoint.LegacyInstancesAreScopedToHudson
Modifier and Type | Field and Description |
---|---|
protected ComputerLauncher |
launcher |
LIST
Modifier | Constructor and Description |
---|---|
protected |
DelegatingComputerLauncher(ComputerLauncher launcher) |
Modifier and Type | Method and Description |
---|---|
void |
afterDisconnect(SlaveComputer computer,
TaskListener listener)
Allows the
ComputerLauncher to tidy-up after a disconnect. |
void |
beforeDisconnect(SlaveComputer computer,
TaskListener listener)
Allows the
ComputerLauncher to prepare for a disconnect. |
ComputerLauncher |
getLauncher() |
void |
launch(SlaveComputer computer,
TaskListener listener)
Launches the agent for the given
Computer . |
afterDisconnect, beforeDisconnect, checkJavaVersion, isLaunchSupported, launch
getDescriptor
protected ComputerLauncher launcher
protected DelegatingComputerLauncher(ComputerLauncher launcher)
public ComputerLauncher getLauncher()
public void launch(SlaveComputer computer, TaskListener listener) throws IOException, InterruptedException
ComputerLauncher
Computer
.
If the agent is launched successfully, SlaveComputer.setChannel(InputStream, OutputStream, TaskListener, Channel.Listener)
should be invoked in the end to notify Hudson of the established connection.
The operation could also fail, in which case there's no need to make any callback notification,
(except to notify the user of the failure through StreamTaskListener
.)
Also note that the normal return of this method call does not necessarily signify a successful launch.
If someone programmatically calls this method and wants to find out if the launch was a success,
use Computer.isOnline()
at the end.
This method must operate synchronously. Asynchrony is provided by Computer.connect(boolean)
and
its correct operation depends on this.
launch
in class ComputerLauncher
listener
- The progress of the launch, as well as any error, should be sent to this listener.IOException
- if the method throws an IOException
or InterruptedException
, the launch was considered
a failure and the stack trace is reported into the listener. This handling is just so that the implementation
of this method doesn't have to diligently catch those exceptions.InterruptedException
public void afterDisconnect(SlaveComputer computer, TaskListener listener)
ComputerLauncher
ComputerLauncher
to tidy-up after a disconnect.
This method is invoked after the Channel
to this computer is terminated.
Disconnect operation is performed asynchronously, so there's no guarantee
that the corresponding SlaveComputer
exists for the duration of the
operation.
afterDisconnect
in class ComputerLauncher
public void beforeDisconnect(SlaveComputer computer, TaskListener listener)
ComputerLauncher
ComputerLauncher
to prepare for a disconnect.
This method is invoked before the Channel
to this computer is terminated,
thus the channel is still accessible from SlaveComputer.getChannel()
.
If the channel is terminated unexpectedly, this method will not be invoked,
as the channel is already gone.
Disconnect operation is performed asynchronously, so there's no guarantee
that the corresponding SlaveComputer
exists for the duration of the
operation.
beforeDisconnect
in class ComputerLauncher
Copyright © 2004–2019. All rights reserved.