[Draft] - Adding cabilities for crdcompatibilitychecker and capi CRs#2884
[Draft] - Adding cabilities for crdcompatibilitychecker and capi CRs#2884miyadav wants to merge 2 commits into
Conversation
|
Pipeline controller notification For optional jobs, comment This repository is configured in: LGTM mode |
|
Hello @miyadav! Some important instructions when contributing to openshift/api: |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository YAML (base), Central YAML (inherited) Review profile: CHILL Plan: Enterprise Run ID: ⛔ Files ignored due to path filters (10)
📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughThis PR extends the ClusterVersion API by introducing two new optional cluster capabilities: CompatibilityRequirements and ClusterAPI. It adds exported constants and enum values for both, registers them in KnownClusterVersionCapabilities and the current capability set, and adds an XValidation rule that prevents enabling ClusterAPI unless CompatibilityRequirements is enabled (either in spec.additionalEnabledCapabilities or in status.capabilities.enabledCapabilities). 🚥 Pre-merge checks | ✅ 4 | ❌ 11❌ Failed checks (1 warning, 10 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 golangci-lint (2.12.2)Error: build linters: unable to load custom analyzer "kubeapilinter": tools/_output/bin/kube-api-linter.so, plugin: not implemented Comment |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
config/v1/types_cluster_version.go (1)
22-22: ⚡ Quick winAdd/extend CRD validation tests for the new dependency rule.
Please add explicit create/update tests for
ClusterAPIrequiringCompatibilityRequirements(both failing and passing paths), mirroring the existing marketplace dependency test style.As per coding guidelines, “Add validation tests in
<group>/<version>/tests/<crd-name>/” for API validation changes.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@config/v1/types_cluster_version.go` at line 22, Add CRD validation tests for the new XValidation rule in types_cluster_version.go that enforces ClusterAPI requires CompatibilityRequirements: create tests under the API group/version tests directory (following the pattern in existing marketplace dependency tests) that cover both failing and passing paths for create and update operations; name tests clearly (e.g., TestCreateClusterVersion_ClusterAPIWithoutCompatibilityRequirements_Fails and TestUpdateClusterVersion_EnableCompatibilityRequirements_Passes) and construct ClusterVersion objects toggling spec.capabilities.additionalEnabledCapabilities and status.capabilities.enabledCapabilities to assert validation rejection when ClusterAPI is present without CompatibilityRequirements and acceptance when CompatibilityRequirements is present either in spec or in status.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@config/v1/types_cluster_version.go`:
- Line 22: The XValidation rule currently only applies when
spec.capabilities.baselineCapabilitySet == 'None', letting configs with a
non-None baseline (e.g., baselineCapabilitySet: v4.18) enable ClusterAPI without
CompatibilityRequirements; remove the baselineCapabilitySet check so the rule
always enforces the dependency: update the kubebuilder XValidation expression in
types_cluster_version.go to check for the presence of spec.capabilities and
spec.capabilities.additionalEnabledCapabilities, and if 'ClusterAPI' is in
spec.capabilities.additionalEnabledCapabilities require
'CompatibilityRequirements' to be either in
spec.capabilities.additionalEnabledCapabilities or (if present) in
status.capabilities.enabledCapabilities; keep the existing has(...) guards and
the same error message.
---
Nitpick comments:
In `@config/v1/types_cluster_version.go`:
- Line 22: Add CRD validation tests for the new XValidation rule in
types_cluster_version.go that enforces ClusterAPI requires
CompatibilityRequirements: create tests under the API group/version tests
directory (following the pattern in existing marketplace dependency tests) that
cover both failing and passing paths for create and update operations; name
tests clearly (e.g.,
TestCreateClusterVersion_ClusterAPIWithoutCompatibilityRequirements_Fails and
TestUpdateClusterVersion_EnableCompatibilityRequirements_Passes) and construct
ClusterVersion objects toggling spec.capabilities.additionalEnabledCapabilities
and status.capabilities.enabledCapabilities to assert validation rejection when
ClusterAPI is present without CompatibilityRequirements and acceptance when
CompatibilityRequirements is present either in spec or in status.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository YAML (base), Central YAML (inherited)
Review profile: CHILL
Plan: Enterprise
Run ID: afefc07d-7be7-4bb8-a2e8-90622698cd31
📒 Files selected for processing (1)
config/v1/types_cluster_version.go
Adding new capability constants
WIP - OCPCLOUD-3368
/hold
Generated by - claude-opus-4-6(2.1.169)