Add OpenKruise compatibility scraper - #4141
Conversation
Soffi AI SummaryThis PR adds OpenKruise to the Plural Console compatibility catalog by introducing a new Python scraper, test suite, HTML fixture, generated compatibility table, and manifest entry. The scraper parses the official OpenKruise installation documentation to extract only exact API compatibility pairings (✓), deliberately excluding partial, untested, or interpolated matches. Chart versions from the official Helm index are joined to app versions, with pre-release and dev releases filtered out, producing a conservative seven-row matrix covering OpenKruise 1.4.0 through 1.9.1. A prerequisite one-line bug fix in the shared image-walker utility ( ChangesOpenKruise compatibility scraper
Updated: 2026-09-08 08:48 UTC |
Greptile SummaryThis PR adds OpenKruise to the compatibility catalog and introduces a scraper that joins exact upstream Kubernetes compatibility pairings with stable Helm chart releases.
Confidence Score: 4/5The PR appears safe to merge after the non-blocking image-walker traversal concern is addressed or accepted. The OpenKruise scraper and catalog wiring are consistent with existing infrastructure, but the shared image-walker change can classify nested schema strings as container images. Files Needing Attention: utils/compatibility/utils.py, utils/compatibility/tests/test_openkruise.py
|
| Filename | Overview |
|---|---|
| utils/compatibility/scrapers/openkruise.py | Adds a fail-closed OpenKruise matrix parser and stable chart-to-release-family join. |
| utils/compatibility/utils.py | Prevents non-string image values from being inserted directly but still traverses them, allowing nested schema metadata to be misclassified. |
| utils/compatibility/tests/test_openkruise.py | Provides broad offline scraper coverage, but the image regression omits nested image keys beneath a non-string image field. |
| static/compatibilities/openkruise.yaml | Adds schema-compatible metadata and seven generated OpenKruise release rows. |
| static/compatibilities/manifest.yaml | Registers the matching OpenKruise scraper and compatibility file with the dynamic catalog runner. |
Reviews (1): Last reviewed commit: "Add OpenKruise compatibility scraper" | Re-trigger Greptile
| if k == "image" and isinstance(v, str): | ||
| images.add(v) | ||
| continue | ||
| walk(v) |
There was a problem hiding this comment.
Nested schema values collected
When an image key contains a mapping or list, the new guard recursively walks that value instead of ignoring it. A structure such as image: {properties: {image: {type: string}}} can therefore add "string" to the generated container image list, polluting compatibility metadata. Stop traversal for all values under an image key, and add a regression case with a nested image field.
| if k == "image" and isinstance(v, str): | |
| images.add(v) | |
| continue | |
| walk(v) | |
| if k == "image": | |
| if isinstance(v, str): | |
| images.add(v) | |
| continue | |
| walk(v) |
There was a problem hiding this comment.
Addressed in 965ea0f. The exact example in the review already returned an empty list, but a non-string image value containing an examples object with its own image string did reproduce the problem. I added mapping and list regression cases, verified they fail before the fix, and now skip traversal beneath every image key. All 12 tests pass. Live regeneration still produces the same seven rows and image lists, with no YAML diff.
|
My Discord handle is |
OpenKruise is missing from the compatibility catalog. This adds a scraper, metadata, manifest entry, and generated table using the official installation matrix and Helm chart index.
The table records only upstream's
✓pairings, which mean exact API object/field parity. Partial (+/-) and untested (?) combinations are excluded without declaring them incompatible. Missing Kubernetes versions are not interpolated. Stable chartappVersionvalues are matched to the documented release families, and the existing updater reduces the results to seven rows covering 1.4.0 through 1.9.1.Live Helm rendering hit the shared image walker's existing crash on CRD schema properties named
image. The image walker now accepts string values and skips non-string image subtrees, with regression coverage for nested schema examples. A related type guard is already proposed in #4138; I reproduced the original crash independently with OpenKruise and can reconcile this hunk once that change lands.Related discussion: #4139. Please confirm whether the conservative matrix mapping is appropriate for the catalog.
Test Plan
static/compatibilities/schema.json.git diff --checkpasses.utils/compatibility/tests/OPENKRUISE.md.Checklist
Plural Flow: console
Codex implemented and tested this contribution on my behalf. I'd like to submit it under the README's $300 new-scraper contributor program. Could you confirm eligibility and the cash payout method? I understand the reward depends on maintainer review and acceptance; no payment is being claimed as received.