From e9ce7243b89ef82d8cc815f06e5f4013816dc9e1 Mon Sep 17 00:00:00 2001
From: Florian Ruynat <florian234@hotmail.com>
Date: Mon, 25 May 2020 14:37:11 +0200
Subject: [PATCH] Match docker-cli version with docker-engine version (when
 available) (#6163)

---
 .gitlab-ci/packet.yml                               | 6 +++---
 roles/container-engine/docker/defaults/main.yml     | 1 +
 roles/container-engine/docker/vars/debian.yml       | 7 +++++++
 roles/container-engine/docker/vars/fedora.yml       | 7 +++++++
 roles/container-engine/docker/vars/redhat.yml       | 9 ++++++++-
 roles/container-engine/docker/vars/ubuntu-amd64.yml | 7 +++++++
 roles/container-engine/docker/vars/ubuntu-arm64.yml | 7 +++++++
 7 files changed, 40 insertions(+), 4 deletions(-)

diff --git a/.gitlab-ci/packet.yml b/.gitlab-ci/packet.yml
index 186240ef1..1faf5b9a9 100644
--- a/.gitlab-ci/packet.yml
+++ b/.gitlab-ci/packet.yml
@@ -173,7 +173,7 @@ packet_fedora30-cilium-containerd:
 packet_centos7-weave-upgrade-ha:
   stage: deploy-part3
   extends: .packet
-  when: on_success
+  when: manual
   variables:
     UPGRADE_TEST: basic
     MITOGEN_ENABLE: "false"
@@ -181,7 +181,7 @@ packet_centos7-weave-upgrade-ha:
 packet_debian9-calico-upgrade:
   stage: deploy-part3
   extends: .packet
-  when: on_success
+  when: manual
   variables:
     UPGRADE_TEST: graceful
     MITOGEN_ENABLE: "false"
@@ -189,7 +189,7 @@ packet_debian9-calico-upgrade:
 packet_debian9-calico-upgrade-once:
   stage: deploy-part3
   extends: .packet
-  when: on_success
+  when: manual
   variables:
     UPGRADE_TEST: graceful
     MITOGEN_ENABLE: "false"
diff --git a/roles/container-engine/docker/defaults/main.yml b/roles/container-engine/docker/defaults/main.yml
index b0cb6bb1e..4f7497413 100644
--- a/roles/container-engine/docker/defaults/main.yml
+++ b/roles/container-engine/docker/defaults/main.yml
@@ -1,5 +1,6 @@
 ---
 docker_version: '18.09'
+docker_cli_version: "{{ 'latest' if docker_version != 'latest' and docker_version is version('18.09', '<') else docker_version }}"
 docker_selinux_version: '17.03'
 
 docker_package_info:
diff --git a/roles/container-engine/docker/vars/debian.yml b/roles/container-engine/docker/vars/debian.yml
index 6fa34358e..555cf5202 100644
--- a/roles/container-engine/docker/vars/debian.yml
+++ b/roles/container-engine/docker/vars/debian.yml
@@ -16,9 +16,16 @@ docker_versioned_pkg:
   'stable': docker-ce=5:18.09.7~3-0~debian-{{ ansible_distribution_release|lower }}
   'edge': docker-ce=5:19.03.7~3-0~debian-{{ ansible_distribution_release|lower }}
 
+docker_cli_versioned_pkg:
+  'latest': docker-ce-cli
+  '18.09': docker-ce-cli=5:18.09.9~3-0~debian-{{ ansible_distribution_release|lower }}
+  '19.03': docker-ce-cli=5:19.03.9~3-0~debian-{{ ansible_distribution_release|lower }}
+
 docker_package_info:
   pkg_mgr: apt
   pkgs:
+    - name: "{{ docker_cli_versioned_pkg[docker_cli_version | string] }}"
+      force: yes
     - name: "{{ docker_versioned_pkg[docker_version | string] }}"
       force: yes
 
diff --git a/roles/container-engine/docker/vars/fedora.yml b/roles/container-engine/docker/vars/fedora.yml
index 6befdd97e..a1302296e 100644
--- a/roles/container-engine/docker/vars/fedora.yml
+++ b/roles/container-engine/docker/vars/fedora.yml
@@ -11,10 +11,17 @@ docker_versioned_pkg:
   '18.09': docker-ce-18.09.7-3.fc{{ ansible_distribution_major_version }}
   '19.03': docker-ce-19.03.8-3.fc{{ ansible_distribution_major_version }}
 
+docker_cli_versioned_pkg:
+  'latest': docker-ce-cli
+  '18.09': docker-ce-cli-19.03.8-3.fc{{ ansible_distribution_major_version }}
+  '19.03': docker-ce-cli-19.03.9-3.fc{{ ansible_distribution_major_version }}
+
 # Fedora 30/31 don't provide packages for docker 18.0x ...
 docker_version: "19.03"
+docker_cli_version: "19.03"
 
 docker_package_info:
   pkg_mgr: dnf
   pkgs:
+    - name: "{{ docker_cli_versioned_pkg[docker_cli_version | string] }}"
     - name: "{{ docker_versioned_pkg[docker_version | string] }}"
diff --git a/roles/container-engine/docker/vars/redhat.yml b/roles/container-engine/docker/vars/redhat.yml
index 7d3170786..b568a6a43 100644
--- a/roles/container-engine/docker/vars/redhat.yml
+++ b/roles/container-engine/docker/vars/redhat.yml
@@ -16,6 +16,11 @@ docker_versioned_pkg:
   'stable': docker-ce-18.09.9-3.el7
   'edge': docker-ce-19.03.8-3.el7
 
+docker_cli_versioned_pkg:
+  'latest': docker-ce-cli
+  '18.09': docker-ce-cli-18.09.9-3.el7
+  '19.03': docker-ce-cli-19.03.9-3.el7
+
 docker_selinux_versioned_pkg:
   'latest': docker-ce-selinux-17.03.3.ce-1.el7
   '17.03': docker-ce-selinux-17.03.3.ce-1.el7
@@ -30,13 +35,15 @@ docker_pkgs_use_docker_ce:
     yum_conf: "{{ docker_yum_conf }}"
 
 docker_pkgs:
+  - name: "{{ docker_cli_versioned_pkg[docker_cli_version | string] }}"
+    yum_conf: "{{ docker_yum_conf }}"
   - name: "{{ docker_versioned_pkg[docker_version | string] }}"
     yum_conf: "{{ docker_yum_conf }}"
 
 docker_package_info:
   pkg_mgr: yum
   pkgs: |-
-    {%- if docker_version is version('17.04', '<') -%}
+    {%- if docker_version != "latest" and docker_version is version('17.04', '<') -%}
     {{ docker_pkgs_use_docker_ce }}
     {%- else -%}
     {{ docker_pkgs }}
diff --git a/roles/container-engine/docker/vars/ubuntu-amd64.yml b/roles/container-engine/docker/vars/ubuntu-amd64.yml
index ce26c567e..2222bbcef 100644
--- a/roles/container-engine/docker/vars/ubuntu-amd64.yml
+++ b/roles/container-engine/docker/vars/ubuntu-amd64.yml
@@ -16,9 +16,16 @@ docker_versioned_pkg:
   'stable': docker-ce=5:18.09.7~3-0~ubuntu-{{ ansible_distribution_release|lower }}
   'edge': docker-ce=5:19.03.7~3-0~ubuntu-{{ ansible_distribution_release|lower }}
 
+docker_cli_versioned_pkg:
+  'latest': docker-ce-cli
+  '18.09': docker-ce-cli=5:18.09.9~3-0~ubuntu-{{ ansible_distribution_release|lower }}
+  '19.03': docker-ce-cli=5:19.03.9~3-0~ubuntu-{{ ansible_distribution_release|lower }}
+
 docker_package_info:
   pkg_mgr: apt
   pkgs:
+    - name: "{{ docker_cli_versioned_pkg[docker_cli_version | string] }}"
+      force: yes
     - name: "{{ docker_versioned_pkg[docker_version | string] }}"
       force: yes
 
diff --git a/roles/container-engine/docker/vars/ubuntu-arm64.yml b/roles/container-engine/docker/vars/ubuntu-arm64.yml
index 3021837e0..b24511b94 100644
--- a/roles/container-engine/docker/vars/ubuntu-arm64.yml
+++ b/roles/container-engine/docker/vars/ubuntu-arm64.yml
@@ -12,9 +12,16 @@ docker_versioned_pkg:
   'stable': docker-ce=5:18.09.7~3-0~ubuntu-{{ ansible_distribution_release|lower }}
   'edge': docker-ce=5:19.03.7~3-0~ubuntu-{{ ansible_distribution_release|lower }}
 
+docker_cli_versioned_pkg:
+  'latest': docker-ce-cli
+  '18.09': docker-ce-cli=5:18.09.9~3-0~ubuntu-{{ ansible_distribution_release|lower }}
+  '19.03': docker-ce-cli=5:19.03.9~3-0~ubuntu-{{ ansible_distribution_release|lower }}
+
 docker_package_info:
   pkg_mgr: apt
   pkgs:
+    - name: "{{ docker_cli_versioned_pkg[docker_cli_version | string] }}"
+      force: yes
     - name: "{{ docker_versioned_pkg[docker_version | string] }}"
       force: yes
 
-- 
GitLab