@@ -2,21 +2,48 @@ package controller
2
2
3
3
import (
4
4
"context"
5
+ "fmt"
5
6
6
7
lifecyclev1alpha1 "github.com/suse-edge/upgrade-controller/api/v1alpha1"
8
+ "github.com/suse-edge/upgrade-controller/internal/upgrade"
7
9
"github.com/suse-edge/upgrade-controller/pkg/release"
8
10
11
+ corev1 "k8s.io/api/core/v1"
9
12
ctrl "sigs.k8s.io/controller-runtime"
10
13
)
11
14
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 )
14
17
if err != nil {
15
18
return ctrl.Result {}, err
16
19
}
17
20
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 ))
20
25
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
+ }
22
49
}
0 commit comments