Skip to content

Commit 37cac9a

Browse files
committed
pkg: status: use u/s function to find conditions
Since we are relying on `"k8s.io/apimachinery/pkg/api/meta"` function to update the conditions, use also the u/s function to find the condition. Only replacing the occurances of the removed function was assisted by Cursor. Assisted-by: Cursor v1.2.2 AI-Attribution: AIA Primarily human, Stylistic edits, Human-initiated, Reviewed v1.0 Signed-off-by: Shereen Haj <shajmakh@redhat.com>
1 parent bd278c4 commit 37cac9a

10 files changed

Lines changed: 26 additions & 69 deletions

File tree

internal/controller/numaresourcesscheduler_controller.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
rbacv1 "k8s.io/api/rbac/v1"
2727
apiequality "k8s.io/apimachinery/pkg/api/equality"
2828
apierrors "k8s.io/apimachinery/pkg/api/errors"
29+
metahelper "k8s.io/apimachinery/pkg/api/meta"
2930
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3031
"k8s.io/apimachinery/pkg/labels"
3132
"k8s.io/apimachinery/pkg/runtime"
@@ -368,7 +369,7 @@ func platformNormalize(spec *nropv1.NUMAResourcesSchedulerSpec, platInfo platfor
368369
}
369370

370371
func updateDedicatedInformerCondition(conds []metav1.Condition, instance nropv1.NUMAResourcesScheduler, normalized nropv1.NUMAResourcesSchedulerSpec) []metav1.Condition {
371-
condition := status.FindCondition(conds, status.ConditionDedicatedInformerActive)
372+
condition := metahelper.FindStatusCondition(conds, status.ConditionDedicatedInformerActive)
372373
if condition == nil { // should never happen
373374
klog.InfoS("missing condition: %q", status.ConditionDedicatedInformerActive)
374375
return conds

internal/schedcache/synced.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/go-logr/logr"
2727

2828
corev1 "k8s.io/api/core/v1"
29+
metahelper "k8s.io/apimachinery/pkg/api/meta"
2930
"k8s.io/apimachinery/pkg/util/sets"
3031
"k8s.io/client-go/kubernetes"
3132
"k8s.io/klog/v2"
@@ -62,7 +63,7 @@ func HasSynced(env *Env, nodeNames []string) (bool, map[string]sets.Set[string],
6263
return false, nil, err
6364
}
6465

65-
cond := status.FindCondition(nroSched.Status.Conditions, status.ConditionAvailable)
66+
cond := metahelper.FindStatusCondition(nroSched.Status.Conditions, status.ConditionAvailable)
6667
if cond == nil {
6768
return false, nil, fmt.Errorf("missing condition: available")
6869
}

pkg/status/status.go

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func ComputeConditions(currentConditions []metav1.Condition, cond metav1.Conditi
100100
// UpdateConditionsInPlace mutates the given conditions, setting the value of the one pointed out to `condition` to the given values.
101101
// Differently from `ComputeConditions`, it doesn't allocate new data. Returns true if successfully mutated conditions, false otherwise
102102
func UpdateConditionsInPlace(conds []metav1.Condition, condition metav1.Condition, ts time.Time) bool {
103-
cond := FindCondition(conds, condition.Type)
103+
cond := metahelper.FindStatusCondition(conds, condition.Type)
104104
if cond == nil {
105105
return false // should never happen
106106
}
@@ -127,17 +127,6 @@ func updateBaseCondition(conds []metav1.Condition, condition metav1.Condition, t
127127
return updated
128128
}
129129

130-
// FindCondition returns a pointer to the Condition object matching the given `condition` by type on success, nil otherwise.
131-
func FindCondition(conditions []metav1.Condition, condition string) *metav1.Condition {
132-
for idx := 0; idx < len(conditions); idx++ {
133-
cond := &conditions[idx]
134-
if cond.Type == condition {
135-
return cond
136-
}
137-
}
138-
return nil
139-
}
140-
141130
// NewBaseConditions creates a new set of pristine conditions. The given `condition` is set, and its `reason` and `message` are
142131
// optionally set. Note that Available always imply Upgradeable, and that we ignore `reason` and `message` for it.
143132
func NewBaseConditions(cond metav1.Condition, now time.Time) []metav1.Condition {

pkg/status/status_test.go

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -36,46 +36,6 @@ import (
3636
testobjs "github.com/openshift-kni/numaresources-operator/internal/objects"
3737
)
3838

39-
func TestFindCondition(t *testing.T) {
40-
type testCase struct {
41-
name string
42-
desired string
43-
conds []metav1.Condition
44-
expectedFound bool
45-
}
46-
47-
now := time.Now()
48-
testCases := []testCase{
49-
{
50-
name: "nil conditions",
51-
desired: ConditionAvailable,
52-
expectedFound: false,
53-
},
54-
{
55-
name: "missing condition",
56-
desired: "foobar",
57-
conds: defaultBaseConditions(now),
58-
expectedFound: false,
59-
},
60-
{
61-
name: "found condition",
62-
desired: ConditionProgressing,
63-
conds: defaultBaseConditions(now),
64-
expectedFound: true,
65-
},
66-
}
67-
68-
for _, tcase := range testCases {
69-
t.Run(tcase.name, func(t *testing.T) {
70-
cond := FindCondition(tcase.conds, tcase.desired)
71-
found := (cond != nil)
72-
if found != tcase.expectedFound {
73-
t.Errorf("failure looking for condition %q: got=%v expected=%v", tcase.desired, found, tcase.expectedFound)
74-
}
75-
})
76-
}
77-
}
78-
7939
func TestComputeConditions(t *testing.T) {
8040
err := nropv1.AddToScheme(scheme.Scheme)
8141
if err != nil {

test/e2e/install/install_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
appsv1 "k8s.io/api/apps/v1"
2525
corev1 "k8s.io/api/core/v1"
2626
"k8s.io/apimachinery/pkg/api/errors"
27+
metahelper "k8s.io/apimachinery/pkg/api/meta"
2728
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2829
"k8s.io/apimachinery/pkg/labels"
2930
"k8s.io/apimachinery/pkg/types"
@@ -91,7 +92,7 @@ var _ = Describe("[Install] continuousIntegration", Serial, func() {
9192
return false, err
9293
}
9394

94-
cond := status.FindCondition(updatedNROObj.Status.Conditions, status.ConditionAvailable)
95+
cond := metahelper.FindStatusCondition(updatedNROObj.Status.Conditions, status.ConditionAvailable)
9596
if cond == nil {
9697
klog.InfoS("missing conditions", "nroObj", updatedNROObj)
9798
return false, err
@@ -180,7 +181,7 @@ var _ = Describe("[Install] durability", Serial, func() {
180181
return false
181182
}
182183

183-
cond := status.FindCondition(updatedNROObj.Status.Conditions, status.ConditionDegraded)
184+
cond := metahelper.FindStatusCondition(updatedNROObj.Status.Conditions, status.ConditionDegraded)
184185
if cond == nil {
185186
klog.InfoS("missing conditions", "nroObj", updatedNROObj)
186187
return false

test/e2e/sched/install/install_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"time"
2323

2424
appsv1 "k8s.io/api/apps/v1"
25+
metahelper "k8s.io/apimachinery/pkg/api/meta"
2526
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2627
"k8s.io/klog/v2"
2728

@@ -114,7 +115,7 @@ var _ = Describe("[Scheduler] install", func() {
114115

115116
func isReportedAvailable(conditions []metav1.Condition) bool {
116117
// conditions that should be True
117-
availableCond := status.FindCondition(conditions, status.ConditionAvailable)
118+
availableCond := metahelper.FindStatusCondition(conditions, status.ConditionAvailable)
118119
if availableCond == nil {
119120
klog.InfoS("missing available condition status")
120121
return false
@@ -124,7 +125,7 @@ func isReportedAvailable(conditions []metav1.Condition) bool {
124125
return false
125126
}
126127

127-
upgradeCond := status.FindCondition(conditions, status.ConditionUpgradeable)
128+
upgradeCond := metahelper.FindStatusCondition(conditions, status.ConditionUpgradeable)
128129
if upgradeCond == nil {
129130
klog.InfoS("missing upgradeable condition status")
130131
return false
@@ -135,7 +136,7 @@ func isReportedAvailable(conditions []metav1.Condition) bool {
135136
}
136137

137138
// conditions that should be False
138-
degradedCond := status.FindCondition(conditions, status.ConditionDegraded)
139+
degradedCond := metahelper.FindStatusCondition(conditions, status.ConditionDegraded)
139140
if degradedCond == nil {
140141
klog.Info("missing degraded condition status")
141142
return false
@@ -145,7 +146,7 @@ func isReportedAvailable(conditions []metav1.Condition) bool {
145146
return false
146147
}
147148

148-
progressCond := status.FindCondition(conditions, status.ConditionProgressing)
149+
progressCond := metahelper.FindStatusCondition(conditions, status.ConditionProgressing)
149150
if progressCond == nil {
150151
klog.Info("missing progressing condition status")
151152
return false

test/e2e/serial/tests/configuration.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
appsv1 "k8s.io/api/apps/v1"
3232
corev1 "k8s.io/api/core/v1"
3333
"k8s.io/apimachinery/pkg/api/errors"
34+
metahelper "k8s.io/apimachinery/pkg/api/meta"
3435
"k8s.io/apimachinery/pkg/api/resource"
3536
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3637
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -997,7 +998,7 @@ var _ = Describe("[serial][disruptive] numaresources configuration management",
997998
By("verify the operator is in Available condition")
998999
Eventually(func(g Gomega) {
9991000
g.Expect(fxt.Client.Get(ctx, nroKey, &updatedNRO)).To(Succeed())
1000-
cond := status.FindCondition(updatedNRO.Status.Conditions, status.ConditionAvailable)
1001+
cond := metahelper.FindStatusCondition(updatedNRO.Status.Conditions, status.ConditionAvailable)
10011002
g.Expect(cond).ToNot(BeNil(), "condition Available was not found: %+v", updatedNRO.Status.Conditions)
10021003
g.Expect(cond.Status).To(Equal(metav1.ConditionTrue), "Expected operators condition to be Available, but was found something else: %+v", updatedNRO.Status.Conditions)
10031004
}).WithTimeout(5*time.Minute).WithPolling(5*time.Second).Should(Succeed(), "operator did not return to Available state in time")
@@ -1087,7 +1088,7 @@ var _ = Describe("[serial][disruptive] numaresources configuration management",
10871088

10881089
By("verify the operator is in Available condition")
10891090
Expect(fxt.Client.Get(ctx, nroKey, &updatedNRO)).To(Succeed())
1090-
cond := status.FindCondition(updatedNRO.Status.Conditions, status.ConditionAvailable)
1091+
cond := metahelper.FindStatusCondition(updatedNRO.Status.Conditions, status.ConditionAvailable)
10911092
Expect(cond).ToNot(BeNil(), "expected operators conditions to be Available but was found something else: %+v", updatedNRO.Status.Conditions)
10921093
}()
10931094

@@ -1195,7 +1196,7 @@ var _ = Describe("[serial][disruptive] numaresources configuration management",
11951196
By("verifying the operator is in Available condition")
11961197
Eventually(func(g Gomega) {
11971198
g.Expect(fxt.Client.Get(ctx, nroKey, &updatedNRO)).To(Succeed())
1198-
cond := status.FindCondition(updatedNRO.Status.Conditions, status.ConditionAvailable)
1199+
cond := metahelper.FindStatusCondition(updatedNRO.Status.Conditions, status.ConditionAvailable)
11991200
g.Expect(cond).ToNot(BeNil(), "condition Available was not found: %+v", updatedNRO.Status.Conditions)
12001201
g.Expect(cond.Status).To(Equal(metav1.ConditionTrue), "Expected operator condition to be Available=True, but got something else: %+v", updatedNRO.Status.Conditions)
12011202
}).WithTimeout(5*time.Minute).WithPolling(5*time.Second).Should(Succeed(), "operator did not return to Available state in time")
@@ -1257,7 +1258,7 @@ var _ = Describe("[serial][disruptive] numaresources configuration management",
12571258
By("verify the operator is in Available condition")
12581259
Eventually(func(g Gomega) {
12591260
g.Expect(fxt.Client.Get(ctx, nroKey, &updatedNRO)).To(Succeed())
1260-
cond := status.FindCondition(updatedNRO.Status.Conditions, status.ConditionAvailable)
1261+
cond := metahelper.FindStatusCondition(updatedNRO.Status.Conditions, status.ConditionAvailable)
12611262
g.Expect(cond).ToNot(BeNil(), "condition Available was not found: %+v", updatedNRO.Status.Conditions)
12621263
g.Expect(cond.Status).To(Equal(metav1.ConditionTrue), "Expected operators condition to be Available=True, but was found something else: %+v", updatedNRO.Status.Conditions)
12631264
}).WithTimeout(5*time.Minute).WithPolling(5*time.Second).Should(Succeed(), "operator did not return to Available state in time")
@@ -1496,7 +1497,7 @@ func isNROSchedAvailableAt(nrosStatus *nropv1.NUMAResourcesSchedulerStatus, gen
14961497
if nrosStatus == nil {
14971498
return false
14981499
}
1499-
cond := status.FindCondition(nrosStatus.Conditions, status.ConditionAvailable)
1500+
cond := metahelper.FindStatusCondition(nrosStatus.Conditions, status.ConditionAvailable)
15001501
if cond == nil {
15011502
return false
15021503
}
@@ -1514,7 +1515,7 @@ func isNROOperAvailableAt(nropStatus *nropv1.NUMAResourcesOperatorStatus, gen in
15141515
if nropStatus == nil {
15151516
return false
15161517
}
1517-
cond := status.FindCondition(nropStatus.Conditions, status.ConditionAvailable)
1518+
cond := metahelper.FindStatusCondition(nropStatus.Conditions, status.ConditionAvailable)
15181519
if cond == nil {
15191520
return false
15201521
}

test/e2e/serial/tests/tolerations.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
appsv1 "k8s.io/api/apps/v1"
2626
corev1 "k8s.io/api/core/v1"
2727
"k8s.io/apimachinery/pkg/api/errors"
28+
metahelper "k8s.io/apimachinery/pkg/api/meta"
2829
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2930
"k8s.io/apimachinery/pkg/labels"
3031
kvalidation "k8s.io/apimachinery/pkg/util/validation/field"
@@ -836,7 +837,7 @@ func isRTEPodFoundOnNode(cli client.Client, ctx context.Context, nodeName string
836837
}
837838

838839
func isDegradedWith(conds []metav1.Condition, msgContains string, reason string) bool {
839-
cond := status.FindCondition(conds, status.ConditionDegraded)
840+
cond := metahelper.FindStatusCondition(conds, status.ConditionDegraded)
840841
if cond == nil {
841842
return false
842843
}

test/internal/deploy/deploy.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222

2323
"golang.org/x/sync/errgroup"
2424

25+
metahelper "k8s.io/apimachinery/pkg/api/meta"
2526
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2627
"k8s.io/klog/v2"
2728

@@ -125,7 +126,7 @@ func DeployNROScheduler(ctx context.Context, timeout time.Duration) *nropv1.NUMA
125126
}
126127
nroSchedObj = updatedNROObj
127128

128-
cond := status.FindCondition(updatedNROObj.Status.Conditions, status.ConditionAvailable)
129+
cond := metahelper.FindStatusCondition(updatedNROObj.Status.Conditions, status.ConditionAvailable)
129130
if cond == nil {
130131
klog.Warningf("missing conditions in %v", updatedNROObj)
131132
return false

test/internal/nrosched/nrosched.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"time"
2424

2525
corev1 "k8s.io/api/core/v1"
26+
metahelper "k8s.io/apimachinery/pkg/api/meta"
2627
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2728
"k8s.io/apimachinery/pkg/fields"
2829
"k8s.io/client-go/kubernetes"
@@ -168,7 +169,7 @@ func CheckNROSchedulerAvailable(ctx context.Context, cli client.Client, schedObj
168169
if err != nil {
169170
return fmt.Errorf("failed to get the scheduler resource: %v", err)
170171
}
171-
cond := status.FindCondition(nroSchedObj.Status.Conditions, status.ConditionAvailable)
172+
cond := metahelper.FindStatusCondition(nroSchedObj.Status.Conditions, status.ConditionAvailable)
172173
if cond == nil {
173174
return fmt.Errorf("missing conditions in %v", nroSchedObj)
174175
}

0 commit comments

Comments
 (0)