Switch calico source to binary instead of docker image.

Since docker going to be removed from k8s formula,
calico should be downloaded as raw binary.

Related story: PROD-23498

Change-Id: I8634efacabdfa6862878d96770cdbc3628b5e465
diff --git a/kubernetes/map.jinja b/kubernetes/map.jinja
index 9cf805f..8181b6d 100644
--- a/kubernetes/map.jinja
+++ b/kubernetes/map.jinja
@@ -95,30 +95,6 @@
     },
 }, merge=salt['pillar.get']('kubernetes:control')) %}
 
-{%- if master.get('network', {}).get('engine') == 'calico' %}
-{% set calico = salt['grains.filter_by']({
-    'default': master.network.calico
-}, merge=salt['pillar.get']('kubernetes:master:network')) %}
-{% do calico.update({
-    'enabled': true,
-    'calicoctl_image': calico.calicoctl.image,
-    'cni_image': calico.cni.image,
-}) %}
-{% do master.network.calico.update(calico) %}
-{%- endif %}
-
-{%- if pool.get('network', {}).get('engine') == 'calico' %}
-{% set calico = salt['grains.filter_by']({
-    'default': pool.network.calico
-}, merge=salt['pillar.get']('kubernetes:pool:network')) %}
-{% do calico.update({
-    'enabled': true,
-    'calicoctl_image': calico.calicoctl.image,
-    'cni_image': calico.cni.image,
-}) %}
-{% do pool.network.calico.update(calico) %}
-{%- endif %}
-
 {%- set monitoring = salt['grains.filter_by']({
   'default': {
     'instance_minor_threshold_percent': 0.3,
diff --git a/kubernetes/master/calico.sls b/kubernetes/master/calico.sls
index 4d0fb48..1f21350 100644
--- a/kubernetes/master/calico.sls
+++ b/kubernetes/master/calico.sls
@@ -21,32 +21,16 @@
     - dir_mode: 755
     - template: jinja
 
-/tmp/calico/:
-  file.directory:
-      - user: root
-      - group: root
-
-copy-calico-ctl:
-  cmd.run:
-    - name: docker run --rm -v /tmp/calico/:/tmp/calico/ --entrypoint cp {{ master.network.calico.calicoctl_image }} -v /calicoctl /tmp/calico/
-    - require:
-      - file: /tmp/calico/
-    {%- if grains.get('noservices') %}
-    - onlyif: /bin/false
-    {%- endif %}
-
 /usr/bin/calicoctl:
   file.managed:
-    - source: /tmp/calico/calicoctl
+    - source: {{ master.network.calico.calicoctl_source }}
+    - source_hash: {{ master.network.calico.calicoctl_source_hash }}
     - mode: 751
     - user: root
     - group: root
-    - require:
-      - cmd: copy-calico-ctl
     {%- if grains.get('noservices') %}
     - onlyif: /bin/false
     {%- endif %}
-
 {%- if master.network.calico.get('systemd', true) %}
 
 /etc/systemd/system/calico-node.service:
diff --git a/kubernetes/pool/calico.sls b/kubernetes/pool/calico.sls
index 30f4956..3f2919f 100644
--- a/kubernetes/pool/calico.sls
+++ b/kubernetes/pool/calico.sls
@@ -1,80 +1,55 @@
 {%- from "kubernetes/map.jinja" import pool with context %}
 {%- if pool.enabled %}
 
-/tmp/calico/:
-  file.directory:
-      - user: root
-      - group: root
-
-copy-calico-ctl:
-  cmd.run:
-    - name: docker run --rm -v /tmp/calico/:/tmp/calico/ --entrypoint cp {{ pool.network.calico.calicoctl_image }} -v /calicoctl /tmp/calico/
-    - require:
-      - file: /tmp/calico/
-    {%- if grains.get('noservices') %}
-    - onlyif: /bin/false
-    {%- endif %}
-
 /usr/bin/calicoctl:
   file.managed:
-    - source: /tmp/calico/calicoctl
+    - source: {{ pool.network.calico.calicoctl_source }}
+    - source_hash: {{ pool.network.calico.calicoctl_source_hash }}
     - mode: 751
     - user: root
     - group: root
-    - require:
-      - cmd: copy-calico-ctl
-    {%- if grains.get('noservices') %}
-    - onlyif: /bin/false
-    {%- endif %}
-
-copy-calico-node:
-  cmd.run:
-    - name: docker run --rm -v /tmp/calico/:/tmp/calico/ --entrypoint cp {{ pool.network.calico.image }} -v /bin/birdcl /tmp/calico/
-    - require:
-      - file: /tmp/calico/
     {%- if grains.get('noservices') %}
     - onlyif: /bin/false
     {%- endif %}
 
 /usr/bin/birdcl:
   file.managed:
-    - source: /tmp/calico/birdcl
+    - source: {{ pool.network.calico.birdcl_source }}
+    - source_hash: {{ pool.network.calico.birdcl_source_hash }}
     - mode: 751
     - user: root
     - group: root
-    - require:
-      - cmd: copy-calico-node
     {%- if grains.get('noservices') %}
     - onlyif: /bin/false
     {%- endif %}
 
-copy-calico-cni:
-  cmd.run:
-    - name: docker run --rm -v /tmp/calico/:/tmp/calico/ --entrypoint cp {{ pool.network.calico.cni_image }} -vr /opt/cni/bin/ /tmp/calico/
-    - require:
-      - file: /tmp/calico/
-    {%- if grains.get('noservices') %}
-    - onlyif: /bin/false
-    {%- endif %}
-
-{%- for filename in ['calico', 'calico-ipam'] %}
-
-/opt/cni/bin/{{ filename }}:
+/opt/cni/bin/calico:
   file.managed:
-    - source: /tmp/calico/bin/{{ filename }}
+    - source: {{ pool.network.calico.cni_source }}
+    - source_hash: {{ pool.network.calico.cni_source_hash }}
     - mode: 751
     - makedirs: true
     - user: root
     - group: root
-    - require:
-      - cmd: copy-calico-cni
     - require_in:
       - service: calico_node
     {%- if grains.get('noservices') %}
     - onlyif: /bin/false
     {%- endif %}
 
-{%- endfor %}
+/opt/cni/bin/calico-ipam:
+  file.managed:
+    - source: {{ pool.network.calico.cni_ipam_source }}
+    - source_hash: {{ pool.network.calico.cni_ipam_source_hash }}
+    - mode: 751
+    - makedirs: true
+    - user: root
+    - group: root
+    - require_in:
+      - service: calico_node
+    {%- if grains.get('noservices') %}
+    - onlyif: /bin/false
+    {%- endif %}
 
 /etc/cni/net.d/10-calico.conf:
   file.managed:
diff --git a/tests/pillar/common_storageclass.sls b/tests/pillar/common_storageclass.sls
index 7d6e97d..91e6b04 100644
--- a/tests/pillar/common_storageclass.sls
+++ b/tests/pillar/common_storageclass.sls
@@ -23,8 +23,8 @@
     network:
       calico:
         enabled: true
-        calicoctl_image: calico/ctl
-        cni_image: calico/cni
+        calicoctl_source: calico/ctl
+        calicoctl_source_hash: d41d8cd98f00b204e9800998ecf8427e
         image: calico/node
         kube_controllers_image: calico/kube-controllers
         etcd:
diff --git a/tests/pillar/master_cluster.sls b/tests/pillar/master_cluster.sls
index b7b21d3..6a6a85c 100644
--- a/tests/pillar/master_cluster.sls
+++ b/tests/pillar/master_cluster.sls
@@ -64,8 +64,8 @@
     network:
       calico:
         enabled: true
-        calicoctl_image: calico/ctl
-        cni_image: calico/cni
+        calicoctl_source: calico/ctl
+        calicoctl_source_hash: d41d8cd98f00b204e9800998ecf8427e
         image: calico/node
         kube_controllers_image: calico/kube-controllers
         etcd:
diff --git a/tests/pillar/pool_cluster.sls b/tests/pillar/pool_cluster.sls
index 3a0eded..6a3e05d 100644
--- a/tests/pillar/pool_cluster.sls
+++ b/tests/pillar/pool_cluster.sls
@@ -48,8 +48,14 @@
     network:
       calico:
         enabled: true
-        calicoctl_image: calico/ctl
-        cni_image: calico/cni
+        calicoctl_source: calico/ctl
+        calicoctl_source_hash: d41d8cd98f00b204e9800998ecf8427e
+        birdcl_source: calico/birdcl
+        birdcl_source_hash: d41d8cd98f00b204e9800998ecf8427e
+        cni_source: calico/cni
+        cni_source_hash: d41d8cd98f00b204e9800998ecf8427e
+        cni_ipam_source: calico/cni-ipam
+        cni_ipam_source_hash: d41d8cd98f00b204e9800998ecf8427e
         image: calico/node
         kube_controllers_image: calico/kube-controllers
         etcd:
diff --git a/tests/pillar/pool_cluster_with_domain.sls b/tests/pillar/pool_cluster_with_domain.sls
index 018aec3..3567b40 100644
--- a/tests/pillar/pool_cluster_with_domain.sls
+++ b/tests/pillar/pool_cluster_with_domain.sls
@@ -49,8 +49,14 @@
     network:
       calico:
         enabled: true
-        calicoctl_image: calico/ctl
-        cni_image: calico/cni
+        calicoctl_source: calico/ctl
+        calicoctl_source_hash: d41d8cd98f00b204e9800998ecf8427e
+        birdcl_source: calico/birdcl
+        birdcl_source_hash: d41d8cd98f00b204e9800998ecf8427e
+        cni_source: calico/cni
+        cni_source_hash: d41d8cd98f00b204e9800998ecf8427e
+        cni_ipam_source: calico/cni-ipam
+        cni_ipam_source_hash: d41d8cd98f00b204e9800998ecf8427e
         image: calico/node
         kube_controllers_image: calico/kube-controllers
         etcd: