• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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