diff --git a/.ci/get-docker-com.sh b/.ci/get-docker-com.sh
deleted file mode 100755
index d9c0142a2..000000000
--- a/.ci/get-docker-com.sh
+++ /dev/null
@@ -1,313 +0,0 @@
-#!/bin/sh
-set -e
-#
-# This script is meant for quick & easy install via:
-# 'curl -sSL https://get.docker.com/ | sh'
-# or:
-# 'wget -qO- https://get.docker.com/ | sh'
-#
-# For test builds (ie. release candidates):
-# 'curl -fsSL https://test.docker.com/ | sh'
-# or:
-# 'wget -qO- https://test.docker.com/ | sh'
-#
-# For experimental builds:
-# 'curl -fsSL https://experimental.docker.com/ | sh'
-# or:
-# 'wget -qO- https://experimental.docker.com/ | sh'
-#
-# Docker Maintainers:
-# To update this script on https://get.docker.com,
-# use hack/release.sh during a normal release,
-# or the following one-liner for script hotfixes:
-# aws s3 cp --acl public-read hack/install.sh s3://get.docker.com/index
-#
-
-url="https://get.docker.com/"
-apt_url="https://apt.dockerproject.org"
-yum_url="https://yum.dockerproject.org"
-gpg_fingerprint="58118E89F3A912897C070ADBF76221572C52609D"
-
-key_servers="
-ha.pool.sks-keyservers.net
-pgp.mit.edu
-keyserver.ubuntu.com
-"
-
-command_exists() {
- command -v "$@" > /dev/null 2>&1
-}
-
-semverParse() {
- major="${1%%.*}"
- minor="${1#$major.}"
- minor="${minor%%.*}"
- patch="${1#$major.$minor.}"
- patch="${patch%%[-.]*}"
-}
-
-do_install() {
- case "$(uname -m)" in
- *64)
- ;;
- *)
- cat >&2 <<-'EOF'
- Error: you are not using a 64bit platform.
- Docker currently only supports 64bit platforms.
- EOF
- exit 1
- ;;
- esac
-
- user="$(id -un 2>/dev/null || true)"
-
- sh_c='sh -c'
- if [ "$user" != 'root' ]; then
- if command_exists sudo; then
- sh_c='sudo -E sh -c'
- elif command_exists su; then
- sh_c='su -c'
- else
- cat >&2 <<-'EOF'
- Error: this installer needs the ability to run commands as root.
- We are unable to find either "sudo" or "su" available to make this happen.
- EOF
- exit 1
- fi
- fi
-
- curl=''
- if command_exists curl; then
- curl='curl -sSL'
- elif command_exists wget; then
- curl='wget -qO-'
- elif command_exists busybox && busybox --list-modules | grep -q wget; then
- curl='busybox wget -qO-'
- fi
-
- # check to see which repo they are trying to install from
- if [ -z "$repo" ]; then
- repo='main'
- if [ "https://test.docker.com/" = "$url" ]; then
- repo='testing'
- elif [ "https://experimental.docker.com/" = "$url" ]; then
- repo='experimental'
- fi
- fi
-
- # perform some very rudimentary platform detection
- lsb_dist=''
- dist_version=''
- if command_exists lsb_release; then
- lsb_dist="$(lsb_release -si)"
- fi
- if [ -z "$lsb_dist" ] && [ -r /etc/lsb-release ]; then
- lsb_dist="$(. /etc/lsb-release && echo "$DISTRIB_ID")"
- fi
- if [ -z "$lsb_dist" ] && [ -r /etc/debian_version ]; then
- lsb_dist='debian'
- fi
- if [ -z "$lsb_dist" ] && [ -r /etc/fedora-release ]; then
- lsb_dist='fedora'
- fi
- if [ -z "$lsb_dist" ] && [ -r /etc/oracle-release ]; then
- lsb_dist='oracleserver'
- fi
- if [ -z "$lsb_dist" ]; then
- if [ -r /etc/centos-release ] || [ -r /etc/redhat-release ]; then
- lsb_dist='centos'
- fi
- fi
- if [ -z "$lsb_dist" ] && [ -r /etc/os-release ]; then
- lsb_dist="$(. /etc/os-release && echo "$ID")"
- fi
-
- lsb_dist="$(echo "$lsb_dist" | tr '[:upper:]' '[:lower:]')"
-
- case "$lsb_dist" in
-
- ubuntu)
- if command_exists lsb_release; then
- dist_version="$(lsb_release --codename | cut -f2)"
- fi
- if [ -z "$dist_version" ] && [ -r /etc/lsb-release ]; then
- dist_version="$(. /etc/lsb-release && echo "$DISTRIB_CODENAME")"
- fi
- ;;
-
- debian)
- dist_version="$(cat /etc/debian_version | sed 's/\/.*//' | sed 's/\..*//')"
- case "$dist_version" in
- 8)
- dist_version="jessie"
- ;;
- 7)
- dist_version="wheezy"
- ;;
- esac
- ;;
-
- oracleserver)
- # need to switch lsb_dist to match yum repo URL
- lsb_dist="oraclelinux"
- dist_version="$(rpm -q --whatprovides redhat-release --queryformat "%{VERSION}\n" | sed 's/\/.*//' | sed 's/\..*//' | sed 's/Server*//')"
- ;;
-
- fedora|centos)
- dist_version="$(rpm -q --whatprovides redhat-release --queryformat "%{VERSION}\n" | sed 's/\/.*//' | sed 's/\..*//' | sed 's/Server*//')"
- ;;
-
- *)
- if command_exists lsb_release; then
- dist_version="$(lsb_release --codename | cut -f2)"
- fi
- if [ -z "$dist_version" ] && [ -r /etc/os-release ]; then
- dist_version="$(. /etc/os-release && echo "$VERSION_ID")"
- fi
- ;;
-
-
- esac
-
-
- # Run setup for each distro accordingly
- case "$lsb_dist" in
- ubuntu|debian)
- export DEBIAN_FRONTEND=noninteractive
-
- did_apt_get_update=
- apt_get_update() {
- if [ -z "$did_apt_get_update" ]; then
- ( set -x; $sh_c 'sleep 3; apt-get update' )
- did_apt_get_update=1
- fi
- }
-
- # aufs is preferred over devicemapper; try to ensure the driver is available.
- if ! grep -q aufs /proc/filesystems && ! $sh_c 'modprobe aufs'; then
- if uname -r | grep -q -- '-generic' && dpkg -l 'linux-image-*-generic' | grep -qE '^ii|^hi' 2>/dev/null; then
- kern_extras="linux-image-extra-$(uname -r) linux-image-extra-virtual"
-
- apt_get_update
- ( set -x; $sh_c 'sleep 3; apt-get install -y -q '"$kern_extras" ) || true
-
- if ! grep -q aufs /proc/filesystems && ! $sh_c 'modprobe aufs'; then
- echo >&2 'Warning: tried to install '"$kern_extras"' (for AUFS)'
- echo >&2 ' but we still have no AUFS. Docker may not work. Proceeding anyways!'
- ( set -x; sleep 10 )
- fi
- else
- echo >&2 'Warning: current kernel is not supported by the linux-image-extra-virtual'
- echo >&2 ' package. We have no AUFS support. Consider installing the packages'
- echo >&2 ' linux-image-virtual kernel and linux-image-extra-virtual for AUFS support.'
- ( set -x; sleep 10 )
- fi
- fi
-
- # install apparmor utils if they're missing and apparmor is enabled in the kernel
- # otherwise Docker will fail to start
- if [ "$(cat /sys/module/apparmor/parameters/enabled 2>/dev/null)" = 'Y' ]; then
- if command -v apparmor_parser >/dev/null 2>&1; then
- echo 'apparmor is enabled in the kernel and apparmor utils were already installed'
- else
- echo 'apparmor is enabled in the kernel, but apparmor_parser missing'
- apt_get_update
- ( set -x; $sh_c 'sleep 3; apt-get install -y -q apparmor' )
- fi
- fi
-
- if [ ! -e /usr/lib/apt/methods/https ]; then
- apt_get_update
- ( set -x; $sh_c 'sleep 3; apt-get install -y -q apt-transport-https ca-certificates' )
- fi
- if [ -z "$curl" ]; then
- apt_get_update
- ( set -x; $sh_c 'sleep 3; apt-get install -y -q curl ca-certificates' )
- curl='curl -sSL'
- fi
- (
- set -x
- for key_server in $key_servers ; do
- $sh_c "apt-key adv --keyserver hkp://${key_server}:80 --recv-keys ${gpg_fingerprint}" && break
- done
- $sh_c "apt-key adv -k ${gpg_fingerprint} >/dev/null"
- $sh_c "mkdir -p /etc/apt/sources.list.d"
- $sh_c "echo deb [arch=$(dpkg --print-architecture)] ${apt_url}/repo ${lsb_dist}-${dist_version} ${repo} > /etc/apt/sources.list.d/docker.list"
- $sh_c 'sleep 3; apt-get update'
- if [ -z "$DOCKER_VERSION" ]; then
- $sh_c 'apt-get -o Dpkg::Options::="--force-confnew" install -y -q docker-engine'
- else
- $sh_c "apt-get -o Dpkg::Options::=\"--force-confnew\" install -y -q docker-engine=$DOCKER_VERSION"
- fi
- )
- exit 0
- ;;
-
- fedora|centos|oraclelinux)
- $sh_c "cat >/etc/yum.repos.d/docker-${repo}.repo" <<-EOF
- [docker-${repo}-repo]
- name=Docker ${repo} Repository
- baseurl=${yum_url}/repo/${repo}/${lsb_dist}/${dist_version}
- enabled=1
- gpgcheck=1
- gpgkey=${yum_url}/gpg
- EOF
- if [ "$lsb_dist" = "fedora" ] && [ "$dist_version" -ge "22" ]; then
- (
- set -x
- $sh_c 'sleep 3; dnf -y -q install docker-engine'
- )
- else
- (
- set -x
- $sh_c 'sleep 3; yum -y -q install docker-engine'
- )
- fi
- exit 0
- ;;
- gentoo)
- if [ "$url" = "https://test.docker.com/" ]; then
- # intentionally mixed spaces and tabs here -- tabs are stripped by "<<-'EOF'", spaces are kept in the output
- cat >&2 <<-'EOF'
-
- You appear to be trying to install the latest nightly build in Gentoo.'
- The portage tree should contain the latest stable release of Docker, but'
- if you want something more recent, you can always use the live ebuild'
- provided in the "docker" overlay available via layman. For more'
- instructions, please see the following URL:'
-
- https://github.com/tianon/docker-overlay#using-this-overlay'
-
- After adding the "docker" overlay, you should be able to:'
-
- emerge -av =app-emulation/docker-9999'
-
- EOF
- exit 1
- fi
-
- (
- set -x
- $sh_c 'sleep 3; emerge app-emulation/docker'
- )
- exit 0
- ;;
- esac
-
- # intentionally mixed spaces and tabs here -- tabs are stripped by "<<-'EOF'", spaces are kept in the output
- cat >&2 <<-'EOF'
-
- Either your platform is not easily detectable, is not supported by this
- installer script (yet - PRs welcome! [hack/install.sh]), or does not yet have
- a package for Docker. Please visit the following URL for more detailed
- installation instructions:
-
- https://docs.docker.com/engine/installation/
-
- EOF
- exit 1
-}
-
-# wrapped up in a function so that we have some protection against only getting
-# half the file during "curl | sh"
-do_install
diff --git a/.ci/setup_docker.sh b/.ci/setup_docker.sh
deleted file mode 100755
index fd71ffd48..000000000
--- a/.ci/setup_docker.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env bash
-
-set -exu
-
-DOCKER_VERSION="${DOCKER_VERSION:-}"
-DOCKER_HOST="${DOCKER_HOST:-}"
-
-if [[ -n $DOCKER_VERSION ]]; then
- sudo -E apt-get -q -y --purge remove docker-engine docker-ce
-
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- sudo apt-get update
- sudo apt-cache madison docker-ce
- sudo apt-get install "docker-ce=$DOCKER_VERSION"
-fi
-
-if [[ -n $DOCKER_HOST ]]; then
- sudo mkdir -p /etc/systemd/system/docker.service.d/
-
- echo "
-[Service]
-ExecStart=
-ExecStart=/usr/bin/dockerd -H $DOCKER_HOST
- " | sudo tee -a /etc/systemd/system/docker.service.d/override.conf
-
- sudo systemctl daemon-reload
- sudo service docker restart || sudo journalctl -xe
- sudo service docker status
-fi
-
-while (! docker ps ); do
- echo "Waiting for Docker to launch..."
- sleep 1
-done
-docker version
-docker info
-
-docker run --rm hello-world
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 000000000..e5a6b0376
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1,2 @@
+* @docker-java/team
+
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 000000000..9bcef2d88
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,16 @@
+version: 2
+updates:
+- package-ecosystem: maven
+ directory: "/"
+ schedule:
+ interval: weekly
+ day: monday
+ open-pull-requests-limit: 99
+ rebase-strategy: disabled
+ ignore:
+ - dependency-name: "org.glassfish.jersey.connectors:jersey-apache-connector"
+ update-types: [ "version-update:semver-major" ]
+ - dependency-name: "org.glassfish.jersey.core:jersey-client"
+ update-types: [ "version-update:semver-major" ]
+ - dependency-name: "org.glassfish.jersey.inject:jersey-hk2"
+ update-types: [ "version-update:semver-major" ]
diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml
index d03b3f5f5..f570cce43 100644
--- a/.github/release-drafter.yml
+++ b/.github/release-drafter.yml
@@ -1,5 +1,5 @@
tag-template: $NEXT_PATCH_VERSION
-name-template: '$NEXT_PATCH_VERSION 🌈'
+name-template: '$NEXT_PATCH_VERSION'
categories:
- title: '🚀 Features'
labels:
diff --git a/.github/stale.yml b/.github/stale.yml
index 5bf537daf..23aefd1f3 100644
--- a/.github/stale.yml
+++ b/.github/stale.yml
@@ -1,7 +1,7 @@
-daysUntilStale: 30
+daysUntilStale: 90
-daysUntilClose: 7
+daysUntilClose: 30
exemptLabels:
- resolution/acknowledged
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 73c35f57a..5a87a3c3f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -2,41 +2,54 @@ name: CI
on:
pull_request: {}
- push: { branches: [ master ] }
+ push: { branches: [ main ] }
+ workflow_dispatch:
jobs:
build:
- runs-on: ubuntu-18.04
+ runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
include:
- - { name: "default" }
- - { name: "over TCP", dockerHost: "tcp://127.0.0.1:2375" }
- - { name: "Docker 18.06.3", dockerVersion: "18.06.3~ce~3-0~ubuntu" }
+ - { name: "default", javaVersion: 8 }
+ - { name: "default", javaVersion: 17 }
+ - { name: "default", javaVersion: 21 }
+ steps:
+ - uses: actions/checkout@v6
+ - name: Set up JDK
+ uses: actions/setup-java@v5
+ with:
+ java-version: ${{matrix.javaVersion}}
+ distribution: temurin
+ cache: maven
+ - name: Configure Docker
+ id: setup_docker
+ uses: docker/setup-docker-action@v4
+ with:
+ channel: stable
+ - name: Build with Maven
+ env:
+ DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
+ run: ./mvnw --no-transfer-progress verify
+ tcp:
+ runs-on: ubuntu-24.04
steps:
- - uses: actions/checkout@v2
- - name: Set up JDK 8
- uses: actions/setup-java@v1
+ - uses: actions/checkout@v6
+ - name: Set up JDK
+ uses: actions/setup-java@v5
with:
java-version: 8
+ distribution: temurin
+ cache: maven
- name: Configure Docker
- env:
- DOCKER_VERSION: ${{matrix.dockerVersion}}
- DOCKER_HOST: ${{matrix.dockerHost}}
- run: .ci/setup_docker.sh
+ id: setup_docker
+ uses: docker/setup-docker-action@v4
+ with:
+ channel: stable
+ tcp-port: 2375
- name: Build with Maven
env:
- DOCKER_HOST: ${{matrix.dockerHost}}
+ DOCKER_HOST: ${{steps.setup_docker.outputs.tcp}}
run: ./mvnw --no-transfer-progress verify
- - name: Aggregate test reports with ciMate
- if: always()
- continue-on-error: true
- env:
- CIMATE_PROJECT_ID: lodr9d83
- CIMATE_CI_KEY: "CI / ${{matrix.name}}"
- run: |
- wget -q https://get.cimate.io/release/linux/cimate
- chmod +x cimate
- ./cimate "**/TEST-*.xml"
diff --git a/.github/workflows/main.yml b/.github/workflows/release-drafter.yml
similarity index 96%
rename from .github/workflows/main.yml
rename to .github/workflows/release-drafter.yml
index 2c30bcdb1..99cd01cfc 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/release-drafter.yml
@@ -4,7 +4,7 @@ on:
push:
# branches to consider in the event; optional, defaults to all
branches:
- - master
+ - main
jobs:
update_release_draft:
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index af27a5718..d3ddc4b2e 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -8,17 +8,25 @@ on:
jobs:
build:
- runs-on: ubuntu-18.04
+ runs-on: ubuntu-24.04
steps:
- - uses: actions/checkout@v1
+ - uses: actions/checkout@v6
- name: Set up JDK 8
- uses: actions/setup-java@v1
+ uses: actions/setup-java@v5
with:
java-version: 8
+ distribution: temurin
+ server-id: central
+ server-username: MAVEN_USERNAME
+ server-password: MAVEN_CENTRAL_TOKEN
+ gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
+ gpg-passphrase: MAVEN_GPG_PASSPHRASE
- name: Set version
run: ./mvnw versions:set -DnewVersion="${{github.event.release.tag_name}}"
- # TODO check master's CI status
+ # TODO check main's CI status
- name: Deploy with Maven
env:
- MAVEN_DEPLOYMENT_REPOSITORY: ${{ secrets.MAVEN_DEPLOYMENT_REPOSITORY }}
- run: ./mvnw deploy -DaltReleaseDeploymentRepository="$MAVEN_DEPLOYMENT_REPOSITORY"
+ MAVEN_USERNAME: ${{ secrets.SONATYPE_CENTRAL_USERNAME }}
+ MAVEN_CENTRAL_TOKEN: ${{ secrets.SONATYPE_CENTRAL_PASSWORD }}
+ MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
+ run: ./mvnw -Prelease deploy -DskipTests
diff --git a/.gitignore b/.gitignore
index 201acaa5f..006641e8c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,7 @@
# Ignore all build/dist directories
target
+dependency-reduced-pom.xml
# Ignore InteliJ Idea project files
.idea/
diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java
deleted file mode 100644
index b901097f2..000000000
--- a/.mvn/wrapper/MavenWrapperDownloader.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2007-present the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import java.net.*;
-import java.io.*;
-import java.nio.channels.*;
-import java.util.Properties;
-
-public class MavenWrapperDownloader {
-
- private static final String WRAPPER_VERSION = "0.5.6";
- /**
- * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
- */
- private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
- + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
-
- /**
- * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
- * use instead of the default one.
- */
- private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
- ".mvn/wrapper/maven-wrapper.properties";
-
- /**
- * Path where the maven-wrapper.jar will be saved to.
- */
- private static final String MAVEN_WRAPPER_JAR_PATH =
- ".mvn/wrapper/maven-wrapper.jar";
-
- /**
- * Name of the property which should be used to override the default download url for the wrapper.
- */
- private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
-
- public static void main(String args[]) {
- System.out.println("- Downloader started");
- File baseDirectory = new File(args[0]);
- System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
-
- // If the maven-wrapper.properties exists, read it and check if it contains a custom
- // wrapperUrl parameter.
- File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
- String url = DEFAULT_DOWNLOAD_URL;
- if(mavenWrapperPropertyFile.exists()) {
- FileInputStream mavenWrapperPropertyFileInputStream = null;
- try {
- mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
- Properties mavenWrapperProperties = new Properties();
- mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
- url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
- } catch (IOException e) {
- System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
- } finally {
- try {
- if(mavenWrapperPropertyFileInputStream != null) {
- mavenWrapperPropertyFileInputStream.close();
- }
- } catch (IOException e) {
- // Ignore ...
- }
- }
- }
- System.out.println("- Downloading from: " + url);
-
- File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
- if(!outputFile.getParentFile().exists()) {
- if(!outputFile.getParentFile().mkdirs()) {
- System.out.println(
- "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
- }
- }
- System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
- try {
- downloadFileFromURL(url, outputFile);
- System.out.println("Done");
- System.exit(0);
- } catch (Throwable e) {
- System.out.println("- Error downloading");
- e.printStackTrace();
- System.exit(1);
- }
- }
-
- private static void downloadFileFromURL(String urlString, File destination) throws Exception {
- if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
- String username = System.getenv("MVNW_USERNAME");
- char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
- Authenticator.setDefault(new Authenticator() {
- @Override
- protected PasswordAuthentication getPasswordAuthentication() {
- return new PasswordAuthentication(username, password);
- }
- });
- }
- URL website = new URL(urlString);
- ReadableByteChannel rbc;
- rbc = Channels.newChannel(website.openStream());
- FileOutputStream fos = new FileOutputStream(destination);
- fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
- fos.close();
- rbc.close();
- }
-
-}
diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar
deleted file mode 100644
index 2cc7d4a55..000000000
Binary files a/.mvn/wrapper/maven-wrapper.jar and /dev/null differ
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
index 642d572ce..8dea6c227 100644
--- a/.mvn/wrapper/maven-wrapper.properties
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -1,2 +1,3 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
-wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
+wrapperVersion=3.3.4
+distributionType=only-script
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.12/apache-maven-3.9.12-bin.zip
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0ca44ee2e..5d344d93b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -301,7 +301,7 @@ v2.0.0
Release notes
* Some commands APIs has been changed to be callback-driven now to simplify the processing of the result streams for the client application. This affects namely the events, stats, log, attach, build, push and pull commands. Look at the Wiki how to [process events](https://github.com/docker-java/docker-java/wiki#handle-events) or how to [build an image](https://github.com/docker-java/docker-java/wiki#build-image-from-dockerfile) from dockerfile for example.
-* The `DockerClientConfig` API has changed to free it from implementation specific configuration options like `readTimeout`, `maxTotalConnections`, `maxPerRouteConnections` and `enableLoggingFilter`. Most options can be configured via `DockerCmdExecFactoryImpl` [programmatically](https://github.com/docker-java/docker-java/wiki#intialize-docker-client-advanced) now. Logging is configurable via [logback](https://github.com/docker-java/docker-java/blob/master/src/test/resources/logback.xml) configuration file in the classpath.
+* The `DockerClientConfig` API has changed to free it from implementation specific configuration options like `readTimeout`, `maxTotalConnections`, `maxPerRouteConnections` and `enableLoggingFilter`. Most options can be configured via `DockerCmdExecFactoryImpl` [programmatically](https://github.com/docker-java/docker-java/wiki#intialize-docker-client-advanced) now. Logging is configurable via [logback](https://github.com/docker-java/docker-java/blob/main/src/test/resources/logback.xml) configuration file in the classpath.
All changes
diff --git a/README.md b/README.md
index c60907548..b1fa9c89e 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,9 @@
[](https://gitter.im/docker-java/docker-java?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[](https://mvnrepository.com/artifact/com.github.docker-java/docker-java)
-[](http://codecov.io/github/docker-java/docker-java?branch=master)
-[](https://github.com/docker-java/docker-java/blob/master/LICENSE)
+[](http://codecov.io/github/docker-java/docker-java?branch=master)
+[](https://github.com/docker-java/docker-java/blob/main/LICENSE)
# docker-java
Java API client for [Docker](http://docs.docker.io/ "Docker")
-# [Read the documentation here](docs/README.md)
\ No newline at end of file
+# [Read the documentation here](docs/README.md)
diff --git a/circle.sh b/circle.sh
index c84ca3fe6..b5b7cdbb0 100755
--- a/circle.sh
+++ b/circle.sh
@@ -6,7 +6,7 @@ case "$1" in
mkdir .docker
cp $CIRCLE_PROJECT_REPONAME/etc/certs/* .docker
- # configure docker deamon to use SSL and provide the path to the certificates
+ # configure docker daemon to use SSL and provide the path to the certificates
docker_opts='DOCKER_OPTS="$DOCKER_OPTS -H tcp://127.0.0.1:2376 --tlsverify --tlscacert='$HOME'/.docker/ca.pem --tlscert='$HOME'/.docker/server-cert.pem --tlskey='$HOME'/.docker/server-key.pem"'
sudo sh -c "echo '$docker_opts' >> /etc/default/docker"
diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml
index 08b5236c2..dda682ab1 100644
--- a/docker-java-api/pom.xml
+++ b/docker-java-api/pom.xml
@@ -15,11 +15,15 @@
https://github.com/docker-java/docker-javaJava API Client for Docker
+
+ com.github.dockerjava.api
+
+
com.fasterxml.jackson.corejackson-annotations
- ${jackson.version}
+ 2.20
@@ -38,9 +42,31 @@
org.projectlomboklombok
- 1.18.12
+ 1.18.38provided
+
+
+
+ org.junit.jupiter
+ junit-jupiter
+ 5.13.4
+ test
+
+
+
+ com.tngtech.archunit
+ archunit-junit5
+ 1.4.1
+ test
+
+
+
+ com.tngtech.archunit
+ archunit
+ 0.18.0
+ test
+
@@ -55,6 +81,22 @@
+
+ com.github.siom79.japicmp
+ japicmp-maven-plugin
+
+
+
+ com.github.dockerjava.api.command.UpdateContainerCmd#getCpuPeriod()
+ com.github.dockerjava.api.command.UpdateContainerCmd#withCpuPeriod(java.lang.Integer)
+ com.github.dockerjava.api.command.UpdateContainerCmd#getCpuQuota()
+ com.github.dockerjava.api.command.UpdateContainerCmd#withCpuQuota(java.lang.Integer)
+ com.github.dockerjava.api.command.InspectContainerResponse#getSizeRootFs()
+ com.github.dockerjava.api.command.InspectContainerResponse#getSizeRw()
+
+
+
+
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/DockerClient.java b/docker-java-api/src/main/java/com/github/dockerjava/api/DockerClient.java
index 59c90aa0b..bf6acdee0 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/DockerClient.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/DockerClient.java
@@ -6,9 +6,11 @@
import com.github.dockerjava.api.command.CommitCmd;
import com.github.dockerjava.api.command.ConnectToNetworkCmd;
import com.github.dockerjava.api.command.ContainerDiffCmd;
+import com.github.dockerjava.api.command.ExportContainerCmd;
import com.github.dockerjava.api.command.CopyArchiveFromContainerCmd;
import com.github.dockerjava.api.command.CopyArchiveToContainerCmd;
import com.github.dockerjava.api.command.CopyFileFromContainerCmd;
+import com.github.dockerjava.api.command.CreateConfigCmd;
import com.github.dockerjava.api.command.CreateContainerCmd;
import com.github.dockerjava.api.command.CreateImageCmd;
import com.github.dockerjava.api.command.CreateNetworkCmd;
@@ -21,9 +23,11 @@
import com.github.dockerjava.api.command.ExecStartCmd;
import com.github.dockerjava.api.command.InfoCmd;
import com.github.dockerjava.api.command.InitializeSwarmCmd;
+import com.github.dockerjava.api.command.InspectConfigCmd;
import com.github.dockerjava.api.command.InspectContainerCmd;
import com.github.dockerjava.api.command.InspectExecCmd;
import com.github.dockerjava.api.command.InspectImageCmd;
+import com.github.dockerjava.api.command.ImageHistoryCmd;
import com.github.dockerjava.api.command.InspectNetworkCmd;
import com.github.dockerjava.api.command.InspectServiceCmd;
import com.github.dockerjava.api.command.InspectSwarmCmd;
@@ -31,6 +35,7 @@
import com.github.dockerjava.api.command.JoinSwarmCmd;
import com.github.dockerjava.api.command.KillContainerCmd;
import com.github.dockerjava.api.command.LeaveSwarmCmd;
+import com.github.dockerjava.api.command.ListConfigsCmd;
import com.github.dockerjava.api.command.ListContainersCmd;
import com.github.dockerjava.api.command.ListImagesCmd;
import com.github.dockerjava.api.command.ListNetworksCmd;
@@ -39,6 +44,7 @@
import com.github.dockerjava.api.command.ListSwarmNodesCmd;
import com.github.dockerjava.api.command.ListTasksCmd;
import com.github.dockerjava.api.command.ListVolumesCmd;
+import com.github.dockerjava.api.command.LoadImageAsyncCmd;
import com.github.dockerjava.api.command.LoadImageCmd;
import com.github.dockerjava.api.command.LogContainerCmd;
import com.github.dockerjava.api.command.LogSwarmObjectCmd;
@@ -47,11 +53,13 @@
import com.github.dockerjava.api.command.PruneCmd;
import com.github.dockerjava.api.command.PullImageCmd;
import com.github.dockerjava.api.command.PushImageCmd;
+import com.github.dockerjava.api.command.RemoveConfigCmd;
import com.github.dockerjava.api.command.RemoveContainerCmd;
import com.github.dockerjava.api.command.RemoveImageCmd;
import com.github.dockerjava.api.command.RemoveNetworkCmd;
import com.github.dockerjava.api.command.RemoveSecretCmd;
import com.github.dockerjava.api.command.RemoveServiceCmd;
+import com.github.dockerjava.api.command.RemoveSwarmNodeCmd;
import com.github.dockerjava.api.command.RemoveVolumeCmd;
import com.github.dockerjava.api.command.RenameContainerCmd;
import com.github.dockerjava.api.command.ResizeContainerCmd;
@@ -126,6 +134,8 @@ public interface DockerClient extends Closeable {
*/
LoadImageCmd loadImageCmd(@Nonnull InputStream imageStream);
+ LoadImageAsyncCmd loadImageAsyncCmd(@Nonnull InputStream imageStream);
+
SearchImagesCmd searchImagesCmd(@Nonnull String term);
RemoveImageCmd removeImageCmd(@Nonnull String imageId);
@@ -134,6 +144,8 @@ public interface DockerClient extends Closeable {
InspectImageCmd inspectImageCmd(@Nonnull String imageId);
+ ImageHistoryCmd imageHistoryCmd(@Nonnull String imageId);
+
/**
* @param name
* The name, e.g. "alexec/busybox" or just "busybox" if you want to default. Not null.
@@ -222,6 +234,15 @@ public interface DockerClient extends Closeable {
ContainerDiffCmd containerDiffCmd(@Nonnull String containerId);
+ /**
+ * Export the contents of a container's filesystem as a tar archive.
+ *
+ * @param containerId
+ * id of the container
+ * @return created command
+ */
+ ExportContainerCmd exportContainerCmd(@Nonnull String containerId);
+
StopContainerCmd stopContainerCmd(@Nonnull String containerId);
KillContainerCmd killContainerCmd(@Nonnull String containerId);
@@ -338,6 +359,15 @@ public interface DockerClient extends Closeable {
*/
UpdateSwarmNodeCmd updateSwarmNodeCmd();
+ /**
+ * Remove the swarm node
+ *
+ * @param swarmNodeId swarmNodeId
+ * @return the command
+ * @since 1.24
+ */
+ RemoveSwarmNodeCmd removeSwarmNodeCmd(String swarmNodeId);
+
/**
* List nodes in swarm
*
@@ -435,12 +465,47 @@ public interface DockerClient extends Closeable {
/**
* Command to remove a secret
+ *
+ * @since {@link RemoteApiVersion#VERSION_1_25}
* @param secretId secret id or secret name
* @return command
*/
RemoveSecretCmd removeSecretCmd(String secretId);
+ /**
+ * Command to list all configs. Only applicable if docker runs in swarm mode.
+ *
+ * @since {@link RemoteApiVersion#VERSION_1_30}
+ * @return command
+ */
+ ListConfigsCmd listConfigsCmd();
+
+ /**
+ * Command to create a config in a docker swarm. Only applicable if docker runs in swarm mode.
+ *
+ * @since {@link RemoteApiVersion#VERSION_1_30}
+ * @return command
+ */
+ CreateConfigCmd createConfigCmd();
+
+ /**
+ * Command to inspect a service
+ *
+ * @since {@link RemoteApiVersion#VERSION_1_30}
+ * @param configId config id or config name
+ * @return command
+ */
+ InspectConfigCmd inspectConfigCmd(String configId);
+
+ /**
+ * Command to remove a config
+ * @since {@link RemoteApiVersion#VERSION_1_30}
+ * @param configId config id or config name
+ * @return command
+ */
+ RemoveConfigCmd removeConfigCmd(String configId);
+
@Override
void close() throws IOException;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/DockerClientDelegate.java b/docker-java-api/src/main/java/com/github/dockerjava/api/DockerClientDelegate.java
new file mode 100644
index 000000000..da600bd4d
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/DockerClientDelegate.java
@@ -0,0 +1,539 @@
+package com.github.dockerjava.api;
+
+import com.github.dockerjava.api.command.AttachContainerCmd;
+import com.github.dockerjava.api.command.AuthCmd;
+import com.github.dockerjava.api.command.BuildImageCmd;
+import com.github.dockerjava.api.command.CommitCmd;
+import com.github.dockerjava.api.command.ConnectToNetworkCmd;
+import com.github.dockerjava.api.command.ContainerDiffCmd;
+import com.github.dockerjava.api.command.ExportContainerCmd;
+import com.github.dockerjava.api.command.CopyArchiveFromContainerCmd;
+import com.github.dockerjava.api.command.CopyArchiveToContainerCmd;
+import com.github.dockerjava.api.command.CopyFileFromContainerCmd;
+import com.github.dockerjava.api.command.CreateConfigCmd;
+import com.github.dockerjava.api.command.CreateContainerCmd;
+import com.github.dockerjava.api.command.CreateImageCmd;
+import com.github.dockerjava.api.command.CreateNetworkCmd;
+import com.github.dockerjava.api.command.CreateSecretCmd;
+import com.github.dockerjava.api.command.CreateServiceCmd;
+import com.github.dockerjava.api.command.CreateVolumeCmd;
+import com.github.dockerjava.api.command.DisconnectFromNetworkCmd;
+import com.github.dockerjava.api.command.EventsCmd;
+import com.github.dockerjava.api.command.ExecCreateCmd;
+import com.github.dockerjava.api.command.ExecStartCmd;
+import com.github.dockerjava.api.command.InfoCmd;
+import com.github.dockerjava.api.command.InitializeSwarmCmd;
+import com.github.dockerjava.api.command.InspectConfigCmd;
+import com.github.dockerjava.api.command.InspectContainerCmd;
+import com.github.dockerjava.api.command.InspectExecCmd;
+import com.github.dockerjava.api.command.InspectImageCmd;
+import com.github.dockerjava.api.command.ImageHistoryCmd;
+import com.github.dockerjava.api.command.InspectNetworkCmd;
+import com.github.dockerjava.api.command.InspectServiceCmd;
+import com.github.dockerjava.api.command.InspectSwarmCmd;
+import com.github.dockerjava.api.command.InspectVolumeCmd;
+import com.github.dockerjava.api.command.JoinSwarmCmd;
+import com.github.dockerjava.api.command.KillContainerCmd;
+import com.github.dockerjava.api.command.LeaveSwarmCmd;
+import com.github.dockerjava.api.command.ListConfigsCmd;
+import com.github.dockerjava.api.command.ListContainersCmd;
+import com.github.dockerjava.api.command.ListImagesCmd;
+import com.github.dockerjava.api.command.ListNetworksCmd;
+import com.github.dockerjava.api.command.ListSecretsCmd;
+import com.github.dockerjava.api.command.ListServicesCmd;
+import com.github.dockerjava.api.command.ListSwarmNodesCmd;
+import com.github.dockerjava.api.command.ListTasksCmd;
+import com.github.dockerjava.api.command.ListVolumesCmd;
+import com.github.dockerjava.api.command.LoadImageAsyncCmd;
+import com.github.dockerjava.api.command.LoadImageCmd;
+import com.github.dockerjava.api.command.LogContainerCmd;
+import com.github.dockerjava.api.command.LogSwarmObjectCmd;
+import com.github.dockerjava.api.command.PauseContainerCmd;
+import com.github.dockerjava.api.command.PingCmd;
+import com.github.dockerjava.api.command.PruneCmd;
+import com.github.dockerjava.api.command.PullImageCmd;
+import com.github.dockerjava.api.command.PushImageCmd;
+import com.github.dockerjava.api.command.RemoveConfigCmd;
+import com.github.dockerjava.api.command.RemoveContainerCmd;
+import com.github.dockerjava.api.command.RemoveImageCmd;
+import com.github.dockerjava.api.command.RemoveNetworkCmd;
+import com.github.dockerjava.api.command.RemoveSecretCmd;
+import com.github.dockerjava.api.command.RemoveServiceCmd;
+import com.github.dockerjava.api.command.RemoveSwarmNodeCmd;
+import com.github.dockerjava.api.command.RemoveVolumeCmd;
+import com.github.dockerjava.api.command.RenameContainerCmd;
+import com.github.dockerjava.api.command.ResizeContainerCmd;
+import com.github.dockerjava.api.command.ResizeExecCmd;
+import com.github.dockerjava.api.command.RestartContainerCmd;
+import com.github.dockerjava.api.command.SaveImageCmd;
+import com.github.dockerjava.api.command.SaveImagesCmd;
+import com.github.dockerjava.api.command.SearchImagesCmd;
+import com.github.dockerjava.api.command.StartContainerCmd;
+import com.github.dockerjava.api.command.StatsCmd;
+import com.github.dockerjava.api.command.StopContainerCmd;
+import com.github.dockerjava.api.command.TagImageCmd;
+import com.github.dockerjava.api.command.TopContainerCmd;
+import com.github.dockerjava.api.command.UnpauseContainerCmd;
+import com.github.dockerjava.api.command.UpdateContainerCmd;
+import com.github.dockerjava.api.command.UpdateServiceCmd;
+import com.github.dockerjava.api.command.UpdateSwarmCmd;
+import com.github.dockerjava.api.command.UpdateSwarmNodeCmd;
+import com.github.dockerjava.api.command.VersionCmd;
+import com.github.dockerjava.api.command.WaitContainerCmd;
+import com.github.dockerjava.api.exception.DockerException;
+import com.github.dockerjava.api.model.AuthConfig;
+import com.github.dockerjava.api.model.Identifier;
+import com.github.dockerjava.api.model.PruneType;
+import com.github.dockerjava.api.model.SecretSpec;
+import com.github.dockerjava.api.model.ServiceSpec;
+import com.github.dockerjava.api.model.SwarmSpec;
+
+import javax.annotation.Nonnull;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * @apiNote implementations MUST override {{@link #getDockerClient()}}
+ * @implNote We're not using an abstract class here because we want
+ * Java compiler to force us to implement every {@link DockerClient}'s method,
+ * especially when new methods are added
+ */
+@SuppressWarnings("unused")
+public class DockerClientDelegate implements DockerClient {
+
+ protected DockerClient getDockerClient() {
+ throw new IllegalStateException("Implement me!");
+ }
+
+ @Override
+ public AuthConfig authConfig() throws DockerException {
+ return getDockerClient().authConfig();
+ }
+
+ @Override
+ public AuthCmd authCmd() {
+ return getDockerClient().authCmd();
+ }
+
+ @Override
+ public InfoCmd infoCmd() {
+ return getDockerClient().infoCmd();
+ }
+
+ @Override
+ public PingCmd pingCmd() {
+ return getDockerClient().pingCmd();
+ }
+
+ @Override
+ public VersionCmd versionCmd() {
+ return getDockerClient().versionCmd();
+ }
+
+ @Override
+ public PullImageCmd pullImageCmd(@Nonnull String repository) {
+ return getDockerClient().pullImageCmd(repository);
+ }
+
+ @Override
+ public PushImageCmd pushImageCmd(@Nonnull String name) {
+ return getDockerClient().pushImageCmd(name);
+ }
+
+ @Override
+ public PushImageCmd pushImageCmd(@Nonnull Identifier identifier) {
+ return getDockerClient().pushImageCmd(identifier);
+ }
+
+ @Override
+ public CreateImageCmd createImageCmd(@Nonnull String repository, @Nonnull InputStream imageStream) {
+ return getDockerClient().createImageCmd(repository, imageStream);
+ }
+
+ @Override
+ public LoadImageCmd loadImageCmd(@Nonnull InputStream imageStream) {
+ return getDockerClient().loadImageCmd(imageStream);
+ }
+
+ @Override
+ public LoadImageAsyncCmd loadImageAsyncCmd(@Nonnull InputStream imageStream) {
+ return getDockerClient().loadImageAsyncCmd(imageStream);
+ }
+
+ @Override
+ public SearchImagesCmd searchImagesCmd(@Nonnull String term) {
+ return getDockerClient().searchImagesCmd(term);
+ }
+
+ @Override
+ public RemoveImageCmd removeImageCmd(@Nonnull String imageId) {
+ return getDockerClient().removeImageCmd(imageId);
+ }
+
+ @Override
+ public ListImagesCmd listImagesCmd() {
+ return getDockerClient().listImagesCmd();
+ }
+
+ @Override
+ public InspectImageCmd inspectImageCmd(@Nonnull String imageId) {
+ return getDockerClient().inspectImageCmd(imageId);
+ }
+
+ @Override
+ public ImageHistoryCmd imageHistoryCmd(@Nonnull String imageId) {
+ return getDockerClient().imageHistoryCmd(imageId);
+ }
+
+ @Override
+ public SaveImageCmd saveImageCmd(@Nonnull String name) {
+ return getDockerClient().saveImageCmd(name);
+ }
+
+ @Override
+ public SaveImagesCmd saveImagesCmd() {
+ return getDockerClient().saveImagesCmd();
+ }
+
+ @Override
+ public ListContainersCmd listContainersCmd() {
+ return getDockerClient().listContainersCmd();
+ }
+
+ @Override
+ public CreateContainerCmd createContainerCmd(@Nonnull String image) {
+ return getDockerClient().createContainerCmd(image);
+ }
+
+ @Override
+ public StartContainerCmd startContainerCmd(@Nonnull String containerId) {
+ return getDockerClient().startContainerCmd(containerId);
+ }
+
+ @Override
+ public ExecCreateCmd execCreateCmd(@Nonnull String containerId) {
+ return getDockerClient().execCreateCmd(containerId);
+ }
+
+ @Override
+ public ResizeExecCmd resizeExecCmd(@Nonnull String execId) {
+ return getDockerClient().resizeExecCmd(execId);
+ }
+
+ @Override
+ public InspectContainerCmd inspectContainerCmd(@Nonnull String containerId) {
+ return getDockerClient().inspectContainerCmd(containerId);
+ }
+
+ @Override
+ public RemoveContainerCmd removeContainerCmd(@Nonnull String containerId) {
+ return getDockerClient().removeContainerCmd(containerId);
+ }
+
+ @Override
+ public WaitContainerCmd waitContainerCmd(@Nonnull String containerId) {
+ return getDockerClient().waitContainerCmd(containerId);
+ }
+
+ @Override
+ public AttachContainerCmd attachContainerCmd(@Nonnull String containerId) {
+ return getDockerClient().attachContainerCmd(containerId);
+ }
+
+ @Override
+ public ExecStartCmd execStartCmd(@Nonnull String execId) {
+ return getDockerClient().execStartCmd(execId);
+ }
+
+ @Override
+ public InspectExecCmd inspectExecCmd(@Nonnull String execId) {
+ return getDockerClient().inspectExecCmd(execId);
+ }
+
+ @Override
+ public LogContainerCmd logContainerCmd(@Nonnull String containerId) {
+ return getDockerClient().logContainerCmd(containerId);
+ }
+
+ @Override
+ public CopyArchiveFromContainerCmd copyArchiveFromContainerCmd(@Nonnull String containerId, @Nonnull String resource) {
+ return getDockerClient().copyArchiveFromContainerCmd(containerId, resource);
+ }
+
+ @Override
+ @Deprecated
+ public CopyFileFromContainerCmd copyFileFromContainerCmd(@Nonnull String containerId, @Nonnull String resource) {
+ return getDockerClient().copyFileFromContainerCmd(containerId, resource);
+ }
+
+ @Override
+ public CopyArchiveToContainerCmd copyArchiveToContainerCmd(@Nonnull String containerId) {
+ return getDockerClient().copyArchiveToContainerCmd(containerId);
+ }
+
+ @Override
+ public ContainerDiffCmd containerDiffCmd(@Nonnull String containerId) {
+ return getDockerClient().containerDiffCmd(containerId);
+ }
+
+ @Override
+ public ExportContainerCmd exportContainerCmd(@Nonnull String containerId) {
+ return getDockerClient().exportContainerCmd(containerId);
+ }
+
+ @Override
+ public StopContainerCmd stopContainerCmd(@Nonnull String containerId) {
+ return getDockerClient().stopContainerCmd(containerId);
+ }
+
+ @Override
+ public KillContainerCmd killContainerCmd(@Nonnull String containerId) {
+ return getDockerClient().killContainerCmd(containerId);
+ }
+
+ @Override
+ public UpdateContainerCmd updateContainerCmd(@Nonnull String containerId) {
+ return getDockerClient().updateContainerCmd(containerId);
+ }
+
+ @Override
+ public RenameContainerCmd renameContainerCmd(@Nonnull String containerId) {
+ return getDockerClient().renameContainerCmd(containerId);
+ }
+
+ @Override
+ public RestartContainerCmd restartContainerCmd(@Nonnull String containerId) {
+ return getDockerClient().restartContainerCmd(containerId);
+ }
+
+ @Override
+ public ResizeContainerCmd resizeContainerCmd(@Nonnull String containerId) {
+ return getDockerClient().resizeContainerCmd(containerId);
+ }
+
+ @Override
+ public CommitCmd commitCmd(@Nonnull String containerId) {
+ return getDockerClient().commitCmd(containerId);
+ }
+
+ @Override
+ public BuildImageCmd buildImageCmd() {
+ return getDockerClient().buildImageCmd();
+ }
+
+ @Override
+ public BuildImageCmd buildImageCmd(File dockerFileOrFolder) {
+ return getDockerClient().buildImageCmd(dockerFileOrFolder);
+ }
+
+ @Override
+ public BuildImageCmd buildImageCmd(InputStream tarInputStream) {
+ return getDockerClient().buildImageCmd(tarInputStream);
+ }
+
+ @Override
+ public TopContainerCmd topContainerCmd(String containerId) {
+ return getDockerClient().topContainerCmd(containerId);
+ }
+
+ @Override
+ public TagImageCmd tagImageCmd(String imageId, String imageNameWithRepository, String tag) {
+ return getDockerClient().tagImageCmd(imageId, imageNameWithRepository, tag);
+ }
+
+ @Override
+ public PauseContainerCmd pauseContainerCmd(String containerId) {
+ return getDockerClient().pauseContainerCmd(containerId);
+ }
+
+ @Override
+ public UnpauseContainerCmd unpauseContainerCmd(String containerId) {
+ return getDockerClient().unpauseContainerCmd(containerId);
+ }
+
+ @Override
+ public EventsCmd eventsCmd() {
+ return getDockerClient().eventsCmd();
+ }
+
+ @Override
+ public StatsCmd statsCmd(String containerId) {
+ return getDockerClient().statsCmd(containerId);
+ }
+
+ @Override
+ public CreateVolumeCmd createVolumeCmd() {
+ return getDockerClient().createVolumeCmd();
+ }
+
+ @Override
+ public InspectVolumeCmd inspectVolumeCmd(String name) {
+ return getDockerClient().inspectVolumeCmd(name);
+ }
+
+ @Override
+ public RemoveVolumeCmd removeVolumeCmd(String name) {
+ return getDockerClient().removeVolumeCmd(name);
+ }
+
+ @Override
+ public ListVolumesCmd listVolumesCmd() {
+ return getDockerClient().listVolumesCmd();
+ }
+
+ @Override
+ public ListNetworksCmd listNetworksCmd() {
+ return getDockerClient().listNetworksCmd();
+ }
+
+ @Override
+ public InspectNetworkCmd inspectNetworkCmd() {
+ return getDockerClient().inspectNetworkCmd();
+ }
+
+ @Override
+ public CreateNetworkCmd createNetworkCmd() {
+ return getDockerClient().createNetworkCmd();
+ }
+
+ @Override
+ public RemoveNetworkCmd removeNetworkCmd(@Nonnull String networkId) {
+ return getDockerClient().removeNetworkCmd(networkId);
+ }
+
+ @Override
+ public ConnectToNetworkCmd connectToNetworkCmd() {
+ return getDockerClient().connectToNetworkCmd();
+ }
+
+ @Override
+ public DisconnectFromNetworkCmd disconnectFromNetworkCmd() {
+ return getDockerClient().disconnectFromNetworkCmd();
+ }
+
+ @Override
+ public InitializeSwarmCmd initializeSwarmCmd(SwarmSpec swarmSpec) {
+ return getDockerClient().initializeSwarmCmd(swarmSpec);
+ }
+
+ @Override
+ public InspectSwarmCmd inspectSwarmCmd() {
+ return getDockerClient().inspectSwarmCmd();
+ }
+
+ @Override
+ public JoinSwarmCmd joinSwarmCmd() {
+ return getDockerClient().joinSwarmCmd();
+ }
+
+ @Override
+ public LeaveSwarmCmd leaveSwarmCmd() {
+ return getDockerClient().leaveSwarmCmd();
+ }
+
+ @Override
+ public UpdateSwarmCmd updateSwarmCmd(SwarmSpec swarmSpec) {
+ return getDockerClient().updateSwarmCmd(swarmSpec);
+ }
+
+ @Override
+ public UpdateSwarmNodeCmd updateSwarmNodeCmd() {
+ return getDockerClient().updateSwarmNodeCmd();
+ }
+
+ @Override
+ public RemoveSwarmNodeCmd removeSwarmNodeCmd(String swarmNodeId) {
+ return getDockerClient().removeSwarmNodeCmd(swarmNodeId);
+ }
+
+ @Override
+ public ListSwarmNodesCmd listSwarmNodesCmd() {
+ return getDockerClient().listSwarmNodesCmd();
+ }
+
+ @Override
+ public ListServicesCmd listServicesCmd() {
+ return getDockerClient().listServicesCmd();
+ }
+
+ @Override
+ public CreateServiceCmd createServiceCmd(ServiceSpec serviceSpec) {
+ return getDockerClient().createServiceCmd(serviceSpec);
+ }
+
+ @Override
+ public InspectServiceCmd inspectServiceCmd(String serviceId) {
+ return getDockerClient().inspectServiceCmd(serviceId);
+ }
+
+ @Override
+ public UpdateServiceCmd updateServiceCmd(String serviceId, ServiceSpec serviceSpec) {
+ return getDockerClient().updateServiceCmd(serviceId, serviceSpec);
+ }
+
+ @Override
+ public RemoveServiceCmd removeServiceCmd(String serviceId) {
+ return getDockerClient().removeServiceCmd(serviceId);
+ }
+
+ @Override
+ public ListTasksCmd listTasksCmd() {
+ return getDockerClient().listTasksCmd();
+ }
+
+ @Override
+ public LogSwarmObjectCmd logServiceCmd(String serviceId) {
+ return getDockerClient().logServiceCmd(serviceId);
+ }
+
+ @Override
+ public LogSwarmObjectCmd logTaskCmd(String taskId) {
+ return getDockerClient().logTaskCmd(taskId);
+ }
+
+ @Override
+ public PruneCmd pruneCmd(PruneType pruneType) {
+ return getDockerClient().pruneCmd(pruneType);
+ }
+
+ @Override
+ public ListSecretsCmd listSecretsCmd() {
+ return getDockerClient().listSecretsCmd();
+ }
+
+ @Override
+ public CreateSecretCmd createSecretCmd(SecretSpec secretSpec) {
+ return getDockerClient().createSecretCmd(secretSpec);
+ }
+
+ @Override
+ public RemoveSecretCmd removeSecretCmd(String secretId) {
+ return getDockerClient().removeSecretCmd(secretId);
+ }
+
+ @Override
+ public ListConfigsCmd listConfigsCmd() {
+ return getDockerClient().listConfigsCmd();
+ }
+
+ @Override
+ public CreateConfigCmd createConfigCmd() {
+ return getDockerClient().createConfigCmd();
+ }
+
+ @Override
+ public InspectConfigCmd inspectConfigCmd(String configId) {
+ return getDockerClient().inspectConfigCmd(configId);
+ }
+
+ @Override
+ public RemoveConfigCmd removeConfigCmd(String configId) {
+ return getDockerClient().removeConfigCmd(configId);
+ }
+
+ @Override
+ public void close() throws IOException {
+ getDockerClient().close();
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageResultCallback.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageResultCallback.java
index 0bb0f0884..9db21a6c4 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageResultCallback.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageResultCallback.java
@@ -31,7 +31,7 @@ public void onNext(BuildResponseItem item) {
} else if (item.isErrorIndicated()) {
this.error = item.getError();
}
- LOGGER.debug(item.toString());
+ LOGGER.debug("{}", item);
}
/**
@@ -67,14 +67,14 @@ public String awaitImageId(long timeout, TimeUnit timeUnit) {
}
private String getImageId() {
- if (imageId != null) {
- return imageId;
+ if (error != null) {
+ throw new DockerClientException("Could not build image: " + error);
}
- if (error == null) {
- throw new DockerClientException("Could not build image");
+ if (imageId != null) {
+ return imageId;
}
- throw new DockerClientException("Could not build image: " + error);
+ throw new DockerClientException("Could not build image");
}
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CopyArchiveToContainerCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CopyArchiveToContainerCmd.java
index a4dfb5c03..19b3c3843 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CopyArchiveToContainerCmd.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CopyArchiveToContainerCmd.java
@@ -16,6 +16,7 @@ public interface CopyArchiveToContainerCmd extends SyncDockerCmd {
boolean isDirChildrenOnly();
+ boolean isCopyUIDGID();
/**
* Set container's id
*
@@ -49,6 +50,14 @@ public interface CopyArchiveToContainerCmd extends SyncDockerCmd {
*/
CopyArchiveToContainerCmd withNoOverwriteDirNonDir(boolean noOverwriteDirNonDir);
+ /**
+ * If set to true then ownership is set to the user and primary group at the destination
+ *
+ * @param copyUIDGID
+ * flag to know if ownership should be set to the user and primary group at the destination
+ */
+ CopyArchiveToContainerCmd withCopyUIDGID(boolean copyUIDGID);
+
/**
* If this flag is set to true, all children of the local directory will be copied to the remote without the root directory. For ex: if
* I have root/titi and root/tata and the remote path is /var/data. dirChildrenOnly = true will create /var/data/titi and /var/data/tata
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateConfigCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateConfigCmd.java
new file mode 100644
index 000000000..205bc7a7d
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateConfigCmd.java
@@ -0,0 +1,51 @@
+package com.github.dockerjava.api.command;
+
+import com.github.dockerjava.api.exception.ConflictException;
+
+import javax.annotation.CheckForNull;
+import java.util.Map;
+
+/**
+ * Command to create a new config
+ *
+ * @since {@link RemoteApiVersion#VERSION_1_30}
+ */
+public interface CreateConfigCmd extends SyncDockerCmd {
+
+ @CheckForNull
+ String getName();
+
+ @CheckForNull
+ String getData();
+
+ @CheckForNull
+ Map getLabels();
+
+ /**
+ * @param name
+ * - The new config name.
+ */
+ CreateConfigCmd withName(String name);
+
+ /**
+ * @param data
+ * - The new config data.
+ */
+ CreateConfigCmd withData(byte[] data);
+
+ /**
+ * @param labels
+ * - A mapping of labels keys and values. Labels are a mechanism for applying metadata to Docker objects.
+ */
+ CreateConfigCmd withLabels(Map labels);
+
+ /**
+ * @throws ConflictException Named config already exists
+ */
+ @Override
+ CreateConfigResponse exec() throws ConflictException;
+
+ interface Exec extends DockerCmdSyncExec {
+ }
+
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateConfigResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateConfigResponse.java
new file mode 100644
index 000000000..5836275ff
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateConfigResponse.java
@@ -0,0 +1,20 @@
+package com.github.dockerjava.api.command;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * The response of a {@link CreateConfigCmd}
+ */
+@EqualsAndHashCode
+@ToString
+public class CreateConfigResponse extends DockerObject {
+ @JsonProperty("ID")
+ private String id;
+
+ public String getId() {
+ return id;
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateContainerCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateContainerCmd.java
index 2fc6e6faa..fba83f50c 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateContainerCmd.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateContainerCmd.java
@@ -1006,6 +1006,13 @@ default CreateContainerCmd withUlimits(List ulimits) {
return this;
}
+ @CheckForNull
+ default String getPlatform() {
+ return null;
+ }
+
+ CreateContainerCmd withPlatform(String platform);
+
/**
* @throws NotFoundException No such container
* @throws ConflictException Named container already exists
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateContainerResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateContainerResponse.java
index b19f8c6ae..ad24d7ec8 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateContainerResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateContainerResponse.java
@@ -1,6 +1,7 @@
package com.github.dockerjava.api.command;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@@ -11,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class CreateContainerResponse {
+public class CreateContainerResponse extends DockerObject {
@JsonProperty("Id")
private String id;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateImageResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateImageResponse.java
index 09b1929c0..53b2b5367 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateImageResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateImageResponse.java
@@ -1,6 +1,7 @@
package com.github.dockerjava.api.command;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@@ -12,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class CreateImageResponse {
+public class CreateImageResponse extends DockerObject {
@JsonProperty("status")
private String id;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateNetworkCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateNetworkCmd.java
index 544ac2083..56b9df17a 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateNetworkCmd.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateNetworkCmd.java
@@ -47,7 +47,7 @@ public interface CreateNetworkCmd extends SyncDockerCmd {
/** Name of the network driver to use. Defaults to bridge. */
CreateNetworkCmd withDriver(String driver);
- /** Ipam config, such es subnet, gateway and ip range of the network */
+ /** Ipam config, such as subnet, gateway and ip range of the network */
CreateNetworkCmd withIpam(Ipam ipam);
/** Driver specific options */
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateNetworkResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateNetworkResponse.java
index a816f3f3a..3f6f219e1 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateNetworkResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateNetworkResponse.java
@@ -1,12 +1,13 @@
package com.github.dockerjava.api.command;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@EqualsAndHashCode
@ToString
-public class CreateNetworkResponse {
+public class CreateNetworkResponse extends DockerObject {
@JsonProperty("Id")
private String id;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateSecretResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateSecretResponse.java
index c9da4c3ba..2c1b6f11b 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateSecretResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateSecretResponse.java
@@ -1,6 +1,7 @@
package com.github.dockerjava.api.command;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@@ -9,7 +10,7 @@
*/
@EqualsAndHashCode
@ToString
-public class CreateSecretResponse {
+public class CreateSecretResponse extends DockerObject {
@JsonProperty("ID")
private String id;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateServiceResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateServiceResponse.java
index 1cbd421b9..b68343f55 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateServiceResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateServiceResponse.java
@@ -1,6 +1,7 @@
package com.github.dockerjava.api.command;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@@ -9,7 +10,7 @@
*/
@EqualsAndHashCode
@ToString
-public class CreateServiceResponse {
+public class CreateServiceResponse extends DockerObject {
@JsonProperty("ID")
private String id;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateVolumeResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateVolumeResponse.java
index 9c31b8dc4..4afc6f6ba 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateVolumeResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CreateVolumeResponse.java
@@ -1,6 +1,7 @@
package com.github.dockerjava.api.command;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@@ -12,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class CreateVolumeResponse {
+public class CreateVolumeResponse extends DockerObject {
@JsonProperty("Name")
private String name;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/DelegatingDockerCmdExecFactory.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/DelegatingDockerCmdExecFactory.java
index c414a6d21..d7cdd97a9 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/DelegatingDockerCmdExecFactory.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/DelegatingDockerCmdExecFactory.java
@@ -75,6 +75,11 @@ public LoadImageCmd.Exec createLoadImageCmdExec() {
return getDockerCmdExecFactory().createLoadImageCmdExec();
}
+ @Override
+ public LoadImageAsyncCmd.Exec createLoadImageAsyncCmdExec() {
+ return getDockerCmdExecFactory().createLoadImageAsyncCmdExec();
+ }
+
@Override
public SearchImagesCmd.Exec createSearchImagesCmdExec() {
return getDockerCmdExecFactory().createSearchImagesCmdExec();
@@ -95,6 +100,11 @@ public InspectImageCmd.Exec createInspectImageCmdExec() {
return getDockerCmdExecFactory().createInspectImageCmdExec();
}
+ @Override
+ public ImageHistoryCmd.Exec createImageHistoryCmdExec() {
+ return getDockerCmdExecFactory().createImageHistoryCmdExec();
+ }
+
@Override
public ListContainersCmd.Exec createListContainersCmdExec() {
return getDockerCmdExecFactory().createListContainersCmdExec();
@@ -170,6 +180,11 @@ public ContainerDiffCmd.Exec createContainerDiffCmdExec() {
return getDockerCmdExecFactory().createContainerDiffCmdExec();
}
+ @Override
+ public ExportContainerCmd.Exec createExportContainerCmdExec() {
+ return getDockerCmdExecFactory().createExportContainerCmdExec();
+ }
+
@Override
public KillContainerCmd.Exec createKillContainerCmdExec() {
return getDockerCmdExecFactory().createKillContainerCmdExec();
@@ -380,6 +395,26 @@ public RemoveSecretCmd.Exec createRemoveSecretCmdExec() {
return getDockerCmdExecFactory().createRemoveSecretCmdExec();
}
+ @Override
+ public ListConfigsCmd.Exec createListConfigsCmdExec() {
+ return getDockerCmdExecFactory().createListConfigsCmdExec();
+ }
+
+ @Override
+ public CreateConfigCmd.Exec createCreateConfigCmdExec() {
+ return getDockerCmdExecFactory().createCreateConfigCmdExec();
+ }
+
+ @Override
+ public InspectConfigCmd.Exec createInspectConfigCmdExec() {
+ return getDockerCmdExecFactory().createInspectConfigCmdExec();
+ }
+
+ @Override
+ public RemoveConfigCmd.Exec createRemoveConfigCmdExec() {
+ return getDockerCmdExecFactory().createRemoveConfigCmdExec();
+ }
+
@Override
public void close() throws IOException {
getDockerCmdExecFactory().close();
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/DockerCmdExecFactory.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/DockerCmdExecFactory.java
index 27084bf76..bdf39269d 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/DockerCmdExecFactory.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/DockerCmdExecFactory.java
@@ -27,6 +27,8 @@ public interface DockerCmdExecFactory extends Closeable {
LoadImageCmd.Exec createLoadImageCmdExec();
+ LoadImageAsyncCmd.Exec createLoadImageAsyncCmdExec();
+
SearchImagesCmd.Exec createSearchImagesCmdExec();
RemoveImageCmd.Exec createRemoveImageCmdExec();
@@ -35,6 +37,8 @@ public interface DockerCmdExecFactory extends Closeable {
InspectImageCmd.Exec createInspectImageCmdExec();
+ ImageHistoryCmd.Exec createImageHistoryCmdExec();
+
ListContainersCmd.Exec createListContainersCmdExec();
CreateContainerCmd.Exec createCreateContainerCmdExec();
@@ -69,6 +73,8 @@ public interface DockerCmdExecFactory extends Closeable {
ContainerDiffCmd.Exec createContainerDiffCmdExec();
+ ExportContainerCmd.Exec createExportContainerCmdExec();
+
KillContainerCmd.Exec createKillContainerCmdExec();
UpdateContainerCmd.Exec createUpdateContainerCmdExec();
@@ -236,6 +242,35 @@ public interface DockerCmdExecFactory extends Closeable {
*/
RemoveSecretCmd.Exec createRemoveSecretCmdExec();
+ /**
+ * Command to list all configs.
+ *
+ * @since {@link RemoteApiVersion#VERSION_1_30}
+ */
+ ListConfigsCmd.Exec createListConfigsCmdExec();
+
+ /**
+ * Command to inspect a config in a docker swarm. Only applicable if docker runs in swarm mode.
+ *
+ * @since {@link RemoteApiVersion#VERSION_1_30}
+ */
+ InspectConfigCmd.Exec createInspectConfigCmdExec();
+
+ /**
+ * Command to create a new config in a docker swarm. Only applicable if docker runs in swarm mode.
+ *
+ * @since {@link RemoteApiVersion#VERSION_1_30}
+ */
+ CreateConfigCmd.Exec createCreateConfigCmdExec();
+
+ /**
+ * Command to remove a config in a docker swarm. Only applicable if docker runs in swarm mode.
+ *
+ * @since {@link RemoteApiVersion#VERSION_1_30}
+ */
+ RemoveConfigCmd.Exec createRemoveConfigCmdExec();
+
+
@Override
void close() throws IOException;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/ExecCreateCmdResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/ExecCreateCmdResponse.java
index e751896de..449803236 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/ExecCreateCmdResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/ExecCreateCmdResponse.java
@@ -1,12 +1,13 @@
package com.github.dockerjava.api.command;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@EqualsAndHashCode
@ToString
-public class ExecCreateCmdResponse {
+public class ExecCreateCmdResponse extends DockerObject {
@JsonProperty("Id")
private String id;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/ExportContainerCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/ExportContainerCmd.java
new file mode 100644
index 000000000..bef73d261
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/ExportContainerCmd.java
@@ -0,0 +1,31 @@
+package com.github.dockerjava.api.command;
+
+import java.io.InputStream;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+import com.github.dockerjava.api.exception.NotFoundException;
+
+/**
+ * Export the contents of a container as a tar archive.
+ */
+public interface ExportContainerCmd extends SyncDockerCmd {
+
+ @CheckForNull
+ String getContainerId();
+
+ ExportContainerCmd withContainerId(@Nonnull String containerId);
+
+ /**
+ * Its the responsibility of the caller to consume and/or close the {@link InputStream} to prevent connection leaks.
+ *
+ * @throws NotFoundException
+ * No such container
+ */
+ @Override
+ InputStream exec() throws NotFoundException;
+
+ interface Exec extends DockerCmdSyncExec {
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/GraphData.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/GraphData.java
index 7852e8d59..44abc176d 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/GraphData.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/GraphData.java
@@ -1,6 +1,7 @@
package com.github.dockerjava.api.command;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@@ -12,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class GraphData {
+public class GraphData extends DockerObject {
@JsonProperty("RootDir")
private String rootDir;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/GraphDriver.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/GraphDriver.java
index 5ba4d456e..4d6679416 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/GraphDriver.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/GraphDriver.java
@@ -1,6 +1,7 @@
package com.github.dockerjava.api.command;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@@ -14,7 +15,7 @@
*/
@EqualsAndHashCode
@ToString
-public class GraphDriver {
+public class GraphDriver extends DockerObject {
/**
* @since {@link com.github.dockerjava.core.RemoteApiVersion#VERSION_1_21}
*/
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/HealthState.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/HealthState.java
index cd7290785..0d8e399c1 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/HealthState.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/HealthState.java
@@ -1,9 +1,15 @@
package com.github.dockerjava.api.command;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
import java.util.List;
-public class HealthState {
+@EqualsAndHashCode
+@ToString
+public class HealthState extends DockerObject {
@JsonProperty("Status")
private String status;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/HealthStateLog.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/HealthStateLog.java
index d68dcb74f..71939f872 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/HealthStateLog.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/HealthStateLog.java
@@ -1,8 +1,13 @@
package com.github.dockerjava.api.command;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
-public class HealthStateLog {
+@EqualsAndHashCode
+@ToString
+public class HealthStateLog extends DockerObject {
@JsonProperty("Start")
private String start;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/ImageHistoryCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/ImageHistoryCmd.java
new file mode 100644
index 000000000..d93796ad2
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/ImageHistoryCmd.java
@@ -0,0 +1,31 @@
+package com.github.dockerjava.api.command;
+
+import java.util.List;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+import com.github.dockerjava.api.exception.NotFoundException;
+import com.github.dockerjava.api.model.ImageHistory;
+
+/**
+ * Get the history of an image.
+ */
+public interface ImageHistoryCmd extends SyncDockerCmd> {
+
+ @CheckForNull
+ String getImageId();
+
+ ImageHistoryCmd withImageId(@Nonnull String imageId);
+
+ /**
+ * @throws NotFoundException
+ * No such image
+ */
+ @Override
+ List exec() throws NotFoundException;
+
+ interface Exec extends DockerCmdSyncExec> {
+ }
+
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectConfigCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectConfigCmd.java
new file mode 100644
index 000000000..96374d795
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectConfigCmd.java
@@ -0,0 +1,25 @@
+package com.github.dockerjava.api.command;
+
+import com.github.dockerjava.api.exception.NotFoundException;
+import com.github.dockerjava.api.model.Config;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+public interface InspectConfigCmd extends SyncDockerCmd {
+
+ @CheckForNull
+ String getConfigId();
+
+ InspectConfigCmd withConfigId(@Nonnull String configId);
+
+ /**
+ * @throws NotFoundException
+ * No such config
+ */
+ @Override
+ Config exec() throws NotFoundException;
+
+ interface Exec extends DockerCmdSyncExec {
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java
index 06e18fa21..f06bd4ed9 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java
@@ -3,6 +3,7 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.dockerjava.api.model.ContainerConfig;
+import com.github.dockerjava.api.model.DockerObject;
import com.github.dockerjava.api.model.HostConfig;
import com.github.dockerjava.api.model.NetworkSettings;
import com.github.dockerjava.api.model.Volume;
@@ -24,7 +25,7 @@
*/
@EqualsAndHashCode
@ToString
-public class InspectContainerResponse {
+public class InspectContainerResponse extends DockerObject {
@JsonProperty("Args")
private String[] args;
@@ -60,7 +61,10 @@ public class InspectContainerResponse {
private String id;
@JsonProperty("SizeRootFs")
- private Integer sizeRootFs;
+ private Long sizeRootFs;
+
+ @JsonProperty("SizeRw")
+ private Long sizeRw;
@JsonProperty("Image")
private String imageId;
@@ -120,10 +124,14 @@ public String getId() {
return id;
}
- public Integer getSizeRootFs() {
+ public Long getSizeRootFs() {
return sizeRootFs;
}
+ public Long getSizeRw() {
+ return sizeRw;
+ }
+
public String getCreated() {
return created;
}
@@ -251,7 +259,7 @@ public String getPlatform() {
@EqualsAndHashCode
@ToString
- public class ContainerState {
+ public class ContainerState extends DockerObject {
/**
* @since {@link RemoteApiVersion#VERSION_1_20}
@@ -456,7 +464,7 @@ public HealthState getHealth() {
@EqualsAndHashCode
@ToString
- public static class Mount {
+ public static class Mount extends DockerObject {
/**
* @since {@link RemoteApiVersion#VERSION_1_20}
@@ -581,7 +589,7 @@ public Mount withSource(String source) {
@EqualsAndHashCode
@ToString
- public class Node {
+ public class Node extends DockerObject {
@JsonProperty("ID")
private String id;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectExecResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectExecResponse.java
index 06d904dc8..307fdd873 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectExecResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectExecResponse.java
@@ -3,6 +3,7 @@
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
import com.github.dockerjava.api.model.NetworkSettings;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@@ -11,7 +12,7 @@
@EqualsAndHashCode
@ToString
-public class InspectExecResponse {
+public class InspectExecResponse extends DockerObject {
@JsonProperty("ID")
private String id;
@@ -152,7 +153,7 @@ public Long getPidLong() {
@EqualsAndHashCode
@ToString
- public class ProcessConfig {
+ public class ProcessConfig extends DockerObject {
@JsonProperty("arguments")
private List arguments;
@@ -190,7 +191,9 @@ public String getUser() {
}
}
- public class Container {
+ @EqualsAndHashCode
+ @ToString
+ public class Container extends DockerObject {
@JsonProperty("NetworkSettings")
private NetworkSettings networkSettings;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectImageResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectImageResponse.java
index b8590bfc6..bf48ba8f0 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectImageResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectImageResponse.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.dockerjava.api.model.ContainerConfig;
+import com.github.dockerjava.api.model.DockerObject;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@@ -15,7 +16,7 @@
*/
@EqualsAndHashCode
@ToString
-public class InspectImageResponse {
+public class InspectImageResponse extends DockerObject {
@JsonProperty("Architecture")
private String arch;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectVolumeResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectVolumeResponse.java
index c79232811..bc0008817 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectVolumeResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectVolumeResponse.java
@@ -1,6 +1,7 @@
package com.github.dockerjava.api.command;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@@ -12,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class InspectVolumeResponse {
+public class InspectVolumeResponse extends DockerObject {
@JsonProperty("Name")
private String name;
@@ -26,6 +27,9 @@ public class InspectVolumeResponse {
@JsonProperty("Mountpoint")
private String mountpoint;
+ @JsonProperty("Options")
+ private Map options;
+
public String getName() {
return name;
}
@@ -41,4 +45,9 @@ public String getDriver() {
public String getMountpoint() {
return mountpoint;
}
+
+ public Map getOptions() {
+ return options;
+ }
+
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/ListConfigsCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/ListConfigsCmd.java
new file mode 100644
index 000000000..38d34816a
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/ListConfigsCmd.java
@@ -0,0 +1,21 @@
+package com.github.dockerjava.api.command;
+
+import com.github.dockerjava.api.model.Config;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Command to list all configs in a docker swarm. Only applicable if docker runs in swarm mode.
+ *
+ * @since {@link RemoteApiVersion#VERSION_1_30}
+ */
+public interface ListConfigsCmd extends SyncDockerCmd> {
+
+ Map> getFilters();
+
+ ListConfigsCmd withFilters(Map> filters);
+
+ interface Exec extends DockerCmdSyncExec> {
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/ListImagesCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/ListImagesCmd.java
index 7741df743..99a9fc200 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/ListImagesCmd.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/ListImagesCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.api.command;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -25,6 +26,11 @@ public interface ListImagesCmd extends SyncDockerCmd> {
*/
ListImagesCmd withShowAll(Boolean showAll);
+ /**
+ * Filter images by name
+ * @deprecated use {@link #withFilter(String, Collection)}
+ */
+ @Deprecated
ListImagesCmd withImageNameFilter(String imageName);
/**
@@ -44,6 +50,15 @@ public interface ListImagesCmd extends SyncDockerCmd> {
*/
ListImagesCmd withLabelFilter(Map labels);
+ /**
+ * Filter images by reference
+ *
+ * @param reference string in the form {@code [:]}
+ */
+ ListImagesCmd withReferenceFilter(String reference);
+
+ ListImagesCmd withFilter(String key, Collection values);
+
interface Exec extends DockerCmdSyncExec> {
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/ListVolumesResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/ListVolumesResponse.java
index 4e1b449f8..7c434a48d 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/ListVolumesResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/ListVolumesResponse.java
@@ -3,6 +3,7 @@
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@@ -12,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ListVolumesResponse {
+public class ListVolumesResponse extends DockerObject {
@JsonProperty("Volumes")
private List volumes;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageAsyncCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageAsyncCmd.java
new file mode 100644
index 000000000..4f054db22
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageAsyncCmd.java
@@ -0,0 +1,22 @@
+package com.github.dockerjava.api.command;
+
+import com.github.dockerjava.api.model.LoadResponseItem;
+
+import java.io.InputStream;
+
+public interface LoadImageAsyncCmd extends AsyncDockerCmd {
+ InputStream getImageStream();
+
+ /**
+ * @param imageStream the InputStream of the tar file
+ */
+ LoadImageAsyncCmd withImageStream(InputStream imageStream);
+
+ @Override
+ default LoadImageCallback start() {
+ return exec(new LoadImageCallback());
+ }
+
+ interface Exec extends DockerCmdAsyncExec {
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageCallback.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageCallback.java
new file mode 100644
index 000000000..80cca18de
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageCallback.java
@@ -0,0 +1,49 @@
+package com.github.dockerjava.api.command;
+
+import com.github.dockerjava.api.async.ResultCallbackTemplate;
+import com.github.dockerjava.api.exception.DockerClientException;
+import com.github.dockerjava.api.model.LoadResponseItem;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class LoadImageCallback extends ResultCallbackTemplate {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(LoadImageCallback.class);
+
+ private String message;
+
+ private String error;
+
+ @Override
+ public void onNext(LoadResponseItem item) {
+ if (item.isBuildSuccessIndicated()) {
+ this.message = item.getMessage();
+ } else if (item.isErrorIndicated()) {
+ this.error = item.getError();
+ }
+
+ LOGGER.debug("{}", item);
+ }
+
+ public String awaitMessage() {
+ try {
+ awaitCompletion();
+ } catch (InterruptedException e) {
+ throw new DockerClientException("", e);
+ }
+
+ return getMessage();
+ }
+
+ private String getMessage() {
+ if (this.message != null) {
+ return this.message;
+ }
+
+ if (this.error == null) {
+ throw new DockerClientException("Could not build image");
+ }
+
+ throw new DockerClientException("Could not build image: " + this.error);
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/LogContainerCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/LogContainerCmd.java
index 53674cbaa..29c4516cd 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/LogContainerCmd.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/LogContainerCmd.java
@@ -25,6 +25,8 @@
* @param since
* - UNIX timestamp (integer) to filter logs. Specifying a timestamp will only output log-entries since that timestamp. Default:
* 0 (unfiltered)
+ * @param until
+ * - Only return logs before this time, as a UNIX timestamp. Default: 0
*/
public interface LogContainerCmd extends AsyncDockerCmd {
@@ -49,6 +51,9 @@ public interface LogContainerCmd extends AsyncDockerCmd
@CheckForNull
Integer getSince();
+ @CheckForNull
+ Integer getUntil();
+
LogContainerCmd withContainerId(@Nonnull String containerId);
/**
@@ -69,6 +74,8 @@ public interface LogContainerCmd extends AsyncDockerCmd
LogContainerCmd withSince(Integer since);
+ LogContainerCmd withUntil(Integer until);
+
/**
* @throws com.github.dockerjava.api.NotFoundException
* No such container
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/PullImageResultCallback.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/PullImageResultCallback.java
index a4e9e9f9b..5980ce3df 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/PullImageResultCallback.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/PullImageResultCallback.java
@@ -41,7 +41,7 @@ public void onNext(PullResponseItem item) {
handleDockerClientResponse(item);
}
- LOGGER.debug(item.toString());
+ LOGGER.debug("{}", item);
}
private void checkForDockerSwarmResponse(PullResponseItem item) {
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/RemoveConfigCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/RemoveConfigCmd.java
new file mode 100644
index 000000000..741fe32c0
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/RemoveConfigCmd.java
@@ -0,0 +1,28 @@
+package com.github.dockerjava.api.command;
+
+import com.github.dockerjava.api.exception.NotFoundException;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+/**
+ * Remove a config.
+ */
+public interface RemoveConfigCmd extends SyncDockerCmd {
+
+ @CheckForNull
+ String getConfigId();
+
+ RemoveConfigCmd withConfigId(@Nonnull String secretId);
+
+ /**
+ * @throws NotFoundException
+ * No such config
+ */
+ @Override
+ Void exec() throws NotFoundException;
+
+ interface Exec extends DockerCmdSyncExec {
+ }
+
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/RemoveSwarmNodeCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/RemoveSwarmNodeCmd.java
index 198e7b8df..603c610b3 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/RemoveSwarmNodeCmd.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/RemoveSwarmNodeCmd.java
@@ -18,7 +18,7 @@ public interface RemoveSwarmNodeCmd extends SyncDockerCmd {
@CheckForNull
Boolean hasForceEnabled();
- RemoveSwarmNodeCmd withContainerId(@Nonnull String containerId);
+ RemoveSwarmNodeCmd withSwarmNodeId(@Nonnull String swarmNodeId);
RemoveSwarmNodeCmd withForce(Boolean force);
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/RestartContainerCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/RestartContainerCmd.java
index 5dcc59c24..372456813 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/RestartContainerCmd.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/RestartContainerCmd.java
@@ -8,9 +8,8 @@
/**
* Restart a running container.
*
- * @param timeout
- * - Timeout in seconds before killing the container. Defaults to 10 seconds.
- *
+ * @param signal - Signal to send to the container as an integer or string (e.g. SIGINT).
+ * @param timeout - Timeout in seconds before killing the container. Defaults to 10 seconds.
*/
public interface RestartContainerCmd extends SyncDockerCmd {
@@ -20,13 +19,28 @@ public interface RestartContainerCmd extends SyncDockerCmd {
@CheckForNull
Integer getTimeout();
+ /**
+ * @since {@link com.github.dockerjava.core.RemoteApiVersion#VERSION_1_42}
+ */
+ @CheckForNull
+ String getSignal();
+
RestartContainerCmd withContainerId(@Nonnull String containerId);
- RestartContainerCmd withtTimeout(Integer timeout);
+ /**
+ * @deprecated wrong name, use {@link #withTimeout(Integer)}
+ */
+ @Deprecated
+ default RestartContainerCmd withtTimeout(Integer timeout) {
+ return withTimeout(timeout);
+ }
+
+ RestartContainerCmd withTimeout(Integer timeout);
+
+ RestartContainerCmd withSignal(String signal);
/**
- * @throws NotFoundException
- * No such container
+ * @throws NotFoundException No such container
*/
@Override
Void exec() throws NotFoundException;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/RootFS.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/RootFS.java
index e4cc0ec54..c190852af 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/RootFS.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/RootFS.java
@@ -1,6 +1,7 @@
package com.github.dockerjava.api.command;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@@ -14,7 +15,7 @@
*/
@EqualsAndHashCode
@ToString
-public class RootFS {
+public class RootFS extends DockerObject {
@JsonProperty("Type")
private String type;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/TopContainerResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/TopContainerResponse.java
index 6f7b1d49f..e604c20ae 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/TopContainerResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/TopContainerResponse.java
@@ -1,6 +1,7 @@
package com.github.dockerjava.api.command;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.dockerjava.api.model.DockerObject;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@@ -11,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class TopContainerResponse {
+public class TopContainerResponse extends DockerObject {
@JsonProperty("Titles")
private String[] titles;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/UpdateContainerCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/UpdateContainerCmd.java
index 82fbca5f8..d53bcdcdf 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/UpdateContainerCmd.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/UpdateContainerCmd.java
@@ -1,9 +1,16 @@
package com.github.dockerjava.api.command;
+import com.github.dockerjava.api.model.BlkioRateDevice;
+import com.github.dockerjava.api.model.BlkioWeightDevice;
+import com.github.dockerjava.api.model.Device;
+import com.github.dockerjava.api.model.DeviceRequest;
+import com.github.dockerjava.api.model.RestartPolicy;
+import com.github.dockerjava.api.model.Ulimit;
import com.github.dockerjava.api.model.UpdateContainerResponse;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
+import java.util.List;
/**
* @author Kanstantsin Shautsou
@@ -13,22 +20,47 @@ public interface UpdateContainerCmd extends SyncDockerCmd getBlkioWeightDevice();
+
+ UpdateContainerCmd withBlkioWeightDevice(List blkioWeightDevice);
@CheckForNull
- Integer getCpuPeriod();
+ List getBlkioDeviceReadBps();
- UpdateContainerCmd withCpuPeriod(Integer cpuPeriod);
+ UpdateContainerCmd withBlkioDeviceReadBps(List blkioDeviceReadBps);
@CheckForNull
- Integer getCpuQuota();
+ List getBlkioDeviceWriteBps();
- UpdateContainerCmd withCpuQuota(Integer cpuQuota);
+ UpdateContainerCmd withBlkioDeviceWriteBps(List blkioDeviceWriteBps);
+
+ @CheckForNull
+ List getBlkioDeviceReadIOps();
+
+ UpdateContainerCmd withBlkioDeviceReadIOps(List blkioDeviceReadIOps);
+
+ @CheckForNull
+ List getBlkioDeviceWriteIOps();
+
+ UpdateContainerCmd withBlkioDeviceWriteIOps(List blkioDeviceWriteIOps);
+
+ @CheckForNull
+ Long getCpuPeriod();
+
+ UpdateContainerCmd withCpuPeriod(Long cpuPeriod);
+
+ @CheckForNull
+ Long getCpuQuota();
+
+ UpdateContainerCmd withCpuQuota(Long cpuQuota);
@CheckForNull
String getCpusetCpus();
@@ -45,6 +77,31 @@ public interface UpdateContainerCmd extends SyncDockerCmd getDevices();
+
+ UpdateContainerCmd withDevices(List devices);
+
+ @CheckForNull
+ List getDeviceCgroupRules();
+
+ UpdateContainerCmd withDeviceCgroupRules(List deviceCgroupRules);
+
+ @CheckForNull
+ List getDeviceRequests();
+
+ UpdateContainerCmd withDeviceRequests(List deviceRequests);
+
@CheckForNull
Long getKernelMemory();
@@ -65,6 +122,36 @@ public interface UpdateContainerCmd extends SyncDockerCmd getUlimits();
+
+ UpdateContainerCmd withUlimits(List ulimits);
+
+ @CheckForNull
+ RestartPolicy getRestartPolicy();
+
+ UpdateContainerCmd withRestartPolicy(RestartPolicy restartPolicy);
+
interface Exec extends DockerCmdSyncExec {
}
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerCmd.java
index 3117cf7e4..7b910cd69 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerCmd.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerCmd.java
@@ -2,9 +2,11 @@
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import com.github.dockerjava.api.async.ResultCallback;
import com.github.dockerjava.api.exception.NotFoundException;
+import com.github.dockerjava.api.model.WaitContainerCondition;
import com.github.dockerjava.api.model.WaitResponse;
/**
@@ -20,8 +22,20 @@ public interface WaitContainerCmd extends AsyncDockerCmd> T exec(T resultCallback);
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerResultCallback.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerResultCallback.java
index b4a6d3cc6..6cb160151 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerResultCallback.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerResultCallback.java
@@ -27,7 +27,7 @@ public class WaitContainerResultCallback extends ResultCallbackTemplate
*/
AUDIT_CONTROL,
+ /**
+ * Allow reading the audit log via multicast netlink socket.
+ */
+ AUDIT_READ,
/**
* Write records to kernel auditing log.
*/
@@ -26,6 +32,14 @@ public enum Capability {
* Employ features that can block system suspend.
*/
BLOCK_SUSPEND,
+ /**
+ * Allow creating BPF maps, loading BPF Type Format (BTF) data, retrieve JITed code of BPF programs, and more.
+ */
+ BPF,
+ /**
+ * Allow checkpoint/restore related operations. Introduced in kernel 5.9.
+ */
+ CHECKPOINT_RESTORE,
/**
* Make arbitrary changes to file UIDs and GIDs (see chown(2)).
*/
@@ -120,6 +134,10 @@ public enum Capability {
*
*/
NET_RAW,
+ /**
+ * Allow system performance and observability privileged operations using perf_events, i915_perf and other kernel subsystems
+ */
+ PERFMON,
/**
* Set file capabilities.
*/
@@ -283,5 +301,11 @@ public enum Capability {
/**
* Trigger something that will wake up the system (set CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM timers).
*/
- WAKE_ALARM
+ WAKE_ALARM;
+
+ @JsonCreator
+ public static Capability fromValue(String cap) {
+ String result = !cap.startsWith("CAP_") ? cap : cap.split("_", 2)[1];
+ return Capability.valueOf(result);
+ }
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ChangeLog.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ChangeLog.java
index 922e2e2b3..c8a5be890 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ChangeLog.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ChangeLog.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ChangeLog implements Serializable {
+public class ChangeLog extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Path")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ClusterInfo.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ClusterInfo.java
index 40055106b..b6e1e5566 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ClusterInfo.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ClusterInfo.java
@@ -16,7 +16,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ClusterInfo implements Serializable {
+public class ClusterInfo extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Config.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Config.java
new file mode 100644
index 000000000..2c5b87aa8
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Config.java
@@ -0,0 +1,90 @@
+package com.github.dockerjava.api.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Used for Listing config.
+ *
+ * @since {@link RemoteApiVersion#VERSION_1_30}
+ */
+@ToString
+@EqualsAndHashCode
+public class Config extends DockerObject implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @since 1.30
+ */
+ @JsonProperty("ID")
+ private String id;
+
+ /**
+ * @since 1.30
+ */
+ @JsonProperty("CreatedAt")
+ private Date createdAt;
+
+ /**
+ * @since 1.30
+ */
+ @JsonProperty("UpdatedAt")
+ private Date updatedAt;
+
+ /**
+ * @since 1.30
+ */
+ @JsonProperty("Spec")
+ private ConfigSpec spec;
+
+ /**
+ * @since 1.30
+ */
+ @JsonProperty("Version")
+ private ResourceVersion version;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public Date getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Date createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Date getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Date updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public ConfigSpec getSpec() {
+ return spec;
+ }
+
+ public void setSpec(ConfigSpec spec) {
+ this.spec = spec;
+ }
+
+ public ResourceVersion getVersion() {
+ return version;
+ }
+
+ public void setVersion(ResourceVersion version) {
+ this.version = version;
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ConfigSpec.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ConfigSpec.java
new file mode 100644
index 000000000..62e525d0b
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ConfigSpec.java
@@ -0,0 +1,24 @@
+package com.github.dockerjava.api.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+/**
+ * @since {@link RemoteApiVersion#VERSION_1_30}
+ */
+@EqualsAndHashCode
+@ToString
+public class ConfigSpec extends DockerObject implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @JsonProperty("Name")
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Container.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Container.java
index e2723a96b..3b4bdf394 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Container.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Container.java
@@ -17,7 +17,7 @@
*/
@EqualsAndHashCode
@ToString
-public class Container implements Serializable {
+public class Container extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Command")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerConfig.java
index a84835277..db5437220 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerConfig.java
@@ -16,7 +16,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ContainerConfig implements Serializable {
+public class ContainerConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("AttachStderr")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerDNSConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerDNSConfig.java
index c60414f81..63d3cae11 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerDNSConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerDNSConfig.java
@@ -14,7 +14,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ContainerDNSConfig implements Serializable {
+public class ContainerDNSConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Nameservers")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerHostConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerHostConfig.java
index 590d22a92..cdc446282 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerHostConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerHostConfig.java
@@ -14,7 +14,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ContainerHostConfig implements Serializable {
+public class ContainerHostConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("NetworkMode")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerMount.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerMount.java
index 48b4c9f47..a08a6ea3f 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerMount.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerMount.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ContainerMount implements Serializable {
+public class ContainerMount extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Name")
@@ -106,7 +106,7 @@ public ContainerMount withDriver(String driver) {
*/
@CheckForNull
public String getMode() {
- return driver;
+ return mode;
}
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerNetwork.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerNetwork.java
index 6433e15f6..823828900 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerNetwork.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerNetwork.java
@@ -20,7 +20,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ContainerNetwork implements Serializable {
+public class ContainerNetwork extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
/**
@@ -283,7 +283,9 @@ public ContainerNetwork withNetworkID(String networkID) {
/**
* Docker named it EndpointIPAMConfig
*/
- public static class Ipam implements Serializable {
+ @EqualsAndHashCode
+ @ToString
+ public static class Ipam extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("IPv4Address")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerNetworkSettings.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerNetworkSettings.java
index 19e249e29..9e8381500 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerNetworkSettings.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerNetworkSettings.java
@@ -15,7 +15,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ContainerNetworkSettings implements Serializable {
+public class ContainerNetworkSettings extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerPort.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerPort.java
index b22aecc0e..35f9f6ab9 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerPort.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerPort.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ContainerPort implements Serializable {
+public class ContainerPort extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("IP")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpec.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpec.java
index f56399ce8..0a26e54fd 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpec.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpec.java
@@ -16,7 +16,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ContainerSpec implements Serializable {
+public class ContainerSpec extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
@@ -137,7 +137,7 @@ public class ContainerSpec implements Serializable {
* @since 1.26
* A test to perform to check that the container is healthy.
*/
- @JsonProperty("HealthCheck")
+ @JsonProperty("Healthcheck")
private HealthCheck healthCheck;
/**
@@ -161,6 +161,14 @@ public class ContainerSpec implements Serializable {
@JsonProperty("Configs")
private List configs;
+ /**
+ * @since 1.38
+ * Run an init inside the container that forwards signals and reaps processes.
+ * This field is omitted if empty, and the default (as configured on the daemon) is used.
+ */
+ @JsonProperty("Init")
+ private Boolean init;
+
/**
* @see #image
*/
@@ -435,4 +443,13 @@ public ContainerSpec withConfigs(List configs) {
this.configs = configs;
return this;
}
+
+ public Boolean getInit() {
+ return init;
+ }
+
+ public ContainerSpec withInit(Boolean init) {
+ this.init = init;
+ return this;
+ }
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecConfig.java
index 274ad8f55..fbd93b606 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecConfig.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ContainerSpecConfig implements Serializable {
+public class ContainerSpecConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("File")
private ContainerSpecFile file;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecFile.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecFile.java
index cf8471d7c..ac9ef4d81 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecFile.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecFile.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ContainerSpecFile implements Serializable {
+public class ContainerSpecFile extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Name")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecPrivileges.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecPrivileges.java
index a5bb69391..5d8d7cd55 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecPrivileges.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecPrivileges.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ContainerSpecPrivileges implements Serializable {
+public class ContainerSpecPrivileges extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("CredentialSpec")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecPrivilegesCredential.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecPrivilegesCredential.java
index 8a4294f01..e6ca62fd4 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecPrivilegesCredential.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecPrivilegesCredential.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ContainerSpecPrivilegesCredential implements Serializable {
+public class ContainerSpecPrivilegesCredential extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecPrivilegesSELinuxContext.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecPrivilegesSELinuxContext.java
index c7fa68af8..d1b2cc15b 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecPrivilegesSELinuxContext.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecPrivilegesSELinuxContext.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ContainerSpecPrivilegesSELinuxContext implements Serializable {
+public class ContainerSpecPrivilegesSELinuxContext extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Disable")
private Boolean disable;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecSecret.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecSecret.java
index e92b2b07f..742272e16 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecSecret.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpecSecret.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ContainerSpecSecret implements Serializable {
+public class ContainerSpecSecret extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("File")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/CpuStatsConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/CpuStatsConfig.java
index fce6e610d..04d91c826 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/CpuStatsConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/CpuStatsConfig.java
@@ -1,6 +1,8 @@
package com.github.dockerjava.api.model;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
import javax.annotation.CheckForNull;
import java.io.Serializable;
@@ -10,7 +12,9 @@
*
* @author Yuting Liu
*/
-public class CpuStatsConfig implements Serializable {
+@EqualsAndHashCode
+@ToString
+public class CpuStatsConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("cpu_usage")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/CpuUsageConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/CpuUsageConfig.java
index e9e4d2212..f87afeec8 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/CpuUsageConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/CpuUsageConfig.java
@@ -1,6 +1,8 @@
package com.github.dockerjava.api.model;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
import javax.annotation.CheckForNull;
import java.io.Serializable;
@@ -11,7 +13,9 @@
*
* @author Yuting Liu
*/
-public class CpuUsageConfig implements Serializable {
+@EqualsAndHashCode
+@ToString
+public class CpuUsageConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("total_usage")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Device.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Device.java
index 09223e52a..b6f16029e 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Device.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Device.java
@@ -14,7 +14,7 @@
@EqualsAndHashCode
@ToString
-public class Device implements Serializable {
+public class Device extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("CgroupPermissions")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/DeviceRequest.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/DeviceRequest.java
index 9f8942182..549d51b57 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/DeviceRequest.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/DeviceRequest.java
@@ -10,7 +10,7 @@
@EqualsAndHashCode
@ToString
-public class DeviceRequest implements Serializable {
+public class DeviceRequest extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
@JsonProperty("Driver")
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 0771fb180..80feee509 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
@@ -2,6 +2,7 @@
import java.io.Serializable;
+@Deprecated
public class DiscreteResourceSpec extends GenericResource implements Serializable {
private static final long serialVersionUID = 1L;
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/DockerObject.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/DockerObject.java
new file mode 100644
index 000000000..463dc15a1
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/DockerObject.java
@@ -0,0 +1,20 @@
+package com.github.dockerjava.api.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @see DockerObjectAccessor
+ */
+public abstract class DockerObject {
+
+ HashMap rawValues = new HashMap<>();
+
+ @JsonAnyGetter
+ public Map getRawValues() {
+ return Collections.unmodifiableMap(this.rawValues);
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/DockerObjectAccessor.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/DockerObjectAccessor.java
new file mode 100644
index 000000000..0827c4a34
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/DockerObjectAccessor.java
@@ -0,0 +1,27 @@
+package com.github.dockerjava.api.model;
+
+import java.util.HashMap;
+
+public final class DockerObjectAccessor {
+
+ /**
+ * @deprecated not for public usage, unless you _really_ understand what you're doing
+ */
+ @Deprecated
+ public static void overrideRawValues(DockerObject o, HashMap rawValues) {
+ o.rawValues = rawValues != null ? rawValues : new HashMap<>();
+ }
+
+ /**
+ * This is an advanced method for setting raw values on the resulting object
+ * that will fully overwrite any previously set value for given key.
+ *
+ * Make sure to check Docker's API before using it.
+ */
+ public static void overrideRawValue(DockerObject o, String key, Object value) {
+ o.rawValues.put(key, value);
+ }
+
+ private DockerObjectAccessor() {
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Driver.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Driver.java
index cde23cb2b..bdc05e53b 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Driver.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Driver.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class Driver implements Serializable {
+public class Driver extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/DriverStatus.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/DriverStatus.java
index cca52f1d0..57fe32247 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/DriverStatus.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/DriverStatus.java
@@ -11,7 +11,7 @@
*/
@EqualsAndHashCode
@ToString
-public class DriverStatus implements Serializable {
+public class DriverStatus extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Root Dir")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Endpoint.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Endpoint.java
index eb6c982ed..cebbfea1c 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Endpoint.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Endpoint.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class Endpoint implements Serializable {
+public class Endpoint extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/EndpointSpec.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/EndpointSpec.java
index 75b5056f0..c0ce386fa 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/EndpointSpec.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/EndpointSpec.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class EndpointSpec implements Serializable {
+public class EndpointSpec extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/EndpointVirtualIP.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/EndpointVirtualIP.java
index fad960fb7..0babfba4c 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/EndpointVirtualIP.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/EndpointVirtualIP.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class EndpointVirtualIP implements Serializable {
+public class EndpointVirtualIP extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ErrorDetail.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ErrorDetail.java
index 10c3310d1..63e670772 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ErrorDetail.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ErrorDetail.java
@@ -1,10 +1,14 @@
package com.github.dockerjava.api.model;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
import java.io.Serializable;
-public class ErrorDetail implements Serializable {
+@EqualsAndHashCode
+@ToString
+public class ErrorDetail extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Event.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Event.java
index 59ecc67bd..0eedbc553 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Event.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Event.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class Event implements Serializable {
+public class Event extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/EventActor.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/EventActor.java
index e05414d34..fbcf088f7 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/EventActor.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/EventActor.java
@@ -14,7 +14,7 @@
*/
@EqualsAndHashCode
@ToString
-public class EventActor implements Serializable {
+public class EventActor extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ExposedPorts.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ExposedPorts.java
index 9fb9910bd..6f5ae9ebd 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ExposedPorts.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ExposedPorts.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.ToString;
import java.io.Serializable;
import java.util.List;
@@ -9,6 +10,7 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;
+@ToString
public class ExposedPorts implements Serializable {
private static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ExternalCA.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ExternalCA.java
index 95a80eb03..3a68410d8 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ExternalCA.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ExternalCA.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ExternalCA implements Serializable {
+public class ExternalCA extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Frame.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Frame.java
index 041e22423..fdd5dd62e 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Frame.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Frame.java
@@ -8,7 +8,7 @@
* Represents a logging frame.
*/
@EqualsAndHashCode
-public class Frame implements Serializable {
+public class Frame extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
private final StreamType streamType;
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 9b994d8dd..f6ddfabe5 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,10 +1,14 @@
package com.github.dockerjava.api.model;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
import java.io.Serializable;
-public abstract class GenericResource implements Serializable {
+@EqualsAndHashCode
+@ToString
+public abstract class GenericResource extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Kind")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/HealthCheck.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/HealthCheck.java
index e21a0763f..0e41b873f 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/HealthCheck.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/HealthCheck.java
@@ -28,7 +28,7 @@
*/
@EqualsAndHashCode
@ToString
-public class HealthCheck implements Serializable {
+public class HealthCheck extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Interval")
@@ -55,6 +55,12 @@ public class HealthCheck implements Serializable {
@JsonProperty("StartPeriod")
private Long startPeriod;
+ /**
+ * @since 1.44
+ */
+ @JsonProperty("StartInterval")
+ private Long startInterval;
+
public Long getInterval() {
return interval;
}
@@ -63,11 +69,19 @@ public Long getTimeout() {
return timeout;
}
+ /**
+ * Set interval in nanoseconds
+ * @return this {@link HealthCheck} instance
+ */
public HealthCheck withInterval(Long interval) {
this.interval = interval;
return this;
}
+ /**
+ * Set timeout in nanoseconds
+ * @return this {@link HealthCheck} instance
+ */
public HealthCheck withTimeout(Long timeout) {
this.timeout = timeout;
return this;
@@ -95,8 +109,25 @@ public Long getStartPeriod() {
return startPeriod;
}
+ /**
+ * Set startPeriod in nanoseconds
+ * @return this {@link HealthCheck} instance
+ */
public HealthCheck withStartPeriod(Long startPeriod) {
this.startPeriod = startPeriod;
return this;
}
+
+ public Long getStartInterval() {
+ return startInterval;
+ }
+
+ /**
+ * Set startInterval in nanoseconds
+ * @return this {@link HealthCheck} instance
+ */
+ public HealthCheck withStartInterval(Long startInterval) {
+ this.startInterval = startInterval;
+ return this;
+ }
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/HostConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/HostConfig.java
index 0151076fd..603bc6347 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/HostConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/HostConfig.java
@@ -19,7 +19,7 @@
*/
@EqualsAndHashCode
@ToString
-public class HostConfig implements Serializable {
+public class HostConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
private static final List PREDEFINED_NETWORKS = Arrays.asList("bridge", "host", "none");
@@ -73,6 +73,9 @@ public static HostConfig newHostConfig() {
@JsonProperty("NanoCpus")
private Long nanoCPUs;
+ @JsonProperty("Annotations")
+ private Map annotations;
+
@JsonProperty("CapAdd")
private Capability[] capAdd;
@@ -292,6 +295,9 @@ public static HostConfig newHostConfig() {
@JsonProperty("ConsoleSize")
private List consoleSize;
+ @JsonProperty("CgroupnsMode")
+ private String cgroupnsMode;
+
@JsonIgnore
public Bind[] getBinds() {
return (binds == null) ? new Bind[0] : binds.getBinds();
@@ -301,6 +307,11 @@ public Integer getBlkioWeight() {
return blkioWeight;
}
+ @CheckForNull
+ public Map getAnnotations() {
+ return annotations;
+ }
+
public Capability[] getCapAdd() {
return capAdd;
}
@@ -633,6 +644,11 @@ public HostConfig withBlkioWeightDevice(List blkioWeightDevic
return this;
}
+ public HostConfig withAnnotations(Map annotations) {
+ this.annotations = annotations;
+ return this;
+ }
+
/**
* @see #capAdd
*/
@@ -845,6 +861,7 @@ public HostConfig withMemorySwappiness(Long memorySwappiness) {
*
'host': use the host network stack inside the container. Note: the host mode gives the container full access to local system
* services such as D-bus and is therefore considered insecure.
*
+ * Any other value is interpreted as a custom network's name for this container to connect to.
*/
public HostConfig withNetworkMode(String networkMode) {
this.networkMode = networkMode;
@@ -1193,6 +1210,16 @@ public HostConfig withUsernsMode(String usernsMode) {
return this;
}
+ @CheckForNull
+ public String getCgroupnsMode() {
+ return cgroupnsMode;
+ }
+
+ public HostConfig withCgroupnsMode(String cgroupnsMode) {
+ this.cgroupnsMode = cgroupnsMode;
+ return this;
+ }
+
@CheckForNull
public Map getSysctls() {
return sysctls;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Identifier.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Identifier.java
index c214a8b16..a690548b4 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Identifier.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Identifier.java
@@ -11,7 +11,7 @@
*/
@EqualsAndHashCode
@ToString
-public class Identifier implements Serializable {
+public class Identifier extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
public final Repository repository;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Image.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Image.java
index 697cf13f2..732dcfe4f 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Image.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Image.java
@@ -15,7 +15,7 @@
*/
@EqualsAndHashCode
@ToString
-public class Image implements Serializable {
+public class Image extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Created")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ImageHistory.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ImageHistory.java
new file mode 100644
index 000000000..fb8f5d95c
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ImageHistory.java
@@ -0,0 +1,97 @@
+package com.github.dockerjava.api.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import javax.annotation.CheckForNull;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Represents an individual image layer information in response to the ImageHistory operation.
+ */
+@EqualsAndHashCode
+@ToString
+public class ImageHistory extends DockerObject implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @JsonProperty("Id")
+ private String id;
+
+ @JsonProperty("Created")
+ private Long created;
+
+ @JsonProperty("CreatedBy")
+ private String createdBy;
+
+ @JsonProperty("Tags")
+ private List tags;
+
+ @JsonProperty("Size")
+ private Long size;
+
+ @JsonProperty("Comment")
+ private String comment;
+
+ @CheckForNull
+ public String getId() {
+ return id;
+ }
+
+ public ImageHistory withId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ @CheckForNull
+ public Long getCreated() {
+ return created;
+ }
+
+ public ImageHistory withCreated(Long created) {
+ this.created = created;
+ return this;
+ }
+
+ @CheckForNull
+ public String getCreatedBy() {
+ return createdBy;
+ }
+
+ public ImageHistory withCreatedBy(String createdBy) {
+ this.createdBy = createdBy;
+ return this;
+ }
+
+ @CheckForNull
+ public List getTags() {
+ return tags;
+ }
+
+ public ImageHistory withTags(List tags) {
+ this.tags = tags;
+ return this;
+ }
+
+ @CheckForNull
+ public Long getSize() {
+ return size;
+ }
+
+ public ImageHistory withSize(Long size) {
+ this.size = size;
+ return this;
+ }
+
+ @CheckForNull
+ public String getComment() {
+ return comment;
+ }
+
+ public ImageHistory withComment(String comment) {
+ this.comment = comment;
+ return this;
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ImageOptions.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ImageOptions.java
new file mode 100644
index 000000000..bc8b89acb
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ImageOptions.java
@@ -0,0 +1,27 @@
+package com.github.dockerjava.api.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+/**
+ * @since {@link RemoteApiVersion#VERSION_1_48}
+ */
+@EqualsAndHashCode
+@ToString
+public class ImageOptions extends DockerObject implements Serializable {
+ private static final long serialVersionUID = 1L;
+ @JsonProperty("Subpath")
+ private String subpath;
+
+ public String getSubpath() {
+ return subpath;
+ }
+
+ public ImageOptions withSubpath(String subpath) {
+ this.subpath = subpath;
+ return this;
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java
index ffaee5794..67348b86b 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java
@@ -16,7 +16,7 @@
*/
@EqualsAndHashCode
@ToString
-public class Info implements Serializable {
+public class Info extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
/**
@@ -97,6 +97,12 @@ public class Info implements Serializable {
@JsonProperty("LoggingDriver")
private String loggingDriver;
+ @JsonProperty("CgroupDriver")
+ private String cGroupDriver;
+
+ @JsonProperty("CgroupVersion")
+ private String cGroupVersion;
+
/**
* @since {@link com.github.dockerjava.core.RemoteApiVersion#VERSION_1_20}
*/
@@ -235,6 +241,9 @@ public class Info implements Serializable {
@JsonProperty("SecurityOptions")
private List securityOptions;
+ @JsonProperty("Runtimes")
+ private Map runtimes;
+
/**
* @see #architecture
*/
@@ -483,6 +492,22 @@ public String getLoggingDriver() {
return loggingDriver;
}
+ /**
+ * @see #cGroupDriver
+ */
+ @CheckForNull
+ public String getCGroupDriver() {
+ return cGroupDriver;
+ }
+
+ /**
+ * @see #cGroupVersion
+ */
+ @CheckForNull
+ public String getCGroupVersion() {
+ return cGroupVersion;
+ }
+
/**
* @see #loggingDriver
*/
@@ -491,6 +516,22 @@ public Info withLoggingDriver(String loggingDriver) {
return this;
}
+ /**
+ * @see #cGroupDriver
+ */
+ public Info withCGroupDriver(String cGroupDriver) {
+ this.cGroupDriver = cGroupDriver;
+ return this;
+ }
+
+ /**
+ * @see #cGroupVersion
+ */
+ public Info withCGroupVersion(String cGroupVersion) {
+ this.cGroupVersion = cGroupVersion;
+ return this;
+ }
+
/**
* @see #experimentalBuild
*/
@@ -1067,7 +1108,33 @@ public Info withIsolation(String isolation) {
return this;
}
+ /**
+ * @see #securityOptions
+ */
public List getSecurityOptions() {
return securityOptions;
}
+
+ /**
+ * @see #securityOptions
+ */
+ public Info withSecurityOptions(List securityOptions) {
+ this.securityOptions = securityOptions;
+ return this;
+ }
+
+ /**
+ * @see #runtimes
+ */
+ public Map getRuntimes() {
+ return runtimes;
+ }
+
+ /**
+ * @see #runtimes
+ */
+ public Info withRuntimes(Map runtimes) {
+ this.runtimes = runtimes;
+ return this;
+ }
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/InfoRegistryConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/InfoRegistryConfig.java
index 113a4af0a..80bf803d8 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/InfoRegistryConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/InfoRegistryConfig.java
@@ -14,7 +14,7 @@
*/
@EqualsAndHashCode
@ToString
-public final class InfoRegistryConfig implements Serializable {
+public final class InfoRegistryConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("IndexConfigs")
@@ -82,7 +82,7 @@ public InfoRegistryConfig withMirrors(Object mirrors) {
*/
@EqualsAndHashCode
@ToString
- public static final class IndexConfig implements Serializable {
+ public static final class IndexConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Mirrors")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Link.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Link.java
index 20b2c1b26..4b9b27acf 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Link.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Link.java
@@ -1,6 +1,7 @@
package com.github.dockerjava.api.model;
import lombok.EqualsAndHashCode;
+import lombok.ToString;
import java.io.Serializable;
@@ -10,7 +11,8 @@
* variables in the target container as well as creating a network bridge between both containers.
*/
@EqualsAndHashCode
-public class Link implements Serializable {
+@ToString
+public class Link extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
private final String name;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/LoadResponseItem.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/LoadResponseItem.java
new file mode 100644
index 000000000..bf90c69bf
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/LoadResponseItem.java
@@ -0,0 +1,33 @@
+package com.github.dockerjava.api.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+public class LoadResponseItem extends ResponseItem {
+
+ private static final long serialVersionUID = 1L;
+
+ private static final String IMPORT_SUCCESS = "Loaded image:";
+
+ /**
+ * Returns whether the stream field indicates a successful build operation
+ */
+ @JsonIgnore
+ public boolean isBuildSuccessIndicated() {
+ if (isErrorIndicated() || getStream() == null) {
+ return false;
+ }
+
+ return getStream().contains(IMPORT_SUCCESS);
+ }
+
+ @JsonIgnore
+ public String getMessage() {
+ if (!isBuildSuccessIndicated()) {
+ return null;
+ } else if (getStream().contains(IMPORT_SUCCESS)) {
+ return getStream();
+ }
+
+ return null;
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/LogConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/LogConfig.java
index 2dd7c54fa..218cdd827 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/LogConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/LogConfig.java
@@ -22,7 +22,7 @@
*/
@EqualsAndHashCode
@ToString
-public class LogConfig implements Serializable {
+public class LogConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Type")
@@ -76,7 +76,8 @@ public enum LoggingType {
AWSLOGS("awslogs"),
DB("db"), // Synology specific driver
SPLUNK("splunk"),
- GCPLOGS("gcplogs");
+ GCPLOGS("gcplogs"),
+ LOKI("loki");
private String type;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/LxcConf.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/LxcConf.java
index ddf1bbae0..36fc1a9cb 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/LxcConf.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/LxcConf.java
@@ -1,10 +1,14 @@
package com.github.dockerjava.api.model;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
import java.io.Serializable;
-public class LxcConf implements Serializable {
+@EqualsAndHashCode
+@ToString
+public class LxcConf extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Key")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/MemoryStatsConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/MemoryStatsConfig.java
index 12e6abccf..b57f05135 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/MemoryStatsConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/MemoryStatsConfig.java
@@ -1,6 +1,8 @@
package com.github.dockerjava.api.model;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
import javax.annotation.CheckForNull;
import java.io.Serializable;
@@ -10,7 +12,9 @@
*
* @author Yuting Liu
*/
-public class MemoryStatsConfig implements Serializable {
+@EqualsAndHashCode
+@ToString
+public class MemoryStatsConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("stats")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Mount.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Mount.java
index 7254ccb19..3f17343c3 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Mount.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Mount.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class Mount implements Serializable {
+public class Mount extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
/**
@@ -57,6 +57,12 @@ public class Mount implements Serializable {
@JsonProperty("TmpfsOptions")
private TmpfsOptions tmpfsOptions;
+ /**
+ * @since 1.48
+ */
+ @JsonProperty("ImageOptions")
+ private ImageOptions imageOptions;
+
/**
* @see #type
*/
@@ -177,4 +183,23 @@ public Mount withTmpfsOptions(TmpfsOptions tmpfsOptions) {
}
return this;
}
+
+ /**
+ * @see #imageOptions
+ */
+ @CheckForNull
+ public ImageOptions getImageOptions() {
+ return imageOptions;
+ }
+
+ /**
+ * @see #imageOptions
+ */
+ public Mount withImageOptions(ImageOptions imageOptions) {
+ this.imageOptions = imageOptions;
+ if (imageOptions != null) {
+ this.type = MountType.IMAGE;
+ }
+ return this;
+ }
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/MountType.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/MountType.java
index 62557df47..b522c9612 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/MountType.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/MountType.java
@@ -14,6 +14,14 @@ public enum MountType {
//@since 1.29
@JsonProperty("tmpfs")
- TMPFS
+ TMPFS,
+
+ //@since 1.40
+ @JsonProperty("npipe")
+ NPIPE,
+
+ //@since 1.48
+ @JsonProperty("image")
+ IMAGE,
}
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 e06f69d01..198c75543 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
@@ -5,6 +5,7 @@
/**
* @since {@link RemoteApiVersion#VERSION_1_24}
*/
+@Deprecated
public class NamedResourceSpec extends GenericResource implements Serializable {
private static final long serialVersionUID = 1L;
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Network.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Network.java
index 852746924..7e9d3b2fd 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Network.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Network.java
@@ -7,17 +7,21 @@
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Date;
import java.util.List;
import java.util.Map;
@EqualsAndHashCode
@ToString
-public class Network implements Serializable {
+public class Network extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Id")
private String id;
+ @JsonProperty("Created")
+ private Date created;
+
@JsonProperty("Name")
private String name;
@@ -52,6 +56,10 @@ public String getId() {
return id;
}
+ public Date getCreated() {
+ return created;
+ }
+
public String getName() {
return name;
}
@@ -94,9 +102,15 @@ public Map getLabels() {
@EqualsAndHashCode
@ToString
- public static class ContainerNetworkConfig implements Serializable {
+ public static class ContainerNetworkConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
+ /**
+ * @since {@link RemoteApiVersion#VERSION_1_22}
+ */
+ @JsonProperty("Name")
+ private String name;
+
@JsonProperty("EndpointID")
private String endpointId;
@@ -109,6 +123,10 @@ public static class ContainerNetworkConfig implements Serializable {
@JsonProperty("IPv6Address")
private String ipv6Address;
+ public String getName() {
+ return name;
+ }
+
public String getEndpointId() {
return endpointId;
}
@@ -128,7 +146,7 @@ public String getIpv6Address() {
@EqualsAndHashCode
@ToString
- public static class Ipam implements Serializable {
+ public static class Ipam extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Driver")
@@ -167,7 +185,9 @@ public Ipam withDriver(String driver) {
return this;
}
- public static class Config implements Serializable {
+ @EqualsAndHashCode
+ @ToString
+ public static class Config extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Subnet")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/NetworkAttachmentConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/NetworkAttachmentConfig.java
index 2afa87b73..db0eb1ded 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/NetworkAttachmentConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/NetworkAttachmentConfig.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class NetworkAttachmentConfig implements Serializable {
+public class NetworkAttachmentConfig extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/NetworkSettings.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/NetworkSettings.java
index 3ef92ac64..e28d8f52c 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/NetworkSettings.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/NetworkSettings.java
@@ -17,7 +17,7 @@
*/
@EqualsAndHashCode
@ToString
-public class NetworkSettings implements Serializable {
+public class NetworkSettings extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Bridge")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Node.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Node.java
index 2b12ab48f..2bb832e48 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Node.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Node.java
@@ -11,7 +11,7 @@
*/
@EqualsAndHashCode
@ToString
-public class Node implements Serializable {
+public class Node extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Name")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ObjectVersion.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ObjectVersion.java
index 0b0259049..5fa361977 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ObjectVersion.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ObjectVersion.java
@@ -1,6 +1,7 @@
package com.github.dockerjava.api.model;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
import java.io.Serializable;
@@ -13,7 +14,8 @@
* same base version, only one of the requests can succeed. As a result, two separate update requests that
* happen at the same time will not unintentionally overwrite each other.
*/
-public class ObjectVersion implements Serializable {
+@EqualsAndHashCode
+public class ObjectVersion extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Index")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PeerNode.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PeerNode.java
index e20af63b9..8937b9593 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PeerNode.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PeerNode.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class PeerNode implements Serializable {
+public class PeerNode extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PidsStatsConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PidsStatsConfig.java
index c3d13596f..df953e140 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PidsStatsConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PidsStatsConfig.java
@@ -1,6 +1,8 @@
package com.github.dockerjava.api.model;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
import javax.annotation.CheckForNull;
import java.io.Serializable;
@@ -10,7 +12,9 @@
*
* @author Yuting Liu
*/
-public class PidsStatsConfig implements Serializable {
+@EqualsAndHashCode
+@ToString
+public class PidsStatsConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("current")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PortBinding.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PortBinding.java
index 47655079b..2b7901e92 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PortBinding.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PortBinding.java
@@ -17,7 +17,7 @@
*/
@EqualsAndHashCode
@ToString
-public class PortBinding implements Serializable {
+public class PortBinding extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
private final Binding binding;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PortConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PortConfig.java
index 57f2f61b0..cec07d9cd 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PortConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PortConfig.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class PortConfig implements Serializable {
+public class PortConfig extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Ports.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Ports.java
index 897261a09..0411ca218 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Ports.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Ports.java
@@ -21,7 +21,6 @@
* @see HostConfig#getPortBindings()
* @see NetworkSettings#getPorts()
*/
-@SuppressWarnings(value = "checkstyle:equalshashcode")
public class Ports implements Serializable {
private static final long serialVersionUID = 1L;
@@ -107,7 +106,7 @@ public Map getBindings() {
* @see ExposedPort
*/
@EqualsAndHashCode
- public static class Binding implements Serializable {
+ public static class Binding extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PropagationMode.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PropagationMode.java
index 9be7d6e43..3e1db4438 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PropagationMode.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PropagationMode.java
@@ -13,11 +13,20 @@ public enum PropagationMode {
/** shared */
SHARED("shared"),
+ /** rshared */
+ RSHARED("rshared"),
+
/** slave */
SLAVE("slave"),
+ /** rslave */
+ RSLAVE("rslave"),
+
/** private */
- PRIVATE("private");
+ PRIVATE("private"),
+
+ /** rprivate */
+ RPRIVATE("rprivate");
/**
* The default {@link PropagationMode}: {@link #DEFAULT}
@@ -39,10 +48,16 @@ public static PropagationMode fromString(String v) {
switch (v) {
case "shared":
return SHARED;
+ case "rshared":
+ return RSHARED;
case "slave":
return SLAVE;
+ case "rslave":
+ return RSLAVE;
case "private":
return PRIVATE;
+ case "rprivate":
+ return RPRIVATE;
default:
return DEFAULT;
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PruneResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PruneResponse.java
index 3efaf47c1..2ccdf72c4 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PruneResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PruneResponse.java
@@ -11,7 +11,7 @@
*/
@EqualsAndHashCode
@ToString
-public class PruneResponse implements Serializable {
+public class PruneResponse extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("SpaceReclaimed")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PullResponseItem.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PullResponseItem.java
index 66a559934..1d3f33c8e 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PullResponseItem.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PullResponseItem.java
@@ -19,6 +19,8 @@ public class PullResponseItem extends ResponseItem {
private static final String DOWNLOADED_SWARM = ": downloaded";
+ private static final String ALREADY_EXISTS = "Already exists";
+
/**
* Returns whether the status indicates a successful pull operation
*
@@ -34,7 +36,8 @@ public boolean isPullSuccessIndicated() {
getStatus().contains(IMAGE_UP_TO_DATE) ||
getStatus().contains(DOWNLOADED_NEWER_IMAGE) ||
getStatus().contains(LEGACY_REGISTRY) ||
- getStatus().contains(DOWNLOADED_SWARM)
+ getStatus().contains(DOWNLOADED_SWARM) ||
+ getStatus().contains(ALREADY_EXISTS)
);
}
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Repository.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Repository.java
index 750eb6f4d..5dd636981 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Repository.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Repository.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class Repository implements Serializable {
+public class Repository extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
public final String name;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResourceRequirements.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResourceRequirements.java
index 463b22011..54e3001b8 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResourceRequirements.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResourceRequirements.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ResourceRequirements implements Serializable {
+public class ResourceRequirements extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
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 86ab24b52..00f2de7e1 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
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ResourceSpecs implements Serializable {
+public class ResourceSpecs extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResourceVersion.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResourceVersion.java
index 4838b78d7..babee6a50 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResourceVersion.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResourceVersion.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ResourceVersion implements Serializable {
+public class ResourceVersion extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResponseItem.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResponseItem.java
index d0f797a71..cd90b78f3 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResponseItem.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ResponseItem.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ResponseItem implements Serializable {
+public class ResponseItem extends DockerObject implements Serializable {
private static final long serialVersionUID = -5187169652557467828L;
@JsonProperty("stream")
@@ -118,7 +118,7 @@ public boolean isErrorIndicated() {
@EqualsAndHashCode
@ToString
- public static class ProgressDetail implements Serializable {
+ public static class ProgressDetail extends DockerObject implements Serializable {
private static final long serialVersionUID = -1954994695645715264L;
@JsonProperty("current")
@@ -148,7 +148,7 @@ public Long getStart() {
@EqualsAndHashCode
@ToString
- public static class ErrorDetail implements Serializable {
+ public static class ErrorDetail extends DockerObject implements Serializable {
private static final long serialVersionUID = -9136704865403084083L;
@JsonProperty("code")
@@ -170,7 +170,7 @@ public String getMessage() {
@EqualsAndHashCode
@ToString
- public static class AuxDetail implements Serializable {
+ public static class AuxDetail extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Size")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/RestartPolicy.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/RestartPolicy.java
index 114d9f0d8..53453915c 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/RestartPolicy.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/RestartPolicy.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.EqualsAndHashCode;
+import lombok.ToString;
import java.io.Serializable;
@@ -27,7 +28,8 @@
*
*/
@EqualsAndHashCode
-public class RestartPolicy implements Serializable {
+@ToString
+public class RestartPolicy extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("MaximumRetryCount")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/RuntimeInfo.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/RuntimeInfo.java
new file mode 100644
index 000000000..c64511cda
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/RuntimeInfo.java
@@ -0,0 +1,23 @@
+package com.github.dockerjava.api.model;
+
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+@EqualsAndHashCode
+@ToString
+public class RuntimeInfo extends DockerObject implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ private String path;
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SearchItem.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SearchItem.java
index a77f38053..23a5c3bbf 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SearchItem.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SearchItem.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SearchItem implements Serializable {
+public class SearchItem extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("star_count")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Secret.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Secret.java
index 20680f5fb..bfbd7caf4 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Secret.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Secret.java
@@ -1,6 +1,8 @@
package com.github.dockerjava.api.model;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
import java.io.Serializable;
import java.util.Date;
@@ -10,7 +12,9 @@
*
* @since {@link RemoteApiVersion#VERSION_1_25}
*/
-public class Secret implements Serializable {
+@EqualsAndHashCode
+@ToString
+public class Secret extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SecretSpec.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SecretSpec.java
index 572c0c90e..6b10239b9 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SecretSpec.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SecretSpec.java
@@ -14,7 +14,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SecretSpec implements Serializable {
+public class SecretSpec extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Service.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Service.java
index 63b3b4757..fd76be259 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Service.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Service.java
@@ -15,7 +15,7 @@
*/
@EqualsAndHashCode
@ToString
-public class Service implements Serializable {
+public class Service extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceGlobalModeOptions.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceGlobalModeOptions.java
index ccd9b4bea..37feec292 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceGlobalModeOptions.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceGlobalModeOptions.java
@@ -11,7 +11,7 @@
@EqualsAndHashCode
@ToString
@SuppressWarnings("checkstyle:hideutilityclassconstructor")
-public class ServiceGlobalModeOptions implements Serializable {
+public class ServiceGlobalModeOptions extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
// Intentionally left blank, there are no options for this mode
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceModeConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceModeConfig.java
index c179271bf..82d1b3b20 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceModeConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceModeConfig.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ServiceModeConfig implements Serializable {
+public class ServiceModeConfig extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServicePlacement.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServicePlacement.java
index 777be8668..4c0953508 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServicePlacement.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServicePlacement.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ServicePlacement implements Serializable {
+public class ServicePlacement extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceReplicatedModeOptions.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceReplicatedModeOptions.java
index c28a09370..eea2a5211 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceReplicatedModeOptions.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceReplicatedModeOptions.java
@@ -11,7 +11,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ServiceReplicatedModeOptions implements Serializable {
+public class ServiceReplicatedModeOptions extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceRestartPolicy.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceRestartPolicy.java
index 8b55315e0..11b54f666 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceRestartPolicy.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceRestartPolicy.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ServiceRestartPolicy implements Serializable {
+public class ServiceRestartPolicy extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceSpec.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceSpec.java
index b5ca4a5dd..a1fbec916 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceSpec.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceSpec.java
@@ -14,7 +14,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ServiceSpec implements Serializable {
+public class ServiceSpec extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceUpdateState.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceUpdateState.java
index e748bbd4a..d22f8999e 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceUpdateState.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceUpdateState.java
@@ -6,6 +6,9 @@
* @since {@link RemoteApiVersion#VERSION_1_24}
*/
public enum ServiceUpdateState {
+ @JsonProperty("unknown")
+ UNKNOWN,
+
@JsonProperty("updating")
UPDATING,
@@ -15,6 +18,12 @@ public enum ServiceUpdateState {
@JsonProperty("completed")
COMPLETED,
+ @JsonProperty("rollback_started")
+ ROLLBACK_STARTED,
+
+ @JsonProperty("rollback_paused")
+ ROLLBACK_PAUSED,
+
@JsonProperty("rollback_completed")
ROLLBACK_COMPLETED
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceUpdateStatus.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceUpdateStatus.java
index ee457d9f8..18cb54603 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceUpdateStatus.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceUpdateStatus.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class ServiceUpdateStatus implements Serializable {
+public class ServiceUpdateStatus extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/StatisticNetworksConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/StatisticNetworksConfig.java
index d22b6a787..2ba57d76b 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/StatisticNetworksConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/StatisticNetworksConfig.java
@@ -14,7 +14,7 @@
*/
@EqualsAndHashCode
@ToString
-public class StatisticNetworksConfig implements Serializable {
+public class StatisticNetworksConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("rx_bytes")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Statistics.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Statistics.java
index f28ea983a..3800363eb 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Statistics.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Statistics.java
@@ -14,7 +14,7 @@
*/
@EqualsAndHashCode
@ToString
-public class Statistics implements Serializable {
+public class Statistics extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("read")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/StatsConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/StatsConfig.java
index 19b95a7ff..8afbc34d9 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/StatsConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/StatsConfig.java
@@ -1,11 +1,15 @@
package com.github.dockerjava.api.model;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
import javax.annotation.CheckForNull;
import java.io.Serializable;
-public class StatsConfig implements Serializable {
+@EqualsAndHashCode
+@ToString
+public class StatsConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("active_anon")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmCAConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmCAConfig.java
index 6f632aa1b..8ebc97ffd 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmCAConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmCAConfig.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmCAConfig implements Serializable {
+public class SwarmCAConfig extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmDispatcherConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmDispatcherConfig.java
index bc8fd4305..2a45b84cd 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmDispatcherConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmDispatcherConfig.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmDispatcherConfig implements Serializable {
+public class SwarmDispatcherConfig extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmInfo.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmInfo.java
index 3fd8e8704..faed0fcf3 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmInfo.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmInfo.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmInfo implements Serializable {
+public class SwarmInfo extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmJoinTokens.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmJoinTokens.java
index 06b1f3a78..9e5f63aea 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmJoinTokens.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmJoinTokens.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmJoinTokens implements Serializable {
+public class SwarmJoinTokens extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNode.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNode.java
index cdb17c20d..9b5aff96c 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNode.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNode.java
@@ -16,7 +16,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmNode implements Serializable {
+public class SwarmNode extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeDescription.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeDescription.java
index d0c35c873..f929327d1 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeDescription.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeDescription.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmNodeDescription implements Serializable {
+public class SwarmNodeDescription extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeEngineDescription.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeEngineDescription.java
index 41c369d09..a2f38531e 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeEngineDescription.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeEngineDescription.java
@@ -14,7 +14,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmNodeEngineDescription implements Serializable {
+public class SwarmNodeEngineDescription extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeManagerStatus.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeManagerStatus.java
index 07a0e448b..0307d18e7 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeManagerStatus.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeManagerStatus.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmNodeManagerStatus implements Serializable {
+public class SwarmNodeManagerStatus extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodePlatform.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodePlatform.java
index 3b3747d5f..9688f10b0 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodePlatform.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodePlatform.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmNodePlatform implements Serializable {
+public class SwarmNodePlatform extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodePluginDescription.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodePluginDescription.java
index d05bfb9c9..aa051aaa3 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodePluginDescription.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodePluginDescription.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmNodePluginDescription implements Serializable {
+public class SwarmNodePluginDescription extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeResources.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeResources.java
index 05f6d0203..c9586e921 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeResources.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeResources.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmNodeResources implements Serializable {
+public class SwarmNodeResources extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeSpec.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeSpec.java
index 5162bdff7..241c2be58 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeSpec.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeSpec.java
@@ -14,7 +14,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmNodeSpec implements Serializable {
+public class SwarmNodeSpec extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeStatus.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeStatus.java
index 804efe2f1..34f40e80b 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeStatus.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeStatus.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmNodeStatus implements Serializable {
+public class SwarmNodeStatus extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeVersion.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeVersion.java
index 35cbba491..4182c120e 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeVersion.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmNodeVersion.java
@@ -14,7 +14,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmNodeVersion implements Serializable {
+public class SwarmNodeVersion extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmOrchestration.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmOrchestration.java
index 60cc1f32d..0479a3a6c 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmOrchestration.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmOrchestration.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmOrchestration implements Serializable {
+public class SwarmOrchestration extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmRaftConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmRaftConfig.java
index 16553defc..69138ed2d 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmRaftConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmRaftConfig.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmRaftConfig implements Serializable {
+public class SwarmRaftConfig extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmSpec.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmSpec.java
index bbc8f6db6..ee041a2a7 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmSpec.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmSpec.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmSpec implements Serializable {
+public class SwarmSpec extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmVersion.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmVersion.java
index 2d7fc3e43..161c0d7e5 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmVersion.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/SwarmVersion.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class SwarmVersion implements Serializable {
+public class SwarmVersion extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Task.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Task.java
index 46585eed8..0f1e77a2a 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Task.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Task.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class Task implements Serializable {
+public class Task extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("ID")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskDefaults.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskDefaults.java
index c385bd1b9..ae03c2136 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskDefaults.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskDefaults.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class TaskDefaults implements Serializable {
+public class TaskDefaults extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskSpec.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskSpec.java
index bef5e579d..c60ca3b8d 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskSpec.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskSpec.java
@@ -13,7 +13,7 @@
*/
@EqualsAndHashCode
@ToString
-public class TaskSpec implements Serializable {
+public class TaskSpec extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskStatus.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskStatus.java
index a335350e4..9ae2a72ad 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskStatus.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskStatus.java
@@ -11,7 +11,7 @@
*/
@EqualsAndHashCode
@ToString
-public class TaskStatus implements Serializable {
+public class TaskStatus extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Timestamp")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskStatusContainerStatus.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskStatusContainerStatus.java
index 0349e301f..1f6f61d1d 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskStatusContainerStatus.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/TaskStatusContainerStatus.java
@@ -11,7 +11,7 @@
*/
@EqualsAndHashCode
@ToString
-public class TaskStatusContainerStatus implements Serializable {
+public class TaskStatusContainerStatus extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("ContainerID")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ThrottlingDataConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ThrottlingDataConfig.java
index ce29b7057..e908ce8de 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ThrottlingDataConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ThrottlingDataConfig.java
@@ -1,6 +1,8 @@
package com.github.dockerjava.api.model;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
import javax.annotation.CheckForNull;
import java.io.Serializable;
@@ -10,7 +12,9 @@
*
* @author Yuting Liu
*/
-public class ThrottlingDataConfig implements Serializable {
+@EqualsAndHashCode
+@ToString
+public class ThrottlingDataConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("periods")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/TmpfsOptions.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/TmpfsOptions.java
index b2dc02a30..e64adaac2 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/TmpfsOptions.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/TmpfsOptions.java
@@ -11,7 +11,7 @@
*/
@EqualsAndHashCode
@ToString
-public class TmpfsOptions implements Serializable {
+public class TmpfsOptions extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("SizeBytes")
//The size for the tmpfs mount in bytes.
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Ulimit.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Ulimit.java
index ab21cb36f..24dbd764e 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Ulimit.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Ulimit.java
@@ -17,7 +17,7 @@
@JsonPropertyOrder({"Name", "Soft", "Hard"})
@EqualsAndHashCode
@ToString
-public class Ulimit implements Serializable {
+public class Ulimit extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("Name")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/UpdateConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/UpdateConfig.java
index ee5d4a740..a70e137a9 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/UpdateConfig.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/UpdateConfig.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class UpdateConfig implements Serializable {
+public class UpdateConfig extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Version.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Version.java
index 2ac89e88b..1a05726fc 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Version.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Version.java
@@ -17,7 +17,7 @@
*/
@EqualsAndHashCode
@ToString
-public class Version implements Serializable {
+public class Version extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("ApiVersion")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/VersionComponent.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/VersionComponent.java
index bee6774ba..9a9fb9071 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/VersionComponent.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/VersionComponent.java
@@ -16,7 +16,7 @@
*/
@EqualsAndHashCode
@ToString
-public class VersionComponent implements Serializable {
+public class VersionComponent extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
@JsonProperty("Details")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/VersionPlatform.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/VersionPlatform.java
index 96b389ef6..72d29a44b 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/VersionPlatform.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/VersionPlatform.java
@@ -15,7 +15,7 @@
*/
@EqualsAndHashCode
@ToString
-public class VersionPlatform implements Serializable {
+public class VersionPlatform extends DockerObject implements Serializable {
public static final long serialVersionUID = 1L;
@JsonProperty("Name")
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumeBind.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumeBind.java
index f78fc587e..93c106070 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumeBind.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumeBind.java
@@ -1,8 +1,11 @@
package com.github.dockerjava.api.model;
+import lombok.EqualsAndHashCode;
+
import java.io.Serializable;
-public class VolumeBind implements Serializable {
+@EqualsAndHashCode
+public class VolumeBind extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
private final String hostPath;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumeBinds.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumeBinds.java
index 6de15ee38..1fbc0ca12 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumeBinds.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumeBinds.java
@@ -7,7 +7,9 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.ToString;
+@ToString
public class VolumeBinds implements Serializable {
private static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumeOptions.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumeOptions.java
index f0d98fc25..740ffcd51 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumeOptions.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumeOptions.java
@@ -12,7 +12,7 @@
*/
@EqualsAndHashCode
@ToString
-public class VolumeOptions implements Serializable {
+public class VolumeOptions extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Volumes.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Volumes.java
index 2badd1ca8..825b8481a 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Volumes.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Volumes.java
@@ -8,7 +8,9 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.ToString;
+@ToString
public class Volumes implements Serializable {
private static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumesRW.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumesRW.java
index 8afd3e230..93e95b68c 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumesRW.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/VolumesRW.java
@@ -7,8 +7,10 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.ToString;
// This is not going to be serialized
+@ToString
public class VolumesRW implements Serializable {
private static final long serialVersionUID = 1L;
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/WaitContainerCondition.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/WaitContainerCondition.java
new file mode 100644
index 000000000..8af0efa35
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/WaitContainerCondition.java
@@ -0,0 +1,26 @@
+package com.github.dockerjava.api.model;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Docker Engine API wait conditions (added in v1.30).
+ *
+ * @since {@link RemoteApiVersion#VERSION_1_30}
+ */
+public enum WaitContainerCondition {
+ NOT_RUNNING("not-running"),
+ NEXT_EXIT("next-exit"),
+ REMOVED("removed");
+
+ @Nonnull
+ private final String value;
+
+ WaitContainerCondition(@Nonnull String value) {
+ this.value = value;
+ }
+
+ @Nonnull
+ public String getValue() {
+ return value;
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/WaitResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/WaitResponse.java
index d80343057..eed22870f 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/WaitResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/WaitResponse.java
@@ -1,13 +1,17 @@
package com.github.dockerjava.api.model;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
import java.io.Serializable;
/**
* Represents a wait container command response
*/
-public class WaitResponse implements Serializable {
+@EqualsAndHashCode
+@ToString
+public class WaitResponse extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("StatusCode")
diff --git a/docker-java-api/src/test/java/com/github/dockerjava/api/model/DockerObjectArchTest.java b/docker-java-api/src/test/java/com/github/dockerjava/api/model/DockerObjectArchTest.java
new file mode 100644
index 000000000..2df7051e9
--- /dev/null
+++ b/docker-java-api/src/test/java/com/github/dockerjava/api/model/DockerObjectArchTest.java
@@ -0,0 +1,46 @@
+package com.github.dockerjava.api.model;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.github.dockerjava.api.async.ResultCallback;
+import com.github.dockerjava.api.command.CreateConfigResponse;
+import com.github.dockerjava.api.command.DockerCmdExecFactory;
+import com.tngtech.archunit.base.DescribedPredicate;
+import com.tngtech.archunit.core.domain.JavaClass;
+import com.tngtech.archunit.core.domain.JavaClasses;
+import com.tngtech.archunit.core.importer.ClassFileImporter;
+import com.tngtech.archunit.core.importer.ImportOption;
+import org.junit.jupiter.api.Test;
+
+import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes;
+
+class DockerObjectArchTest {
+
+ static JavaClasses CLASSES = new ClassFileImporter()
+ .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS)
+ .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS)
+ .importPackagesOf(
+ Container.class,
+ CreateConfigResponse.class
+ );
+
+ @Test
+ void modelClassMustExtendDockerObject() {
+ classes()
+ .that().areNotEnums()
+ .and().areNotInterfaces()
+ .and().areNotAnnotatedWith(Deprecated.class)
+ .and().doNotImplement(ResultCallback.class)
+ .and().doNotImplement(DockerCmdExecFactory.class)
+ .and().doNotBelongToAnyOf(DockerObjectAccessor.class)
+ .and(new DescribedPredicate("not @JsonCreator-based object") {
+ @Override
+ public boolean apply(JavaClass input) {
+ return input.getAllMethods().stream().noneMatch(method -> {
+ return method.isAnnotatedWith(JsonCreator.class);
+ });
+ }
+ })
+ .should().beAssignableTo(DockerObject.class)
+ .check(CLASSES);
+ }
+}
diff --git a/docker-java-bom/pom.xml b/docker-java-bom/pom.xml
new file mode 100644
index 000000000..7066b3a67
--- /dev/null
+++ b/docker-java-bom/pom.xml
@@ -0,0 +1,67 @@
+
+ 4.0.0
+
+
+ com.github.docker-java
+ docker-java-parent
+ 0-SNAPSHOT
+ ../pom.xml
+
+
+ docker-java-bom
+ pom
+
+ docker-java
+ https://github.com/docker-java/docker-java
+ Java API Client for Docker
+
+
+
+
+ ${project.groupId}
+ docker-java
+ ${project.version}
+
+
+ ${project.groupId}
+ docker-java-api
+ ${project.version}
+
+
+ ${project.groupId}
+ docker-java-core
+ ${project.version}
+
+
+ ${project.groupId}
+ docker-java-transport
+ ${project.version}
+
+
+ ${project.groupId}
+ docker-java-transport-httpclient5
+ ${project.version}
+
+
+ ${project.groupId}
+ docker-java-transport-jersey
+ ${project.version}
+
+
+ ${project.groupId}
+ docker-java-transport-netty
+ ${project.version}
+
+
+ ${project.groupId}
+ docker-java-transport-okhttp
+ ${project.version}
+
+
+ ${project.groupId}
+ docker-java-transport-zerodep
+ ${project.version}
+
+
+
+
diff --git a/docker-java-core/pom.xml b/docker-java-core/pom.xml
index ef24fed34..89c72c024 100644
--- a/docker-java-core/pom.xml
+++ b/docker-java-core/pom.xml
@@ -15,6 +15,10 @@
https://github.com/docker-java/docker-javaJava API Client for Docker
+
+ com.github.dockerjava.core
+
+
${project.groupId}
@@ -46,15 +50,15 @@
- commons-lang
- commons-lang
- ${commons-lang.version}
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}com.fasterxml.jackson.corejackson-databind
- ${jackson.version}
+ 2.20.1
@@ -65,7 +69,7 @@
org.bouncycastle
- bcpkix-jdk15on
+ bcpkix-jdk18on${bouncycastle.version}
@@ -95,6 +99,7 @@
88
+ true
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java b/docker-java-core/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java
index e31431741..9e1d71020 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java
@@ -1,14 +1,18 @@
package com.github.dockerjava.core;
+import java.util.Objects;
+
import com.github.dockerjava.api.command.AttachContainerCmd;
import com.github.dockerjava.api.command.AuthCmd;
import com.github.dockerjava.api.command.BuildImageCmd;
import com.github.dockerjava.api.command.CommitCmd;
import com.github.dockerjava.api.command.ConnectToNetworkCmd;
import com.github.dockerjava.api.command.ContainerDiffCmd;
+import com.github.dockerjava.api.command.ExportContainerCmd;
import com.github.dockerjava.api.command.CopyArchiveFromContainerCmd;
import com.github.dockerjava.api.command.CopyArchiveToContainerCmd;
import com.github.dockerjava.api.command.CopyFileFromContainerCmd;
+import com.github.dockerjava.api.command.CreateConfigCmd;
import com.github.dockerjava.api.command.CreateContainerCmd;
import com.github.dockerjava.api.command.CreateImageCmd;
import com.github.dockerjava.api.command.CreateNetworkCmd;
@@ -22,9 +26,11 @@
import com.github.dockerjava.api.command.ExecStartCmd;
import com.github.dockerjava.api.command.InfoCmd;
import com.github.dockerjava.api.command.InitializeSwarmCmd;
+import com.github.dockerjava.api.command.InspectConfigCmd;
import com.github.dockerjava.api.command.InspectContainerCmd;
import com.github.dockerjava.api.command.InspectExecCmd;
import com.github.dockerjava.api.command.InspectImageCmd;
+import com.github.dockerjava.api.command.ImageHistoryCmd;
import com.github.dockerjava.api.command.InspectNetworkCmd;
import com.github.dockerjava.api.command.InspectServiceCmd;
import com.github.dockerjava.api.command.InspectSwarmCmd;
@@ -33,6 +39,7 @@
import com.github.dockerjava.api.command.JoinSwarmCmd;
import com.github.dockerjava.api.command.KillContainerCmd;
import com.github.dockerjava.api.command.LeaveSwarmCmd;
+import com.github.dockerjava.api.command.ListConfigsCmd;
import com.github.dockerjava.api.command.ListContainersCmd;
import com.github.dockerjava.api.command.ListImagesCmd;
import com.github.dockerjava.api.command.ListNetworksCmd;
@@ -41,6 +48,7 @@
import com.github.dockerjava.api.command.ListSwarmNodesCmd;
import com.github.dockerjava.api.command.ListTasksCmd;
import com.github.dockerjava.api.command.ListVolumesCmd;
+import com.github.dockerjava.api.command.LoadImageAsyncCmd;
import com.github.dockerjava.api.command.LoadImageCmd;
import com.github.dockerjava.api.command.LogContainerCmd;
import com.github.dockerjava.api.command.LogSwarmObjectCmd;
@@ -49,6 +57,7 @@
import com.github.dockerjava.api.command.PruneCmd;
import com.github.dockerjava.api.command.PullImageCmd;
import com.github.dockerjava.api.command.PushImageCmd;
+import com.github.dockerjava.api.command.RemoveConfigCmd;
import com.github.dockerjava.api.command.RemoveContainerCmd;
import com.github.dockerjava.api.command.RemoveImageCmd;
import com.github.dockerjava.api.command.RemoveNetworkCmd;
@@ -81,9 +90,11 @@
import com.github.dockerjava.core.exec.CommitCmdExec;
import com.github.dockerjava.core.exec.ConnectToNetworkCmdExec;
import com.github.dockerjava.core.exec.ContainerDiffCmdExec;
+import com.github.dockerjava.core.exec.ExportContainerCmdExec;
import com.github.dockerjava.core.exec.CopyArchiveFromContainerCmdExec;
import com.github.dockerjava.core.exec.CopyArchiveToContainerCmdExec;
import com.github.dockerjava.core.exec.CopyFileFromContainerCmdExec;
+import com.github.dockerjava.core.exec.CreateConfigCmdExec;
import com.github.dockerjava.core.exec.CreateContainerCmdExec;
import com.github.dockerjava.core.exec.CreateImageCmdExec;
import com.github.dockerjava.core.exec.CreateNetworkCmdExec;
@@ -94,6 +105,10 @@
import com.github.dockerjava.core.exec.EventsCmdExec;
import com.github.dockerjava.core.exec.ExecCreateCmdExec;
import com.github.dockerjava.core.exec.ExecStartCmdExec;
+import com.github.dockerjava.core.exec.InspectConfigCmdExec;
+import com.github.dockerjava.core.exec.ListConfigsCmdExec;
+import com.github.dockerjava.core.exec.LoadImageAsyncCmdExec;
+import com.github.dockerjava.core.exec.RemoveConfigCmdExec;
import com.github.dockerjava.core.exec.ResizeContainerCmdExec;
import com.github.dockerjava.core.exec.ResizeExecCmdExec;
import com.github.dockerjava.core.exec.InfoCmdExec;
@@ -101,6 +116,7 @@
import com.github.dockerjava.core.exec.InspectContainerCmdExec;
import com.github.dockerjava.core.exec.InspectExecCmdExec;
import com.github.dockerjava.core.exec.InspectImageCmdExec;
+import com.github.dockerjava.core.exec.ImageHistoryCmdExec;
import com.github.dockerjava.core.exec.InspectNetworkCmdExec;
import com.github.dockerjava.core.exec.InspectServiceCmdExec;
import com.github.dockerjava.core.exec.InspectSwarmCmdExec;
@@ -150,8 +166,6 @@
import com.github.dockerjava.core.exec.VersionCmdExec;
import com.github.dockerjava.core.exec.WaitContainerCmdExec;
-import static com.google.common.base.Preconditions.checkNotNull;
-
public abstract class AbstractDockerCmdExecFactory implements DockerCmdExecFactory, DockerClientConfigAware {
private DockerClientConfig dockerClientConfig;
@@ -160,15 +174,14 @@ public abstract class AbstractDockerCmdExecFactory implements DockerCmdExecFacto
protected Integer readTimeout;
protected DockerClientConfig getDockerClientConfig() {
- checkNotNull(dockerClientConfig,
+ Objects.requireNonNull(dockerClientConfig,
"Factor not initialized, dockerClientConfig not set. You probably forgot to call init()!");
return dockerClientConfig;
}
@Override
public void init(DockerClientConfig dockerClientConfig) {
- checkNotNull(dockerClientConfig, "config was not specified");
- this.dockerClientConfig = dockerClientConfig;
+ this.dockerClientConfig = Objects.requireNonNull(dockerClientConfig, "config was not specified");
}
@Override
@@ -247,6 +260,11 @@ public LoadImageCmd.Exec createLoadImageCmdExec() {
return new LoadImageCmdExec(getBaseResource(), getDockerClientConfig());
}
+ @Override
+ public LoadImageAsyncCmd.Exec createLoadImageAsyncCmdExec() {
+ return new LoadImageAsyncCmdExec(getBaseResource(), getDockerClientConfig());
+ }
+
@Override
public SearchImagesCmd.Exec createSearchImagesCmdExec() {
return new SearchImagesCmdExec(getBaseResource(), getDockerClientConfig());
@@ -267,6 +285,11 @@ public InspectImageCmd.Exec createInspectImageCmdExec() {
return new InspectImageCmdExec(getBaseResource(), getDockerClientConfig());
}
+ @Override
+ public ImageHistoryCmd.Exec createImageHistoryCmdExec() {
+ return new ImageHistoryCmdExec(getBaseResource(), getDockerClientConfig());
+ }
+
@Override
public ListContainersCmd.Exec createListContainersCmdExec() {
return new ListContainersCmdExec(getBaseResource(), getDockerClientConfig());
@@ -347,6 +370,11 @@ public ContainerDiffCmd.Exec createContainerDiffCmdExec() {
return new ContainerDiffCmdExec(getBaseResource(), getDockerClientConfig());
}
+ @Override
+ public ExportContainerCmd.Exec createExportContainerCmdExec() {
+ return new ExportContainerCmdExec(getBaseResource(), getDockerClientConfig());
+ }
+
@Override
public KillContainerCmd.Exec createKillContainerCmdExec() {
return new KillContainerCmdExec(getBaseResource(), getDockerClientConfig());
@@ -560,5 +588,26 @@ public RemoveSecretCmd.Exec createRemoveSecretCmdExec() {
return new RemoveSecretCmdExec(getBaseResource(), getDockerClientConfig());
}
+ @Override
+ public ListConfigsCmd.Exec createListConfigsCmdExec() {
+ return new ListConfigsCmdExec(getBaseResource(), getDockerClientConfig());
+ }
+
+ @Override
+ public CreateConfigCmd.Exec createCreateConfigCmdExec() {
+ return new CreateConfigCmdExec(getBaseResource(), getDockerClientConfig());
+ }
+
+ @Override
+ public InspectConfigCmd.Exec createInspectConfigCmdExec() {
+ return new InspectConfigCmdExec(getBaseResource(), getDockerClientConfig());
+ }
+
+ @Override
+ public RemoveConfigCmd.Exec createRemoveConfigCmdExec() {
+ return new RemoveConfigCmdExec(getBaseResource(), getDockerClientConfig());
+ }
+
+
protected abstract WebTarget getBaseResource();
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
index 274363fac..dad75b360 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
@@ -5,11 +5,15 @@
import com.github.dockerjava.api.model.AuthConfigurations;
import com.github.dockerjava.core.NameParser.HostnameReposName;
import com.github.dockerjava.core.NameParser.ReposTag;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
+
+import java.util.Map.Entry;
+import java.util.Optional;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.SystemUtils;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
@@ -21,11 +25,11 @@
import java.net.URI;
import java.util.HashSet;
import java.util.Map;
+import java.util.Objects;
import java.util.Properties;
import java.util.Set;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.apache.commons.lang.BooleanUtils.isTrue;
+import static org.apache.commons.lang3.BooleanUtils.isTrue;
/**
* Respects some of the docker CLI options. See https://docs.docker.com/engine/reference/commandline/cli/#environment-variables
@@ -36,6 +40,8 @@ public class DefaultDockerClientConfig implements Serializable, DockerClientConf
public static final String DOCKER_HOST = "DOCKER_HOST";
+ public static final String DOCKER_CONTEXT = "DOCKER_CONTEXT";
+
public static final String DOCKER_TLS_VERIFY = "DOCKER_TLS_VERIFY";
public static final String DOCKER_CONFIG = "DOCKER_CONFIG";
@@ -58,6 +64,10 @@ public class DefaultDockerClientConfig implements Serializable, DockerClientConf
static final Properties DEFAULT_PROPERTIES = new Properties();
+ static final String DEFAULT_DOCKER_HOST = "unix:///var/run/docker.sock";
+
+ static final String WINDOWS_DEFAULT_DOCKER_HOST = "npipe:////./pipe/docker_engine";
+
static {
CONFIG_KEYS.add(DOCKER_HOST);
CONFIG_KEYS.add(DOCKER_TLS_VERIFY);
@@ -69,7 +79,6 @@ public class DefaultDockerClientConfig implements Serializable, DockerClientConf
CONFIG_KEYS.add(REGISTRY_EMAIL);
CONFIG_KEYS.add(REGISTRY_URL);
- DEFAULT_PROPERTIES.put(DOCKER_HOST, "unix:///var/run/docker.sock");
DEFAULT_PROPERTIES.put(DOCKER_CONFIG, "${user.home}/.docker");
DEFAULT_PROPERTIES.put(REGISTRY_URL, "https://index.docker.io/v1/");
DEFAULT_PROPERTIES.put(REGISTRY_USERNAME, "${user.name}");
@@ -83,11 +92,13 @@ public class DefaultDockerClientConfig implements Serializable, DockerClientConf
private final RemoteApiVersion apiVersion;
- private DockerConfigFile dockerConfig = null;
+ private final DockerConfigFile dockerConfig;
- DefaultDockerClientConfig(URI dockerHost, String dockerConfigPath, String apiVersion, String registryUrl,
- String registryUsername, String registryPassword, String registryEmail, SSLConfig sslConfig) {
+ DefaultDockerClientConfig(URI dockerHost, DockerConfigFile dockerConfigFile, String dockerConfigPath, String apiVersion,
+ String registryUrl, String registryUsername, String registryPassword, String registryEmail,
+ SSLConfig sslConfig) {
this.dockerHost = checkDockerHostScheme(dockerHost);
+ this.dockerConfig = dockerConfigFile;
this.dockerConfigPath = dockerConfigPath;
this.apiVersion = RemoteApiVersion.parseConfigWithDefault(apiVersion);
this.sslConfig = sslConfig;
@@ -98,14 +109,10 @@ public class DefaultDockerClientConfig implements Serializable, DockerClientConf
}
private URI checkDockerHostScheme(URI dockerHost) {
- switch (dockerHost.getScheme()) {
- case "tcp":
- case "unix":
- case "npipe":
- return dockerHost;
- default:
- throw new DockerClientException("Unsupported protocol scheme found: '" + dockerHost);
+ if (dockerHost == null) {
+ throw new DockerClientException("'dockerHost' is null");
}
+ return dockerHost;
}
private static Properties loadIncludedDockerProperties(Properties systemProperties) {
@@ -123,9 +130,11 @@ private static Properties loadIncludedDockerProperties(Properties systemProperti
}
private static void replaceProperties(Properties properties, Properties replacements) {
- for (Object objectKey : properties.keySet()) {
- String key = objectKey.toString();
- properties.setProperty(key, replaceProperties(properties.getProperty(key), replacements));
+ for (Entry