Ceph setup keyring refactoring.
- deduplication
- variable assignment
Prod-Related: PROD-32112
Change-Id: Ie9bcdb37e35a098438920585db565f294a6689b1
diff --git a/ceph/setup/keyring.sls b/ceph/setup/keyring.sls
index d51a109..fe88880 100644
--- a/ceph/setup/keyring.sls
+++ b/ceph/setup/keyring.sls
@@ -11,94 +11,50 @@
{% for keyring_name, keyring in common.get('keyring', {}).iteritems() %}
- {%- if keyring.name is defined %}
+ {%- set keyring_client_name = keyring.get('name', keyring_name) %}
+ {%- set ceph_cluster = common.get('cluster_name', 'ceph') %}
+ {%- set keyring_path = keyring.get('path', common.prefix_dir + '/etc/ceph/' + ceph_cluster + '.client.' + keyring_client_name + '.keyring') %}
- {%- if keyring.name != 'admin' and keyring.key is defined and common.get("manage_keyring", False) %}
+ {%- if keyring_client_name != 'admin' %}
-{{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring.name }}.keyring:
+ {%- if keyring.key is defined and common.get("manage_keyring", False) %}
+
+{{ keyring_path }}:
file.managed:
- source: salt://ceph/files/keyring
- template: jinja
- defaults:
keyring: {{ keyring|yaml }}
- name: {{ keyring.name }}
+ name: {{ keyring_client_name }}
-ceph_import_keyring_{{ keyring.name }}:
+ceph_import_keyring_{{ keyring_client_name }}:
cmd.run:
- - name: ceph -c /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf auth import -i {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring.name }}.keyring
+ - name: "ceph -c /etc/ceph/{{ ceph_cluster }}.conf auth import -i {{ keyring_path }}"
- onchanges:
- - file: {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring.name }}.keyring
+ - file: {{ keyring_path }}
-ceph_update_caps_for_{{ keyring.name }}:
+ceph_update_caps_for_{{ keyring_client_name }}:
cmd.run:
- - name: ceph -c /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf auth caps client.{{ keyring.name }} {%- for cap_name, cap in keyring.caps.iteritems() %} {{ cap_name }} '{{ cap }}' {%- endfor %}
+ - name: ceph -c /etc/ceph/{{ ceph_cluster }}.conf auth caps client.{{ keyring_client_name }} {%- for cap_name, cap in keyring.caps.iteritems() %} {{ cap_name }} '{{ cap }}' {%- endfor %}
- onchanges:
- - file: {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring.name }}.keyring
+ - file: {{ keyring_path }}
- {%- elif keyring.name != 'admin' %}
+ {%- else %}
-ceph_create_keyring_{{ keyring.name }}:
+ceph_create_keyring_{{ keyring_client_name }}:
cmd.run:
- - name: ceph -c /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf auth get-or-create client.{{ keyring.name }} {%- for cap_name, cap in keyring.caps.iteritems() %} {{ cap_name }} '{{ cap }}' {%- endfor %} > {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring.name }}.keyring
- - unless: "test -f {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring.name }}.keyring"
+ - name: ceph -c /etc/ceph/{{ ceph_cluster }}.conf auth get-or-create client.{{ keyring_client_name }} {%- for cap_name, cap in keyring.caps.iteritems() %} {{ cap_name }} '{{ cap }}' {%- endfor %} > {{ keyring_path }}
+ - unless: "test -f {{ keyring_path }}"
{%- if salt['file.file_exists']('/usr/bin/ceph') %}
{%- set caps = salt['cmd.shell']('ceph auth list --format json') | load_json %}
{%- for client in caps['auth_dump'] %}
- {%- if client['entity'] == "client." + keyring.name %}
+ {%- if client['entity'] == "client." + keyring_client_name %}
{%- for cap_name, cap in client.caps.iteritems() %}
{%- if cap != keyring.caps[cap_name] %}
-ceph_update_caps_for_{{ keyring.name }}:
+ceph_update_caps_for_{{ keyring_client_name }}:
cmd.run:
- - name: ceph -c /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf auth caps client.{{ keyring.name }} {%- for cap_name, cap in keyring.caps.iteritems() %} {{ cap_name }} '{{ cap }}' {%- endfor %}
- {%- endif %}
- {%- endfor %}
- {%- endif %}
- {%- endfor %}
- {%- endif %}
-
- {%- endif %}
-
- {%- else %}
-
- {%- if keyring_name != 'admin' and keyring.key is defined and common.get("manage_keyring", False) %}
-
-{{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring_name }}.keyring:
- file.managed:
- - source: salt://ceph/files/keyring
- - template: jinja
- - defaults:
- keyring: {{ keyring|yaml }}
- name: {{ keyring_name }}
-
-ceph_import_keyring_{{ keyring_name }}:
- cmd.run:
- - name: "ceph -c /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf auth import -i {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring_name }}.keyring"
- - onchanges:
- - file: {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring_name }}.keyring
-
-ceph_update_caps_for_{{ keyring_name }}:
- cmd.run:
- - name: ceph -c /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf auth caps client.{{ keyring_name }} {%- for cap_name, cap in keyring.caps.iteritems() %} {{ cap_name }} '{{ cap }}' {%- endfor %}
- - onchanges:
- - file: {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring_name }}.keyring
-
- {%- elif keyring_name != 'admin' %}
-
-ceph_create_keyring_{{ keyring_name }}:
- cmd.run:
- - name: ceph -c /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf auth get-or-create client.{{ keyring_name }} {%- for cap_name, cap in keyring.caps.iteritems() %} {{ cap_name }} '{{ cap }}' {%- endfor %} > {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring_name }}.keyring
- - unless: "test -f {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring_name }}.keyring"
-
- {%- if salt['file.file_exists']('/usr/bin/ceph') %}
- {%- set caps = salt['cmd.shell']('ceph auth list --format json') | load_json %}
- {%- for client in caps['auth_dump'] %}
- {%- if client['entity'] == "client." + keyring_name %}
- {%- for cap_name, cap in client.caps.iteritems() %}
- {%- if cap != keyring.caps[cap_name] %}
-ceph_update_caps_for_{{ keyring_name }}:
- cmd.run:
- - name: ceph -c /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf auth caps client.{{ keyring_name }} {%- for cap_name, cap in keyring.caps.iteritems() %} {{ cap_name }} '{{ cap }}' {%- endfor %}
+ - name: ceph -c /etc/ceph/{{ ceph_cluster }}.conf auth caps client.{{ keyring_client_name }} {%- for cap_name, cap in keyring.caps.iteritems() %} {{ cap_name }} '{{ cap }}' {%- endfor %}
{%- endif %}
{%- endfor %}
{%- endif %}
diff --git a/tests/test-requirements.txt b/tests/test-requirements.txt
new file mode 100644
index 0000000..bc7dc7f
--- /dev/null
+++ b/tests/test-requirements.txt
@@ -0,0 +1,4 @@
+jsonschema
+reno
+setuptools<45.0.0
+msgpack<1.0.0