X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tasks%2Fplugins.yml;h=90a038667db479d8adf82c84f8dac338403b929a;hb=e475469f4a5dc05df98cbb856d9d9328fc73c100;hp=c03bca740a4ae36789b9163f008a6f754e50d14d;hpb=d213edd127a145821e419e80104a838da421e7ca;p=github%2Ffretlink%2Fansible-kong-app.git diff --git a/tasks/plugins.yml b/tasks/plugins.yml index c03bca7..90a0386 100644 --- a/tasks/plugins.yml +++ b/tasks/plugins.yml @@ -1,28 +1,109 @@ - name: Get plugins uri: - url: "{{ kong_app_admin_url }}/services/{{ kong_app_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/' ~ kong_app_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: "{{ kong_app_plugins }}" + 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 == '' }}" - when: not kong_app_service_plugins_check|skipped + 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: Give info on errors + debug: + msg: "{{ info }}" + loop: "{{ kong_plugin_update_st.results }}" + loop_control: + label: "{{ item.plugin.name }}" + when: + - kong_plugin_update_st is failed + - item is failed + - item.plugin is defined + - item.plugin.name is defined + - item.json is defined + - item.json.message is defined + vars: + info: "{{ item.json.message }}" + +- 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