From a6e151d63a1509bbb6b3e019575ff79f1606da8f Mon Sep 17 00:00:00 2001 From: Michael Bridgen Date: Wed, 13 Jan 2021 16:46:14 +0000 Subject: [PATCH] Update to kyaml 0.10.5 This contains a number of fixes, in particular for an indentation bug that seems to have been introduced not long ago, and which would otherwise cause problems after updating controller-runtime (which brings a slightly less recent kyaml with it). This also comes with a nice enhancement: it's no longer necessary to use the global schema for kio setters, you can just build a schema and use that. No need to serialise access to the global schema. Yay! Signed-off-by: Michael Bridgen --- go.mod | 2 +- go.sum | 6 ++++++ pkg/update/setters.go | 29 +++++++++++------------------ 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/go.mod b/go.mod index 7191277..e1f41fb 100644 --- a/go.mod +++ b/go.mod @@ -25,5 +25,5 @@ require ( k8s.io/apimachinery v0.19.4 k8s.io/client-go v0.19.4 sigs.k8s.io/controller-runtime v0.6.4 - sigs.k8s.io/kustomize/kyaml v0.4.1 + sigs.k8s.io/kustomize/kyaml v0.10.5 ) diff --git a/go.sum b/go.sum index 0e6337f..e81f57e 100644 --- a/go.sum +++ b/go.sum @@ -440,6 +440,7 @@ github.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2 github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= github.com/gobuffalo/envy v1.7.1/go.mod h1:FurDp9+EDPE4aIUS3ZLyD+7/9fpx7YRt/ukY6jIHf0w= +github.com/gobuffalo/here v0.6.0/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM= github.com/gobuffalo/logger v1.0.1/go.mod h1:2zbswyIUa45I+c+FLXuWl9zSWEiVuthsk8ze5s8JvPs= github.com/gobuffalo/packd v0.3.0/go.mod h1:zC7QkmNkYVGKPw4tHpBQ+ml7W/3tIebgeo1b36chA3Q= github.com/gobuffalo/packr/v2 v2.7.1/go.mod h1:qYEvAazPaVxy7Y7KR0W8qYEE+RymX74kETFqjFoFlOc= @@ -694,6 +695,7 @@ github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU= +github.com/markbates/pkger v0.17.1/go.mod h1:0JoVlrol20BSywW79rN3kdFFsE5xYM+rSCQDXbLhiuI= github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -753,6 +755,8 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN 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/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= +github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mozilla/tls-observatory v0.0.0-20200317151703-4fa42e1c2dee/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= @@ -1578,6 +1582,8 @@ sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbL sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= sigs.k8s.io/kustomize/kyaml v0.4.1 h1:NEqA/35upoAjb+I5vh1ODUqxoX4DOrezeQa9BhhG5Co= sigs.k8s.io/kustomize/kyaml v0.4.1/go.mod h1:XJL84E6sOFeNrQ7CADiemc1B0EjIxHo3OhW4o1aJYNw= +sigs.k8s.io/kustomize/kyaml v0.10.5 h1:PbJcsZsEM7O3hHtUWTR+4WkHVbQRW9crSy75or1gRbI= +sigs.k8s.io/kustomize/kyaml v0.10.5/go.mod h1:P6Oy/ah/GZMKzJMIJA2a3/bc8YrBkuL5kJji13PSIzY= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06 h1:zD2IemQ4LmOcAumeiyDWXKUI2SO0NYDe3H6QGvPOVgU= sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= diff --git a/pkg/update/setters.go b/pkg/update/setters.go index a7eea97..cd92f60 100644 --- a/pkg/update/setters.go +++ b/pkg/update/setters.go @@ -18,7 +18,6 @@ package update import ( "fmt" - "sync" "github.com/go-openapi/spec" "github.com/google/go-containerregistry/pkg/name" @@ -39,16 +38,9 @@ const ( func init() { fieldmeta.SetShortHandRef(SetterShortHand) -} - -var ( - // used to serialise access to the global schema, which needs to - // be reset for each run - schemaMu = &sync.Mutex{} -) - -func resetSchema() { - openapi.ResetOpenAPI() + // this prevents the global schema, should it be initialised, from + // parsing all the Kubernetes openAPI definitions, which is not + // necessary. openapi.SuppressBuiltInSchemaUse() } @@ -122,6 +114,9 @@ func UpdateWithSetters(inpath, outpath string, policies []imagev1alpha1_reflect. defs[fieldmeta.SetterDefinitionPrefix+nameSetter] = setterSchema(nameSetter, name) } + var settersSchema spec.Schema + settersSchema.Definitions = defs + // get ready with the reader and writer reader := &ScreeningLocalReader{ Path: inpath, @@ -137,18 +132,16 @@ func UpdateWithSetters(inpath, outpath string, policies []imagev1alpha1_reflect. Filters: []kio.Filter{ setters2.SetAll( // run the enclosed single-node setters2.Filter on all nodes, // and only include those in files that changed in the output - &setters2.Set{SetAll: true}, // set all images that are in the constructed schema + &setters2.Set{ + SetAll: true, + SettersSchema: &settersSchema, + }, // set all images that are in the constructed schema ), }, } // go! - schemaMu.Lock() - resetSchema() - openapi.AddDefinitions(defs) - err := pipeline.Execute() - schemaMu.Unlock() - return err + return pipeline.Execute() } func setterSchema(name, value string) spec.Schema {