diff options
author | Tim Rozet <trozet@redhat.com> | 2017-08-31 13:37:20 -0400 |
---|---|---|
committer | Tim Rozet <trozet@redhat.com> | 2017-08-31 17:18:42 -0400 |
commit | 7c61b83d4a8c41eac0d80e7783cdf1702f91f9e6 (patch) | |
tree | 6fc5d7018197dbdcb65bddceb5ecadfaa306d774 /apex/undercloud | |
parent | 1ae72825a39a3b457ebdbeccfeadf3de6ce9018f (diff) |
Adds Undercloud retry and log fetch
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>
Diffstat (limited to 'apex/undercloud')
-rw-r--r-- | apex/undercloud/undercloud.py | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/apex/undercloud/undercloud.py b/apex/undercloud/undercloud.py index a1af4d00..da695f5b 100644 --- a/apex/undercloud/undercloud.py +++ b/apex/undercloud/undercloud.py @@ -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): |