tof-votes: acceptable: load from YAML
Set the regex pattern file to be loaded from YAML rather than
embedded in Python. This allows it to be referenced from
elsewhere, if needed, such as by the openbmc-bot[1].
[1]: https://lore.kernel.org/openbmc/aM9suaMKrCk9PY-T@heinlein/
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I1941e3bb48227e8171575326603dd440fe722d22
diff --git a/tof-voters/config/rejected_patterns.yaml b/tof-voters/config/rejected_patterns.yaml
new file mode 100644
index 0000000..ab38c20
--- /dev/null
+++ b/tof-voters/config/rejected_patterns.yaml
@@ -0,0 +1,78 @@
+# Rejected patterns for projects and files
+rejected_repos:
+ - openbmc/s2600wf-misc
+ - openbmc/witherspoon-pfault-analysis
+
+rejected_project_regex:
+ - ".*-oem"
+ - "openbmc/google-.*"
+ - "openbmc/ibm-.*"
+ - "openbmc/intel-.*"
+ - "openbmc/meta-.*"
+
+rejected_files:
+ - "/COMMIT_MSG"
+ - "/PATCHSET_LEVEL"
+
+rejected_file_regex:
+ # Global patterns that apply to all projects
+ all:
+ - ".*/create_pel.*"
+ - ".*/google/"
+ - ".*/ibm/"
+ - ".*/intel/"
+ - ".*oem/.*"
+ - "MAINTAINERS"
+ - "OWNERS"
+ - "gen/.*"
+ - "ibm-.*"
+ - "ibm_.*"
+
+ # Project-specific patterns
+ openbmc/entity-manager:
+ - "configurations/.*"
+
+ openbmc/libmctp:
+ - "docs/bindings/vendor-.*"
+
+ openbmc/openbmc:
+ - "meta-(?!phosphor).*"
+ - "poky/.*"
+
+ openbmc/openbmc-test-automation:
+ - "openpower/.*"
+
+ openbmc/openpower-libhei:
+ - "test/simulator/sample_data/.*"
+ - "test/simulator/test_*cases/.*"
+ - "xml/.*"
+
+ openbmc/openpower-hw-diags:
+ - ".*/pel/.*"
+ - ".*/ras-data/.*"
+
+ openbmc/phosphor-dbus-interfaces:
+ - "yaml/com/.*"
+
+ openbmc/phosphor-debug-collector:
+ - "dump-extensions/.*"
+ - "tools/dreport.d/ibm.d/.*"
+
+ openbmc/phosphor-fan-presence:
+ - ".*/config_files/.*"
+
+ openbmc/phosphor-power:
+ - ".*/config_files/.*"
+
+ openbmc/phosphor-led-manager:
+ - "configs/.*"
+
+ openbmc/phosphor-logging:
+ - ".*/openpower-pels/.*"
+
+ openbmc/pldm:
+ - ".*oem_.*"
+ - "configurations/.*"
+
+ openbmc/webui-vue:
+ - "src/env/.*"
diff --git a/tof-voters/libvoters/acceptable.py b/tof-voters/libvoters/acceptable.py
index 821ea9f..64283bd 100644
--- a/tof-voters/libvoters/acceptable.py
+++ b/tof-voters/libvoters/acceptable.py
@@ -1,20 +1,27 @@
#!/usr/bin/python3
+import os
import re
+from typing import Any, Dict
+
+import yaml
+
+
+# Load configuration from YAML file
+def load_config() -> Dict[str, Any]:
+ config_path = os.path.join(
+ os.path.dirname(__file__), "..", "config", "rejected_patterns.yaml"
+ )
+ with open(config_path, "r") as f:
+ return yaml.safe_load(f)
+
+
+# Load config once at module level
+CONFIG = load_config()
def project(name: str) -> bool:
- reject_regex = [
- ".*-oem",
- "openbmc/ibm-.*",
- "openbmc/intel-.*",
- "openbmc/google-.*",
- "openbmc/meta-.*",
- ]
-
- reject_repo = [
- "openbmc/s2600wf-misc",
- "openbmc/witherspoon-pfault-analysis",
- ]
+ reject_regex = CONFIG.get("rejected_project_regex", [])
+ reject_repo = CONFIG.get("rejected_repos", [])
for r in reject_repo:
if r == name:
@@ -28,53 +35,8 @@
def file(proj: str, filename: str) -> bool:
- reject_regex = {
- "all": [
- ".*/create_pel.*",
- ".*/google/",
- ".*/ibm/",
- ".*/intel/",
- ".*oem/.*",
- "MAINTAINERS",
- "OWNERS",
- "gen/.*",
- "ibm-.*",
- "ibm_.*",
- ],
- "openbmc/entity-manager": ["configurations/.*"],
- "openbmc/libmctp": ["docs/bindings/vendor-.*"],
- "openbmc/openbmc": ["meta-(?!phosphor).*", "poky/.*"],
- "openbmc/openbmc-test-automation": ["openpower/.*"],
- "openbmc/openpower-libhei": [
- "test/simulator/sample_data/.*",
- "test/simulator/test_*cases/.*",
- "xml/.*",
- ],
- "openbmc/openpower-hw-diags": [
- ".*/pel/.*",
- ".*/ras-data/.*",
- ],
- "openbmc/phosphor-dbus-interfaces": [
- "yaml/com/.*",
- ],
- "openbmc/phosphor-debug-collector": [
- "dump-extensions/.*",
- "tools/dreport.d/ibm.d/.*",
- ],
- "openbmc/phosphor-fan-presence": [".*/config_files/.*"],
- "openbmc/phosphor-power": [".*/config_files/.*"],
- "openbmc/phosphor-led-manager": ["configs/.*"],
- "openbmc/phosphor-logging": [".*/openpower-pels/.*"],
- "openbmc/pldm": [
- ".*oem_.*",
- "configurations/.*",
- ],
- "openbmc/webui-vue": [
- "src/env/.*",
- ],
- }
-
- reject_files = ["/COMMIT_MSG", "/PATCHSET_LEVEL"]
+ reject_regex = CONFIG.get("rejected_file_regex", {})
+ reject_files = CONFIG.get("rejected_files", [])
for r in reject_files:
if r == filename: