Skip to content

Commit 6d68147

Browse files
committed
🌱 Remove kubernetes version from cluster addon api
use old release kubernetes version from the metadata.yaml Signed-off-by: janiskemper <[email protected]>
1 parent 3b7c444 commit 6d68147

File tree

3 files changed

+20
-24
lines changed

3 files changed

+20
-24
lines changed

api/v1alpha1/clusteraddon_types.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,6 @@ type ClusterAddonStatus struct {
6868
// +optional
6969
CurrentHook string `json:"currentHook,omitempty"`
7070

71-
// KubernetesVersion is the kubernetes version of the current cluster stack release.
72-
// +optional
73-
KubernetesVersion string `json:"kubernetesVersion,omitempty"`
74-
7571
// HelmChartStatus defines the status of helm chart in the cluster addon.
7672
// +optional
7773
HelmChartStatus map[string]HelmChartStatusConditions `json:"helmChartStatus,omitempty"`

config/crd/bases/clusterstack.x-k8s.io_clusteraddons.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,6 @@ spec:
179179
description: HelmChartStatus defines the status of helm chart in the
180180
cluster addon.
181181
type: object
182-
kubernetesVersion:
183-
description: KubernetesVersion is the kubernetes version of the current
184-
cluster stack release.
185-
type: string
186182
ready:
187183
default: false
188184
type: boolean

internal/controller/clusteraddon_controller.go

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,13 @@ func (r *ClusterAddonReconciler) Reconcile(ctx context.Context, req reconcile.Re
280280
return reconcile.Result{}, fmt.Errorf("failed to get addon stages input: %w", err)
281281
}
282282

283+
var (
284+
oldRelease release.Release
285+
requeue bool
286+
)
287+
283288
if clusterAddon.Spec.ClusterStack != "" {
284-
oldClusterStackAddonChartPath, requeue, err := r.downloadOldClusterStackRelease(ctx, clusterAddon)
289+
oldRelease, requeue, err = r.downloadOldClusterStackRelease(ctx, clusterAddon)
285290
if err != nil {
286291
return reconcile.Result{}, fmt.Errorf("failed to download old cluster stack releases: %w", err)
287292
}
@@ -291,10 +296,10 @@ func (r *ClusterAddonReconciler) Reconcile(ctx context.Context, req reconcile.Re
291296

292297
// src - /tmp/cluster-stacks/docker-ferrol-1-27-v1/docker-ferrol-1-27-cluster-addon-v1.tgz
293298
// dst - /tmp/cluster-stacks/docker-ferrol-1-27-v1/docker-ferrol-1-27-cluster-addon-v1/
294-
in.oldDestinationClusterAddonChartDir = strings.TrimSuffix(oldClusterStackAddonChartPath, ".tgz")
299+
in.oldDestinationClusterAddonChartDir = strings.TrimSuffix(oldRelease.ClusterAddonChartPath(), ".tgz")
295300

296-
if err := unTarContent(oldClusterStackAddonChartPath, in.oldDestinationClusterAddonChartDir); err != nil {
297-
return reconcile.Result{}, fmt.Errorf("failed to untar cluster addon chart: %q: %w", oldClusterStackAddonChartPath, err)
301+
if err := unTarContent(oldRelease.ClusterAddonChartPath(), in.oldDestinationClusterAddonChartDir); err != nil {
302+
return reconcile.Result{}, fmt.Errorf("failed to untar cluster addon chart: %q: %w", oldRelease.ClusterAddonChartPath(), err)
298303
}
299304
}
300305

@@ -306,7 +311,7 @@ func (r *ClusterAddonReconciler) Reconcile(ctx context.Context, req reconcile.Re
306311

307312
// In case the Kubernetes version stays the same, the hook server does not trigger.
308313
// Therefore, we have to check whether the ClusterStack is upgraded and if that is the case, the ClusterAddons have to be upgraded as well.
309-
if clusterAddon.Spec.ClusterStack != cluster.Spec.Topology.Class && clusterAddon.Status.KubernetesVersion == releaseAsset.Meta.Versions.Kubernetes {
314+
if clusterAddon.Spec.ClusterStack != cluster.Spec.Topology.Class && oldRelease.Meta.Versions.Kubernetes == releaseAsset.Meta.Versions.Kubernetes {
310315
if clusterAddon.Spec.Version != releaseAsset.Meta.Versions.Components.ClusterAddon {
311316
clusterAddon.Status.HelmChartStatus = make(map[string]csov1alpha1.HelmChartStatusConditions)
312317
clusterAddon.Status.CurrentHook = clusterAddon.Spec.Hook
@@ -333,7 +338,7 @@ func (r *ClusterAddonReconciler) Reconcile(ctx context.Context, req reconcile.Re
333338

334339
// In case the Kubernetes version stayed the same during an upgrade, the hook server does not trigger and
335340
// we just take the Helm charts that are supposed to be installed in the BeforeClusterUpgrade hook and apply them.
336-
if clusterAddon.Status.KubernetesVersion == releaseAsset.Meta.Versions.Kubernetes {
341+
if oldRelease.Meta.Versions.Kubernetes == releaseAsset.Meta.Versions.Kubernetes {
337342
clusterAddon.Spec.Hook = "BeforeClusterUpgrade"
338343
for _, stage := range clusterAddonConfig.AddonStages["BeforeClusterUpgrade"] {
339344
shouldRequeue, err := r.executeStage(ctx, stage, in)
@@ -391,8 +396,7 @@ func (r *ClusterAddonReconciler) Reconcile(ctx context.Context, req reconcile.Re
391396
// remove the status resource if hook is finished
392397
clusterAddon.Status.Resources = make([]*csov1alpha1.Resource, 0)
393398

394-
// store the release kubernetes version and current hook
395-
clusterAddon.Status.KubernetesVersion = releaseAsset.Meta.Versions.Kubernetes
399+
// set the current hook and make cluster addon ready
396400
clusterAddon.Status.CurrentHook = clusterAddon.Spec.Hook
397401
clusterAddon.Status.Ready = true
398402
}
@@ -633,7 +637,7 @@ check:
633637
}
634638

635639
// downloadOldClusterStackRelease downloads the old cluster stack if not present and returns release clusterAddon chart path if requeue and error.
636-
func (r *ClusterAddonReconciler) downloadOldClusterStackRelease(ctx context.Context, clusterAddon *csov1alpha1.ClusterAddon, logger logr.Logger) (string, bool, error) {
640+
func (r *ClusterAddonReconciler) downloadOldClusterStackRelease(ctx context.Context, clusterAddon *csov1alpha1.ClusterAddon) (release.Release, bool, error) {
637641
// initiate assets client.
638642
gc, err := r.AssetsClientFactory.NewClient(ctx)
639643
if err != nil {
@@ -648,9 +652,9 @@ func (r *ClusterAddonReconciler) downloadOldClusterStackRelease(ctx context.Cont
648652

649653
// give the assets client a second change
650654
if isSet {
651-
return "", true, nil
655+
return release.Release{}, true, nil
652656
}
653-
return "", false, nil
657+
return release.Release{}, false, nil
654658
}
655659

656660
conditions.MarkTrue(clusterAddon, csov1alpha1.AssetsClientAPIAvailableCondition)
@@ -659,7 +663,7 @@ func (r *ClusterAddonReconciler) downloadOldClusterStackRelease(ctx context.Cont
659663
releaseAsset, download, err := release.New(release.ConvertFromClusterClassToClusterStackFormat(clusterAddon.Spec.ClusterStack), r.ReleaseDirectory)
660664
if err != nil {
661665
conditions.MarkFalse(clusterAddon, csov1alpha1.ClusterStackReleaseAssetsReadyCondition, csov1alpha1.IssueWithReleaseAssetsReason, clusterv1.ConditionSeverityError, err.Error())
662-
return "", true, nil
666+
return release.Release{}, true, nil
663667
}
664668
if download {
665669
// if download is true, it means that the release assets have not been downloaded yet
@@ -670,13 +674,13 @@ func (r *ClusterAddonReconciler) downloadOldClusterStackRelease(ctx context.Cont
670674
r.clusterStackRelDownloadDirectoryMutex.Lock()
671675

672676
if err := downloadReleaseAssets(ctx, release.ConvertFromClusterClassToClusterStackFormat(clusterAddon.Spec.ClusterStack), releaseAsset.LocalDownloadPath, gc); err != nil {
673-
return "", false, fmt.Errorf("failed to download release assets: %w", err)
677+
return release.Release{}, false, fmt.Errorf("failed to download release assets: %w", err)
674678
}
675679

676680
r.clusterStackRelDownloadDirectoryMutex.Unlock()
677681

678682
// requeue to make sure release assets can be accessed
679-
return "", true, nil
683+
return release.Release{}, true, nil
680684
}
681685

682686
if err := releaseAsset.CheckHelmCharts(); err != nil {
@@ -689,13 +693,13 @@ func (r *ClusterAddonReconciler) downloadOldClusterStackRelease(ctx context.Cont
689693
msg,
690694
)
691695
record.Warnf(clusterAddon, "ValidateHelmChartFailed", msg)
692-
return "", false, nil
696+
return release.Release{}, false, nil
693697
}
694698

695699
// set downloaded condition if able to read metadata file
696700
conditions.MarkTrue(clusterAddon, csov1alpha1.ClusterStackReleaseAssetsReadyCondition)
697701

698-
return releaseAsset.ClusterAddonChartPath(), false, nil
702+
return releaseAsset, false, nil
699703
}
700704

701705
func (r *ClusterAddonReconciler) templateAndApplyNewClusterStackAddonHelmChart(ctx context.Context, in templateAndApplyClusterAddonInput, helmChartName string) (bool, error) {

0 commit comments

Comments
 (0)