From f073ee91ea3c452787387c42a1adb8033cebb503 Mon Sep 17 00:00:00 2001
From: Matthew Mosesohn <mmosesohn@mirantis.com>
Date: Wed, 10 Aug 2016 13:58:10 +0400
Subject: [PATCH] Copy hyperkube cni plugins optionally for calico deployment

Hyperkube from CoreOS now ships with all binaries required for
calico and flannel (but not weave). It simplifies deployment for
some network plugin scenarios to not download CNI images.

TODO: Optionally disable downloading calico to /opt/cni/bin
---
 roles/network_plugin/calico/defaults/main.yml | 5 +++++
 roles/network_plugin/calico/tasks/main.yml    | 7 +++++++
 2 files changed, 12 insertions(+)

diff --git a/roles/network_plugin/calico/defaults/main.yml b/roles/network_plugin/calico/defaults/main.yml
index 7482970cd..8d0759ffb 100644
--- a/roles/network_plugin/calico/defaults/main.yml
+++ b/roles/network_plugin/calico/defaults/main.yml
@@ -9,3 +9,8 @@ ipip: false
 # cloud_provider:
 calicoctl_image_repo: calico/ctl
 calicoctl_image_tag: "{{ calico_version }}"
+
+# Set to true if your Hyperkube has all required components to run
+# calico. This is required in order to run canalized calico.
+use_hyperkube_cni: false
+
diff --git a/roles/network_plugin/calico/tasks/main.yml b/roles/network_plugin/calico/tasks/main.yml
index 510b8af82..c421300ee 100644
--- a/roles/network_plugin/calico/tasks/main.yml
+++ b/roles/network_plugin/calico/tasks/main.yml
@@ -25,10 +25,17 @@
 - name: Calico | Install calico cni bin
   command: rsync -piu "{{ local_release_dir }}/calico/bin/calico" "/opt/cni/bin/calico"
   changed_when: false
+  when: not use_hyperkube_cni
 
 - name: Calico | Install calico-ipam cni bin
   command: rsync -piu "{{ local_release_dir }}/calico/bin/calico" "/opt/cni/bin/calico-ipam"
   changed_when: false
+  when: not use_hyperkube_cni
+
+- name: Calico | Copy cni plugins from hyperkube
+  command: "/usr/bin/docker run --rm -v /opt/cni/bin:/cnibindir {{ hyperkube_image_repo }}:{{ hyperkube_image_tag }} /bin/cp -r /opt/cni/bin/. /cnibindir/"
+  changed_when: false
+  when: use_hyperkube_cni
 
 - name: Calico | wait for etcd
   uri: url=http://localhost:2379/health
-- 
GitLab