Skip to content

Commit 4d4968f

Browse files
committed
compose: restart simln container immediately when config is ready
1 parent 341b2d0 commit 4d4968f

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/backends/compose/compose_backend.py

+11-3
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ def _write_docker_compose(self, warnet):
266266
# Initialize services and add them to the compose
267267
for service_name in warnet.services:
268268
if "compose" in services[service_name]["backends"]:
269-
compose["services"][service_name] = self.service_from_json(services[service_name])
269+
compose["services"][service_name] = self.service_from_json(service_name)
270270

271271
docker_compose_path = warnet.config_dir / "docker-compose.yml"
272272
try:
@@ -451,7 +451,11 @@ def wait_for_healthy_tanks(self, warnet, timeout=60) -> bool:
451451

452452
return healthy
453453

454-
def service_from_json(self, obj) -> object:
454+
def get_service_container_name(self, service_name: str):
455+
return f"{self.network_name}_{services[service_name]['container_name_suffix']}"
456+
457+
def service_from_json(self, service_name: str) -> object:
458+
obj = services[service_name]
455459
volumes = obj.get("volumes", [])
456460
volumes += [f"{self.config_dir}" + filepath for filepath in obj.get("config_files", [])]
457461

@@ -460,7 +464,7 @@ def service_from_json(self, obj) -> object:
460464
ports = [f"{obj['warnet_port']}:{obj['container_port']}"]
461465
return {
462466
"image": obj["image"],
463-
"container_name": f"{self.network_name}_{obj['container_name_suffix']}",
467+
"container_name": self.get_service_container_name(service_name),
464468
"ports": ports,
465469
"volumes": volumes,
466470
"privileged": obj.get("privileged", False),
@@ -470,3 +474,7 @@ def service_from_json(self, obj) -> object:
470474
"restart": "on-failure",
471475
"networks": [self.network_name]
472476
}
477+
478+
def restart_service_container(self, service_name: str):
479+
container = self.client.containers.get(self.get_service_container_name(service_name))
480+
container.restart()

src/warnet/server.py

+3
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,9 @@ def network_export(self, network: str, activity: str) -> bool:
302302
# Extract the archive into a subdirectory that is already
303303
# shared with the simln container as a volume
304304
subprocess.run(["tar", "-xf", wn.config_dir / 'simln.tar', "-C", wn.config_dir / 'simln'])
305+
# Force quick restart of the container instead of waiting
306+
# for the exponential backoff to come around
307+
wn.container_interface.restart_service_container("simln")
305308
if self.backend == "k8s":
306309
# Write the archive to the "emptydir" volume in the simln pod
307310
wn.container_interface.write_service_config("simln", tar_buffer, "/simln/")

0 commit comments

Comments
 (0)