diff options
author | Valerij Fredriksen <valerijf@yahooinc.com> | 2021-11-11 14:17:50 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerijf@yahooinc.com> | 2021-11-11 14:17:50 +0100 |
commit | a62dedb67dfd2edc8c5b6b3a70f605a4918d4313 (patch) | |
tree | 67b7641cb1beacfd4202e2373a636af07c1f7de0 /node-admin | |
parent | 57f72964d7e2ebb1a2b8168f3e07dae6ee6e8198 (diff) |
Add createdAt to Container
Diffstat (limited to 'node-admin')
6 files changed, 22 insertions, 8 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/Container.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/Container.java index f2f8ffb8d22..dd725a11364 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/Container.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/Container.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.container; import com.yahoo.config.provision.DockerImage; +import java.time.Instant; import java.util.List; import java.util.Map; import java.util.Objects; @@ -19,10 +20,10 @@ public class Container extends PartialContainer { private final int conmonPid; private final List<Network> networks; - public Container(ContainerId id, ContainerName name, State state, String imageId, DockerImage image, + public Container(ContainerId id, ContainerName name, Instant createdAt, State state, String imageId, DockerImage image, Map<String, String> labels, int pid, int conmonPid, String hostname, ContainerResources resources, List<Network> networks, boolean managed) { - super(id, name, state, imageId, image, labels, pid, managed); + super(id, name, createdAt, state, imageId, image, labels, pid, managed); this.hostname = Objects.requireNonNull(hostname); this.resources = Objects.requireNonNull(resources); this.conmonPid = conmonPid; diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/PartialContainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/PartialContainer.java index d320ffd294c..22146767e01 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/PartialContainer.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/PartialContainer.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.container; import com.yahoo.config.provision.DockerImage; +import java.time.Instant; import java.util.Map; import java.util.Objects; @@ -15,6 +16,7 @@ public class PartialContainer { private final ContainerId id; private final ContainerName name; + private final Instant createdAt; private final State state; private final String imageId; private final DockerImage image; @@ -22,10 +24,11 @@ public class PartialContainer { private final int pid; private final boolean managed; - public PartialContainer(ContainerId id, ContainerName name, State state, String imageId, + public PartialContainer(ContainerId id, ContainerName name, Instant createdAt, State state, String imageId, DockerImage image, Map<String, String> labels, int pid, boolean managed) { this.id = Objects.requireNonNull(id); this.name = Objects.requireNonNull(name); + this.createdAt = Objects.requireNonNull(createdAt); this.state = Objects.requireNonNull(state); this.imageId = Objects.requireNonNull(imageId); this.image = Objects.requireNonNull(image); @@ -44,6 +47,11 @@ public class PartialContainer { return name; } + /** Timestamp when this container was created */ + public Instant createdAt() { + return createdAt; + } + /** Current state of this */ public State state() { return state; @@ -86,12 +94,12 @@ public class PartialContainer { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; PartialContainer that = (PartialContainer) o; - return pid == that.pid && managed == that.managed && id.equals(that.id) && name.equals(that.name) && state == that.state && imageId.equals(that.imageId) && image.equals(that.image) && labels.equals(that.labels); + return pid == that.pid && managed == that.managed && id.equals(that.id) && name.equals(that.name) && createdAt.equals(that.createdAt) && state == that.state && imageId.equals(that.imageId) && image.equals(that.image) && labels.equals(that.labels); } @Override public int hashCode() { - return Objects.hash(id, name, state, imageId, image, labels, pid, managed); + return Objects.hash(id, name, createdAt, state, imageId, image, labels, pid, managed); } /** The state of a container */ diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngineMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngineMock.java index 21118ff8914..3eab24a7a66 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngineMock.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngineMock.java @@ -9,6 +9,7 @@ import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext; import com.yahoo.vespa.hosted.node.admin.task.util.process.CommandResult; import java.time.Duration; +import java.time.Instant; import java.util.List; import java.util.Map; import java.util.Objects; @@ -84,7 +85,7 @@ public class ContainerEngineMock implements ContainerEngine { @Override public void updateContainer(NodeAgentContext context, ContainerId containerId, ContainerResources containerResources) { Container container = requireContainer(context.containerName()); - containers.put(container.name(), new Container(containerId, container.name(), container.state(), + containers.put(container.name(), new Container(containerId, container.name(), container.createdAt(), container.state(), container.imageId(), container.image(), container.labels(), container.pid(), container.conmonPid(), container.hostname(), @@ -160,6 +161,7 @@ public class ContainerEngineMock implements ContainerEngine { public Container createContainer(NodeAgentContext context, PartialContainer.State state, ContainerResources containerResources) { return new Container(new ContainerId("id-of-" + context.containerName()), context.containerName(), + Instant.EPOCH, state, "image-id", context.node().wantedDockerImage().get(), diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperationsTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperationsTest.java index e6c63220d35..d0c54dd4e04 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperationsTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperationsTest.java @@ -7,6 +7,7 @@ import com.yahoo.vespa.test.file.TestFileSystem; import org.junit.Test; import java.nio.file.FileSystem; +import java.time.Instant; import java.util.List; import java.util.Map; import java.util.Set; @@ -58,7 +59,7 @@ public class ContainerOperationsTest { } private Container createContainer(String name, boolean managed) { - return new Container(new ContainerId("id-of-" + name), new ContainerName(name), PartialContainer.State.running, + return new Container(new ContainerId("id-of-" + name), new ContainerName(name), Instant.EPOCH, PartialContainer.State.running, "image-id", DockerImage.EMPTY, Map.of(), 42, 43, name, ContainerResources.UNLIMITED, List.of(), managed); } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePrunerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePrunerTest.java index 2b62f637474..a7307b5d1de 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePrunerTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePrunerTest.java @@ -13,6 +13,7 @@ import com.yahoo.vespa.hosted.node.admin.container.ContainerResources; import org.junit.Test; import java.time.Duration; +import java.time.Instant; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -119,7 +120,7 @@ public class ContainerImagePrunerTest { } private static Container container(String name, String imageId) { - return new Container(new ContainerId("id-of-" + name), new ContainerName(name), + return new Container(new ContainerId("id-of-" + name), new ContainerName(name), Instant.EPOCH, Container.State.running, imageId, DockerImage.EMPTY, Map.of(), 42, 43, name + ".example.com", ContainerResources.UNLIMITED, List.of(), true); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java index 1c6831e6379..29411b8069f 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java @@ -765,6 +765,7 @@ public class NodeAgentImplTest { Optional.of(new Container( containerId, ContainerName.fromHostname(hostName), + Instant.EPOCH, isRunning ? Container.State.running : Container.State.exited, "image-id-1", dockerImage, |