Skip to content

Commit 3f6c227

Browse files
fix(api): rewrite conditions with empty reasons (#498)
rewrite conditions with empty reasons --------- Signed-off-by: yaroslavborbat <[email protected]>
1 parent 191c214 commit 3f6c227

File tree

10 files changed

+79
-14
lines changed

10 files changed

+79
-14
lines changed

api/core/v1alpha2/virtual_machine_ip_address_lease.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ package v1alpha2
1818

1919
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2020

21+
const (
22+
VirtualMachineIPAddressLeaseKind = "VirtualMachineIPAddressLease"
23+
VirtualMachineIPAddressLeaseResource = "virtualmachineipaddresleases"
24+
)
25+
2126
// VirtualMachineIPAddressLease defines fact of issued lease for `VirtualMachineIPAddress`.
2227
// +genclient
2328
// +genclient:nonNamespaced

api/core/v1alpha2/virtual_machine_operation.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ package v1alpha2
1919
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2020

2121
const (
22-
VMOPKind = "VirtualMachineOperation"
23-
VMOPResource = "virtualmachineoperations"
22+
VirtualMachineOperationKind = "VirtualMachineOperation"
23+
VirtualmachineOperationResource = "virtualmachineoperations"
2424
)
2525

2626
// VirtualMachineOperation resource provides the ability to declaratively manage state changes of virtual machines.

images/virtualization-artifact/pkg/controller/service/resource.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ import (
3030
"sigs.k8s.io/controller-runtime/pkg/reconcile"
3131

3232
"github.com/deckhouse/virtualization-controller/pkg/common/patch"
33+
"github.com/deckhouse/virtualization-controller/pkg/controller/conditions"
3334
"github.com/deckhouse/virtualization-controller/pkg/sdk/framework/helper"
35+
virtv2 "github.com/deckhouse/virtualization/api/core/v1alpha2"
3436
)
3537

3638
type ResourceObject[T, ST any] interface {
@@ -103,11 +105,68 @@ func (r *Resource[T, ST]) Changed() T {
103105
return r.changedObj
104106
}
105107

108+
// rewriteObject is part of the transition from version 1.14, where you can specify empty reasons. After version 1.15, this feature is not needed.
109+
// TODO: Delete me after release v1.15
110+
func rewriteObject(obj client.Object) {
111+
var conds []metav1.Condition
112+
113+
switch obj.GetObjectKind().GroupVersionKind().Kind {
114+
case virtv2.VirtualMachineKind:
115+
vm := obj.(*virtv2.VirtualMachine)
116+
conds = vm.Status.Conditions
117+
case virtv2.VirtualDiskKind:
118+
vd := obj.(*virtv2.VirtualDisk)
119+
conds = vd.Status.Conditions
120+
case virtv2.VirtualImageKind:
121+
vi := obj.(*virtv2.VirtualImage)
122+
conds = vi.Status.Conditions
123+
case virtv2.ClusterVirtualImageKind:
124+
cvi := obj.(*virtv2.ClusterVirtualImage)
125+
conds = cvi.Status.Conditions
126+
case virtv2.VirtualMachineBlockDeviceAttachmentKind:
127+
vmbda := obj.(*virtv2.VirtualMachineBlockDeviceAttachment)
128+
conds = vmbda.Status.Conditions
129+
case virtv2.VirtualMachineIPAddressKind:
130+
ip := obj.(*virtv2.VirtualMachineIPAddress)
131+
conds = ip.Status.Conditions
132+
case virtv2.VirtualMachineIPAddressLeaseKind:
133+
ipl := obj.(*virtv2.VirtualMachineIPAddressLease)
134+
conds = ipl.Status.Conditions
135+
case virtv2.VirtualMachineOperationKind:
136+
vmop := obj.(*virtv2.VirtualMachineOperation)
137+
conds = vmop.Status.Conditions
138+
case virtv2.VirtualDiskSnapshotKind:
139+
snap := obj.(*virtv2.VirtualDiskSnapshot)
140+
conds = snap.Status.Conditions
141+
case virtv2.VirtualMachineClassKind:
142+
class := obj.(*virtv2.VirtualMachineClass)
143+
conds = class.Status.Conditions
144+
case virtv2.VirtualMachineRestoreKind:
145+
restore := obj.(*virtv2.VirtualMachineRestore)
146+
conds = restore.Status.Conditions
147+
case virtv2.VirtualMachineSnapshotKind:
148+
snap := obj.(*virtv2.VirtualMachineSnapshot)
149+
conds = snap.Status.Conditions
150+
}
151+
152+
rewriteEmptyReason(conds)
153+
}
154+
155+
func rewriteEmptyReason(conds []metav1.Condition) {
156+
for i := range conds {
157+
if conds[i].Reason == "" {
158+
conds[i].Reason = conditions.ReasonUnknown.String()
159+
}
160+
}
161+
}
162+
106163
func (r *Resource[T, ST]) Update(ctx context.Context) error {
107164
if r.IsEmpty() {
108165
return nil
109166
}
110167

168+
rewriteObject(r.changedObj)
169+
111170
if !reflect.DeepEqual(r.getObjStatus(r.currentObj), r.getObjStatus(r.changedObj)) {
112171
// Save some metadata fields.
113172
finalizers := r.changedObj.GetFinalizers()

images/virtualization-artifact/pkg/controller/vd/internal/datasource_ready.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ func (h DatasourceReadyHandler) Handle(ctx context.Context, vd *virtv2.VirtualDi
5757

5858
if vd.DeletionTimestamp != nil {
5959
condition.Status = metav1.ConditionUnknown
60-
condition.Reason = ""
60+
condition.Reason = conditions.ReasonUnknown.String()
6161
condition.Message = ""
6262
return reconcile.Result{}, nil
6363
}

images/virtualization-artifact/pkg/controller/vd/internal/datasource_ready_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/stretchr/testify/require"
2424
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2525

26+
"github.com/deckhouse/virtualization-controller/pkg/controller/conditions"
2627
"github.com/deckhouse/virtualization-controller/pkg/controller/vd/internal/source"
2728
virtv2 "github.com/deckhouse/virtualization/api/core/v1alpha2"
2829
"github.com/deckhouse/virtualization/api/core/v1alpha2/vdcondition"
@@ -55,7 +56,7 @@ func TestDatasourceReadyHandler_Handle(t *testing.T) {
5556
condition := vd.Status.Conditions[0]
5657
require.Equal(t, vdcondition.DatasourceReadyType, condition.Type)
5758
require.Equal(t, metav1.ConditionUnknown, condition.Status)
58-
require.Equal(t, "", condition.Reason)
59+
require.Equal(t, conditions.ReasonUnknown.String(), condition.Reason)
5960
})
6061

6162
t.Run("VirtualDisk with Blank DataSource", func(t *testing.T) {

images/virtualization-artifact/pkg/controller/vd/internal/resizing.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,15 @@ func (h ResizingHandler) Handle(ctx context.Context, vd *virtv2.VirtualDisk) (re
6060

6161
if vd.DeletionTimestamp != nil {
6262
condition.Status = metav1.ConditionUnknown
63-
condition.Reason = ""
63+
condition.Reason = conditions.ReasonUnknown.String()
6464
condition.Message = ""
6565
return reconcile.Result{}, nil
6666
}
6767

6868
readyCondition, ok := service.GetCondition(vdcondition.ReadyType, vd.Status.Conditions)
6969
if !ok || readyCondition.Status != metav1.ConditionTrue {
7070
condition.Status = metav1.ConditionUnknown
71-
condition.Reason = ""
71+
condition.Reason = conditions.ReasonUnknown.String()
7272
condition.Message = ""
7373
return reconcile.Result{}, nil
7474
}
@@ -81,14 +81,14 @@ func (h ResizingHandler) Handle(ctx context.Context, vd *virtv2.VirtualDisk) (re
8181

8282
if pvc == nil {
8383
condition.Status = metav1.ConditionUnknown
84-
condition.Reason = ""
84+
condition.Reason = conditions.ReasonUnknown.String()
8585
condition.Message = "Underlying PersistentVolumeClaim not found: resizing is not possible."
8686
return reconcile.Result{}, nil
8787
}
8888

8989
if pvc.Status.Phase != corev1.ClaimBound {
9090
condition.Status = metav1.ConditionUnknown
91-
condition.Reason = ""
91+
condition.Reason = conditions.ReasonUnknown.String()
9292
condition.Message = "Underlying PersistentVolumeClaim not bound: resizing is not possible."
9393
return reconcile.Result{}, nil
9494
}

images/virtualization-artifact/pkg/controller/vd/internal/snapshotting.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,15 @@ func (h SnapshottingHandler) Handle(ctx context.Context, vd *virtv2.VirtualDisk)
5252

5353
if vd.DeletionTimestamp != nil {
5454
condition.Status = metav1.ConditionUnknown
55-
condition.Reason = ""
55+
condition.Reason = conditions.ReasonUnknown.String()
5656
condition.Message = ""
5757
return reconcile.Result{}, nil
5858
}
5959

6060
readyCondition, ok := service.GetCondition(vdcondition.ReadyType, vd.Status.Conditions)
6161
if !ok || readyCondition.Status != metav1.ConditionTrue {
6262
condition.Status = metav1.ConditionUnknown
63-
condition.Reason = ""
63+
condition.Reason = conditions.ReasonUnknown.String()
6464
condition.Message = ""
6565
return reconcile.Result{}, nil
6666
}
@@ -94,7 +94,7 @@ func (h SnapshottingHandler) Handle(ctx context.Context, vd *virtv2.VirtualDisk)
9494
}
9595

9696
condition.Status = metav1.ConditionUnknown
97-
condition.Reason = ""
97+
condition.Reason = conditions.ReasonUnknown.String()
9898
condition.Message = ""
9999
return reconcile.Result{}, nil
100100
}

images/virtualization-artifact/pkg/controller/vdsnapshot/internal/life_cycle.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func (h LifeCycleHandler) Handle(ctx context.Context, vdSnapshot *virtv2.Virtual
7979
if vdSnapshot.DeletionTimestamp != nil {
8080
vdSnapshot.Status.Phase = virtv2.VirtualDiskSnapshotPhaseTerminating
8181
condition.Status = metav1.ConditionUnknown
82-
condition.Reason = ""
82+
condition.Reason = conditions.ReasonUnknown.String()
8383
condition.Message = ""
8484

8585
return reconcile.Result{}, nil

images/virtualization-artifact/pkg/controller/vdsnapshot/internal/virtual_disk_ready.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func (h VirtualDiskReadyHandler) Handle(ctx context.Context, vdSnapshot *virtv2.
5454

5555
if vdSnapshot.DeletionTimestamp != nil {
5656
condition.Status = metav1.ConditionUnknown
57-
condition.Reason = ""
57+
condition.Reason = conditions.ReasonUnknown.String()
5858
condition.Message = ""
5959
return reconcile.Result{}, nil
6060
}

tests/performance/shatal/internal/shatal/modifier.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func (s *Modifier) Do(ctx context.Context, vm v1alpha2.VirtualMachine) {
7676

7777
vmop := v1alpha2.VirtualMachineOperation{
7878
TypeMeta: metav1.TypeMeta{
79-
Kind: v1alpha2.VMOPKind,
79+
Kind: v1alpha2.VirtualMachineOperationKind,
8080
APIVersion: v1alpha2.Version,
8181
},
8282
ObjectMeta: metav1.ObjectMeta{

0 commit comments

Comments
 (0)