Skip to content

Commit

Permalink
[FIXED JENKINS-25845] Display timestamp in node startup log
Browse files Browse the repository at this point in the history
  • Loading branch information
Vlatombe committed Jun 18, 2015
1 parent ac1e7cd commit 82a3a38
Show file tree
Hide file tree
Showing 9 changed files with 129 additions and 119 deletions.
38 changes: 24 additions & 14 deletions src/main/java/hudson/os/windows/ManagedWindowsServiceLauncher.java
Expand Up @@ -51,6 +51,7 @@
import java.net.Socket;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

Expand Down Expand Up @@ -185,7 +186,7 @@ public void launch(final SlaveComputer computer, final TaskListener listener) th
final PrintStream logger = listener.getLogger();
final String name = determineHost(computer);

logger.println(Messages.ManagedWindowsServiceLauncher_ConnectingTo(name));
logger.println(Messages.ManagedWindowsServiceLauncher_ConnectingTo(getTimestamp(), name));

InetAddress host = InetAddress.getByName(name);

Expand Down Expand Up @@ -276,15 +277,15 @@ public void launch(final SlaveComputer computer, final TaskListener listener) th
String id = generateServiceId(path);
Win32Service slaveService = services.getService(id);
if(slaveService==null) {
logger.println(Messages.ManagedWindowsServiceLauncher_InstallingSlaveService());
logger.println(Messages.ManagedWindowsServiceLauncher_InstallingSlaveService(getTimestamp()));
if(!DotNet.isInstalled(2,0, name, auth)) {
// abort the launch
logger.println(Messages.ManagedWindowsServiceLauncher_DotNetRequired());
logger.println(Messages.ManagedWindowsServiceLauncher_DotNetRequired(getTimestamp()));
return;
}

// copy exe
logger.println(Messages.ManagedWindowsServiceLauncher_CopyingSlaveExe());
logger.println(Messages.ManagedWindowsServiceLauncher_CopyingSlaveExe(getTimestamp()));
copyStreamAndClose(getClass().getResource("/windows-service/jenkins.exe").openStream(), new SmbFile(remoteRoot,"jenkins-slave.exe").getOutputStream());

copyStreamAndClose(getClass().getResource("/windows-service/jenkins.exe.config").openStream(), new SmbFile(remoteRoot,"jenkins-slave.exe.config").getOutputStream());
Expand All @@ -295,7 +296,7 @@ public void launch(final SlaveComputer computer, final TaskListener listener) th
String xml = createAndCopyJenkinsSlaveXml(java, id, logger, remoteRoot);

// install it as a service
logger.println(Messages.ManagedWindowsServiceLauncher_RegisteringService());
logger.println(Messages.ManagedWindowsServiceLauncher_RegisteringService(getTimestamp()));
Document dom = new SAXReader().read(new StringReader(xml));
Win32Service svc = services.Get("Win32_Service").cast(Win32Service.class);
int r;
Expand Down Expand Up @@ -330,23 +331,23 @@ public void launch(final SlaveComputer computer, final TaskListener listener) th
copySlaveJar(logger, remoteRoot);
}

logger.println(Messages.ManagedWindowsServiceLauncher_StartingService());
logger.println(Messages.ManagedWindowsServiceLauncher_StartingService(getTimestamp()));
slaveService.start();

// wait until we see the port.txt, but don't do so forever
logger.println(Messages.ManagedWindowsServiceLauncher_WaitingForService());
logger.println(Messages.ManagedWindowsServiceLauncher_WaitingForService(getTimestamp()));
SmbFile portFile = new SmbFile(remoteRoot, "port.txt");
for( int i=0; !portFile.exists(); i++ ) {
if(i>=30) {
listener.error(Messages.ManagedWindowsServiceLauncher_ServiceDidntRespond());
listener.error(Messages.ManagedWindowsServiceLauncher_ServiceDidntRespond(getTimestamp()));
return;
}
Thread.sleep(1000);
}
int p = readSmbFile(portFile);

// connect
logger.println(Messages.ManagedWindowsServiceLauncher_ConnectingToPort(p));
logger.println(Messages.ManagedWindowsServiceLauncher_ConnectingToPort(getTimestamp(),p));
final Socket s = new Socket(name,p);

// ready
Expand All @@ -365,7 +366,7 @@ public void onClosed(Channel channel, IOException cause) {
} catch (JIException e) {
if(e.getErrorCode()==5)
// access denied error
e.printStackTrace(listener.error(Messages.ManagedWindowsServiceLauncher_AccessDenied()));
e.printStackTrace(listener.error(Messages.ManagedWindowsServiceLauncher_AccessDenied(getTimestamp())));
else
e.printStackTrace(listener.error(e.getMessage()));
} catch (DocumentException e) {
Expand Down Expand Up @@ -440,7 +441,7 @@ protected String determineHost(Computer c) {
}

private String createAndCopyJenkinsSlaveXml(String java, String serviceId, PrintStream logger, SmbFile remoteRoot) throws IOException {
logger.println(Messages.ManagedWindowsServiceLauncher_CopyingSlaveXml());
logger.println(Messages.ManagedWindowsServiceLauncher_CopyingSlaveXml(getTimestamp()));
String xml = generateSlaveXml(serviceId,
java + "w.exe", vmargs, "-tcp %BASE%\\port.txt");
copyStreamAndClose(new ByteArrayInputStream(xml.getBytes("UTF-8")), new SmbFile(remoteRoot,"jenkins-slave.xml").getOutputStream());
Expand All @@ -449,7 +450,7 @@ private String createAndCopyJenkinsSlaveXml(String java, String serviceId, Print

private void copySlaveJar(PrintStream logger, SmbFile remoteRoot) throws IOException {
// copy slave.jar
logger.println(Messages.ManagedWindowsServiceLauncher_CopyingSlaveJar());
logger.println(Messages.ManagedWindowsServiceLauncher_CopyingSlaveJar(getTimestamp()));
copyStreamAndClose(Jenkins.getInstance().getJnlpJars("slave.jar").getURL().openStream(), new SmbFile(remoteRoot,"slave.jar").getOutputStream());
}

Expand All @@ -473,9 +474,9 @@ public void afterDisconnect(SlaveComputer computer, TaskListener listener) {
String id = generateServiceId(computer.getNode().getRemoteFS());
Win32Service slaveService = services.getService(id);
if(slaveService!=null) {
listener.getLogger().println(Messages.ManagedWindowsServiceLauncher_StoppingService());
listener.getLogger().println(Messages.ManagedWindowsServiceLauncher_StoppingService(getTimestamp()));
slaveService.StopService();
listener.getLogger().println(Messages.ManagedWindowsServiceLauncher_UnregisteringService());
listener.getLogger().println(Messages.ManagedWindowsServiceLauncher_UnregisteringService(getTimestamp()));
slaveService.Delete();
}
//destroy session to free the socket
Expand All @@ -502,6 +503,15 @@ String generateSlaveXml(String id, String java, String vmargs, String args) thro
return xml;
}

/**
* Gets the formatted current time stamp.
*
* @return the formatted current time stamp.
*/
protected String getTimestamp() {
return String.format("[%1$tD %1$tT]", new Date());
}

@Extension
public static class DescriptorImpl extends Descriptor<ComputerLauncher> {
public String getDisplayName() {
Expand Down
28 changes: 14 additions & 14 deletions src/main/resources/hudson/os/windows/Messages.properties
Expand Up @@ -22,20 +22,20 @@

ManagedWindowsServiceLauncher.DisplayName=\
Let Jenkins control this Windows slave as a Windows service
ManagedWindowsServiceLauncher.DotNetRequired=.NET Framework 2.0 or later is required on this computer to run a Jenkins slave as a Windows service
ManagedWindowsServiceLauncher.InstallingSlaveService=Installing the Jenkins slave service
ManagedWindowsServiceLauncher.ConnectingTo=Connecting to {0}
ManagedWindowsServiceLauncher.ConnectingToPort=Connecting to port {0}
ManagedWindowsServiceLauncher.CopyingSlaveExe=Copying jenkins-slave.exe
ManagedWindowsServiceLauncher.CopyingSlaveXml=Copying jenkins-slave.xml
ManagedWindowsServiceLauncher.CopyingSlaveJar=Copying slave.jar
ManagedWindowsServiceLauncher.RegisteringService=Registering the service
ManagedWindowsServiceLauncher.UnregisteringService=Unregistering the service
ManagedWindowsServiceLauncher.ServiceDidntRespond=The service did not respond. Perhaps it failed to launch?
ManagedWindowsServiceLauncher.StartingService=Starting the service
ManagedWindowsServiceLauncher.StoppingService=Stopping the service
ManagedWindowsServiceLauncher.WaitingForService=Waiting for the service to become ready
ManagedWindowsServiceLauncher.AccessDenied=Access is denied. See http://wiki.jenkins-ci.org/display/JENKINS/Windows+slaves+fail+to+start+via+DCOM for more information about how to resolve this.
ManagedWindowsServiceLauncher.DotNetRequired={0} [windows-slaves] .NET Framework 2.0 or later is required on this computer to run a Jenkins slave as a Windows service
ManagedWindowsServiceLauncher.InstallingSlaveService={0} [windows-slaves] Installing the Jenkins slave service
ManagedWindowsServiceLauncher.ConnectingTo={0} [windows-slaves] Connecting to {1}
ManagedWindowsServiceLauncher.ConnectingToPort={0} [windows-slaves] Connecting to port {1}
ManagedWindowsServiceLauncher.CopyingSlaveExe={0} [windows-slaves] Copying jenkins-slave.exe
ManagedWindowsServiceLauncher.CopyingSlaveXml={0} [windows-slaves] Copying jenkins-slave.xml
ManagedWindowsServiceLauncher.CopyingSlaveJar={0} [windows-slaves] Copying slave.jar
ManagedWindowsServiceLauncher.RegisteringService={0} [windows-slaves] Registering the service
ManagedWindowsServiceLauncher.UnregisteringService={0} [windows-slaves] Unregistering the service
ManagedWindowsServiceLauncher.ServiceDidntRespond={0} [windows-slaves] The service did not respond. Perhaps it failed to launch?
ManagedWindowsServiceLauncher.StartingService={0} [windows-slaves] Starting the service
ManagedWindowsServiceLauncher.StoppingService={0} [windows-slaves] Stopping the service
ManagedWindowsServiceLauncher.WaitingForService={0} [windows-slaves] Waiting for the service to become ready
ManagedWindowsServiceLauncher.AccessDenied={0} [windows-slaves] Access is denied. See http://wiki.jenkins-ci.org/display/JENKINS/Windows+slaves+fail+to+start+via+DCOM for more information about how to resolve this.

ManagedWindowsServiceAccount.LocalSystem.DisplayName=Use Local System User
ManagedWindowsServiceAccount.Administrator.DisplayName=Use Administrator account given above
Expand Down
24 changes: 12 additions & 12 deletions src/main/resources/hudson/os/windows/Messages_da.properties
Expand Up @@ -20,17 +20,17 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.

ManagedWindowsServiceLauncher.StoppingService=Stopper servicen
ManagedWindowsServiceLauncher.ServiceDidntRespond=Servicen svarede ikke. M\u00e5ske startede den ikke?
ManagedWindowsServiceLauncher.CopyingSlaveXml=Kopierer jenkins-slave.xml
ManagedWindowsServiceLauncher.ConnectingToPort=Forbinder til port {0}
ManagedWindowsServiceLauncher.DotNetRequired=.NET Framework 2.0 eller nyere er n\u00f8dvendig p\u00e5 denne computer for at kunne k\u00f8re Jenkins som en Windows service
ManagedWindowsServiceLauncher.ConnectingTo=Forbinder til {0}
ManagedWindowsServiceLauncher.RegisteringService=Registrerer servicen
ManagedWindowsServiceLauncher.StartingService=Starter servicen
ManagedWindowsServiceLauncher.WaitingForService=Venter p\u00e5 at servicen bliver klar
ManagedWindowsServiceLauncher.StoppingService={0} [windows-slaves] Stopper servicen
ManagedWindowsServiceLauncher.ServiceDidntRespond={0} [windows-slaves] Servicen svarede ikke. M\u00e5ske startede den ikke?
ManagedWindowsServiceLauncher.CopyingSlaveXml={0} [windows-slaves] Kopierer jenkins-slave.xml
ManagedWindowsServiceLauncher.ConnectingToPort={0} [windows-slaves] Forbinder til port {0}
ManagedWindowsServiceLauncher.DotNetRequired={0} [windows-slaves] .NET Framework 2.0 eller nyere er n\u00f8dvendig p\u00e5 denne computer for at kunne k\u00f8re Jenkins som en Windows service
ManagedWindowsServiceLauncher.ConnectingTo={0} [windows-slaves] Forbinder til {1}
ManagedWindowsServiceLauncher.RegisteringService={0} [windows-slaves] Registrerer servicen
ManagedWindowsServiceLauncher.StartingService={0} [windows-slaves] Starter servicen
ManagedWindowsServiceLauncher.WaitingForService={0} [windows-slaves] Venter p\u00e5 at servicen bliver klar
ManagedWindowsServiceLauncher.AccessDenied=\
Adgang er n\u00e6gtet. Se http://wiki.jenkins-ci.org/display/JENKINS/Windows+slaves+fail+to+start+via+DCOM for information om hvordan du kan l\u00f8se dette problem.
ManagedWindowsServiceLauncher.CopyingSlaveExe=Kopierer jenkins-slave.exe
ManagedWindowsServiceLauncher.InstallingSlaveService=Installerer Jenkins slave servicen
{0} [windows-slaves] Adgang er n\u00e6gtet. Se http://wiki.jenkins-ci.org/display/JENKINS/Windows+slaves+fail+to+start+via+DCOM for information om hvordan du kan l\u00f8se dette problem.
ManagedWindowsServiceLauncher.CopyingSlaveExe={0} [windows-slaves] Kopierer jenkins-slave.exe
ManagedWindowsServiceLauncher.InstallingSlaveService={0} [windows-slaves] Installerer Jenkins slave servicen
ManagedWindowsServiceLauncher.DisplayName=Lad Jenkins styre denne Windows slave som en Windows service
28 changes: 14 additions & 14 deletions src/main/resources/hudson/os/windows/Messages_de.properties
Expand Up @@ -23,22 +23,22 @@
ManagedWindowsServiceLauncher.DisplayName=\
Jenkins soll auf diesem Windows-Slave als Windows-Dienst betrieben werden
ManagedWindowsServiceLauncher.DotNetRequired=\
Das .NET Framework 2.0 (oder neuer) wird auf diesem Rechner benötigt, \
{0} [windows-slaves] Das .NET Framework 2.0 (oder neuer) wird auf diesem Rechner benötigt, \
um den Jenkins-Slave als Windows-Dienst zu betreiben.
ManagedWindowsServiceLauncher.InstallingSlaveService=Installiere den Jenkins-Slave-Dienst
ManagedWindowsServiceLauncher.ConnectingTo=Verbinde zu {0}
ManagedWindowsServiceLauncher.ConnectingToPort=Verbinde über Port {0}
ManagedWindowsServiceLauncher.CopyingSlaveExe=Kopiere jenkins-slave.exe
ManagedWindowsServiceLauncher.CopyingSlaveXml=Kopiere jenkins-slave.xml
ManagedWindowsServiceLauncher.CopyingSlaveJar=Kopiere slave.jar
ManagedWindowsServiceLauncher.RegisteringService=Registriere Dienst
ManagedWindowsServiceLauncher.UnregisteringService=Deregistriere Dienst
ManagedWindowsServiceLauncher.ServiceDidntRespond=Der Dienst antwortete nicht. Ist der Startvorgang vielleicht fehlgeschlagen?
ManagedWindowsServiceLauncher.StartingService=Starte den Dienst
ManagedWindowsServiceLauncher.StoppingService=Stoppe den Dienst
ManagedWindowsServiceLauncher.WaitingForService=Warte auf Verfügbarkeit des Dienstes
ManagedWindowsServiceLauncher.InstallingSlaveService={0} [windows-slaves] Installiere den Jenkins-Slave-Dienst
ManagedWindowsServiceLauncher.ConnectingTo={0} [windows-slaves] Verbinde zu {1}
ManagedWindowsServiceLauncher.ConnectingToPort={0} [windows-slaves] Verbinde über Port {1}
ManagedWindowsServiceLauncher.CopyingSlaveExe={0} [windows-slaves] Kopiere jenkins-slave.exe
ManagedWindowsServiceLauncher.CopyingSlaveXml={0} [windows-slaves] Kopiere jenkins-slave.xml
ManagedWindowsServiceLauncher.CopyingSlaveJar={0} [windows-slaves] Kopiere slave.jar
ManagedWindowsServiceLauncher.RegisteringService={0} [windows-slaves] Registriere Dienst
ManagedWindowsServiceLauncher.UnregisteringService={0} [windows-slaves] Deregistriere Dienst
ManagedWindowsServiceLauncher.ServiceDidntRespond={0} [windows-slaves] Der Dienst antwortete nicht. Ist der Startvorgang vielleicht fehlgeschlagen?
ManagedWindowsServiceLauncher.StartingService={0} [windows-slaves] Starte den Dienst
ManagedWindowsServiceLauncher.StoppingService={0} [windows-slaves] Stoppe den Dienst
ManagedWindowsServiceLauncher.WaitingForService={0} [windows-slaves] Warte auf Verfügbarkeit des Dienstes
ManagedWindowsServiceLauncher.AccessDenied=\
Zugriff verweigert. Hinweise zur Problemlösung finden Sie unter http://wiki.jenkins-ci.org/display/JENKINS/Windows+slaves+fail+to+start+via+DCOM.
{0} [windows-slaves] Zugriff verweigert. Hinweise zur Problemlösung finden Sie unter http://wiki.jenkins-ci.org/display/JENKINS/Windows+slaves+fail+to+start+via+DCOM.

ManagedWindowsServiceAccount.LocalSystem.DisplayName=lokales Systemkonto
ManagedWindowsServiceAccount.Administrator.DisplayName=oben angegebenes Administrator-Konto
Expand Down
28 changes: 14 additions & 14 deletions src/main/resources/hudson/os/windows/Messages_es.properties
Expand Up @@ -22,17 +22,17 @@

ManagedWindowsServiceLauncher.DisplayName=\
Permitir que Jenkins-esclavo se arranque como un servicio windows
ManagedWindowsServiceLauncher.DotNetRequired=Se necesita tener instalado ''.NET Framework 2.0'' o posterior para poder ejecutar Jenkins-esclavo como un servicio de Windows
ManagedWindowsServiceLauncher.InstallingSlaveService=Instalando el servicio Jenkins-esclavo
ManagedWindowsServiceLauncher.ConnectingTo=Conectando con {0}
ManagedWindowsServiceLauncher.ConnectingToPort=Conectando al puerto {0}
ManagedWindowsServiceLauncher.CopyingSlaveExe=Copiando jenkins-slave.exe
ManagedWindowsServiceLauncher.CopyingSlaveXml=Copiando jenkins-slave.xml
ManagedWindowsServiceLauncher.RegisteringService=Registrando el servicio
ManagedWindowsServiceLauncher.ServiceDidntRespond=El servicio no responde. Es posible que el inicio del servicio fallara.
ManagedWindowsServiceLauncher.StartingService=Iniciando el servicio
ManagedWindowsServiceLauncher.StoppingService=Parando el servicio
ManagedWindowsServiceLauncher.WaitingForService=Esperando que el servicio esté listo.
ManagedWindowsServiceLauncher.AccessDenied=Acceso denegado. Echa un vistazo a http://wiki.jenkins-ci.org/display/JENKINS/Windows+slaves+fail+to+start+via+DCOM para mas información
ManagedWindowsServiceLauncher.CopyingSlaveJar=Copiando slave.jar
ManagedWindowsServiceLauncher.UnregisteringService=Eliminando el servicio
ManagedWindowsServiceLauncher.DotNetRequired={0} [windows-slaves] Se necesita tener instalado ''.NET Framework 2.0'' o posterior para poder ejecutar Jenkins-esclavo como un servicio de Windows
ManagedWindowsServiceLauncher.InstallingSlaveService={0} [windows-slaves] Instalando el servicio Jenkins-esclavo
ManagedWindowsServiceLauncher.ConnectingTo={0} [windows-slaves] Conectando con {1}
ManagedWindowsServiceLauncher.ConnectingToPort={0} [windows-slaves] Conectando al puerto {1}
ManagedWindowsServiceLauncher.CopyingSlaveExe={0} [windows-slaves] Copiando jenkins-slave.exe
ManagedWindowsServiceLauncher.CopyingSlaveXml={0} [windows-slaves] Copiando jenkins-slave.xml
ManagedWindowsServiceLauncher.RegisteringService={0} [windows-slaves] Registrando el servicio
ManagedWindowsServiceLauncher.ServiceDidntRespond={0} [windows-slaves] El servicio no responde. Es posible que el inicio del servicio fallara.
ManagedWindowsServiceLauncher.StartingService={0} [windows-slaves] Iniciando el servicio
ManagedWindowsServiceLauncher.StoppingService={0} [windows-slaves] Parando el servicio
ManagedWindowsServiceLauncher.WaitingForService={0} [windows-slaves] Esperando que el servicio esté listo.
ManagedWindowsServiceLauncher.AccessDenied={0} [windows-slaves] Acceso denegado. Echa un vistazo a http://wiki.jenkins-ci.org/display/JENKINS/Windows+slaves+fail+to+start+via+DCOM para mas información
ManagedWindowsServiceLauncher.CopyingSlaveJar={0} [windows-slaves] Copiando slave.jar
ManagedWindowsServiceLauncher.UnregisteringService={0} [windows-slaves] Eliminando el servicio

0 comments on commit 82a3a38

Please sign in to comment.