"""Base Controller""" from typing import Dict from structlog import get_logger from passbook.outposts.models import Outpost class BaseController: """Base Outpost deployment controller""" deployment_ports: Dict[str, int] outpost: Outpost def __init__(self, outpost_pk: str): self.outpost = Outpost.objects.get(pk=outpost_pk) self.logger = get_logger( controller=self.__class__.__name__, outpost=self.outpost ) self.deployment_ports = {} def run(self): """Called by scheduled task to reconcile deployment/service/etc""" raise NotImplementedError def get_static_deployment(self) -> str: """Return a static deployment configuration""" raise NotImplementedError