Skip to content

Commit 02f5d52

Browse files
authored
fix(hosted): give every routed cell service a Coolify-resolvable name (#34)
Coolify validates a routed service against its exact Compose key but resolves that key after rewriting "-" to "_", so a hyphenated routed service is stored where routing never reads it. The eSignet proxies already carry underscore names; extend that to the fourteen remaining routed services so their public routes can be set through the API instead of only through the Coolify UI. Only Compose service keys and their depends_on references change. Volume keys, host paths, label values, public hostnames, and the published URL map keep their hyphens. Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
1 parent 2066998 commit 02f5d52

11 files changed

Lines changed: 99 additions & 56 deletions

‎compose.coolify.agriculture.yaml‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ x-runtime: &runtime
1010
depends_on:
1111
audit-permissions: {condition: service_completed_successfully}
1212

13+
# Coolify matches a routed service against its exact compose key but resolves
14+
# that key after rewriting "-" to "_", so a hyphenated name is stored where
15+
# routing never reads it. Every service carrying solmara.lab.host therefore
16+
# uses an underscore name.
1317
services:
1418
audit-permissions:
1519
image: ${SOLMARA_AUTHORITY_PROVISIONER_IMAGE:?set the digest-pinned Solmara authority provisioner image}
@@ -25,23 +29,23 @@ services:
2529
security_opt: [no-new-privileges:true]
2630
volumes: [nagdi-relay-audit:/audit/nagdi-relay, nagdi-evidence-audit:/audit/nagdi-evidence]
2731

28-
nagdi-relay:
32+
nagdi_relay:
2933
<<: *runtime
3034
image: ${REGISTRY_RELAY_IMAGE:?set the digest-pinned official Registry Stack Relay image}
3135
command: [serve, --runtime, /etc/relay/nagdi/runtime.yaml]
3236
environment: {SOLMARA_RELAY_AUDIT_KEY: "${NAGDI_RELAY_AUDIT_KEY:?required}", SOLMARA_RELAY_CURSOR_KEY: "${NAGDI_RELAY_CURSOR_KEY:?required}"}
3337
volumes: [/data/solmara-authority-cells/nagdi-relay/runtime:/etc/relay/nagdi:ro, /data/solmara-authority-cells/nagdi-relay/source:/var/lib/relay/source:ro, nagdi-relay-audit:/var/lib/relay/audit]
3438
labels: {solmara.lab.host: nagdi-relay-authority-cells.solmara.registrystack.org, solmara.rollout.slot: authority-cells, traefik.docker.network: "${COOLIFY_RESOURCE_UUID:?set by Coolify for every deployment}"}
3539

36-
nagdi-evidence:
40+
nagdi_evidence:
3741
<<: *runtime
3842
image: ${SOLMARA_EVIDENCE_IMAGE:?set the digest-pinned official Registry Stack Evidence image}
3943
command: [--runtime, /etc/registry-evidence/nagdi/runtime.yaml, serve]
4044
volumes: [/data/solmara-authority-cells/nagdi-evidence/runtime:/etc/registry-evidence/nagdi:ro, /data/solmara-authority-cells/nagdi-evidence/secrets:/run/secrets/registry-evidence/nagdi:ro, /data/solmara-authority-cells/nagdi-evidence/transit:/run/registry-evidence/nagdi:ro, nagdi-evidence-audit:/var/lib/registry-evidence/nagdi/audit]
4145
networks: {runtime: {ipv4_address: 172.29.5.26}}
4246
depends_on:
4347
audit-permissions: {condition: service_completed_successfully}
44-
nagdi-relay: {condition: service_started}
48+
nagdi_relay: {condition: service_started}
4549
labels: {solmara.lab.host: "${SOLMARA_NAGDI_EVIDENCE_PUBLIC_HOST:-nagdi-evidence.solmara.registrystack.org}", solmara.rollout.slot: authority-cells, traefik.docker.network: "${COOLIFY_RESOURCE_UUID:?set by Coolify for every deployment}"}
4650

4751
volumes:

‎compose.coolify.interior.yaml‎

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ x-runtime: &runtime
1010
depends_on:
1111
audit-permissions: {condition: service_completed_successfully}
1212

13+
# Coolify matches a routed service against its exact compose key but resolves
14+
# that key after rewriting "-" to "_", so a hyphenated name is stored where
15+
# routing never reads it. Every service carrying solmara.lab.host therefore
16+
# uses an underscore name.
1317
services:
1418
audit-permissions:
1519
image: ${SOLMARA_AUTHORITY_PROVISIONER_IMAGE:?set the digest-pinned Solmara authority provisioner image}
@@ -25,34 +29,34 @@ services:
2529
security_opt: [no-new-privileges:true]
2630
volumes: [cra-relay-audit:/audit/cra-relay, nia-relay-audit:/audit/nia-relay, cra-evidence-audit:/audit/cra-evidence, nia-evidence-audit:/audit/nia-evidence]
2731

28-
cra-relay:
32+
cra_relay:
2933
<<: *runtime
3034
image: ${REGISTRY_RELAY_IMAGE:?set the digest-pinned official Registry Stack Relay image}
3135
command: [serve, --runtime, /etc/relay/cra/runtime.yaml]
3236
environment: {SOLMARA_RELAY_AUDIT_KEY: "${CRA_RELAY_AUDIT_KEY:?required}"}
3337
volumes: [/data/solmara-authority-cells/cra-relay/runtime:/etc/relay/cra:ro, /data/solmara-authority-cells/cra-relay/source:/var/lib/relay/source:ro, cra-relay-audit:/var/lib/relay/audit]
3438
labels: {solmara.lab.host: cra-relay-authority-cells.solmara.registrystack.org, solmara.rollout.slot: authority-cells, traefik.docker.network: "${COOLIFY_RESOURCE_UUID:?set by Coolify for every deployment}"}
3539

36-
nia-relay:
40+
nia_relay:
3741
<<: *runtime
3842
image: ${REGISTRY_RELAY_IMAGE:?set the digest-pinned official Registry Stack Relay image}
3943
command: [serve, --runtime, /etc/relay/nia/runtime.yaml]
4044
environment: {SOLMARA_RELAY_AUDIT_KEY: "${NIA_RELAY_AUDIT_KEY:?required}"}
4145
volumes: [/data/solmara-authority-cells/nia-relay/runtime:/etc/relay/nia:ro, /data/solmara-authority-cells/nia-relay/source:/var/lib/relay/source:ro, nia-relay-audit:/var/lib/relay/audit]
4246
labels: {solmara.lab.host: nia-relay-authority-cells.solmara.registrystack.org, solmara.rollout.slot: authority-cells, traefik.docker.network: "${COOLIFY_RESOURCE_UUID:?set by Coolify for every deployment}"}
4347

44-
cra-evidence:
48+
cra_evidence:
4549
<<: *runtime
4650
image: ${SOLMARA_EVIDENCE_IMAGE:?set the digest-pinned official Registry Stack Evidence image}
4751
command: [--runtime, /etc/registry-evidence/cra/runtime.yaml, serve]
4852
volumes: [/data/solmara-authority-cells/cra-evidence/runtime:/etc/registry-evidence/cra:ro, /data/solmara-authority-cells/cra-evidence/secrets:/run/secrets/registry-evidence/cra:ro, /data/solmara-authority-cells/cra-evidence/transit:/run/registry-evidence/cra:ro, /data/solmara-authority-cells/cra-evidence/extracts:/var/lib/registry-evidence/cra/extracts:ro, cra-evidence-audit:/var/lib/registry-evidence/cra/audit]
4953
networks: {runtime: {ipv4_address: 172.29.2.21}}
5054
depends_on:
5155
audit-permissions: {condition: service_completed_successfully}
52-
cra-relay: {condition: service_started}
56+
cra_relay: {condition: service_started}
5357
labels: {solmara.lab.host: "${SOLMARA_CRA_EVIDENCE_PUBLIC_HOST:-cra-evidence.solmara.registrystack.org}", solmara.rollout.slot: authority-cells, traefik.docker.network: "${COOLIFY_RESOURCE_UUID:?set by Coolify for every deployment}"}
5458

55-
nia-evidence:
59+
nia_evidence:
5660
<<: *runtime
5761
image: ${SOLMARA_EVIDENCE_IMAGE:?set the digest-pinned official Registry Stack Evidence image}
5862
command: [--runtime, /etc/registry-evidence/nia/runtime.yaml, serve]

‎compose.coolify.labour-pensions.yaml‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ x-runtime: &runtime
1010
depends_on:
1111
audit-permissions: {condition: service_completed_successfully}
1212

13+
# Coolify matches a routed service against its exact compose key but resolves
14+
# that key after rewriting "-" to "_", so a hyphenated name is stored where
15+
# routing never reads it. Every service carrying solmara.lab.host therefore
16+
# uses an underscore name.
1317
services:
1418
audit-permissions:
1519
image: ${SOLMARA_AUTHORITY_PROVISIONER_IMAGE:?set the digest-pinned Solmara authority provisioner image}
@@ -25,23 +29,23 @@ services:
2529
security_opt: [no-new-privileges:true]
2630
volumes: [sipf-relay-audit:/audit/sipf-relay, sipf-evidence-audit:/audit/sipf-evidence]
2731

28-
sipf-relay:
32+
sipf_relay:
2933
<<: *runtime
3034
image: ${REGISTRY_RELAY_IMAGE:?set the digest-pinned official Registry Stack Relay image}
3135
command: [serve, --runtime, /etc/relay/sipf/runtime.yaml]
3236
environment: {SOLMARA_RELAY_AUDIT_KEY: "${SIPF_RELAY_AUDIT_KEY:?required}", SOLMARA_RELAY_CURSOR_KEY: "${SIPF_RELAY_CURSOR_KEY:?required}"}
3337
volumes: [/data/solmara-authority-cells/sipf-relay/runtime:/etc/relay/sipf:ro, /data/solmara-authority-cells/sipf-relay/source:/var/lib/relay/source:ro, sipf-relay-audit:/var/lib/relay/audit]
3438
labels: {solmara.lab.host: sipf-relay-authority-cells.solmara.registrystack.org, solmara.rollout.slot: authority-cells, traefik.docker.network: "${COOLIFY_RESOURCE_UUID:?set by Coolify for every deployment}"}
3539

36-
sipf-evidence:
40+
sipf_evidence:
3741
<<: *runtime
3842
image: ${SOLMARA_EVIDENCE_IMAGE:?set the digest-pinned official Registry Stack Evidence image}
3943
command: [--runtime, /etc/registry-evidence/sipf/runtime.yaml, serve]
4044
volumes: [/data/solmara-authority-cells/sipf-evidence/runtime:/etc/registry-evidence/sipf:ro, /data/solmara-authority-cells/sipf-evidence/secrets:/run/secrets/registry-evidence/sipf:ro, /data/solmara-authority-cells/sipf-evidence/transit:/run/registry-evidence/sipf:ro, sipf-evidence-audit:/var/lib/registry-evidence/sipf/audit]
4145
networks: {runtime: {ipv4_address: 172.29.4.25}}
4246
depends_on:
4347
audit-permissions: {condition: service_completed_successfully}
44-
sipf-relay: {condition: service_started}
48+
sipf_relay: {condition: service_started}
4549
labels: {solmara.lab.host: "${SOLMARA_SIPF_EVIDENCE_PUBLIC_HOST:-sipf-evidence.solmara.registrystack.org}", solmara.rollout.slot: authority-cells, traefik.docker.network: "${COOLIFY_RESOURCE_UUID:?set by Coolify for every deployment}"}
4650

4751
volumes:

‎compose.coolify.social-development.yaml‎

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ x-runtime: &runtime
1010
depends_on:
1111
audit-permissions: {condition: service_completed_successfully}
1212

13+
# Coolify matches a routed service against its exact compose key but resolves
14+
# that key after rewriting "-" to "_", so a hyphenated name is stored where
15+
# routing never reads it. Every service carrying solmara.lab.host therefore
16+
# uses an underscore name.
1317
services:
1418
audit-permissions:
1519
image: ${SOLMARA_AUTHORITY_PROVISIONER_IMAGE:?set the digest-pinned Solmara authority provisioner image}
@@ -25,31 +29,31 @@ services:
2529
security_opt: [no-new-privileges:true]
2630
volumes: [mosd-relay-audit:/audit/mosd-relay, sro-evidence-audit:/audit/sro-evidence, mosd-evidence-audit:/audit/mosd-evidence]
2731

28-
mosd-relay:
32+
mosd_relay:
2933
<<: *runtime
3034
image: ${REGISTRY_RELAY_IMAGE:?set the digest-pinned official Registry Stack Relay image}
3135
command: [serve, --runtime, /etc/relay/mosd/runtime.yaml]
3236
environment: {SOLMARA_RELAY_AUDIT_KEY: "${MOSD_RELAY_AUDIT_KEY:?required}"}
3337
volumes: [/data/solmara-authority-cells/mosd-relay/runtime:/etc/relay/mosd:ro, /data/solmara-authority-cells/mosd-relay/source:/var/lib/relay/source:ro, mosd-relay-audit:/var/lib/relay/audit]
3438
labels: {solmara.lab.host: mosd-programme-relay-authority-cells.solmara.registrystack.org, solmara.rollout.slot: authority-cells, traefik.docker.network: "${COOLIFY_RESOURCE_UUID:?set by Coolify for every deployment}"}
3539

36-
sro-evidence:
40+
sro_evidence:
3741
<<: *runtime
3842
image: ${SOLMARA_EVIDENCE_IMAGE:?set the digest-pinned official Registry Stack Evidence image}
3943
command: [--runtime, /etc/registry-evidence/sro/runtime.yaml, serve]
4044
volumes: [/data/solmara-authority-cells/sro-evidence/runtime:/etc/registry-evidence/sro:ro, /data/solmara-authority-cells/sro-evidence/secrets:/run/secrets/registry-evidence/sro:ro, /data/solmara-authority-cells/sro-evidence/transit:/run/registry-evidence/sro:ro, /data/solmara-authority-cells/sro-evidence/extracts:/var/lib/registry-evidence/sro/extracts:ro, sro-evidence-audit:/var/lib/registry-evidence/sro/audit]
4145
networks: {runtime: {ipv4_address: 172.29.3.23}}
4246
labels: {solmara.lab.host: "${SOLMARA_SRO_EVIDENCE_PUBLIC_HOST:-sro-evidence.solmara.registrystack.org}", solmara.rollout.slot: authority-cells, traefik.docker.network: "${COOLIFY_RESOURCE_UUID:?set by Coolify for every deployment}"}
4347

44-
mosd-programme-evidence:
48+
mosd_programme_evidence:
4549
<<: *runtime
4650
image: ${SOLMARA_EVIDENCE_IMAGE:?set the digest-pinned official Registry Stack Evidence image}
4751
command: [--runtime, /etc/registry-evidence/mosd-programme/runtime.yaml, serve]
4852
volumes: [/data/solmara-authority-cells/mosd-evidence/runtime:/etc/registry-evidence/mosd-programme:ro, /data/solmara-authority-cells/mosd-evidence/secrets:/run/secrets/registry-evidence/mosd-programme:ro, /data/solmara-authority-cells/mosd-evidence/transit:/run/registry-evidence/mosd-programme:ro, mosd-evidence-audit:/var/lib/registry-evidence/mosd-programme/audit]
4953
networks: {runtime: {ipv4_address: 172.29.3.24}}
5054
depends_on:
5155
audit-permissions: {condition: service_completed_successfully}
52-
mosd-relay: {condition: service_started}
56+
mosd_relay: {condition: service_started}
5357
labels: {solmara.lab.host: "${SOLMARA_MOSD_PROGRAMME_EVIDENCE_PUBLIC_HOST:-mosd-programme-evidence.solmara.registrystack.org}", solmara.rollout.slot: authority-cells, traefik.docker.network: "${COOLIFY_RESOURCE_UUID:?set by Coolify for every deployment}"}
5458

5559
volumes:

‎compose.coolify.yaml‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ x-hosted-evidence-environment: &hosted-evidence
1212
SOLMARA_SIPF_EVIDENCE_URL: ${SOLMARA_SIPF_EVIDENCE_PUBLIC_BASE_URL:-https://sipf-evidence.solmara.registrystack.org}
1313
SOLMARA_NAGDI_EVIDENCE_URL: ${SOLMARA_NAGDI_EVIDENCE_PUBLIC_BASE_URL:-https://nagdi-evidence.solmara.registrystack.org}
1414
CHILD_BENEFIT_FEDERATOR_TOKEN: ${CHILD_BENEFIT_FEDERATOR_TOKEN:?required}
15+
# Coolify matches a routed service against its exact compose key but resolves
16+
# that key after rewriting "-" to "_", so a hyphenated name is stored where
17+
# routing never reads it. Every service carrying solmara.lab.host therefore
18+
# uses an underscore name.
1519
services:
1620
audit-permissions:
1721
image: ${SOLMARA_AUTHORITY_PROVISIONER_IMAGE:?set the digest-pinned Solmara authority provisioner image}
@@ -55,14 +59,14 @@ services:
5559
security_opt: [no-new-privileges:true]
5660
depends_on:
5761
mint: {condition: service_started}
58-
static-metadata:
62+
static_metadata:
5963
image: ${SOLMARA_STATIC_METADATA_IMAGE:?set a digest-pinned Solmara static metadata image}
6064
# The image only layers the published metadata onto a stock Python base and
6165
# sets no CMD of its own, so the server has to be named here.
6266
command: ["python", "-m", "http.server", "8080", "--bind", "0.0.0.0", "--directory", "/srv/static"]
6367
restart: unless-stopped
6468
labels: {solmara.lab.host: "${SOLMARA_METADATA_PUBLIC_HOST:-metadata.solmara.registrystack.org}"}
65-
scenario-runner:
69+
scenario_runner:
6670
image: ${SOLMARA_SCENARIO_RUNNER_IMAGE:?set a digest-pinned Solmara scenario runner image}
6771
restart: unless-stopped
6872
environment:
@@ -76,7 +80,7 @@ services:
7680
depends_on:
7781
mint-readiness: {condition: service_completed_successfully}
7882
labels: {solmara.lab.host: "${SOLMARA_SCENARIO_RUNNER_PUBLIC_HOST:-scenarios.solmara.registrystack.org}"}
79-
child-benefit-federator:
83+
child_benefit_federator:
8084
image: ${SOLMARA_SCENARIO_RUNNER_IMAGE:?set a digest-pinned Solmara scenario runner image}
8185
command: ["python", "scenario-runner/child_benefit_federator.py"]
8286
restart: unless-stopped

‎docs/hosted-deployment.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,12 @@ which resolves to the Coolify-managed network the proxy is on. A routed service
8686
that joins the ingress network alone has no choice to remove and carries no such
8787
label.
8888

89+
Coolify accepts a routed service only under its exact Compose key but resolves
90+
that key after rewriting `-` to `_`. A hyphenated routed service is therefore
91+
recorded where routing never reads it and answers no public route. Every service
92+
that carries `solmara.lab.host` uses an underscore name so both halves agree.
93+
Volume keys, host paths, label values, and public hostnames are unaffected.
94+
8995
`compose.coolify.provision.yaml` is a dedicated operator-only application. It
9096
runs only the one-shot target provisioners and is the sole writer of every
9197
shared path except the seven Transit sockets.

‎scripts/test_hosted_evidence_routes.py‎

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,56 +14,56 @@
1414
TEST_IMAGE = "example.invalid/solmara@sha256:" + "a" * 64
1515

1616
EVIDENCE_ROUTES = {
17-
"cra-evidence": (
17+
"cra_evidence": (
1818
ROOT / "compose.coolify.interior.yaml",
1919
"SOLMARA_CRA_EVIDENCE_PUBLIC_HOST",
2020
"cra-evidence.solmara.registrystack.org",
2121
),
22-
"nia-evidence": (
22+
"nia_evidence": (
2323
ROOT / "compose.coolify.interior.yaml",
2424
"SOLMARA_NIA_EVIDENCE_PUBLIC_HOST",
2525
"nia-evidence.solmara.registrystack.org",
2626
),
27-
"sro-evidence": (
27+
"sro_evidence": (
2828
ROOT / "compose.coolify.social-development.yaml",
2929
"SOLMARA_SRO_EVIDENCE_PUBLIC_HOST",
3030
"sro-evidence.solmara.registrystack.org",
3131
),
32-
"mosd-programme-evidence": (
32+
"mosd_programme_evidence": (
3333
ROOT / "compose.coolify.social-development.yaml",
3434
"SOLMARA_MOSD_PROGRAMME_EVIDENCE_PUBLIC_HOST",
3535
"mosd-programme-evidence.solmara.registrystack.org",
3636
),
37-
"sipf-evidence": (
37+
"sipf_evidence": (
3838
ROOT / "compose.coolify.labour-pensions.yaml",
3939
"SOLMARA_SIPF_EVIDENCE_PUBLIC_HOST",
4040
"sipf-evidence.solmara.registrystack.org",
4141
),
42-
"nagdi-evidence": (
42+
"nagdi_evidence": (
4343
ROOT / "compose.coolify.agriculture.yaml",
4444
"SOLMARA_NAGDI_EVIDENCE_PUBLIC_HOST",
4545
"nagdi-evidence.solmara.registrystack.org",
4646
),
4747
}
4848

4949
RELAY_ROUTES = {
50-
"cra-relay": (
50+
"cra_relay": (
5151
ROOT / "compose.coolify.interior.yaml",
5252
"cra-relay-authority-cells.solmara.registrystack.org",
5353
),
54-
"nia-relay": (
54+
"nia_relay": (
5555
ROOT / "compose.coolify.interior.yaml",
5656
"nia-relay-authority-cells.solmara.registrystack.org",
5757
),
58-
"mosd-relay": (
58+
"mosd_relay": (
5959
ROOT / "compose.coolify.social-development.yaml",
6060
"mosd-programme-relay-authority-cells.solmara.registrystack.org",
6161
),
62-
"sipf-relay": (
62+
"sipf_relay": (
6363
ROOT / "compose.coolify.labour-pensions.yaml",
6464
"sipf-relay-authority-cells.solmara.registrystack.org",
6565
),
66-
"nagdi-relay": (
66+
"nagdi_relay": (
6767
ROOT / "compose.coolify.agriculture.yaml",
6868
"nagdi-relay-authority-cells.solmara.registrystack.org",
6969
),
@@ -139,9 +139,11 @@ def test_canonical_evidence_defaults_render_across_apps(self) -> None:
139139
)
140140

141141
def test_staging_evidence_hosts_render_without_changing_relay_routes(self) -> None:
142+
# The compose key is not a hostname label, so the staging host comes
143+
# from the canonical route rather than from the service name.
142144
overrides = {
143-
variable: f"{service}.staging.example.org"
144-
for service, (_, variable, _) in EVIDENCE_ROUTES.items()
145+
variable: f"{canonical_host.split('.', 1)[0]}.staging.example.org"
146+
for _, variable, canonical_host in EVIDENCE_ROUTES.values()
145147
}
146148
rendered = {
147149
path: render_compose(path, overrides)
@@ -162,5 +164,20 @@ def test_staging_evidence_hosts_render_without_changing_relay_routes(self) -> No
162164
)
163165

164166

167+
class RoutedServiceNameTests(unittest.TestCase):
168+
def test_every_routed_service_carries_a_coolify_resolvable_name(self) -> None:
169+
"""Coolify accepts a routed service only under its exact compose key but
170+
resolves it after rewriting "-" to "_", so a hyphenated key is stored
171+
where routing never reads it and the service answers no public route."""
172+
for path in sorted(ROOT.glob("compose.coolify*.yaml")):
173+
compose = yaml.safe_load(path.read_text(encoding="utf-8"))
174+
for name, service in (compose.get("services") or {}).items():
175+
labels = service.get("labels") or {}
176+
if "solmara.lab.host" not in labels:
177+
continue
178+
with self.subTest(compose=path.name, service=name):
179+
self.assertNotIn("-", name)
180+
181+
165182
if __name__ == "__main__":
166183
unittest.main()

‎scripts/test_hosted_home_topology.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ def test_static_metadata_serves_the_published_directory(self) -> None:
3333
# interpreter, so without an explicit command the container exits 0 at
3434
# once and restarts forever instead of serving.
3535
compose = yaml.safe_load(COMPOSE_PATH.read_text(encoding="utf-8"))
36-
command = compose["services"]["static-metadata"].get("command")
36+
command = compose["services"]["static_metadata"].get("command")
3737

38-
self.assertIsNotNone(command, "static-metadata must name its server command")
38+
self.assertIsNotNone(command, "static_metadata must name its server command")
3939
self.assertEqual(
4040
command,
4141
["python", "-m", "http.server", "8080", "--bind", "0.0.0.0", "--directory", "/srv/static"],

0 commit comments

Comments
 (0)