mirror of https://gitlab.freedesktop.org/mesa/mesa
36 lines
886 B
Python
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}")
|