From ef89df6123947a31e10cc5a2f8b8f30264f32ea5 Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Fri, 22 Jan 2021 11:01:07 -0800 Subject: [PATCH] support anchor in filedspec --- api/filters/fieldspec/fieldspec.go | 2 + api/krusty/accumulation_test.go | 67 ++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/api/filters/fieldspec/fieldspec.go b/api/filters/fieldspec/fieldspec.go index d79a026525..9b2cc37ae6 100644 --- a/api/filters/fieldspec/fieldspec.go +++ b/api/filters/fieldspec/fieldspec.go @@ -59,6 +59,8 @@ func (fltr Filter) filter(obj *yaml.RNode) error { return fltr.seq(obj) case yaml.MappingNode: return fltr.field(obj) + case yaml.AliasNode: + return fltr.filter(yaml.NewRNode(obj.YNode().Alias)) default: return errors.Errorf("expected sequence or mapping node") } diff --git a/api/krusty/accumulation_test.go b/api/krusty/accumulation_test.go index 491e52013b..f6b422b73a 100644 --- a/api/krusty/accumulation_test.go +++ b/api/krusty/accumulation_test.go @@ -93,3 +93,70 @@ resources: t.Fatalf("unexpected error: %q", err) } } + +func TestResourceHasAnchor(t *testing.T) { + th := kusttest_test.MakeHarness(t) + th.WriteK("/app", ` +resources: +- ingress.yaml +`) + th.WriteF("/app/ingress.yaml", ` +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: blog +spec: + tls: + - hosts: + - xyz.me + - www.xyz.me + secretName: cert-tls + rules: + - host: xyz.me + http: &xxx_rules + paths: + - path: / + pathType: Prefix + backend: + service: + name: service + port: + number: 80 + - host: www.xyz.me + http: *xxx_rules +`) + m := th.Run("/app", th.MakeDefaultOptions()) + th.AssertActualEqualsExpected(m, ` +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: blog +spec: + rules: + - host: xyz.me + http: + paths: + - backend: + service: + name: service + port: + number: 80 + path: / + pathType: Prefix + - host: www.xyz.me + http: + paths: + - backend: + service: + name: service + port: + number: 80 + path: / + pathType: Prefix + tls: + - hosts: + - xyz.me + - www.xyz.me + secretName: cert-tls +`) +}