Commit 12923b9
authored
✨ Add automated schema generation and validation for registry+v1 bundle configuration (#2454)
Summary:
Implements Phase 1 of the variable configuration feature to achieve feature parity with
OLMv0's SubscriptionConfig for registry+v1 bundles.
RFC: https://docs.google.com/document/d/18O4qBvu5I4WIJgo5KU1opyUKcrfgk64xsI3tyXxmVEU/edit?tab=t.0#heading=h.x3tfh25grvnv
Details:
This PR adds infrastructure for JSON schema-based validation of registry+v1 bundle configuration
in ClusterExtension, including both `watchNamespace` and `deploymentConfig` fields:
- **Schema Generation Tool**: Parses SubscriptionConfig using AST to extract field names/types
- Fetches Kubernetes OpenAPI v3 specs from GitHub releases
- Maps fields to official Kubernetes schemas
- Generates schema with `watchNamespace` (for operator scope) and `deploymentConfig` (for deployment customization)
- Excludes `selector` field (unused in OLMv0)
- **Runtime Schema Customization**: The base schema is loaded and modified at runtime based on
operator install modes: `watchNamespace` validation rules are customized per operator's supported install modes
- **Validation Infrastructure**: Validation integrated into bundle config unmarshaling via `config.UnmarshalConfig()`
- **Regeneration Workflow**: Added `make update-registryv1-bundle-schema` target to regenerate schema when
upstream SubscriptionConfig changes.
When the upstream `v1alpha1.SubscriptionConfig` adds new fields (e.g., new k8s corev1 types), running the
regeneration target will automatically include them in the schema without manual updates.
Addresses OPRUN-4112 (Phase 1)
Future PRs will implement:
- Phase 2: Renderer integration to apply deploymentConfig to Deployments
- Phase 3: Provider integration to extract bundle configuration from bundles
- Phase 4: Documentation1 parent 7a60e71 commit 12923b9
10 files changed
Lines changed: 3922 additions & 25 deletions
File tree
- hack/tools
- schema-generator
- internal/operator-controller
- config
- rukpak/bundle
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
202 | 202 | | |
203 | 203 | | |
204 | 204 | | |
205 | | - | |
| 205 | + | |
206 | 206 | | |
207 | 207 | | |
208 | 208 | | |
| |||
222 | 222 | | |
223 | 223 | | |
224 | 224 | | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
225 | 229 | | |
226 | 230 | | |
227 | 231 | | |
| |||
0 commit comments