feat: add Elastic ECK Operator compatibility scraper - #4155
Conversation
Soffi AI SummaryThis PR adds Elastic Cloud on Kubernetes (ECK) operator compatibility tracking to the Plural Console's static compatibility matrix. The motivation is to allow the platform to surface Kubernetes version compatibility information for the ECK operator, consistent with how other add-ons are tracked. The work involves four coordinated pieces: a new Python scraper that fetches ECK Helm chart versions and parses the supported Kubernetes range from tagged release READMEs on GitHub, a comprehensive unit test suite validating the scraper's parsing and error-handling logic, the initial static compatibility data file generated by the scraper, and registration of the ECK operator in the compatibility manifest so the server picks it up. The scraper follows the established pattern in ChangesECK operator compatibility tracking
Updated: 2026-09-08 11:15 UTC |
Greptile SummaryThis PR adds ECK operator compatibility support, including static release metadata, manifest registration, an upstream README-based scraper, and focused parser/scraper tests.
Confidence Score: 4/5The PR should not merge until the published aggregate compatibility matrix includes ECK; the test isolation issue is also worth correcting. The new per-addon data and scraper are structurally sound, but the synchronization workflow will publish an aggregate file that omits the newly registered operator, leaving remote compatibility consumers without the feature. Files Needing Attention: static/compatibilities/manifest.yaml, static/compatibilities.yaml, utils/compatibility/tests/test_eck_operator.py
|
| Filename | Overview |
|---|---|
| static/compatibilities/eck-operator.yaml | Adds schema-compatible ECK release, chart, and Kubernetes support metadata. |
| static/compatibilities/manifest.yaml | Registers ECK in the per-addon manifest without updating the aggregate matrix published to remote consumers. |
| utils/compatibility/scrapers/eck-operator.py | Adds a defensive scraper that selects stable releases and parses tagged README support ranges. |
| utils/compatibility/tests/test_eck_operator.py | Covers parsing, filtering, payload failures, and updater wiring, but leaks a synthetic utils module into global interpreter state. |
Reviews (1): Last reviewed commit: "manifest: register ECK operator" | Re-trigger Greptile
| - wiz-sensor | ||
| - wiz-admission-controller | ||
| - wiz-network-analyzer | ||
| - eck-operator |
There was a problem hiding this comment.
This registers eck-operator only in the per-addon manifest. Merging this change triggers the S3 synchronization workflow, which uploads the existing static/compatibilities.yaml without an ECK entry, while remote compatibility consumers load that aggregate file. As a result, those consumers cannot discover the new operator until a later updater run regenerates the aggregate matrix. Please regenerate and include static/compatibilities.yaml in this PR.
| helpers = ModuleType("utils") | ||
| helpers.fetch_page = Mock() | ||
| helpers.get_chart_versions = Mock() | ||
| helpers.update_compatibility_info = Mock() | ||
| sys.modules["utils"] = helpers |
There was a problem hiding this comment.
This test replaces the process-wide sys.modules["utils"] entry with a synthetic module and never restores the original value. Any compatibility tests imported later in the same discovery process will receive these mocks instead of the real utility module, making the suite order-dependent as it grows. Isolate the replacement with patch.dict or restore it during cleanup.
Adds Elastic Cloud on Kubernetes (ECK) Operator to Plural’s compatibility catalog with an automated compatibility scraper, generated compatibility data, manifest registration and focused regression tests.
Authoritative sources
The scraper reads the officially documented Kubernetes support range from tagged ECK releases, verifies release metadata against Elastic’s published ECK versions, and emits conservative Kubernetes compatibility rows for supported ECK 3.x releases.
Testing
No live Kubernetes cluster deployment was performed; this change verifies compatibility metadata and source parsing.
AI assistance disclosure: implemented and tested using OpenAI ChatGPT/Codex under the GitHub account owner’s authorization.
I would like this submission considered under the README Contributor Program’s advertised $300 reward for a new compatibility scraper, subject to maintainer review, merge and eligibility confirmation.
Plural Flow: console