{%- from "kubernetes/map.jinja" import common with context -%}
{%- from "kubernetes/map.jinja" import master with context -%}
{%- if master.enabled %}

addon-dir-create:
  file.directory:
    - name: /etc/kubernetes/addons
    - user: root
    - group: root
    - mode: 0755

{%- if common.addons.get('metallb', {}).get('enabled', False) %}
/etc/kubernetes/addons/metallb/metallb.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/metallb/metallb.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True
{% endif %}

{%- if master.network.get('flannel', {}).get('enabled', False) %}
/etc/kubernetes/addons/flannel/flannel.yml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/flannel/flannel.yml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True
{% endif %}

{%- if master.network.get('opencontrail', {}).get('enabled', False) and master.network.opencontrail.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
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

/etc/kubernetes/addons/contrail-network-controller/contrail-network-controller-deploy.yml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/contrail-network-controller/contrail-network-controller-deploy.yml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

{%- elif master.network.get('opencontrail', {}).get('enabled', False) and master.network.opencontrail.get('version', 3.0) > 3.0 %}

/etc/kubernetes/addons/contrail/contrail.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/contrail/contrail.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

/etc/kubernetes/addons/contrail/kube-manager.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/contrail/kube-manager.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

{% endif %}

{%- 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
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

{% endif %}

{%- if common.addons.get('calico_policy', {}).get('enabled', False) and master.network.get('calico', {}).get('enabled', False) %}
/etc/kubernetes/addons/calico_policy/calico-policy-controller.yml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/calico-policy/calico-policy-controller.yml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

{% endif %}


{%- if common.addons.get('helm', {'enabled': False}).enabled %}
/etc/kubernetes/addons/helm/helm-tiller-deploy.yml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/helm/helm-tiller-deploy.yml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

{%- if 'RBAC' in master.auth.get('mode', "") %}

/etc/kubernetes/addons/helm/helm-role.yml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/helm/helm-role.yml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

/etc/kubernetes/addons/helm/helm-serviceaccount.yml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/helm/helm-serviceaccount.yml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

{%- endif %}

{% endif %}

{%- if common.addons.storageclass is defined %}

{%- for storageclass_name, storageclass in common.addons.get('storageclass', {}).items() %}
{%- set storageclass_name = storageclass.get('name', storageclass_name) %}

/etc/kubernetes/addons/storageclass/{{ storageclass_name }}.yaml:
  file.managed:
  - source: salt://kubernetes/files/kube-addons/storageclass/{{ storageclass.provisioner }}.yaml
  - template: jinja
  - makedirs: True
  - dir_mode: 755
  - group: root
  - defaults:
      storageclass_name: {{ storageclass_name }}
      storageclass: {{ storageclass|yaml }}

{%- endfor %}

{% endif %}

{%- if common.addons.get('netchecker', {'enabled': False}).enabled %}

{%- set netchecker_resources = ['svc', 'server', 'agent', 'serviceaccount'] %}

{%- if 'RBAC' in master.auth.get('mode', "") %}

{%- set netchecker_resources = netchecker_resources + ['roles'] %}

{%- endif %}

{%- for resource in netchecker_resources %}

/etc/kubernetes/addons/netchecker/netchecker-{{ resource }}.yml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/netchecker/netchecker-{{ resource }}.yml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

{%- endfor %}

{% endif %}

{%- if common.monitoring.get('backend', "") == 'prometheus' %}

{%- if 'RBAC' in master.auth.get('mode', "") %}

/etc/kubernetes/addons/prometheus/prometheus-roles.yml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/prometheus/prometheus-roles.yml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

{%- endif %}

{%- endif %}

{%- if common.addons.get('dns', {'enabled': False}).enabled %}

/etc/kubernetes/addons/dns/kubedns-svc.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/dns/kubedns-svc.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

/etc/kubernetes/addons/dns/kubedns-rc.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/dns/kubedns-rc.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

/etc/kubernetes/addons/dns/kubedns-sa.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/dns/kubedns-sa.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

{% if common.addons.dns.get('autoscaler', {}).get('enabled', True) %}

/etc/kubernetes/addons/dns/kubedns-autoscaler.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/dns/kubedns-autoscaler.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

{%- if 'RBAC' in master.auth.get('mode', "") %}

/etc/kubernetes/addons/dns/kubedns-autoscaler-rbac.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/dns/kubedns-autoscaler-rbac.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

/etc/kubernetes/addons/dns/kubedns-clusterrole.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/dns/kubedns-clusterrole.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

{% endif %}

{% endif %}

{%- if common.addons.coredns.enabled or master.federation.enabled %}
/etc/kubernetes/addons/coredns/coredns-etcd-operator-deployment.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/coredns/coredns-etcd-operator-deployment.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

/etc/kubernetes/addons/coredns/coredns-etcd-cluster.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/coredns/coredns-etcd-cluster.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

/etc/kubernetes/addons/coredns/coredns-cm.yml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/coredns/coredns-cm.yml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

/etc/kubernetes/addons/coredns/coredns-deploy.yml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/coredns/coredns-deploy.yml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

/etc/kubernetes/addons/coredns/coredns-svc.yml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/coredns/coredns-svc.yml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True
{% endif %}

{% endif %}

{%- if common.addons.get('externaldns', {}).get('enabled') %}
/etc/kubernetes/addons/externaldns/externaldns-deploy.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/externaldns/externaldns-deploy.yml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

{%- if common.addons.get('externaldns', {}).get('provider') == 'designate' %}
/etc/kubernetes/addons/externaldns/externaldns-designate-secret.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/externaldns/externaldns-designate-secret.yaml
    - template: jinja
    - group: root
{% endif %}

{%- if common.addons.get('externaldns', {}).get('provider') == 'aws' %}
/etc/kubernetes/addons/externaldns/externaldns-aws-secret.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/externaldns/externaldns-aws-secret.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True
{% endif %}

{%- if common.addons.get('externaldns', {}).get('provider') == 'google' %}
/etc/kubernetes/addons/externaldns/externaldns-google-secret.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/externaldns/externaldns-google-secret.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True
{% endif %}

{% endif %}

{%- if common.addons.get('dashboard', {'enabled': False}).enabled %}

/etc/kubernetes/addons/dashboard/dashboard-service.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/dashboard/dashboard-service.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

/etc/kubernetes/addons/dashboard/dashboard-controller.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/dashboard/dashboard-controller.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

{% endif %}

{%- if common.addons.get('heapster_influxdb', {'enabled': False}).enabled %}

{%- set heapster_resources = ['address', 'controller', 'endpoint', 'service'] %}

{%- if 'RBAC' in master.auth.get('mode', "") %}

{%- set heapster_resources = heapster_resources + ['account', 'role'] %}

{%- endif %}

{%- for resource in heapster_resources %}

/etc/kubernetes/addons/heapster-influxdb/heapster-{{ resource }}.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/heapster-influxdb/heapster-{{ resource }}.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

{%- endfor %}

{%- set influxdb_resources = ['controller', 'service'] %}

{%- for resource in influxdb_resources %}

/etc/kubernetes/addons/heapster-influxdb/influxdb-{{ resource }}.yaml:
  file.managed:
    - source: salt://kubernetes/files/kube-addons/heapster-influxdb/influxdb-{{ resource }}.yaml
    - template: jinja
    - group: root
    - dir_mode: 755
    - makedirs: True

{%- endfor %}

{% endif %}

{% endif %}
