Skip to content

Commit 1c45137

Browse files
authored
✨ Add .spec.upgrade.external.generateUpgradePlanExtension field to ClusterClass (#12809)
* Add .spec.upgrade.external.generateUpgradePlanExtension field to ClusterClass Signed-off-by: sivchari <[email protected]> * Update conversion.go Signed-off-by: sivchari <[email protected]> --------- Signed-off-by: sivchari <[email protected]>
1 parent 6c4a93f commit 1c45137

File tree

8 files changed

+129
-1
lines changed

8 files changed

+129
-1
lines changed

api/core/v1beta1/conversion.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,8 @@ func (src *ClusterClass) ConvertTo(dstRaw conversion.Hub) error {
250250

251251
dst.Spec.KubernetesVersions = restored.Spec.KubernetesVersions
252252

253+
dst.Spec.Upgrade.External.GenerateUpgradePlanExtension = restored.Spec.Upgrade.External.GenerateUpgradePlanExtension
254+
253255
return nil
254256
}
255257

api/core/v1beta1/zz_generated.conversion.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/core/v1beta2/clusterclass_types.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@ type ClusterClassSpec struct {
136136
// +kubebuilder:validation:MaxItems=1000
137137
Patches []ClusterClassPatch `json:"patches,omitempty"`
138138

139+
// upgrade defines the upgrade configuration for clusters using this ClusterClass.
140+
// +optional
141+
Upgrade ClusterClassUpgrade `json:"upgrade,omitempty,omitzero"`
142+
139143
// kubernetesVersions is the list of Kubernetes versions that can be
140144
// used for clusters using this ClusterClass.
141145
// The list of version must be ordered from the older to the newer version, and there should be
@@ -1252,6 +1256,24 @@ type ClusterClassPatch struct {
12521256
External *ExternalPatchDefinition `json:"external,omitempty"`
12531257
}
12541258

1259+
// ClusterClassUpgrade defines the upgrade configuration for clusters using the ClusterClass.
1260+
// +kubebuilder:validation:MinProperties=1
1261+
type ClusterClassUpgrade struct {
1262+
// external defines external runtime extensions for upgrade operations.
1263+
// +optional
1264+
External ClusterClassUpgradeExternal `json:"external,omitempty,omitzero"`
1265+
}
1266+
1267+
// ClusterClassUpgradeExternal defines external runtime extensions for upgrade operations.
1268+
// +kubebuilder:validation:MinProperties=1
1269+
type ClusterClassUpgradeExternal struct {
1270+
// generateUpgradePlanExtension references an extension which is called to generate upgrade plan.
1271+
// +optional
1272+
// +kubebuilder:validation:MinLength=1
1273+
// +kubebuilder:validation:MaxLength=512
1274+
GenerateUpgradePlanExtension string `json:"generateUpgradePlanExtension,omitempty"`
1275+
}
1276+
12551277
// PatchDefinition defines a patch which is applied to customize the referenced templates.
12561278
type PatchDefinition struct {
12571279
// selector defines on which templates the patch should be applied.

api/core/v1beta2/zz_generated.deepcopy.go

Lines changed: 32 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/core/v1beta2/zz_generated.openapi.go

Lines changed: 52 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/bases/cluster.x-k8s.io_clusterclasses.yaml

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/api/core/v1alpha4/conversion.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ func (src *ClusterClass) ConvertTo(dstRaw conversion.Hub) error {
263263
dst.Spec.Workers.MachineDeployments[i].Rollout.Strategy = restored.Spec.Workers.MachineDeployments[i].Rollout.Strategy
264264
}
265265
dst.Status = restored.Status
266+
dst.Spec.Upgrade.External.GenerateUpgradePlanExtension = restored.Spec.Upgrade.External.GenerateUpgradePlanExtension
266267

267268
return nil
268269
}

internal/api/core/v1alpha4/zz_generated.conversion.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)