github.com/SUSE/skuba@v1.4.17/ci/infra/testrunner/platforms/vmware.py (about) 1 import os 2 3 from timeout_decorator import timeout 4 5 from platforms.terraform import Terraform 6 from utils import Format 7 8 9 class VMware(Terraform): 10 def __init__(self, conf): 11 super().__init__(conf, 'vmware') 12 if not os.path.isfile(conf.vmware.env_file): 13 msg = (f'Your VMware env file path "{conf.vmware.env_file}" does not exist.\n\t ' 14 'Check the VMware env file path in your configured yaml file.') 15 raise ValueError(Format.alert(msg)) 16 self.platform_new_vars = {} 17 18 def _env_setup_cmd(self): 19 return f"source {self.conf.vmware.env_file}" 20 21 @timeout(600) 22 def _cleanup_platform(self): 23 variables = [f"stack_name={self.conf.terraform.stack_name}"] 24 25 self.destroy(variables) 26 27 def _get_platform_logs(self): 28 # Get logs from the VMware LB 29 node_ip = self.get_lb_ipaddr() 30 logs = { 31 "files": ["/var/run/cloud-init/status.json", 32 "/var/log/cloud-init-output.log", 33 "/var/log/cloud-init.log"], 34 "dirs": [], 35 "services": ["haproxy"] 36 } 37 38 node_log_dir = self._create_node_log_dir(node_ip, "load_balancer", self.conf.platform.log_dir) 39 logging_error = self.utils.collect_remote_logs(node_ip, logs, node_log_dir) 40 41 return logging_error 42 43 def get_lb_ipaddr(self): 44 self._load_tfstate() 45 if self.state["version"] == 3: 46 return self.state["modules"][0]["outputs"]["ip_load_balancer"]["value"]["{}-lb-0".format(self.stack_name())] 47 elif self.state["version"] == 4: 48 return self.state["outputs"]["ip_load_balancer"]["value"]["{}-lb-0".format(self.stack_name())]