#!/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)