Move addons to common section

* Move addons to common section of metadata
* Add conditional logic to install criproxy when virtlet is enabled
* Adding -%} to remove empty lines produced by jinja

Doc-Impact

Change-Id: I1c91deffb51cc42da46bc2559fd01c50f9ce4e27
Signed-off-by: Sergii Golovatiuk <sgolovatiuk@mirantis.com>
diff --git a/README.rst b/README.rst
index 393fe1d..2fdaf2a 100644
--- a/README.rst
+++ b/README.rst
@@ -1,4 +1,3 @@
-
 ==================
 Kubernetes Formula
 ==================
@@ -31,7 +30,7 @@
       kubernetes:
         common:
           hyperkube:
-            image: gcr.io/google_containers/hyperkube:v1.5.2
+            image: gcr.io/google_containers/hyperkube:v1.6.5
         pool:
           network:
             calicoctl:
@@ -45,7 +44,7 @@
 
     parameters:
       kubernetes:
-        master:
+        common:
           addons:
             helm:
               enabled: true
@@ -56,7 +55,7 @@
 
     parameters:
       kubernetes:
-        master:
+        common:
           addons:
             calico_policy:
               enabled: true
@@ -67,15 +66,15 @@
 
     parameters:
       kubernetes:
-        master:
+        common:
           addons:
             virtlet:
               enabled: true
               namespace: kube-system
+              image: mirantis/virtlet:v0.7.0
               hosts:
               - cmp01
               - cmp02
-              image: mirantis/virtlet:latest
 
 Enable netchecker addon
 
@@ -83,11 +82,12 @@
 
     parameters:
       kubernetes:
-        master:
-          namespace:
+        common:
+          addons:
             netchecker:
               enabled: true
-          addons:
+        master:
+          namespace:
             netchecker:
               enabled: true
 
@@ -116,7 +116,7 @@
 .. code-block:: yaml
 
     kubernetes:
-        master:
+        common:
           addons:
             dns:
               domain: cluster.local
@@ -181,13 +181,14 @@
 .. code-block:: yaml
 
     kubernetes:
-        master:
+        common:
           addons:
             dns:
               domain: cluster.local
               enabled: true
               replicas: 1
               server: 10.254.0.10
+        master:
           admin:
             password: password
             username: admin
@@ -275,12 +276,13 @@
 .. code-block:: yaml
 
     kubernetes:
-      master:
+      common:
         addons:
           contrail_network_controller:
             enabled: true
             namespace: kube-system
             image: yashulyak/contrail-controller:latest
+      master:
         network:
           engine: opencontrail
           default_domain: default-domain
@@ -310,7 +312,7 @@
 .. code-block:: yaml
 
     kubernetes:
-      master:
+      common:
         addons:
           public_ip: 1.1.1.1
 
diff --git a/kubernetes/_common.sls b/kubernetes/_common.sls
index 5171517..39a17dc 100644
--- a/kubernetes/_common.sls
+++ b/kubernetes/_common.sls
@@ -55,6 +55,7 @@
     - onlyif: /bin/false
     {%- endif %}
 
+{%- if common.addons.get('virtlet', {}).get('enabled') %}
 /tmp/criproxy:
   file.directory:
     - user: root
@@ -62,7 +63,7 @@
 
 copy-criproxy-bin:
   cmd.run:
-    - name: docker run --rm -v /tmp/criproxy/:/tmp/criproxy/ --entrypoint cp mirantis/virtlet -vr /criproxy /tmp/criproxy
+    - name: docker run --rm -v /tmp/criproxy/:/tmp/criproxy/ --entrypoint cp {{ common.addons.virtlet.image }} -vr /criproxy /tmp/criproxy
     - require:
       - file: /tmp/criproxy
     {%- if grains.get('noservices') %}
@@ -117,6 +118,8 @@
   - onlyif: /bin/false
   {%- endif %}
 
+{%- endif %}
+
 /etc/systemd/system/kubelet.service:
   file.managed:
     - source: salt://kubernetes/files/systemd/kubelet.service
diff --git a/kubernetes/files/calico/calico.conf b/kubernetes/files/calico/calico.conf
index 8b48f73..aadf6bb 100644
--- a/kubernetes/files/calico/calico.conf
+++ b/kubernetes/files/calico/calico.conf
@@ -1,5 +1,5 @@
-{%- from "kubernetes/map.jinja" import pool with context %}
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
+{%- from "kubernetes/map.jinja" import pool with context -%}
 {
     "name": "calico-k8s-network",
     "type": "calico",
@@ -9,7 +9,7 @@
     "etcd_cert_file": "/var/lib/etcd/etcd-client.pem",
     "etcd_ca_cert_file": "/var/lib/etcd/ca.pem",
 {%- endif %}
-{%- if  master.get('addons', {}).get('calico_policy', {}).get('enabled', False) %}
+{%- if  common.get('addons', {}).get('calico_policy', {}).get('enabled', False) %}
     "policy": {
       "type": "k8s"
     },
diff --git a/kubernetes/files/known_tokens.csv b/kubernetes/files/known_tokens.csv
index c17d03e..caea56a 100644
--- a/kubernetes/files/known_tokens.csv
+++ b/kubernetes/files/known_tokens.csv
@@ -1,13 +1,14 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import master with context -%}
+{%- from "kubernetes/map.jinja" import common with context -%}
 {{ master.token.admin }},admin,admin
 {{ master.token.kubelet }},kubelet,kubelet
 {{ master.token.kube_proxy }},kube_proxy,kube_proxy
 {{ master.token.scheduler }},system:scheduler,system:scheduler
 {{ master.token.controller_manager }},system:controller_manager,system:controller_manager
-{%- if master.addons.logging is defined %}
+{%- if common.addons.logging is defined %}
 {{ master.token.logging }},system:logging,system:logging
 {%- endif %}
-{%- if master.addons.monitoring is defined %}
+{%- if common.addons.monitoring is defined %}
 {{ master.token.monitoring }},system:monitoring,system:monitoring
 {%- endif %}
-{{ master.token.dns }},system:dns,system:dns
\ No newline at end of file
+{{ master.token.dns }},system:dns,system:dns
diff --git a/kubernetes/files/kube-addons/calico-policy/calico-policy-controller.yml b/kubernetes/files/kube-addons/calico-policy/calico-policy-controller.yml
index c0e0249..3234421 100644
--- a/kubernetes/files/kube-addons/calico-policy/calico-policy-controller.yml
+++ b/kubernetes/files/kube-addons/calico-policy/calico-policy-controller.yml
@@ -1,9 +1,10 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
+{%- from "kubernetes/map.jinja" import master with context -%}
 apiVersion: extensions/v1beta1
 kind: ReplicaSet
 metadata:
   name: calico-policy-controller
-  namespace: {{ master.addons.calico_policy.namespace }}
+  namespace: {{ common.addons.calico_policy.namespace }}
   labels:
     k8s-app: calico-policy
     kubernetes.io/cluster-service: "true"
@@ -16,7 +17,7 @@
   template:
     metadata:
       name: calico-policy-controller
-      namespace: {{ master.addons.calico_policy.namespace }}
+      namespace: {{ common.addons.calico_policy.namespace }}
       labels:
         k8s-app: calico-policy
     spec:
@@ -26,7 +27,7 @@
           effect: NoSchedule
       containers:
         - name: calico-policy-controller
-          image: {{ master.addons.calico_policy.image }}
+          image: {{ common.addons.calico_policy.image }}
           imagePullPolicy: IfNotPresent
           resources:
             limits:
diff --git a/kubernetes/files/kube-addons/contrail_network_controller/contrail-network-controller-configmap.yml b/kubernetes/files/kube-addons/contrail_network_controller/contrail-network-controller-configmap.yml
index ce0f3ed..4252e5a 100644
--- a/kubernetes/files/kube-addons/contrail_network_controller/contrail-network-controller-configmap.yml
+++ b/kubernetes/files/kube-addons/contrail_network_controller/contrail-network-controller-configmap.yml
@@ -1,9 +1,10 @@
+{%- from "kubernetes/map.jinja" import common with context -%}
 {%- from "kubernetes/map.jinja" import master with context -%}
 apiVersion: v1
 kind: ConfigMap
 metadata:
   name: contrail-kube-manager
-  namespace: {{ master.addons.contrail_network_controller.get('namespace', 'kube-system') }}
+  namespace: {{ common.addons.contrail_network_controller.get('namespace', 'kube-system') }}
   labels:
     addonmanager.kubernetes.io/mode: Reconcile
 data:
diff --git a/kubernetes/files/kube-addons/contrail_network_controller/contrail-network-controller-deploy.yml b/kubernetes/files/kube-addons/contrail_network_controller/contrail-network-controller-deploy.yml
index 1d61e82..17e314f 100644
--- a/kubernetes/files/kube-addons/contrail_network_controller/contrail-network-controller-deploy.yml
+++ b/kubernetes/files/kube-addons/contrail_network_controller/contrail-network-controller-deploy.yml
@@ -1,9 +1,9 @@
-{%- from "kubernetes/map.jinja" import master with context -%}
+{%- from "kubernetes/map.jinja" import common with context -%}
 apiVersion: apps/v1beta1
 kind: Deployment
 metadata:
   name: contrail-network-controller
-  namespace: {{ master.addons.contrail_network_controller.get('namespace', 'kube-system') }}
+  namespace: {{ common.addons.contrail_network_controller.get('namespace', 'kube-system') }}
 spec:
   template:
     metadata:
@@ -19,7 +19,7 @@
         node-role.kubernetes.io: master
       containers:
         - name: contrail-kube-manager
-          image: {{ master.addons.contrail_network_controller.get('image', 'docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/contrail-integration/contrail-network-controller:v1.0.0') }}
+          image: {{ common.addons.contrail_network_controller.get('image', 'yashulyak/contrail-controller:latest') }}
           imagePullPolicy: Always
           args: ["--config-file", "/etc/kube-manager/contrail.conf", "--alsologtostderr"]
           volumeMounts:
diff --git a/kubernetes/files/kube-addons/dashboard/dashboard-address.yaml b/kubernetes/files/kube-addons/dashboard/dashboard-address.yaml
index 86b74a6..763b98f 100644
--- a/kubernetes/files/kube-addons/dashboard/dashboard-address.yaml
+++ b/kubernetes/files/kube-addons/dashboard/dashboard-address.yaml
@@ -1,4 +1,4 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
 apiVersion: v1
 kind: Service
 metadata:
@@ -11,7 +11,7 @@
 spec:
   selector:
     k8s-app: kubernetes-dashboard
-  deprecatedPublicIPs: ["{{ master.addons.dashboard.public_ip }}"]
+  deprecatedPublicIPs: ["{{ common.addons.dashboard.public_ip }}"]
   type: LoadBalancer
   ports:
   - port: 80
diff --git a/kubernetes/files/kube-addons/dashboard/dashboard-endpoint.yaml b/kubernetes/files/kube-addons/dashboard/dashboard-endpoint.yaml
index 23327a5..6e971b2 100644
--- a/kubernetes/files/kube-addons/dashboard/dashboard-endpoint.yaml
+++ b/kubernetes/files/kube-addons/dashboard/dashboard-endpoint.yaml
@@ -1,4 +1,4 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
 apiVersion: v1
 kind: Endpoints
 metadata:
@@ -10,7 +10,7 @@
     addonmanager.kubernetes.io/mode: Reconcile
 subsets:
   - addresses:
-    - ip: {{ master.addons.dashboard.public_ip }}
+    - ip: {{ common.addons.dashboard.public_ip }}
 
     ports:
     - port: 9090
diff --git a/kubernetes/files/kube-addons/dns/kubedns-autoscaler.yaml b/kubernetes/files/kube-addons/dns/kubedns-autoscaler.yaml
index 96161c1..917f162 100644
--- a/kubernetes/files/kube-addons/dns/kubedns-autoscaler.yaml
+++ b/kubernetes/files/kube-addons/dns/kubedns-autoscaler.yaml
@@ -1,4 +1,4 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
 apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
@@ -33,8 +33,8 @@
           # If using small nodes, "nodesPerReplica" should dominate.
           - --default-params={"linear":{"coresPerReplica":256,"nodesPerReplica":10,"min":2}}
           - --logtostderr=true
-          {%- if master.addons.dns.autoscaler.get('poll-period-seconds')  %}
-          - --poll-period-seconds={{ master.addons.dns.autoscaler.get('poll-period-seconds') }}
+          {%- if common.addons.dns.autoscaler.get('poll-period-seconds')  %}
+          - --poll-period-seconds={{ common.addons.dns.autoscaler.get('poll-period-seconds') }}
           {%- endif %}
           - --v=2
 
diff --git a/kubernetes/files/kube-addons/dns/kubedns-rc.yaml b/kubernetes/files/kube-addons/dns/kubedns-rc.yaml
index b583220..01eae39 100644
--- a/kubernetes/files/kube-addons/dns/kubedns-rc.yaml
+++ b/kubernetes/files/kube-addons/dns/kubedns-rc.yaml
@@ -1,4 +1,4 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
 # Copyright 2016 The Kubernetes Authors.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,8 +28,8 @@
   # 2. Default is 1.
   # 3. Will be tuned in real time if DNS horizontal auto-scaling is turned on.
   # replicas set only when required other than 1
-{%- if master.addons.dns.get('replicas', 1) != 1 %}
-  replicas: {{ master.addons.dns.replicas }}
+{%- if common.addons.dns.get('replicas', 1) != 1 %}
+  replicas: {{ common.addons.dns.replicas }}
 {%- endif %}
   strategy:
     rollingUpdate:
@@ -81,7 +81,7 @@
           initialDelaySeconds: 3
           timeoutSeconds: 5
         args:
-        - --domain={{ master.addons.dns.domain }}.
+        - --domain={{ common.addons.dns.domain }}.
         - --dns-port=10053
         - --config-map=kube-dns
         - -v=2
@@ -110,8 +110,8 @@
           successThreshold: 1
           failureThreshold: 5
         args:
-{%- if master.addons.dns.get('dnsmasq', {}) %}
-{%- for option_name, option_value in master.addons.dns.dnsmasq.iteritems() %}
+{%- if common.addons.dns.get('dnsmasq', {}) %}
+{%- for option_name, option_value in common.addons.dns.dnsmasq.iteritems() %}
         - --{{ option_name }}{% if option_value %}={{ option_value }}{% endif %}
 {%- endfor %}
 {%- endif %}
@@ -141,8 +141,8 @@
         args:
         - --v=2
         - --logtostderr
-        - --probe=kubedns,127.0.0.1:10053,kubernetes.default.svc.{{ master.addons.dns.domain }},5,A
-        - --probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.{{ master.addons.dns.domain }},5,A
+        - --probe=kubedns,127.0.0.1:10053,kubernetes.default.svc.{{ common.addons.dns.domain }},5,A
+        - --probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.{{ common.addons.dns.domain }},5,A
         ports:
         - containerPort: 10054
           name: metrics
diff --git a/kubernetes/files/kube-addons/dns/kubedns-svc.yaml b/kubernetes/files/kube-addons/dns/kubedns-svc.yaml
index 83a4103..ab0c65b 100644
--- a/kubernetes/files/kube-addons/dns/kubedns-svc.yaml
+++ b/kubernetes/files/kube-addons/dns/kubedns-svc.yaml
@@ -1,4 +1,4 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
 # Copyright 2016 The Kubernetes Authors.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,7 +26,7 @@
 spec:
   selector:
     k8s-app: kube-dns
-  clusterIP: {{ master.addons.dns.server }}
+  clusterIP: {{ common.addons.dns.server }}
   ports:
   - name: dns
     port: 53
diff --git a/kubernetes/files/kube-addons/heapster-influxdb/heapster-address.yaml b/kubernetes/files/kube-addons/heapster-influxdb/heapster-address.yaml
index 04462b8..5fa86f3 100644
--- a/kubernetes/files/kube-addons/heapster-influxdb/heapster-address.yaml
+++ b/kubernetes/files/kube-addons/heapster-influxdb/heapster-address.yaml
@@ -1,4 +1,4 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
 apiVersion: v1
 kind: Service
 metadata:
@@ -15,5 +15,5 @@
     targetPort: 8082
   selector:
     k8s-app: heapster
-  deprecatedPublicIPs: ['{{ master.addons.heapster_influxdb.public_ip }}']
+  deprecatedPublicIPs: ['{{ common.addons.heapster_influxdb.public_ip }}']
   type: LoadBalancer
diff --git a/kubernetes/files/kube-addons/heapster-influxdb/heapster-endpoint.yaml b/kubernetes/files/kube-addons/heapster-influxdb/heapster-endpoint.yaml
index 0790a2d..8d915b5 100644
--- a/kubernetes/files/kube-addons/heapster-influxdb/heapster-endpoint.yaml
+++ b/kubernetes/files/kube-addons/heapster-influxdb/heapster-endpoint.yaml
@@ -1,4 +1,4 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
 apiVersion: v1
 kind: Endpoints
 metadata:
@@ -11,7 +11,7 @@
     addonmanager.kubernetes.io/mode: Reconcile
 subsets:
   - addresses:
-    - ip: {{ master.addons.heapster_influxdb.public_ip }}
+    - ip: {{ common.addons.heapster_influxdb.public_ip }}
 
     ports:
     - port: 8082
diff --git a/kubernetes/files/kube-addons/helm/helm-tiller-deploy.yml b/kubernetes/files/kube-addons/helm/helm-tiller-deploy.yml
index f3501ce..4c87aa8 100644
--- a/kubernetes/files/kube-addons/helm/helm-tiller-deploy.yml
+++ b/kubernetes/files/kube-addons/helm/helm-tiller-deploy.yml
@@ -1,4 +1,4 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
 apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
@@ -25,7 +25,7 @@
         - key: node-role.kubernetes.io/master
           effect: NoSchedule
       containers:
-      - image: {{ master.addons.helm.tiller_image }}
+      - image: {{ common.addons.helm.tiller_image }}
         imagePullPolicy: IfNotPresent
         resources:
           requests:
diff --git a/kubernetes/files/kube-addons/netchecker/netchecker-agent.yml b/kubernetes/files/kube-addons/netchecker/netchecker-agent.yml
index f937c52..37e40d9 100644
--- a/kubernetes/files/kube-addons/netchecker/netchecker-agent.yml
+++ b/kubernetes/files/kube-addons/netchecker/netchecker-agent.yml
@@ -1,4 +1,4 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
 apiVersion: extensions/v1beta1
 kind: DaemonSet
 metadata:
@@ -6,7 +6,7 @@
     app: netchecker-agent
     addonmanager.kubernetes.io/mode: Reconcile
   name: netchecker-agent
-  namespace: {{ master.addons.netchecker.namespace }}
+  namespace: {{ common.addons.netchecker.namespace }}
 spec:
   template:
     metadata:
@@ -19,7 +19,7 @@
           effect: NoSchedule
       containers:
         - name: netchecker-agent
-          image: {{ master.addons.netchecker.agent_image }}
+          image: {{ common.addons.netchecker.agent_image }}
           env:
             - name: MY_NODE_NAME
               valueFrom:
@@ -32,8 +32,8 @@
           args:
             - "-v=5"
             - "-alsologtostderr=true"
-            - "-serverendpoint=netchecker:{{ master.addons.netchecker.port }}"
-            - "-reportinterval={{ master.addons.netchecker.interval }}"
-{%- if master.addons.netchecker.get('agent_probeurls') %}
-            - "-probeurls={{ master.addons.netchecker.agent_probeurls }}"
+            - "-serverendpoint=netchecker:{{ common.addons.netchecker.port }}"
+            - "-reportinterval={{ common.addons.netchecker.interval }}"
+{%- if common.addons.netchecker.get('agent_probeurls') %}
+            - "-probeurls={{ common.addons.netchecker.agent_probeurls }}"
 {%- endif %}
diff --git a/kubernetes/files/kube-addons/netchecker/netchecker-server.yml b/kubernetes/files/kube-addons/netchecker/netchecker-server.yml
index 95e05b4..bd1fa80 100644
--- a/kubernetes/files/kube-addons/netchecker/netchecker-server.yml
+++ b/kubernetes/files/kube-addons/netchecker/netchecker-server.yml
@@ -1,9 +1,9 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
 apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
   name: netchecker-server
-  namespace: {{ master.addons.netchecker.namespace }}
+  namespace: {{ common.addons.netchecker.namespace }}
 spec:
   replicas: 1
   template:
@@ -13,18 +13,18 @@
         addonmanager.kubernetes.io/mode: Reconcile
       annotations:
         prometheus.io/scrape: "true"
-        prometheus.io/port: "{{ master.addons.netchecker.port }}"
+        prometheus.io/port: "{{ common.addons.netchecker.port }}"
     spec:
       tolerations:
         - key: node-role.kubernetes.io/master
           effect: NoSchedule
       containers:
         - name: netchecker-server
-          image: {{ master.addons.netchecker.server_image }}
+          image: {{ common.addons.netchecker.server_image }}
           ports:
-            - containerPort: {{ master.addons.netchecker.port }}
+            - containerPort: {{ common.addons.netchecker.port }}
           args:
             - "-v=5"
             - "-logtostderr"
             - "-kubeproxyinit"
-            - "-endpoint=0.0.0.0:{{ master.addons.netchecker.port }}"
+            - "-endpoint=0.0.0.0:{{ common.addons.netchecker.port }}"
diff --git a/kubernetes/files/kube-addons/netchecker/netchecker-svc.yml b/kubernetes/files/kube-addons/netchecker/netchecker-svc.yml
index 301e69e..e880ed5 100644
--- a/kubernetes/files/kube-addons/netchecker/netchecker-svc.yml
+++ b/kubernetes/files/kube-addons/netchecker/netchecker-svc.yml
@@ -1,9 +1,9 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
 kind: Service
 apiVersion: "v1"
 metadata:
   name: netchecker
-  namespace: {{ master.addons.netchecker.namespace }}
+  namespace: {{ common.addons.netchecker.namespace }}
   labels:
     addonmanager.kubernetes.io/mode: Reconcile
 spec:
@@ -11,6 +11,6 @@
     app: netchecker-server
   ports:
     - protocol: "TCP"
-      port: {{ master.addons.netchecker.port }}
-      targetPort: {{ master.addons.netchecker.port }}
+      port: {{ common.addons.netchecker.port }}
+      targetPort: {{ common.addons.netchecker.port }}
   type: NodePort
diff --git a/kubernetes/files/kube-addons/registry/registry-rc.yaml b/kubernetes/files/kube-addons/registry/registry-rc.yaml
index eb69a0c..bd2f50f 100644
--- a/kubernetes/files/kube-addons/registry/registry-rc.yaml
+++ b/kubernetes/files/kube-addons/registry/registry-rc.yaml
@@ -1,4 +1,4 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
 apiVersion: v1
 kind: ReplicationController
 metadata:
@@ -35,28 +35,28 @@
             memory: 100Mi
         env:
         - name: REGISTRY_HTTP_ADDR
-          value: {{ master.addons.registry.bind.get('host', '0.0.0.0'}}:{{ master.addons.registry.bind.get('port', '5000'}}
+          value: {{ common.addons.registry.bind.get('host', '0.0.0.0'}}:{{ common.addons.registry.bind.get('port', '5000'}}
         - name: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY
           value: /var/lib/registry
         ports:
-        - containerPort: {{ master.addons.registry.bind.get('port', '5000') }}
+        - containerPort: {{ common.addons.registry.bind.get('port', '5000') }}
           name: registry
           protocol: TCP
-      {%- if master.addons.registry.volume is defined %}
+      {%- if common.addons.registry.volume is defined %}
         volumeMounts:
         - name: image-store
           mountPath: /var/lib/registry
       volumes:
         - name: image-store
-          {%- if master.addons.registry.volume.get('type', 'emptyDir') %}
+          {%- if common.addons.registry.volume.get('type', 'emptyDir') %}
           emptyDir: {}
-          {%- elif master.addons.registry.volume.type == 'hostPath' %}
+          {%- elif common.addons.registry.volume.type == 'hostPath' %}
           hostPath:
-            path: {{ master.addons.registry.volume.path }}
-          {%- elif master.addons.registry.volume.type == 'glusterfs' %}
+            path: {{ common.addons.registry.volume.path }}
+          {%- elif common.addons.registry.volume.type == 'glusterfs' %}
           glusterfs:
-            endpoints: {{ master.addons.registry.volume.endpoints }}
-            path: {{ master.addons.registry.volume.path }}
-            readOnly: {{ master.addons.registry.volume.read_only }}
+            endpoints: {{ common.addons.registry.volume.endpoints }}
+            path: {{ common.addons.registry.volume.path }}
+            readOnly: {{ common.addons.registry.volume.read_only }}
           {%- endif %}
       {%- endif %}
diff --git a/kubernetes/files/kube-addons/registry/registry.svc b/kubernetes/files/kube-addons/registry/registry.svc
index 0baec84..ad78a96 100644
--- a/kubernetes/files/kube-addons/registry/registry.svc
+++ b/kubernetes/files/kube-addons/registry/registry.svc
@@ -1,4 +1,4 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
 apiVersion: v1
 kind: Service
 metadata:
@@ -14,5 +14,5 @@
     k8s-app: kube-registry
   ports:
   - name: registry
-    port: {{ master.addons.registry.bind.get('port', '5000') }}
+    port: {{ common.addons.registry.bind.get('port', '5000') }}
     protocol: TCP
diff --git a/kubernetes/files/kube-addons/virtlet/virtlet-ds.yml b/kubernetes/files/kube-addons/virtlet/virtlet-ds.yml
index 511580c..7dd08be 100644
--- a/kubernetes/files/kube-addons/virtlet/virtlet-ds.yml
+++ b/kubernetes/files/kube-addons/virtlet/virtlet-ds.yml
@@ -1,10 +1,11 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
+{%- from "kubernetes/map.jinja" import master with context -%}
 ---
 apiVersion: extensions/v1beta1
 kind: DaemonSet
 metadata:
   name: virtlet
-  namespace: {{ master.addons.virtlet.namespace }}
+  namespace: {{ common.addons.virtlet.namespace }}
 spec:
   template:
     metadata:
@@ -46,7 +47,7 @@
       # debugging criproxy
       # At the end it ensures that /var/lib/libvirt/images exists on node.
       - name: prepare-node
-        image: {{ master.addons.virtlet.image }}
+        image: {{ common.addons.virtlet.image }}
         imagePullPolicy: IfNotPresent
         command:
         - /prepare-node.sh
@@ -69,7 +70,7 @@
 
       containers:
       - name: virtlet
-        image: {{ master.addons.virtlet.image }}
+        image: {{ common.addons.virtlet.image }}
         # In case we inject local virtlet image we want to use it not officially available one
         imagePullPolicy: IfNotPresent
         volumeMounts:
@@ -122,7 +123,7 @@
         - name: VIRTLET_VM_LOG_LOCATION
           value: "/var/log/vms"
       - name: virtlet-log
-        image: {{ master.addons.virtlet.image }}
+        image: {{ common.addons.virtlet.image }}
         imagePullPolicy: IfNotPresent
         command:
           - /virtlet_log
@@ -217,13 +218,13 @@
 subjects:
 - kind: ServiceAccount
   name: virtlet
-  namespace: {{ master.addons.virtlet.namespace }}
+  namespace: {{ common.addons.virtlet.namespace }}
 ---
 kind: ClusterRole
 apiVersion: rbac.authorization.k8s.io/v1beta1
 metadata:
   name: virtlet
-  namespace: {{ master.addons.virtlet.namespace }}
+  namespace: {{ common.addons.virtlet.namespace }}
 rules:
   - apiGroups:
       - ""
@@ -236,4 +237,4 @@
 kind: ServiceAccount
 metadata:
   name: virtlet
-  namespace: {{ master.addons.virtlet.namespace }}
+  namespace: {{ common.addons.virtlet.namespace }}
diff --git a/kubernetes/files/kubeconfig.sh b/kubernetes/files/kubeconfig.sh
index 0b029fc..74ab159 100644
--- a/kubernetes/files/kubeconfig.sh
+++ b/kubernetes/files/kubeconfig.sh
@@ -1,14 +1,14 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
 #!/bin/bash
 
 # server url
-server="$(cat /etc/kubernetes/kubelet.kubeconfig  | grep server | awk '{ print $2 }')"
+server="$(awk '/server/ { print $2 }' /etc/kubernetes/kubelet.kubeconfig)"
 
 # certificates
-cert="$(cat /etc/kubernetes/ssl/kubelet-client.crt | base64 | sed 's/^/      /g')"
-key="$(cat /etc/kubernetes/ssl/kubelet-client.key | base64 | sed 's/^/      /g')"
-ca="$(cat /etc/kubernetes/ssl/ca-kubernetes.crt | base64 | sed 's/^/      /g')"
-cluster="{{ master.addons.dns.domain }}"
+cert="$(base64 /etc/kubernetes/ssl/kubelet-client.crt | sed 's/^/      /g')"
+key="$(base64 /etc/kubernetes/ssl/kubelet-client.key | sed 's/^/      /g')"
+ca="$(base64 /etc/kubernetes/ssl/ca-kubernetes.crt | sed 's/^/      /g')"
+cluster="{{ common.addons.dns.domain }}"
 
 echo "apiVersion: v1
 clusters:
diff --git a/kubernetes/files/kubelet/default.master b/kubernetes/files/kubelet/default.master
index b388671..5367da1 100644
--- a/kubernetes/files/kubelet/default.master
+++ b/kubernetes/files/kubelet/default.master
@@ -1,11 +1,12 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
+{%- from "kubernetes/map.jinja" import master with context -%}
 
 # test_args has to be kept at the end, so they'll overwrite any prior configuration
 DAEMON_ARGS="\
 --pod-manifest-path=/etc/kubernetes/manifests \
 --allow-privileged={{ master.kubelet.allow_privileged }} \
---cluster_dns={{ master.addons.dns.server }} \
---cluster_domain={{ master.addons.dns.domain }} \
+--cluster_dns={{ common.addons.dns.server }} \
+--cluster_domain={{ common.addons.dns.domain }} \
 --cni-bin-dir={{ master.apiserver.get('cni_bin_dir', '/opt/cni/bin') }} \
 --v={{ master.get('verbosity', 2) }} \
 --node-labels=node-role.kubernetes.io/master=true \
diff --git a/kubernetes/files/kubelet/default.pool b/kubernetes/files/kubelet/default.pool
index df49d4c..15e5b72 100644
--- a/kubernetes/files/kubelet/default.pool
+++ b/kubernetes/files/kubelet/default.pool
@@ -1,4 +1,5 @@
-{%- from "kubernetes/map.jinja" import pool with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
+{%- from "kubernetes/map.jinja" import pool with context -%}
 
 # test_args has to be kept at the end, so they'll overwrite any prior configuration
 DAEMON_ARGS="\
@@ -6,8 +7,8 @@
 --kubeconfig=/etc/kubernetes/kubelet.kubeconfig \
 --pod-manifest-path=/etc/kubernetes/manifests \
 --allow-privileged={{ pool.kubelet.allow_privileged }} \
---cluster_dns={{ pool.cluster_dns }} \
---cluster_domain={{ pool.cluster_domain }} \
+--cluster_dns={{ common.addons.dns.server }} \
+--cluster_domain={{ common.addons.dns.domain }} \
 --cni-bin-dir={{ pool.apiserver.get('cni_bin_dir', '/opt/cni/bin') }} \
 --v={{ pool.get('verbosity', 2) }} \
 --node-labels=node-role.kubernetes.io/node=true \
@@ -16,11 +17,13 @@
 --network-plugin-dir=/etc/cni/net.d \
 {%- endif %}
 --file-check-frequency={{ pool.kubelet.frequency }} \
+{%- if common.addons.get('virtlet', {}).get('enabled') %}
 --container-runtime=remote \
 --container-runtime-endpoint=/var/run/criproxy.sock \
 --image-service-endpoint=/var/run/criproxy.sock \
+{%- endif %}
 --enable-controller-attach-detach=false \
 {%- for key, value in pool.get('kubelet', {}).get('daemon_opts', {}).iteritems() %}
 --{{ key }}="{{ value }}" \
-{% endfor %}
+{%- endfor %}
 "
diff --git a/kubernetes/files/kubelet/kubelet.kubeconfig.master b/kubernetes/files/kubelet/kubelet.kubeconfig.master
index 5f66a5f..178270b 100644
--- a/kubernetes/files/kubelet/kubelet.kubeconfig.master
+++ b/kubernetes/files/kubelet/kubelet.kubeconfig.master
@@ -1,21 +1,21 @@
-{%- from "kubernetes/map.jinja" import master with context %}
-
+{%- from "kubernetes/map.jinja" import common with context -%}
+{%- from "kubernetes/map.jinja" import master with context -%}
 apiVersion: v1
 kind: Config
-current-context: {{ master.addons.dns.domain }}
+current-context: {{ common.addons.dns.domain }}
 preferences: {}
 clusters:
 - cluster:
     certificate-authority: /etc/kubernetes/ssl/ca-kubernetes.crt
     server: https://{{ master.apiserver.address }}:{{ master.apiserver.get('secure_port', '443') }}
-  name: {{ master.addons.dns.domain }}
+  name: {{ common.addons.dns.domain }}
 contexts:
 - context:
-    cluster: {{ master.addons.dns.domain }}
-    user: kubelet-{{ master.addons.dns.domain }}
-  name: {{ master.addons.dns.domain }}
+    cluster: {{ common.addons.dns.domain }}
+    user: kubelet-{{ common.addons.dns.domain }}
+  name: {{ common.addons.dns.domain }}
 users:
-- name: kubelet-{{ master.addons.dns.domain }}
+- name: kubelet-{{ common.addons.dns.domain }}
   user:
     client-certificate: /etc/kubernetes/ssl/kubelet-client.crt
     client-key: /etc/kubernetes/ssl/kubelet-client.key
diff --git a/kubernetes/files/kubelet/kubelet.kubeconfig.pool b/kubernetes/files/kubelet/kubelet.kubeconfig.pool
index 392a8da..eabe033 100644
--- a/kubernetes/files/kubelet/kubelet.kubeconfig.pool
+++ b/kubernetes/files/kubelet/kubelet.kubeconfig.pool
@@ -1,21 +1,21 @@
-{%- from "kubernetes/map.jinja" import pool with context %}
-
+{%- from "kubernetes/map.jinja" import pool with context -%}
+{%- from "kubernetes/map.jinja" import common with context -%}
 apiVersion: v1
 kind: Config
-current-context: {{ pool.cluster_domain }}
+current-context: {{ common.cluster_domain }}
 preferences: {}
 clusters:
 - cluster:
     certificate-authority: /etc/kubernetes/ssl/ca-kubernetes.crt
     server: https://{{ pool.apiserver.host }}:{{ pool.apiserver.get('port', '443') }}
-  name: {{ pool.cluster_domain }}
+  name: {{ common.cluster_domain }}
 contexts:
 - context:
-    cluster: {{ pool.cluster_domain }}
-    user: kubelet-{{ pool.cluster_domain }}
-  name: {{ pool.cluster_domain }}
+    cluster: {{ common.cluster_domain }}
+    user: kubelet-{{ common.cluster_domain }}
+  name: {{ common.cluster_domain }}
 users:
-- name: kubelet-{{ pool.cluster_domain }}
+- name: kubelet-{{ common.cluster_domain }}
   user:
     client-certificate: /etc/kubernetes/ssl/kubelet-client.crt
     client-key: /etc/kubernetes/ssl/kubelet-client.key
diff --git a/kubernetes/master/kube-addons.sls b/kubernetes/master/kube-addons.sls
index 61eda90..04f54ab 100644
--- a/kubernetes/master/kube-addons.sls
+++ b/kubernetes/master/kube-addons.sls
@@ -1,4 +1,5 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
+{%- from "kubernetes/map.jinja" import master with context -%}
 {%- if master.enabled %}
 
 addon-dir-create:
@@ -27,7 +28,7 @@
 
 {% endif %}
 
-{%- if master.addons.get('virtlet', {}).get('enabled') %}
+{%- if common.addons.get('virtlet', {}).get('enabled') %}
 /etc/kubernetes/addons/virtlet/virtlet-ds.yml:
   file.managed:
     - source: salt://kubernetes/files/kube-addons/virtlet/virtlet-ds.yml
@@ -38,7 +39,7 @@
 
 {% endif %}
 
-{%- if master.addons.get('calico_policy', {}).get('enabled', False) and master.network.engine == "calico" %}
+{%- if common.addons.get('calico_policy', {}).get('enabled', False) and master.network.engine == "calico" %}
 /etc/kubernetes/addons/calico_policy/calico-policy-controller.yml:
   file.managed:
     - source: salt://kubernetes/files/kube-addons/calico-policy/calico-policy-controller.yml
@@ -50,7 +51,7 @@
 {% endif %}
 
 
-{%- if master.addons.helm.enabled %}
+{%- if common.addons.helm.enabled %}
 /etc/kubernetes/addons/helm/helm-tiller-deploy.yml:
   file.managed:
     - source: salt://kubernetes/files/kube-addons/helm/helm-tiller-deploy.yml
@@ -61,7 +62,7 @@
 
 {% endif %}
 
-{%- if master.addons.netchecker.enabled %}
+{%- if common.addons.netchecker.enabled %}
 
 {%- for resource in ['svc', 'server', 'agent'] %}
 
@@ -77,8 +78,7 @@
 
 {% endif %}
 
-
-{%- if master.addons.dns.enabled %}
+{%- if common.addons.dns.enabled %}
 
 /etc/kubernetes/addons/dns/kubedns-svc.yaml:
   file.managed:
@@ -96,7 +96,7 @@
     - dir_mode: 755
     - makedirs: True
 
-{% if master.addons.dns.get('autoscaler', {}).get('enabled', True) %}
+{% if common.addons.dns.get('autoscaler', {}).get('enabled', True) %}
 
 /etc/kubernetes/addons/dns/kubedns-autoscaler.yaml:
   file.managed:
@@ -110,7 +110,7 @@
 
 {% endif %}
 
-{%- if master.addons.dashboard.enabled %}
+{%- if common.addons.dashboard.enabled %}
 
 /etc/kubernetes/addons/dashboard/dashboard-service.yaml:
   file.managed:
@@ -130,7 +130,7 @@
 
 {% endif %}
 
-{%- if master.addons.heapster_influxdb.enabled %}
+{%- if common.addons.heapster_influxdb.enabled %}
 
 /etc/kubernetes/addons/heapster-influxdb/heapster-address.yaml:
   file.managed:
diff --git a/kubernetes/master/setup.sls b/kubernetes/master/setup.sls
index b45ef2e..7c852ec 100644
--- a/kubernetes/master/setup.sls
+++ b/kubernetes/master/setup.sls
@@ -1,4 +1,5 @@
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
+{%- from "kubernetes/map.jinja" import master with context -%}
 {%- if master.enabled %}
 
 /etc/kubernetes/kubeconfig.sh:
@@ -85,8 +86,8 @@
 
 {%- endif %}
 
-{%- if master.addons.get('virtlet', {}).get('enabled') %}
-{% for host in master.addons.virtlet.hosts %}
+{%- if common.addons.get('virtlet', {}).get('enabled') %}
+{% for host in common.addons.virtlet.hosts %}
 
 label_virtlet_{{ host }}:
   cmd.run:
diff --git a/metadata/service/common.yml b/metadata/service/common.yml
index 12f782f..a62fb9f 100644
--- a/metadata/service/common.yml
+++ b/metadata/service/common.yml
@@ -6,6 +6,45 @@
     kubernetes_cluster_domain: ${_param:cluster_domain}
   kubernetes:
     common:
+      addons:
+        dns:
+          enabled: true
+          replicas: 1
+          autoscaler:
+            enabled: true
+          domain: ${_param:kubernetes_cluster_domain}
+          server: 10.254.0.10
+          dnsmasq:
+            cache-size: 1000
+            no-resolv:
+            server: 127.0.0.1#10053
+            log-facility: "-"
+        dashboard:
+          enabled: True
+        heapster_influxdb:
+          enabled: False
+        helm:
+          enabled: False
+          tiller_image: gcr.io/kubernetes-helm/tiller:v2.3.0
+        netchecker:
+          enabled: False
+          interval: 60
+          namespace: netchecker
+          port: 80
+          agent_image: mirantis/k8s-netchecker-agent:v1.1.0
+          server_image: mirantis/k8s-netchecker-server:v1.1.0
+        calico_policy:
+          enabled: False
+          image: calico/kube-policy-controller:v0.5.4
+          namespace: kube-system
+        contrail_network_controller:
+          enabled: False
+          namespace: kube-system
+          image: yashulyak/contrail-controller:latest
+        virtlet:
+          enabled: False
+          namespace: kube-system
+          image: mirantis/virtlet:v0.7.0
       cluster_domain: ${_param:kubernetes_cluster_domain}
       network:
         engine: none
diff --git a/metadata/service/master/cluster.yml b/metadata/service/master/cluster.yml
index fb17497..7262174 100644
--- a/metadata/service/master/cluster.yml
+++ b/metadata/service/master/cluster.yml
@@ -35,45 +35,6 @@
             name: ${_param:cluster_node02_hostname}
           - host: ${_param:cluster_node03_address}
             name: ${_param:cluster_node03_hostname}
-      addons:
-        dns:
-          enabled: true
-          replicas: 1
-          autoscaler:
-            enabled: true
-          domain: ${_param:kubernetes_cluster_domain}
-          server: 10.254.0.10
-          dnsmasq:
-            cache-size: 1000
-            no-resolv:
-            server: 127.0.0.1#10053
-            log-facility: "-"
-        dashboard:
-          enabled: True
-        heapster_influxdb:
-          enabled: False
-        helm:
-          enabled: False
-          tiller_image: gcr.io/kubernetes-helm/tiller:v2.3.0
-        netchecker:
-          enabled: False
-          interval: 60
-          namespace: netchecker
-          port: 80
-          agent_image: mirantis/k8s-netchecker-agent:v1.1.0
-          server_image: mirantis/k8s-netchecker-server:v1.1.0
-        calico_policy:
-          enabled: False
-          image: calico/kube-policy-controller:v0.5.4
-          namespace: kube-system
-        contrail_network_controller:
-          enabled: False
-          namespace: kube-system
-          image: yashulyak/contrail-controller:latest
-        virtlet:
-          enabled: False
-          namespace: kube-system
-          image: mirantis/virtlet:latest
       token:
         admin: ${_param:kubernetes_admin_token}
         kubelet: ${_param:kubernetes_kubelet_token}
diff --git a/metadata/service/master/single.yml b/metadata/service/master/single.yml
index 86d5b7e..ac9e2aa 100644
--- a/metadata/service/master/single.yml
+++ b/metadata/service/master/single.yml
@@ -61,7 +61,7 @@
         virtlet:
           enabled: False
           namespace: kube-system
-          image: mirantis/virtlet:latest
+          image: mirantis/virtlet:v0.7.0
       token:
         admin: ${_param:kubernetes_admin_token}
         kubelet: ${_param:kubernetes_kubelet_token}
diff --git a/tests/pillar/master_cluster.sls b/tests/pillar/master_cluster.sls
index a904a72..af99ceb 100644
--- a/tests/pillar/master_cluster.sls
+++ b/tests/pillar/master_cluster.sls
@@ -4,8 +4,8 @@
     network:
       engine: none
     hyperkube:
-      image: hyperkube-amd64:v1.5.0-beta.3-1
-  master:
+      image: hyperkube-amd64:v1.6.4-3
+      hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd
     addons:
       dns:
         domain: cluster.local
@@ -41,7 +41,8 @@
         hosts:
         - cmp01
         - cmp02
-        image: mirantis/virtlet:latest
+        image: mirantis/virtlet:v0.7.0
+  master:
     admin:
       password: password
       username: admin
@@ -103,5 +104,3 @@
         enabled: true
       netchecker:
         enabled: true
-    hyperkube:
-      hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd
diff --git a/tests/pillar/master_contrail.sls b/tests/pillar/master_contrail.sls
index 667783e..ff03327 100644
--- a/tests/pillar/master_contrail.sls
+++ b/tests/pillar/master_contrail.sls
@@ -4,8 +4,8 @@
     network:
       engine: opencontrail
     hyperkube:
-      image: hyperkube-amd64:v1.5.0-beta.3-1
-  master:
+      image: hyperkube-amd64:v1.6.4-3
+      hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd
     addons:
       dns:
         domain: cluster.local
@@ -35,10 +35,18 @@
         enabled: true
         namespace: kube-system
         image: image
+      virtlet:
+        enabled: true
+        namespace: kube-system
+        image: mirantis/virtlet:v0.7.0
+        hosts:
+        - cmp01
+        - cmp02
       contrail_network_controller:
         enabled: true
         namespace: kube-system
         image: yashulyak/contrail-controller:latest
+  master:
     admin:
       password: password
       username: admin
@@ -103,5 +111,3 @@
         enabled: true
       netchecker:
         enabled: true
-    hyperkube:
-      hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd
diff --git a/tests/pillar/master_contrail4_0.sls b/tests/pillar/master_contrail4_0.sls
index a7f5d93..202b25d 100644
--- a/tests/pillar/master_contrail4_0.sls
+++ b/tests/pillar/master_contrail4_0.sls
@@ -4,9 +4,8 @@
     network:
       engine: opencontrail
     hyperkube:
-      image: hyperkube-amd64:v1.5.0-beta.3-1
-  master:
-    service_addresses: 127.0.0.1/24
+      image: hyperkube-amd64:v1.6.4-3
+      hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd
     addons:
       dns:
         domain: cluster.local
@@ -32,6 +31,19 @@
         server_image: image
         agent_image: image
         agent_probeurls: "http://ipinfo.io"
+      calico_policy:
+        enabled: true
+        namespace: kube-system
+        image: image
+      virtlet:
+        enabled: true
+        namespace: kube-system
+        image: mirantis/virtlet:v0.7.0
+        hosts:
+        - cmp01
+        - cmp02
+  master:
+    service_addresses: 127.0.0.1/24
     admin:
       password: password
       username: admin
@@ -100,5 +112,3 @@
         enabled: true
       netchecker:
         enabled: true
-    hyperkube:
-      hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd
diff --git a/tests/pillar/pool_cluster.sls b/tests/pillar/pool_cluster.sls
index f9d06f4..ce9769c 100644
--- a/tests/pillar/pool_cluster.sls
+++ b/tests/pillar/pool_cluster.sls
@@ -4,7 +4,23 @@
     network:
       engine: none
     hyperkube:
-      image: hyperkube-amd64:v1.5.0-beta.3-1
+      image: hyperkube-amd64:v1.6.4-3
+      hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd
+    addons:
+      dns:
+        domain: cluster.local
+        enabled: false
+        replicas: 1
+        server: 10.254.0.10
+        autoscaler:
+          enabled: true
+      virtlet:
+        enabled: true
+        namespace: kube-system
+        image: mirantis/virtlet:v0.7.0
+        hosts:
+        - cmp01
+        - cmp02
   pool:
     enabled: true
     version: v1.2.0
@@ -19,8 +35,6 @@
         - host: 127.0.0.1
         - host: 127.0.0.1
     address: 0.0.0.0
-    cluster_dns: 10.254.0.10
-    cluster_domain: cluster.local
     kubelet:
       config: /etc/kubernetes/manifests
       allow_privileged: True
@@ -48,5 +62,3 @@
           port: 4001
         - host: 127.0.0.1
           port: 4001
-    hyperkube:
-      hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd
diff --git a/tests/pillar/pool_contrail4_0.sls b/tests/pillar/pool_contrail4_0.sls
index 6cce55d..a4680fc 100644
--- a/tests/pillar/pool_contrail4_0.sls
+++ b/tests/pillar/pool_contrail4_0.sls
@@ -4,7 +4,23 @@
     network:
       engine: none
     hyperkube:
-      image: hyperkube-amd64:v1.5.0-beta.3-1
+      image: hyperkube-amd64:v1.6.4-3
+      hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd
+    addons:
+      dns:
+        domain: cluster.local
+        enabled: false
+        replicas: 1
+        server: 10.254.0.10
+        autoscaler:
+          enabled: true
+      virtlet:
+        enabled: true
+        namespace: kube-system
+        image: mirantis/virtlet:v0.7.0
+        hosts:
+        - cmp01
+        - cmp02
   pool:
     enabled: true
     version: v1.2.0
@@ -19,8 +35,6 @@
         - host: 127.0.0.1
         - host: 127.0.0.1
     address: 0.0.0.0
-    cluster_dns: 10.254.0.10
-    cluster_domain: cluster.local
     kubelet:
       config: /etc/kubernetes/manifests
       allow_privileged: True
@@ -35,5 +49,3 @@
       config:
         api:
           host: 127.0.0.1
-    hyperkube:
-      hash: hnsj0XqABgrSww7Nqo7UVTSZLJUt2XRd