diff --git a/api/builtins/PatchStrategicMergeTransformer.go b/api/builtins/PatchStrategicMergeTransformer.go index 56ff45b12..bcf076aa6 100644 --- a/api/builtins/PatchStrategicMergeTransformer.go +++ b/api/builtins/PatchStrategicMergeTransformer.go @@ -4,11 +4,16 @@ package builtins import ( + "encoding/json" "fmt" + kyaml "sigs.k8s.io/kustomize/kyaml/yaml" + + "sigs.k8s.io/kustomize/api/filters/patchstrategicmerge" "sigs.k8s.io/kustomize/api/resmap" "sigs.k8s.io/kustomize/api/resource" "sigs.k8s.io/kustomize/api/types" + "sigs.k8s.io/kustomize/kyaml/filtersutil" "sigs.k8s.io/yaml" ) @@ -17,6 +22,8 @@ type PatchStrategicMergeTransformerPlugin struct { loadedPatches []*resource.Resource Paths []types.PatchStrategicMerge `json:"paths,omitempty" yaml:"paths,omitempty"` Patches string `json:"patches,omitempty" yaml:"patches,omitempty"` + + YAMLSupport bool `json:"yamlSupport,omitempty" yaml:"yamlSupport,omitempty"` } func (p *PatchStrategicMergeTransformerPlugin) Config( @@ -69,22 +76,42 @@ func (p *PatchStrategicMergeTransformerPlugin) Transform(m resmap.ResMap) error if err != nil { return err } - err = target.Patch(patch.Kunstructured) - if err != nil { - return err - } - // remove the resource from resmap - // when the patch is to $patch: delete that target - if len(target.Map()) == 0 { - err = m.Remove(target.CurId()) + if !p.YAMLSupport { + err = target.Patch(patch.Kunstructured) if err != nil { return err } + // remove the resource from resmap + // when the patch is to $patch: delete that target + if len(target.Map()) == 0 { + err = m.Remove(target.CurId()) + if err != nil { + return err + } + } + } else { + node, err := getRNode(patch) + if err != nil { + return err + } + err = filtersutil.ApplyToJSON(patchstrategicmerge.Filter{ + Patch: node, + }, target.Kunstructured) } } return nil } +//TODO: Remove this once the next version of kyaml is released which +// exposes GetRNode from the filutersutil package. +func getRNode(k json.Marshaler) (*kyaml.RNode, error) { + j, err := k.MarshalJSON() + if err != nil { + return nil, err + } + return kyaml.Parse(string(j)) +} + func NewPatchStrategicMergeTransformerPlugin() resmap.TransformerPlugin { return &PatchStrategicMergeTransformerPlugin{} } diff --git a/api/filters/patchstrategicmerge/doc.go b/api/filters/patchstrategicmerge/doc.go new file mode 100644 index 000000000..1733fd8a2 --- /dev/null +++ b/api/filters/patchstrategicmerge/doc.go @@ -0,0 +1,6 @@ +// Copyright 2020 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +// Package patchstrategicmerge contains a kio.Filter implementation of the +// kustomize strategic merge patch transformer. +package patchstrategicmerge diff --git a/api/filters/patchstrategicmerge/example_test.go b/api/filters/patchstrategicmerge/example_test.go new file mode 100644 index 000000000..56bd0b2d6 --- /dev/null +++ b/api/filters/patchstrategicmerge/example_test.go @@ -0,0 +1,49 @@ +// Copyright 2020 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +package patchstrategicmerge + +import ( + "bytes" + "log" + "os" + + "sigs.k8s.io/kustomize/kyaml/kio" + "sigs.k8s.io/kustomize/kyaml/yaml" +) + +func ExampleFilter() { + err := kio.Pipeline{ + Inputs: []kio.Reader{&kio.ByteReader{Reader: bytes.NewBufferString(` +apiVersion: example.com/v1 +kind: Foo +metadata: + name: instance +spec: + replicas: 3 +`)}}, + Filters: []kio.Filter{Filter{ + Patch: yaml.MustParse(` +spec: + template: + containers: + - image: nginx +`), + }}, + Outputs: []kio.Writer{kio.ByteWriter{Writer: os.Stdout}}, + }.Execute() + if err != nil { + log.Fatal(err) + } + + // Output: + // apiVersion: example.com/v1 + // kind: Foo + // metadata: + // name: instance + // spec: + // replicas: 3 + // template: + // containers: + // - image: nginx +} diff --git a/api/filters/patchstrategicmerge/patchstrategicmerge.go b/api/filters/patchstrategicmerge/patchstrategicmerge.go new file mode 100644 index 000000000..48dd868ad --- /dev/null +++ b/api/filters/patchstrategicmerge/patchstrategicmerge.go @@ -0,0 +1,21 @@ +package patchstrategicmerge + +import ( + "sigs.k8s.io/kustomize/kyaml/kio" + "sigs.k8s.io/kustomize/kyaml/yaml" + "sigs.k8s.io/kustomize/kyaml/yaml/merge2" +) + +type Filter struct { + Patch *yaml.RNode +} + +var _ kio.Filter = Filter{} + +func (pf Filter) Filter(nodes []*yaml.RNode) ([]*yaml.RNode, error) { + return kio.FilterAll(yaml.FilterFunc(pf.run)).Filter(nodes) +} + +func (pf Filter) run(node *yaml.RNode) (*yaml.RNode, error) { + return merge2.Merge(pf.Patch, node) +} diff --git a/api/filters/patchstrategicmerge/patchstrategicmerge_test.go b/api/filters/patchstrategicmerge/patchstrategicmerge_test.go new file mode 100644 index 000000000..23ca7d895 --- /dev/null +++ b/api/filters/patchstrategicmerge/patchstrategicmerge_test.go @@ -0,0 +1,82 @@ +package patchstrategicmerge + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/assert" + filtertest "sigs.k8s.io/kustomize/api/testutils/filtertest" + "sigs.k8s.io/kustomize/kyaml/yaml" +) + +func TestFilter(t *testing.T) { + testCases := map[string]struct { + input string + patch *yaml.RNode + expected string + }{ + "simple patch": { + input: ` +apiVersion: apps/v1 +metadata: + name: myDeploy +kind: Deployment +`, + patch: yaml.MustParse(` +metadata: + name: yourDeploy +`), + expected: ` +apiVersion: apps/v1 +metadata: + name: yourDeploy +kind: Deployment +`, + }, + "nested patch": { + input: ` +apiVersion: apps/v1 +metadata: + name: myDeploy +kind: Deployment +spec: + containers: + - name: nginx + args: + - abc +`, + patch: yaml.MustParse(` +spec: + containers: + - name: nginx + args: + - def +`), + expected: ` +apiVersion: apps/v1 +metadata: + name: myDeploy +kind: Deployment +spec: + containers: + - name: nginx + args: + - def +`, + }, + } + + for tn, tc := range testCases { + t.Run(tn, func(t *testing.T) { + f := Filter{ + Patch: tc.patch, + } + if !assert.Equal(t, + strings.TrimSpace(tc.expected), + strings.TrimSpace( + filtertest.RunFilter(t, tc.input, f))) { + t.FailNow() + } + }) + } +} diff --git a/kyaml/filtersutil/filtersutil.go b/kyaml/filtersutil/filtersutil.go index b01f961c0..c86cf6689 100644 --- a/kyaml/filtersutil/filtersutil.go +++ b/kyaml/filtersutil/filtersutil.go @@ -23,7 +23,7 @@ func ApplyToJSON(filter kio.Filter, objs ...marshalerUnmarshaler) error { // convert the json objects to rnodes for i := range objs { - node, err := getRNode(objs[i]) + node, err := GetRNode(objs[i]) if err != nil { return err } @@ -55,8 +55,8 @@ type marshalerUnmarshaler interface { json.Marshaler } -// getRNode converts k into an RNode -func getRNode(k json.Marshaler) (*yaml.RNode, error) { +// GetRNode converts k into an RNode +func GetRNode(k json.Marshaler) (*yaml.RNode, error) { j, err := k.MarshalJSON() if err != nil { return nil, err diff --git a/plugin/builtin/patchstrategicmergetransformer/PatchStrategicMergeTransformer.go b/plugin/builtin/patchstrategicmergetransformer/PatchStrategicMergeTransformer.go index 228d7f425..4eadd3db6 100644 --- a/plugin/builtin/patchstrategicmergetransformer/PatchStrategicMergeTransformer.go +++ b/plugin/builtin/patchstrategicmergetransformer/PatchStrategicMergeTransformer.go @@ -5,11 +5,15 @@ package main import ( + "encoding/json" "fmt" + kyaml "sigs.k8s.io/kustomize/kyaml/yaml" + "sigs.k8s.io/kustomize/api/filters/patchstrategicmerge" "sigs.k8s.io/kustomize/api/resmap" "sigs.k8s.io/kustomize/api/resource" "sigs.k8s.io/kustomize/api/types" + "sigs.k8s.io/kustomize/kyaml/filtersutil" "sigs.k8s.io/yaml" ) @@ -18,6 +22,8 @@ type plugin struct { loadedPatches []*resource.Resource Paths []types.PatchStrategicMerge `json:"paths,omitempty" yaml:"paths,omitempty"` Patches string `json:"patches,omitempty" yaml:"patches,omitempty"` + + YAMLSupport bool `json:"yamlSupport,omitempty" yaml:"yamlSupport,omitempty"` } //noinspection GoUnusedGlobalVariable @@ -73,18 +79,38 @@ func (p *plugin) Transform(m resmap.ResMap) error { if err != nil { return err } - err = target.Patch(patch.Kunstructured) - if err != nil { - return err - } - // remove the resource from resmap - // when the patch is to $patch: delete that target - if len(target.Map()) == 0 { - err = m.Remove(target.CurId()) + if !p.YAMLSupport { + err = target.Patch(patch.Kunstructured) if err != nil { return err } + // remove the resource from resmap + // when the patch is to $patch: delete that target + if len(target.Map()) == 0 { + err = m.Remove(target.CurId()) + if err != nil { + return err + } + } + } else { + node, err := getRNode(patch) + if err != nil { + return err + } + err = filtersutil.ApplyToJSON(patchstrategicmerge.Filter{ + Patch: node, + }, target.Kunstructured) } } return nil } + +//TODO: Remove this once the next version of kyaml is released which +// exposes GetRNode from the filutersutil package. +func getRNode(k json.Marshaler) (*kyaml.RNode, error) { + j, err := k.MarshalJSON() + if err != nil { + return nil, err + } + return kyaml.Parse(string(j)) +} diff --git a/plugin/builtin/patchstrategicmergetransformer/PatchStrategicMergeTransformer_test.go b/plugin/builtin/patchstrategicmergetransformer/PatchStrategicMergeTransformer_test.go index f8df04071..7a259e532 100644 --- a/plugin/builtin/patchstrategicmergetransformer/PatchStrategicMergeTransformer_test.go +++ b/plugin/builtin/patchstrategicmergetransformer/PatchStrategicMergeTransformer_test.go @@ -62,23 +62,24 @@ func TestPatchStrategicMergeTransformerMissingFile(t *testing.T) { PrepBuiltin("PatchStrategicMergeTransformer") defer th.Reset() - _, err := th.RunTransformer(` + th.RunTransformerAndCheckError(` apiVersion: builtin kind: PatchStrategicMergeTransformer metadata: name: notImportantHere paths: - patch.yaml -`, target) - if err == nil { - t.Fatalf("expected error") - } - if !strings.Contains(err.Error(), - "'/patch.yaml' doesn't exist") && - !strings.Contains(err.Error(), - "cannot unmarshal string") { - t.Fatalf("unexpected err: %v", err) - } +`, target, func(t *testing.T, err error) { + if err == nil { + t.Fatalf("expected error") + } + if !strings.Contains(err.Error(), + "'/patch.yaml' doesn't exist") && + !strings.Contains(err.Error(), + "cannot unmarshal string") { + t.Fatalf("unexpected err: %v", err) + } + }) } func TestBadPatchStrategicMergeTransformer(t *testing.T) { @@ -86,20 +87,21 @@ func TestBadPatchStrategicMergeTransformer(t *testing.T) { PrepBuiltin("PatchStrategicMergeTransformer") defer th.Reset() - _, err := th.RunTransformer(` + th.RunTransformerAndCheckError(` apiVersion: builtin kind: PatchStrategicMergeTransformer metadata: name: notImportantHere patches: 'thisIsNotAPatch' -`, target) - if err == nil { - t.Fatalf("expected error") - } - if !strings.Contains(err.Error(), - "cannot unmarshal string into Go value of type map[string]interface {}") { - t.Fatalf("unexpected err: %v", err) - } +`, target, func(t *testing.T, err error) { + if err == nil { + t.Fatalf("expected error") + } + if !strings.Contains(err.Error(), + "cannot unmarshal string into Go value of type map[string]interface {}") { + t.Fatalf("unexpected err: %v", err) + } + }) } func TestBothEmptyPatchStrategicMergeTransformer(t *testing.T) { @@ -107,18 +109,19 @@ func TestBothEmptyPatchStrategicMergeTransformer(t *testing.T) { PrepBuiltin("PatchStrategicMergeTransformer") defer th.Reset() - _, err := th.RunTransformer(` + th.RunTransformerAndCheckError(` apiVersion: builtin kind: PatchStrategicMergeTransformer metadata: name: notImportantHere -`, target) - if err == nil { - t.Fatalf("expected error") - } - if !strings.Contains(err.Error(), "empty file path and empty patch content") { - t.Fatalf("unexpected err: %v", err) - } +`, target, func(t *testing.T, err error) { + if err == nil { + t.Fatalf("expected error") + } + if !strings.Contains(err.Error(), "empty file path and empty patch content") { + t.Fatalf("unexpected err: %v", err) + } + }) } func TestPatchStrategicMergeTransformerFromFiles(t *testing.T) { @@ -139,16 +142,16 @@ spec: replica: 3 `) - rm := th.LoadAndRunTransformer(` + th.RunTransformerAndCheckResult(` apiVersion: builtin kind: PatchStrategicMergeTransformer metadata: name: notImportantHere paths: - patch.yaml -`, target) - - th.AssertActualEqualsExpected(rm, ` +`, +target, +` apiVersion: apps/v1 kind: Deployment metadata: @@ -172,15 +175,15 @@ func TestPatchStrategicMergeTransformerWithInlineJSON(t *testing.T) { PrepBuiltin("PatchStrategicMergeTransformer") defer th.Reset() - rm := th.LoadAndRunTransformer(` + th.RunTransformerAndCheckResult(` apiVersion: builtin kind: PatchStrategicMergeTransformer metadata: name: notImportantHere patches: '{"apiVersion": "apps/v1", "metadata": {"name": "myDeploy"}, "kind": "Deployment", "spec": {"replica": 3}}' -`, target) - - th.AssertActualEqualsExpected(rm, ` +`, +target, +` apiVersion: apps/v1 kind: Deployment metadata: @@ -203,7 +206,7 @@ func TestPatchStrategicMergeTransformerWithInlineYAML(t *testing.T) { PrepBuiltin("PatchStrategicMergeTransformer") defer th.Reset() - rm := th.LoadAndRunTransformer(` + th.RunTransformerAndCheckResult(` apiVersion: builtin kind: PatchStrategicMergeTransformer metadata: @@ -226,9 +229,9 @@ patches: |- containers: - name: nginx image: nginx:latest -`, target) - - th.AssertActualEqualsExpected(rm, ` +`, +target, +` apiVersion: apps/v1 kind: Deployment metadata: @@ -284,7 +287,7 @@ spec: image: busybox `) - rm := th.LoadAndRunTransformer(` + th.RunTransformerAndCheckResult(` apiVersion: builtin kind: PatchStrategicMergeTransformer metadata: @@ -292,9 +295,9 @@ metadata: paths: - patch1.yaml - patch2.yaml -`, target) - - th.AssertActualEqualsExpected(rm, ` +`, +target, +` apiVersion: apps/v1 kind: Deployment metadata: @@ -358,7 +361,7 @@ spec: image: busybox `) - err := th.ErrorFromLoadAndRunTransformer(` + th.RunTransformerAndCheckError(` apiVersion: builtin kind: PatchStrategicMergeTransformer metadata: @@ -366,14 +369,14 @@ metadata: paths: - patch1.yaml - patch2.yaml -`, target) - - if err == nil { - t.Fatalf("did not get expected error") - } - if !strings.Contains(err.Error(), "conflict") { - t.Fatalf("expected error to contain %q but get %v", "conflict", err) - } +`, target, func(t *testing.T, err error) { + if err == nil { + t.Fatalf("did not get expected error") + } + if !strings.Contains(err.Error(), "conflict") { + t.Fatalf("expected error to contain %q but get %v", "conflict", err) + } + }) } func TestStrategicMergeTransformerWrongNamespace(t *testing.T) { @@ -398,21 +401,21 @@ spec: value: BAR `) - err := th.ErrorFromLoadAndRunTransformer(` + th.RunTransformerAndCheckError(` apiVersion: builtin kind: PatchStrategicMergeTransformer metadata: name: notImportantHere paths: - patch.yaml -`, targetWithNamespace) - - if err == nil { - t.Fatalf("did not get expected error") - } - if !strings.Contains(err.Error(), "failed to find unique target for patch") { - t.Fatalf("expected error to contain %q but get %v", "failed to find target for patch", err) - } +`, targetWithNamespace, func(t *testing.T, err error) { + if err == nil { + t.Fatalf("did not get expected error") + } + if !strings.Contains(err.Error(), "failed to find unique target for patch") { + t.Fatalf("expected error to contain %q but get %v", "failed to find target for patch", err) + } + }) } func TestStrategicMergeTransformerNoSchema(t *testing.T) { @@ -430,16 +433,16 @@ spec: B: C: Z `) - rm := th.LoadAndRunTransformer(` + th.RunTransformerAndCheckResult(` apiVersion: builtin kind: PatchStrategicMergeTransformer metadata: name: notImportantHere paths: - patch.yaml -`, targetNoschema) - - th.AssertActualEqualsExpected(rm, ` +`, +targetNoschema, +` apiVersion: example.com/v1 kind: Foo metadata: @@ -478,7 +481,7 @@ spec: baz: hello: world `) - rm := th.LoadAndRunTransformer(` + th.RunTransformerAndCheckResult(` apiVersion: builtin kind: PatchStrategicMergeTransformer metadata: @@ -486,9 +489,9 @@ metadata: paths: - patch1.yaml - patch2.yaml -`, targetNoschema) - - th.AssertActualEqualsExpected(rm, ` +`, +targetNoschema, +` apiVersion: example.com/v1 kind: Foo metadata: @@ -527,7 +530,7 @@ spec: C: NOT_Z `) - err := th.ErrorFromLoadAndRunTransformer(` + th.RunTransformerAndCheckError(` apiVersion: builtin kind: PatchStrategicMergeTransformer metadata: @@ -535,10 +538,12 @@ metadata: paths: - patch1.yaml - patch2.yaml -`, targetNoschema) - if !strings.Contains(err.Error(), "conflict") { - t.Fatalf("expected error to contain %q but get %v", "conflict", err) - } +`, targetNoschema, func(t *testing.T, err error) { + if !strings.Contains(err.Error(), "conflict") { + t.Fatalf("expected error to contain %q but get %v", "conflict", err) + } + }) + } // simple utility function to add an namespace in a resource @@ -844,11 +849,13 @@ func TestSinglePatch(t *testing.T) { th.ResetLoaderRoot(fmt.Sprintf("/%s", test.name)) th.WriteF(fmt.Sprintf("/%s/patch%d.yaml", test.name, 0), test.patch) if test.errorExpected { - err := th.ErrorFromLoadAndRunTransformer(toConfig(test.patch), test.base) - compareExpectedError(t, test.name, err, test.errorMsg) + th.RunTransformerAndCheckError(toConfig(test.patch), test.base, + func(t *testing.T, err error) { + compareExpectedError(t, test.name, err, test.errorMsg) + }) } else { - rm := th.LoadAndRunTransformer(toConfig(test.patch), test.base) - th.AssertActualEqualsExpected(rm, test.expected) + th.RunTransformerAndCheckResult(toConfig(test.patch), test.base, + test.expected) } } } @@ -948,11 +955,13 @@ func TestMultiplePatches(t *testing.T) { } if test.errorExpected { - err := th.ErrorFromLoadAndRunTransformer(toConfig(test.patch...), test.base) - compareExpectedError(t, test.name, err, test.errorMsg) + th.RunTransformerAndCheckError(toConfig(test.patch...), test.base, + func(t *testing.T, err error) { + compareExpectedError(t, test.name, err, test.errorMsg) + }) } else { - rm := th.LoadAndRunTransformer(toConfig(test.patch...), test.base) - th.AssertActualEqualsExpected(rm, test.expected) + th.RunTransformerAndCheckResult(toConfig(test.patch...), test.base, + test.expected) } } @@ -1078,11 +1087,13 @@ func TestMultiplePatchesWithConflict(t *testing.T) { } if test.errorExpected { - err := th.ErrorFromLoadAndRunTransformer(toConfig(test.patch...), test.base) - compareExpectedError(t, test.name, err, test.errorMsg) + th.RunTransformerAndCheckError(toConfig(test.patch...), test.base, + func(t *testing.T, err error) { + compareExpectedError(t, test.name, err, test.errorMsg) + }) } else { - rm := th.LoadAndRunTransformer(toConfig(test.patch...), test.base) - th.AssertActualEqualsExpected(rm, test.expected) + th.RunTransformerAndCheckResult(toConfig(test.patch...), test.base, + test.expected) } } @@ -1186,15 +1197,19 @@ func TestMultipleNamespaces(t *testing.T) { } if test.errorExpected { - err := th.ErrorFromLoadAndRunTransformer(toConfig(test.patch...), strings.Join(test.base, "\n---\n")) - compareExpectedError(t, test.name, err, test.errorMsg) + th.RunTransformerAndCheckError(toConfig(test.patch...), strings.Join(test.base, "\n---\n"), + func(t *testing.T, err error) { + compareExpectedError(t, test.name, err, test.errorMsg) + }) } else { - rm := th.LoadAndRunTransformer(toConfig(test.patch...), strings.Join(test.base, "\n---\n")) - th.AssertActualEqualsExpected(rm, strings.Join(test.expected, "---\n")) + th.RunTransformerAndCheckResult(toConfig(test.patch...), strings.Join(test.base, "\n---\n"), + strings.Join(test.expected, "---\n")) } } } +// We don't run this for the kyaml implementation since we don't support +// the strategic merge patch directives (yet). func TestPatchStrategicMergeTransformerPatchDelete(t *testing.T) { th := kusttest_test.MakeEnhancedHarness(t). PrepBuiltin("PatchStrategicMergeTransformer") diff --git a/plugin/builtin/patchstrategicmergetransformer/go.mod b/plugin/builtin/patchstrategicmergetransformer/go.mod index fabfbac44..899c4c00a 100644 --- a/plugin/builtin/patchstrategicmergetransformer/go.mod +++ b/plugin/builtin/patchstrategicmergetransformer/go.mod @@ -3,6 +3,9 @@ module sigs.k8s.io/kustomize/plugin/builtin/patchstrategicmergetransformer go 1.13 require ( - sigs.k8s.io/kustomize/api v0.3.1 + sigs.k8s.io/kustomize/api v0.0.0 + sigs.k8s.io/kustomize/kyaml v0.1.3 sigs.k8s.io/yaml v1.1.0 ) + +replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../api diff --git a/plugin/builtin/patchstrategicmergetransformer/go.sum b/plugin/builtin/patchstrategicmergetransformer/go.sum index 68a886f70..f90fae209 100644 --- a/plugin/builtin/patchstrategicmergetransformer/go.sum +++ b/plugin/builtin/patchstrategicmergetransformer/go.sum @@ -1,6 +1,7 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +github.com/360EntSecGroup-Skylar/excelize v1.4.1/go.mod h1:vnax29X2usfl7HHkBrX5EvSCJcmH3dT9luvxzu8iGAE= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= @@ -12,6 +13,7 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM= +github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= @@ -21,11 +23,17 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdko github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bombsimon/wsl v1.2.5/go.mod h1:43lEF/i0kpXbLCeDXL9LMT8c92HyBywXb0AsgMHYngM= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -42,6 +50,7 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/dustmop/soup v1.1.2-0.20190516214245-38228baa104e/go.mod h1:CgNC6SGbT+Xb8wGGvzilttZL1mc5sQ/5KkcxsZttMIk= github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633 h1:H2pdYOb3KQ1/YsqVWoWNLQO+fusocsw354rqGTZtAgw= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= @@ -54,6 +63,8 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-critic/go-critic v0.3.5-0.20190904082202-d79a9f0c64db/go.mod h1:+sE8vrLDS2M0pZkBk0wy6+nLdKexVDrl/jBqQOTDThA= +github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-lintpack/lintpack v0.5.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= @@ -70,6 +81,8 @@ github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwoh github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.19.4 h1:ixzUSnHTd6hCemgtAJgluaTSGYpLNpJY4mA2DIkdOAo= github.com/go-openapi/spec v0.19.4/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/spec v0.19.5 h1:Xm0Ao53uqnk9QE/LlYV5DEU09UAgpliA85QoT9LzqPw= +github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= @@ -143,6 +156,12 @@ github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:Fecb github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/go-cleanhttp v0.5.0 h1:wvCrVc9TjDls6+YGAF2hAifE1E5U1+b4tH6KdvN3Gig= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-version v1.1.0 h1:bPIoEKD27tNdebFGGxxYwcL4nepeY4j1QP23PFRGzg0= +github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= @@ -184,8 +203,12 @@ github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVc github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk= +github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= @@ -194,6 +217,7 @@ github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lN github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -207,6 +231,7 @@ github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+ github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/paulmach/orb v0.1.3/go.mod h1:VFlX/8C+IQ1p6FTRRKzKoOPJnvEtA5G0Veuqwbu//Vk= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -224,11 +249,13 @@ github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/qri-io/starlib v0.4.2-0.20200213133954-ff2e8cd5ef8d/go.mod h1:7DPO4domFU579Ga6E61sB9VFNaniPVwJP5C4bBCu3wA= github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/securego/gosec v0.0.0-20191002120514-e680875ea14d/go.mod h1:w5+eXa0mYznDkHaMCXA4XYffjlH+cy1oyKbfzJXa2Do= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= @@ -254,6 +281,7 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.3-0.20181224173747-660f15d67dbb/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -261,6 +289,8 @@ github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e/go.mod h1:Qimiff github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ulikunitz/xz v0.5.5 h1:pFrO0lVpTBXLpYw+pnLj6TbvHuyjXMfjGeCwSqCVwok= +github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= github.com/ultraware/funlen v0.0.2/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= github.com/ultraware/whitespace v0.0.4/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= github.com/uudashr/gocognit v0.0.0-20190926065955-1655d0de0517/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM= @@ -269,9 +299,15 @@ github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk github.com/valyala/quicktemplate v1.2.0/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= +github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yujunz/go-getter v1.4.1-lite h1:FhvNc94AXMZkfqUwfMKhnQEC9phkphSGdPTL7tIdhOM= +github.com/yujunz/go-getter v1.4.1-lite/go.mod h1:sbmqxXjyLunH1PkF3n7zSlnVeMvmYUuIl9ZVs/7NyCc= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.starlark.net v0.0.0-20190528202925-30ae18b8564f/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg= +go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= @@ -290,6 +326,7 @@ golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTk golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -332,6 +369,8 @@ golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69 h1:rOhMmluY6kLMhdnrivzec6lLgaVbMHMn2ISQXJeJ5EM= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c h1:Vco5b+cuG5NNfORVxZy6bYZQ7rsigisU1WQFkvQ0L5E= +golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -387,6 +426,10 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2 h1:XZx7nhd5GMaZpmDaEHFVafUZC7ya0fuo7cSJ3UCKYmM= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= @@ -409,6 +452,8 @@ mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jC mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw= sigs.k8s.io/kustomize/api v0.3.1 h1:oqMIXvS6tFEUVuKIRUKDa05eC4Hh+cb9JYg8Zhp2d24= sigs.k8s.io/kustomize/api v0.3.1/go.mod h1:A+ATnlHqzictQfQC1q3KB/T6MSr0UWQsrrLxMWkge2E= +sigs.k8s.io/kustomize/kyaml v0.1.3 h1:zbeHVTMCQPtWgjIH/YYJZC45mm7coTdw2TblyJ79BrY= +sigs.k8s.io/kustomize/kyaml v0.1.3/go.mod h1:461i94nj0h0ylJ6w83jLkR4SqqVhn1iY6fjD0JSTQeE= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=