diff --git a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/Phase.java b/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/Phase.java index cfce93f..e198f0f 100644 --- a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/Phase.java +++ b/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/Phase.java @@ -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()); } } diff --git a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/RunListenerImpl.java b/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/RunListenerImpl.java index 5ac462f..e630cc5 100644 --- a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/RunListenerImpl.java +++ b/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/RunListenerImpl.java @@ -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 { 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 { @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); }