mesa/.gitlab-ci/lava/utils/lava_farm.py

36 lines
886 B
Python

import os
import re
from enum import Enum
class LavaFarm(Enum):
"""Enum class representing the different LAVA farms."""
LIMA = 1
COLLABORA = 2
UNKNOWN = 3
LAVA_FARM_RUNNER_PATTERNS: dict[LavaFarm, str] = {
# Lima pattern comes first, since it has the same prefix as the
# Collabora pattern.
LavaFarm.LIMA: r"^mesa-ci-[\x01-\x7F]+-lava-lima$",
LavaFarm.COLLABORA: r"^mesa-ci-[\x01-\x7F]+-lava-[\x01-\x7F]+$",
LavaFarm.UNKNOWN: r"^[\x01-\x7F]+",
}
def get_lava_farm() -> LavaFarm:
"""
Returns the LAVA farm based on the RUNNER_TAG environment variable.
:return: The LAVA farm
"""
runner_tag: str = os.getenv("RUNNER_TAG", "unknown")
for farm, pattern in LAVA_FARM_RUNNER_PATTERNS.items():
if re.match(pattern, runner_tag):
return farm
raise ValueError(f"Unknown LAVA runner tag: {runner_tag}")