Get master hostname from master computer object.
Jenkins.getDisplayName() is useless and returns "Jenkins". Get the name of the master via the Jenkins master computer object. Fall back on doing a DNS name lookup otherwise. Change-Id: Icee4e22e9ca989fd1faa6d27f4dad3be76da6385
This commit is contained in:
parent
7e2ca62e1c
commit
df9ee54284
|
@ -38,7 +38,7 @@ public enum Phase {
|
|||
STARTED, COMPLETED, FINISHED;
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public String handlePhase(Run run, String status, TaskListener listener) {
|
||||
public String handlePhase(Run run, String status, String masterName, TaskListener listener) {
|
||||
Jenkins jenkins = Jenkins.getInstance();
|
||||
HudsonNotificationProperty property = (HudsonNotificationProperty)
|
||||
run.getParent().getProperty(HudsonNotificationProperty.class);
|
||||
|
@ -47,7 +47,7 @@ public enum Phase {
|
|||
jenkins.getDescriptor(HudsonNotificationProperty.class);
|
||||
if ((property != null && property.isEnabled()) ||
|
||||
(globalProperty != null && globalProperty.isGloballyEnabled())) {
|
||||
return buildMessage(run.getParent(), run, status);
|
||||
return buildMessage(run.getParent(), run, status, masterName);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ public enum Phase {
|
|||
private Gson gson = new GsonBuilder().setFieldNamingPolicy(
|
||||
FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
|
||||
|
||||
private String buildMessage(Job job, Run run, String status) {
|
||||
private String buildMessage(Job job, Run run, String status, String masterName) {
|
||||
JobState jobState = new JobState();
|
||||
jobState.setName(job.getName());
|
||||
jobState.setUrl(job.getUrl());
|
||||
|
@ -70,13 +70,15 @@ public enum Phase {
|
|||
if (rootUrl != null) {
|
||||
buildState.setFullUrl(rootUrl + run.getUrl());
|
||||
}
|
||||
if (masterName != null) {
|
||||
buildState.setHostName(masterName);
|
||||
}
|
||||
|
||||
Executor executor = run.getExecutor();
|
||||
if (executor != null) {
|
||||
Computer computer = executor.getOwner();
|
||||
if (computer != null) {
|
||||
buildState.setNodeName(computer.getName());
|
||||
buildState.setHostName(jenkins.getDisplayName());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,12 +18,16 @@
|
|||
package org.jenkinsci.plugins.ZMQEventPublisher;
|
||||
|
||||
import hudson.Extension;
|
||||
import hudson.model.Computer;
|
||||
import hudson.model.Result;
|
||||
import hudson.model.Run;
|
||||
import hudson.model.TaskListener;
|
||||
import hudson.model.listeners.RunListener;
|
||||
import hudson.util.DaemonThreadFactory;
|
||||
|
||||
import jenkins.model.Jenkins;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
@ -43,18 +47,35 @@ public class RunListenerImpl extends RunListener<Run> {
|
|||
new DaemonThreadFactory();
|
||||
private ZMQRunnable ZMQRunner;
|
||||
private Thread thread;
|
||||
private String masterName;
|
||||
|
||||
public RunListenerImpl() {
|
||||
super(Run.class);
|
||||
ZMQRunner = new ZMQRunnable(queue);
|
||||
thread = threadFactory.newThread(ZMQRunner);
|
||||
thread.start();
|
||||
|
||||
Computer master = null;
|
||||
String hostname = null;
|
||||
// query Jenkins for master's name
|
||||
try {
|
||||
master = Jenkins.getInstance().getComputer("");
|
||||
if (master != null) {
|
||||
hostname = master.getHostName();
|
||||
}
|
||||
else {
|
||||
// master node may not be enabled so get masterName from system
|
||||
hostname = java.net.InetAddress.getLocalHost().getHostName();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
}
|
||||
masterName = hostname;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCompleted(Run build, TaskListener listener) {
|
||||
String event = "onCompleted";
|
||||
String json = Phase.COMPLETED.handlePhase(build, getStatus(build), listener);
|
||||
String json = Phase.COMPLETED.handlePhase(build, getStatus(build), masterName, listener);
|
||||
sendEvent(event, json);
|
||||
}
|
||||
|
||||
|
@ -70,14 +91,14 @@ public class RunListenerImpl extends RunListener<Run> {
|
|||
@Override
|
||||
public void onFinalized(Run build) {
|
||||
String event = "onFinalized";
|
||||
String json = Phase.FINISHED.handlePhase(build, getStatus(build), TaskListener.NULL);
|
||||
String json = Phase.FINISHED.handlePhase(build, getStatus(build), masterName, TaskListener.NULL);
|
||||
sendEvent(event, json);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStarted(Run build, TaskListener listener) {
|
||||
String event = "onStarted";
|
||||
String json = Phase.STARTED.handlePhase(build, getStatus(build), listener);
|
||||
String json = Phase.STARTED.handlePhase(build, getStatus(build), masterName, listener);
|
||||
sendEvent(event, json);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue