diff --git a/templates/ephemeral-heat/heat-pod.yaml.j2 b/templates/ephemeral-heat/heat-pod.yaml.j2 index a4017d707..f80f51661 100644 --- a/templates/ephemeral-heat/heat-pod.yaml.j2 +++ b/templates/ephemeral-heat/heat-pod.yaml.j2 @@ -2,8 +2,8 @@ apiVersion: v1 kind: Pod metadata: labels: - app: ephemeral-heat - name: ephemeral-heat + app: {{ heat_pod_name }} + name: {{ heat_pod_name }} spec: containers: - command: diff --git a/tripleoclient/constants.py b/tripleoclient/constants.py index 5354fccb7..175ff1427 100644 --- a/tripleoclient/constants.py +++ b/tripleoclient/constants.py @@ -33,6 +33,7 @@ OVERCLOUD_NETWORKS_FILE = "network_data.yaml" STANDALONE_NETWORKS_FILE = "/dev/null" UNDERCLOUD_NETWORKS_FILE = "network_data_undercloud.yaml" ANSIBLE_HOSTS_FILENAME = "hosts.yaml" +EPHEMERAL_HEAT_POD_NAME = "ephemeral-heat" ANSIBLE_CWL = "tripleo_dense,tripleo_profile_tasks,tripleo_states" CONTAINER_IMAGE_PREPARE_LOG_FILE = "container_image_prepare.log" DEFAULT_CONTAINER_REGISTRY = "quay.io" diff --git a/tripleoclient/heat_launcher.py b/tripleoclient/heat_launcher.py index 776990b94..d16544e54 100644 --- a/tripleoclient/heat_launcher.py +++ b/tripleoclient/heat_launcher.py @@ -37,7 +37,8 @@ from tenacity.wait import wait_fixed from tripleoclient.constants import (DEFAULT_HEAT_CONTAINER, DEFAULT_HEAT_API_CONTAINER, DEFAULT_HEAT_ENGINE_CONTAINER, - DEFAULT_TEMPLATES_DIR) + DEFAULT_TEMPLATES_DIR, + EPHEMERAL_HEAT_POD_NAME) from tripleoclient.exceptions import HeatPodMessageQueueException log = logging.getLogger(__name__) @@ -478,7 +479,7 @@ class HeatPodLauncher(HeatContainerLauncher): def get_pod_state(self): inspect = subprocess.run([ 'sudo', 'podman', 'pod', 'inspect', '--format', - '"{{.State}}"', 'ephemeral-heat'], + '"{{.State}}"', EPHEMERAL_HEAT_POD_NAME], check=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) @@ -486,7 +487,8 @@ class HeatPodLauncher(HeatContainerLauncher): def launch_heat(self): if "Running" in self.get_pod_state(): - log.info("ephemeral-heat pod already running, skipping launch") + log.info("%s pod already running, skipping launch", + EPHEMERAL_HEAT_POD_NAME) return self._write_heat_pod() subprocess.check_call([ @@ -570,7 +572,7 @@ class HeatPodLauncher(HeatContainerLauncher): def pod_exists(self): try: subprocess.check_call( - ['sudo', 'podman', 'pod', 'inspect', 'ephemeral-heat'], + ['sudo', 'podman', 'pod', 'inspect', EPHEMERAL_HEAT_POD_NAME], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) return True @@ -593,9 +595,10 @@ class HeatPodLauncher(HeatContainerLauncher): except subprocess.CalledProcessError: pass if self.pod_exists(): - log.info("Removing pod: ephemeral-heat") + log.info("Removing pod: %s", EPHEMERAL_HEAT_POD_NAME) subprocess.call([ - 'sudo', 'podman', 'pod', 'rm', '-f', 'ephemeral-heat' + 'sudo', 'podman', 'pod', 'rm', '-f', + EPHEMERAL_HEAT_POD_NAME ]) config = self._read_heat_config() log_file_path = os.path.join(self.log_dir, @@ -605,11 +608,12 @@ class HeatPodLauncher(HeatContainerLauncher): def stop_heat(self): if self.pod_exists() and self.get_pod_state() != 'Exited': - log.info("Stopping pod: ephemeral-heat") + log.info("Stopping pod: %s", EPHEMERAL_HEAT_POD_NAME) subprocess.check_call([ - 'sudo', 'podman', 'pod', 'stop', 'ephemeral-heat' + 'sudo', 'podman', 'pod', 'stop', + EPHEMERAL_HEAT_POD_NAME ]) - log.info("Stopped pod: ephemeral-heat") + log.info("Stopped pod: %s", EPHEMERAL_HEAT_POD_NAME) def check_message_bus(self): log.info("Checking that message bus (rabbitmq) is up") @@ -650,13 +654,14 @@ class HeatPodLauncher(HeatContainerLauncher): def kill_heat(self, pid): if self.pod_exists(): - log.info("Killing pod: ephemeral-heat") + log.info("Killing pod: %s", EPHEMERAL_HEAT_POD_NAME) subprocess.call([ - 'sudo', 'podman', 'pod', 'kill', 'ephemeral-heat' + 'sudo', 'podman', 'pod', 'kill', + EPHEMERAL_HEAT_POD_NAME ]) - log.info("Killed pod: ephemeral-heat") + log.info("Killed pod: %s", EPHEMERAL_HEAT_POD_NAME) else: - log.info("Pod does not exist: ephemeral-heat") + log.info("Pod does not exist: %s", EPHEMERAL_HEAT_POD_NAME) def _decode(self, encoded): if not encoded: @@ -702,11 +707,11 @@ class HeatPodLauncher(HeatContainerLauncher): stop=(stop_after_delay(10) | stop_after_attempt(10)), wait=wait_fixed(0.5)) def wait_for_message_queue(self): + queue_name = 'engine.' + EPHEMERAL_HEAT_POD_NAME output = subprocess.check_output([ - 'sudo', 'podman', 'exec', 'rabbitmq', - 'rabbitmqctl', 'list_queues' - ]) - if 'heat' not in str(output): + 'sudo', 'podman', 'exec', 'rabbitmq', + 'rabbitmqctl', 'list_queues']) + if str(output).count(queue_name) < 1: msg = "Message queue for ephemeral heat not created in time." raise HeatPodMessageQueueException(msg) @@ -720,7 +725,7 @@ class HeatPodLauncher(HeatContainerLauncher): def _write_heat_config(self): heat_config_tmpl_path = os.path.join(DEFAULT_TEMPLATES_DIR, - "ephemeral-heat", + EPHEMERAL_HEAT_POD_NAME, "heat.conf.j2") with open(heat_config_tmpl_path) as tmpl: heat_config_tmpl = jinja2.Template(tmpl.read()) @@ -739,7 +744,7 @@ class HeatPodLauncher(HeatContainerLauncher): def _write_heat_pod(self): heat_pod_tmpl_path = os.path.join(DEFAULT_TEMPLATES_DIR, - "ephemeral-heat", + EPHEMERAL_HEAT_POD_NAME, "heat-pod.yaml.j2") with open(heat_pod_tmpl_path) as tmpl: heat_pod_tmpl = jinja2.Template(tmpl.read()) @@ -752,6 +757,7 @@ class HeatPodLauncher(HeatContainerLauncher): "api_port": self.api_port, "api_image": self.api_container_image, "engine_image": self.engine_container_image, + "heat_pod_name": EPHEMERAL_HEAT_POD_NAME } heat_pod = heat_pod_tmpl.render(**pod_vars) diff --git a/tripleoclient/tests/test_heat_launcher.py b/tripleoclient/tests/test_heat_launcher.py index 144d3a00f..7c117ec45 100644 --- a/tripleoclient/tests/test_heat_launcher.py +++ b/tripleoclient/tests/test_heat_launcher.py @@ -416,11 +416,11 @@ class TestHeatPodLauncher(base.TestCase): def test_wait_for_message_queue(self): launcher = self.get_launcher() wait_mq = launcher.wait_for_message_queue.__wrapped__ - self.check_output.return_value = 'heat' + self.check_output.return_value = 'engine.ephemeral-heat' wait_mq(launcher) self.check_output.reset_mock() - self.check_output.return_value = 'test' + self.check_output.return_value = 'heat-listener' self.assertRaises(HeatPodMessageQueueException, wait_mq, launcher) def test_get_log_file_path(self):