summaryrefslogtreecommitdiffstats
path: root/docker-api
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2017-11-03 16:53:07 +0100
committerValerij Fredriksen <valerijf@oath.com>2017-11-03 16:53:07 +0100
commit757e0504cdf29256aeb8c7f1f5b245ab29f6af0d (patch)
treecf8d22e3d93457021bd26914b30b38db13bb58f9 /docker-api
parentbf3d8f80a0612092c8ece9717d5c73697be5b9d0 (diff)
Add ContainerResources to Container
Diffstat (limited to 'docker-api')
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java7
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerResources.java45
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java2
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()