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

{% if not common.get('container_mode', False) %}

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

/etc/default/ceph:
  file.managed:
  - source: salt://ceph/files/env
  - template: jinja
  - require:
    - pkg: common_packages

{%- endif %}

{{ common.prefix_dir }}/etc/ceph:
  file.directory:
  - user: ceph
  - group: ceph
  - mode: 755
  - makedirs: True

common_config:
  file.managed:
  - name: {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf
  - user: ceph
  - group: ceph
  - source: salt://ceph/files/{{ common.version }}/ceph.conf.{{ grains.os_family }}
  - template: jinja
  {% if not common.get('container_mode', False) %}
  - require:
    - pkg: common_packages
  {%- endif %}


{%- if common.keyring is defined and common.keyring.admin is defined %}

{%- if common.get("manage_admin_keyring", False) %}

ceph_create_keyring_admin:
  cmd.run:
  - name: "ceph-authtool --create-keyring {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.admin.keyring --add-key {{ common.keyring.admin.key }} -n client.admin {%- for cap_name, cap in  common.keyring.admin.caps.iteritems() %} --cap {{ cap_name }} '{{ cap }}' {%- endfor %}"
  - unless: "test -f {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.admin.keyring"
  - require:
  {% if not common.get('container_mode', False) %}
    - pkg: common_packages
  {%- endif %}
    - file: common_config

{%- else %}

ceph_create_keyring_admin:
  cmd.run:
  - name: "ceph-authtool --create-keyring {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.admin.keyring --gen-key -n client.admin {%- for cap_name, cap in  common.keyring.admin.caps.iteritems() %} --cap {{ cap_name }} '{{ cap }}' {%- endfor %}"
  - unless: "test -f {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.admin.keyring"
  - require:
  {% if not common.get('container_mode', False) %}
    - pkg: common_packages
  {%- endif %}
    - file: common_config

{%- endif %}

{%- endif %}

{%- for node_name, node_grains in salt['mine.get']('ceph:common:keyring:admin', 'grains.items', 'pillar').iteritems() %}

{%- if node_grains.ceph is defined and node_grains.ceph.ceph_keyring is defined and node_grains.ceph.ceph_keyring.admin is defined and node_grains.ceph.get('fsid', '') == common.fsid %}

{%- if loop.index0 == 0 %}

{{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.admin.keyring:
  file.managed:
  - source: salt://ceph/files/keyring
  - template: jinja
  - unless: "test -f {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.admin.keyring"
  - defaults:
      node_grains: {{ node_grains|yaml }}
  - require:
  {% if not common.get('container_mode', False) %}
    - pkg: common_packages
  {%- endif %}
    - file: common_config

{%- endif %}

{%- endif %}

{%- endfor %}
