]> git.immae.eu Git - github/fretlink/ansible-kong-app.git/blob - tasks/plugins.yml
retry in case of failed patch
[github/fretlink/ansible-kong-app.git] / tasks / plugins.yml
1 - name: Get plugins
2 uri:
3 url: "{{ server.kong_app_admin_url }}/services/{{ service.name }}/plugins"
4 method: GET
5 validate_certs: no
6 headers:
7 apikey: "{{ server.kong_app_admin_apikey }}"
8 register: kong_app_service_plugins_check
9
10 - name: Setup plugin
11 uri:
12 url: "{{ server.kong_app_admin_url }}/{{ exists_plugin | ternary(create_url, update_url) }}"
13 method: "{{ exists_plugin | ternary ('POST', 'PATCH') }}"
14 body: "{{ plugin | combine(current_body) | to_json }}"
15 headers:
16 apikey: "{{ server.kong_app_admin_apikey }}"
17 Content-Type: application/json
18 status_code: 200,201
19 with_items: "{{ service.plugins | default([]) }}"
20 loop_control:
21 loop_var: plugin
22 vars:
23 create_url: "services/{{ service.name }}/plugins"
24 update_url: "plugins/{{ current_config.id }}"
25 plugins_list: "{{ kong_app_service_plugins_check.json.data }}"
26 current_config: "{{ plugins_list | selectattr('name', 'equalto', plugin.name) | first |default({\"id\": ''}) }}"
27 current_id_hash:
28 id: "{{ current_config.id }}"
29 current_body: "{{ not current_id_hash.id | ternary({}, current_id_hash) }}"
30 exists_plugin: "{{ not current_id_hash.id }}"
31 when: not kong_app_service_plugins_check is skipped
32 ignore_errors: true
33 no_log: true
34 register: kong_plugin_update_st
35
36 - name: Retry failed (deletion)
37 uri:
38 url: "{{ url }}"
39 method: "DELETE"
40 headers: "{{ headers }}"
41 status_code: 204
42 loop: "{{ kong_plugin_update_st.results }}"
43 loop_control:
44 loop_var: result
45 label: "{{ label_name }}"
46 vars:
47 method: "{{ result.invocation.module_args.method }}"
48 url: "{{ result.invocation.module_args.url }}"
49 headers: "{{ result.invocation.module_args.headers }}"
50 label_name: "{{ result.plugin.name }}"
51 when:
52 - kong_plugin_update_st is failed
53 - result is failed
54 - method == "PATCH"
55 no_log: true
56
57 - name: Retry failed (recreation)
58 uri:
59 url: "{{ server.kong_app_admin_url }}/services/{{ service.name }}/plugins"
60 method: "POST"
61 body: "{{ body }}"
62 headers: "{{ headers }}"
63 status_code: 200,201
64 loop: "{{ kong_plugin_update_st.results }}"
65 loop_control:
66 loop_var: result
67 label: "{{ label_name }}"
68 vars:
69 method: "{{ result.invocation.module_args.method }}"
70 headers: "{{ result.invocation.module_args.headers }}"
71 body: "{{ result.invocation.module_args.body }}"
72 label_name: "{{ result.plugin.name }}"
73 when:
74 - kong_plugin_update_st is failed
75 - result is failed
76 - method == "PATCH"
77 no_log: true
78
79 - name: Fail otherwise
80 fail:
81 msg: "This plugin {{ result.plugin.name }} failed to be created"
82 loop: "{{ kong_plugin_update_st.results }}"
83 loop_control:
84 loop_var: result
85 label: "{{ label_name }}"
86 vars:
87 method: "{{ result.invocation.module_args.method }}"
88 label_name: "{{ result.plugin.name }}"
89 when:
90 - kong_plugin_update_st is failed
91 - result is failed
92 - method == "POST"
93 no_log: true