Support Podman 5
This commit is contained in:
parent
d0d23416d6
commit
3cd0e7adfb
15
main.py
15
main.py
|
@ -13,6 +13,7 @@ import click
|
||||||
import sh
|
import sh
|
||||||
|
|
||||||
SERVICES_BASE_PATH = "/infra/services/"
|
SERVICES_BASE_PATH = "/infra/services/"
|
||||||
|
POD_CHECK_TIME = 120.0
|
||||||
|
|
||||||
shlog = sh.bake(_out=sys.stdout, _err=sys.stderr)
|
shlog = sh.bake(_out=sys.stdout, _err=sys.stderr)
|
||||||
sdnotify = sh.Command("systemd-notify")
|
sdnotify = sh.Command("systemd-notify")
|
||||||
|
@ -117,12 +118,18 @@ class PodKeeper:
|
||||||
def check_pod(self):
|
def check_pod(self):
|
||||||
new_timestamp = datetime.utcnow()
|
new_timestamp = datetime.utcnow()
|
||||||
inspect_command = sh.podman.pod.inspect(self.podname, _return_cmd=True)
|
inspect_command = sh.podman.pod.inspect(self.podname, _return_cmd=True)
|
||||||
pod_description = json.loads(inspect_command.stdout)
|
multiple_descriptions = json.loads(inspect_command.stdout)
|
||||||
|
if not multiple_descriptions:
|
||||||
|
print(f"No pod descriptions found for {self.podname}", file=sys.stderr, flush=True)
|
||||||
|
self.stopping.set()
|
||||||
|
return
|
||||||
|
assert len(multiple_descriptions) == 1, f"Single pod description expected for {self.podname}"
|
||||||
|
pod_description = multiple_descriptions[0]
|
||||||
for container in pod_description["Containers"]:
|
for container in pod_description["Containers"]:
|
||||||
if container["State"] != "running":
|
if container["State"] != "running":
|
||||||
print(f"Container {container['Name']} exited", file=sys.stderr, flush=True)
|
print(f"Container {container['Name']} exited", file=sys.stderr, flush=True)
|
||||||
logs_since = self.last_check - timedelta(seconds=10)
|
logs_since = self.last_check - timedelta(seconds=POD_CHECK_TIME)
|
||||||
print(f"Log since last check (-10s):\n", file=sys.stderr, flush=True)
|
print(f"Log since last check (-{POD_CHECK_TIME}s):\n", file=sys.stderr, flush=True)
|
||||||
shlog.podman.logs('--since', logs_since.isoformat(), container['Name'], _out=sys.stderr)
|
shlog.podman.logs('--since', logs_since.isoformat(), container['Name'], _out=sys.stderr)
|
||||||
self.stopping.set()
|
self.stopping.set()
|
||||||
self.last_check = new_timestamp
|
self.last_check = new_timestamp
|
||||||
|
@ -178,7 +185,7 @@ def main(network, log_driver, log_level, replace, remove, verbose, identifier):
|
||||||
signal(SIGALRM, keeper.check)
|
signal(SIGALRM, keeper.check)
|
||||||
signal(SIGUSR1, keeper.passthrough)
|
signal(SIGUSR1, keeper.passthrough)
|
||||||
signal(SIGUSR2, keeper.passthrough)
|
signal(SIGUSR2, keeper.passthrough)
|
||||||
setitimer(ITIMER_REAL, 4.0, 120.0)
|
setitimer(ITIMER_REAL, 3.0, POD_CHECK_TIME)
|
||||||
|
|
||||||
keeper.run()
|
keeper.run()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue