Add MariaDB Operator compatibility scraper - #4168
Conversation
Soffi AI SummaryAdds MariaDB Operator to the platform's compatibility catalog so users can see which Kubernetes versions are supported by each MariaDB Operator release. The implementation introduces a new Python scraper (
A comprehensive unit test suite ( ChangesMariaDB Operator compatibility scraper
Updated: 2026-09-08 13:59 UTC |
Greptile SummaryAdds MariaDB Operator to the compatibility catalog.
Confidence Score: 4/5The PR appears safe to merge, with a non-blocking constraint-parser edge case that should be hardened for future strict Helm bounds. Current generated data uses supported non-strict bounds, while the only accepted concern affects future strict constraints by projecting them incorrectly to Kubernetes minors. Files Needing Attention: utils/compatibility/scrapers/mariadb-operator.py, utils/compatibility/tests/test_mariadb_operator.py
|
| Filename | Overview |
|---|---|
| utils/compatibility/scrapers/mariadb-operator.py | Implements Helm-index extraction, Kubernetes constraint parsing, representative-row selection, and stale-row pruning; strict-bound parsing can omit valid Kubernetes minors. |
| utils/compatibility/tests/test_mariadb_operator.py | Covers minimum and upper constraints, chart filtering, stable-version selection, and stale-row pruning, but omits strict-bound edge cases. |
| static/compatibilities/mariadb-operator.yaml | Adds generated MariaDB Operator release, chart, image, and Kubernetes compatibility metadata. |
| static/compatibilities/manifest.yaml | Registers the MariaDB Operator compatibility catalog. |
Reviews (1): Last reviewed commit: "Add MariaDB Operator compatibility scrap..." | Re-trigger Greptile
| if operator in ("", ">=", ">", "="): | ||
| if operator == ">": | ||
| bound = (bound[0], bound[1] + 1) | ||
| if lower is None or bound > lower: | ||
| lower = bound | ||
| elif operator in ("<", "<="): |
There was a problem hiding this comment.
Strict Bounds Drop Valid Minors
If a chart publishes a strict Kubernetes bound, this parser can omit a valid minor version. It discards the patch component and shifts the whole minor, so >1.26.0 excludes Kubernetes 1.26 even though 1.26.1 satisfies the constraint, while <1.29.1 excludes 1.29 even though 1.29.0 satisfies it. Preserving patch semantics before converting the range to minor-level entries would prevent the catalog from reporting an unnecessarily narrow install range; tests should also cover these strict-bound cases.
b626cd0 to
e587988
Compare
|
Rebased this on the current master and re-ran the focused compatibility checks locally. The required-label check is failing because the PR has no label, but GitHub will not let me add the enhancement label from my fork account. Could you add the label when you get a chance? |
|
I checked the failing CI logs as well. The compatibility checks themselves are still green; the red So this looks like the usual missing repo secrets on a forked PR, plus the label check I mentioned above, rather than a scraper/test failure from this patch. |
|
Pushed |
I added MariaDB Operator to the compatibility catalog.
The scraper reads the first-party Helm index and only uses
entries.mariadb-operator; the cluster and CRD companion charts are intentionally left out of the app table. For each chart entry it records the chart version, app version, rendered image list, and the Kubernetes range from Helm'skubeVersionconstraint. That Kubernetes list is the chart install constraint, not a separate runtime test matrix.I also added pruning for stale representative rows, so a newer patch such as 25.10.4 does not get hidden by an older 25.10.x row with the same Kubernetes range. After Greptile flagged a future strict-bound edge case, I tightened the constraint parser and added coverage for patch-overlap ranges such as
<1.29.1.Sources:
I checked this with
py_compile, the MariaDB scraper tests, a direct live scraper run through Helm, a generated YAML sanity check for representative versions/chart versions/images, andgit diff --check.Related to #4165.