]> git.immae.eu Git - github/fretlink/ansible-kong-app.git/blobdiff - tasks/plugins.yml
Fix retry and missing parenthesis
[github/fretlink/ansible-kong-app.git] / tasks / plugins.yml
index 3ae0fbefd29bbe539df6d8dd167cc4b8a1e27123..f6d1c787d532600a757bc09c1757eb5cbbbaa516 100644 (file)
@@ -1,28 +1,93 @@
 - name: Get plugins
   uri:
-    url: "{{ kong_app_admin_url }}/services/{{ service.name }}/plugins"
+    url: "{{ server.kong_app_admin_url }}/services/{{ service.name }}/plugins"
     method: GET
     validate_certs: no
     headers:
-      apikey: "{{ kong_app_admin_apikey }}"
+      apikey: "{{ server.kong_app_admin_apikey }}"
   register: kong_app_service_plugins_check
 
 - name: Setup plugin
   uri:
-    url: "{{ kong_app_admin_url }}/{{ exists_plugin | ternary('services/' ~ service.name ~ '/plugins','plugins/' ~ current_config.id) }}"
+    url: "{{ server.kong_app_admin_url }}/{{ exists_plugin | ternary(create_url, update_url) }}"
     method: "{{ exists_plugin | ternary ('POST', 'PATCH') }}"
     body: "{{ plugin | combine(current_body)  | to_json }}"
     headers:
-      apikey: "{{ kong_app_admin_apikey }}"
+      apikey: "{{ server.kong_app_admin_apikey }}"
       Content-Type: application/json
     status_code: 200,201
   with_items: "{{ service.plugins | default([]) }}"
   loop_control:
     loop_var: plugin
   vars:
-    current_config: "{{ kong_app_service_plugins_check.json.data | selectattr('name', 'equalto', plugin.name) | first |default({\"id\": ''}) }}"
+    create_url: "services/{{ service.name }}/plugins"
+    update_url: "plugins/{{ current_config.id }}"
+    plugins_list: "{{ kong_app_service_plugins_check.json.data }}"
+    current_config: "{{ plugins_list | selectattr('name', 'equalto', plugin.name) | first |default({\"id\": ''}) }}"
     current_id_hash:
       id: "{{ current_config.id }}"
-    current_body: "{{ (current_id_hash.id == '') | ternary({}, current_id_hash) }}"
-    exists_plugin: "{{ current_id_hash.id == '' }}"
+    current_body: "{{ (not current_id_hash.id)  | ternary({}, current_id_hash) }}"
+    exists_plugin: "{{ not current_id_hash.id  }}"
   when: not kong_app_service_plugins_check is skipped
+  ignore_errors: true
+  no_log: true
+  register: kong_plugin_update_st
+
+- name: Retry failed (deletion)
+  uri:
+    url: "{{ url }}"
+    method: "DELETE"
+    headers: "{{ headers }}"
+    status_code: 204
+  loop: "{{ kong_plugin_update_st.results }}"
+  loop_control:
+    loop_var: result
+    label: "{{ label_name }}"
+  vars:
+    method: "{{ result.invocation.module_args.method }}"
+    url: "{{ result.invocation.module_args.url }}"
+    headers: "{{ result.invocation.module_args.headers }}"
+    label_name: "{{ result.plugin.name }}"
+  when:
+    - kong_plugin_update_st is failed
+    - result is failed
+    - method == "PATCH"
+  no_log: true
+
+- name: Retry failed (recreation)
+  uri:
+    url: "{{ server.kong_app_admin_url }}/services/{{ service.name }}/plugins"
+    method: "POST"
+    body: "{{ body | to_json }}"
+    headers: "{{ headers }}"
+    status_code: 200,201
+  loop: "{{ kong_plugin_update_st.results }}"
+  loop_control:
+    loop_var: result
+    label: "{{ label_name }}"
+  vars:
+    method: "{{ result.invocation.module_args.method }}"
+    headers: "{{ result.invocation.module_args.headers }}"
+    body: "{{ result.invocation.module_args.body }}"
+    label_name: "{{ result.plugin.name }}"
+  when:
+    - kong_plugin_update_st is failed
+    - result is failed
+    - method == "PATCH"
+  no_log: true
+
+- name: Fail otherwise
+  fail:
+    msg: "This plugin {{ result.plugin.name }} failed to be created"
+  loop: "{{ kong_plugin_update_st.results }}"
+  loop_control:
+    loop_var: result
+    label: "{{ label_name }}"
+  vars:
+    method: "{{ result.invocation.module_args.method }}"
+    label_name: "{{ result.plugin.name }}"
+  when:
+    - kong_plugin_update_st is failed
+    - result is failed
+    - method == "POST"
+  no_log: true