Skip to content

Commit c43d09d

Browse files
authored
Kubevirt dashboard upgrade (#41)
* Update KubeVirt definition * Update kubevirt reconciliation * Rework recordCreatedObject function * Remove kubevirt reconciliation
1 parent 9644735 commit c43d09d

File tree

4 files changed

+50
-13
lines changed

4 files changed

+50
-13
lines changed

internal/controller/reconcile_kubevirt.go

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,48 @@ package controller
22

33
import (
44
"context"
5+
"fmt"
56

67
lifecyclev1alpha1 "github.com/suse-edge/upgrade-controller/api/v1alpha1"
8+
"github.com/suse-edge/upgrade-controller/internal/upgrade"
79
"github.com/suse-edge/upgrade-controller/pkg/release"
810

11+
corev1 "k8s.io/api/core/v1"
912
ctrl "sigs.k8s.io/controller-runtime"
1013
)
1114

12-
func (r *UpgradePlanReconciler) reconcileKubevirt(ctx context.Context, upgradePlan *lifecyclev1alpha1.UpgradePlan, kubevirt *release.HelmChart) (ctrl.Result, error) {
13-
state, err := r.upgradeHelmChart(ctx, upgradePlan, kubevirt)
15+
func (r *UpgradePlanReconciler) reconcileKubevirt(ctx context.Context, upgradePlan *lifecyclev1alpha1.UpgradePlan, kubevirt *release.KubeVirt) (ctrl.Result, error) {
16+
kubevirtState, err := r.upgradeHelmChart(ctx, upgradePlan, &kubevirt.KubeVirt)
1417
if err != nil {
1518
return ctrl.Result{}, err
1619
}
1720

18-
setCondition, requeue := evaluateHelmChartState(state)
19-
setCondition(upgradePlan, lifecyclev1alpha1.KubevirtUpgradedCondition, state.FormattedMessage(kubevirt.ReleaseName))
21+
conditionType := lifecyclev1alpha1.KubevirtUpgradedCondition
22+
if kubevirtState != upgrade.ChartStateSucceeded && kubevirtState != upgrade.ChartStateVersionAlreadyInstalled {
23+
setCondition, requeue := evaluateHelmChartState(kubevirtState)
24+
setCondition(upgradePlan, conditionType, kubevirtState.FormattedMessage(kubevirt.KubeVirt.ReleaseName))
2025

21-
return ctrl.Result{Requeue: requeue}, nil
26+
return ctrl.Result{Requeue: requeue}, err
27+
}
28+
29+
dashboardState, err := r.upgradeHelmChart(ctx, upgradePlan, &kubevirt.DashboardExtension)
30+
if err != nil {
31+
return ctrl.Result{}, err
32+
}
33+
34+
switch dashboardState {
35+
case upgrade.ChartStateFailed:
36+
msg := fmt.Sprintf("Main component '%s' upgraded successfully, but add-on component '%s' failed to upgrade", kubevirt.KubeVirt.ReleaseName, kubevirt.DashboardExtension.ReleaseName)
37+
r.recordPlanEvent(upgradePlan, corev1.EventTypeWarning, conditionType, msg)
38+
39+
fallthrough
40+
case upgrade.ChartStateNotInstalled, upgrade.ChartStateVersionAlreadyInstalled:
41+
setCondition, requeue := evaluateHelmChartState(kubevirtState)
42+
setCondition(upgradePlan, conditionType, kubevirtState.FormattedMessage(kubevirt.KubeVirt.ReleaseName))
43+
return ctrl.Result{Requeue: requeue}, nil
44+
default:
45+
setCondition, requeue := evaluateHelmChartState(dashboardState)
46+
setCondition(upgradePlan, conditionType, dashboardState.FormattedMessage(kubevirt.DashboardExtension.ReleaseName))
47+
return ctrl.Result{Requeue: requeue}, nil
48+
}
2249
}

internal/controller/upgradeplan_controller.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ func (r *UpgradePlanReconciler) createSecret(ctx context.Context, upgradePlan *l
141141
return fmt.Errorf("creating secret: %w", err)
142142
}
143143

144-
r.recordCreatedObject(upgradePlan, "SecretCreated", fmt.Sprintf("Secret created: %s/%s", secret.Namespace, secret.Name))
144+
r.recordPlanEvent(upgradePlan, corev1.EventTypeNormal, "SecretCreated", fmt.Sprintf("Secret created: %s/%s", secret.Namespace, secret.Name))
145145
return nil
146146
}
147147

@@ -150,7 +150,7 @@ func (r *UpgradePlanReconciler) createPlan(ctx context.Context, upgradePlan *lif
150150
return fmt.Errorf("creating upgrade plan: %w", err)
151151
}
152152

153-
r.recordCreatedObject(upgradePlan, "PlanCreated", fmt.Sprintf("Upgrade plan created: %s/%s", plan.Namespace, plan.Name))
153+
r.recordPlanEvent(upgradePlan, corev1.EventTypeNormal, "PlanCreated", fmt.Sprintf("Upgrade plan created: %s/%s", plan.Namespace, plan.Name))
154154
return nil
155155
}
156156

@@ -166,8 +166,8 @@ func (r *UpgradePlanReconciler) createObject(ctx context.Context, upgradePlan *l
166166
return nil
167167
}
168168

169-
func (r *UpgradePlanReconciler) recordCreatedObject(upgradePlan *lifecyclev1alpha1.UpgradePlan, reason, msg string) {
170-
r.Recorder.Eventf(upgradePlan, corev1.EventTypeNormal, reason, msg)
169+
func (r *UpgradePlanReconciler) recordPlanEvent(upgradePlan *lifecyclev1alpha1.UpgradePlan, eventType, reason, msg string) {
170+
r.Recorder.Eventf(upgradePlan, eventType, reason, msg)
171171
}
172172

173173
func isHelmUpgradeFinished(plan *lifecyclev1alpha1.UpgradePlan, conditionType string) bool {

manifests/release-3.0.1.yaml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,14 @@ components:
2525
chart: oci://registry.suse.com/edge/cdi-chart
2626
version: 0.2.3
2727
kubevirt:
28-
releaseName: kubevirt
29-
chart: oci://registry.suse.com/edge/kubevirt-chart
30-
version: 0.2.4
28+
kubevirt:
29+
releaseName: kubevirt
30+
chart: oci://registry.suse.com/edge/kubevirt-chart
31+
version: 0.2.4
32+
dashboardExtension:
33+
releaseName: kubevirt-dashboard-extension
34+
chart: oci://registry.suse.com/edge/kubevirt-dashboard-extension-chart
35+
version: 1.0.0
3136
neuvector:
3237
crd:
3338
releaseName: neuvector-crd

pkg/release/release.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ type Components struct {
1313
Longhorn HelmChart `yaml:"longhorn"`
1414
MetalLB HelmChart `yaml:"metallb"`
1515
CDI HelmChart `yaml:"cdi"`
16-
KubeVirt HelmChart `yaml:"kubevirt"`
16+
KubeVirt KubeVirt `yaml:"kubevirt"`
1717
NeuVector NeuVector `yaml:"neuvector"`
1818
EndpointCopierOperator HelmChart `yaml:"endpointCopierOperator"`
1919
Elemental Elemental `yaml:"elemental"`
@@ -59,3 +59,8 @@ type SRIOV struct {
5959
CRD HelmChart `yaml:"crd"`
6060
NetworkOperator HelmChart `yaml:"networkOperator"`
6161
}
62+
63+
type KubeVirt struct {
64+
KubeVirt HelmChart `yaml:"kubevirt"`
65+
DashboardExtension HelmChart `yaml:"dashboardExtension"`
66+
}

0 commit comments

Comments
 (0)