From d4ed285fd17dc595984f6840aff0f9aa725cec89 Mon Sep 17 00:00:00 2001 From: Thomas Rodgers Date: Fri, 26 Jun 2020 15:46:57 -0700 Subject: [PATCH] added count for creating setters --- kyaml/setters2/add.go | 4 +++ kyaml/setters2/settersutil/settercreator.go | 38 ++++++++++----------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/kyaml/setters2/add.go b/kyaml/setters2/add.go index bd8055a60..fa3c763bf 100644 --- a/kyaml/setters2/add.go +++ b/kyaml/setters2/add.go @@ -37,6 +37,9 @@ type Add struct { // Type is the type of the setter value Type string + + // Count is the number of fields the setter applies to + Count int } // Filter implements yaml.Filter @@ -104,6 +107,7 @@ func (a *Add) visitScalar(object *yaml.RNode, p string, _ *openapi.ResourceSchem if a.FieldValue != "" && a.FieldValue != object.YNode().Value { return nil } + a.Count++ return a.addRef(object) } diff --git a/kyaml/setters2/settersutil/settercreator.go b/kyaml/setters2/settersutil/settercreator.go index d6faea5a4..ba6d9cc67 100644 --- a/kyaml/setters2/settersutil/settercreator.go +++ b/kyaml/setters2/settersutil/settercreator.go @@ -6,6 +6,7 @@ package settersutil import ( "io/ioutil" + "sigs.k8s.io/kustomize/kyaml/errors" "sigs.k8s.io/kustomize/kyaml/fieldmeta" "sigs.k8s.io/kustomize/kyaml/kio" "sigs.k8s.io/kustomize/kyaml/openapi" @@ -18,10 +19,10 @@ type SetterCreator struct { // Name is the name of the setter to create or update. Name string - Description string - SetBy string + Description string + Type string SchemaPath string @@ -49,22 +50,6 @@ func (c SetterCreator) Create(openAPIPath, resourcesPath string) error { if err != nil { return err } - // Update the OpenAPI definitions to hace the setter - sd := setters2.SetterDefinition{ - Name: c.Name, Value: c.FieldValue, Description: c.Description, SetBy: c.SetBy, - Type: c.Type, Schema: schema, Required: c.Required, - } - if err := sd.AddToFile(openAPIPath); err != nil { - return err - } - if sd.Count == 0 { - fmt.Errorf("The setter you created does not match any fields.") - } - - // Load the updated definitions - if err := openapi.AddSchemaFromFile(openAPIPath); err != nil { - return err - } // Update the resources with the setter reference inout := &kio.LocalPackageReadWriter{PackagePath: resourcesPath} @@ -79,11 +64,26 @@ func (c SetterCreator) Create(openAPIPath, resourcesPath string) error { Filters: []kio.Filter{kio.FilterAll(a)}, Outputs: []kio.Writer{inout}, }.Execute() - + if a.Count == 0 { + return errors.Errorf("created setter doesn't match any fields") + } if err != nil { return err } + // Update the OpenAPI definitions to hace the setter + sd := setters2.SetterDefinition{ + Name: c.Name, Value: c.FieldValue, SetBy: c.SetBy, Description: c.Description, + Count: a.Count, Type: c.Type, Schema: schema, Required: c.Required, + } + if err := sd.AddToFile(openAPIPath); err != nil { + return err + } + + // Load the updated definitions + if err := openapi.AddSchemaFromFile(openAPIPath); err != nil { + return err + } // if the setter is of array type write the derived list values back to // openAPI definitions if len(a.ListValues) > 0 {