Adds Undercloud retry and log fetch 79/40779/4
authorTim Rozet <trozet@redhat.com>
Thu, 31 Aug 2017 17:37:20 +0000 (13:37 -0400)
committerTim Rozet <trozet@redhat.com>
Thu, 31 Aug 2017 21:18:42 +0000 (17:18 -0400)
Retry to install the undercloud if it fails due to sometimes failing.
Also copy undercloud log over to host temp dir.

Change-Id: I50f98c4f0d52fa6bb56d9dcd0766bbe745160452
Signed-off-by: Tim Rozet <trozet@redhat.com>
apex/undercloud/undercloud.py
lib/ansible/playbooks/configure_undercloud.yml

index a1af4d0..da695f5 100644 (file)
@@ -11,6 +11,7 @@ import libvirt
 import logging
 import os
 import shutil
+import subprocess
 import time
 
 from apex.virtual import virtual_utils as virt_utils
@@ -107,14 +108,25 @@ class Undercloud:
     def configure(self, net_settings, playbook, apex_temp_dir):
         """
         Configures undercloud VM
-        :return:
+        :param net_setings: Network settings for deployment
+        :param playbook: playbook to use to configure undercloud
+        :param apex_temp_dir: temporary apex directory to hold configs/logs
+        :return: None
         """
-        # TODO(trozet): If undercloud install fails we can add a retry
+
         logging.info("Configuring Undercloud...")
         # run ansible
         ansible_vars = Undercloud.generate_config(net_settings)
         ansible_vars['apex_temp_dir'] = apex_temp_dir
-        utils.run_ansible(ansible_vars, playbook, host=self.ip, user='stack')
+        try:
+            utils.run_ansible(ansible_vars, playbook, host=self.ip,
+                              user='stack')
+        except subprocess.CalledProcessError:
+            logging.error(
+                "Failed to install undercloud..."
+                "please check log: {}".format(os.path.join(
+                    apex_temp_dir, 'apex-undercloud-install.log')))
+            raise ApexUndercloudException('Failed to install undercloud')
         logging.info("Undercloud installed!")
 
     def setup_volumes(self):
index aa6c960..f19218c 100644 (file)
         regexp: '_link_ip_address_pxe_configs'
         line: '_link_mac_pxe_configs(task)'
       when: aarch64
-    - name: undercloud install
-      shell: openstack undercloud install &> apex-undercloud-install.log
-      become: yes
-      become_user: stack
+    - block:
+        - name: undercloud install
+          shell: openstack undercloud install &> apex-undercloud-install.log
+          become: yes
+          become_user: stack
+      rescue:
+        - name: undercloud install retry
+          shell: openstack undercloud install >> apex-undercloud-install.log 2>&1
+          become: yes
+          become_user: stack
+      always:
+        - name: fetch undercloud log
+          fetch:
+            src: /home/stack/apex-undercloud-install.log
+            dest: "{{ apex_temp_dir }}/"
+            flat: yes
     - name: openstack-configs nova
       shell: openstack-config --set /etc/nova/nova.conf DEFAULT {{ item }}
       become: yes