Add support of multiple CNIs

Change-Id: Ib2fba96acfd63830bbc6ba4bdce0112ca492df1f
diff --git a/README.rst b/README.rst
index 74623ec..799495a 100644
--- a/README.rst
+++ b/README.rst
@@ -318,7 +318,8 @@
           kubelet:
             allow_privileged: true
           network:
-            engine: calico
+            cnis:
+            - calico
           service_addresses: 10.254.0.0/16
           storage:
             engine: glusterfs
@@ -363,7 +364,8 @@
               - host: 10.0.175.100
             host: 10.0.175.100
           network:
-            engine: calico
+            cnis:
+            - calico
           token:
             kube_proxy: DFvQ8GelB7afH3wClC9romaMPhquyyEe
             kubelet: 7bN5hJ9JD4fKjnFTkUKsvVNfuyEddw3r
@@ -416,7 +418,8 @@
             image: yashulyak/contrail-controller:latest
       master:
         network:
-          engine: opencontrail
+          cnis:
+          - opencontrail
           contrail:
             default_domain: default-domain
             default_project: default-domain:default-project
@@ -437,7 +440,8 @@
     kubernetes:
       pool:
         network:
-          engine: opencontrail
+          cnis:
+          - opencontrail
 
 
 Dashboard public IP must be configured when Contrail network is used:
@@ -483,19 +487,8 @@
     kubernetes:
       master:
         network:
-          engine: flannel
-    # If you don't register master as node:
-          etcd:
-            members:
-              - host: 10.0.175.101
-                port: 4001
-              - host: 10.0.175.102
-                port: 4001
-              - host: 10.0.175.103
-                port: 4001
-      common:
-        network:
-          engine: flannel
+          cnis:
+          - flannel
 
 On pools:
 
@@ -504,18 +497,8 @@
     kubernetes:
       pool:
         network:
-          engine: flannel
-          etcd:
-            members:
-              - host: 10.0.175.101
-                port: 4001
-              - host: 10.0.175.102
-                port: 4001
-              - host: 10.0.175.103
-                port: 4001
-      common:
-        network:
-          engine: flannel
+          cnis:
+          - flannel
 
 Kubernetes with Calico
 -----------------------
@@ -527,7 +510,8 @@
     kubernetes:
       master:
         network:
-          engine: calico
+          cnis:
+          - calico
           calico:
             mtu: 1500
     # If you don't register master as node:
@@ -547,7 +531,8 @@
     kubernetes:
       pool:
         network:
-          engine: calico
+          cnis:
+          - calico
           calico:
             mtu: 1500
             etcd:
@@ -566,14 +551,16 @@
     kubernetes:
       pool:
         network:
-          engine: calico
+          cnis:
+          - calico
           calico:
             etcd:
               ssl:
                 enabled: true
       master:
         network:
-          engine: calico
+          cnis:
+          - calico
           calico:
             etcd:
               ssl:
@@ -586,14 +573,16 @@
     kubernetes:
       pool:
         network:
-          engine: calico
+          cnis:
+          - calico
           addons:
             calico_policy:
               enabled: true
 
       master:
         network:
-          engine: calico
+          cnis:
+          - calico
           addons:
             calico_policy:
               enabled: true
diff --git a/kubernetes/files/dockershim/default.pool b/kubernetes/files/dockershim/default.pool
index 85f8230..308b5d6 100644
--- a/kubernetes/files/dockershim/default.pool
+++ b/kubernetes/files/dockershim/default.pool
@@ -21,12 +21,8 @@
 {%- else %}
 --node-labels=node-role.kubernetes.io/node=true \
 {%- endif %}
-{%- if pool.network.engine in ['calico', 'opencontrail', 'flannel'] %}
 --network-plugin=cni \
 --cni-bin-dir={{ pool.apiserver.get('cni_bin_dir', '/opt/cni/bin') }} \
-{%- else %}
---network-plugin-dir=/etc/cni/net.d \
-{%- endif %}
 --file-check-frequency={{ pool.kubelet.frequency }} \
 {%- if common.get('cloudprovider', {}).get('enabled') %}
 --cloud-provider={{ common.cloudprovider.provider }} \
diff --git a/kubernetes/files/kube-addons/dashboard/dashboard-service.yaml b/kubernetes/files/kube-addons/dashboard/dashboard-service.yaml
index 26deb7b..f087ad9 100644
--- a/kubernetes/files/kube-addons/dashboard/dashboard-service.yaml
+++ b/kubernetes/files/kube-addons/dashboard/dashboard-service.yaml
@@ -9,7 +9,7 @@
     kubernetes.io/cluster-service: "true"
     addonmanager.kubernetes.io/mode: Reconcile
 spec:
-{%- if master.network.engine != 'opencontrail' %}
+{%- if 'opencontrail' not in master.network.cnis %}
   selector:
     k8s-app: kubernetes-dashboard
   type: NodePort
diff --git a/kubernetes/files/kube-addons/flannel/flannel.yml b/kubernetes/files/kube-addons/flannel/flannel.yml
index 095dbe8..58d0217 100644
--- a/kubernetes/files/kube-addons/flannel/flannel.yml
+++ b/kubernetes/files/kube-addons/flannel/flannel.yml
@@ -63,7 +63,7 @@
 data:
   net-conf.json: |
     {
-      "Network": "{{ master.network.private_ip_range }}",
+      "Network": "{{ master.network.flannel.private_ip_range }}",
       "Backend": {
         "Type": "vxlan"
       }
diff --git a/kubernetes/files/kube-addons/virtlet/virtlet-ds.yml b/kubernetes/files/kube-addons/virtlet/virtlet-ds.yml
index d68d31e..73a03fa 100644
--- a/kubernetes/files/kube-addons/virtlet/virtlet-ds.yml
+++ b/kubernetes/files/kube-addons/virtlet/virtlet-ds.yml
@@ -17,7 +17,7 @@
         runtime: virtlet
     spec:
       hostNetwork: true
-      {%- if master.network.engine != "opencontrail" %}
+      {%- if "opencontrail" not in master.network.cnis %}
       dnsPolicy: ClusterFirstWithHostNet
       {%- endif %}
       # hostPID is true to (1) enable VMs to survive virtlet container restart
@@ -148,7 +148,7 @@
           {%- endif %}
         - name: vms-log
           mountPath: /var/log/vms
-        {%- if master.network.engine == "opencontrail" %}
+        {%- if "opencontrail" in master.network.cnis %}
         - name: contrail-log
           mountPath: /var/log/contrail
         - name: contrail-data
@@ -277,7 +277,7 @@
       - configMap:
           name: virtlet-image-translations
         name: image-name-translations
-      {%- if master.network.engine == "opencontrail" %}
+      {%- if "opencontrail" in master.network.cnis %}
       - hostPath:
           path: /var/log/contrail
         name: contrail-log
@@ -439,4 +439,4 @@
   name: virtlet-image-translations
   namespace: {{ common.addons.virtlet.namespace }}
   labels:
-    addonmanager.kubernetes.io/mode: Reconcile
\ No newline at end of file
+    addonmanager.kubernetes.io/mode: Reconcile
diff --git a/kubernetes/files/kubelet/default.pool b/kubernetes/files/kubelet/default.pool
index 79586f3..7e2ce2f 100644
--- a/kubernetes/files/kubelet/default.pool
+++ b/kubernetes/files/kubelet/default.pool
@@ -26,12 +26,8 @@
 {%- else %}
 --node-labels=node-role.kubernetes.io/node=true \
 {%- endif %}
-{%- if pool.network.engine in ['calico', 'opencontrail', 'flannel'] %}
 --network-plugin=cni \
 --cni-bin-dir={{ pool.apiserver.get('cni_bin_dir', '/opt/cni/bin') }} \
-{%- else %}
---network-plugin-dir=/etc/cni/net.d \
-{%- endif %}
 --file-check-frequency={{ pool.kubelet.frequency }} \
 {%- if common.get('cloudprovider', {}).get('enabled') %}
 --cloud-provider={{ common.cloudprovider.provider }} \
diff --git a/kubernetes/files/manifest/kube-proxy.manifest.pool b/kubernetes/files/manifest/kube-proxy.manifest.pool
index 15b943c..55912ad 100644
--- a/kubernetes/files/manifest/kube-proxy.manifest.pool
+++ b/kubernetes/files/manifest/kube-proxy.manifest.pool
@@ -21,7 +21,7 @@
       --kubeconfig=/etc/kubernetes/proxy.kubeconfig
       --master={%- if pool.apiserver.insecure.enabled %}http://{{
 pool.apiserver.host }}:{{ pool.apiserver.insecure_port }}{%- else %}https://{{ pool.apiserver.host }}:{{ pool.apiserver.secure_port }}{%- endif %}
-{%- if pool.network.engine == 'calico' %}
+{%- if 'calico' in pool.network.cnis %}
       --proxy-mode=iptables
 {%- endif %}
 {%- for key, value in pool.get('proxy', {}).get('daemon_opts', {}).items() %}
diff --git a/kubernetes/master/controller.sls b/kubernetes/master/controller.sls
index f8ae0a2..83d1f14 100644
--- a/kubernetes/master/controller.sls
+++ b/kubernetes/master/controller.sls
@@ -190,9 +190,9 @@
 {%- endif %}
 {%- endif %}
         --v={{ master.get('verbosity', 2) }}
-{%- if master.network.engine == 'flannel' %}
+{%- if 'flannel' in master.network.cnis %}
         --allocate-node-cidrs=true
-        --cluster-cidr={{ master.network.private_ip_range }}
+        --cluster-cidr={{ master.network.flannel.private_ip_range }}
 {%- endif %}
 {%- for key, value in master.get('controller_manager', {}).get('daemon_opts', {}).items() %}
         --{{ key }}={{ value }}
diff --git a/kubernetes/master/init.sls b/kubernetes/master/init.sls
index 7d00fd6..e1b7319 100644
--- a/kubernetes/master/init.sls
+++ b/kubernetes/master/init.sls
@@ -2,13 +2,13 @@
 include:
 - kubernetes.master.service
 - kubernetes.master.kube-addons
-{%- if master.network.engine == "flannel" %}
+{%- if "flannel" in master.network.cnis %}
 - kubernetes.master.flannel
 {%- endif %}
-{%- if master.network.engine == "opencontrail" %}
+{%- if "opencontrail" in master.network.cnis %}
 - kubernetes.master.opencontrail
 {%- endif %}
-{%- if master.network.engine == "calico" %}
+{%- if "calico" in master.network.cnis %}
 {%- if not pillar.kubernetes.pool is defined %}
 - kubernetes.master.calico
 {%- endif %}
diff --git a/kubernetes/master/kube-addons.sls b/kubernetes/master/kube-addons.sls
index 1f052f4..609c209 100644
--- a/kubernetes/master/kube-addons.sls
+++ b/kubernetes/master/kube-addons.sls
@@ -9,7 +9,7 @@
     - group: root
     - mode: 0755
 
-{%- if master.network.engine == "flannel" %}
+{%- if "flannel" in master.network.cnis %}
 /etc/kubernetes/addons/flannel/flannel.yml:
   file.managed:
     - source: salt://kubernetes/files/kube-addons/flannel/flannel.yml
@@ -19,7 +19,7 @@
     - makedirs: True
 {% endif %}
 
-{%- if master.network.engine == "opencontrail" and master.network.contrail.get('version', 3.0) < 4.0 %}
+{%- if "opencontrail" in master.network.cnis and master.network.contrail.get('version', 3.0) < 4.0 %}
 /etc/kubernetes/addons/contrail-network-controller/contrail-network-controller-configmap.yml:
   file.managed:
     - source: salt://kubernetes/files/kube-addons/contrail-network-controller/contrail-network-controller-configmap.yml
@@ -36,7 +36,7 @@
     - dir_mode: 755
     - makedirs: True
 
-{%- elif master.network.engine == "opencontrail" and master.network.contrail.get('version', 3.0) > 3.0 %}
+{%- elif "opencontrail" in master.network.cnis and master.network.contrail.get('version', 3.0) > 3.0 %}
 
 /etc/kubernetes/addons/contrail/contrail.yaml:
   file.managed:
@@ -67,7 +67,7 @@
 
 {% endif %}
 
-{%- if common.addons.get('calico_policy', {}).get('enabled', False) and master.network.engine == "calico" %}
+{%- if common.addons.get('calico_policy', {}).get('enabled', False) and "calico" in master.network.cnis %}
 /etc/kubernetes/addons/calico_policy/calico-policy-controller.yml:
   file.managed:
     - source: salt://kubernetes/files/kube-addons/calico-policy/calico-policy-controller.yml
diff --git a/kubernetes/meta/collectd.yml b/kubernetes/meta/collectd.yml
index 50ebbe9..e1089f4 100644
--- a/kubernetes/meta/collectd.yml
+++ b/kubernetes/meta/collectd.yml
@@ -11,7 +11,7 @@
 
 {%- if master.get('enabled', False) or pool.get('enabled', False) %}
 local_plugin:
-  {%- if network is defined and network.get('engine', None) == 'calico' %}
+  {%- if network.cnis is defined and 'calico' in network.cnis %}
   collectd_calico_felix:
    plugin: python
    template: kubernetes/files/collectd_calico_felix.conf
@@ -73,7 +73,7 @@
       k8s-proxy:
         match: hyperkube.*proxy
 {%- endif %}
-{%- if network is defined and network.get('engine', None) == 'calico' %}
+{%- if network.cnis is defined and 'calico' in network.cnis %}
       calico-docker:
         match: docker run .*projectcalico/calico/node
       calico-felix:
diff --git a/kubernetes/meta/fluentd.yml b/kubernetes/meta/fluentd.yml
index b2a27dc..84a82b2 100644
--- a/kubernetes/meta/fluentd.yml
+++ b/kubernetes/meta/fluentd.yml
@@ -36,7 +36,7 @@
               type: json
               time_format: '%Y-%m-%dT%H:%M:%S.%NZ'
               keep_time_key: false
-          {%- if network is defined and network.get('engine', None) == 'calico' %}
+          {%- if network.cnis is defined and 'calico' in network.cnis %}
           bird:
             type: tail
             tag: kubernetes.calico.bird
@@ -96,7 +96,7 @@
                 value: 6
               - name: programname
                 value: ${ record['kubernetes']['container_name'] }
-          {%- if network is defined and network.get('engine', None) == 'calico' %}
+          {%- if network.cnis is defined and 'calico' in network.cnis %}
           enrich_bird:
             tag: 'kubernetes.calico.bird'
             type: record_transformer
diff --git a/kubernetes/meta/grafana.yml b/kubernetes/meta/grafana.yml
index bf3667b..e91c594 100644
--- a/kubernetes/meta/grafana.yml
+++ b/kubernetes/meta/grafana.yml
@@ -10,7 +10,7 @@
     datasource: prometheus
     format: json
     template: kubernetes/files/grafana_dashboards/kubernetes_cluster_prometheus.json
-{%- if network is defined and network.get('engine') == 'calico' %}
+{%- if network.cnis is defined and 'calico' in network.cnis %}
   calico-prometheus:
     datasource: prometheus
     format: json
@@ -20,7 +20,7 @@
     datasource: influxdb
     format: json
     template: kubernetes/files/grafana_dashboards/kubernetes_influxdb.json
-{%- if network is defined and network.get('engine') == 'calico' %}
+{%- if network.cnis is defined and 'calico' in network.cnis %}
   calico:
     datasource: influxdb
     format: json
diff --git a/kubernetes/meta/heka.yml b/kubernetes/meta/heka.yml
index 21d85c5..1bd76d6 100644
--- a/kubernetes/meta/heka.yml
+++ b/kubernetes/meta/heka.yml
@@ -11,7 +11,7 @@
 {% endif %}
 {% endif %}
 
-{%- if network is defined and network.get('engine', None) == 'calico' %}
+{%- if network.cnis is defined and 'calico' in network.cnis %}
 log_collector:
   decoder:
     calico_felix:
@@ -106,7 +106,7 @@
         periods: 0
         function: last
 {%- endif %}
-{%- if network is defined and network.get('engine', None) == 'calico' %}
+{%- if network.cnis is defined and 'calico' in network.cnis %}
     calico_docker:
       description: "There is no docker calico-node process running"
       severity: down
@@ -194,7 +194,7 @@
       dimension:
         service: k8s-proxy-endpoint
 {%- endif %}
-{%- if network is defined and network.get('engine', None) == 'calico' %}
+{%- if network.cnis is defined and 'calico' in network.cnis %}
     calico_docker:
       alerting: enabled
       triggers:
@@ -381,7 +381,7 @@
       dimension:
         cluster_name: k8s-master
         nagios_host: 00-top-clusters
-{%- if master.get('network', []).get('engine', None) == 'calico' %}
+{%- if master.network.cnis is defined and 'calico' in master.network.cnis %}
     calico_docker:
       policy: availability_of_members
       alerting: enabled
diff --git a/kubernetes/meta/prometheus.yml b/kubernetes/meta/prometheus.yml
index 4977663..60813cb 100644
--- a/kubernetes/meta/prometheus.yml
+++ b/kubernetes/meta/prometheus.yml
@@ -15,7 +15,7 @@
       api_ip: {{ pool.apiserver.host }}
       cert_name: prometheus-server.crt
       key_name: prometheus-server.key
-{%- if network.get('engine', '') == 'calico' and network.calico.get('prometheus', {}).get('enabled', False) %}
+{%- if network.cnis is defined and 'calico' in network.cnis and network.calico.get('prometheus', {}).get('enabled', False) %}
     static:
       calico:
         endpoint:
@@ -190,7 +190,7 @@
         summary: 'Kubernetes service {{ $labels.process_name }} is down'
         description: 'Kubernetes service {{ $labels.process_name }} is down on node {{ $labels.host }}'
       {% endraw %}
-{%- if network.get('engine', '') == 'calico' %}
+{%- if network.cnis is defined and 'calico' in network.cnis %}
     CalicoProcessDown:
       if: >-
         procstat_running{process_name=~"calico-felix|bird|bird6|confd"} == 0
diff --git a/kubernetes/meta/telegraf.yml b/kubernetes/meta/telegraf.yml
index 8be559f..5046918 100644
--- a/kubernetes/meta/telegraf.yml
+++ b/kubernetes/meta/telegraf.yml
@@ -26,7 +26,7 @@
         hyperkube-kubelet:
           pattern: "hyperkube.*kubelet"
   {%- endif %}
-  {%- if network is defined and network.get('engine', None) == 'calico' %}
+  {%- if network.cnis is defined and 'calico' in network.cnis %}
         hyperkube-proxy:
           pattern: "hyperkube.*proxy"
         calico-docker:
diff --git a/kubernetes/pool/init.sls b/kubernetes/pool/init.sls
index b23da8c..5395a1c 100644
--- a/kubernetes/pool/init.sls
+++ b/kubernetes/pool/init.sls
@@ -1,14 +1,14 @@
 {%- from "kubernetes/map.jinja" import pool with context %}
 include:
 - kubernetes.pool.cni
-{%- if pool.network.engine == "calico" %}
+{%- if "calico" in pool.network.cnis %}
 - kubernetes.pool.calico
 {%- endif %}
-{%- if pool.network.engine == "opencontrail" %}
+{%- if "opencontrail" in pool.network.cnis %}
 - kubernetes.pool.opencontrail
 {%- endif %}
 - kubernetes.pool.service
-{%- if pool.network.engine == "flannel" %}
+{%- if "flannel" in pool.network.cnis %}
 - kubernetes.pool.flannel
 {%- endif %}
 - kubernetes.pool.kube-proxy
diff --git a/kubernetes/pool/kube-proxy.sls b/kubernetes/pool/kube-proxy.sls
index a420c56..efadc34 100644
--- a/kubernetes/pool/kube-proxy.sls
+++ b/kubernetes/pool/kube-proxy.sls
@@ -1,5 +1,4 @@
 {%- from "kubernetes/map.jinja" import pool with context %}
-{%- if pool.enabled and pool.network.engine != 'opencontrail' %}
 
 {%- if pool.get('container', 'true') %}
 
@@ -37,7 +36,7 @@
     - user: root
     - group: root
     - mode: 644
-    - contents: DAEMON_ARGS=" --logtostderr=true --v={{ pool.get('verbosity', 2) }} --kubeconfig=/etc/kubernetes/proxy.kubeconfig {%- if pool.network.engine == 'calico' %} --proxy-mode=iptables{% endif %}{%- for key, value in pool.get('proxy', {}).get('daemon_opts', {}).items() %} --{{ key }}={{ value }}{%- endfor %}"
+    - contents: DAEMON_ARGS=" --logtostderr=true --v={{ pool.get('verbosity', 2) }} --kubeconfig=/etc/kubernetes/proxy.kubeconfig {%- if 'calico' in pool.network.cnis %} --proxy-mode=iptables{% endif %}{%- for key, value in pool.get('proxy', {}).get('daemon_opts', {}).items() %} --{{ key }}={{ value }}{%- endfor %}"
 
 pool_services:
   service.running:
@@ -52,5 +51,3 @@
   {%- endif %}
 
 {%- endif %}
-
-{%- endif %}
diff --git a/metadata/service/common.yml b/metadata/service/common.yml
index 8e51e56..62669c8 100644
--- a/metadata/service/common.yml
+++ b/metadata/service/common.yml
@@ -69,5 +69,3 @@
           domain_name: default
       cluster_domain: ${_param:kubernetes_cluster_domain}
       cluster_name: ${_param:cluster_name}
-      network:
-        engine: none
diff --git a/tests/pillar/common_storageclass.sls b/tests/pillar/common_storageclass.sls
index fbe6562..613cc13 100644
--- a/tests/pillar/common_storageclass.sls
+++ b/tests/pillar/common_storageclass.sls
@@ -15,7 +15,8 @@
       kube-system:
         enabled: true
     network:
-      engine: calico
+      cnis:
+      - calico
       calico:
         calicoctl_image: calico/ctl
         cni_image: calico/cni
@@ -41,8 +42,6 @@
     registry:
         host: tcpcloud
   common:
-    network:
-      engine: none
     addons:
       storageclass:
         nfs_elastic_1:
diff --git a/tests/pillar/master_cluster.sls b/tests/pillar/master_cluster.sls
index e734b66..06dcace 100644
--- a/tests/pillar/master_cluster.sls
+++ b/tests/pillar/master_cluster.sls
@@ -2,8 +2,6 @@
   common:
     cluster_domain: cluster.local
     cluster_name: cluster
-    network:
-      engine: none
     hyperkube:
       image: hyperkube-amd64:v1.6.4-3
       hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd
@@ -70,7 +68,8 @@
       address: 10.0.175.100
       allow_privileged: true
     network:
-      engine: calico
+      cnis:
+      - calico
       calico:
         calicoctl_image: calico/ctl
         cni_image: calico/cni
diff --git a/tests/pillar/master_contrail.sls b/tests/pillar/master_contrail.sls
index a023108..627b032 100644
--- a/tests/pillar/master_contrail.sls
+++ b/tests/pillar/master_contrail.sls
@@ -3,7 +3,8 @@
     cluster_domain: cluster.local
     cluster_name: cluster
     network:
-      engine: opencontrail
+      cnis:
+      - opencontrail
     hyperkube:
       image: hyperkube-amd64:v1.6.4-3
       hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd
@@ -74,7 +75,8 @@
       address: 10.0.175.100
       allow_privileged: true
     network:
-      engine: opencontrail
+      cnis:
+      - opencontrail
       contrail:
         config:
           api:
diff --git a/tests/pillar/master_contrail4_0.sls b/tests/pillar/master_contrail4_0.sls
index 8aaf016..e703b2e 100644
--- a/tests/pillar/master_contrail4_0.sls
+++ b/tests/pillar/master_contrail4_0.sls
@@ -3,7 +3,8 @@
     cluster_domain: cluster.local
     cluster_name: cluster
     network:
-      engine: opencontrail
+      cnis:
+      - opencontrail
     hyperkube:
       image: hyperkube-amd64:v1.6.4-3
       hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd
@@ -71,7 +72,8 @@
       address: 10.0.175.100
       allow_privileged: true
     network:
-      engine: opencontrail
+      cnis:
+      - opencontrail
       contrail:
         version: 4.0
         private_ip_range: 10.150.0.0/16
diff --git a/tests/pillar/pool_cluster.sls b/tests/pillar/pool_cluster.sls
index 677d7b2..21c8448 100644
--- a/tests/pillar/pool_cluster.sls
+++ b/tests/pillar/pool_cluster.sls
@@ -2,8 +2,6 @@
   common:
     cluster_domain: cluster.local
     cluster_name: cluster
-    network:
-      engine: none
     hyperkube:
       image: hyperkube-amd64:v1.6.4-3
       hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd
@@ -50,7 +48,8 @@
       kube_proxy: DFvQ8GelB7afH3wClC9romaMPhquyyEe
     ca: kubernetes
     network:
-      engine: calico
+      cnis:
+      - calico
       calico:
         calicoctl_image: calico/ctl
         cni_image: calico/cni
diff --git a/tests/pillar/pool_cluster_with_domain.sls b/tests/pillar/pool_cluster_with_domain.sls
index dba2f0b..9ad7f69 100644
--- a/tests/pillar/pool_cluster_with_domain.sls
+++ b/tests/pillar/pool_cluster_with_domain.sls
@@ -2,8 +2,6 @@
   common:
     cluster_domain: cluster.local
     cluster_name: cluster
-    network:
-      engine: none
     hyperkube:
       image: hyperkube-amd64:v1.6.4-3
       hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd
@@ -51,7 +49,8 @@
       kube_proxy: DFvQ8GelB7afH3wClC9romaMPhquyyEe
     ca: kubernetes
     network:
-      engine: calico
+      cnis:
+      - calico
       calico:
         calicoctl_image: calico/ctl
         cni_image: calico/cni
diff --git a/tests/pillar/pool_contrail4_0.sls b/tests/pillar/pool_contrail4_0.sls
index ce5331e..3b0595c 100644
--- a/tests/pillar/pool_contrail4_0.sls
+++ b/tests/pillar/pool_contrail4_0.sls
@@ -2,8 +2,6 @@
   common:
     cluster_domain: cluster.local
     cluster_name: cluster
-    network:
-      engine: none
     hyperkube:
       image: hyperkube-amd64:v1.6.4-3
       hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd
@@ -50,7 +48,8 @@
       kube_proxy: DFvQ8GelB7afH3wClC9romaMPhquyyEe
     ca: kubernetes
     network:
-      engine: opencontrail
+      cnis:
+      - opencontrail
       contrail:
         version: 4.0
         config: