import typer from agebd.utils import get_git_root from config.paths import Paths from core.ansible import run_playbook from core.enums import IOC_ENV from models import ServiceRegistry ioc = typer.Typer(no_args_is_help=True) REPO_ROOT = get_git_root(__file__) ANSIBLE_PLAYBOOKS_DIR = REPO_ROOT / "ansible" / "playbooks" IOC_PLAYBOOK_INSTALL = ANSIBLE_PLAYBOOKS_DIR / "ioc-install.yml" IOC_PLAYBOOK_RESTART = ANSIBLE_PLAYBOOKS_DIR / "ioc-restart.yml" IOC_PLAYBOOK_START = ANSIBLE_PLAYBOOKS_DIR / "ioc-start.yml" SERVICE_NAME_HELP = "Service name in lower case" @ioc.command(no_args_is_help=True) def install( env: IOC_ENV = typer.Option(..., "--env"), service_name_lower: str = typer.Option(..., "--service-name", "-s", help=SERVICE_NAME_HELP), branch_name: str | None = typer.Option( None, "--branch-name", "-b", help="Default is 'feature/add-service-{service-name}'" ), ): if branch_name is None: branch_name = f"feature/add-service-{service_name_lower}" branch_var = f"branch_name={branch_name}" service_name_var = f"service_name_lower={service_name_lower}" run_playbook(playbook=str(IOC_PLAYBOOK_INSTALL), env=env, vars=[branch_var, service_name_var]) @ioc.command(no_args_is_help=True) def install_all( env: IOC_ENV = typer.Option(..., "--env"), ): paths = Paths() registry = ServiceRegistry.read_from_file(paths.service_registry_file) services = registry.get_services() branch_var = "branch_name=main" for service in services: service_name_var = f"service_name_lower={service.name_lower}" run_playbook( playbook=str(IOC_PLAYBOOK_INSTALL), env=env, vars=[branch_var, service_name_var] ) @ioc.command(no_args_is_help=True) def start( env: IOC_ENV = typer.Option(..., "--env"), service_name_lower: str = typer.Option(..., "--service-name", "-s", help=SERVICE_NAME_HELP), branch_name: str | None = typer.Option( None, "--branch-name", "-b", help="Default is 'feature/add-service-{service-name}'" ), ): if branch_name is None: branch_name = f"feature/add-service-{service_name_lower}" branch_var = f"branch_name={branch_name}" service_name_var = f"service_name_lower={service_name_lower}" run_playbook(playbook=str(IOC_PLAYBOOK_START), env=env, vars=[service_name_var, branch_var]) @ioc.command() def start_all( env: IOC_ENV = typer.Option(..., "--env"), ): paths = Paths() registry = ServiceRegistry.read_from_file(paths.service_registry_file) services = registry.get_services() for service in services: service_name_var = f"service_name_lower={service.name_lower}" run_playbook(playbook=str(IOC_PLAYBOOK_START), env=env, vars=[service_name_var]) @ioc.command(no_args_is_help=True) def restart( env: IOC_ENV = typer.Option(..., "--env"), service_name_lower: str = typer.Option(..., "--service-name", "-s", help=SERVICE_NAME_HELP), branch_name: str | None = typer.Option( None, "--branch-name", "-b", help="Default is 'feature/add-service-{service-name}'" ), ): if branch_name is None: branch_name = f"feature/add-service-{service_name_lower}" branch_var = f"branch_name={branch_name}" service_name_var = f"service_name_lower={service_name_lower}" run_playbook(playbook=str(IOC_PLAYBOOK_RESTART), env=env, vars=[branch_var, service_name_var]) @ioc.command(no_args_is_help=True) def restart_all( env: IOC_ENV = typer.Option(..., "--env"), ): paths = Paths() registry = ServiceRegistry.read_from_file(paths.service_registry_file) services = registry.get_services() branch_var = "branch_name=main" for service in services: service_name_var = f"service_name_lower={service.name_lower}" run_playbook( playbook=str(IOC_PLAYBOOK_RESTART), env=env, vars=[branch_var, service_name_var] )