Skip to content

Commit 6817e82

Browse files
author
Jeff Peeler
committed
fix(unit): fix tests involving CRD status
Change the default `crd` function to return appropriate status as to pass the requirement checks. Also, make some minor logging improvements.
1 parent 1902e0b commit 6817e82

File tree

3 files changed

+56
-4
lines changed

3 files changed

+56
-4
lines changed

pkg/controller/operators/olm/operator_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,18 @@ func crd(name string, version string) *v1beta1.CustomResourceDefinition {
555555
Kind: name,
556556
},
557557
},
558+
Status: v1beta1.CustomResourceDefinitionStatus{
559+
Conditions: []v1beta1.CustomResourceDefinitionCondition{
560+
{
561+
Type: v1beta1.Established,
562+
Status: v1beta1.ConditionTrue,
563+
},
564+
{
565+
Type: v1beta1.NamesAccepted,
566+
Status: v1beta1.ConditionTrue,
567+
},
568+
},
569+
},
558570
}
559571
}
560572

pkg/controller/operators/olm/requirements.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ func (a *Operator) requirementStatus(strategyDetailsDeployment *install.Strategy
3030
// check if CRD exists - this verifies group, version, and kind, so no need for GVK check via discovery
3131
crd, err := a.lister.APIExtensionsV1beta1().CustomResourceDefinitionLister().Get(r.Name)
3232
if err != nil {
33-
a.Log.Debugf("Setting 'met' to false, %v with err: %v", r.Name, err)
3433
status.Status = v1alpha1.RequirementStatusReasonNotPresent
34+
a.Log.Debugf("Setting 'met' to false, %v with status %v, with err: %v", r.Name, status, err)
3535
met = false
3636
statuses = append(statuses, status)
3737
continue
@@ -53,6 +53,7 @@ func (a *Operator) requirementStatus(strategyDetailsDeployment *install.Strategy
5353

5454
if !served {
5555
status.Status = v1alpha1.RequirementStatusReasonNotPresent
56+
a.Log.Debugf("Setting 'met' to false, %v with status %v, CRD version %v not found", r.Name, status, r.Version)
5657
met = false
5758
statuses = append(statuses, status)
5859
continue
@@ -81,6 +82,7 @@ func (a *Operator) requirementStatus(strategyDetailsDeployment *install.Strategy
8182
} else {
8283
status.Status = v1alpha1.RequirementStatusReasonNotAvailable
8384
met = false
85+
a.Log.Debugf("Setting 'met' to false, %v with status %v, established=%v, namesAccepted=%v", r.Name, status, established, namesAccepted)
8486
statuses = append(statuses, status)
8587
}
8688
}

pkg/controller/operators/olm/requirements_test.go

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ func TestRequirementAndPermissionStatus(t *testing.T) {
459459
namespace,
460460
"",
461461
installStrategy("csv1-dep", nil, nil),
462-
[]*v1beta1.CustomResourceDefinition{crd("c1", "v2")},
462+
[]*v1beta1.CustomResourceDefinition{crd("c1", "version-not-found")},
463463
nil,
464464
v1alpha1.CSVPhasePending,
465465
),
@@ -480,7 +480,7 @@ func TestRequirementAndPermissionStatus(t *testing.T) {
480480
expectedError: nil,
481481
},
482482
{
483-
description: "RequirementNotMet/NamesConflictedCRDVersion",
483+
description: "RequirementNotMet/NamesConflictedCRD",
484484
csv: csv("csv1",
485485
namespace,
486486
"",
@@ -491,7 +491,45 @@ func TestRequirementAndPermissionStatus(t *testing.T) {
491491
),
492492
existingObjs: nil,
493493
existingExtObjs: []runtime.Object{
494-
crd("c1", "v2"),
494+
func() *v1beta1.CustomResourceDefinition {
495+
newCRD := crd("c1", "v2")
496+
// condition order: established, name accepted
497+
newCRD.Status.Conditions[0].Status = v1beta1.ConditionTrue
498+
newCRD.Status.Conditions[1].Status = v1beta1.ConditionFalse
499+
return newCRD
500+
}(),
501+
},
502+
met: false,
503+
expectedRequirementStatuses: map[gvkn]v1alpha1.RequirementStatus{
504+
{"apiextensions.k8s.io", "v1beta1", "CustomResourceDefinition", "c1group"}: {
505+
Group: "apiextensions.k8s.io",
506+
Version: "v1beta1",
507+
Kind: "CustomResourceDefinition",
508+
Name: "c1group",
509+
Status: v1alpha1.RequirementStatusReasonNotAvailable,
510+
},
511+
},
512+
expectedError: nil,
513+
},
514+
{
515+
description: "RequirementNotMet/CRDResourceInactive",
516+
csv: csv("csv1",
517+
namespace,
518+
"",
519+
installStrategy("csv1-dep", nil, nil),
520+
[]*v1beta1.CustomResourceDefinition{crd("c1", "v2")},
521+
nil,
522+
v1alpha1.CSVPhasePending,
523+
),
524+
existingObjs: nil,
525+
existingExtObjs: []runtime.Object{
526+
func() *v1beta1.CustomResourceDefinition {
527+
newCRD := crd("c1", "v2")
528+
// condition order: established, name accepted
529+
newCRD.Status.Conditions[0].Status = v1beta1.ConditionFalse
530+
newCRD.Status.Conditions[1].Status = v1beta1.ConditionTrue
531+
return newCRD
532+
}(),
495533
},
496534
met: false,
497535
expectedRequirementStatuses: map[gvkn]v1alpha1.RequirementStatus{

0 commit comments

Comments
 (0)