#!/usr/bin/python3 import argparse import subprocess import textwrap def act(cmd, dry_run=True, verbose=True): if dry_run: print(f"will execute: {cmd}") return if verbose: print(cmd) subprocess.run(cmd.split()) parser = argparse.ArgumentParser( prog="leif", formatter_class=argparse.RawTextHelpFormatter, description=textwrap.dedent(""" Verktygslåda för att hantera och monitorera API Gateway-tjänstens systemd-tjänst och container. """), epilog=textwrap.dedent(""" Kontakt: Integration, Team Flex För dokumentation, se wiki: - wiki.trafikverket.local/IKC """), ) parser.add_argument( "-v", "--verbose", help="Utökad utskrift vid körning", action="store_true" ) parser.add_argument( "-d", "--dry-run", help="Simulera åtgärd istället", action="store_true" ) subparsers = parser.add_subparsers(dest="action") subparsers.add_parser("inspect", help="inspektera den körande containern") logs_parser = subparsers.add_parser("logs", help="skriv ut containerns logg") logs_parser.add_argument( "-f", "--follow", action="store_true", help="svansa och följ loggen" ) subparsers.add_parser("restart", help="starta om systemd-tjänsten") subparsers.add_parser( "shell", help="initiera ett bash-skal inuti den körande containern" ) subparsers.add_parser("start", help="starta systemd-tjänsten") subparsers.add_parser( "status", help="skriv ut container-ID och upptid för den körande containern" ) subparsers.add_parser("stop", help="stoppa systemd-tjänsten") subparsers.add_parser("whoami", help="skriv ut containeravbildens ProGet-ID") if __name__ == "__main__": args = parser.parse_args() match args.action: case "inspect": act("podman inspect api_gateway", args.dry_run, args.verbose) case "restart": act( "systemcl --user restart container-api-gateway", args.dry_run, args.verbose, ) case "shell": act("podman exec -it api_gateway /bin/bash", args.dry_run, args.verbose) case "start": act( "systemcl --user start container-api-gateway", args.dry_run, args.verbose, ) case "status": act("podman ps --format '{{.ID}}'", args.dry_run, args.verbose) case "stop": act( "systemcl --user stop container-api-gateway", args.dry_run, args.verbose ) case "whoami": act("podman inspect api_gateway | grep Image", args.dry_run, args.verbose) case "logs": flags = "-f --tail 1 " if args.follow else "" act(f"podman logs {flags}api_gateway", args.dry_run, args.verbose)