diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2017-11-03 16:53:07 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerijf@oath.com> | 2017-11-03 16:53:07 +0100 |
commit | 757e0504cdf29256aeb8c7f1f5b245ab29f6af0d (patch) | |
tree | cf8d22e3d93457021bd26914b30b38db13bb58f9 /docker-api/src/main | |
parent | bf3d8f80a0612092c8ece9717d5c73697be5b9d0 (diff) |
Add ContainerResources to Container
Diffstat (limited to 'docker-api/src/main')
3 files changed, 53 insertions, 1 deletions
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java index 7f47b638dde..0a63b3265f6 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java @@ -9,6 +9,7 @@ import java.util.Objects; public class Container { public final String hostname; public final DockerImage image; + public final ContainerResources flavor; public final ContainerName name; public final State state; public final int pid; @@ -16,11 +17,13 @@ public class Container { public Container( final String hostname, final DockerImage image, + final ContainerResources flavor, final ContainerName containerName, final State state, final int pid) { this.hostname = hostname; this.image = image; + this.flavor = flavor; this.name = containerName; this.state = state; this.pid = pid; @@ -34,13 +37,14 @@ public class Container { final Container other = (Container) obj; return Objects.equals(hostname, other.hostname) && Objects.equals(image, other.image) + && Objects.equals(flavor, other.flavor) && Objects.equals(name, other.name) && Objects.equals(pid, other.pid); } @Override public int hashCode() { - return Objects.hash(hostname, image, name, pid); + return Objects.hash(hostname, image, flavor, name, pid); } @Override @@ -48,6 +52,7 @@ public class Container { return "Container {" + " hostname=" + hostname + " image=" + image + + " flavor=" + flavor + " name=" + name + " state=" + state + " pid=" + pid diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerResources.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerResources.java new file mode 100644 index 00000000000..aad0b07a2c4 --- /dev/null +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerResources.java @@ -0,0 +1,45 @@ +package com.yahoo.vespa.hosted.dockerapi; + +/** + * @author valerijf + */ +public class ContainerResources { + public static final ContainerResources UNLIMITED = ContainerResources.from(0, 0); + + public final int cpuShares; + public final long memoryBytes; + + ContainerResources(int cpuShares, long memoryBytes) { + this.cpuShares = cpuShares; + this.memoryBytes = memoryBytes; + } + + public static ContainerResources from(double cpuCores, double memoryGb) { + return new ContainerResources( + (int) Math.round(10 * cpuCores), + (long) ((1L << 30) * memoryGb)); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + ContainerResources that = (ContainerResources) o; + + if (cpuShares != that.cpuShares) return false; + return memoryBytes == that.memoryBytes; + } + + @Override + public int hashCode() { + int result = cpuShares; + result = 31 * result + (int) (memoryBytes ^ (memoryBytes >>> 32)); + return result; + } + + @Override + public String toString() { + return cpuShares + " CPU Shares, " + memoryBytes + "B memory"; + } +} diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java index a6f8783a22c..9f278139a0d 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java @@ -369,6 +369,8 @@ public class DockerImpl implements Docker { new Container( response.getConfig().getHostName(), new DockerImage(response.getConfig().getImage()), + new ContainerResources(response.getHostConfig().getCpuShares(), + response.getHostConfig().getMemory()), new ContainerName(decode(response.getName())), Container.State.valueOf(response.getState().getStatus().toUpperCase()), response.getState().getPid() |