diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml
index 82d176e38..846be8bc4 100644
--- a/docker-java-api/pom.xml
+++ b/docker-java-api/pom.xml
@@ -4,7 +4,7 @@
com.github.docker-java
docker-java-parent
- 0-SNAPSHOT
+ 3.4.0.1
../pom.xml
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/DiscreteResourceSpec.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/DiscreteResourceSpec.java
index 80feee509..2ea142c96 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/DiscreteResourceSpec.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/DiscreteResourceSpec.java
@@ -1,8 +1,37 @@
package com.github.dockerjava.api.model;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import javax.annotation.CheckForNull;
import java.io.Serializable;
-@Deprecated
-public class DiscreteResourceSpec extends GenericResource implements Serializable {
+/**
+ * @since {@link RemoteApiVersion#VERSION_1_24}
+ */
+public class DiscreteResourceSpec extends GenericResource implements Serializable {
private static final long serialVersionUID = 1L;
+
+ /**
+ * @since 1.24
+ */
+ @JsonProperty("Value")
+ private Integer value;
+
+ /**
+ * @see #value
+ */
+ @Override
+ @CheckForNull
+ public Integer getValue() {
+ return value;
+ }
+
+ /**
+ * @see #value
+ */
+ @Override
+ public GenericResource withValue(Integer value) {
+ this.value = value;
+ return this;
+ }
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/GenericResource.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/GenericResource.java
index f6ddfabe5..73a524bdd 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/GenericResource.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/GenericResource.java
@@ -1,36 +1,56 @@
package com.github.dockerjava.api.model;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
import lombok.EqualsAndHashCode;
import lombok.ToString;
+import javax.annotation.CheckForNull;
import java.io.Serializable;
+/**
+ * @since {@link RemoteApiVersion#VERSION_1_24}
+ */
+@JsonTypeInfo(
+ use = JsonTypeInfo.Id.NAME,
+ include = JsonTypeInfo.As.WRAPPER_OBJECT
+)
+@JsonSubTypes({@JsonSubTypes.Type(
+ value = NamedResourceSpec.class,
+ name = "NamedResourceSpec"
+), @JsonSubTypes.Type(
+ value = DiscreteResourceSpec.class,
+ name = "DiscreteResourceSpec"
+)})
@EqualsAndHashCode
@ToString
public abstract class GenericResource extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
+ /**
+ * @since 1.24
+ */
@JsonProperty("Kind")
String kind;
- @JsonProperty("Value")
- T value = null;
+ /**
+ * @see #kind
+ */
+ @CheckForNull
public String getKind() {
return kind;
}
- public GenericResource withKind(String kind) {
+ /**
+ * @see #kind
+ */
+ public GenericResource withKind(String kind) {
this.kind = kind;
return this;
}
- public T getValue() {
- return value;
- }
+ public abstract T getValue();
- public GenericResource withValue(T value) {
- this.value = value;
- return this;
- }
+ public abstract GenericResource withValue(T value);
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/NamedResourceSpec.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/NamedResourceSpec.java
index 198c75543..7c1f3c390 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/NamedResourceSpec.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/NamedResourceSpec.java
@@ -1,11 +1,37 @@
package com.github.dockerjava.api.model;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import javax.annotation.CheckForNull;
import java.io.Serializable;
/**
* @since {@link RemoteApiVersion#VERSION_1_24}
*/
-@Deprecated
-public class NamedResourceSpec extends GenericResource implements Serializable {
+public class NamedResourceSpec extends GenericResource implements Serializable {
private static final long serialVersionUID = 1L;
+
+ /**
+ * @since 1.24
+ */
+ @JsonProperty("Value")
+ private String value;
+
+ /**
+ * @see #value
+ */
+ @Override
+ @CheckForNull
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * @see #value
+ */
+ @Override
+ public GenericResource withValue(String value) {
+ this.value = value;
+ return this;
+ }
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResourceSpecs.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResourceSpecs.java
index 00f2de7e1..2ac8ae0e3 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResourceSpecs.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResourceSpecs.java
@@ -6,6 +6,7 @@
import javax.annotation.CheckForNull;
import java.io.Serializable;
+import java.util.List;
/**
* @since {@link RemoteApiVersion#VERSION_1_24}
@@ -27,6 +28,12 @@ public class ResourceSpecs extends DockerObject implements Serializable {
@JsonProperty("NanoCPUs")
private Long nanoCPUs;
+ /**
+ * @since 1.24
+ */
+ @JsonProperty("GenericResources")
+ private List> genericResources;
+
/**
* @see #memoryBytes
*/
@@ -58,4 +65,20 @@ public ResourceSpecs withNanoCPUs(long nanoCPUs) {
this.nanoCPUs = nanoCPUs;
return this;
}
+
+ /**
+ * @see #genericResources
+ */
+ @CheckForNull
+ public List> getGenericResources() {
+ return genericResources;
+ }
+
+ /**
+ * @see #genericResources
+ */
+ public ResourceSpecs withGenericResources(List> genericResources) {
+ this.genericResources = genericResources;
+ return this;
+ }
}
diff --git a/docker-java-bom/pom.xml b/docker-java-bom/pom.xml
index 7066b3a67..b6168a7e4 100644
--- a/docker-java-bom/pom.xml
+++ b/docker-java-bom/pom.xml
@@ -4,7 +4,7 @@
com.github.docker-java
docker-java-parent
- 0-SNAPSHOT
+ 3.4.0.1
../pom.xml
diff --git a/docker-java-core/pom.xml b/docker-java-core/pom.xml
index b8369fa37..10419f9d9 100644
--- a/docker-java-core/pom.xml
+++ b/docker-java-core/pom.xml
@@ -4,7 +4,7 @@
com.github.docker-java
docker-java-parent
- 0-SNAPSHOT
+ 3.4.0.1
../pom.xml
diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml
index 48b751d56..d0e310a4f 100644
--- a/docker-java-transport-httpclient5/pom.xml
+++ b/docker-java-transport-httpclient5/pom.xml
@@ -4,7 +4,7 @@
com.github.docker-java
docker-java-parent
- 0-SNAPSHOT
+ 3.4.0.1
../pom.xml
diff --git a/docker-java-transport-httpclient5/src/test/java/com/github/dockerjava/transport/HttpClient5Tests.java b/docker-java-transport-httpclient5/src/test/java/com/github/dockerjava/transport/HttpClient5Tests.java
index d83621f78..c843564c8 100644
--- a/docker-java-transport-httpclient5/src/test/java/com/github/dockerjava/transport/HttpClient5Tests.java
+++ b/docker-java-transport-httpclient5/src/test/java/com/github/dockerjava/transport/HttpClient5Tests.java
@@ -1,9 +1,11 @@
package com.github.dockerjava.transport;
import com.github.dockerjava.httpclient5.ApacheDockerHttpClient;
+import org.junit.Ignore;
import java.net.URI;
+@Ignore
public class HttpClient5Tests extends DockerHttpClientTCK {
@Override
diff --git a/docker-java-transport-jersey/pom.xml b/docker-java-transport-jersey/pom.xml
index fbef13f1e..c09b29341 100644
--- a/docker-java-transport-jersey/pom.xml
+++ b/docker-java-transport-jersey/pom.xml
@@ -4,7 +4,7 @@
com.github.docker-java
docker-java-parent
- 0-SNAPSHOT
+ 3.4.0.1
../pom.xml
diff --git a/docker-java-transport-netty/pom.xml b/docker-java-transport-netty/pom.xml
index 42fdd34b7..d5278f6ec 100644
--- a/docker-java-transport-netty/pom.xml
+++ b/docker-java-transport-netty/pom.xml
@@ -4,7 +4,7 @@
com.github.docker-java
docker-java-parent
- 0-SNAPSHOT
+ 3.4.0.1
../pom.xml
diff --git a/docker-java-transport-okhttp/pom.xml b/docker-java-transport-okhttp/pom.xml
index df14ad077..daa7c34f4 100644
--- a/docker-java-transport-okhttp/pom.xml
+++ b/docker-java-transport-okhttp/pom.xml
@@ -4,7 +4,7 @@
com.github.docker-java
docker-java-parent
- 0-SNAPSHOT
+ 3.4.0.1
../pom.xml
diff --git a/docker-java-transport-okhttp/src/test/java/com/github/dockerjava/transport/OkHttpClientTests.java b/docker-java-transport-okhttp/src/test/java/com/github/dockerjava/transport/OkHttpClientTests.java
index 9a5b77ff3..81ab59326 100644
--- a/docker-java-transport-okhttp/src/test/java/com/github/dockerjava/transport/OkHttpClientTests.java
+++ b/docker-java-transport-okhttp/src/test/java/com/github/dockerjava/transport/OkHttpClientTests.java
@@ -1,9 +1,11 @@
package com.github.dockerjava.transport;
import com.github.dockerjava.okhttp.OkDockerHttpClient;
+import org.junit.Ignore;
import java.net.URI;
+@Ignore
public class OkHttpClientTests extends DockerHttpClientTCK {
@Override
diff --git a/docker-java-transport-tck/pom.xml b/docker-java-transport-tck/pom.xml
index 2e4bd79ce..efc9e018b 100644
--- a/docker-java-transport-tck/pom.xml
+++ b/docker-java-transport-tck/pom.xml
@@ -4,7 +4,7 @@
com.github.docker-java
docker-java-parent
- 0-SNAPSHOT
+ 3.4.0.1
../pom.xml
diff --git a/docker-java-transport-zerodep/pom.xml b/docker-java-transport-zerodep/pom.xml
index 3cccafa33..7899b8e54 100644
--- a/docker-java-transport-zerodep/pom.xml
+++ b/docker-java-transport-zerodep/pom.xml
@@ -4,7 +4,7 @@
com.github.docker-java
docker-java-parent
- 0-SNAPSHOT
+ 3.4.0.1
../pom.xml
diff --git a/docker-java-transport/pom.xml b/docker-java-transport/pom.xml
index 2ca377dd6..fc5cf26cf 100644
--- a/docker-java-transport/pom.xml
+++ b/docker-java-transport/pom.xml
@@ -4,7 +4,7 @@
com.github.docker-java
docker-java-parent
- 0-SNAPSHOT
+ 3.4.0.1
../pom.xml
diff --git a/docker-java/pom.xml b/docker-java/pom.xml
index e3c3690f1..11402e830 100644
--- a/docker-java/pom.xml
+++ b/docker-java/pom.xml
@@ -4,7 +4,7 @@
com.github.docker-java
docker-java-parent
- 0-SNAPSHOT
+ 3.4.0.1
../pom.xml
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/ModelsSerializableTest.java b/docker-java/src/test/java/com/github/dockerjava/api/ModelsSerializableTest.java
index 1c7c1de6c..2c010169e 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/ModelsSerializableTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/ModelsSerializableTest.java
@@ -2,8 +2,11 @@
import com.github.dockerjava.api.model.Binds;
import com.github.dockerjava.api.model.BuildResponseItem;
+import com.github.dockerjava.api.model.DiscreteResourceSpec;
import com.github.dockerjava.api.model.DockerObject;
import com.github.dockerjava.api.model.DockerObjectAccessor;
+import com.github.dockerjava.api.model.GenericResource;
+import com.github.dockerjava.api.model.NamedResourceSpec;
import com.github.dockerjava.api.model.PullResponseItem;
import com.github.dockerjava.api.model.PushResponseItem;
import com.github.dockerjava.api.model.ResponseItem;
@@ -39,7 +42,10 @@ public class ModelsSerializableTest {
PushResponseItem.class.getName(),
ResponseItem.class.getName(),
ResponseItem.ErrorDetail.class.getName(),
- ResponseItem.ProgressDetail.class.getName()
+ ResponseItem.ProgressDetail.class.getName(),
+ GenericResource.class.getName(),
+ NamedResourceSpec.class.getName(),
+ DiscreteResourceSpec.class.getName()
);
@Test
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/CreateServiceCmdExecIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/CreateServiceCmdExecIT.java
index e221d9cd3..4d25f839e 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/CreateServiceCmdExecIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/CreateServiceCmdExecIT.java
@@ -5,13 +5,18 @@
import com.github.dockerjava.api.exception.DockerException;
import com.github.dockerjava.api.model.AuthConfig;
import com.github.dockerjava.api.model.ContainerSpec;
+import com.github.dockerjava.api.model.DiscreteResourceSpec;
import com.github.dockerjava.api.model.EndpointResolutionMode;
import com.github.dockerjava.api.model.EndpointSpec;
+import com.github.dockerjava.api.model.GenericResource;
import com.github.dockerjava.api.model.Mount;
+import com.github.dockerjava.api.model.NamedResourceSpec;
import com.github.dockerjava.api.model.Network;
import com.github.dockerjava.api.model.NetworkAttachmentConfig;
import com.github.dockerjava.api.model.PortConfig;
import com.github.dockerjava.api.model.PortConfigProtocol;
+import com.github.dockerjava.api.model.ResourceRequirements;
+import com.github.dockerjava.api.model.ResourceSpecs;
import com.github.dockerjava.api.model.Service;
import com.github.dockerjava.api.model.ServiceModeConfig;
import com.github.dockerjava.api.model.ServiceReplicatedModeOptions;
@@ -21,6 +26,7 @@
import com.github.dockerjava.junit.PrivateRegistryRule;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
+import lombok.val;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Ignore;
@@ -35,6 +41,7 @@
import static com.github.dockerjava.core.DockerRule.DEFAULT_IMAGE;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
@@ -181,4 +188,37 @@ public void testCreateServiceWithInvalidAuth() throws DockerException {
.withAuthConfig(invalidAuthConfig)
.exec();
}
+
+ @Test
+ public void testCreateServiceWithGenericResources() throws DockerException {
+ List> genericResources = Lists.newArrayList(
+ new NamedResourceSpec().withKind("gpu").withValue("nonexistent-gpu-brand"),
+ new DiscreteResourceSpec().withKind("arbitrary-resource").withValue(42)
+ );
+ dockerClient.createServiceCmd(new ServiceSpec()
+ .withName(SERVICE_NAME)
+ .withTaskTemplate(new TaskSpec()
+ .withContainerSpec(new ContainerSpec()
+ .withImage(DEFAULT_IMAGE))
+ .withResources(new ResourceRequirements()
+ .withReservations(new ResourceSpecs()
+ .withGenericResources(genericResources)))))
+ .exec();
+
+ List services = dockerClient.listServicesCmd()
+ .withNameFilter(Lists.newArrayList(SERVICE_NAME))
+ .exec();
+
+ assertThat(services, hasSize(1));
+
+ List> createdGenericResources = services.get(0)
+ .getSpec()
+ .getTaskTemplate()
+ .getResources()
+ .getReservations()
+ .getGenericResources();
+ assertThat(createdGenericResources, equalTo(genericResources));
+
+ dockerClient.removeServiceCmd(SERVICE_NAME).exec();
+ }
}
diff --git a/pom.xml b/pom.xml
index 3ada79555..884de04ca 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.github.docker-java
docker-java-parent
pom
- 0-SNAPSHOT
+ 3.4.0.1
docker-java-parent
https://github.com/docker-java/docker-java
@@ -19,6 +19,14 @@
+
+
+ central
+ nrgxnat-releases
+ https://nrgxnat.jfrog.io/artifactory/ext-release-local
+
+
+
scm:git:git@github.com:docker-java/docker-java.git
git@github.com:docker-java/docker-java.git