diff --git a/0001-Port-to-latest-version-of-Google-AutoValue.patch b/0001-Port-to-latest-version-of-Google-AutoValue.patch new file mode 100644 index 0000000..800199c --- /dev/null +++ b/0001-Port-to-latest-version-of-Google-AutoValue.patch @@ -0,0 +1,372 @@ +From 4652879eb4c1a56f6e2fafdd8f9530b347d447b2 Mon Sep 17 00:00:00 2001 +From: Mat Booth +Date: Thu, 7 Mar 2019 14:53:34 +0000 +Subject: [PATCH] Port to latest version of Google AutoValue + +--- + pom.xml | 2 +- + .../client/messages/ContainerConfig.java | 14 ------------- + .../docker/client/messages/mount/Driver.java | 7 ------- + .../client/messages/mount/VolumeOptions.java | 7 ------- + .../client/messages/swarm/ContainerSpec.java | 16 --------------- + .../docker/client/messages/swarm/Driver.java | 7 ------- + .../client/messages/swarm/NodeInfo.java | 2 +- + .../client/messages/swarm/NodeSpec.java | 14 ++++++------- + .../docker/client/messages/swarm/Service.java | 7 ------- + .../client/messages/swarm/ServiceSpec.java | 16 --------------- + .../client/DefaultDockerClientTest.java | 20 +++++++++++-------- + .../client/DefaultDockerClientUnitTest.java | 18 +++++++++++++---- + 12 files changed, 34 insertions(+), 96 deletions(-) + +diff --git a/pom.xml b/pom.xml +index 4ac3e11b..3b15d2f4 100644 +--- a/pom.xml ++++ b/pom.xml +@@ -154,7 +154,7 @@ + + com.google.auto.value + auto-value +- 1.3 ++ 1.4.1 + provided + + +diff --git a/src/main/java/com/spotify/docker/client/messages/ContainerConfig.java b/src/main/java/com/spotify/docker/client/messages/ContainerConfig.java +index 8d0c6998..6143ed2b 100644 +--- a/src/main/java/com/spotify/docker/client/messages/ContainerConfig.java ++++ b/src/main/java/com/spotify/docker/client/messages/ContainerConfig.java +@@ -261,20 +261,6 @@ public abstract class ContainerConfig { + + public abstract Builder image(final String image); + +- abstract ImmutableSet.Builder volumesBuilder(); +- +- public Builder addVolume(final String volume) { +- volumesBuilder().add(volume); +- return this; +- } +- +- public Builder addVolumes(final String... volumes) { +- for (final String volume : volumes) { +- volumesBuilder().add(volume); +- } +- return this; +- } +- + /** + * @deprecated As of 8.10.0, use {@link #volumes(Set)} or + * {@link #volumes(String...)}. +diff --git a/src/main/java/com/spotify/docker/client/messages/mount/Driver.java b/src/main/java/com/spotify/docker/client/messages/mount/Driver.java +index 2fc6a0c6..dc7dda82 100644 +--- a/src/main/java/com/spotify/docker/client/messages/mount/Driver.java ++++ b/src/main/java/com/spotify/docker/client/messages/mount/Driver.java +@@ -52,13 +52,6 @@ public abstract class Driver { + + public abstract Builder options(Map options); + +- abstract ImmutableMap.Builder optionsBuilder(); +- +- public Builder addOption(final String name, final String value) { +- optionsBuilder().put(name, value); +- return this; +- } +- + public abstract Driver build(); + } + +diff --git a/src/main/java/com/spotify/docker/client/messages/mount/VolumeOptions.java b/src/main/java/com/spotify/docker/client/messages/mount/VolumeOptions.java +index b9471f25..bf609b89 100644 +--- a/src/main/java/com/spotify/docker/client/messages/mount/VolumeOptions.java ++++ b/src/main/java/com/spotify/docker/client/messages/mount/VolumeOptions.java +@@ -56,13 +56,6 @@ public abstract class VolumeOptions { + + public abstract Builder labels(Map labels); + +- abstract ImmutableMap.Builder labelsBuilder(); +- +- public Builder addLabel(final String label, final String value) { +- labelsBuilder().put(label, value); +- return this; +- } +- + public abstract Builder driverConfig(Driver driverConfig); + + public abstract VolumeOptions build(); +diff --git a/src/main/java/com/spotify/docker/client/messages/swarm/ContainerSpec.java b/src/main/java/com/spotify/docker/client/messages/swarm/ContainerSpec.java +index 29db35f8..ac5068f7 100644 +--- a/src/main/java/com/spotify/docker/client/messages/swarm/ContainerSpec.java ++++ b/src/main/java/com/spotify/docker/client/messages/swarm/ContainerSpec.java +@@ -137,22 +137,6 @@ public abstract class ContainerSpec { + return this; + } + +- abstract ImmutableMap.Builder labelsBuilder(); +- +- public Builder addLabel(final String label, final String value) { +- labelsBuilder().put(label, value); +- return this; +- } +- +- /** +- * @deprecated As of release 7.0.0, replaced by {@link #addLabel(String, String)} ()}. +- */ +- @Deprecated +- public Builder withLabel(final String label, final String value) { +- addLabel(label, value); +- return this; +- } +- + public abstract Builder hostname(String hostname); + + public abstract Builder labels(Map labels); +diff --git a/src/main/java/com/spotify/docker/client/messages/swarm/Driver.java b/src/main/java/com/spotify/docker/client/messages/swarm/Driver.java +index 45fbd46f..94517a7d 100644 +--- a/src/main/java/com/spotify/docker/client/messages/swarm/Driver.java ++++ b/src/main/java/com/spotify/docker/client/messages/swarm/Driver.java +@@ -49,13 +49,6 @@ public abstract class Driver { + + public abstract Builder name(String name); + +- abstract ImmutableMap.Builder optionsBuilder(); +- +- public Builder addOption(final String name, final String value) { +- optionsBuilder().put(name, value); +- return this; +- } +- + public abstract Builder options(Map options); + + public abstract Driver build(); +diff --git a/src/main/java/com/spotify/docker/client/messages/swarm/NodeInfo.java b/src/main/java/com/spotify/docker/client/messages/swarm/NodeInfo.java +index 7e855ba2..1efca3fc 100644 +--- a/src/main/java/com/spotify/docker/client/messages/swarm/NodeInfo.java ++++ b/src/main/java/com/spotify/docker/client/messages/swarm/NodeInfo.java +@@ -61,7 +61,7 @@ public abstract class NodeInfo { + public abstract ManagerStatus managerStatus(); + + @JsonCreator +- public static AutoValue_NodeInfo create(@JsonProperty("ID") final String id, ++ public static NodeInfo create(@JsonProperty("ID") final String id, + @JsonProperty("Version") final Version version, + @JsonProperty("CreatedAt") final Date createdAt, + @JsonProperty("UpdatedAt") final Date updatedAt, +diff --git a/src/main/java/com/spotify/docker/client/messages/swarm/NodeSpec.java b/src/main/java/com/spotify/docker/client/messages/swarm/NodeSpec.java +index 0368f7b4..ee0699ff 100644 +--- a/src/main/java/com/spotify/docker/client/messages/swarm/NodeSpec.java ++++ b/src/main/java/com/spotify/docker/client/messages/swarm/NodeSpec.java +@@ -53,13 +53,6 @@ public abstract class NodeSpec { + public abstract static class Builder { + public abstract Builder name(String name); + +- abstract ImmutableMap.Builder labelsBuilder(); +- +- public Builder addLabel(final String label, final String value) { +- labelsBuilder().put(label, value); +- return this; +- } +- + public abstract Builder labels(Map labels); + + public abstract Builder role(String role); +@@ -74,7 +67,12 @@ public abstract class NodeSpec { + } + + public static NodeSpec.Builder builder(final NodeSpec source) { +- return new AutoValue_NodeSpec.Builder(source); ++ NodeSpec.Builder builder = new AutoValue_NodeSpec.Builder(); ++ builder.name(source.name()); ++ builder.labels(source.labels()); ++ builder.role(source.role()); ++ builder.availability(source.availability()); ++ return builder; + } + + @JsonCreator +diff --git a/src/main/java/com/spotify/docker/client/messages/swarm/Service.java b/src/main/java/com/spotify/docker/client/messages/swarm/Service.java +index 21541f78..27c1c98b 100644 +--- a/src/main/java/com/spotify/docker/client/messages/swarm/Service.java ++++ b/src/main/java/com/spotify/docker/client/messages/swarm/Service.java +@@ -112,13 +112,6 @@ public abstract class Service { + + public abstract Builder labels(final Map labels); + +- abstract ImmutableMap.Builder labelsBuilder(); +- +- public Builder addLabel(final String label, final String value) { +- labelsBuilder().put(label, value); +- return this; +- } +- + public abstract Criteria build(); + } + } +diff --git a/src/main/java/com/spotify/docker/client/messages/swarm/ServiceSpec.java b/src/main/java/com/spotify/docker/client/messages/swarm/ServiceSpec.java +index 0f333943..acb0ac07 100644 +--- a/src/main/java/com/spotify/docker/client/messages/swarm/ServiceSpec.java ++++ b/src/main/java/com/spotify/docker/client/messages/swarm/ServiceSpec.java +@@ -79,22 +79,6 @@ public abstract class ServiceSpec { + return this; + } + +- abstract ImmutableMap.Builder labelsBuilder(); +- +- public Builder addLabel(final String label, final String value) { +- labelsBuilder().put(label, value); +- return this; +- } +- +- /** +- * @deprecated As of release 7.0.0, replaced by {@link #addLabel(String, String)}. +- */ +- @Deprecated +- public Builder withLabel(final String label, final String value) { +- addLabel(label, value); +- return this; +- } +- + public abstract Builder labels(Map labels); + + /** +diff --git a/src/test/java/com/spotify/docker/client/DefaultDockerClientTest.java b/src/test/java/com/spotify/docker/client/DefaultDockerClientTest.java +index a7c8dd3d..46c26121 100644 +--- a/src/test/java/com/spotify/docker/client/DefaultDockerClientTest.java ++++ b/src/test/java/com/spotify/docker/client/DefaultDockerClientTest.java +@@ -2813,7 +2813,7 @@ public class DefaultDockerClientTest { + .build(); + final ContainerConfig volumeConfig = ContainerConfig.builder() + .image(BUSYBOX_LATEST) +- .addVolume("/foo") ++ .volumes("/foo") + .hostConfig(hostConfig) + .build(); + final String id = sut.createContainer(volumeConfig, randomName()).id(); +@@ -2945,7 +2945,7 @@ public class DefaultDockerClientTest { + .build(); + final ContainerConfig volumeConfig = ContainerConfig.builder() + .image(BUSYBOX_LATEST) +- .addVolume(anonVolumeTo) ++ .volumes(anonVolumeTo) + .hostConfig(hostConfig) + .build(); + final String id = sut.createContainer(volumeConfig, randomName()).id(); +@@ -3106,7 +3106,7 @@ public class DefaultDockerClientTest { + + final ContainerConfig volumeConfig = ContainerConfig.builder() + .image(BUSYBOX_LATEST) +- .addVolume("/foo") ++ .volumes("/foo") + .cmd("touch", "/foo/bar") + .build(); + sut.createContainer(volumeConfig, volumeContainer); +@@ -3145,7 +3145,7 @@ public class DefaultDockerClientTest { + + final ContainerConfig volumeConfig = ContainerConfig.builder() + .image(BUSYBOX_LATEST) +- .addVolume("/foo") ++ .volumes("/foo") + // TODO (mbrown): remove sleep - added to make sure container is still alive when attaching + //.cmd("ls", "-la") + .cmd("sh", "-c", "ls -la; sleep 3") +@@ -5297,13 +5297,15 @@ public class DefaultDockerClientTest { + public void testInspectService() throws Exception { + requireDockerApiVersionAtLeast("1.24", "swarm support"); + ++ Map opts = new HashMap<>(); ++ opts.put("max-file", "3"); ++ opts.put("max-size", "10M"); + final String[] commandLine = {"ping", "-c4", "localhost"}; + final TaskSpec taskSpec = TaskSpec + .builder() + .containerSpec(ContainerSpec.builder().image("alpine") + .command(commandLine).build()) +- .logDriver(Driver.builder().name("json-file").addOption("max-file", "3") +- .addOption("max-size", "10M").build()) ++ .logDriver(Driver.builder().name("json-file").options(opts).build()) + .resources(ResourceRequirements.builder() + .limits(com.spotify.docker.client.messages.swarm.Resources.builder() + .memoryBytes(10 * 1024 * 1024L).build()) +@@ -5481,13 +5483,15 @@ public class DefaultDockerClientTest { + final ServiceSpec spec = createServiceSpec(serviceName, labels); + sut.createService(spec); + +- final List services = sut.listServices(Service.find().addLabel("foo", "bar").build()); ++ Map labels2 = new HashMap<>(); ++ labels2.put("foo", "bar"); ++ final List services = sut.listServices(Service.find().labels(labels2).build()); + + assertThat(services.size(), is(1)); + assertThat(services.get(0).spec().labels().get("foo"), is("bar")); + + final List notFoundServices = sut.listServices(Service.find() +- .addLabel("bar", "foo").build()); ++ .labels(labels2).build()); + assertThat(notFoundServices.size(), is(0)); + } + +diff --git a/src/test/java/com/spotify/docker/client/DefaultDockerClientUnitTest.java b/src/test/java/com/spotify/docker/client/DefaultDockerClientUnitTest.java +index 23867eb5..abbd0951 100644 +--- a/src/test/java/com/spotify/docker/client/DefaultDockerClientUnitTest.java ++++ b/src/test/java/com/spotify/docker/client/DefaultDockerClientUnitTest.java +@@ -85,8 +85,10 @@ import java.io.IOException; + import java.nio.file.Path; + import java.nio.file.Paths; + import java.util.Arrays; ++import java.util.HashMap; + import java.util.HashSet; + import java.util.List; ++import java.util.Map; + import java.util.Set; + import java.util.concurrent.TimeUnit; + import okhttp3.HttpUrl; +@@ -502,8 +504,10 @@ public class DefaultDockerClientUnitTest { + assertThat(node.spec().availability(), equalTo("active")); + assertThat(node.spec().labels(), hasKey(equalTo("foo"))); + ++ Map labels = new HashMap<>(); ++ labels.put("foobar", "foobar"); + final NodeSpec updatedNodeSpec = NodeSpec.builder(node.spec()) +- .addLabel("foobar", "foobar") ++ .labels(labels) + .build(); + + enqueueServerApiVersion("1.28"); +@@ -523,8 +527,10 @@ public class DefaultDockerClientUnitTest { + + enqueueServerApiResponse(500, errorMessage); + ++ Map labels = new HashMap<>(); ++ labels.put("foo", "baz"); + final NodeSpec nodeSpec = NodeSpec.builder() +- .addLabel("foo", "baz") ++ .labels(labels) + .name("foobar") + .availability("active") + .role("manager") +@@ -540,8 +546,10 @@ public class DefaultDockerClientUnitTest { + enqueueServerApiVersion("1.28"); + enqueueServerApiError(404, "Error updating node: '24ifsmvkjbyhk'"); + ++ Map labels = new HashMap<>(); ++ labels.put("foo", "baz"); + final NodeSpec nodeSpec = NodeSpec.builder() +- .addLabel("foo", "baz") ++ .labels(labels) + .name("foobar") + .availability("active") + .role("manager") +@@ -557,9 +565,11 @@ public class DefaultDockerClientUnitTest { + enqueueServerApiVersion("1.28"); + enqueueServerApiError(503, "Error updating node: '24ifsmvkjbyhk'"); + ++ Map labels = new HashMap<>(); ++ labels.put("foo", "baz"); + final NodeSpec nodeSpec = NodeSpec.builder() + .name("foobar") +- .addLabel("foo", "baz") ++ .labels(labels) + .availability("active") + .role("manager") + .build(); +-- +2.20.1 + diff --git a/docker-client-java.spec b/docker-client-java.spec new file mode 100644 index 0000000..8468e5e --- /dev/null +++ b/docker-client-java.spec @@ -0,0 +1,78 @@ +Name: docker-client-java +Version: 8.11.7 +Release: 1 +Summary: Docker Client +Provides: docker-client = %{version}-%{release} +Obsoletes: docker-client < %{version}-%{release} +License: ASL 2.0 +URL: https://github.com/spotify/docker-client +Source0: https://github.com/spotify/docker-client/archive/v%{version}.tar.gz +Patch0: 0001-Port-to-latest-version-of-Google-AutoValue.patch +BuildRequires: maven-local mvn(com.fasterxml.jackson.core:jackson-databind) +BuildRequires: mvn(com.fasterxml.jackson.datatype:jackson-datatype-guava) +BuildRequires: mvn(com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider) +BuildRequires: mvn(com.github.jnr:jnr-unixsocket) +BuildRequires: mvn(com.google.auto.value:auto-value) >= 1.4.1 +BuildRequires: mvn(com.google.code.findbugs:jsr305) mvn(com.google.guava:guava:20.0) +BuildRequires: mvn(commons-io:commons-io) mvn(commons-lang:commons-lang) +BuildRequires: mvn(org.apache.commons:commons-compress) +BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) +BuildRequires: mvn(org.apache.httpcomponents:httpclient) +BuildRequires: mvn(org.apache.httpcomponents:httpcore) +BuildRequires: mvn(org.apache.maven.plugins:maven-source-plugin) +BuildRequires: mvn(org.bouncycastle:bcpkix-jdk15on) mvn(org.glassfish.hk2:hk2-api) +BuildRequires: mvn(org.glassfish.jersey.connectors:jersey-apache-connector) +BuildRequires: mvn(org.glassfish.jersey.core:jersey-client) +BuildRequires: mvn(org.glassfish.jersey.media:jersey-media-json-jackson) +BuildRequires: mvn(org.slf4j:slf4j-api) +BuildArch: noarch +%description +The Docker Client is a Java API library for accessing a Docker daemon. + +%prep +%setup -q -n docker-client-%{version} +%patch0 -p1 +%pom_remove_parent +sed -i -e '//acom.spotify' pom.xml +%pom_remove_plugin :maven-shade-plugin +%pom_remove_plugin :jacoco-maven-plugin +%pom_remove_dep com.google.code.findbugs:annotations +sed -i -e '/SuppressFBWarnings/d' src/main/java/com/spotify/docker/client/DefaultDockerClient.java \ + src/main/java/com/spotify/docker/client/messages/{Host,Container}Config.java +%pom_remove_dep :google-auth-library-oauth2-http +rm -rf src/{main,test}/java/com/spotify/docker/client/auth/gcr +%pom_add_dep org.glassfish.hk2:hk2-api +%pom_add_plugin "org.apache.felix:maven-bundle-plugin" pom.xml \ +" + + \${project.groupId}.docker.client + <_nouses>true + + + + + create-manifest + process-classes + manifest + +" +%pom_add_plugin "org.apache.maven.plugins:maven-jar-plugin" pom.xml \ +" + + \${project.build.outputDirectory}/META-INF/MANIFEST.MF + +" + +%build +%mvn_build -j -f + +%install +%mvn_install + +%files -f .mfiles +%license LICENSE NOTICE +%doc README.md + +%changelog +* Wed Aug 19 2020 yanan li - 8.11.7-1 +- Package init diff --git a/docker-client-java.yaml b/docker-client-java.yaml new file mode 100644 index 0000000..519e507 --- /dev/null +++ b/docker-client-java.yaml @@ -0,0 +1,5 @@ +git_url: https://github.com/spotify/docker-client.git +version_control: github +src_repo: spotify/docker-client +tag_prefix: "^v" +seperator: "." diff --git a/v8.11.7.tar.gz b/v8.11.7.tar.gz new file mode 100644 index 0000000..3e981a0 Binary files /dev/null and b/v8.11.7.tar.gz differ