diff --git a/internal/method/reference_processor.go b/internal/method/reference_processor.go index 382c3c0..011d428 100644 --- a/internal/method/reference_processor.go +++ b/internal/method/reference_processor.go @@ -50,6 +50,9 @@ type Reference struct { // RemoteListType is the list type of the type whose reference we're holding. RemoteListType *jen.Statement + // GetNamespace is the function call for getting the namespace of instance. + GetNamespace *jen.Statement + // GoValueFieldPath is the list of fields that needs to be traveled to access // the current value field. It may include prefixes like [] for array fields, // * for pointer fields or []* for array of pointer fields. @@ -163,6 +166,7 @@ func (rp *ReferenceProcessor) Process(_ *types.Named, f *types.Var, _, comment s GoValueFieldPath: append(path, f.Name()), GoRefFieldName: refFieldName, GoSelectorFieldName: selectorFieldName, + GetNamespace: jen.Id(rp.Receiver).Dot("GetNamespace").Call(), IsPointer: isPointer, IsSlice: isList, IsFloatPointer: isFloatPointer, diff --git a/internal/method/resolver.go b/internal/method/resolver.go index 71c40eb..7d47d89 100644 --- a/internal/method/resolver.go +++ b/internal/method/resolver.go @@ -145,7 +145,8 @@ func singleResolutionCall(ref Reference, referencePkgPath string) resolutionCall jen.Id("Managed"): ref.RemoteType, jen.Id("List"): ref.RemoteListType, }), - jen.Id("Extract"): ref.Extractor, + jen.Id("Extract"): ref.Extractor, + jen.Id("Namespace"): ref.GetNamespace, }, ), ), @@ -196,7 +197,8 @@ func multiResolutionCall(ref Reference, referencePkgPath string) resolutionCallF jen.Id("Managed"): ref.RemoteType, jen.Id("List"): ref.RemoteListType, }), - jen.Id("Extract"): ref.Extractor, + jen.Id("Extract"): ref.Extractor, + jen.Id("Namespace"): ref.GetNamespace, }, ), ), diff --git a/internal/method/resolver_test.go b/internal/method/resolver_test.go index aa0769e..cfd23ad 100644 --- a/internal/method/resolver_test.go +++ b/internal/method/resolver_test.go @@ -126,6 +126,7 @@ func (mg *Model) ResolveReferences(ctx context.Context, c client.Reader) error { rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ CurrentValue: mg.Spec.ForProvider.APIID, Extract: reference.ExternalName(), + Namespace: mg.GetNamespace(), Reference: mg.Spec.ForProvider.APIIDRef, Selector: mg.Spec.ForProvider.APIIDSelector, To: reference.To{ @@ -142,6 +143,7 @@ func (mg *Model) ResolveReferences(ctx context.Context, c client.Reader) error { rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.SecurityGroupID), Extract: reference.ExternalName(), + Namespace: mg.GetNamespace(), Reference: mg.Spec.ForProvider.SecurityGroupIDRef, Selector: mg.Spec.ForProvider.SecurityGroupIDSelector, To: reference.To{ @@ -158,6 +160,7 @@ func (mg *Model) ResolveReferences(ctx context.Context, c client.Reader) error { rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.IAMRoleARN), Extract: v1beta1.IAMRoleARN(), + Namespace: mg.GetNamespace(), Reference: mg.Spec.ForProvider.IAMRoleARNRef, Selector: mg.Spec.ForProvider.IAMRoleARNSelector, To: reference.To{ @@ -174,6 +177,7 @@ func (mg *Model) ResolveReferences(ctx context.Context, c client.Reader) error { rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.NestedTargetWithPath), Extract: v1beta1.IAMRoleARN("a.b.c"), + Namespace: mg.GetNamespace(), Reference: mg.Spec.ForProvider.NestedTargetWithPathRef, Selector: mg.Spec.ForProvider.NestedTargetWithPathSelector, To: reference.To{ @@ -190,6 +194,7 @@ func (mg *Model) ResolveReferences(ctx context.Context, c client.Reader) error { rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.NestedTargetNoPath), Extract: IAMRoleARN("a.b.c"), + Namespace: mg.GetNamespace(), Reference: mg.Spec.ForProvider.NestedTargetNoPathRef, Selector: mg.Spec.ForProvider.NestedTargetNoPathSelector, To: reference.To{ @@ -206,6 +211,7 @@ func (mg *Model) ResolveReferences(ctx context.Context, c client.Reader) error { rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.NoArgNoPath), Extract: IAMRoleARN(), + Namespace: mg.GetNamespace(), Reference: mg.Spec.ForProvider.NoArgNoPathRef, Selector: mg.Spec.ForProvider.NoArgNoPathSelector, To: reference.To{ @@ -223,6 +229,7 @@ func (mg *Model) ResolveReferences(ctx context.Context, c client.Reader) error { rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ CurrentValue: mg.Spec.ForProvider.Network.VPCID, Extract: reference.ExternalName(), + Namespace: mg.GetNamespace(), Reference: mg.Spec.ForProvider.Network.VPCIDRef, Selector: mg.Spec.ForProvider.Network.VPCIDSelector, To: reference.To{ @@ -241,6 +248,7 @@ func (mg *Model) ResolveReferences(ctx context.Context, c client.Reader) error { rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ CurrentValue: mg.Spec.ForProvider.OtherSetting[i3].OtherID, Extract: reference.ExternalName(), + Namespace: mg.GetNamespace(), Reference: mg.Spec.ForProvider.OtherSetting[i3].OtherIDRef, Selector: mg.Spec.ForProvider.OtherSetting[i3].OtherIDSelector, To: reference.To{ @@ -258,6 +266,7 @@ func (mg *Model) ResolveReferences(ctx context.Context, c client.Reader) error { mrsp, err = r.ResolveMultiple(ctx, reference.MultiResolutionRequest{ CurrentValues: mg.Spec.ForProvider.SubnetIDs, Extract: reference.ExternalName(), + Namespace: mg.GetNamespace(), References: mg.Spec.ForProvider.SubnetIDRefs, Selector: mg.Spec.ForProvider.SubnetIDSelector, To: reference.To{ @@ -274,6 +283,7 @@ func (mg *Model) ResolveReferences(ctx context.Context, c client.Reader) error { mrsp, err = r.ResolveMultiple(ctx, reference.MultiResolutionRequest{ CurrentValues: reference.FromPtrValues(mg.Spec.ForProvider.RouteTableIDs), Extract: reference.ExternalName(), + Namespace: mg.GetNamespace(), References: mg.Spec.ForProvider.RouteTableIDsRefs, Selector: mg.Spec.ForProvider.RouteTableIDsSelector, To: reference.To{ @@ -290,6 +300,7 @@ func (mg *Model) ResolveReferences(ctx context.Context, c client.Reader) error { rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.CustomConfiguration), Extract: Configuration(), + Namespace: mg.GetNamespace(), Reference: mg.Spec.ForProvider.CustomConfigurationRef, Selector: mg.Spec.ForProvider.CustomConfigurationSelector, To: reference.To{ @@ -306,6 +317,7 @@ func (mg *Model) ResolveReferences(ctx context.Context, c client.Reader) error { rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ CurrentValue: reference.FromFloatPtrValue(mg.Spec.ForProvider.Count), Extract: Count(), + Namespace: mg.GetNamespace(), Reference: mg.Spec.ForProvider.CountRef, Selector: mg.Spec.ForProvider.CountSelector, To: reference.To{