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