From 2ddf1fbfab4316b429d3462554c58087b97eb7ba Mon Sep 17 00:00:00 2001
From: Mark Goddard <mark@stackhpc.com>
Date: Fri, 20 Sep 2019 12:52:55 +0100
Subject: [PATCH] Add retries to keystone resource registration tasks

Sometimes things go wrong. We shouldn't fail a Kolla Ansible run because
of a temporary failure when creating keystone resources.

This task adds retries to the tasks in the service-ks-tasks role.
Default is 5 retries with a 10 second delay, as is used in OpenStack
Ansible.

Change-Id: Ib692062fb93ba330bb9c8a35c684ad06652be8a2
---
 .../service-ks-register/defaults/main.yml     |  4 ++++
 .../roles/service-ks-register/tasks/main.yml  | 24 +++++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/ansible/roles/service-ks-register/defaults/main.yml b/ansible/roles/service-ks-register/defaults/main.yml
index c576091a6c..8c27c12cd9 100644
--- a/ansible/roles/service-ks-register/defaults/main.yml
+++ b/ansible/roles/service-ks-register/defaults/main.yml
@@ -12,3 +12,7 @@ service_ks_register_delegate_host: "{{ groups['control'][0] }}"
 service_ks_register_services: []
 # A list of users and associated roles for this service to register with Keystone
 service_ks_register_users: []
+# Number of retries for each task.
+service_ks_register_retries: 5
+# Delay between task retries.
+service_ks_register_delay: 10
diff --git a/ansible/roles/service-ks-register/tasks/main.yml b/ansible/roles/service-ks-register/tasks/main.yml
index a11da103ae..edba77d0ca 100644
--- a/ansible/roles/service-ks-register/tasks/main.yml
+++ b/ansible/roles/service-ks-register/tasks/main.yml
@@ -14,6 +14,10 @@
   run_once: True
   loop: "{{ service_ks_register_services }}"
   delegate_to: "{{ service_ks_register_delegate_host }}"
+  register: service_ks_register_result
+  until: service_ks_register_result is success
+  retries: "{{ service_ks_register_retries }}"
+  delay: "{{ service_ks_register_delay }}"
 
 - name: Creating the {{ project_name }} endpoints
   become: true
@@ -33,6 +37,10 @@
     - "{{ service_ks_register_services }}"
     - endpoints
   delegate_to: "{{ service_ks_register_delegate_host }}"
+  register: service_ks_register_result
+  until: service_ks_register_result is success
+  retries: "{{ service_ks_register_retries }}"
+  delay: "{{ service_ks_register_delay }}"
 
 - name: Creating the {{ project_name }} service project
   become: true
@@ -48,6 +56,10 @@
   run_once: True
   with_items: "{{ service_ks_register_users | map(attribute='project') | unique | list }}"
   delegate_to: "{{ service_ks_register_delegate_host }}"
+  register: service_ks_register_result
+  until: service_ks_register_result is success
+  retries: "{{ service_ks_register_retries }}"
+  delay: "{{ service_ks_register_delay }}"
 
 - name: Creating the {{ project_name }} service users
   become: true
@@ -69,6 +81,10 @@
     label:
       user: "{{ item.user }}"
       project: "{{ item.project }}"
+  register: service_ks_register_result
+  until: service_ks_register_result is success
+  retries: "{{ service_ks_register_retries }}"
+  delay: "{{ service_ks_register_delay }}"
 
 - name: Creating the {{ project_name }} service roles
   become: true
@@ -83,6 +99,10 @@
   run_once: True
   with_items: "{{ service_ks_register_users | map(attribute='role') | unique | list }}"
   delegate_to: "{{ service_ks_register_delegate_host }}"
+  register: service_ks_register_result
+  until: service_ks_register_result is success
+  retries: "{{ service_ks_register_retries }}"
+  delay: "{{ service_ks_register_delay }}"
 
 - name: Granting the {{ project_name }} service user roles
   become: true
@@ -105,3 +125,7 @@
       user: "{{ item.user }}"
       role: "{{ item.role }}"
       project: "{{ item.project }}"
+  register: service_ks_register_result
+  until: service_ks_register_result is success
+  retries: "{{ service_ks_register_retries }}"
+  delay: "{{ service_ks_register_delay }}"
-- 
GitLab