Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/roles/foreman/tasks/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,8 @@
WantedBy=default.target foreman.target
[Unit]
PartOf=foreman.target
Wants=redis.service postgresql.service
After=foreman.target redis.service postgresql.service
Wants=redis.service postgresql.service candlepin.service
After=foreman.target redis.service postgresql.service candlepin.service
notify: Restart foreman

- name: Deploy Dynflow Container
Expand Down
36 changes: 36 additions & 0 deletions tests/target_lifecycle_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import time

FOREMAN_PING_RETRIES = 60
FOREMAN_PING_DELAY = 10
CURL_CMD = "curl --silent --output /dev/null"


def _wait_for_foreman(server, server_fqdn, certificates):
"""Poll the Foreman HTTPS frontend until available or timeout."""
for _ in range(FOREMAN_PING_RETRIES):
cmd = server.run(
f"{CURL_CMD} --cacert {certificates['ca_certificate']}"
f" --write-out '%{{http_code}}' https://{server_fqdn}/api/v2/ping"
)
if cmd.stdout == '200':
return
time.sleep(FOREMAN_PING_DELAY)
raise AssertionError("Foreman did not become available after target lifecycle operation")


def test_foreman_target_stop_start(server, server_fqdn, certificates):
result = server.run("systemctl stop foreman.target")
assert result.rc == 0, f"Failed to stop foreman.target: {result.stderr}"
assert not server.service("foreman.target").is_running

result = server.run("systemctl start foreman.target")
assert result.rc == 0, f"Failed to start foreman.target: {result.stderr}"
_wait_for_foreman(server, server_fqdn, certificates)
assert server.service("foreman.target").is_running


def test_foreman_target_restart(server, server_fqdn, certificates):
result = server.run("systemctl restart foreman.target")
assert result.rc == 0, f"Failed to restart foreman.target: {result.stderr}"
_wait_for_foreman(server, server_fqdn, certificates)
assert server.service("foreman.target").is_running