Skip to content

Commit cf256f8

Browse files
committed
use correct namespace from MR in MultiNamespacedResolution
Signed-off-by: Erhan Cagirici <[email protected]>
1 parent 1471876 commit cf256f8

File tree

2 files changed

+78
-7
lines changed

2 files changed

+78
-7
lines changed

pkg/reference/namespaced_reference.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ func (r *APINamespacedResolver) ResolveMultiple(ctx context.Context, req MultiNa
268268
ns = r.from.GetNamespace()
269269
}
270270

271-
if err := r.client.List(ctx, req.To.List, client.MatchingLabels(req.Selector.MatchLabels), client.InNamespace(req.Namespace)); err != nil {
271+
if err := r.client.List(ctx, req.To.List, client.MatchingLabels(req.Selector.MatchLabels), client.InNamespace(ns)); err != nil {
272272
return MultiNamespacedResolutionResponse{}, errors.Wrap(err, errListManaged)
273273
}
274274

pkg/reference/namespaced_reference_test.go

Lines changed: 77 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,8 @@ func TestNamespacedResolveMultiple(t *testing.T) {
461461
now := metav1.Now()
462462
value := "coolv"
463463
value2 := "cooler"
464-
ref := xpv1.NamespacedReference{Name: "cool"}
464+
ref := xpv1.NamespacedReference{Name: "cool", Namespace: "cool-ns"}
465+
nsOmittedRef := xpv1.NamespacedReference{Name: "cool"}
465466
optionalPolicy := xpv1.ResolutionPolicyOptional
466467
alwaysPolicy := xpv1.ResolvePolicyAlways
467468
optionalRef := xpv1.NamespacedReference{Name: "cool", Policy: &xpv1.Policy{Resolution: &optionalPolicy}}
@@ -616,18 +617,88 @@ func TestNamespacedResolveMultiple(t *testing.T) {
616617
"SuccessfulResolveNamespaced": {
617618
reason: "Resolve should be successful when a namespace is given",
618619
c: &test.MockClient{
619-
MockGet: test.NewMockGetFn(nil, func(obj client.Object) error {
620-
meta.SetExternalName(obj.(metav1.Object), value)
621-
return nil
622-
}),
620+
MockGet: func(_ context.Context, key client.ObjectKey, obj client.Object) error {
621+
if key.Namespace == ref.Namespace {
622+
meta.SetExternalName(obj.(metav1.Object), value)
623+
return nil
624+
}
625+
626+
t.Errorf("Resolve did not infer to the MR namespace: %v", key)
627+
return errBoom
628+
},
623629
},
624630
from: &fake.Managed{},
625631
args: args{
626632
req: MultiNamespacedResolutionRequest{
627633
References: []xpv1.NamespacedReference{ref},
628634
To: To{Managed: &fake.Managed{}},
629635
Extract: ExternalName(),
630-
Namespace: "cool-ns",
636+
},
637+
},
638+
want: want{
639+
rsp: MultiNamespacedResolutionResponse{
640+
ResolvedValues: []string{value},
641+
ResolvedReferences: []xpv1.NamespacedReference{ref},
642+
},
643+
},
644+
},
645+
"SuccessfulResolveInferredNamespace": {
646+
reason: "Resolve should be successful when a namespace is given",
647+
c: &test.MockClient{
648+
MockGet: func(_ context.Context, key client.ObjectKey, obj client.Object) error {
649+
if key.Namespace == "from-ns" {
650+
meta.SetExternalName(obj.(metav1.Object), value)
651+
return nil
652+
}
653+
654+
t.Errorf("Resolve did not infer to the MR namespace: %v", key)
655+
return errBoom
656+
},
657+
},
658+
from: &fake.Managed{
659+
ObjectMeta: metav1.ObjectMeta{
660+
Name: "some-mr",
661+
Namespace: "from-ns",
662+
},
663+
},
664+
args: args{
665+
req: MultiNamespacedResolutionRequest{
666+
References: []xpv1.NamespacedReference{nsOmittedRef},
667+
To: To{Managed: &fake.Managed{}},
668+
Extract: ExternalName(),
669+
},
670+
},
671+
want: want{
672+
rsp: MultiNamespacedResolutionResponse{
673+
ResolvedValues: []string{value},
674+
ResolvedReferences: []xpv1.NamespacedReference{nsOmittedRef},
675+
},
676+
},
677+
},
678+
"SuccessfulResolveCrossNamespace": {
679+
reason: "Resolve should be successful when a namespace is given",
680+
c: &test.MockClient{
681+
MockGet: func(_ context.Context, key client.ObjectKey, obj client.Object) error {
682+
if key.Namespace == ref.Namespace {
683+
meta.SetExternalName(obj.(metav1.Object), value)
684+
return nil
685+
}
686+
687+
t.Errorf("Resolve did not infer to the MR namespace: %v", key)
688+
return errBoom
689+
},
690+
},
691+
from: &fake.Managed{
692+
ObjectMeta: metav1.ObjectMeta{
693+
Name: "some-mr",
694+
Namespace: "from-ns",
695+
},
696+
},
697+
args: args{
698+
req: MultiNamespacedResolutionRequest{
699+
References: []xpv1.NamespacedReference{ref},
700+
To: To{Managed: &fake.Managed{}},
701+
Extract: ExternalName(),
631702
},
632703
},
633704
want: want{

0 commit comments

Comments
 (0)