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

kubernetes_pkgs:
  pkg.installed:
  - names: {{ common.pkgs }}

{%- if common.hyperkube is defined %}

/usr/bin/hyperkube:
  file.managed:
    - source: {{ common.hyperkube.source }}
    - mode: 751
    - makedirs: true
    - user: root
    - group: root
    - source_hash: {{ common.hyperkube.source_hash }}
    {%- if grains.get('noservices') %}
    - onlyif: /bin/false
    {%- endif %}

/usr/bin/kubectl:
  file.symlink:
    - target: /usr/bin/hyperkube
    - require:
      - file: /usr/bin/hyperkube
    {%- if grains.get('noservices') %}
    - onlyif: /bin/false
    {%- endif %}

{%- if common.get('containerd', {}).get('enabled') %}

containerd_pkg:
  pkg.installed:
  - name: {{ common.get('containerd', {}).get('package', 'containerd.io') }}

/etc/containerd/config.toml:
  file.managed:
  - source: salt://kubernetes/files/containerd/config.toml
  - template: jinja
  - user: root
  - group: root
  - mode: 644

containerd_service:
  service.running:
  - name: containerd
  - enable: True
  - watch:
    - file: /etc/containerd/config.toml
  - require:
    - containerd_pkg
  {%- if grains.get('noservices') %}
  - onlyif: /bin/false
  {%- endif %}

extract_crictl:
  archive.extracted:
    - name: /tmp/crictl
    - source: {{ common.containerd.crictl.source }}
    - source_hash: {{ common.containerd.crictl.hash }}
    - enforce_toplevel: false
    - options: xzf
    - archive_format: tar
    - keep: true
    {%- if grains.get('noservices') %}
    - onlyif: /bin/false
    {%- endif %}

/usr/local/bin/crictl:
  file.managed:
  - source: /tmp/crictl/crictl
  - mode: 755
  - owner: root
  - group: root
  - require:
    - archive: extract_crictl

/etc/crictl.yaml:
  file.managed:
  - user: root
  - group: root
  - mode: 644
  - contents: 'runtime-endpoint: unix:///run/containerd/containerd.sock'
{%- endif %}

{%- if common.addons.get('virtlet', {}).get('enabled') and not pillar.kubernetes.master is defined %}

{%- if not common.get('containerd', {}).get('enabled') %}

/etc/default/dockershim:
  file.managed:
  - source: salt://kubernetes/files/dockershim/default.pool
  - template: jinja
  - user: root
  - group: root
  - mode: 644

/etc/systemd/system/dockershim.service:
  file.managed:
    - source: salt://kubernetes/files/systemd/dockershim.service
    - template: jinja
    - user: root
    - group: root
    - mode: 755

dockershim_service:
  service.running:
  - name: dockershim
  - enable: True
  - watch:
    - file: /etc/default/dockershim
    - file: /usr/bin/hyperkube
  {%- if grains.get('noservices') %}
  - onlyif: /bin/false
  {%- endif %}

{%- endif %}

/usr/bin/criproxy:
  file.managed:
    - source: https://github.com/mirantis/criproxy/releases/download/{{ common.addons.virtlet.get('criproxy_version', 'v0.10.0') }}/criproxy
    - mode: 750
    - makedirs: true
    - user: root
    - group: root
    - source_hash: {{ common.addons.virtlet.get('criproxy_source', 'md5=52717b1f70f15558ef4bdb0e4d4948da') }}
    {%- if grains.get('noservices') %}
    - onlyif: /bin/false
    {%- endif %}

/etc/criproxy:
  file.directory:
    - user: root
    - group: root
    - mode: 0750

/var/log/criproxy:
  file.directory:
    - user: root
    - group: root
    - mode: 0750

/etc/criproxy/node.conf:
  file.managed:
    - user: root
    - group: root
    - mode: 0640
    - contents: ''

/etc/systemd/system/criproxy.service:
  file.managed:
    - source: salt://kubernetes/files/systemd/criproxy.service
    - template: jinja
    - user: root
    - group: root
    - mode: 755

criproxy_service:
  service.running:
  - name: criproxy
  - enable: True
  - watch:
    - file: /etc/systemd/system/criproxy.service
    - file: /etc/criproxy/node.conf
    - file: /usr/bin/criproxy
  {%- if grains.get('noservices') %}
  - onlyif: /bin/false
  {%- endif %}

{%- else %}

/etc/criproxy:
  file.absent

{%- if not common.get('containerd', {}).get('enabled') %}
dockershim_service:
  service.dead:
  - name: dockershim
  - enable: False
{%- endif %}

criproxy_service:
  service.dead:
  - name: criproxy
  - enable: False

{%- endif %}

/etc/systemd/system/kubelet.service:
  file.managed:
    - source: salt://kubernetes/files/systemd/kubelet.service
    - template: jinja
    - user: root
    - group: root
    - mode: 644

/etc/kubernetes/config:
  file.absent

{%- if common.get('cloudprovider', {}).get('enabled') and common.get('cloudprovider', {}).get('provider') == 'openstack' %}
{%- set cloudconfig_type = 'external' %}
/etc/kubernetes/cloud-config:
  file.managed:
  - source: salt://kubernetes/files/cloudprovider/cloud-config-openstack.conf
  - template: jinja
  - user: root
  - group: root
  - mode: 600
  - defaults:
      cloudconfig_type: {{ cloudconfig_type }}

{%- if pillar.kubernetes.master is defined %}
{%- set cloudconfig_type = 'intree' %}
/etc/kubernetes/cloud-config.intree:
  file.managed:
  - source: salt://kubernetes/files/cloudprovider/cloud-config-openstack.conf
  - template: jinja
  - user: root
  - group: root
  - mode: 600
  - defaults:
      cloudconfig_type: {{ cloudconfig_type }}
{% endif %}

{% endif %}

{%- if pillar.kubernetes.master is defined %}

/etc/default/kubelet:
  file.managed:
  - source: salt://kubernetes/files/kubelet/default.master
  - template: jinja
  - user: root
  - group: root
  - mode: 644

/etc/kubernetes/kubelet.kubeconfig:
  file.managed:
    - source: salt://kubernetes/files/kubelet/kubelet.kubeconfig.master
    - template: jinja
    - user: root
    - group: root
    - mode: 644
    - makedirs: true

{%- else %}

/etc/default/kubelet:
  file.managed:
  - source: salt://kubernetes/files/kubelet/default.pool
  - template: jinja
  - user: root
  - group: root
  - mode: 644

/etc/kubernetes/kubelet.kubeconfig:
  file.managed:
    - source: salt://kubernetes/files/kubelet/kubelet.kubeconfig.pool
    - template: jinja
    - user: root
    - group: root
    - mode: 644
    - makedirs: true

{%- endif %}

manifest_dir_create:
  file.directory:
    - makedirs: true
    - name: /etc/kubernetes/manifests
    - user: root
    - group: root
    - mode: 0751

kubelet_service:
  service.running:
  - name: kubelet
  - enable: True
  - watch:
    - file: /etc/default/kubelet
    - file: /usr/bin/hyperkube
    - file: /etc/kubernetes/kubelet.kubeconfig
    - file: manifest_dir_create
    {%- if common.get('cloudprovider', {}).get('enabled') %}
    {%- if common.get('cloudprovider', {}).get('provider') == 'openstack' and not pillar.get('kubernetes', {}).get('master', false) %}
    - file: /etc/kubernetes/cloud-config
    {%- endif %}
    {%- endif %}
  {%- if grains.get('noservices') %}
  - onlyif: /bin/false
  {%- endif %}

{%- if common.logrotate is defined %}
/etc/logrotate.d/kubernetes:
  file.managed:
    - source: salt://kubernetes/files/logrotate
    - template: jinja
    - user: root
    - group: root
    - mode: 644
    - makedirs: true
    - defaults:
      logfile: {{ common.logrotate }}

{% endif %}
{% endif %}

{%- if common.cni is defined %}
/opt/cni/bin:
  archive.extracted:
    - source: {{ common.cni.plugins.source }}
    - source_hash: {{ common.cni.plugins.hash }}
    {%- if grains['saltversioninfo'] < [2017, 7] %}
    - tar_options: xzf
    {%- else %}
    - options: xzf
    {%- endif %}
    - archive_format: tar
    - if_missing: /opt/cni/bin/host-local
{%- endif %}
