Source code for penguin.analyses

from abc import ABC, abstractmethod
from typing import List

from .graphs import Configuration, Failure, Mitigation


[docs] class PenguinAnalysis(ABC): ANALYSIS_TYPE = None def __init__(self, debug: bool = False): self.debug = debug def __repr__(self): return f"Penguin_Analysis:{self.ANALYSIS_TYPE}"
[docs] @abstractmethod def parse_failures(self, output_dir) -> List[Failure]: """ Given a run's output directory, parse the failures as reported by our corresponding PyPlugin and return as a list """ pass
[docs] @abstractmethod def get_potential_mitigations( self, config: Configuration, failure: Failure ) -> List[Mitigation]: """ Given a configuration and the global state, what potential mitigations could be deployed? """ pass
[docs] @abstractmethod def implement_mitigation( self, config: Configuration, failure: Failure, mitigation: Mitigation ) -> Configuration: """ Given a configuration a fail cause and a mitigation, return a new configuration with the mitigation applied. """ pass