Skip to content

Commit 399159c

Browse files
committed
chore: refactor
1 parent ed1ea87 commit 399159c

File tree

3 files changed

+52
-42
lines changed

3 files changed

+52
-42
lines changed

src/main/java/io/jenkins/plugins/opentelemetry/OtelUtils.java

Lines changed: 45 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,42 @@
55

66
package io.jenkins.plugins.opentelemetry;
77

8+
import java.nio.charset.StandardCharsets;
9+
import java.util.Arrays;
10+
import java.util.Collections;
11+
import java.util.Enumeration;
12+
import java.util.HashMap;
13+
import java.util.Iterator;
14+
import java.util.LinkedHashMap;
15+
import java.util.List;
16+
import java.util.Locale;
17+
import java.util.Map;
18+
import java.util.Objects;
19+
import java.util.Optional;
20+
import java.util.TreeMap;
21+
import java.util.function.Function;
22+
import java.util.logging.Level;
23+
import java.util.logging.Logger;
24+
import java.util.stream.Collectors;
25+
26+
import javax.servlet.http.HttpServletRequest;
27+
28+
import org.apache.commons.codec.net.URLCodec;
29+
import org.apache.commons.lang.StringUtils;
30+
import org.jenkinsci.plugins.workflow.graph.FlowNode;
31+
import org.jenkinsci.plugins.workflow.job.WorkflowRun;
32+
import org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject;
33+
834
import com.google.common.collect.Iterators;
35+
936
import edu.umd.cs.findbugs.annotations.CheckForNull;
1037
import edu.umd.cs.findbugs.annotations.NonNull;
1138
import edu.umd.cs.findbugs.annotations.Nullable;
1239
import hudson.Plugin;
1340
import hudson.model.FreeStyleBuild;
1441
import hudson.model.Run;
1542
import hudson.util.VersionNumber;
43+
import io.jenkins.plugins.opentelemetry.job.MonitoringAction;
1644
import io.jenkins.plugins.opentelemetry.semconv.JenkinsOtelSemanticAttributes;
1745
import io.opentelemetry.api.common.AttributeKey;
1846
import io.opentelemetry.api.trace.Span;
@@ -30,28 +58,6 @@
3058
import jenkins.scm.api.SCMHead;
3159
import jenkins.scm.api.mixin.ChangeRequestSCMHead;
3260
import jenkins.scm.api.mixin.TagSCMHead;
33-
import org.apache.commons.codec.net.URLCodec;
34-
import org.apache.commons.lang.StringUtils;
35-
import org.jenkinsci.plugins.workflow.graph.FlowNode;
36-
import org.jenkinsci.plugins.workflow.job.WorkflowRun;
37-
import org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject;
38-
39-
import javax.servlet.http.HttpServletRequest;
40-
import java.nio.charset.StandardCharsets;
41-
import java.util.Arrays;
42-
import java.util.Collections;
43-
import java.util.Enumeration;
44-
import java.util.HashMap;
45-
import java.util.Iterator;
46-
import java.util.LinkedHashMap;
47-
import java.util.List;
48-
import java.util.Locale;
49-
import java.util.Map;
50-
import java.util.Objects;
51-
import java.util.Optional;
52-
import java.util.TreeMap;
53-
import java.util.function.Function;
54-
import java.util.stream.Collectors;
5561

5662
public class OtelUtils {
5763

@@ -66,6 +72,8 @@ public class OtelUtils {
6672
public static final String TAG = "tag";
6773
public static final String JENKINS_CORE = "jenkins-core";
6874
public static final String UNKNOWN_VALUE = "#unknown";
75+
private static final Logger logger = Logger.getLogger(OtelUtils.class.getName());
76+
6977

7078
@CheckForNull
7179
public static String getSystemPropertyOrEnvironmentVariable(String environmentVariableName) {
@@ -321,4 +329,19 @@ public String get(@javax.annotation.Nullable HttpServletRequest request, @NonNul
321329
.orElse(null);
322330
}
323331
}
332+
333+
/**
334+
* Check if the run has Opentelemetry data
335+
* To validate it search for the MonitoringAction in the build actions.
336+
* @param run the Build
337+
* @return true if the run has Opentelemetry data
338+
*/
339+
public static boolean hasOpentelemetryData(Run<?, ?> run){
340+
MonitoringAction monitoringAction = run.getAction(MonitoringAction.class);
341+
boolean ret = monitoringAction != null;
342+
if (!ret) {
343+
logger.log(Level.FINE, () -> "No MonitoringAction found in " + run);
344+
}
345+
return ret;
346+
}
324347
}

src/main/java/io/jenkins/plugins/opentelemetry/job/OtelEnvironmentContributorService.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import hudson.Extension;
55
import hudson.model.Run;
66
import io.jenkins.plugins.opentelemetry.JenkinsOpenTelemetryPluginConfiguration;
7+
import io.jenkins.plugins.opentelemetry.OtelUtils;
78
import io.jenkins.plugins.opentelemetry.semconv.JenkinsOtelSemanticAttributes;
89
import io.jenkins.plugins.opentelemetry.semconv.OTelEnvironmentVariablesConventions;
910
import io.opentelemetry.api.baggage.Baggage;
@@ -50,10 +51,8 @@ public void addEnvironmentVariables(@NonNull Run run, @NonNull EnvVars envs, @No
5051
TextMapSetter<EnvVars> setter = (carrier, key, value) -> carrier.put(key.toUpperCase(), value);
5152
W3CBaggagePropagator.getInstance().inject(Context.current(), envs, setter);
5253
}
53-
MonitoringAction monitoringAction = run.getAction(MonitoringAction.class);
54-
if (monitoringAction == null) {
55-
LOGGER.log(Level.FINE, () -> "MonitoringAction NOT found on run " + run);
56-
} else {
54+
if (OtelUtils.hasOpentelemetryData(run)) {
55+
MonitoringAction monitoringAction = run.getAction(MonitoringAction.class);
5756
// Add visualization link as environment variables to provide visualization links in notifications (to GitHub, slack messages...)
5857
for (MonitoringAction.ObservabilityBackendLink link : monitoringAction.getLinks()) {
5958
// Default backend link got an empty environment variable.

src/main/java/io/jenkins/plugins/opentelemetry/job/log/OtelLogStorageFactory.java

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import hudson.model.Run;
1414
import io.jenkins.plugins.opentelemetry.JenkinsControllerOpenTelemetry;
1515
import io.jenkins.plugins.opentelemetry.OpenTelemetryLifecycleListener;
16+
import io.jenkins.plugins.opentelemetry.OtelUtils;
1617
import io.jenkins.plugins.opentelemetry.job.MonitoringAction;
1718
import io.jenkins.plugins.opentelemetry.job.OtelTraceService;
1819
import io.opentelemetry.api.incubator.events.EventLogger;
@@ -87,27 +88,14 @@ private LogStorage forExec(@NonNull Queue.Executable exec){
8788
LogStorage ret = null;
8889
if (exec instanceof Run) {
8990
Run<?, ?> run = (Run<?, ?>) exec;
90-
if(hasOpentelemetryData(run)){
91-
logger.log(Level.FINEST, () -> "forBuild(" + run + ")");
91+
if(OtelUtils.hasOpentelemetryData(run)){
92+
logger.log(Level.FINEST, () -> "forExec(" + run + ")");
9293
ret = new OtelLogStorage(run, getOtelTraceService(), tracer);
93-
} else {
94-
logger.log(Level.FINE, () -> "No Opentelemetry data for " + run);
9594
}
9695
}
9796
return ret;
9897
}
99-
100-
/**
101-
* Check if the run has Opentelemetry data
102-
* To validate it search for the MonitoringAction in the build actions.
103-
* @param run the Build
104-
* @return true if the run has Opentelemetry data
105-
*/
106-
private boolean hasOpentelemetryData(Run<?, ?> run){
107-
MonitoringAction monitoringAction = run.getAction(MonitoringAction.class);
108-
return monitoringAction != null;
109-
}
110-
98+
11199
/**
112100
* Workaround dependency injection problem. @Inject doesn't work here
113101
*/

0 commit comments

Comments
 (0)