summaryrefslogtreecommitdiffstats
path: root/apex/undercloud/undercloud.py
diff options
context:
space:
mode:
authorTim Rozet <trozet@redhat.com>2017-08-31 13:37:20 -0400
committerTim Rozet <trozet@redhat.com>2017-08-31 17:18:42 -0400
commit7c61b83d4a8c41eac0d80e7783cdf1702f91f9e6 (patch)
tree6fc5d7018197dbdcb65bddceb5ecadfaa306d774 /apex/undercloud/undercloud.py
parent1ae72825a39a3b457ebdbeccfeadf3de6ce9018f (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/undercloud.py')
-rw-r--r--apex/undercloud/undercloud.py18
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):