Skip to content

Commit 3030ff5

Browse files
Add support for Cloud Statistics plugin (#797)
1 parent 8026c82 commit 3030ff5

File tree

4 files changed

+42
-3
lines changed

4 files changed

+42
-3
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,11 @@
103103
<groupId>org.jenkins-ci.plugins</groupId>
104104
<artifactId>bouncycastle-api</artifactId>
105105
</dependency>
106+
<dependency>
107+
<groupId>org.jenkins-ci.plugins</groupId>
108+
<artifactId>cloud-stats</artifactId>
109+
<version>267.v577e3742c282</version>
110+
</dependency>
106111
<dependency>
107112
<groupId>org.jenkins-ci.plugins</groupId>
108113
<artifactId>docker-commons</artifactId>

src/main/java/com/nirima/jenkins/plugins/docker/DockerCloud.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747
import java.util.concurrent.TimeUnit;
4848
import jenkins.authentication.tokens.api.AuthenticationTokens;
4949
import jenkins.model.Jenkins;
50+
import org.jenkinsci.plugins.cloudstats.ProvisioningActivity;
51+
import org.jenkinsci.plugins.cloudstats.TrackedPlannedNode;
5052
import org.jenkinsci.plugins.docker.commons.credentials.DockerRegistryEndpoint;
5153
import org.jenkinsci.plugins.docker.commons.credentials.DockerRegistryToken;
5254
import org.jenkinsci.plugins.docker.commons.credentials.DockerServerEndpoint;
@@ -387,8 +389,10 @@ public synchronized Collection<NodeProvisioner.PlannedNode> provision(
387389
LOGGER.info(
388390
"Will provision '{}', for label: '{}', in cloud: '{}'", t.getImage(), label, getDisplayName());
389391

392+
final ProvisioningActivity.Id id = new ProvisioningActivity.Id(
393+
DockerCloud.this.name, t.getName() + " (" + t.getImage() + ")", null);
390394
final CompletableFuture<Node> plannedNode = new CompletableFuture<>();
391-
r.add(new NodeProvisioner.PlannedNode(t.getDisplayName(), plannedNode, t.getNumExecutors()));
395+
r.add(new TrackedPlannedNode(id, t.getNumExecutors(), plannedNode));
392396

393397
final Runnable taskToCreateNewAgent = new Runnable() {
394398
@Override
@@ -400,6 +404,7 @@ public void run() {
400404
agent = t.provisionNode(api, TaskListener.NULL);
401405
agent.setDockerAPI(api);
402406
agent.setCloudId(DockerCloud.this.name);
407+
agent.setProvisioningId(id);
403408
plannedNode.complete(agent);
404409

405410
// On provisioning completion, let's trigger NodeProvisioner

src/main/java/io/jenkins/docker/DockerComputer.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,21 @@
22

33
import com.nirima.jenkins.plugins.docker.DockerCloud;
44
import edu.umd.cs.findbugs.annotations.CheckForNull;
5+
import edu.umd.cs.findbugs.annotations.Nullable;
56
import hudson.EnvVars;
67
import hudson.slaves.AbstractCloudComputer;
78
import io.jenkins.docker.client.DockerAPI;
89
import java.io.IOException;
10+
import org.jenkinsci.plugins.cloudstats.ProvisioningActivity;
11+
import org.jenkinsci.plugins.cloudstats.TrackedItem;
912
import org.jenkinsci.plugins.docker.commons.credentials.DockerServerEndpoint;
1013

1114
/**
1215
* Represents remote (running) container
1316
*
1417
* @author magnayn
1518
*/
16-
public class DockerComputer extends AbstractCloudComputer<DockerTransientNode> {
19+
public class DockerComputer extends AbstractCloudComputer<DockerTransientNode> implements TrackedItem {
1720
// private static final Logger LOGGER = Logger.getLogger(DockerComputer.class.getName());
1821

1922
public DockerComputer(DockerTransientNode node) {
@@ -62,4 +65,11 @@ public EnvVars getEnvironment() throws IOException, InterruptedException {
6265
public String toString() {
6366
return "DockerComputer{" + "name='" + super.getName() + '\'' + ", node='" + nodeName + '\'' + '}';
6467
}
68+
69+
@Nullable
70+
@Override
71+
public ProvisioningActivity.Id getId() {
72+
final DockerTransientNode nodeOrNull = getNode();
73+
return nodeOrNull == null ? null : nodeOrNull.getId();
74+
}
6575
}

src/main/java/io/jenkins/docker/DockerTransientNode.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.nirima.jenkins.plugins.docker.DockerTemplate;
1010
import com.nirima.jenkins.plugins.docker.strategy.DockerOnceRetentionStrategy;
1111
import edu.umd.cs.findbugs.annotations.NonNull;
12+
import edu.umd.cs.findbugs.annotations.Nullable;
1213
import hudson.Extension;
1314
import hudson.model.Computer;
1415
import hudson.model.Descriptor;
@@ -20,6 +21,8 @@
2021
import java.io.IOException;
2122
import java.util.concurrent.atomic.AtomicBoolean;
2223
import jenkins.model.Jenkins;
24+
import org.jenkinsci.plugins.cloudstats.ProvisioningActivity;
25+
import org.jenkinsci.plugins.cloudstats.TrackedItem;
2326
import org.kohsuke.accmod.Restricted;
2427
import org.kohsuke.accmod.restrictions.NoExternalUse;
2528
import org.slf4j.Logger;
@@ -30,7 +33,7 @@
3033
*
3134
* @author <a href="mailto:[email protected]">Nicolas De Loof</a>
3235
*/
33-
public class DockerTransientNode extends AbstractCloudSlave {
36+
public class DockerTransientNode extends AbstractCloudSlave implements TrackedItem {
3437
private static final long serialVersionUID = 1349729340506926183L;
3538
private static final Logger LOGGER = LoggerFactory.getLogger(DockerTransientNode.class.getName());
3639

@@ -44,6 +47,8 @@ public class DockerTransientNode extends AbstractCloudSlave {
4447

4548
private String cloudId;
4649

50+
private ProvisioningActivity.Id provisioningId;
51+
4752
private AtomicBoolean acceptingTasks = new AtomicBoolean(true);
4853

4954
/**
@@ -152,11 +157,25 @@ public void setCloudId(String cloudId) {
152157
this.cloudId = cloudId;
153158
}
154159

160+
public ProvisioningActivity.Id getProvisioningId() {
161+
return provisioningId;
162+
}
163+
164+
public void setProvisioningId(ProvisioningActivity.Id provisioningId) {
165+
this.provisioningId = provisioningId.named(getNodeName());
166+
}
167+
155168
@Override
156169
public DockerComputer createComputer() {
157170
return new DockerComputer(this);
158171
}
159172

173+
@Nullable
174+
@Override
175+
public ProvisioningActivity.Id getId() {
176+
return provisioningId;
177+
}
178+
160179
private interface ILogger {
161180
void println(String msg);
162181

0 commit comments

Comments
 (0)