Functional Weave
Code in TypeScript

monitor.component-state@1.0.0

impl/python.py

1,122 bytes · the Python implementation · view raw

Imports name this capability’s declared dependencies, which fune builds next to it in your project; each one links to its page.

from typing import Sequence

from .monitor_check_status import CheckStatus  ← from monitor.check-status ^1.0.0 · built alongside by fune
from .monitor_component_state_types import ComponentState


def component_state(statuses: Sequence[CheckStatus], under_maintenance: bool) -> ComponentState:
    """One component's state in Atlassian Statuspage's vocabulary. Maintenance
    wins, so planned work never pages anyone as an outage; the statuses are
    still checked, so a bad feed fails loudly even during maintenance."""
    if len(statuses) == 0:
        raise ValueError("statuses must not be empty")
    if not isinstance(under_maintenance, bool):
        raise ValueError("underMaintenance must be true or false")
    down = 0
    degraded = 0
    for s in statuses:
        if s == "down":
            down += 1
        elif s == "degraded":
            degraded += 1
        elif s != "up":
            raise ValueError("unknown check status: %s" % (s,))
    if under_maintenance:
        return "maintenance"
    if down == len(statuses):
        return "major-outage"
    if down > 0:
        return "partial-outage"
    return "degraded" if degraded > 0 else "operational"