majuna/app/terraform/__init__.py

37 lines
1.2 KiB
Python
Raw Normal View History

from abc import ABCMeta, abstractmethod
2022-03-10 14:26:22 +00:00
import os
from typing import Tuple
2022-03-10 14:26:22 +00:00
from app import app
class BaseAutomation(metaclass=ABCMeta):
2022-05-15 18:47:46 +01:00
short_name: str = "base"
description: str = "Abstract base automation."
frequency: int
"""
The short name of the automation provider. This is used as an opaque token throughout
the portal system.
"""
@abstractmethod
def automate(self, full: bool = False) -> Tuple[bool, str]:
raise NotImplementedError()
def working_directory(self, filename=None) -> str:
"""
Provides a filesystem path that can be used during the automation run.
This is currently a persistent path, but this should not be relied upon
as future versions may use disposable temporary paths instead. State that
is needed in subsequent runs should be stored elsewhere.
:param filename: the filename inside the working directory to create a path for
:return: filesystem path for that filename
"""
2022-03-10 14:26:22 +00:00
return os.path.join(
app.config['TERRAFORM_DIRECTORY'],
self.short_name or self.__class__.__name__.lower(),
filename or ""
)