1import os 2import re 3from enum import Enum 4 5 6class LavaFarm(Enum): 7 """Enum class representing the different LAVA farms.""" 8 9 LIMA = 1 10 COLLABORA = 2 11 UNKNOWN = 3 12 13 14LAVA_FARM_RUNNER_PATTERNS: dict[LavaFarm, str] = { 15 # Lima pattern comes first, since it has the same prefix as the 16 # Collabora pattern. 17 LavaFarm.LIMA: r"^mesa-ci-[\x01-\x7F]+-lava-lima$", 18 LavaFarm.COLLABORA: r"^mesa-ci-[\x01-\x7F]+-lava-[\x01-\x7F]+$", 19 LavaFarm.UNKNOWN: r"^[\x01-\x7F]+", 20} 21 22 23def get_lava_farm() -> LavaFarm: 24 """ 25 Returns the LAVA farm based on the RUNNER_TAG environment variable. 26 27 :return: The LAVA farm 28 """ 29 runner_tag: str = os.getenv("RUNNER_TAG", "unknown") 30 31 for farm, pattern in LAVA_FARM_RUNNER_PATTERNS.items(): 32 if re.match(pattern, runner_tag): 33 return farm 34 35 raise ValueError(f"Unknown LAVA runner tag: {runner_tag}") 36