aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGaƫtan <36162164+gaetanfl@users.noreply.github.com>2019-04-05 13:41:27 +0200
committerGitHub <noreply@github.com>2019-04-05 13:41:27 +0200
commitd663610913fab7252d481664172be9e44f607764 (patch)
treee36dc94530e209b841d3065420989e004b9f9676
parentf3304d462d69fbd1466172c3c7cf445eed19f25f (diff)
parent03c603826db1550e966c72d062ababefccf25155 (diff)
downloadansible-kong-app-d663610913fab7252d481664172be9e44f607764.tar.gz
ansible-kong-app-d663610913fab7252d481664172be9e44f607764.tar.zst
ansible-kong-app-d663610913fab7252d481664172be9e44f607764.zip
Merge pull request #11 from gaetanfl/plugin_failure_retryv0.7
retry in case of failed patch
-rw-r--r--tasks/plugins.yml70
1 files changed, 67 insertions, 3 deletions
diff --git a/tasks/plugins.yml b/tasks/plugins.yml
index c64e5c9..f6d1c78 100644
--- a/tasks/plugins.yml
+++ b/tasks/plugins.yml
@@ -9,7 +9,7 @@
9 9
10- name: Setup plugin 10- name: Setup plugin
11 uri: 11 uri:
12 url: "{{ server.kong_app_admin_url }}/{{ exists_plugin | ternary('services/' ~ service.name ~ '/plugins','plugins/' ~ current_config.id) }}" 12 url: "{{ server.kong_app_admin_url }}/{{ exists_plugin | ternary(create_url, update_url) }}"
13 method: "{{ exists_plugin | ternary ('POST', 'PATCH') }}" 13 method: "{{ exists_plugin | ternary ('POST', 'PATCH') }}"
14 body: "{{ plugin | combine(current_body) | to_json }}" 14 body: "{{ plugin | combine(current_body) | to_json }}"
15 headers: 15 headers:
@@ -20,10 +20,74 @@
20 loop_control: 20 loop_control:
21 loop_var: plugin 21 loop_var: plugin
22 vars: 22 vars:
23 current_config: "{{ kong_app_service_plugins_check.json.data | selectattr('name', 'equalto', plugin.name) | first |default({\"id\": ''}) }}" 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\": ''}) }}"
24 current_id_hash: 27 current_id_hash:
25 id: "{{ current_config.id }}" 28 id: "{{ current_config.id }}"
26 current_body: "{{ not current_id_hash.id | ternary({}, current_id_hash) }}" 29 current_body: "{{ (not current_id_hash.id) | ternary({}, current_id_hash) }}"
27 exists_plugin: "{{ not current_id_hash.id }}" 30 exists_plugin: "{{ not current_id_hash.id }}"
28 when: not kong_app_service_plugins_check is skipped 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 | to_json }}"
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"
29 no_log: true 93 no_log: true