This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
2020-09-02 22:04:12 +00:00
|
|
|
"""Base Controller"""
|
|
|
|
from typing import Dict
|
|
|
|
|
|
|
|
from structlog import get_logger
|
|
|
|
|
2020-10-16 09:31:31 +00:00
|
|
|
from passbook.lib.sentry import SentryIgnoredException
|
2020-09-02 22:04:12 +00:00
|
|
|
from passbook.outposts.models import Outpost
|
|
|
|
|
|
|
|
|
2020-10-16 09:31:31 +00:00
|
|
|
class ControllerException(SentryIgnoredException):
|
|
|
|
"""Exception raise when anything fails during controller run"""
|
|
|
|
|
|
|
|
|
2020-09-02 22:04:12 +00:00
|
|
|
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
|