Skip to content

Commit f8f4bb5

Browse files
authored
Merge pull request #534 from avarei/fix/required-resource-namespace
fix nil pointer dereference
2 parents beb7916 + 599d94d commit f8f4bb5

File tree

2 files changed

+68
-1
lines changed

2 files changed

+68
-1
lines changed

extraresources.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func (e *ExtraResourcesRequirement) ToResourceSelector() *fnv1.ResourceSelector
5656
}
5757

5858
if e.Namespace != "" {
59-
*out.Namespace = e.Namespace
59+
out.Namespace = &e.Namespace
6060
}
6161
return out
6262
}

fn_test.go

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ metadata:
5858
{"apiVersion":"meta.gotemplating.fn.crossplane.io/v1alpha1","kind":"ExtraResources","requirements":{"all-cool-resources":{"apiVersion":"example.org/v1","kind":"CoolExtraResource","matchLabels":{}}}}`
5959
extraResourcesDuplicatedKey = `{"apiVersion":"meta.gotemplating.fn.crossplane.io/v1alpha1","kind":"ExtraResources","requirements":{"cool-extra-resource":{"apiVersion":"example.org/v1","kind":"CoolExtraResource","matchName":"cool-extra-resource"}}}
6060
{"apiVersion":"meta.gotemplating.fn.crossplane.io/v1alpha1","kind":"ExtraResources","requirements":{"cool-extra-resource":{"apiVersion":"example.org/v1","kind":"CoolExtraResource","matchName":"another-cool-extra-resource"}}}`
61+
extraResourceNamespaced = `{"apiVersion":"meta.gotemplating.fn.crossplane.io/v1alpha1","kind":"ExtraResources","requirements":{"cool-extra-resource":{"apiVersion":"v1","kind":"ConfigMap","matchName":"cool-extra-resource","namespace":"default"}}}`
6162

6263
key = "userkey/go-template"
6364
path = "testdata/templates"
@@ -1396,6 +1397,72 @@ func TestRunFunction(t *testing.T) {
13961397
},
13971398
},
13981399
},
1400+
"NamespacedExtraResource": {
1401+
args: args{
1402+
req: &fnv1.RunFunctionRequest{
1403+
Input: resource.MustStructObject(
1404+
&v1beta1.GoTemplate{
1405+
Source: v1beta1.InlineSource,
1406+
Inline: &v1beta1.TemplateSourceInline{Template: extraResourceNamespaced},
1407+
}),
1408+
RequiredResources: map[string]*fnv1.Resources{
1409+
"cool-extra-resource": {
1410+
Items: []*fnv1.Resource{
1411+
{
1412+
Resource: resource.MustStructJSON(`{"apiVersion": "v1", "kind": "ConfigMap", "metadata": {"name": "cool-extra-resource", "namespace": "default"}, "data": {"a": "b"}}`),
1413+
},
1414+
},
1415+
},
1416+
},
1417+
},
1418+
},
1419+
want: want{
1420+
rsp: &fnv1.RunFunctionResponse{
1421+
Meta: &fnv1.ResponseMeta{Ttl: durationpb.New(response.DefaultTTL)},
1422+
Results: []*fnv1.Result{},
1423+
Context: resource.MustStructJSON(
1424+
`{
1425+
"apiextensions.crossplane.io/extra-resources": {
1426+
"cool-extra-resource": {
1427+
"items": [
1428+
{
1429+
"resource": {
1430+
"apiVersion": "v1",
1431+
"kind": "ConfigMap",
1432+
"metadata": {
1433+
"name": "cool-extra-resource",
1434+
"namespace": "default"
1435+
},
1436+
"data": {
1437+
"a": "b"
1438+
}
1439+
}
1440+
}
1441+
]
1442+
}
1443+
}
1444+
}`,
1445+
),
1446+
Desired: &fnv1.State{
1447+
Composite: &fnv1.Resource{
1448+
Resource: resource.MustStructJSON("{}"),
1449+
},
1450+
},
1451+
Requirements: &fnv1.Requirements{
1452+
ExtraResources: map[string]*fnv1.ResourceSelector{
1453+
"cool-extra-resource": {
1454+
ApiVersion: "v1",
1455+
Kind: "ConfigMap",
1456+
Match: &fnv1.ResourceSelector_MatchName{
1457+
MatchName: "cool-extra-resource",
1458+
},
1459+
Namespace: ptr.To("default"),
1460+
},
1461+
},
1462+
},
1463+
},
1464+
},
1465+
},
13991466
}
14001467

14011468
for name, tc := range cases {

0 commit comments

Comments
 (0)