Fail cfg01 bootstrap if the bootstrap script is failed
Change-Id: I11f3f5c81257bdb0bf0ec5af36be0aaa92af5065
diff --git a/tcp_tests/helpers/exceptions.py b/tcp_tests/helpers/exceptions.py
index f6c2310..7bc4abc 100644
--- a/tcp_tests/helpers/exceptions.py
+++ b/tcp_tests/helpers/exceptions.py
@@ -133,3 +133,14 @@
def __str__(self):
return ("Salt pillar '{0}' error on minion {1}: {2}"
.format(self.minion_id, self.pillar, self.message))
+
+
+class EnvironmentNodeIsNotStarted(BaseException):
+ def __init__(self, node_name, message=''):
+ super(EnvironmentNodeIsNotStarted, self).__init__()
+ self.node_name = node_name
+ self.message = message
+
+ def __str__(self):
+ return ("Cloud-init failed on node {0} with error: \n{1}"
+ .format(self.node_name, self.message))
diff --git a/tcp_tests/managers/envmanager_devops.py b/tcp_tests/managers/envmanager_devops.py
index d02cff5..79bec94 100644
--- a/tcp_tests/managers/envmanager_devops.py
+++ b/tcp_tests/managers/envmanager_devops.py
@@ -309,6 +309,7 @@
LOG.info('Environment "{0}" started'.format(self.__env.name))
check_cloudinit_started = '[ -f /is_cloud_init_started ]'
check_cloudinit_finished = '[ -f /is_cloud_init_finished ]'
+ check_cloudinit_failed = 'cat /is_cloud_init_failed'
passed = {}
for node in self.__env.get_nodes(role__in=underlay_node_roles):
LOG.info("Waiting for SSH on node '{0}' / {1} ...".format(
@@ -329,6 +330,12 @@
# If '/is_cloud_init_started' exists, then wait for
# the flag /is_cloud_init_finished
if ssh.execute(check_cloudinit_started)['exit_code'] == 0:
+ result = ssh.execute(check_cloudinit_failed)
+ if result['exit_code'] == 0:
+ raise exceptions.EnvironmentNodeIsNotStarted(
+ "{0}:{1}".format(host, port),
+ result.stdout_str)
+
status = ssh.execute(
check_cloudinit_finished)['exit_code'] == 0
# Else, just wait for SSH
diff --git a/tcp_tests/templates/cookied-cicd-k8s-calico-sl/underlay--user-data-cfg01.yaml b/tcp_tests/templates/cookied-cicd-k8s-calico-sl/underlay--user-data-cfg01.yaml
index 77c18d1..4b134b7 100644
--- a/tcp_tests/templates/cookied-cicd-k8s-calico-sl/underlay--user-data-cfg01.yaml
+++ b/tcp_tests/templates/cookied-cicd-k8s-calico-sl/underlay--user-data-cfg01.yaml
@@ -61,19 +61,19 @@
#- cp /root/config-drive/user-data /root/user-data
#- sed -i '/^reboot$/d' /root/user-data
#- set -x; cd /root && /bin/bash -xe ./user-data
- - set -x; cd /root/config-drive && /bin/bash -xe ./user-data
-
- #- echo "nameserver 172.18.208.44" >> /etc/resolv.conf;
+ - |
+ set -x
+ cd /root/config-drive
+ if /bin/bash -xe ./user-data > /var/log/cloud-init-user-data.log; then
+ touch /is_cloud_init_finished
+ else
+ set +x
+ echo "bootstrap script /root/config-drive/user-data failed. tail -n 10 /var/log/cloud-init-user-data.log:\n" > /is_cloud_init_failed
+ tail -n 10 /var/log/cloud-init-user-data.log >> /is_cloud_init_failed
+ fi
# Enable root access (after reboot)
- sed -i -e '/^PermitRootLogin/s/^.*$/PermitRootLogin yes/' /etc/ssh/sshd_config
- #- service sshd stop
-
- ########################################################
- # Node is ready, allow SSH access
- - touch /is_cloud_init_finished
- #- reboot
- ########################################################
write_files:
- path: /etc/default/grub.d/97-enable-grub-menu.cfg
diff --git a/tcp_tests/templates/cookied-cicd-k8s-calico/underlay--user-data-cfg01.yaml b/tcp_tests/templates/cookied-cicd-k8s-calico/underlay--user-data-cfg01.yaml
index 77c18d1..4b134b7 100644
--- a/tcp_tests/templates/cookied-cicd-k8s-calico/underlay--user-data-cfg01.yaml
+++ b/tcp_tests/templates/cookied-cicd-k8s-calico/underlay--user-data-cfg01.yaml
@@ -61,19 +61,19 @@
#- cp /root/config-drive/user-data /root/user-data
#- sed -i '/^reboot$/d' /root/user-data
#- set -x; cd /root && /bin/bash -xe ./user-data
- - set -x; cd /root/config-drive && /bin/bash -xe ./user-data
-
- #- echo "nameserver 172.18.208.44" >> /etc/resolv.conf;
+ - |
+ set -x
+ cd /root/config-drive
+ if /bin/bash -xe ./user-data > /var/log/cloud-init-user-data.log; then
+ touch /is_cloud_init_finished
+ else
+ set +x
+ echo "bootstrap script /root/config-drive/user-data failed. tail -n 10 /var/log/cloud-init-user-data.log:\n" > /is_cloud_init_failed
+ tail -n 10 /var/log/cloud-init-user-data.log >> /is_cloud_init_failed
+ fi
# Enable root access (after reboot)
- sed -i -e '/^PermitRootLogin/s/^.*$/PermitRootLogin yes/' /etc/ssh/sshd_config
- #- service sshd stop
-
- ########################################################
- # Node is ready, allow SSH access
- - touch /is_cloud_init_finished
- #- reboot
- ########################################################
write_files:
- path: /etc/default/grub.d/97-enable-grub-menu.cfg