From e18b2f3a2eb0005f5f26c9e325b3b4fbd6d6fb00 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Mon, 13 Jun 2016 23:34:09 -0700 Subject: [PATCH 01/14] Revert Clayton's #26179 so I can recreate it His PR cam during the middle of this development cycle, and it was easier to burn it down and recreate it than try to patch it into an existing series and re-test every assumption. This behavior will be re-introduced in subsequent commits. --- cmd/libs/go2idl/args/args.go | 1 - .../deepcopy-gen/generators/deepcopy.go | 120 +++--------------- cmd/libs/go2idl/deepcopy-gen/main.go | 18 --- pkg/api/deep_copy_generated.go | 6 +- pkg/api/resource/generated.proto | 1 - pkg/api/resource/quantity.go | 1 - pkg/api/unversioned/deep_copy_generated.go | 3 +- pkg/api/v1/deep_copy_generated.go | 6 +- pkg/apis/extensions/deep_copy_generated.go | 6 +- .../extensions/v1beta1/deep_copy_generated.go | 6 +- pkg/runtime/generated.proto | 3 - pkg/runtime/types.go | 3 - pkg/util/intstr/generated.proto | 1 - pkg/util/intstr/intstr.go | 1 - 14 files changed, 42 insertions(+), 134 deletions(-) diff --git a/cmd/libs/go2idl/args/args.go b/cmd/libs/go2idl/args/args.go index fa1d8e57674..04b84225f84 100644 --- a/cmd/libs/go2idl/args/args.go +++ b/cmd/libs/go2idl/args/args.go @@ -105,7 +105,6 @@ func (g *GeneratorArgs) NewBuilder() (*parser.Builder, error) { b.AddBuildTags(g.GeneratedBuildTag) for _, d := range g.InputDirs { - d = strings.TrimLeft(d, "+-*") if g.Recursive { if err := b.AddDirRecursive(d); err != nil { return nil, fmt.Errorf("unable to add directory %q: %v", d, err) diff --git a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go index 3f11e8f49f3..4738dc9a153 100644 --- a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go +++ b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go @@ -19,7 +19,6 @@ package generators import ( "fmt" "io" - "path" "path/filepath" "strings" @@ -32,15 +31,6 @@ import ( "github.com/golang/glog" ) -// Constraints is a set of optional limitations on what deep copy will generate. -type Constraints struct { - // PackageConstraints is an optional set of package prefixes that constrain which types - // will have inline deep copy methods generated for. Any type outside of these packages - // (if specified) will not have a function generated and will result in a call to the - // cloner.DeepCopy method. - PackageConstraints []string -} - // TODO: This is created only to reduce number of changes in a single PR. // Remove it and use PublicNamer instead. func deepCopyNamer() *namer.NameStrategy { @@ -72,32 +62,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat glog.Fatalf("Failed loading boilerplate: %v", err) } - initInputs := sets.NewString() - explicitInputs := sets.NewString() - inputs := sets.NewString() - for _, s := range arguments.InputDirs { - switch { - case strings.HasPrefix(s, "+"): - // packages with '+' prefix get functions generated for everything except gencopy=false, but - // no init function - s = strings.TrimPrefix(s, "+") - inputs.Insert(s) - case strings.HasPrefix(s, "-"): - // packages with '-' prefix only get functions generated for those with gencopy=true - s = strings.TrimPrefix(s, "-") - inputs.Insert(s) - explicitInputs.Insert(s) - default: - inputs.Insert(s) - initInputs.Insert(s) - } - } - - var restrictRange []string - if c, ok := arguments.CustomArgs.(Constraints); ok { - restrictRange = c.PackageConstraints - } - + inputs := sets.NewString(arguments.InputDirs...) packages := generator.Packages{} header := append([]byte(fmt.Sprintf("// +build !%s\n\n", arguments.GeneratedBuildTag)), boilerplate...) header = append(header, []byte( @@ -108,31 +73,11 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat for _, p := range context.Universe { copyableType := false for _, t := range p.Types { - if copyableWithinPackage(t, explicitInputs.Has(t.Name.Package)) && inputs.Has(t.Name.Package) { + if copyableWithinPackage(t) && inputs.Has(t.Name.Package) { copyableType = true } } if copyableType { - // TODO: replace this with a more sophisticated algorithm that generates private copy methods - // (like auto_DeepCopy_...) for any type that is outside of the PackageConstraints. That would - // avoid having to make a reflection call. - canInlineTypeFn := func(c *generator.Context, t *types.Type) bool { - // types must be public structs or have a custom DeepCopy_ already defined - if publicCopyFunctionDefined(c, t) { - return true - } - if !copyableWithinPackage(t, explicitInputs.Has(t.Name.Package)) { - return false - } - // only packages within the restricted range can be inlined - for _, s := range restrictRange { - if strings.HasPrefix(t.Name.Package, s) { - return true - } - } - return false - } - path := p.Path packages = append(packages, &generator.DefaultPackage{ @@ -142,7 +87,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) { generators = []generator.Generator{} generators = append( - generators, NewGenDeepCopy("deep_copy_generated", path, initInputs.Has(path), explicitInputs.Has(path), canInlineTypeFn)) + generators, NewGenDeepCopy("deep_copy_generated", path, inputs.Has(path))) return generators }, FilterFunc: func(c *generator.Context, t *types.Type) bool { @@ -154,9 +99,6 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat return packages } -// CanInlineTypeFunc should return true if the provided type can be converted to a function call -type CanInlineTypeFunc func(*generator.Context, *types.Type) bool - const ( apiPackagePath = "k8s.io/kubernetes/pkg/api" conversionPackagePath = "k8s.io/kubernetes/pkg/conversion" @@ -165,30 +107,23 @@ const ( // genDeepCopy produces a file with autogenerated deep-copy functions. type genDeepCopy struct { generator.DefaultGen - - targetPackage string - imports namer.ImportTracker - typesForInit []*types.Type - generateInitFunc bool - requireExplicitTag bool - canInlineTypeFn CanInlineTypeFunc - - context *generator.Context + targetPackage string + imports namer.ImportTracker + typesForInit []*types.Type + generateInitFunc bool globalVariables map[string]interface{} } -func NewGenDeepCopy(sanitizedName, targetPackage string, generateInitFunc, requireExplicitTag bool, canInlineTypeFn CanInlineTypeFunc) generator.Generator { +func NewGenDeepCopy(sanitizedName, targetPackage string, generateInitFunc bool) generator.Generator { return &genDeepCopy{ DefaultGen: generator.DefaultGen{ OptionalName: sanitizedName, }, - targetPackage: targetPackage, - imports: generator.NewImportTracker(), - typesForInit: make([]*types.Type, 0), - generateInitFunc: generateInitFunc, - requireExplicitTag: requireExplicitTag, - canInlineTypeFn: canInlineTypeFn, + targetPackage: targetPackage, + imports: generator.NewImportTracker(), + typesForInit: make([]*types.Type, 0), + generateInitFunc: generateInitFunc, } } @@ -199,29 +134,15 @@ func (g *genDeepCopy) Namers(c *generator.Context) namer.NameSystems { func (g *genDeepCopy) Filter(c *generator.Context, t *types.Type) bool { // Filter out all types not copyable within the package. - copyable := copyableWithinPackage(t, g.requireExplicitTag) + copyable := copyableWithinPackage(t) if copyable { g.typesForInit = append(g.typesForInit, t) } return copyable } -// publicCopyFunctionDefined returns true if a DeepCopy function has already been defined in a given -// package, which allows more efficient deep copy implementations to be defined by the caller. -func publicCopyFunctionDefined(c *generator.Context, t *types.Type) bool { - p, ok := c.Universe[t.Name.Package] - if !ok { - return false - } - return p.Functions["DeepCopy_"+path.Base(t.Name.Package)+"_"+t.Name.Name] != nil -} - -func copyableWithinPackage(t *types.Type, explicitCopyRequired bool) bool { - tag := types.ExtractCommentTags("+", t.CommentLines)["gencopy"] - if tag == "false" { - return false - } - if explicitCopyRequired && tag != "true" { +func copyableWithinPackage(t *types.Type) bool { + if types.ExtractCommentTags("+", t.CommentLines)["gencopy"] == "false" { return false } // TODO: Consider generating functions for other kinds too. @@ -280,7 +201,6 @@ func (g *genDeepCopy) funcNameTmpl(t *types.Type) string { } func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error { - g.context = c cloner := c.Universe.Type(types.Name{Package: conversionPackagePath, Name: "Cloner"}) g.imports.AddType(cloner) g.globalVariables = map[string]interface{}{ @@ -366,7 +286,7 @@ func (g *genDeepCopy) doMap(t *types.Type, sw *generator.SnippetWriter) { sw.Do("}\n", nil) default: sw.Do("for key, val := range in {\n", nil) - if g.canInlineTypeFn(g.context, t.Elem) { + if copyableWithinPackage(t.Elem) { sw.Do("newVal := new($.|raw$)\n", t.Elem) funcName := g.funcNameTmpl(t.Elem) sw.Do(fmt.Sprintf("if err := %s(val, newVal, c); err != nil {\n", funcName), argsFromType(t.Elem)) @@ -398,7 +318,7 @@ func (g *genDeepCopy) doSlice(t *types.Type, sw *generator.SnippetWriter) { sw.Do("for i := range in {\n", nil) if t.Elem.IsAssignable() { sw.Do("(*out)[i] = in[i]\n", nil) - } else if g.canInlineTypeFn(g.context, t.Elem) { + } else if copyableWithinPackage(t.Elem) { funcName := g.funcNameTmpl(t.Elem) sw.Do(fmt.Sprintf("if err := %s(in[i], &(*out)[i], c); err != nil {\n", funcName), argsFromType(t.Elem)) sw.Do("return err\n", nil) @@ -437,7 +357,7 @@ func (g *genDeepCopy) doStruct(t *types.Type, sw *generator.SnippetWriter) { sw.Do("out.$.name$ = nil\n", args) sw.Do("}\n", nil) case types.Struct: - if g.canInlineTypeFn(g.context, t) { + if copyableWithinPackage(t) { funcName := g.funcNameTmpl(t) sw.Do(fmt.Sprintf("if err := %s(in.$.name$, &out.$.name$, c); err != nil {\n", funcName), args) sw.Do("return err\n", nil) @@ -468,9 +388,9 @@ func (g *genDeepCopy) doInterface(t *types.Type, sw *generator.SnippetWriter) { func (g *genDeepCopy) doPointer(t *types.Type, sw *generator.SnippetWriter) { sw.Do("*out = new($.Elem|raw$)\n", t) - if t.Elem.IsAssignable() { + if t.Elem.Kind == types.Builtin { sw.Do("**out = *in", nil) - } else if g.canInlineTypeFn(g.context, t.Elem) { + } else if copyableWithinPackage(t.Elem) { funcName := g.funcNameTmpl(t.Elem) sw.Do(fmt.Sprintf("if err := %s(*in, *out, c); err != nil {\n", funcName), argsFromType(t.Elem)) sw.Do("return err\n", nil) diff --git a/cmd/libs/go2idl/deepcopy-gen/main.go b/cmd/libs/go2idl/deepcopy-gen/main.go index 2b84f95fab9..13553a43c2c 100644 --- a/cmd/libs/go2idl/deepcopy-gen/main.go +++ b/cmd/libs/go2idl/deepcopy-gen/main.go @@ -31,26 +31,8 @@ import ( func main() { arguments := args.Default() - arguments.CustomArgs = generators.Constraints{ - // Types outside of this package will be inlined. - PackageConstraints: []string{"k8s.io/kubernetes/"}, - } - // Override defaults. These are Kubernetes specific input locations. arguments.InputDirs = []string{ - // generate all types, but do not register them - "+k8s.io/kubernetes/pkg/api/unversioned", - - "-k8s.io/kubernetes/pkg/api/meta", - "-k8s.io/kubernetes/pkg/api/meta/metatypes", - "-k8s.io/kubernetes/pkg/api/resource", - "-k8s.io/kubernetes/pkg/conversion", - "-k8s.io/kubernetes/pkg/labels", - "-k8s.io/kubernetes/pkg/runtime", - "-k8s.io/kubernetes/pkg/runtime/serializer", - "-k8s.io/kubernetes/pkg/util/intstr", - "-k8s.io/kubernetes/pkg/util/sets", - "k8s.io/kubernetes/pkg/api", "k8s.io/kubernetes/pkg/api/v1", "k8s.io/kubernetes/pkg/apis/authentication.k8s.io", diff --git a/pkg/api/deep_copy_generated.go b/pkg/api/deep_copy_generated.go index 3dc99344819..8b9042dfa7d 100644 --- a/pkg/api/deep_copy_generated.go +++ b/pkg/api/deep_copy_generated.go @@ -2498,7 +2498,11 @@ func DeepCopy_api_Preconditions(in Preconditions, out *Preconditions, c *convers if in.UID != nil { in, out := in.UID, &out.UID *out = new(types.UID) - **out = *in + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + **out = newVal.(types.UID) + } } else { out.UID = nil } diff --git a/pkg/api/resource/generated.proto b/pkg/api/resource/generated.proto index 4b7f453b10c..bdc091d98d4 100644 --- a/pkg/api/resource/generated.proto +++ b/pkg/api/resource/generated.proto @@ -83,7 +83,6 @@ option go_package = "resource"; // writing some sort of special handling code in the hopes that that will // cause implementors to also use a fixed point implementation. // -// +gencopy=false // +protobuf=true // +protobuf.embed=string // +protobuf.options.marshal=false diff --git a/pkg/api/resource/quantity.go b/pkg/api/resource/quantity.go index 067c96d40ad..55a5a3f7d25 100644 --- a/pkg/api/resource/quantity.go +++ b/pkg/api/resource/quantity.go @@ -87,7 +87,6 @@ import ( // writing some sort of special handling code in the hopes that that will // cause implementors to also use a fixed point implementation. // -// +gencopy=false // +protobuf=true // +protobuf.embed=string // +protobuf.options.marshal=false diff --git a/pkg/api/unversioned/deep_copy_generated.go b/pkg/api/unversioned/deep_copy_generated.go index a93a03c854a..b26c6579fe4 100644 --- a/pkg/api/unversioned/deep_copy_generated.go +++ b/pkg/api/unversioned/deep_copy_generated.go @@ -21,8 +21,9 @@ limitations under the License. package unversioned import ( - conversion "k8s.io/kubernetes/pkg/conversion" time "time" + + conversion "k8s.io/kubernetes/pkg/conversion" ) func DeepCopy_unversioned_APIGroup(in APIGroup, out *APIGroup, c *conversion.Cloner) error { diff --git a/pkg/api/v1/deep_copy_generated.go b/pkg/api/v1/deep_copy_generated.go index 9bf00219ae8..6ac0a0d2acd 100644 --- a/pkg/api/v1/deep_copy_generated.go +++ b/pkg/api/v1/deep_copy_generated.go @@ -2446,7 +2446,11 @@ func DeepCopy_v1_Preconditions(in Preconditions, out *Preconditions, c *conversi if in.UID != nil { in, out := in.UID, &out.UID *out = new(types.UID) - **out = *in + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + **out = newVal.(types.UID) + } } else { out.UID = nil } diff --git a/pkg/apis/extensions/deep_copy_generated.go b/pkg/apis/extensions/deep_copy_generated.go index 39f6ac10555..0e0e0c3e5af 100644 --- a/pkg/apis/extensions/deep_copy_generated.go +++ b/pkg/apis/extensions/deep_copy_generated.go @@ -576,7 +576,11 @@ func DeepCopy_extensions_NetworkPolicyPort(in NetworkPolicyPort, out *NetworkPol if in.Protocol != nil { in, out := in.Protocol, &out.Protocol *out = new(api.Protocol) - **out = *in + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + **out = newVal.(api.Protocol) + } } else { out.Protocol = nil } diff --git a/pkg/apis/extensions/v1beta1/deep_copy_generated.go b/pkg/apis/extensions/v1beta1/deep_copy_generated.go index d2a9727c442..0e30e6e23a7 100644 --- a/pkg/apis/extensions/v1beta1/deep_copy_generated.go +++ b/pkg/apis/extensions/v1beta1/deep_copy_generated.go @@ -888,7 +888,11 @@ func DeepCopy_v1beta1_NetworkPolicyPort(in NetworkPolicyPort, out *NetworkPolicy if in.Protocol != nil { in, out := in.Protocol, &out.Protocol *out = new(v1.Protocol) - **out = *in + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + **out = newVal.(v1.Protocol) + } } else { out.Protocol = nil } diff --git a/pkg/runtime/generated.proto b/pkg/runtime/generated.proto index ce55c88ec44..fdd803f89f0 100644 --- a/pkg/runtime/generated.proto +++ b/pkg/runtime/generated.proto @@ -69,7 +69,6 @@ option go_package = "runtime"; // in the Object. (TODO: In the case where the object is of an unknown type, a // runtime.Unknown object will be created and stored.) // -// +gencopy=true // +protobuf=true message RawExtension { // Raw is the underlying serialization of this object. @@ -89,7 +88,6 @@ message RawExtension { // TypeMeta is provided here for convenience. You may use it directly from this package or define // your own with the same fields. // -// +gencopy=true // +protobuf=true message TypeMeta { optional string apiVersion = 1; @@ -103,7 +101,6 @@ message TypeMeta { // TODO: Make this object have easy access to field based accessors and settors for // metadata and field mutatation. // -// +gencopy=true // +protobuf=true message Unknown { optional TypeMeta typeMeta = 1; diff --git a/pkg/runtime/types.go b/pkg/runtime/types.go index 3e810bc0547..7c9c93b2cf4 100644 --- a/pkg/runtime/types.go +++ b/pkg/runtime/types.go @@ -40,7 +40,6 @@ import ( // TypeMeta is provided here for convenience. You may use it directly from this package or define // your own with the same fields. // -// +gencopy=true // +protobuf=true type TypeMeta struct { APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" protobuf:"bytes,1,opt,name=apiVersion"` @@ -93,7 +92,6 @@ const ( // in the Object. (TODO: In the case where the object is of an unknown type, a // runtime.Unknown object will be created and stored.) // -// +gencopy=true // +protobuf=true type RawExtension struct { // Raw is the underlying serialization of this object. @@ -111,7 +109,6 @@ type RawExtension struct { // TODO: Make this object have easy access to field based accessors and settors for // metadata and field mutatation. // -// +gencopy=true // +protobuf=true type Unknown struct { TypeMeta `json:",inline" protobuf:"bytes,1,opt,name=typeMeta"` diff --git a/pkg/util/intstr/generated.proto b/pkg/util/intstr/generated.proto index b29579a0de9..dd508e1c8fa 100644 --- a/pkg/util/intstr/generated.proto +++ b/pkg/util/intstr/generated.proto @@ -30,7 +30,6 @@ option go_package = "intstr"; // accept a name or number. // TODO: Rename to Int32OrString // -// +gencopy=true // +protobuf=true // +protobuf.options.(gogoproto.goproto_stringer)=false message IntOrString { diff --git a/pkg/util/intstr/intstr.go b/pkg/util/intstr/intstr.go index c50d14fad50..59e7a066336 100644 --- a/pkg/util/intstr/intstr.go +++ b/pkg/util/intstr/intstr.go @@ -32,7 +32,6 @@ import ( // accept a name or number. // TODO: Rename to Int32OrString // -// +gencopy=true // +protobuf=true // +protobuf.options.(gogoproto.goproto_stringer)=false type IntOrString struct { From be481060eac4c4d2a7d96a41e39d56593aae0885 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Wed, 29 Jun 2016 02:00:55 -0700 Subject: [PATCH 02/14] Re-add constraints to deep-copy This re-institutes some of the rolled-back logic from previous commits. It bounds the scope of what the deepcopy generator is willing to do with regards to generating and calling generated functions. --- .../deepcopy-gen/generators/deepcopy.go | 56 ++++++++-- .../deepcopy-gen/generators/deepcopy_test.go | 102 ++++++++++++++++++ cmd/libs/go2idl/deepcopy-gen/main.go | 10 ++ hack/verify-flags/known-flags.txt | 1 + 4 files changed, 160 insertions(+), 9 deletions(-) create mode 100644 cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go diff --git a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go index 4738dc9a153..f3072e2a971 100644 --- a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go +++ b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go @@ -31,6 +31,12 @@ import ( "github.com/golang/glog" ) +// CustomArgs is used tby the go2idl framework to pass args specific to this +// generator. +type CustomArgs struct { + BoundingDirs []string // Only deal with types rooted under these dirs. +} + // TODO: This is created only to reduce number of changes in a single PR. // Remove it and use PublicNamer instead. func deepCopyNamer() *namer.NameStrategy { @@ -70,10 +76,20 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat // This file was autogenerated by deepcopy-gen. Do not edit it manually! `)...) + + boundingDirs := []string{} + if customArgs, ok := arguments.CustomArgs.(*CustomArgs); ok { + for i := range customArgs.BoundingDirs { + // Strip any trailing slashes - they are not exactly "correct" but + // this is friendlier. + boundingDirs = append(boundingDirs, strings.TrimRight(customArgs.BoundingDirs[i], "/")) + } + } + for _, p := range context.Universe { copyableType := false for _, t := range p.Types { - if copyableWithinPackage(t) && inputs.Has(t.Name.Package) { + if copyableWithinPackage(t, boundingDirs) && inputs.Has(t.Name.Package) { copyableType = true } } @@ -87,7 +103,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) { generators = []generator.Generator{} generators = append( - generators, NewGenDeepCopy("deep_copy_generated", path, inputs.Has(path))) + generators, NewGenDeepCopy("deep_copy_generated", path, boundingDirs, inputs.Has(path))) return generators }, FilterFunc: func(c *generator.Context, t *types.Type) bool { @@ -108,6 +124,7 @@ const ( type genDeepCopy struct { generator.DefaultGen targetPackage string + boundingDirs []string imports namer.ImportTracker typesForInit []*types.Type generateInitFunc bool @@ -115,12 +132,13 @@ type genDeepCopy struct { globalVariables map[string]interface{} } -func NewGenDeepCopy(sanitizedName, targetPackage string, generateInitFunc bool) generator.Generator { +func NewGenDeepCopy(sanitizedName, targetPackage string, boundingDirs []string, generateInitFunc bool) generator.Generator { return &genDeepCopy{ DefaultGen: generator.DefaultGen{ OptionalName: sanitizedName, }, targetPackage: targetPackage, + boundingDirs: boundingDirs, imports: generator.NewImportTracker(), typesForInit: make([]*types.Type, 0), generateInitFunc: generateInitFunc, @@ -134,17 +152,37 @@ func (g *genDeepCopy) Namers(c *generator.Context) namer.NameSystems { func (g *genDeepCopy) Filter(c *generator.Context, t *types.Type) bool { // Filter out all types not copyable within the package. - copyable := copyableWithinPackage(t) + copyable := g.copyableWithinPackage(t) if copyable { g.typesForInit = append(g.typesForInit, t) } return copyable } -func copyableWithinPackage(t *types.Type) bool { +func (g *genDeepCopy) copyableWithinPackage(t *types.Type) bool { + return copyableWithinPackage(t, g.boundingDirs) +} + +func isRootedUnder(pkg string, roots []string) bool { + // Add trailing / to avoid false matches, e.g. foo/bar vs foo/barn. This + // assumes that bounding dirs do not have trailing slashes. + pkg = pkg + "/" + for _, root := range roots { + if strings.HasPrefix(pkg, root+"/") { + return true + } + } + return false +} + +func copyableWithinPackage(t *types.Type, boundingDirs []string) bool { if types.ExtractCommentTags("+", t.CommentLines)["gencopy"] == "false" { return false } + // Only packages within the restricted range can be processed. + if !isRootedUnder(t.Name.Package, boundingDirs) { + return false + } // TODO: Consider generating functions for other kinds too. if t.Kind != types.Struct { return false @@ -286,7 +324,7 @@ func (g *genDeepCopy) doMap(t *types.Type, sw *generator.SnippetWriter) { sw.Do("}\n", nil) default: sw.Do("for key, val := range in {\n", nil) - if copyableWithinPackage(t.Elem) { + if g.copyableWithinPackage(t.Elem) { sw.Do("newVal := new($.|raw$)\n", t.Elem) funcName := g.funcNameTmpl(t.Elem) sw.Do(fmt.Sprintf("if err := %s(val, newVal, c); err != nil {\n", funcName), argsFromType(t.Elem)) @@ -318,7 +356,7 @@ func (g *genDeepCopy) doSlice(t *types.Type, sw *generator.SnippetWriter) { sw.Do("for i := range in {\n", nil) if t.Elem.IsAssignable() { sw.Do("(*out)[i] = in[i]\n", nil) - } else if copyableWithinPackage(t.Elem) { + } else if g.copyableWithinPackage(t.Elem) { funcName := g.funcNameTmpl(t.Elem) sw.Do(fmt.Sprintf("if err := %s(in[i], &(*out)[i], c); err != nil {\n", funcName), argsFromType(t.Elem)) sw.Do("return err\n", nil) @@ -357,7 +395,7 @@ func (g *genDeepCopy) doStruct(t *types.Type, sw *generator.SnippetWriter) { sw.Do("out.$.name$ = nil\n", args) sw.Do("}\n", nil) case types.Struct: - if copyableWithinPackage(t) { + if g.copyableWithinPackage(t) { funcName := g.funcNameTmpl(t) sw.Do(fmt.Sprintf("if err := %s(in.$.name$, &out.$.name$, c); err != nil {\n", funcName), args) sw.Do("return err\n", nil) @@ -390,7 +428,7 @@ func (g *genDeepCopy) doPointer(t *types.Type, sw *generator.SnippetWriter) { sw.Do("*out = new($.Elem|raw$)\n", t) if t.Elem.Kind == types.Builtin { sw.Do("**out = *in", nil) - } else if copyableWithinPackage(t.Elem) { + } else if g.copyableWithinPackage(t.Elem) { funcName := g.funcNameTmpl(t.Elem) sw.Do(fmt.Sprintf("if err := %s(*in, *out, c); err != nil {\n", funcName), argsFromType(t.Elem)) sw.Do("return err\n", nil) diff --git a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go new file mode 100644 index 00000000000..303c5e0da7c --- /dev/null +++ b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go @@ -0,0 +1,102 @@ +/* +Copyright 2016 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package generators + +import "testing" + +func Test_isRootedUnder(t *testing.T) { + testCases := []struct { + path string + roots []string + expect bool + }{ + { + path: "/foo/bar", + roots: nil, + expect: false, + }, + { + path: "/foo/bar", + roots: []string{}, + expect: false, + }, + { + path: "/foo/bar", + roots: []string{ + "/bad", + }, + expect: false, + }, + { + path: "/foo/bar", + roots: []string{ + "/foo", + }, + expect: true, + }, + { + path: "/foo/bar", + roots: []string{ + "/bad", + "/foo", + }, + expect: true, + }, + { + path: "/foo/bar/qux/zorb", + roots: []string{ + "/foo/bar/qux", + }, + expect: true, + }, + { + path: "/foo/bar", + roots: []string{ + "/foo/bar", + }, + expect: true, + }, + { + path: "/foo/barn", + roots: []string{ + "/foo/bar", + }, + expect: false, + }, + { + path: "/foo/bar", + roots: []string{ + "/foo/barn", + }, + expect: false, + }, + { + path: "/foo/bar", + roots: []string{ + "", + }, + expect: true, + }, + } + + for i, tc := range testCases { + r := isRootedUnder(tc.path, tc.roots) + if r != tc.expect { + t.Errorf("case[%d]: expected %t, got %t for %q in %q", i, tc.expect, r, tc.path, tc.roots) + } + } +} diff --git a/cmd/libs/go2idl/deepcopy-gen/main.go b/cmd/libs/go2idl/deepcopy-gen/main.go index 13553a43c2c..ae4b1d901f6 100644 --- a/cmd/libs/go2idl/deepcopy-gen/main.go +++ b/cmd/libs/go2idl/deepcopy-gen/main.go @@ -26,6 +26,7 @@ import ( "k8s.io/kubernetes/cmd/libs/go2idl/deepcopy-gen/generators" "github.com/golang/glog" + "github.com/spf13/pflag" ) func main() { @@ -60,6 +61,15 @@ func main() { "k8s.io/kubernetes/federation/apis/federation/v1beta1", } + // Custom args. + customArgs := &generators.CustomArgs{ + BoundingDirs: []string{"k8s.io/kubernetes"}, + } + pflag.CommandLine.StringSliceVar(&customArgs.BoundingDirs, "bounding-dirs", customArgs.BoundingDirs, + "Comma-separated list of import paths which bound the types for which deep-copies will be generated.") + arguments.CustomArgs = customArgs + + // Run it. if err := arguments.Execute( generators.NameSystems(), generators.DefaultNameSystem(), diff --git a/hack/verify-flags/known-flags.txt b/hack/verify-flags/known-flags.txt index 10e0a32a680..b6c02689b52 100644 --- a/hack/verify-flags/known-flags.txt +++ b/hack/verify-flags/known-flags.txt @@ -35,6 +35,7 @@ bench-workers bind-address bind-pods-burst bind-pods-qps +bounding-dirs build-only build-services build-tag From 57c319691472d62f1f2484b8e3b5728224cf3e92 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Wed, 29 Jun 2016 02:08:23 -0700 Subject: [PATCH 03/14] Add support for manually defined DeepCopy methods In bringing back Clayton's PR piece-by-piece this was almost as easy to implement as his version, and is much more like what I think we should be doing. Specifically, any time which defines a .DeepCopy() method will have that method called preferentially. Otherwise we generate our own functions for deep-copying. This affected exactly one type - resource.Quantity. In applying this heuristic, several places in the generated code were simplified. To achieve this I had to convert types.Type.Methods from a slice to a map, which seems correct anyway (to do by-name lookups). --- .../conversion-gen/generators/conversion.go | 21 +- .../deepcopy-gen/generators/deepcopy.go | 42 +- .../deepcopy-gen/generators/deepcopy_test.go | 167 ++++- cmd/libs/go2idl/parser/parse.go | 10 +- cmd/libs/go2idl/types/types.go | 31 +- cmd/libs/go2idl/types/types_test.go | 163 +++++ .../apis/federation/deep_copy_generated.go | 29 +- .../federation/v1beta1/deep_copy_generated.go | 29 +- pkg/api/deep_copy_generated.go | 674 +++++------------- pkg/api/resource/deep_copy.go | 32 - pkg/api/resource/quantity.go | 10 + pkg/api/unversioned/time.go | 7 + pkg/api/v1/deep_copy_generated.go | 668 +++++------------ pkg/apis/apps/deep_copy_generated.go | 12 +- pkg/apis/apps/v1alpha1/deep_copy_generated.go | 12 +- .../deep_copy_generated.go | 9 +- .../v1beta1/deep_copy_generated.go | 9 +- pkg/apis/authorization/deep_copy_generated.go | 41 +- .../v1beta1/deep_copy_generated.go | 41 +- pkg/apis/autoscaling/deep_copy_generated.go | 32 +- .../autoscaling/v1/deep_copy_generated.go | 32 +- pkg/apis/batch/deep_copy_generated.go | 52 +- pkg/apis/batch/v1/deep_copy_generated.go | 28 +- .../batch/v2alpha1/deep_copy_generated.go | 52 +- pkg/apis/certificates/deep_copy_generated.go | 17 +- .../v1alpha1/deep_copy_generated.go | 17 +- .../componentconfig/deep_copy_generated.go | 149 +--- .../v1alpha1/deep_copy_generated.go | 33 +- pkg/apis/extensions/deep_copy_generated.go | 203 ++---- .../extensions/v1beta1/deep_copy_generated.go | 259 ++----- pkg/apis/policy/deep_copy_generated.go | 21 +- .../policy/v1alpha1/deep_copy_generated.go | 21 +- pkg/apis/rbac/deep_copy_generated.go | 65 +- pkg/apis/rbac/v1alpha1/deep_copy_generated.go | 65 +- 34 files changed, 1057 insertions(+), 1996 deletions(-) delete mode 100644 pkg/api/resource/deep_copy.go diff --git a/cmd/libs/go2idl/conversion-gen/generators/conversion.go b/cmd/libs/go2idl/conversion-gen/generators/conversion.go index 2f6e79b6274..35dc1f3f37f 100644 --- a/cmd/libs/go2idl/conversion-gen/generators/conversion.go +++ b/cmd/libs/go2idl/conversion-gen/generators/conversion.go @@ -613,9 +613,9 @@ func (g *genConversion) doBuiltin(inType, outType *types.Type, sw *generator.Sni func (g *genConversion) doMap(inType, outType *types.Type, sw *generator.SnippetWriter) { sw.Do("*out = make($.|raw$, len(*in))\n", outType) - if outType.Key.IsAssignable() { + if isDirectlyAssignable(inType.Key, outType.Key) { sw.Do("for key, val := range *in {\n", nil) - if outType.Elem.IsAssignable() { + if isDirectlyAssignable(inType.Elem, outType.Elem) { if inType.Key == outType.Key { sw.Do("(*out)[key] = ", nil) } else { @@ -659,7 +659,7 @@ func (g *genConversion) doSlice(inType, outType *types.Type, sw *generator.Snipp sw.Do("copy(*out, *in)\n", nil) } else { sw.Do("for i := range *in {\n", nil) - if outType.Elem.IsAssignable() { + if isDirectlyAssignable(inType.Elem, outType.Elem) { if inType.Elem == outType.Elem { sw.Do("(*out)[i] = (*in)[i]\n", nil) } else { @@ -750,7 +750,7 @@ func (g *genConversion) doStruct(inType, outType *types.Type, sw *generator.Snip sw.Do("return err\n", nil) sw.Do("}\n", nil) case types.Alias: - if outT.IsAssignable() { + if isDirectlyAssignable(t, outT) { if t == outT { sw.Do("out.$.name$ = in.$.name$\n", args) } else { @@ -787,7 +787,7 @@ func (g *genConversion) isDirectlyAssignable(inType, outType *types.Type) bool { func (g *genConversion) doPointer(inType, outType *types.Type, sw *generator.SnippetWriter) { sw.Do("*out = new($.Elem|raw$)\n", outType) - if outType.Elem.IsAssignable() { + if isDirectlyAssignable(inType.Elem, outType.Elem) { if inType.Elem == outType.Elem { sw.Do("**out = **in\n", nil) } else { @@ -816,3 +816,14 @@ func (g *genConversion) doAlias(inType, outType *types.Type, sw *generator.Snipp func (g *genConversion) doUnknown(inType, outType *types.Type, sw *generator.SnippetWriter) { sw.Do("// FIXME: Type $.|raw$ is unsupported.\n", inType) } + +func isDirectlyAssignable(inType, outType *types.Type) bool { + // TODO: This should maybe check for actual assignability between the two + // types, rather than superficial traits that happen to indicate it is + // assignable in the ways we currently use this code. + return inType.IsAssignable() && (inType.IsPrimitive() || isSamePackage(inType, outType)) +} + +func isSamePackage(inType, outType *types.Type) bool { + return inType.Name.Package == outType.Name.Package +} diff --git a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go index f3072e2a971..8d35a8fe614 100644 --- a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go +++ b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go @@ -163,6 +163,29 @@ func (g *genDeepCopy) copyableWithinPackage(t *types.Type) bool { return copyableWithinPackage(t, g.boundingDirs) } +// hasDeepCopyMethod returns true if an appropriate DeepCopy() method is +// defined for the given type. This allows more efficient deep copy +// implementations to be defined by the type's author. The correct signature +// for a type T is: +// func (t T) DeepCopy() T +// or: +// func (t *T) DeepCopyt() T +func hasDeepCopyMethod(t *types.Type) bool { + for mn, mt := range t.Methods { + if mn != "DeepCopy" { + continue + } + if len(mt.Signature.Parameters) != 0 { + return false + } + if len(mt.Signature.Results) != 1 || mt.Signature.Results[0].Name != t.Name { + return false + } + return true + } + return false +} + func isRootedUnder(pkg string, roots []string) bool { // Add trailing / to avoid false matches, e.g. foo/bar vs foo/barn. This // assumes that bounding dirs do not have trailing slashes. @@ -176,6 +199,7 @@ func isRootedUnder(pkg string, roots []string) bool { } func copyableWithinPackage(t *types.Type, boundingDirs []string) bool { + // If the type opts out of copy-generation, stop. if types.ExtractCommentTags("+", t.CommentLines)["gencopy"] == "false" { return false } @@ -314,6 +338,10 @@ func (g *genDeepCopy) doMap(t *types.Type, sw *generator.SnippetWriter) { sw.Do("*out = make($.|raw$)\n", t) if t.Key.IsAssignable() { switch { + case hasDeepCopyMethod(t.Elem): + sw.Do("for key, val := range in {\n", nil) + sw.Do("(*out)[key] = val.DeepCopy()\n", nil) + sw.Do("}\n", nil) case t.Elem.IsAnonymousStruct(): sw.Do("for key := range in {\n", nil) sw.Do("(*out)[key] = struct{}{}\n", nil) @@ -354,7 +382,9 @@ func (g *genDeepCopy) doSlice(t *types.Type, sw *generator.SnippetWriter) { sw.Do("copy(*out, in)\n", nil) } else { sw.Do("for i := range in {\n", nil) - if t.Elem.IsAssignable() { + if hasDeepCopyMethod(t.Elem) { + sw.Do("(*out)[i] = in[i].DeepCopy()\n", nil) + } else if t.Elem.IsAssignable() { sw.Do("(*out)[i] = in[i]\n", nil) } else if g.copyableWithinPackage(t.Elem) { funcName := g.funcNameTmpl(t.Elem) @@ -395,7 +425,11 @@ func (g *genDeepCopy) doStruct(t *types.Type, sw *generator.SnippetWriter) { sw.Do("out.$.name$ = nil\n", args) sw.Do("}\n", nil) case types.Struct: - if g.copyableWithinPackage(t) { + if hasDeepCopyMethod(t) { + sw.Do("out.$.name$ = in.$.name$.DeepCopy()\n", args) + } else if t.IsAssignable() { + sw.Do("out.$.name$ = in.$.name$\n", args) + } else if g.copyableWithinPackage(t) { funcName := g.funcNameTmpl(t) sw.Do(fmt.Sprintf("if err := %s(in.$.name$, &out.$.name$, c); err != nil {\n", funcName), args) sw.Do("return err\n", nil) @@ -426,7 +460,9 @@ func (g *genDeepCopy) doInterface(t *types.Type, sw *generator.SnippetWriter) { func (g *genDeepCopy) doPointer(t *types.Type, sw *generator.SnippetWriter) { sw.Do("*out = new($.Elem|raw$)\n", t) - if t.Elem.Kind == types.Builtin { + if hasDeepCopyMethod(t.Elem) { + sw.Do("**out = in.DeepCopy()\n", nil) + } else if t.Elem.IsAssignable() { sw.Do("**out = *in", nil) } else if g.copyableWithinPackage(t.Elem) { funcName := g.funcNameTmpl(t.Elem) diff --git a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go index 303c5e0da7c..c9cf55354d8 100644 --- a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go +++ b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go @@ -16,7 +16,11 @@ limitations under the License. package generators -import "testing" +import ( + "testing" + + "k8s.io/kubernetes/cmd/libs/go2idl/types" +) func Test_isRootedUnder(t *testing.T) { testCases := []struct { @@ -100,3 +104,164 @@ func Test_isRootedUnder(t *testing.T) { } } } + +func Test_hasDeepCopyMethod(t *testing.T) { + testCases := []struct { + typ types.Type + expect bool + }{ + { + typ: types.Type{ + Name: types.Name{Package: "pkgname", Name: "typename"}, + Kind: types.Builtin, + // No DeepCopy method. + Methods: map[string]*types.Type{}, + }, + expect: false, + }, + { + typ: types.Type{ + Name: types.Name{Package: "pkgname", Name: "typename"}, + Kind: types.Builtin, + Methods: map[string]*types.Type{ + // No DeepCopy method. + "method": { + Name: types.Name{Package: "pkgname", Name: "func()"}, + Kind: types.Func, + Signature: &types.Signature{ + Parameters: []*types.Type{}, + Results: []*types.Type{}, + }, + }, + }, + }, + expect: false, + }, + { + typ: types.Type{ + Name: types.Name{Package: "pkgname", Name: "typename"}, + Kind: types.Builtin, + Methods: map[string]*types.Type{ + // Wrong signature (no result). + "DeepCopy": { + Name: types.Name{Package: "pkgname", Name: "func()"}, + Kind: types.Func, + Signature: &types.Signature{ + Parameters: []*types.Type{}, + Results: []*types.Type{}, + }, + }, + }, + }, + expect: false, + }, + { + typ: types.Type{ + Name: types.Name{Package: "pkgname", Name: "typename"}, + Kind: types.Builtin, + Methods: map[string]*types.Type{ + // Wrong signature (wrong result). + "DeepCopy": { + Name: types.Name{Package: "pkgname", Name: "func() int"}, + Kind: types.Func, + Signature: &types.Signature{ + Parameters: []*types.Type{}, + Results: []*types.Type{ + { + Name: types.Name{Name: "int"}, + Kind: types.Builtin, + }, + }, + }, + }, + }, + }, + expect: false, + }, + { + typ: types.Type{ + Name: types.Name{Package: "pkgname", Name: "typename"}, + Kind: types.Builtin, + Methods: map[string]*types.Type{ + // Correct signature. + "DeepCopy": { + Name: types.Name{Package: "pkgname", Name: "func() pkgname.typename"}, + Kind: types.Func, + Signature: &types.Signature{ + Parameters: []*types.Type{}, + Results: []*types.Type{ + { + Name: types.Name{Package: "pkgname", Name: "typename"}, + Kind: types.Builtin, + }, + }, + }, + }, + }, + }, + expect: true, + }, + { + typ: types.Type{ + Name: types.Name{Package: "pkgname", Name: "typename"}, + Kind: types.Builtin, + Methods: map[string]*types.Type{ + // Wrong signature (has params). + "DeepCopy": { + Name: types.Name{Package: "pkgname", Name: "func(int) pkgname.typename"}, + Kind: types.Func, + Signature: &types.Signature{ + Parameters: []*types.Type{ + { + Name: types.Name{Name: "int"}, + Kind: types.Builtin, + }, + }, + Results: []*types.Type{ + { + Name: types.Name{Package: "pkgname", Name: "typename"}, + Kind: types.Builtin, + }, + }, + }, + }, + }, + }, + expect: false, + }, + { + typ: types.Type{ + Name: types.Name{Package: "pkgname", Name: "typename"}, + Kind: types.Builtin, + Methods: map[string]*types.Type{ + // Wrong signature (extra results). + "DeepCopy": { + Name: types.Name{Package: "pkgname", Name: "func() (pkgname.typename, int)"}, + Kind: types.Func, + Signature: &types.Signature{ + Parameters: []*types.Type{}, + Results: []*types.Type{ + { + Name: types.Name{Package: "pkgname", Name: "typename"}, + Kind: types.Builtin, + }, + { + Name: types.Name{Name: "int"}, + Kind: types.Builtin, + }, + }, + }, + }, + }, + }, + expect: false, + }, + } + + for i, tc := range testCases { + r := hasDeepCopyMethod(&tc.typ) + if r != tc.expect { + t.Errorf("case[%d]: expected %t, got %t", i, tc.expect, r) + } + } +} diff --git a/cmd/libs/go2idl/parser/parse.go b/cmd/libs/go2idl/parser/parse.go index d18080ff008..7915d8c6852 100644 --- a/cmd/libs/go2idl/parser/parse.go +++ b/cmd/libs/go2idl/parser/parse.go @@ -570,7 +570,10 @@ func (b *Builder) walkType(u types.Universe, useName *types.Name, in tc.Type) *t out.Kind = types.Interface t.Complete() for i := 0; i < t.NumMethods(); i++ { - out.Methods = append(out.Methods, b.walkType(u, nil, t.Method(i).Type())) + if out.Methods == nil { + out.Methods = map[string]*types.Type{} + } + out.Methods[t.Method(i).Name()] = b.walkType(u, nil, t.Method(i).Type()) } return out case *tc.Named: @@ -599,7 +602,10 @@ func (b *Builder) walkType(u types.Universe, useName *types.Name, in tc.Type) *t // methods, add them. (Interface types will // have already added methods.) for i := 0; i < t.NumMethods(); i++ { - out.Methods = append(out.Methods, b.walkType(u, nil, t.Method(i).Type())) + if out.Methods == nil { + out.Methods = map[string]*types.Type{} + } + out.Methods[t.Method(i).Name()] = b.walkType(u, nil, t.Method(i).Type()) } } return out diff --git a/cmd/libs/go2idl/types/types.go b/cmd/libs/go2idl/types/types.go index 23693fdafaa..9e20e937e1e 100644 --- a/cmd/libs/go2idl/types/types.go +++ b/cmd/libs/go2idl/types/types.go @@ -267,10 +267,10 @@ type Type struct { // If Kind == DeclarationOf, this is the type of the declaration. Underlying *Type - // If Kind == Interface, this is the list of all required functions. + // If Kind == Interface, this is the set of all required functions. // Otherwise, if this is a named type, this is the list of methods that // type has. (All elements will have Kind=="Func") - Methods []*Type + Methods map[string]*Type // If Kind == func, this is the signature of the function. Signature *Signature @@ -285,9 +285,32 @@ func (t *Type) String() string { return t.Name.String() } -// IsAssignable returns whether the type is assignable. +// IsPrimitive returns whether the type is a built-in type or is an alias to a +// built-in type. For example: strings and aliases of strings are primitives, +// structs are not. +func (t *Type) IsPrimitive() bool { + if t.Kind == Builtin || (t.Kind == Alias && t.Underlying.Kind == Builtin) { + return true + } + return false +} + +// IsAssignable returns whether the type is deep-assignable. For example, +// slices and maps and pointers are shallow copies, but ints and strings are +// complete. func (t *Type) IsAssignable() bool { - return t.Kind == Builtin || (t.Kind == Alias && t.Underlying.Kind == Builtin) + if t.IsPrimitive() { + return true + } + if t.Kind == Struct { + for _, m := range t.Members { + if !m.Type.IsAssignable() { + return false + } + } + return true + } + return false } // IsAnonymousStruct returns true if the type is an anonymous struct or an alias diff --git a/cmd/libs/go2idl/types/types_test.go b/cmd/libs/go2idl/types/types_test.go index ff6b69cb313..35cc4d61d73 100644 --- a/cmd/libs/go2idl/types/types_test.go +++ b/cmd/libs/go2idl/types/types_test.go @@ -45,3 +45,166 @@ func TestGetMarker(t *testing.T) { t.Errorf("Expected marker type.") } } + +func Test_Type_IsPrimitive(t *testing.T) { + testCases := []struct { + typ Type + expect bool + }{ + { + typ: Type{ + Name: Name{Package: "pkgname", Name: "typename"}, + Kind: Builtin, + }, + expect: true, + }, + { + typ: Type{ + Name: Name{Package: "pkgname", Name: "typename"}, + Kind: Alias, + Underlying: &Type{ + Name: Name{Package: "pkgname", Name: "underlying"}, + Kind: Builtin, + }, + }, + expect: true, + }, + { + typ: Type{ + Name: Name{Package: "pkgname", Name: "typename"}, + Kind: Pointer, + Elem: &Type{ + Name: Name{Package: "pkgname", Name: "pointee"}, + Kind: Builtin, + }, + }, + expect: false, + }, + { + typ: Type{ + Name: Name{Package: "pkgname", Name: "typename"}, + Kind: Struct, + }, + expect: false, + }, + } + + for i, tc := range testCases { + r := tc.typ.IsPrimitive() + if r != tc.expect { + t.Errorf("case[%d]: expected %t, got %t", i, tc.expect, r) + } + } +} + +func Test_Type_IsAssignable(t *testing.T) { + testCases := []struct { + typ Type + expect bool + }{ + { + typ: Type{ + Name: Name{Package: "pkgname", Name: "typename"}, + Kind: Builtin, + }, + expect: true, + }, + { + typ: Type{ + Name: Name{Package: "pkgname", Name: "typename"}, + Kind: Alias, + Underlying: &Type{ + Name: Name{Package: "pkgname", Name: "underlying"}, + Kind: Builtin, + }, + }, + expect: true, + }, + { + typ: Type{ + Name: Name{Package: "pkgname", Name: "typename"}, + Kind: Pointer, + Elem: &Type{ + Name: Name{Package: "pkgname", Name: "pointee"}, + Kind: Builtin, + }, + }, + expect: false, + }, + { + typ: Type{ + Name: Name{Package: "pkgname", Name: "typename"}, + Kind: Struct, // Empty struct + }, + expect: true, + }, + { + typ: Type{ + Name: Name{Package: "pkgname", Name: "typename"}, + Kind: Struct, + Members: []Member{ + { + Name: "m1", + Type: &Type{ + Name: Name{Package: "pkgname", Name: "typename"}, + Kind: Builtin, + }, + }, + { + Name: "m2", + Type: &Type{ + Name: Name{Package: "pkgname", Name: "typename"}, + Kind: Alias, + Underlying: &Type{ + Name: Name{Package: "pkgname", Name: "underlying"}, + Kind: Builtin, + }, + }, + }, + { + Name: "m3", + Type: &Type{ + Name: Name{Package: "pkgname", Name: "typename"}, + Kind: Struct, // Empty struct + }, + }, + }, + }, + expect: true, + }, + { + typ: Type{ + Name: Name{Package: "pkgname", Name: "typename"}, + Kind: Struct, + Members: []Member{ + { + Name: "m1", + Type: &Type{ + Name: Name{Package: "pkgname", Name: "typename"}, + Kind: Builtin, + }, + }, + { + Name: "m2", + Type: &Type{ + Name: Name{Package: "pkgname", Name: "typename"}, + Kind: Pointer, + Elem: &Type{ + Name: Name{Package: "pkgname", Name: "pointee"}, + Kind: Builtin, + }, + }, + }, + }, + }, + expect: false, + }, + } + + for i, tc := range testCases { + r := tc.typ.IsAssignable() + if r != tc.expect { + t.Errorf("case[%d]: expected %t, got %t", i, tc.expect, r) + } + } +} diff --git a/federation/apis/federation/deep_copy_generated.go b/federation/apis/federation/deep_copy_generated.go index 79c11308401..455839d8a52 100644 --- a/federation/apis/federation/deep_copy_generated.go +++ b/federation/apis/federation/deep_copy_generated.go @@ -22,7 +22,6 @@ package federation import ( api "k8s.io/kubernetes/pkg/api" - unversioned "k8s.io/kubernetes/pkg/api/unversioned" conversion "k8s.io/kubernetes/pkg/conversion" ) @@ -41,9 +40,7 @@ func init() { } func DeepCopy_federation_Cluster(in Cluster, out *Cluster, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -59,24 +56,16 @@ func DeepCopy_federation_Cluster(in Cluster, out *Cluster, c *conversion.Cloner) func DeepCopy_federation_ClusterCondition(in ClusterCondition, out *ClusterCondition, c *conversion.Cloner) error { out.Type = in.Type out.Status = in.Status - if err := unversioned.DeepCopy_unversioned_Time(in.LastProbeTime, &out.LastProbeTime, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.LastTransitionTime, &out.LastTransitionTime, c); err != nil { - return err - } + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() out.Reason = in.Reason out.Message = in.Message return nil } func DeepCopy_federation_ClusterList(in ClusterList, out *ClusterList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Cluster, len(in)) @@ -96,9 +85,7 @@ func DeepCopy_federation_ClusterSpec(in ClusterSpec, out *ClusterSpec, c *conver in, out := in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs *out = make([]ServerAddressByClientCIDR, len(in)) for i := range in { - if err := DeepCopy_federation_ServerAddressByClientCIDR(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.ServerAddressByClientCIDRs = nil @@ -106,9 +93,7 @@ func DeepCopy_federation_ClusterSpec(in ClusterSpec, out *ClusterSpec, c *conver if in.SecretRef != nil { in, out := in.SecretRef, &out.SecretRef *out = new(api.LocalObjectReference) - if err := api.DeepCopy_api_LocalObjectReference(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SecretRef = nil } diff --git a/federation/apis/federation/v1beta1/deep_copy_generated.go b/federation/apis/federation/v1beta1/deep_copy_generated.go index ccbed1c4ee8..2fd58fa4c61 100644 --- a/federation/apis/federation/v1beta1/deep_copy_generated.go +++ b/federation/apis/federation/v1beta1/deep_copy_generated.go @@ -22,7 +22,6 @@ package v1beta1 import ( api "k8s.io/kubernetes/pkg/api" - unversioned "k8s.io/kubernetes/pkg/api/unversioned" v1 "k8s.io/kubernetes/pkg/api/v1" conversion "k8s.io/kubernetes/pkg/conversion" ) @@ -42,9 +41,7 @@ func init() { } func DeepCopy_v1beta1_Cluster(in Cluster, out *Cluster, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -60,24 +57,16 @@ func DeepCopy_v1beta1_Cluster(in Cluster, out *Cluster, c *conversion.Cloner) er func DeepCopy_v1beta1_ClusterCondition(in ClusterCondition, out *ClusterCondition, c *conversion.Cloner) error { out.Type = in.Type out.Status = in.Status - if err := unversioned.DeepCopy_unversioned_Time(in.LastProbeTime, &out.LastProbeTime, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.LastTransitionTime, &out.LastTransitionTime, c); err != nil { - return err - } + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() out.Reason = in.Reason out.Message = in.Message return nil } func DeepCopy_v1beta1_ClusterList(in ClusterList, out *ClusterList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Cluster, len(in)) @@ -97,9 +86,7 @@ func DeepCopy_v1beta1_ClusterSpec(in ClusterSpec, out *ClusterSpec, c *conversio in, out := in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs *out = make([]ServerAddressByClientCIDR, len(in)) for i := range in { - if err := DeepCopy_v1beta1_ServerAddressByClientCIDR(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.ServerAddressByClientCIDRs = nil @@ -107,9 +94,7 @@ func DeepCopy_v1beta1_ClusterSpec(in ClusterSpec, out *ClusterSpec, c *conversio if in.SecretRef != nil { in, out := in.SecretRef, &out.SecretRef *out = new(v1.LocalObjectReference) - if err := v1.DeepCopy_v1_LocalObjectReference(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SecretRef = nil } diff --git a/pkg/api/deep_copy_generated.go b/pkg/api/deep_copy_generated.go index 8b9042dfa7d..340f3656138 100644 --- a/pkg/api/deep_copy_generated.go +++ b/pkg/api/deep_copy_generated.go @@ -21,14 +21,12 @@ limitations under the License. package api import ( - resource "k8s.io/kubernetes/pkg/api/resource" unversioned "k8s.io/kubernetes/pkg/api/unversioned" conversion "k8s.io/kubernetes/pkg/conversion" fields "k8s.io/kubernetes/pkg/fields" labels "k8s.io/kubernetes/pkg/labels" runtime "k8s.io/kubernetes/pkg/runtime" types "k8s.io/kubernetes/pkg/types" - intstr "k8s.io/kubernetes/pkg/util/intstr" ) func init() { @@ -243,15 +241,11 @@ func DeepCopy_api_AzureFileVolumeSource(in AzureFileVolumeSource, out *AzureFile } func DeepCopy_api_Binding(in Binding, out *Binding, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } - if err := DeepCopy_api_ObjectReference(in.Target, &out.Target, c); err != nil { - return err - } + out.Target = in.Target return nil } @@ -291,9 +285,7 @@ func DeepCopy_api_CephFSVolumeSource(in CephFSVolumeSource, out *CephFSVolumeSou if in.SecretRef != nil { in, out := in.SecretRef, &out.SecretRef *out = new(LocalObjectReference) - if err := DeepCopy_api_LocalObjectReference(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SecretRef = nil } @@ -317,9 +309,7 @@ func DeepCopy_api_ComponentCondition(in ComponentCondition, out *ComponentCondit } func DeepCopy_api_ComponentStatus(in ComponentStatus, out *ComponentStatus, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -327,9 +317,7 @@ func DeepCopy_api_ComponentStatus(in ComponentStatus, out *ComponentStatus, c *c in, out := in.Conditions, &out.Conditions *out = make([]ComponentCondition, len(in)) for i := range in { - if err := DeepCopy_api_ComponentCondition(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Conditions = nil @@ -338,12 +326,8 @@ func DeepCopy_api_ComponentStatus(in ComponentStatus, out *ComponentStatus, c *c } func DeepCopy_api_ComponentStatusList(in ComponentStatusList, out *ComponentStatusList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ComponentStatus, len(in)) @@ -359,9 +343,7 @@ func DeepCopy_api_ComponentStatusList(in ComponentStatusList, out *ComponentStat } func DeepCopy_api_ConfigMap(in ConfigMap, out *ConfigMap, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -378,20 +360,14 @@ func DeepCopy_api_ConfigMap(in ConfigMap, out *ConfigMap, c *conversion.Cloner) } func DeepCopy_api_ConfigMapKeySelector(in ConfigMapKeySelector, out *ConfigMapKeySelector, c *conversion.Cloner) error { - if err := DeepCopy_api_LocalObjectReference(in.LocalObjectReference, &out.LocalObjectReference, c); err != nil { - return err - } + out.LocalObjectReference = in.LocalObjectReference out.Key = in.Key return nil } func DeepCopy_api_ConfigMapList(in ConfigMapList, out *ConfigMapList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ConfigMap, len(in)) @@ -407,16 +383,12 @@ func DeepCopy_api_ConfigMapList(in ConfigMapList, out *ConfigMapList, c *convers } func DeepCopy_api_ConfigMapVolumeSource(in ConfigMapVolumeSource, out *ConfigMapVolumeSource, c *conversion.Cloner) error { - if err := DeepCopy_api_LocalObjectReference(in.LocalObjectReference, &out.LocalObjectReference, c); err != nil { - return err - } + out.LocalObjectReference = in.LocalObjectReference if in.Items != nil { in, out := in.Items, &out.Items *out = make([]KeyToPath, len(in)) for i := range in { - if err := DeepCopy_api_KeyToPath(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Items = nil @@ -446,9 +418,7 @@ func DeepCopy_api_Container(in Container, out *Container, c *conversion.Cloner) in, out := in.Ports, &out.Ports *out = make([]ContainerPort, len(in)) for i := range in { - if err := DeepCopy_api_ContainerPort(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Ports = nil @@ -471,9 +441,7 @@ func DeepCopy_api_Container(in Container, out *Container, c *conversion.Cloner) in, out := in.VolumeMounts, &out.VolumeMounts *out = make([]VolumeMount, len(in)) for i := range in { - if err := DeepCopy_api_VolumeMount(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.VolumeMounts = nil @@ -547,9 +515,7 @@ func DeepCopy_api_ContainerState(in ContainerState, out *ContainerState, c *conv if in.Waiting != nil { in, out := in.Waiting, &out.Waiting *out = new(ContainerStateWaiting) - if err := DeepCopy_api_ContainerStateWaiting(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Waiting = nil } @@ -575,9 +541,7 @@ func DeepCopy_api_ContainerState(in ContainerState, out *ContainerState, c *conv } func DeepCopy_api_ContainerStateRunning(in ContainerStateRunning, out *ContainerStateRunning, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_Time(in.StartedAt, &out.StartedAt, c); err != nil { - return err - } + out.StartedAt = in.StartedAt.DeepCopy() return nil } @@ -586,12 +550,8 @@ func DeepCopy_api_ContainerStateTerminated(in ContainerStateTerminated, out *Con out.Signal = in.Signal out.Reason = in.Reason out.Message = in.Message - if err := unversioned.DeepCopy_unversioned_Time(in.StartedAt, &out.StartedAt, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.FinishedAt, &out.FinishedAt, c); err != nil { - return err - } + out.StartedAt = in.StartedAt.DeepCopy() + out.FinishedAt = in.FinishedAt.DeepCopy() out.ContainerID = in.ContainerID return nil } @@ -643,9 +603,7 @@ func DeepCopy_api_DaemonEndpoint(in DaemonEndpoint, out *DaemonEndpoint, c *conv } func DeepCopy_api_DeleteOptions(in DeleteOptions, out *DeleteOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if in.GracePeriodSeconds != nil { in, out := in.GracePeriodSeconds, &out.GracePeriodSeconds *out = new(int64) @@ -677,9 +635,7 @@ func DeepCopy_api_DownwardAPIVolumeFile(in DownwardAPIVolumeFile, out *DownwardA if in.FieldRef != nil { in, out := in.FieldRef, &out.FieldRef *out = new(ObjectFieldSelector) - if err := DeepCopy_api_ObjectFieldSelector(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.FieldRef = nil } @@ -721,9 +677,7 @@ func DeepCopy_api_EndpointAddress(in EndpointAddress, out *EndpointAddress, c *c if in.TargetRef != nil { in, out := in.TargetRef, &out.TargetRef *out = new(ObjectReference) - if err := DeepCopy_api_ObjectReference(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.TargetRef = nil } @@ -764,9 +718,7 @@ func DeepCopy_api_EndpointSubset(in EndpointSubset, out *EndpointSubset, c *conv in, out := in.Ports, &out.Ports *out = make([]EndpointPort, len(in)) for i := range in { - if err := DeepCopy_api_EndpointPort(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Ports = nil @@ -775,9 +727,7 @@ func DeepCopy_api_EndpointSubset(in EndpointSubset, out *EndpointSubset, c *conv } func DeepCopy_api_Endpoints(in Endpoints, out *Endpoints, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -796,12 +746,8 @@ func DeepCopy_api_Endpoints(in Endpoints, out *Endpoints, c *conversion.Cloner) } func DeepCopy_api_EndpointsList(in EndpointsList, out *EndpointsList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Endpoints, len(in)) @@ -835,9 +781,7 @@ func DeepCopy_api_EnvVarSource(in EnvVarSource, out *EnvVarSource, c *conversion if in.FieldRef != nil { in, out := in.FieldRef, &out.FieldRef *out = new(ObjectFieldSelector) - if err := DeepCopy_api_ObjectFieldSelector(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.FieldRef = nil } @@ -853,18 +797,14 @@ func DeepCopy_api_EnvVarSource(in EnvVarSource, out *EnvVarSource, c *conversion if in.ConfigMapKeyRef != nil { in, out := in.ConfigMapKeyRef, &out.ConfigMapKeyRef *out = new(ConfigMapKeySelector) - if err := DeepCopy_api_ConfigMapKeySelector(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.ConfigMapKeyRef = nil } if in.SecretKeyRef != nil { in, out := in.SecretKeyRef, &out.SecretKeyRef *out = new(SecretKeySelector) - if err := DeepCopy_api_SecretKeySelector(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SecretKeyRef = nil } @@ -872,38 +812,24 @@ func DeepCopy_api_EnvVarSource(in EnvVarSource, out *EnvVarSource, c *conversion } func DeepCopy_api_Event(in Event, out *Event, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } - if err := DeepCopy_api_ObjectReference(in.InvolvedObject, &out.InvolvedObject, c); err != nil { - return err - } + out.InvolvedObject = in.InvolvedObject out.Reason = in.Reason out.Message = in.Message - if err := DeepCopy_api_EventSource(in.Source, &out.Source, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.FirstTimestamp, &out.FirstTimestamp, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.LastTimestamp, &out.LastTimestamp, c); err != nil { - return err - } + out.Source = in.Source + out.FirstTimestamp = in.FirstTimestamp.DeepCopy() + out.LastTimestamp = in.LastTimestamp.DeepCopy() out.Count = in.Count out.Type = in.Type return nil } func DeepCopy_api_EventList(in EventList, out *EventList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Event, len(in)) @@ -936,9 +862,7 @@ func DeepCopy_api_ExecAction(in ExecAction, out *ExecAction, c *conversion.Clone } func DeepCopy_api_ExportOptions(in ExportOptions, out *ExportOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Export = in.Export out.Exact = in.Exact return nil @@ -970,9 +894,7 @@ func DeepCopy_api_FlexVolumeSource(in FlexVolumeSource, out *FlexVolumeSource, c if in.SecretRef != nil { in, out := in.SecretRef, &out.SecretRef *out = new(LocalObjectReference) - if err := DeepCopy_api_LocalObjectReference(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SecretRef = nil } @@ -1018,18 +940,14 @@ func DeepCopy_api_GlusterfsVolumeSource(in GlusterfsVolumeSource, out *Glusterfs func DeepCopy_api_HTTPGetAction(in HTTPGetAction, out *HTTPGetAction, c *conversion.Cloner) error { out.Path = in.Path - if err := intstr.DeepCopy_intstr_IntOrString(in.Port, &out.Port, c); err != nil { - return err - } + out.Port = in.Port out.Host = in.Host out.Scheme = in.Scheme if in.HTTPHeaders != nil { in, out := in.HTTPHeaders, &out.HTTPHeaders *out = make([]HTTPHeader, len(in)) for i := range in { - if err := DeepCopy_api_HTTPHeader(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.HTTPHeaders = nil @@ -1065,9 +983,7 @@ func DeepCopy_api_Handler(in Handler, out *Handler, c *conversion.Cloner) error if in.TCPSocket != nil { in, out := in.TCPSocket, &out.TCPSocket *out = new(TCPSocketAction) - if err := DeepCopy_api_TCPSocketAction(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.TCPSocket = nil } @@ -1118,9 +1034,7 @@ func DeepCopy_api_Lifecycle(in Lifecycle, out *Lifecycle, c *conversion.Cloner) } func DeepCopy_api_LimitRange(in LimitRange, out *LimitRange, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -1136,11 +1050,7 @@ func DeepCopy_api_LimitRangeItem(in LimitRangeItem, out *LimitRangeItem, c *conv in, out := in.Max, &out.Max *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Max = nil @@ -1149,11 +1059,7 @@ func DeepCopy_api_LimitRangeItem(in LimitRangeItem, out *LimitRangeItem, c *conv in, out := in.Min, &out.Min *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Min = nil @@ -1162,11 +1068,7 @@ func DeepCopy_api_LimitRangeItem(in LimitRangeItem, out *LimitRangeItem, c *conv in, out := in.Default, &out.Default *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Default = nil @@ -1175,11 +1077,7 @@ func DeepCopy_api_LimitRangeItem(in LimitRangeItem, out *LimitRangeItem, c *conv in, out := in.DefaultRequest, &out.DefaultRequest *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.DefaultRequest = nil @@ -1188,11 +1086,7 @@ func DeepCopy_api_LimitRangeItem(in LimitRangeItem, out *LimitRangeItem, c *conv in, out := in.MaxLimitRequestRatio, &out.MaxLimitRequestRatio *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.MaxLimitRequestRatio = nil @@ -1201,12 +1095,8 @@ func DeepCopy_api_LimitRangeItem(in LimitRangeItem, out *LimitRangeItem, c *conv } func DeepCopy_api_LimitRangeList(in LimitRangeList, out *LimitRangeList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]LimitRange, len(in)) @@ -1237,12 +1127,8 @@ func DeepCopy_api_LimitRangeSpec(in LimitRangeSpec, out *LimitRangeSpec, c *conv } func DeepCopy_api_List(in List, out *List, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]runtime.Object, len(in)) @@ -1260,9 +1146,7 @@ func DeepCopy_api_List(in List, out *List, c *conversion.Cloner) error { } func DeepCopy_api_ListOptions(in ListOptions, out *ListOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if in.LabelSelector == nil { out.LabelSelector = nil } else if newVal, err := c.DeepCopy(in.LabelSelector); err != nil { @@ -1300,9 +1184,7 @@ func DeepCopy_api_LoadBalancerStatus(in LoadBalancerStatus, out *LoadBalancerSta in, out := in.Ingress, &out.Ingress *out = make([]LoadBalancerIngress, len(in)) for i := range in { - if err := DeepCopy_api_LoadBalancerIngress(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Ingress = nil @@ -1323,28 +1205,20 @@ func DeepCopy_api_NFSVolumeSource(in NFSVolumeSource, out *NFSVolumeSource, c *c } func DeepCopy_api_Namespace(in Namespace, out *Namespace, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } if err := DeepCopy_api_NamespaceSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_api_NamespaceStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } func DeepCopy_api_NamespaceList(in NamespaceList, out *NamespaceList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Namespace, len(in)) @@ -1378,15 +1252,11 @@ func DeepCopy_api_NamespaceStatus(in NamespaceStatus, out *NamespaceStatus, c *c } func DeepCopy_api_Node(in Node, out *Node, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } - if err := DeepCopy_api_NodeSpec(in.Spec, &out.Spec, c); err != nil { - return err - } + out.Spec = in.Spec if err := DeepCopy_api_NodeStatus(in.Status, &out.Status, c); err != nil { return err } @@ -1426,31 +1296,21 @@ func DeepCopy_api_NodeAffinity(in NodeAffinity, out *NodeAffinity, c *conversion func DeepCopy_api_NodeCondition(in NodeCondition, out *NodeCondition, c *conversion.Cloner) error { out.Type = in.Type out.Status = in.Status - if err := unversioned.DeepCopy_unversioned_Time(in.LastHeartbeatTime, &out.LastHeartbeatTime, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.LastTransitionTime, &out.LastTransitionTime, c); err != nil { - return err - } + out.LastHeartbeatTime = in.LastHeartbeatTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() out.Reason = in.Reason out.Message = in.Message return nil } func DeepCopy_api_NodeDaemonEndpoints(in NodeDaemonEndpoints, out *NodeDaemonEndpoints, c *conversion.Cloner) error { - if err := DeepCopy_api_DaemonEndpoint(in.KubeletEndpoint, &out.KubeletEndpoint, c); err != nil { - return err - } + out.KubeletEndpoint = in.KubeletEndpoint return nil } func DeepCopy_api_NodeList(in NodeList, out *NodeList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Node, len(in)) @@ -1466,9 +1326,7 @@ func DeepCopy_api_NodeList(in NodeList, out *NodeList, c *conversion.Cloner) err } func DeepCopy_api_NodeProxyOptions(in NodeProxyOptions, out *NodeProxyOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Path = in.Path return nil } @@ -1478,11 +1336,7 @@ func DeepCopy_api_NodeResources(in NodeResources, out *NodeResources, c *convers in, out := in.Capacity, &out.Capacity *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Capacity = nil @@ -1546,11 +1400,7 @@ func DeepCopy_api_NodeStatus(in NodeStatus, out *NodeStatus, c *conversion.Clone in, out := in.Capacity, &out.Capacity *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Capacity = nil @@ -1559,11 +1409,7 @@ func DeepCopy_api_NodeStatus(in NodeStatus, out *NodeStatus, c *conversion.Clone in, out := in.Allocatable, &out.Allocatable *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Allocatable = nil @@ -1584,19 +1430,13 @@ func DeepCopy_api_NodeStatus(in NodeStatus, out *NodeStatus, c *conversion.Clone in, out := in.Addresses, &out.Addresses *out = make([]NodeAddress, len(in)) for i := range in { - if err := DeepCopy_api_NodeAddress(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Addresses = nil } - if err := DeepCopy_api_NodeDaemonEndpoints(in.DaemonEndpoints, &out.DaemonEndpoints, c); err != nil { - return err - } - if err := DeepCopy_api_NodeSystemInfo(in.NodeInfo, &out.NodeInfo, c); err != nil { - return err - } + out.DaemonEndpoints = in.DaemonEndpoints + out.NodeInfo = in.NodeInfo if in.Images != nil { in, out := in.Images, &out.Images *out = make([]ContainerImage, len(in)) @@ -1621,9 +1461,7 @@ func DeepCopy_api_NodeStatus(in NodeStatus, out *NodeStatus, c *conversion.Clone in, out := in.VolumesAttached, &out.VolumesAttached *out = make([]AttachedVolume, len(in)) for i := range in { - if err := DeepCopy_api_AttachedVolume(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.VolumesAttached = nil @@ -1659,15 +1497,11 @@ func DeepCopy_api_ObjectMeta(in ObjectMeta, out *ObjectMeta, c *conversion.Clone out.UID = in.UID out.ResourceVersion = in.ResourceVersion out.Generation = in.Generation - if err := unversioned.DeepCopy_unversioned_Time(in.CreationTimestamp, &out.CreationTimestamp, c); err != nil { - return err - } + out.CreationTimestamp = in.CreationTimestamp.DeepCopy() if in.DeletionTimestamp != nil { in, out := in.DeletionTimestamp, &out.DeletionTimestamp *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.DeletionTimestamp = nil } @@ -1744,25 +1578,19 @@ func DeepCopy_api_OwnerReference(in OwnerReference, out *OwnerReference, c *conv } func DeepCopy_api_PersistentVolume(in PersistentVolume, out *PersistentVolume, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } if err := DeepCopy_api_PersistentVolumeSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_api_PersistentVolumeStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } func DeepCopy_api_PersistentVolumeClaim(in PersistentVolumeClaim, out *PersistentVolumeClaim, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -1776,12 +1604,8 @@ func DeepCopy_api_PersistentVolumeClaim(in PersistentVolumeClaim, out *Persisten } func DeepCopy_api_PersistentVolumeClaimList(in PersistentVolumeClaimList, out *PersistentVolumeClaimList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]PersistentVolumeClaim, len(in)) @@ -1837,11 +1661,7 @@ func DeepCopy_api_PersistentVolumeClaimStatus(in PersistentVolumeClaimStatus, ou in, out := in.Capacity, &out.Capacity *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Capacity = nil @@ -1856,12 +1676,8 @@ func DeepCopy_api_PersistentVolumeClaimVolumeSource(in PersistentVolumeClaimVolu } func DeepCopy_api_PersistentVolumeList(in PersistentVolumeList, out *PersistentVolumeList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]PersistentVolume, len(in)) @@ -1880,45 +1696,35 @@ func DeepCopy_api_PersistentVolumeSource(in PersistentVolumeSource, out *Persist if in.GCEPersistentDisk != nil { in, out := in.GCEPersistentDisk, &out.GCEPersistentDisk *out = new(GCEPersistentDiskVolumeSource) - if err := DeepCopy_api_GCEPersistentDiskVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.GCEPersistentDisk = nil } if in.AWSElasticBlockStore != nil { in, out := in.AWSElasticBlockStore, &out.AWSElasticBlockStore *out = new(AWSElasticBlockStoreVolumeSource) - if err := DeepCopy_api_AWSElasticBlockStoreVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.AWSElasticBlockStore = nil } if in.HostPath != nil { in, out := in.HostPath, &out.HostPath *out = new(HostPathVolumeSource) - if err := DeepCopy_api_HostPathVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.HostPath = nil } if in.Glusterfs != nil { in, out := in.Glusterfs, &out.Glusterfs *out = new(GlusterfsVolumeSource) - if err := DeepCopy_api_GlusterfsVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Glusterfs = nil } if in.NFS != nil { in, out := in.NFS, &out.NFS *out = new(NFSVolumeSource) - if err := DeepCopy_api_NFSVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.NFS = nil } @@ -1934,9 +1740,7 @@ func DeepCopy_api_PersistentVolumeSource(in PersistentVolumeSource, out *Persist if in.ISCSI != nil { in, out := in.ISCSI, &out.ISCSI *out = new(ISCSIVolumeSource) - if err := DeepCopy_api_ISCSIVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.ISCSI = nil } @@ -1952,9 +1756,7 @@ func DeepCopy_api_PersistentVolumeSource(in PersistentVolumeSource, out *Persist if in.Cinder != nil { in, out := in.Cinder, &out.Cinder *out = new(CinderVolumeSource) - if err := DeepCopy_api_CinderVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Cinder = nil } @@ -1979,27 +1781,21 @@ func DeepCopy_api_PersistentVolumeSource(in PersistentVolumeSource, out *Persist if in.Flocker != nil { in, out := in.Flocker, &out.Flocker *out = new(FlockerVolumeSource) - if err := DeepCopy_api_FlockerVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Flocker = nil } if in.AzureFile != nil { in, out := in.AzureFile, &out.AzureFile *out = new(AzureFileVolumeSource) - if err := DeepCopy_api_AzureFileVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.AzureFile = nil } if in.VsphereVolume != nil { in, out := in.VsphereVolume, &out.VsphereVolume *out = new(VsphereVirtualDiskVolumeSource) - if err := DeepCopy_api_VsphereVirtualDiskVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.VsphereVolume = nil } @@ -2011,11 +1807,7 @@ func DeepCopy_api_PersistentVolumeSpec(in PersistentVolumeSpec, out *PersistentV in, out := in.Capacity, &out.Capacity *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Capacity = nil @@ -2035,9 +1827,7 @@ func DeepCopy_api_PersistentVolumeSpec(in PersistentVolumeSpec, out *PersistentV if in.ClaimRef != nil { in, out := in.ClaimRef, &out.ClaimRef *out = new(ObjectReference) - if err := DeepCopy_api_ObjectReference(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.ClaimRef = nil } @@ -2053,9 +1843,7 @@ func DeepCopy_api_PersistentVolumeStatus(in PersistentVolumeStatus, out *Persist } func DeepCopy_api_Pod(in Pod, out *Pod, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2142,9 +1930,7 @@ func DeepCopy_api_PodAntiAffinity(in PodAntiAffinity, out *PodAntiAffinity, c *c } func DeepCopy_api_PodAttachOptions(in PodAttachOptions, out *PodAttachOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Stdin = in.Stdin out.Stdout = in.Stdout out.Stderr = in.Stderr @@ -2156,21 +1942,15 @@ func DeepCopy_api_PodAttachOptions(in PodAttachOptions, out *PodAttachOptions, c func DeepCopy_api_PodCondition(in PodCondition, out *PodCondition, c *conversion.Cloner) error { out.Type = in.Type out.Status = in.Status - if err := unversioned.DeepCopy_unversioned_Time(in.LastProbeTime, &out.LastProbeTime, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.LastTransitionTime, &out.LastTransitionTime, c); err != nil { - return err - } + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() out.Reason = in.Reason out.Message = in.Message return nil } func DeepCopy_api_PodExecOptions(in PodExecOptions, out *PodExecOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Stdin = in.Stdin out.Stdout = in.Stdout out.Stderr = in.Stderr @@ -2187,12 +1967,8 @@ func DeepCopy_api_PodExecOptions(in PodExecOptions, out *PodExecOptions, c *conv } func DeepCopy_api_PodList(in PodList, out *PodList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Pod, len(in)) @@ -2208,9 +1984,7 @@ func DeepCopy_api_PodList(in PodList, out *PodList, c *conversion.Cloner) error } func DeepCopy_api_PodLogOptions(in PodLogOptions, out *PodLogOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Container = in.Container out.Follow = in.Follow out.Previous = in.Previous @@ -2224,9 +1998,7 @@ func DeepCopy_api_PodLogOptions(in PodLogOptions, out *PodLogOptions, c *convers if in.SinceTime != nil { in, out := in.SinceTime, &out.SinceTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.SinceTime = nil } @@ -2249,9 +2021,7 @@ func DeepCopy_api_PodLogOptions(in PodLogOptions, out *PodLogOptions, c *convers } func DeepCopy_api_PodProxyOptions(in PodProxyOptions, out *PodProxyOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Path = in.Path return nil } @@ -2263,9 +2033,7 @@ func DeepCopy_api_PodSecurityContext(in PodSecurityContext, out *PodSecurityCont if in.SELinuxOptions != nil { in, out := in.SELinuxOptions, &out.SELinuxOptions *out = new(SELinuxOptions) - if err := DeepCopy_api_SELinuxOptions(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SELinuxOptions = nil } @@ -2374,9 +2142,7 @@ func DeepCopy_api_PodSpec(in PodSpec, out *PodSpec, c *conversion.Cloner) error in, out := in.ImagePullSecrets, &out.ImagePullSecrets *out = make([]LocalObjectReference, len(in)) for i := range in { - if err := DeepCopy_api_LocalObjectReference(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.ImagePullSecrets = nil @@ -2406,9 +2172,7 @@ func DeepCopy_api_PodStatus(in PodStatus, out *PodStatus, c *conversion.Cloner) if in.StartTime != nil { in, out := in.StartTime, &out.StartTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.StartTime = nil } @@ -2438,9 +2202,7 @@ func DeepCopy_api_PodStatus(in PodStatus, out *PodStatus, c *conversion.Cloner) } func DeepCopy_api_PodStatusResult(in PodStatusResult, out *PodStatusResult, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2451,9 +2213,7 @@ func DeepCopy_api_PodStatusResult(in PodStatusResult, out *PodStatusResult, c *c } func DeepCopy_api_PodTemplate(in PodTemplate, out *PodTemplate, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2464,12 +2224,8 @@ func DeepCopy_api_PodTemplate(in PodTemplate, out *PodTemplate, c *conversion.Cl } func DeepCopy_api_PodTemplateList(in PodTemplateList, out *PodTemplateList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]PodTemplate, len(in)) @@ -2498,11 +2254,7 @@ func DeepCopy_api_Preconditions(in Preconditions, out *Preconditions, c *convers if in.UID != nil { in, out := in.UID, &out.UID *out = new(types.UID) - if newVal, err := c.DeepCopy(*in); err != nil { - return err - } else { - **out = newVal.(types.UID) - } + **out = *in } else { out.UID = nil } @@ -2545,9 +2297,7 @@ func DeepCopy_api_RBDVolumeSource(in RBDVolumeSource, out *RBDVolumeSource, c *c if in.SecretRef != nil { in, out := in.SecretRef, &out.SecretRef *out = new(LocalObjectReference) - if err := DeepCopy_api_LocalObjectReference(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SecretRef = nil } @@ -2556,9 +2306,7 @@ func DeepCopy_api_RBDVolumeSource(in RBDVolumeSource, out *RBDVolumeSource, c *c } func DeepCopy_api_RangeAllocation(in RangeAllocation, out *RangeAllocation, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2574,28 +2322,20 @@ func DeepCopy_api_RangeAllocation(in RangeAllocation, out *RangeAllocation, c *c } func DeepCopy_api_ReplicationController(in ReplicationController, out *ReplicationController, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } if err := DeepCopy_api_ReplicationControllerSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_api_ReplicationControllerStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } func DeepCopy_api_ReplicationControllerList(in ReplicationControllerList, out *ReplicationControllerList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ReplicationController, len(in)) @@ -2643,16 +2383,12 @@ func DeepCopy_api_ReplicationControllerStatus(in ReplicationControllerStatus, ou func DeepCopy_api_ResourceFieldSelector(in ResourceFieldSelector, out *ResourceFieldSelector, c *conversion.Cloner) error { out.ContainerName = in.ContainerName out.Resource = in.Resource - if err := resource.DeepCopy_resource_Quantity(in.Divisor, &out.Divisor, c); err != nil { - return err - } + out.Divisor = in.Divisor.DeepCopy() return nil } func DeepCopy_api_ResourceQuota(in ResourceQuota, out *ResourceQuota, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2666,12 +2402,8 @@ func DeepCopy_api_ResourceQuota(in ResourceQuota, out *ResourceQuota, c *convers } func DeepCopy_api_ResourceQuotaList(in ResourceQuotaList, out *ResourceQuotaList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ResourceQuota, len(in)) @@ -2691,11 +2423,7 @@ func DeepCopy_api_ResourceQuotaSpec(in ResourceQuotaSpec, out *ResourceQuotaSpec in, out := in.Hard, &out.Hard *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Hard = nil @@ -2717,11 +2445,7 @@ func DeepCopy_api_ResourceQuotaStatus(in ResourceQuotaStatus, out *ResourceQuota in, out := in.Hard, &out.Hard *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Hard = nil @@ -2730,11 +2454,7 @@ func DeepCopy_api_ResourceQuotaStatus(in ResourceQuotaStatus, out *ResourceQuota in, out := in.Used, &out.Used *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Used = nil @@ -2747,11 +2467,7 @@ func DeepCopy_api_ResourceRequirements(in ResourceRequirements, out *ResourceReq in, out := in.Limits, &out.Limits *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Limits = nil @@ -2760,11 +2476,7 @@ func DeepCopy_api_ResourceRequirements(in ResourceRequirements, out *ResourceReq in, out := in.Requests, &out.Requests *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Requests = nil @@ -2781,9 +2493,7 @@ func DeepCopy_api_SELinuxOptions(in SELinuxOptions, out *SELinuxOptions, c *conv } func DeepCopy_api_Secret(in Secret, out *Secret, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2805,20 +2515,14 @@ func DeepCopy_api_Secret(in Secret, out *Secret, c *conversion.Cloner) error { } func DeepCopy_api_SecretKeySelector(in SecretKeySelector, out *SecretKeySelector, c *conversion.Cloner) error { - if err := DeepCopy_api_LocalObjectReference(in.LocalObjectReference, &out.LocalObjectReference, c); err != nil { - return err - } + out.LocalObjectReference = in.LocalObjectReference out.Key = in.Key return nil } func DeepCopy_api_SecretList(in SecretList, out *SecretList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Secret, len(in)) @@ -2839,9 +2543,7 @@ func DeepCopy_api_SecretVolumeSource(in SecretVolumeSource, out *SecretVolumeSou in, out := in.Items, &out.Items *out = make([]KeyToPath, len(in)) for i := range in { - if err := DeepCopy_api_KeyToPath(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Items = nil @@ -2869,9 +2571,7 @@ func DeepCopy_api_SecurityContext(in SecurityContext, out *SecurityContext, c *c if in.SELinuxOptions != nil { in, out := in.SELinuxOptions, &out.SELinuxOptions *out = new(SELinuxOptions) - if err := DeepCopy_api_SELinuxOptions(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SELinuxOptions = nil } @@ -2900,19 +2600,13 @@ func DeepCopy_api_SecurityContext(in SecurityContext, out *SecurityContext, c *c } func DeepCopy_api_SerializedReference(in SerializedReference, out *SerializedReference, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := DeepCopy_api_ObjectReference(in.Reference, &out.Reference, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.Reference = in.Reference return nil } func DeepCopy_api_Service(in Service, out *Service, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2926,9 +2620,7 @@ func DeepCopy_api_Service(in Service, out *Service, c *conversion.Cloner) error } func DeepCopy_api_ServiceAccount(in ServiceAccount, out *ServiceAccount, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2936,9 +2628,7 @@ func DeepCopy_api_ServiceAccount(in ServiceAccount, out *ServiceAccount, c *conv in, out := in.Secrets, &out.Secrets *out = make([]ObjectReference, len(in)) for i := range in { - if err := DeepCopy_api_ObjectReference(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Secrets = nil @@ -2947,9 +2637,7 @@ func DeepCopy_api_ServiceAccount(in ServiceAccount, out *ServiceAccount, c *conv in, out := in.ImagePullSecrets, &out.ImagePullSecrets *out = make([]LocalObjectReference, len(in)) for i := range in { - if err := DeepCopy_api_LocalObjectReference(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.ImagePullSecrets = nil @@ -2958,12 +2646,8 @@ func DeepCopy_api_ServiceAccount(in ServiceAccount, out *ServiceAccount, c *conv } func DeepCopy_api_ServiceAccountList(in ServiceAccountList, out *ServiceAccountList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ServiceAccount, len(in)) @@ -2979,12 +2663,8 @@ func DeepCopy_api_ServiceAccountList(in ServiceAccountList, out *ServiceAccountL } func DeepCopy_api_ServiceList(in ServiceList, out *ServiceList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Service, len(in)) @@ -3003,17 +2683,13 @@ func DeepCopy_api_ServicePort(in ServicePort, out *ServicePort, c *conversion.Cl out.Name = in.Name out.Protocol = in.Protocol out.Port = in.Port - if err := intstr.DeepCopy_intstr_IntOrString(in.TargetPort, &out.TargetPort, c); err != nil { - return err - } + out.TargetPort = in.TargetPort out.NodePort = in.NodePort return nil } func DeepCopy_api_ServiceProxyOptions(in ServiceProxyOptions, out *ServiceProxyOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Path = in.Path return nil } @@ -3024,9 +2700,7 @@ func DeepCopy_api_ServiceSpec(in ServiceSpec, out *ServiceSpec, c *conversion.Cl in, out := in.Ports, &out.Ports *out = make([]ServicePort, len(in)) for i := range in { - if err := DeepCopy_api_ServicePort(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Ports = nil @@ -3068,9 +2742,7 @@ func DeepCopy_api_ServiceStatus(in ServiceStatus, out *ServiceStatus, c *convers } func DeepCopy_api_TCPSocketAction(in TCPSocketAction, out *TCPSocketAction, c *conversion.Cloner) error { - if err := intstr.DeepCopy_intstr_IntOrString(in.Port, &out.Port, c); err != nil { - return err - } + out.Port = in.Port return nil } @@ -3109,45 +2781,35 @@ func DeepCopy_api_VolumeSource(in VolumeSource, out *VolumeSource, c *conversion if in.HostPath != nil { in, out := in.HostPath, &out.HostPath *out = new(HostPathVolumeSource) - if err := DeepCopy_api_HostPathVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.HostPath = nil } if in.EmptyDir != nil { in, out := in.EmptyDir, &out.EmptyDir *out = new(EmptyDirVolumeSource) - if err := DeepCopy_api_EmptyDirVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.EmptyDir = nil } if in.GCEPersistentDisk != nil { in, out := in.GCEPersistentDisk, &out.GCEPersistentDisk *out = new(GCEPersistentDiskVolumeSource) - if err := DeepCopy_api_GCEPersistentDiskVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.GCEPersistentDisk = nil } if in.AWSElasticBlockStore != nil { in, out := in.AWSElasticBlockStore, &out.AWSElasticBlockStore *out = new(AWSElasticBlockStoreVolumeSource) - if err := DeepCopy_api_AWSElasticBlockStoreVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.AWSElasticBlockStore = nil } if in.GitRepo != nil { in, out := in.GitRepo, &out.GitRepo *out = new(GitRepoVolumeSource) - if err := DeepCopy_api_GitRepoVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.GitRepo = nil } @@ -3163,36 +2825,28 @@ func DeepCopy_api_VolumeSource(in VolumeSource, out *VolumeSource, c *conversion if in.NFS != nil { in, out := in.NFS, &out.NFS *out = new(NFSVolumeSource) - if err := DeepCopy_api_NFSVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.NFS = nil } if in.ISCSI != nil { in, out := in.ISCSI, &out.ISCSI *out = new(ISCSIVolumeSource) - if err := DeepCopy_api_ISCSIVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.ISCSI = nil } if in.Glusterfs != nil { in, out := in.Glusterfs, &out.Glusterfs *out = new(GlusterfsVolumeSource) - if err := DeepCopy_api_GlusterfsVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Glusterfs = nil } if in.PersistentVolumeClaim != nil { in, out := in.PersistentVolumeClaim, &out.PersistentVolumeClaim *out = new(PersistentVolumeClaimVolumeSource) - if err := DeepCopy_api_PersistentVolumeClaimVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.PersistentVolumeClaim = nil } @@ -3217,9 +2871,7 @@ func DeepCopy_api_VolumeSource(in VolumeSource, out *VolumeSource, c *conversion if in.Cinder != nil { in, out := in.Cinder, &out.Cinder *out = new(CinderVolumeSource) - if err := DeepCopy_api_CinderVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Cinder = nil } @@ -3235,9 +2887,7 @@ func DeepCopy_api_VolumeSource(in VolumeSource, out *VolumeSource, c *conversion if in.Flocker != nil { in, out := in.Flocker, &out.Flocker *out = new(FlockerVolumeSource) - if err := DeepCopy_api_FlockerVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Flocker = nil } @@ -3262,9 +2912,7 @@ func DeepCopy_api_VolumeSource(in VolumeSource, out *VolumeSource, c *conversion if in.AzureFile != nil { in, out := in.AzureFile, &out.AzureFile *out = new(AzureFileVolumeSource) - if err := DeepCopy_api_AzureFileVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.AzureFile = nil } @@ -3280,9 +2928,7 @@ func DeepCopy_api_VolumeSource(in VolumeSource, out *VolumeSource, c *conversion if in.VsphereVolume != nil { in, out := in.VsphereVolume, &out.VsphereVolume *out = new(VsphereVirtualDiskVolumeSource) - if err := DeepCopy_api_VsphereVirtualDiskVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.VsphereVolume = nil } diff --git a/pkg/api/resource/deep_copy.go b/pkg/api/resource/deep_copy.go deleted file mode 100644 index 4052a4823c0..00000000000 --- a/pkg/api/resource/deep_copy.go +++ /dev/null @@ -1,32 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package resource - -import ( - inf "gopkg.in/inf.v0" - - conversion "k8s.io/kubernetes/pkg/conversion" -) - -func DeepCopy_resource_Quantity(in Quantity, out *Quantity, c *conversion.Cloner) error { - *out = in - if in.d.Dec != nil { - tmp := &inf.Dec{} - out.d.Dec = tmp.Set(in.d.Dec) - } - return nil -} diff --git a/pkg/api/resource/quantity.go b/pkg/api/resource/quantity.go index 55a5a3f7d25..823dd5ef70e 100644 --- a/pkg/api/resource/quantity.go +++ b/pkg/api/resource/quantity.go @@ -385,6 +385,16 @@ func ParseQuantity(str string) (Quantity, error) { return Quantity{d: infDecAmount{amount}, Format: format}, nil } +// DeepCopy returns a deep-copy of the Quantity value. Note that the method +// receiver is a value, so we can mutate it in-place and return it. +func (q Quantity) DeepCopy() Quantity { + if q.d.Dec != nil { + tmp := &inf.Dec{} + q.d.Dec = tmp.Set(q.d.Dec) + } + return q +} + // CanonicalizeBytes returns the canonical form of q and its suffix (see comment on Quantity). // // Note about BinarySI: diff --git a/pkg/api/unversioned/time.go b/pkg/api/unversioned/time.go index 61a000844fd..73b00f2e7c2 100644 --- a/pkg/api/unversioned/time.go +++ b/pkg/api/unversioned/time.go @@ -33,6 +33,13 @@ type Time struct { time.Time `protobuf:"-"` } +// DeepCopy returns a deep-copy of the Time value. The underlying time.Time +// type is effectively immutable in the time API, so it is safe to +// copy-by-assign, despite the presence of (unexported) Pointer fields. +func (t Time) DeepCopy() Time { + return t +} + // NewTime returns a wrapped instance of the provided time func NewTime(time time.Time) Time { return Time{time} diff --git a/pkg/api/v1/deep_copy_generated.go b/pkg/api/v1/deep_copy_generated.go index 6ac0a0d2acd..9054da35ed9 100644 --- a/pkg/api/v1/deep_copy_generated.go +++ b/pkg/api/v1/deep_copy_generated.go @@ -22,12 +22,10 @@ package v1 import ( api "k8s.io/kubernetes/pkg/api" - resource "k8s.io/kubernetes/pkg/api/resource" unversioned "k8s.io/kubernetes/pkg/api/unversioned" conversion "k8s.io/kubernetes/pkg/conversion" runtime "k8s.io/kubernetes/pkg/runtime" types "k8s.io/kubernetes/pkg/types" - intstr "k8s.io/kubernetes/pkg/util/intstr" ) func init() { @@ -240,15 +238,11 @@ func DeepCopy_v1_AzureFileVolumeSource(in AzureFileVolumeSource, out *AzureFileV } func DeepCopy_v1_Binding(in Binding, out *Binding, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } - if err := DeepCopy_v1_ObjectReference(in.Target, &out.Target, c); err != nil { - return err - } + out.Target = in.Target return nil } @@ -288,9 +282,7 @@ func DeepCopy_v1_CephFSVolumeSource(in CephFSVolumeSource, out *CephFSVolumeSour if in.SecretRef != nil { in, out := in.SecretRef, &out.SecretRef *out = new(LocalObjectReference) - if err := DeepCopy_v1_LocalObjectReference(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SecretRef = nil } @@ -314,9 +306,7 @@ func DeepCopy_v1_ComponentCondition(in ComponentCondition, out *ComponentConditi } func DeepCopy_v1_ComponentStatus(in ComponentStatus, out *ComponentStatus, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -324,9 +314,7 @@ func DeepCopy_v1_ComponentStatus(in ComponentStatus, out *ComponentStatus, c *co in, out := in.Conditions, &out.Conditions *out = make([]ComponentCondition, len(in)) for i := range in { - if err := DeepCopy_v1_ComponentCondition(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Conditions = nil @@ -335,12 +323,8 @@ func DeepCopy_v1_ComponentStatus(in ComponentStatus, out *ComponentStatus, c *co } func DeepCopy_v1_ComponentStatusList(in ComponentStatusList, out *ComponentStatusList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ComponentStatus, len(in)) @@ -356,9 +340,7 @@ func DeepCopy_v1_ComponentStatusList(in ComponentStatusList, out *ComponentStatu } func DeepCopy_v1_ConfigMap(in ConfigMap, out *ConfigMap, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -375,20 +357,14 @@ func DeepCopy_v1_ConfigMap(in ConfigMap, out *ConfigMap, c *conversion.Cloner) e } func DeepCopy_v1_ConfigMapKeySelector(in ConfigMapKeySelector, out *ConfigMapKeySelector, c *conversion.Cloner) error { - if err := DeepCopy_v1_LocalObjectReference(in.LocalObjectReference, &out.LocalObjectReference, c); err != nil { - return err - } + out.LocalObjectReference = in.LocalObjectReference out.Key = in.Key return nil } func DeepCopy_v1_ConfigMapList(in ConfigMapList, out *ConfigMapList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ConfigMap, len(in)) @@ -404,16 +380,12 @@ func DeepCopy_v1_ConfigMapList(in ConfigMapList, out *ConfigMapList, c *conversi } func DeepCopy_v1_ConfigMapVolumeSource(in ConfigMapVolumeSource, out *ConfigMapVolumeSource, c *conversion.Cloner) error { - if err := DeepCopy_v1_LocalObjectReference(in.LocalObjectReference, &out.LocalObjectReference, c); err != nil { - return err - } + out.LocalObjectReference = in.LocalObjectReference if in.Items != nil { in, out := in.Items, &out.Items *out = make([]KeyToPath, len(in)) for i := range in { - if err := DeepCopy_v1_KeyToPath(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Items = nil @@ -443,9 +415,7 @@ func DeepCopy_v1_Container(in Container, out *Container, c *conversion.Cloner) e in, out := in.Ports, &out.Ports *out = make([]ContainerPort, len(in)) for i := range in { - if err := DeepCopy_v1_ContainerPort(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Ports = nil @@ -468,9 +438,7 @@ func DeepCopy_v1_Container(in Container, out *Container, c *conversion.Cloner) e in, out := in.VolumeMounts, &out.VolumeMounts *out = make([]VolumeMount, len(in)) for i := range in { - if err := DeepCopy_v1_VolumeMount(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.VolumeMounts = nil @@ -544,9 +512,7 @@ func DeepCopy_v1_ContainerState(in ContainerState, out *ContainerState, c *conve if in.Waiting != nil { in, out := in.Waiting, &out.Waiting *out = new(ContainerStateWaiting) - if err := DeepCopy_v1_ContainerStateWaiting(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Waiting = nil } @@ -572,9 +538,7 @@ func DeepCopy_v1_ContainerState(in ContainerState, out *ContainerState, c *conve } func DeepCopy_v1_ContainerStateRunning(in ContainerStateRunning, out *ContainerStateRunning, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_Time(in.StartedAt, &out.StartedAt, c); err != nil { - return err - } + out.StartedAt = in.StartedAt.DeepCopy() return nil } @@ -583,12 +547,8 @@ func DeepCopy_v1_ContainerStateTerminated(in ContainerStateTerminated, out *Cont out.Signal = in.Signal out.Reason = in.Reason out.Message = in.Message - if err := unversioned.DeepCopy_unversioned_Time(in.StartedAt, &out.StartedAt, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.FinishedAt, &out.FinishedAt, c); err != nil { - return err - } + out.StartedAt = in.StartedAt.DeepCopy() + out.FinishedAt = in.FinishedAt.DeepCopy() out.ContainerID = in.ContainerID return nil } @@ -621,9 +581,7 @@ func DeepCopy_v1_DaemonEndpoint(in DaemonEndpoint, out *DaemonEndpoint, c *conve } func DeepCopy_v1_DeleteOptions(in DeleteOptions, out *DeleteOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if in.GracePeriodSeconds != nil { in, out := in.GracePeriodSeconds, &out.GracePeriodSeconds *out = new(int64) @@ -655,9 +613,7 @@ func DeepCopy_v1_DownwardAPIVolumeFile(in DownwardAPIVolumeFile, out *DownwardAP if in.FieldRef != nil { in, out := in.FieldRef, &out.FieldRef *out = new(ObjectFieldSelector) - if err := DeepCopy_v1_ObjectFieldSelector(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.FieldRef = nil } @@ -699,9 +655,7 @@ func DeepCopy_v1_EndpointAddress(in EndpointAddress, out *EndpointAddress, c *co if in.TargetRef != nil { in, out := in.TargetRef, &out.TargetRef *out = new(ObjectReference) - if err := DeepCopy_v1_ObjectReference(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.TargetRef = nil } @@ -742,9 +696,7 @@ func DeepCopy_v1_EndpointSubset(in EndpointSubset, out *EndpointSubset, c *conve in, out := in.Ports, &out.Ports *out = make([]EndpointPort, len(in)) for i := range in { - if err := DeepCopy_v1_EndpointPort(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Ports = nil @@ -753,9 +705,7 @@ func DeepCopy_v1_EndpointSubset(in EndpointSubset, out *EndpointSubset, c *conve } func DeepCopy_v1_Endpoints(in Endpoints, out *Endpoints, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -774,12 +724,8 @@ func DeepCopy_v1_Endpoints(in Endpoints, out *Endpoints, c *conversion.Cloner) e } func DeepCopy_v1_EndpointsList(in EndpointsList, out *EndpointsList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Endpoints, len(in)) @@ -813,9 +759,7 @@ func DeepCopy_v1_EnvVarSource(in EnvVarSource, out *EnvVarSource, c *conversion. if in.FieldRef != nil { in, out := in.FieldRef, &out.FieldRef *out = new(ObjectFieldSelector) - if err := DeepCopy_v1_ObjectFieldSelector(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.FieldRef = nil } @@ -831,18 +775,14 @@ func DeepCopy_v1_EnvVarSource(in EnvVarSource, out *EnvVarSource, c *conversion. if in.ConfigMapKeyRef != nil { in, out := in.ConfigMapKeyRef, &out.ConfigMapKeyRef *out = new(ConfigMapKeySelector) - if err := DeepCopy_v1_ConfigMapKeySelector(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.ConfigMapKeyRef = nil } if in.SecretKeyRef != nil { in, out := in.SecretKeyRef, &out.SecretKeyRef *out = new(SecretKeySelector) - if err := DeepCopy_v1_SecretKeySelector(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SecretKeyRef = nil } @@ -850,38 +790,24 @@ func DeepCopy_v1_EnvVarSource(in EnvVarSource, out *EnvVarSource, c *conversion. } func DeepCopy_v1_Event(in Event, out *Event, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } - if err := DeepCopy_v1_ObjectReference(in.InvolvedObject, &out.InvolvedObject, c); err != nil { - return err - } + out.InvolvedObject = in.InvolvedObject out.Reason = in.Reason out.Message = in.Message - if err := DeepCopy_v1_EventSource(in.Source, &out.Source, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.FirstTimestamp, &out.FirstTimestamp, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.LastTimestamp, &out.LastTimestamp, c); err != nil { - return err - } + out.Source = in.Source + out.FirstTimestamp = in.FirstTimestamp.DeepCopy() + out.LastTimestamp = in.LastTimestamp.DeepCopy() out.Count = in.Count out.Type = in.Type return nil } func DeepCopy_v1_EventList(in EventList, out *EventList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Event, len(in)) @@ -914,9 +840,7 @@ func DeepCopy_v1_ExecAction(in ExecAction, out *ExecAction, c *conversion.Cloner } func DeepCopy_v1_ExportOptions(in ExportOptions, out *ExportOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Export = in.Export out.Exact = in.Exact return nil @@ -948,9 +872,7 @@ func DeepCopy_v1_FlexVolumeSource(in FlexVolumeSource, out *FlexVolumeSource, c if in.SecretRef != nil { in, out := in.SecretRef, &out.SecretRef *out = new(LocalObjectReference) - if err := DeepCopy_v1_LocalObjectReference(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SecretRef = nil } @@ -996,18 +918,14 @@ func DeepCopy_v1_GlusterfsVolumeSource(in GlusterfsVolumeSource, out *GlusterfsV func DeepCopy_v1_HTTPGetAction(in HTTPGetAction, out *HTTPGetAction, c *conversion.Cloner) error { out.Path = in.Path - if err := intstr.DeepCopy_intstr_IntOrString(in.Port, &out.Port, c); err != nil { - return err - } + out.Port = in.Port out.Host = in.Host out.Scheme = in.Scheme if in.HTTPHeaders != nil { in, out := in.HTTPHeaders, &out.HTTPHeaders *out = make([]HTTPHeader, len(in)) for i := range in { - if err := DeepCopy_v1_HTTPHeader(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.HTTPHeaders = nil @@ -1043,9 +961,7 @@ func DeepCopy_v1_Handler(in Handler, out *Handler, c *conversion.Cloner) error { if in.TCPSocket != nil { in, out := in.TCPSocket, &out.TCPSocket *out = new(TCPSocketAction) - if err := DeepCopy_v1_TCPSocketAction(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.TCPSocket = nil } @@ -1096,9 +1012,7 @@ func DeepCopy_v1_Lifecycle(in Lifecycle, out *Lifecycle, c *conversion.Cloner) e } func DeepCopy_v1_LimitRange(in LimitRange, out *LimitRange, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -1114,11 +1028,7 @@ func DeepCopy_v1_LimitRangeItem(in LimitRangeItem, out *LimitRangeItem, c *conve in, out := in.Max, &out.Max *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Max = nil @@ -1127,11 +1037,7 @@ func DeepCopy_v1_LimitRangeItem(in LimitRangeItem, out *LimitRangeItem, c *conve in, out := in.Min, &out.Min *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Min = nil @@ -1140,11 +1046,7 @@ func DeepCopy_v1_LimitRangeItem(in LimitRangeItem, out *LimitRangeItem, c *conve in, out := in.Default, &out.Default *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Default = nil @@ -1153,11 +1055,7 @@ func DeepCopy_v1_LimitRangeItem(in LimitRangeItem, out *LimitRangeItem, c *conve in, out := in.DefaultRequest, &out.DefaultRequest *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.DefaultRequest = nil @@ -1166,11 +1064,7 @@ func DeepCopy_v1_LimitRangeItem(in LimitRangeItem, out *LimitRangeItem, c *conve in, out := in.MaxLimitRequestRatio, &out.MaxLimitRequestRatio *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.MaxLimitRequestRatio = nil @@ -1179,12 +1073,8 @@ func DeepCopy_v1_LimitRangeItem(in LimitRangeItem, out *LimitRangeItem, c *conve } func DeepCopy_v1_LimitRangeList(in LimitRangeList, out *LimitRangeList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]LimitRange, len(in)) @@ -1215,12 +1105,8 @@ func DeepCopy_v1_LimitRangeSpec(in LimitRangeSpec, out *LimitRangeSpec, c *conve } func DeepCopy_v1_List(in List, out *List, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]runtime.RawExtension, len(in)) @@ -1236,9 +1122,7 @@ func DeepCopy_v1_List(in List, out *List, c *conversion.Cloner) error { } func DeepCopy_v1_ListOptions(in ListOptions, out *ListOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.LabelSelector = in.LabelSelector out.FieldSelector = in.FieldSelector out.Watch = in.Watch @@ -1264,9 +1148,7 @@ func DeepCopy_v1_LoadBalancerStatus(in LoadBalancerStatus, out *LoadBalancerStat in, out := in.Ingress, &out.Ingress *out = make([]LoadBalancerIngress, len(in)) for i := range in { - if err := DeepCopy_v1_LoadBalancerIngress(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Ingress = nil @@ -1287,28 +1169,20 @@ func DeepCopy_v1_NFSVolumeSource(in NFSVolumeSource, out *NFSVolumeSource, c *co } func DeepCopy_v1_Namespace(in Namespace, out *Namespace, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } if err := DeepCopy_v1_NamespaceSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_v1_NamespaceStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } func DeepCopy_v1_NamespaceList(in NamespaceList, out *NamespaceList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Namespace, len(in)) @@ -1342,15 +1216,11 @@ func DeepCopy_v1_NamespaceStatus(in NamespaceStatus, out *NamespaceStatus, c *co } func DeepCopy_v1_Node(in Node, out *Node, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } - if err := DeepCopy_v1_NodeSpec(in.Spec, &out.Spec, c); err != nil { - return err - } + out.Spec = in.Spec if err := DeepCopy_v1_NodeStatus(in.Status, &out.Status, c); err != nil { return err } @@ -1390,31 +1260,21 @@ func DeepCopy_v1_NodeAffinity(in NodeAffinity, out *NodeAffinity, c *conversion. func DeepCopy_v1_NodeCondition(in NodeCondition, out *NodeCondition, c *conversion.Cloner) error { out.Type = in.Type out.Status = in.Status - if err := unversioned.DeepCopy_unversioned_Time(in.LastHeartbeatTime, &out.LastHeartbeatTime, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.LastTransitionTime, &out.LastTransitionTime, c); err != nil { - return err - } + out.LastHeartbeatTime = in.LastHeartbeatTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() out.Reason = in.Reason out.Message = in.Message return nil } func DeepCopy_v1_NodeDaemonEndpoints(in NodeDaemonEndpoints, out *NodeDaemonEndpoints, c *conversion.Cloner) error { - if err := DeepCopy_v1_DaemonEndpoint(in.KubeletEndpoint, &out.KubeletEndpoint, c); err != nil { - return err - } + out.KubeletEndpoint = in.KubeletEndpoint return nil } func DeepCopy_v1_NodeList(in NodeList, out *NodeList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Node, len(in)) @@ -1430,9 +1290,7 @@ func DeepCopy_v1_NodeList(in NodeList, out *NodeList, c *conversion.Cloner) erro } func DeepCopy_v1_NodeProxyOptions(in NodeProxyOptions, out *NodeProxyOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Path = in.Path return nil } @@ -1493,11 +1351,7 @@ func DeepCopy_v1_NodeStatus(in NodeStatus, out *NodeStatus, c *conversion.Cloner in, out := in.Capacity, &out.Capacity *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Capacity = nil @@ -1506,11 +1360,7 @@ func DeepCopy_v1_NodeStatus(in NodeStatus, out *NodeStatus, c *conversion.Cloner in, out := in.Allocatable, &out.Allocatable *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Allocatable = nil @@ -1531,19 +1381,13 @@ func DeepCopy_v1_NodeStatus(in NodeStatus, out *NodeStatus, c *conversion.Cloner in, out := in.Addresses, &out.Addresses *out = make([]NodeAddress, len(in)) for i := range in { - if err := DeepCopy_v1_NodeAddress(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Addresses = nil } - if err := DeepCopy_v1_NodeDaemonEndpoints(in.DaemonEndpoints, &out.DaemonEndpoints, c); err != nil { - return err - } - if err := DeepCopy_v1_NodeSystemInfo(in.NodeInfo, &out.NodeInfo, c); err != nil { - return err - } + out.DaemonEndpoints = in.DaemonEndpoints + out.NodeInfo = in.NodeInfo if in.Images != nil { in, out := in.Images, &out.Images *out = make([]ContainerImage, len(in)) @@ -1568,9 +1412,7 @@ func DeepCopy_v1_NodeStatus(in NodeStatus, out *NodeStatus, c *conversion.Cloner in, out := in.VolumesAttached, &out.VolumesAttached *out = make([]AttachedVolume, len(in)) for i := range in { - if err := DeepCopy_v1_AttachedVolume(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.VolumesAttached = nil @@ -1606,15 +1448,11 @@ func DeepCopy_v1_ObjectMeta(in ObjectMeta, out *ObjectMeta, c *conversion.Cloner out.UID = in.UID out.ResourceVersion = in.ResourceVersion out.Generation = in.Generation - if err := unversioned.DeepCopy_unversioned_Time(in.CreationTimestamp, &out.CreationTimestamp, c); err != nil { - return err - } + out.CreationTimestamp = in.CreationTimestamp.DeepCopy() if in.DeletionTimestamp != nil { in, out := in.DeletionTimestamp, &out.DeletionTimestamp *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.DeletionTimestamp = nil } @@ -1691,25 +1529,19 @@ func DeepCopy_v1_OwnerReference(in OwnerReference, out *OwnerReference, c *conve } func DeepCopy_v1_PersistentVolume(in PersistentVolume, out *PersistentVolume, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } if err := DeepCopy_v1_PersistentVolumeSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_v1_PersistentVolumeStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } func DeepCopy_v1_PersistentVolumeClaim(in PersistentVolumeClaim, out *PersistentVolumeClaim, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -1723,12 +1555,8 @@ func DeepCopy_v1_PersistentVolumeClaim(in PersistentVolumeClaim, out *Persistent } func DeepCopy_v1_PersistentVolumeClaimList(in PersistentVolumeClaimList, out *PersistentVolumeClaimList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]PersistentVolumeClaim, len(in)) @@ -1784,11 +1612,7 @@ func DeepCopy_v1_PersistentVolumeClaimStatus(in PersistentVolumeClaimStatus, out in, out := in.Capacity, &out.Capacity *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Capacity = nil @@ -1803,12 +1627,8 @@ func DeepCopy_v1_PersistentVolumeClaimVolumeSource(in PersistentVolumeClaimVolum } func DeepCopy_v1_PersistentVolumeList(in PersistentVolumeList, out *PersistentVolumeList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]PersistentVolume, len(in)) @@ -1827,45 +1647,35 @@ func DeepCopy_v1_PersistentVolumeSource(in PersistentVolumeSource, out *Persiste if in.GCEPersistentDisk != nil { in, out := in.GCEPersistentDisk, &out.GCEPersistentDisk *out = new(GCEPersistentDiskVolumeSource) - if err := DeepCopy_v1_GCEPersistentDiskVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.GCEPersistentDisk = nil } if in.AWSElasticBlockStore != nil { in, out := in.AWSElasticBlockStore, &out.AWSElasticBlockStore *out = new(AWSElasticBlockStoreVolumeSource) - if err := DeepCopy_v1_AWSElasticBlockStoreVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.AWSElasticBlockStore = nil } if in.HostPath != nil { in, out := in.HostPath, &out.HostPath *out = new(HostPathVolumeSource) - if err := DeepCopy_v1_HostPathVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.HostPath = nil } if in.Glusterfs != nil { in, out := in.Glusterfs, &out.Glusterfs *out = new(GlusterfsVolumeSource) - if err := DeepCopy_v1_GlusterfsVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Glusterfs = nil } if in.NFS != nil { in, out := in.NFS, &out.NFS *out = new(NFSVolumeSource) - if err := DeepCopy_v1_NFSVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.NFS = nil } @@ -1881,18 +1691,14 @@ func DeepCopy_v1_PersistentVolumeSource(in PersistentVolumeSource, out *Persiste if in.ISCSI != nil { in, out := in.ISCSI, &out.ISCSI *out = new(ISCSIVolumeSource) - if err := DeepCopy_v1_ISCSIVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.ISCSI = nil } if in.Cinder != nil { in, out := in.Cinder, &out.Cinder *out = new(CinderVolumeSource) - if err := DeepCopy_v1_CinderVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Cinder = nil } @@ -1917,9 +1723,7 @@ func DeepCopy_v1_PersistentVolumeSource(in PersistentVolumeSource, out *Persiste if in.Flocker != nil { in, out := in.Flocker, &out.Flocker *out = new(FlockerVolumeSource) - if err := DeepCopy_v1_FlockerVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Flocker = nil } @@ -1935,18 +1739,14 @@ func DeepCopy_v1_PersistentVolumeSource(in PersistentVolumeSource, out *Persiste if in.AzureFile != nil { in, out := in.AzureFile, &out.AzureFile *out = new(AzureFileVolumeSource) - if err := DeepCopy_v1_AzureFileVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.AzureFile = nil } if in.VsphereVolume != nil { in, out := in.VsphereVolume, &out.VsphereVolume *out = new(VsphereVirtualDiskVolumeSource) - if err := DeepCopy_v1_VsphereVirtualDiskVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.VsphereVolume = nil } @@ -1958,11 +1758,7 @@ func DeepCopy_v1_PersistentVolumeSpec(in PersistentVolumeSpec, out *PersistentVo in, out := in.Capacity, &out.Capacity *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Capacity = nil @@ -1982,9 +1778,7 @@ func DeepCopy_v1_PersistentVolumeSpec(in PersistentVolumeSpec, out *PersistentVo if in.ClaimRef != nil { in, out := in.ClaimRef, &out.ClaimRef *out = new(ObjectReference) - if err := DeepCopy_v1_ObjectReference(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.ClaimRef = nil } @@ -2000,9 +1794,7 @@ func DeepCopy_v1_PersistentVolumeStatus(in PersistentVolumeStatus, out *Persiste } func DeepCopy_v1_Pod(in Pod, out *Pod, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2089,9 +1881,7 @@ func DeepCopy_v1_PodAntiAffinity(in PodAntiAffinity, out *PodAntiAffinity, c *co } func DeepCopy_v1_PodAttachOptions(in PodAttachOptions, out *PodAttachOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Stdin = in.Stdin out.Stdout = in.Stdout out.Stderr = in.Stderr @@ -2103,21 +1893,15 @@ func DeepCopy_v1_PodAttachOptions(in PodAttachOptions, out *PodAttachOptions, c func DeepCopy_v1_PodCondition(in PodCondition, out *PodCondition, c *conversion.Cloner) error { out.Type = in.Type out.Status = in.Status - if err := unversioned.DeepCopy_unversioned_Time(in.LastProbeTime, &out.LastProbeTime, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.LastTransitionTime, &out.LastTransitionTime, c); err != nil { - return err - } + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() out.Reason = in.Reason out.Message = in.Message return nil } func DeepCopy_v1_PodExecOptions(in PodExecOptions, out *PodExecOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Stdin = in.Stdin out.Stdout = in.Stdout out.Stderr = in.Stderr @@ -2134,12 +1918,8 @@ func DeepCopy_v1_PodExecOptions(in PodExecOptions, out *PodExecOptions, c *conve } func DeepCopy_v1_PodList(in PodList, out *PodList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Pod, len(in)) @@ -2155,9 +1935,7 @@ func DeepCopy_v1_PodList(in PodList, out *PodList, c *conversion.Cloner) error { } func DeepCopy_v1_PodLogOptions(in PodLogOptions, out *PodLogOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Container = in.Container out.Follow = in.Follow out.Previous = in.Previous @@ -2171,9 +1949,7 @@ func DeepCopy_v1_PodLogOptions(in PodLogOptions, out *PodLogOptions, c *conversi if in.SinceTime != nil { in, out := in.SinceTime, &out.SinceTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.SinceTime = nil } @@ -2196,9 +1972,7 @@ func DeepCopy_v1_PodLogOptions(in PodLogOptions, out *PodLogOptions, c *conversi } func DeepCopy_v1_PodProxyOptions(in PodProxyOptions, out *PodProxyOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Path = in.Path return nil } @@ -2207,9 +1981,7 @@ func DeepCopy_v1_PodSecurityContext(in PodSecurityContext, out *PodSecurityConte if in.SELinuxOptions != nil { in, out := in.SELinuxOptions, &out.SELinuxOptions *out = new(SELinuxOptions) - if err := DeepCopy_v1_SELinuxOptions(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SELinuxOptions = nil } @@ -2322,9 +2094,7 @@ func DeepCopy_v1_PodSpec(in PodSpec, out *PodSpec, c *conversion.Cloner) error { in, out := in.ImagePullSecrets, &out.ImagePullSecrets *out = make([]LocalObjectReference, len(in)) for i := range in { - if err := DeepCopy_v1_LocalObjectReference(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.ImagePullSecrets = nil @@ -2354,9 +2124,7 @@ func DeepCopy_v1_PodStatus(in PodStatus, out *PodStatus, c *conversion.Cloner) e if in.StartTime != nil { in, out := in.StartTime, &out.StartTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.StartTime = nil } @@ -2386,9 +2154,7 @@ func DeepCopy_v1_PodStatus(in PodStatus, out *PodStatus, c *conversion.Cloner) e } func DeepCopy_v1_PodStatusResult(in PodStatusResult, out *PodStatusResult, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2399,9 +2165,7 @@ func DeepCopy_v1_PodStatusResult(in PodStatusResult, out *PodStatusResult, c *co } func DeepCopy_v1_PodTemplate(in PodTemplate, out *PodTemplate, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2412,12 +2176,8 @@ func DeepCopy_v1_PodTemplate(in PodTemplate, out *PodTemplate, c *conversion.Clo } func DeepCopy_v1_PodTemplateList(in PodTemplateList, out *PodTemplateList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]PodTemplate, len(in)) @@ -2446,11 +2206,7 @@ func DeepCopy_v1_Preconditions(in Preconditions, out *Preconditions, c *conversi if in.UID != nil { in, out := in.UID, &out.UID *out = new(types.UID) - if newVal, err := c.DeepCopy(*in); err != nil { - return err - } else { - **out = newVal.(types.UID) - } + **out = *in } else { out.UID = nil } @@ -2493,9 +2249,7 @@ func DeepCopy_v1_RBDVolumeSource(in RBDVolumeSource, out *RBDVolumeSource, c *co if in.SecretRef != nil { in, out := in.SecretRef, &out.SecretRef *out = new(LocalObjectReference) - if err := DeepCopy_v1_LocalObjectReference(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SecretRef = nil } @@ -2504,9 +2258,7 @@ func DeepCopy_v1_RBDVolumeSource(in RBDVolumeSource, out *RBDVolumeSource, c *co } func DeepCopy_v1_RangeAllocation(in RangeAllocation, out *RangeAllocation, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2522,28 +2274,20 @@ func DeepCopy_v1_RangeAllocation(in RangeAllocation, out *RangeAllocation, c *co } func DeepCopy_v1_ReplicationController(in ReplicationController, out *ReplicationController, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } if err := DeepCopy_v1_ReplicationControllerSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_v1_ReplicationControllerStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } func DeepCopy_v1_ReplicationControllerList(in ReplicationControllerList, out *ReplicationControllerList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ReplicationController, len(in)) @@ -2597,16 +2341,12 @@ func DeepCopy_v1_ReplicationControllerStatus(in ReplicationControllerStatus, out func DeepCopy_v1_ResourceFieldSelector(in ResourceFieldSelector, out *ResourceFieldSelector, c *conversion.Cloner) error { out.ContainerName = in.ContainerName out.Resource = in.Resource - if err := resource.DeepCopy_resource_Quantity(in.Divisor, &out.Divisor, c); err != nil { - return err - } + out.Divisor = in.Divisor.DeepCopy() return nil } func DeepCopy_v1_ResourceQuota(in ResourceQuota, out *ResourceQuota, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2620,12 +2360,8 @@ func DeepCopy_v1_ResourceQuota(in ResourceQuota, out *ResourceQuota, c *conversi } func DeepCopy_v1_ResourceQuotaList(in ResourceQuotaList, out *ResourceQuotaList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ResourceQuota, len(in)) @@ -2645,11 +2381,7 @@ func DeepCopy_v1_ResourceQuotaSpec(in ResourceQuotaSpec, out *ResourceQuotaSpec, in, out := in.Hard, &out.Hard *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Hard = nil @@ -2671,11 +2403,7 @@ func DeepCopy_v1_ResourceQuotaStatus(in ResourceQuotaStatus, out *ResourceQuotaS in, out := in.Hard, &out.Hard *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Hard = nil @@ -2684,11 +2412,7 @@ func DeepCopy_v1_ResourceQuotaStatus(in ResourceQuotaStatus, out *ResourceQuotaS in, out := in.Used, &out.Used *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Used = nil @@ -2701,11 +2425,7 @@ func DeepCopy_v1_ResourceRequirements(in ResourceRequirements, out *ResourceRequ in, out := in.Limits, &out.Limits *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Limits = nil @@ -2714,11 +2434,7 @@ func DeepCopy_v1_ResourceRequirements(in ResourceRequirements, out *ResourceRequ in, out := in.Requests, &out.Requests *out = make(ResourceList) for key, val := range in { - newVal := new(resource.Quantity) - if err := resource.DeepCopy_resource_Quantity(val, newVal, c); err != nil { - return err - } - (*out)[key] = *newVal + (*out)[key] = val.DeepCopy() } } else { out.Requests = nil @@ -2735,9 +2451,7 @@ func DeepCopy_v1_SELinuxOptions(in SELinuxOptions, out *SELinuxOptions, c *conve } func DeepCopy_v1_Secret(in Secret, out *Secret, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2768,20 +2482,14 @@ func DeepCopy_v1_Secret(in Secret, out *Secret, c *conversion.Cloner) error { } func DeepCopy_v1_SecretKeySelector(in SecretKeySelector, out *SecretKeySelector, c *conversion.Cloner) error { - if err := DeepCopy_v1_LocalObjectReference(in.LocalObjectReference, &out.LocalObjectReference, c); err != nil { - return err - } + out.LocalObjectReference = in.LocalObjectReference out.Key = in.Key return nil } func DeepCopy_v1_SecretList(in SecretList, out *SecretList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Secret, len(in)) @@ -2802,9 +2510,7 @@ func DeepCopy_v1_SecretVolumeSource(in SecretVolumeSource, out *SecretVolumeSour in, out := in.Items, &out.Items *out = make([]KeyToPath, len(in)) for i := range in { - if err := DeepCopy_v1_KeyToPath(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Items = nil @@ -2832,9 +2538,7 @@ func DeepCopy_v1_SecurityContext(in SecurityContext, out *SecurityContext, c *co if in.SELinuxOptions != nil { in, out := in.SELinuxOptions, &out.SELinuxOptions *out = new(SELinuxOptions) - if err := DeepCopy_v1_SELinuxOptions(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SELinuxOptions = nil } @@ -2863,19 +2567,13 @@ func DeepCopy_v1_SecurityContext(in SecurityContext, out *SecurityContext, c *co } func DeepCopy_v1_SerializedReference(in SerializedReference, out *SerializedReference, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := DeepCopy_v1_ObjectReference(in.Reference, &out.Reference, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.Reference = in.Reference return nil } func DeepCopy_v1_Service(in Service, out *Service, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2889,9 +2587,7 @@ func DeepCopy_v1_Service(in Service, out *Service, c *conversion.Cloner) error { } func DeepCopy_v1_ServiceAccount(in ServiceAccount, out *ServiceAccount, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -2899,9 +2595,7 @@ func DeepCopy_v1_ServiceAccount(in ServiceAccount, out *ServiceAccount, c *conve in, out := in.Secrets, &out.Secrets *out = make([]ObjectReference, len(in)) for i := range in { - if err := DeepCopy_v1_ObjectReference(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Secrets = nil @@ -2910,9 +2604,7 @@ func DeepCopy_v1_ServiceAccount(in ServiceAccount, out *ServiceAccount, c *conve in, out := in.ImagePullSecrets, &out.ImagePullSecrets *out = make([]LocalObjectReference, len(in)) for i := range in { - if err := DeepCopy_v1_LocalObjectReference(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.ImagePullSecrets = nil @@ -2921,12 +2613,8 @@ func DeepCopy_v1_ServiceAccount(in ServiceAccount, out *ServiceAccount, c *conve } func DeepCopy_v1_ServiceAccountList(in ServiceAccountList, out *ServiceAccountList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ServiceAccount, len(in)) @@ -2942,12 +2630,8 @@ func DeepCopy_v1_ServiceAccountList(in ServiceAccountList, out *ServiceAccountLi } func DeepCopy_v1_ServiceList(in ServiceList, out *ServiceList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Service, len(in)) @@ -2966,17 +2650,13 @@ func DeepCopy_v1_ServicePort(in ServicePort, out *ServicePort, c *conversion.Clo out.Name = in.Name out.Protocol = in.Protocol out.Port = in.Port - if err := intstr.DeepCopy_intstr_IntOrString(in.TargetPort, &out.TargetPort, c); err != nil { - return err - } + out.TargetPort = in.TargetPort out.NodePort = in.NodePort return nil } func DeepCopy_v1_ServiceProxyOptions(in ServiceProxyOptions, out *ServiceProxyOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Path = in.Path return nil } @@ -2986,9 +2666,7 @@ func DeepCopy_v1_ServiceSpec(in ServiceSpec, out *ServiceSpec, c *conversion.Clo in, out := in.Ports, &out.Ports *out = make([]ServicePort, len(in)) for i := range in { - if err := DeepCopy_v1_ServicePort(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Ports = nil @@ -3038,9 +2716,7 @@ func DeepCopy_v1_ServiceStatus(in ServiceStatus, out *ServiceStatus, c *conversi } func DeepCopy_v1_TCPSocketAction(in TCPSocketAction, out *TCPSocketAction, c *conversion.Cloner) error { - if err := intstr.DeepCopy_intstr_IntOrString(in.Port, &out.Port, c); err != nil { - return err - } + out.Port = in.Port return nil } @@ -3079,45 +2755,35 @@ func DeepCopy_v1_VolumeSource(in VolumeSource, out *VolumeSource, c *conversion. if in.HostPath != nil { in, out := in.HostPath, &out.HostPath *out = new(HostPathVolumeSource) - if err := DeepCopy_v1_HostPathVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.HostPath = nil } if in.EmptyDir != nil { in, out := in.EmptyDir, &out.EmptyDir *out = new(EmptyDirVolumeSource) - if err := DeepCopy_v1_EmptyDirVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.EmptyDir = nil } if in.GCEPersistentDisk != nil { in, out := in.GCEPersistentDisk, &out.GCEPersistentDisk *out = new(GCEPersistentDiskVolumeSource) - if err := DeepCopy_v1_GCEPersistentDiskVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.GCEPersistentDisk = nil } if in.AWSElasticBlockStore != nil { in, out := in.AWSElasticBlockStore, &out.AWSElasticBlockStore *out = new(AWSElasticBlockStoreVolumeSource) - if err := DeepCopy_v1_AWSElasticBlockStoreVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.AWSElasticBlockStore = nil } if in.GitRepo != nil { in, out := in.GitRepo, &out.GitRepo *out = new(GitRepoVolumeSource) - if err := DeepCopy_v1_GitRepoVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.GitRepo = nil } @@ -3133,36 +2799,28 @@ func DeepCopy_v1_VolumeSource(in VolumeSource, out *VolumeSource, c *conversion. if in.NFS != nil { in, out := in.NFS, &out.NFS *out = new(NFSVolumeSource) - if err := DeepCopy_v1_NFSVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.NFS = nil } if in.ISCSI != nil { in, out := in.ISCSI, &out.ISCSI *out = new(ISCSIVolumeSource) - if err := DeepCopy_v1_ISCSIVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.ISCSI = nil } if in.Glusterfs != nil { in, out := in.Glusterfs, &out.Glusterfs *out = new(GlusterfsVolumeSource) - if err := DeepCopy_v1_GlusterfsVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Glusterfs = nil } if in.PersistentVolumeClaim != nil { in, out := in.PersistentVolumeClaim, &out.PersistentVolumeClaim *out = new(PersistentVolumeClaimVolumeSource) - if err := DeepCopy_v1_PersistentVolumeClaimVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.PersistentVolumeClaim = nil } @@ -3187,9 +2845,7 @@ func DeepCopy_v1_VolumeSource(in VolumeSource, out *VolumeSource, c *conversion. if in.Cinder != nil { in, out := in.Cinder, &out.Cinder *out = new(CinderVolumeSource) - if err := DeepCopy_v1_CinderVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Cinder = nil } @@ -3205,9 +2861,7 @@ func DeepCopy_v1_VolumeSource(in VolumeSource, out *VolumeSource, c *conversion. if in.Flocker != nil { in, out := in.Flocker, &out.Flocker *out = new(FlockerVolumeSource) - if err := DeepCopy_v1_FlockerVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Flocker = nil } @@ -3232,9 +2886,7 @@ func DeepCopy_v1_VolumeSource(in VolumeSource, out *VolumeSource, c *conversion. if in.AzureFile != nil { in, out := in.AzureFile, &out.AzureFile *out = new(AzureFileVolumeSource) - if err := DeepCopy_v1_AzureFileVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.AzureFile = nil } @@ -3250,9 +2902,7 @@ func DeepCopy_v1_VolumeSource(in VolumeSource, out *VolumeSource, c *conversion. if in.VsphereVolume != nil { in, out := in.VsphereVolume, &out.VsphereVolume *out = new(VsphereVirtualDiskVolumeSource) - if err := DeepCopy_v1_VsphereVirtualDiskVolumeSource(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.VsphereVolume = nil } diff --git a/pkg/apis/apps/deep_copy_generated.go b/pkg/apis/apps/deep_copy_generated.go index 290c647fad0..bdeb0b19c83 100644 --- a/pkg/apis/apps/deep_copy_generated.go +++ b/pkg/apis/apps/deep_copy_generated.go @@ -39,9 +39,7 @@ func init() { } func DeepCopy_apps_PetSet(in PetSet, out *PetSet, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -55,12 +53,8 @@ func DeepCopy_apps_PetSet(in PetSet, out *PetSet, c *conversion.Cloner) error { } func DeepCopy_apps_PetSetList(in PetSetList, out *PetSetList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]PetSet, len(in)) diff --git a/pkg/apis/apps/v1alpha1/deep_copy_generated.go b/pkg/apis/apps/v1alpha1/deep_copy_generated.go index 0f000c0c1e3..871894214f0 100644 --- a/pkg/apis/apps/v1alpha1/deep_copy_generated.go +++ b/pkg/apis/apps/v1alpha1/deep_copy_generated.go @@ -40,9 +40,7 @@ func init() { } func DeepCopy_v1alpha1_PetSet(in PetSet, out *PetSet, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -56,12 +54,8 @@ func DeepCopy_v1alpha1_PetSet(in PetSet, out *PetSet, c *conversion.Cloner) erro } func DeepCopy_v1alpha1_PetSetList(in PetSetList, out *PetSetList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]PetSet, len(in)) diff --git a/pkg/apis/authentication.k8s.io/deep_copy_generated.go b/pkg/apis/authentication.k8s.io/deep_copy_generated.go index e339b4f850c..6424875d524 100644 --- a/pkg/apis/authentication.k8s.io/deep_copy_generated.go +++ b/pkg/apis/authentication.k8s.io/deep_copy_generated.go @@ -22,7 +22,6 @@ package authentication import ( api "k8s.io/kubernetes/pkg/api" - unversioned "k8s.io/kubernetes/pkg/api/unversioned" conversion "k8s.io/kubernetes/pkg/conversion" ) @@ -39,12 +38,8 @@ func init() { } func DeepCopy_authenticationk8sio_TokenReview(in TokenReview, out *TokenReview, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := DeepCopy_authenticationk8sio_TokenReviewSpec(in.Spec, &out.Spec, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.Spec = in.Spec if err := DeepCopy_authenticationk8sio_TokenReviewStatus(in.Status, &out.Status, c); err != nil { return err } diff --git a/pkg/apis/authentication.k8s.io/v1beta1/deep_copy_generated.go b/pkg/apis/authentication.k8s.io/v1beta1/deep_copy_generated.go index f24f3ba8592..d3294bfc8d0 100644 --- a/pkg/apis/authentication.k8s.io/v1beta1/deep_copy_generated.go +++ b/pkg/apis/authentication.k8s.io/v1beta1/deep_copy_generated.go @@ -22,7 +22,6 @@ package v1beta1 import ( api "k8s.io/kubernetes/pkg/api" - unversioned "k8s.io/kubernetes/pkg/api/unversioned" conversion "k8s.io/kubernetes/pkg/conversion" ) @@ -39,12 +38,8 @@ func init() { } func DeepCopy_v1beta1_TokenReview(in TokenReview, out *TokenReview, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := DeepCopy_v1beta1_TokenReviewSpec(in.Spec, &out.Spec, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.Spec = in.Spec if err := DeepCopy_v1beta1_TokenReviewStatus(in.Status, &out.Status, c); err != nil { return err } diff --git a/pkg/apis/authorization/deep_copy_generated.go b/pkg/apis/authorization/deep_copy_generated.go index d6aebc6ca35..5e92552c037 100644 --- a/pkg/apis/authorization/deep_copy_generated.go +++ b/pkg/apis/authorization/deep_copy_generated.go @@ -22,7 +22,6 @@ package authorization import ( api "k8s.io/kubernetes/pkg/api" - unversioned "k8s.io/kubernetes/pkg/api/unversioned" conversion "k8s.io/kubernetes/pkg/conversion" ) @@ -43,15 +42,11 @@ func init() { } func DeepCopy_authorization_LocalSubjectAccessReview(in LocalSubjectAccessReview, out *LocalSubjectAccessReview, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_authorization_SubjectAccessReviewSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_authorization_SubjectAccessReviewStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } @@ -73,15 +68,11 @@ func DeepCopy_authorization_ResourceAttributes(in ResourceAttributes, out *Resou } func DeepCopy_authorization_SelfSubjectAccessReview(in SelfSubjectAccessReview, out *SelfSubjectAccessReview, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_authorization_SelfSubjectAccessReviewSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_authorization_SubjectAccessReviewStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } @@ -89,18 +80,14 @@ func DeepCopy_authorization_SelfSubjectAccessReviewSpec(in SelfSubjectAccessRevi if in.ResourceAttributes != nil { in, out := in.ResourceAttributes, &out.ResourceAttributes *out = new(ResourceAttributes) - if err := DeepCopy_authorization_ResourceAttributes(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.ResourceAttributes = nil } if in.NonResourceAttributes != nil { in, out := in.NonResourceAttributes, &out.NonResourceAttributes *out = new(NonResourceAttributes) - if err := DeepCopy_authorization_NonResourceAttributes(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.NonResourceAttributes = nil } @@ -108,15 +95,11 @@ func DeepCopy_authorization_SelfSubjectAccessReviewSpec(in SelfSubjectAccessRevi } func DeepCopy_authorization_SubjectAccessReview(in SubjectAccessReview, out *SubjectAccessReview, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_authorization_SubjectAccessReviewSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_authorization_SubjectAccessReviewStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } @@ -124,18 +107,14 @@ func DeepCopy_authorization_SubjectAccessReviewSpec(in SubjectAccessReviewSpec, if in.ResourceAttributes != nil { in, out := in.ResourceAttributes, &out.ResourceAttributes *out = new(ResourceAttributes) - if err := DeepCopy_authorization_ResourceAttributes(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.ResourceAttributes = nil } if in.NonResourceAttributes != nil { in, out := in.NonResourceAttributes, &out.NonResourceAttributes *out = new(NonResourceAttributes) - if err := DeepCopy_authorization_NonResourceAttributes(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.NonResourceAttributes = nil } diff --git a/pkg/apis/authorization/v1beta1/deep_copy_generated.go b/pkg/apis/authorization/v1beta1/deep_copy_generated.go index 59f56c36480..23d2edf03dc 100644 --- a/pkg/apis/authorization/v1beta1/deep_copy_generated.go +++ b/pkg/apis/authorization/v1beta1/deep_copy_generated.go @@ -22,7 +22,6 @@ package v1beta1 import ( api "k8s.io/kubernetes/pkg/api" - unversioned "k8s.io/kubernetes/pkg/api/unversioned" conversion "k8s.io/kubernetes/pkg/conversion" ) @@ -43,15 +42,11 @@ func init() { } func DeepCopy_v1beta1_LocalSubjectAccessReview(in LocalSubjectAccessReview, out *LocalSubjectAccessReview, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1beta1_SubjectAccessReviewSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_v1beta1_SubjectAccessReviewStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } @@ -73,15 +68,11 @@ func DeepCopy_v1beta1_ResourceAttributes(in ResourceAttributes, out *ResourceAtt } func DeepCopy_v1beta1_SelfSubjectAccessReview(in SelfSubjectAccessReview, out *SelfSubjectAccessReview, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1beta1_SelfSubjectAccessReviewSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_v1beta1_SubjectAccessReviewStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } @@ -89,18 +80,14 @@ func DeepCopy_v1beta1_SelfSubjectAccessReviewSpec(in SelfSubjectAccessReviewSpec if in.ResourceAttributes != nil { in, out := in.ResourceAttributes, &out.ResourceAttributes *out = new(ResourceAttributes) - if err := DeepCopy_v1beta1_ResourceAttributes(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.ResourceAttributes = nil } if in.NonResourceAttributes != nil { in, out := in.NonResourceAttributes, &out.NonResourceAttributes *out = new(NonResourceAttributes) - if err := DeepCopy_v1beta1_NonResourceAttributes(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.NonResourceAttributes = nil } @@ -108,15 +95,11 @@ func DeepCopy_v1beta1_SelfSubjectAccessReviewSpec(in SelfSubjectAccessReviewSpec } func DeepCopy_v1beta1_SubjectAccessReview(in SubjectAccessReview, out *SubjectAccessReview, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := DeepCopy_v1beta1_SubjectAccessReviewSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_v1beta1_SubjectAccessReviewStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } @@ -124,18 +107,14 @@ func DeepCopy_v1beta1_SubjectAccessReviewSpec(in SubjectAccessReviewSpec, out *S if in.ResourceAttributes != nil { in, out := in.ResourceAttributes, &out.ResourceAttributes *out = new(ResourceAttributes) - if err := DeepCopy_v1beta1_ResourceAttributes(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.ResourceAttributes = nil } if in.NonResourceAttributes != nil { in, out := in.NonResourceAttributes, &out.NonResourceAttributes *out = new(NonResourceAttributes) - if err := DeepCopy_v1beta1_NonResourceAttributes(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.NonResourceAttributes = nil } diff --git a/pkg/apis/autoscaling/deep_copy_generated.go b/pkg/apis/autoscaling/deep_copy_generated.go index b3a6987c954..1ddcc135b03 100644 --- a/pkg/apis/autoscaling/deep_copy_generated.go +++ b/pkg/apis/autoscaling/deep_copy_generated.go @@ -50,9 +50,7 @@ func DeepCopy_autoscaling_CrossVersionObjectReference(in CrossVersionObjectRefer } func DeepCopy_autoscaling_HorizontalPodAutoscaler(in HorizontalPodAutoscaler, out *HorizontalPodAutoscaler, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -66,12 +64,8 @@ func DeepCopy_autoscaling_HorizontalPodAutoscaler(in HorizontalPodAutoscaler, ou } func DeepCopy_autoscaling_HorizontalPodAutoscalerList(in HorizontalPodAutoscalerList, out *HorizontalPodAutoscalerList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]HorizontalPodAutoscaler, len(in)) @@ -87,9 +81,7 @@ func DeepCopy_autoscaling_HorizontalPodAutoscalerList(in HorizontalPodAutoscaler } func DeepCopy_autoscaling_HorizontalPodAutoscalerSpec(in HorizontalPodAutoscalerSpec, out *HorizontalPodAutoscalerSpec, c *conversion.Cloner) error { - if err := DeepCopy_autoscaling_CrossVersionObjectReference(in.ScaleTargetRef, &out.ScaleTargetRef, c); err != nil { - return err - } + out.ScaleTargetRef = in.ScaleTargetRef if in.MinReplicas != nil { in, out := in.MinReplicas, &out.MinReplicas *out = new(int32) @@ -119,9 +111,7 @@ func DeepCopy_autoscaling_HorizontalPodAutoscalerStatus(in HorizontalPodAutoscal if in.LastScaleTime != nil { in, out := in.LastScaleTime, &out.LastScaleTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.LastScaleTime = nil } @@ -138,18 +128,12 @@ func DeepCopy_autoscaling_HorizontalPodAutoscalerStatus(in HorizontalPodAutoscal } func DeepCopy_autoscaling_Scale(in Scale, out *Scale, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } - if err := DeepCopy_autoscaling_ScaleSpec(in.Spec, &out.Spec, c); err != nil { - return err - } - if err := DeepCopy_autoscaling_ScaleStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Spec = in.Spec + out.Status = in.Status return nil } diff --git a/pkg/apis/autoscaling/v1/deep_copy_generated.go b/pkg/apis/autoscaling/v1/deep_copy_generated.go index ff94c7aa3bd..af0245eb31b 100644 --- a/pkg/apis/autoscaling/v1/deep_copy_generated.go +++ b/pkg/apis/autoscaling/v1/deep_copy_generated.go @@ -51,9 +51,7 @@ func DeepCopy_v1_CrossVersionObjectReference(in CrossVersionObjectReference, out } func DeepCopy_v1_HorizontalPodAutoscaler(in HorizontalPodAutoscaler, out *HorizontalPodAutoscaler, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api_v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -67,12 +65,8 @@ func DeepCopy_v1_HorizontalPodAutoscaler(in HorizontalPodAutoscaler, out *Horizo } func DeepCopy_v1_HorizontalPodAutoscalerList(in HorizontalPodAutoscalerList, out *HorizontalPodAutoscalerList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]HorizontalPodAutoscaler, len(in)) @@ -88,9 +82,7 @@ func DeepCopy_v1_HorizontalPodAutoscalerList(in HorizontalPodAutoscalerList, out } func DeepCopy_v1_HorizontalPodAutoscalerSpec(in HorizontalPodAutoscalerSpec, out *HorizontalPodAutoscalerSpec, c *conversion.Cloner) error { - if err := DeepCopy_v1_CrossVersionObjectReference(in.ScaleTargetRef, &out.ScaleTargetRef, c); err != nil { - return err - } + out.ScaleTargetRef = in.ScaleTargetRef if in.MinReplicas != nil { in, out := in.MinReplicas, &out.MinReplicas *out = new(int32) @@ -120,9 +112,7 @@ func DeepCopy_v1_HorizontalPodAutoscalerStatus(in HorizontalPodAutoscalerStatus, if in.LastScaleTime != nil { in, out := in.LastScaleTime, &out.LastScaleTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.LastScaleTime = nil } @@ -139,18 +129,12 @@ func DeepCopy_v1_HorizontalPodAutoscalerStatus(in HorizontalPodAutoscalerStatus, } func DeepCopy_v1_Scale(in Scale, out *Scale, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api_v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } - if err := DeepCopy_v1_ScaleSpec(in.Spec, &out.Spec, c); err != nil { - return err - } - if err := DeepCopy_v1_ScaleStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Spec = in.Spec + out.Status = in.Status return nil } diff --git a/pkg/apis/batch/deep_copy_generated.go b/pkg/apis/batch/deep_copy_generated.go index c8106aff072..a6adac46708 100644 --- a/pkg/apis/batch/deep_copy_generated.go +++ b/pkg/apis/batch/deep_copy_generated.go @@ -46,9 +46,7 @@ func init() { } func DeepCopy_batch_Job(in Job, out *Job, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -64,24 +62,16 @@ func DeepCopy_batch_Job(in Job, out *Job, c *conversion.Cloner) error { func DeepCopy_batch_JobCondition(in JobCondition, out *JobCondition, c *conversion.Cloner) error { out.Type = in.Type out.Status = in.Status - if err := unversioned.DeepCopy_unversioned_Time(in.LastProbeTime, &out.LastProbeTime, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.LastTransitionTime, &out.LastTransitionTime, c); err != nil { - return err - } + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() out.Reason = in.Reason out.Message = in.Message return nil } func DeepCopy_batch_JobList(in JobList, out *JobList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Job, len(in)) @@ -155,18 +145,14 @@ func DeepCopy_batch_JobStatus(in JobStatus, out *JobStatus, c *conversion.Cloner if in.StartTime != nil { in, out := in.StartTime, &out.StartTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.StartTime = nil } if in.CompletionTime != nil { in, out := in.CompletionTime, &out.CompletionTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.CompletionTime = nil } @@ -177,9 +163,7 @@ func DeepCopy_batch_JobStatus(in JobStatus, out *JobStatus, c *conversion.Cloner } func DeepCopy_batch_JobTemplate(in JobTemplate, out *JobTemplate, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -200,9 +184,7 @@ func DeepCopy_batch_JobTemplateSpec(in JobTemplateSpec, out *JobTemplateSpec, c } func DeepCopy_batch_ScheduledJob(in ScheduledJob, out *ScheduledJob, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -216,12 +198,8 @@ func DeepCopy_batch_ScheduledJob(in ScheduledJob, out *ScheduledJob, c *conversi } func DeepCopy_batch_ScheduledJobList(in ScheduledJobList, out *ScheduledJobList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ScheduledJob, len(in)) @@ -264,9 +242,7 @@ func DeepCopy_batch_ScheduledJobStatus(in ScheduledJobStatus, out *ScheduledJobS in, out := in.Active, &out.Active *out = make([]api.ObjectReference, len(in)) for i := range in { - if err := api.DeepCopy_api_ObjectReference(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Active = nil @@ -274,9 +250,7 @@ func DeepCopy_batch_ScheduledJobStatus(in ScheduledJobStatus, out *ScheduledJobS if in.LastScheduleTime != nil { in, out := in.LastScheduleTime, &out.LastScheduleTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.LastScheduleTime = nil } diff --git a/pkg/apis/batch/v1/deep_copy_generated.go b/pkg/apis/batch/v1/deep_copy_generated.go index 5374d69144d..53d4eab004d 100644 --- a/pkg/apis/batch/v1/deep_copy_generated.go +++ b/pkg/apis/batch/v1/deep_copy_generated.go @@ -43,9 +43,7 @@ func init() { } func DeepCopy_v1_Job(in Job, out *Job, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api_v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -61,24 +59,16 @@ func DeepCopy_v1_Job(in Job, out *Job, c *conversion.Cloner) error { func DeepCopy_v1_JobCondition(in JobCondition, out *JobCondition, c *conversion.Cloner) error { out.Type = in.Type out.Status = in.Status - if err := unversioned.DeepCopy_unversioned_Time(in.LastProbeTime, &out.LastProbeTime, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.LastTransitionTime, &out.LastTransitionTime, c); err != nil { - return err - } + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() out.Reason = in.Reason out.Message = in.Message return nil } func DeepCopy_v1_JobList(in JobList, out *JobList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Job, len(in)) @@ -152,18 +142,14 @@ func DeepCopy_v1_JobStatus(in JobStatus, out *JobStatus, c *conversion.Cloner) e if in.StartTime != nil { in, out := in.StartTime, &out.StartTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.StartTime = nil } if in.CompletionTime != nil { in, out := in.CompletionTime, &out.CompletionTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.CompletionTime = nil } diff --git a/pkg/apis/batch/v2alpha1/deep_copy_generated.go b/pkg/apis/batch/v2alpha1/deep_copy_generated.go index f33eb9c21b6..baa1b59646e 100644 --- a/pkg/apis/batch/v2alpha1/deep_copy_generated.go +++ b/pkg/apis/batch/v2alpha1/deep_copy_generated.go @@ -49,9 +49,7 @@ func init() { } func DeepCopy_v2alpha1_Job(in Job, out *Job, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -67,24 +65,16 @@ func DeepCopy_v2alpha1_Job(in Job, out *Job, c *conversion.Cloner) error { func DeepCopy_v2alpha1_JobCondition(in JobCondition, out *JobCondition, c *conversion.Cloner) error { out.Type = in.Type out.Status = in.Status - if err := unversioned.DeepCopy_unversioned_Time(in.LastProbeTime, &out.LastProbeTime, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.LastTransitionTime, &out.LastTransitionTime, c); err != nil { - return err - } + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() out.Reason = in.Reason out.Message = in.Message return nil } func DeepCopy_v2alpha1_JobList(in JobList, out *JobList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Job, len(in)) @@ -158,18 +148,14 @@ func DeepCopy_v2alpha1_JobStatus(in JobStatus, out *JobStatus, c *conversion.Clo if in.StartTime != nil { in, out := in.StartTime, &out.StartTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.StartTime = nil } if in.CompletionTime != nil { in, out := in.CompletionTime, &out.CompletionTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.CompletionTime = nil } @@ -180,9 +166,7 @@ func DeepCopy_v2alpha1_JobStatus(in JobStatus, out *JobStatus, c *conversion.Clo } func DeepCopy_v2alpha1_JobTemplate(in JobTemplate, out *JobTemplate, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -240,9 +224,7 @@ func DeepCopy_v2alpha1_LabelSelectorRequirement(in LabelSelectorRequirement, out } func DeepCopy_v2alpha1_ScheduledJob(in ScheduledJob, out *ScheduledJob, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -256,12 +238,8 @@ func DeepCopy_v2alpha1_ScheduledJob(in ScheduledJob, out *ScheduledJob, c *conve } func DeepCopy_v2alpha1_ScheduledJobList(in ScheduledJobList, out *ScheduledJobList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ScheduledJob, len(in)) @@ -304,9 +282,7 @@ func DeepCopy_v2alpha1_ScheduledJobStatus(in ScheduledJobStatus, out *ScheduledJ in, out := in.Active, &out.Active *out = make([]v1.ObjectReference, len(in)) for i := range in { - if err := v1.DeepCopy_v1_ObjectReference(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Active = nil @@ -314,9 +290,7 @@ func DeepCopy_v2alpha1_ScheduledJobStatus(in ScheduledJobStatus, out *ScheduledJ if in.LastScheduleTime != nil { in, out := in.LastScheduleTime, &out.LastScheduleTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.LastScheduleTime = nil } diff --git a/pkg/apis/certificates/deep_copy_generated.go b/pkg/apis/certificates/deep_copy_generated.go index 51f1323f73d..07b1b2d4d91 100644 --- a/pkg/apis/certificates/deep_copy_generated.go +++ b/pkg/apis/certificates/deep_copy_generated.go @@ -22,7 +22,6 @@ package certificates import ( api "k8s.io/kubernetes/pkg/api" - unversioned "k8s.io/kubernetes/pkg/api/unversioned" conversion "k8s.io/kubernetes/pkg/conversion" ) @@ -40,9 +39,7 @@ func init() { } func DeepCopy_certificates_CertificateSigningRequest(in CertificateSigningRequest, out *CertificateSigningRequest, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -59,19 +56,13 @@ func DeepCopy_certificates_CertificateSigningRequestCondition(in CertificateSign out.Type = in.Type out.Reason = in.Reason out.Message = in.Message - if err := unversioned.DeepCopy_unversioned_Time(in.LastUpdateTime, &out.LastUpdateTime, c); err != nil { - return err - } + out.LastUpdateTime = in.LastUpdateTime.DeepCopy() return nil } func DeepCopy_certificates_CertificateSigningRequestList(in CertificateSigningRequestList, out *CertificateSigningRequestList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]CertificateSigningRequest, len(in)) diff --git a/pkg/apis/certificates/v1alpha1/deep_copy_generated.go b/pkg/apis/certificates/v1alpha1/deep_copy_generated.go index 6a3e80a0b90..5b4a3ad220b 100644 --- a/pkg/apis/certificates/v1alpha1/deep_copy_generated.go +++ b/pkg/apis/certificates/v1alpha1/deep_copy_generated.go @@ -22,7 +22,6 @@ package v1alpha1 import ( api "k8s.io/kubernetes/pkg/api" - unversioned "k8s.io/kubernetes/pkg/api/unversioned" v1 "k8s.io/kubernetes/pkg/api/v1" conversion "k8s.io/kubernetes/pkg/conversion" ) @@ -41,9 +40,7 @@ func init() { } func DeepCopy_v1alpha1_CertificateSigningRequest(in CertificateSigningRequest, out *CertificateSigningRequest, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -60,19 +57,13 @@ func DeepCopy_v1alpha1_CertificateSigningRequestCondition(in CertificateSigningR out.Type = in.Type out.Reason = in.Reason out.Message = in.Message - if err := unversioned.DeepCopy_unversioned_Time(in.LastUpdateTime, &out.LastUpdateTime, c); err != nil { - return err - } + out.LastUpdateTime = in.LastUpdateTime.DeepCopy() return nil } func DeepCopy_v1alpha1_CertificateSigningRequestList(in CertificateSigningRequestList, out *CertificateSigningRequestList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]CertificateSigningRequest, len(in)) diff --git a/pkg/apis/componentconfig/deep_copy_generated.go b/pkg/apis/componentconfig/deep_copy_generated.go index 9c4259a8dd1..37615c4da52 100644 --- a/pkg/apis/componentconfig/deep_copy_generated.go +++ b/pkg/apis/componentconfig/deep_copy_generated.go @@ -22,7 +22,6 @@ package componentconfig import ( api "k8s.io/kubernetes/pkg/api" - unversioned "k8s.io/kubernetes/pkg/api/unversioned" conversion "k8s.io/kubernetes/pkg/conversion" ) @@ -55,9 +54,7 @@ func DeepCopy_componentconfig_IPVar(in IPVar, out *IPVar, c *conversion.Cloner) } func DeepCopy_componentconfig_KubeControllerManagerConfiguration(in KubeControllerManagerConfiguration, out *KubeControllerManagerConfiguration, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Port = in.Port out.Address = in.Address out.CloudProvider = in.CloudProvider @@ -74,46 +71,22 @@ func DeepCopy_componentconfig_KubeControllerManagerConfiguration(in KubeControll out.LookupCacheSizeForRC = in.LookupCacheSizeForRC out.LookupCacheSizeForRS = in.LookupCacheSizeForRS out.LookupCacheSizeForDaemonSet = in.LookupCacheSizeForDaemonSet - if err := unversioned.DeepCopy_unversioned_Duration(in.ServiceSyncPeriod, &out.ServiceSyncPeriod, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.NodeSyncPeriod, &out.NodeSyncPeriod, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.ResourceQuotaSyncPeriod, &out.ResourceQuotaSyncPeriod, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.NamespaceSyncPeriod, &out.NamespaceSyncPeriod, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.PVClaimBinderSyncPeriod, &out.PVClaimBinderSyncPeriod, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.MinResyncPeriod, &out.MinResyncPeriod, c); err != nil { - return err - } + out.ServiceSyncPeriod = in.ServiceSyncPeriod + out.NodeSyncPeriod = in.NodeSyncPeriod + out.ResourceQuotaSyncPeriod = in.ResourceQuotaSyncPeriod + out.NamespaceSyncPeriod = in.NamespaceSyncPeriod + out.PVClaimBinderSyncPeriod = in.PVClaimBinderSyncPeriod + out.MinResyncPeriod = in.MinResyncPeriod out.TerminatedPodGCThreshold = in.TerminatedPodGCThreshold - if err := unversioned.DeepCopy_unversioned_Duration(in.HorizontalPodAutoscalerSyncPeriod, &out.HorizontalPodAutoscalerSyncPeriod, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.DeploymentControllerSyncPeriod, &out.DeploymentControllerSyncPeriod, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.PodEvictionTimeout, &out.PodEvictionTimeout, c); err != nil { - return err - } + out.HorizontalPodAutoscalerSyncPeriod = in.HorizontalPodAutoscalerSyncPeriod + out.DeploymentControllerSyncPeriod = in.DeploymentControllerSyncPeriod + out.PodEvictionTimeout = in.PodEvictionTimeout out.DeletingPodsQps = in.DeletingPodsQps out.DeletingPodsBurst = in.DeletingPodsBurst - if err := unversioned.DeepCopy_unversioned_Duration(in.NodeMonitorGracePeriod, &out.NodeMonitorGracePeriod, c); err != nil { - return err - } + out.NodeMonitorGracePeriod = in.NodeMonitorGracePeriod out.RegisterRetryCount = in.RegisterRetryCount - if err := unversioned.DeepCopy_unversioned_Duration(in.NodeStartupGracePeriod, &out.NodeStartupGracePeriod, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.NodeMonitorPeriod, &out.NodeMonitorPeriod, c); err != nil { - return err - } + out.NodeStartupGracePeriod = in.NodeStartupGracePeriod + out.NodeMonitorPeriod = in.NodeMonitorPeriod out.ServiceAccountKeyFile = in.ServiceAccountKeyFile out.EnableProfiling = in.EnableProfiling out.ClusterName = in.ClusterName @@ -126,23 +99,15 @@ func DeepCopy_componentconfig_KubeControllerManagerConfiguration(in KubeControll out.ContentType = in.ContentType out.KubeAPIQPS = in.KubeAPIQPS out.KubeAPIBurst = in.KubeAPIBurst - if err := DeepCopy_componentconfig_LeaderElectionConfiguration(in.LeaderElection, &out.LeaderElection, c); err != nil { - return err - } - if err := DeepCopy_componentconfig_VolumeConfiguration(in.VolumeConfiguration, &out.VolumeConfiguration, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.ControllerStartInterval, &out.ControllerStartInterval, c); err != nil { - return err - } + out.LeaderElection = in.LeaderElection + out.VolumeConfiguration = in.VolumeConfiguration + out.ControllerStartInterval = in.ControllerStartInterval out.EnableGarbageCollector = in.EnableGarbageCollector return nil } func DeepCopy_componentconfig_KubeProxyConfiguration(in KubeProxyConfiguration, out *KubeProxyConfiguration, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.BindAddress = in.BindAddress out.ClusterCIDR = in.ClusterCIDR out.HealthzBindAddress = in.HealthzBindAddress @@ -155,9 +120,7 @@ func DeepCopy_componentconfig_KubeProxyConfiguration(in KubeProxyConfiguration, } else { out.IPTablesMasqueradeBit = nil } - if err := unversioned.DeepCopy_unversioned_Duration(in.IPTablesSyncPeriod, &out.IPTablesSyncPeriod, c); err != nil { - return err - } + out.IPTablesSyncPeriod = in.IPTablesSyncPeriod out.KubeconfigPath = in.KubeconfigPath out.MasqueradeAll = in.MasqueradeAll out.Master = in.Master @@ -171,20 +134,14 @@ func DeepCopy_componentconfig_KubeProxyConfiguration(in KubeProxyConfiguration, out.Mode = in.Mode out.PortRange = in.PortRange out.ResourceContainer = in.ResourceContainer - if err := unversioned.DeepCopy_unversioned_Duration(in.UDPIdleTimeout, &out.UDPIdleTimeout, c); err != nil { - return err - } + out.UDPIdleTimeout = in.UDPIdleTimeout out.ConntrackMax = in.ConntrackMax - if err := unversioned.DeepCopy_unversioned_Duration(in.ConntrackTCPEstablishedTimeout, &out.ConntrackTCPEstablishedTimeout, c); err != nil { - return err - } + out.ConntrackTCPEstablishedTimeout = in.ConntrackTCPEstablishedTimeout return nil } func DeepCopy_componentconfig_KubeSchedulerConfiguration(in KubeSchedulerConfiguration, out *KubeSchedulerConfiguration, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Port = in.Port out.Address = in.Address out.AlgorithmProvider = in.AlgorithmProvider @@ -196,23 +153,15 @@ func DeepCopy_componentconfig_KubeSchedulerConfiguration(in KubeSchedulerConfigu out.SchedulerName = in.SchedulerName out.HardPodAffinitySymmetricWeight = in.HardPodAffinitySymmetricWeight out.FailureDomains = in.FailureDomains - if err := DeepCopy_componentconfig_LeaderElectionConfiguration(in.LeaderElection, &out.LeaderElection, c); err != nil { - return err - } + out.LeaderElection = in.LeaderElection return nil } func DeepCopy_componentconfig_KubeletConfiguration(in KubeletConfiguration, out *KubeletConfiguration, c *conversion.Cloner) error { out.Config = in.Config - if err := unversioned.DeepCopy_unversioned_Duration(in.SyncFrequency, &out.SyncFrequency, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.FileCheckFrequency, &out.FileCheckFrequency, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.HTTPCheckFrequency, &out.HTTPCheckFrequency, c); err != nil { - return err - } + out.SyncFrequency = in.SyncFrequency + out.FileCheckFrequency = in.FileCheckFrequency + out.HTTPCheckFrequency = in.HTTPCheckFrequency out.ManifestURL = in.ManifestURL out.ManifestURLHeader = in.ManifestURLHeader out.EnableServer = in.EnableServer @@ -236,9 +185,7 @@ func DeepCopy_componentconfig_KubeletConfiguration(in KubeletConfiguration, out out.EventRecordQPS = in.EventRecordQPS out.EventBurst = in.EventBurst out.EnableDebuggingHandlers = in.EnableDebuggingHandlers - if err := unversioned.DeepCopy_unversioned_Duration(in.MinimumGCAge, &out.MinimumGCAge, c); err != nil { - return err - } + out.MinimumGCAge = in.MinimumGCAge out.MaxPerPodContainerCount = in.MaxPerPodContainerCount out.MaxContainerCount = in.MaxContainerCount out.CAdvisorPort = in.CAdvisorPort @@ -249,21 +196,13 @@ func DeepCopy_componentconfig_KubeletConfiguration(in KubeletConfiguration, out out.ClusterDomain = in.ClusterDomain out.MasterServiceNamespace = in.MasterServiceNamespace out.ClusterDNS = in.ClusterDNS - if err := unversioned.DeepCopy_unversioned_Duration(in.StreamingConnectionIdleTimeout, &out.StreamingConnectionIdleTimeout, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.NodeStatusUpdateFrequency, &out.NodeStatusUpdateFrequency, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.ImageMinimumGCAge, &out.ImageMinimumGCAge, c); err != nil { - return err - } + out.StreamingConnectionIdleTimeout = in.StreamingConnectionIdleTimeout + out.NodeStatusUpdateFrequency = in.NodeStatusUpdateFrequency + out.ImageMinimumGCAge = in.ImageMinimumGCAge out.ImageGCHighThresholdPercent = in.ImageGCHighThresholdPercent out.ImageGCLowThresholdPercent = in.ImageGCLowThresholdPercent out.LowDiskSpaceThresholdMB = in.LowDiskSpaceThresholdMB - if err := unversioned.DeepCopy_unversioned_Duration(in.VolumeStatsAggPeriod, &out.VolumeStatsAggPeriod, c); err != nil { - return err - } + out.VolumeStatsAggPeriod = in.VolumeStatsAggPeriod out.NetworkPluginName = in.NetworkPluginName out.NetworkPluginDir = in.NetworkPluginDir out.VolumePluginDir = in.VolumePluginDir @@ -274,9 +213,7 @@ func DeepCopy_componentconfig_KubeletConfiguration(in KubeletConfiguration, out out.SystemCgroups = in.SystemCgroups out.CgroupRoot = in.CgroupRoot out.ContainerRuntime = in.ContainerRuntime - if err := unversioned.DeepCopy_unversioned_Duration(in.RuntimeRequestTimeout, &out.RuntimeRequestTimeout, c); err != nil { - return err - } + out.RuntimeRequestTimeout = in.RuntimeRequestTimeout out.RktPath = in.RktPath out.RktAPIEndpoint = in.RktAPIEndpoint out.RktStage1Image = in.RktStage1Image @@ -300,9 +237,7 @@ func DeepCopy_componentconfig_KubeletConfiguration(in KubeletConfiguration, out out.KubeAPIBurst = in.KubeAPIBurst out.SerializeImagePulls = in.SerializeImagePulls out.ExperimentalFlannelOverlay = in.ExperimentalFlannelOverlay - if err := unversioned.DeepCopy_unversioned_Duration(in.OutOfDiskTransitionFrequency, &out.OutOfDiskTransitionFrequency, c); err != nil { - return err - } + out.OutOfDiskTransitionFrequency = in.OutOfDiskTransitionFrequency out.NodeIP = in.NodeIP if in.NodeLabels != nil { in, out := in.NodeLabels, &out.NodeLabels @@ -318,9 +253,7 @@ func DeepCopy_componentconfig_KubeletConfiguration(in KubeletConfiguration, out out.EvictionHard = in.EvictionHard out.EvictionSoft = in.EvictionSoft out.EvictionSoftGracePeriod = in.EvictionSoftGracePeriod - if err := unversioned.DeepCopy_unversioned_Duration(in.EvictionPressureTransitionPeriod, &out.EvictionPressureTransitionPeriod, c); err != nil { - return err - } + out.EvictionPressureTransitionPeriod = in.EvictionPressureTransitionPeriod out.EvictionMaxPodGracePeriod = in.EvictionMaxPodGracePeriod out.PodsPerCore = in.PodsPerCore out.EnableControllerAttachDetach = in.EnableControllerAttachDetach @@ -329,15 +262,9 @@ func DeepCopy_componentconfig_KubeletConfiguration(in KubeletConfiguration, out func DeepCopy_componentconfig_LeaderElectionConfiguration(in LeaderElectionConfiguration, out *LeaderElectionConfiguration, c *conversion.Cloner) error { out.LeaderElect = in.LeaderElect - if err := unversioned.DeepCopy_unversioned_Duration(in.LeaseDuration, &out.LeaseDuration, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.RenewDeadline, &out.RenewDeadline, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.RetryPeriod, &out.RetryPeriod, c); err != nil { - return err - } + out.LeaseDuration = in.LeaseDuration + out.RenewDeadline = in.RenewDeadline + out.RetryPeriod = in.RetryPeriod return nil } @@ -366,9 +293,7 @@ func DeepCopy_componentconfig_PortRangeVar(in PortRangeVar, out *PortRangeVar, c func DeepCopy_componentconfig_VolumeConfiguration(in VolumeConfiguration, out *VolumeConfiguration, c *conversion.Cloner) error { out.EnableHostPathProvisioning = in.EnableHostPathProvisioning out.EnableDynamicProvisioning = in.EnableDynamicProvisioning - if err := DeepCopy_componentconfig_PersistentVolumeRecyclerConfiguration(in.PersistentVolumeRecyclerConfiguration, &out.PersistentVolumeRecyclerConfiguration, c); err != nil { - return err - } + out.PersistentVolumeRecyclerConfiguration = in.PersistentVolumeRecyclerConfiguration out.FlexVolumePluginDir = in.FlexVolumePluginDir return nil } diff --git a/pkg/apis/componentconfig/v1alpha1/deep_copy_generated.go b/pkg/apis/componentconfig/v1alpha1/deep_copy_generated.go index 69904b5e9b4..04d9ab09b9c 100644 --- a/pkg/apis/componentconfig/v1alpha1/deep_copy_generated.go +++ b/pkg/apis/componentconfig/v1alpha1/deep_copy_generated.go @@ -22,7 +22,6 @@ package v1alpha1 import ( api "k8s.io/kubernetes/pkg/api" - unversioned "k8s.io/kubernetes/pkg/api/unversioned" conversion "k8s.io/kubernetes/pkg/conversion" ) @@ -38,9 +37,7 @@ func init() { } func DeepCopy_v1alpha1_KubeProxyConfiguration(in KubeProxyConfiguration, out *KubeProxyConfiguration, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.BindAddress = in.BindAddress out.ClusterCIDR = in.ClusterCIDR out.HealthzBindAddress = in.HealthzBindAddress @@ -53,9 +50,7 @@ func DeepCopy_v1alpha1_KubeProxyConfiguration(in KubeProxyConfiguration, out *Ku } else { out.IPTablesMasqueradeBit = nil } - if err := unversioned.DeepCopy_unversioned_Duration(in.IPTablesSyncPeriod, &out.IPTablesSyncPeriod, c); err != nil { - return err - } + out.IPTablesSyncPeriod = in.IPTablesSyncPeriod out.KubeconfigPath = in.KubeconfigPath out.MasqueradeAll = in.MasqueradeAll out.Master = in.Master @@ -69,20 +64,14 @@ func DeepCopy_v1alpha1_KubeProxyConfiguration(in KubeProxyConfiguration, out *Ku out.Mode = in.Mode out.PortRange = in.PortRange out.ResourceContainer = in.ResourceContainer - if err := unversioned.DeepCopy_unversioned_Duration(in.UDPIdleTimeout, &out.UDPIdleTimeout, c); err != nil { - return err - } + out.UDPIdleTimeout = in.UDPIdleTimeout out.ConntrackMax = in.ConntrackMax - if err := unversioned.DeepCopy_unversioned_Duration(in.ConntrackTCPEstablishedTimeout, &out.ConntrackTCPEstablishedTimeout, c); err != nil { - return err - } + out.ConntrackTCPEstablishedTimeout = in.ConntrackTCPEstablishedTimeout return nil } func DeepCopy_v1alpha1_KubeSchedulerConfiguration(in KubeSchedulerConfiguration, out *KubeSchedulerConfiguration, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Port = in.Port out.Address = in.Address out.AlgorithmProvider = in.AlgorithmProvider @@ -114,14 +103,8 @@ func DeepCopy_v1alpha1_LeaderElectionConfiguration(in LeaderElectionConfiguratio } else { out.LeaderElect = nil } - if err := unversioned.DeepCopy_unversioned_Duration(in.LeaseDuration, &out.LeaseDuration, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.RenewDeadline, &out.RenewDeadline, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Duration(in.RetryPeriod, &out.RetryPeriod, c); err != nil { - return err - } + out.LeaseDuration = in.LeaseDuration + out.RenewDeadline = in.RenewDeadline + out.RetryPeriod = in.RetryPeriod return nil } diff --git a/pkg/apis/extensions/deep_copy_generated.go b/pkg/apis/extensions/deep_copy_generated.go index 0e0e0c3e5af..d7bbf3bbac3 100644 --- a/pkg/apis/extensions/deep_copy_generated.go +++ b/pkg/apis/extensions/deep_copy_generated.go @@ -22,7 +22,6 @@ package extensions import ( api "k8s.io/kubernetes/pkg/api" - resource "k8s.io/kubernetes/pkg/api/resource" unversioned "k8s.io/kubernetes/pkg/api/unversioned" conversion "k8s.io/kubernetes/pkg/conversion" intstr "k8s.io/kubernetes/pkg/util/intstr" @@ -97,9 +96,7 @@ func DeepCopy_extensions_APIVersion(in APIVersion, out *APIVersion, c *conversio func DeepCopy_extensions_CustomMetricCurrentStatus(in CustomMetricCurrentStatus, out *CustomMetricCurrentStatus, c *conversion.Cloner) error { out.Name = in.Name - if err := resource.DeepCopy_resource_Quantity(in.CurrentValue, &out.CurrentValue, c); err != nil { - return err - } + out.CurrentValue = in.CurrentValue.DeepCopy() return nil } @@ -120,9 +117,7 @@ func DeepCopy_extensions_CustomMetricCurrentStatusList(in CustomMetricCurrentSta func DeepCopy_extensions_CustomMetricTarget(in CustomMetricTarget, out *CustomMetricTarget, c *conversion.Cloner) error { out.Name = in.Name - if err := resource.DeepCopy_resource_Quantity(in.TargetValue, &out.TargetValue, c); err != nil { - return err - } + out.TargetValue = in.TargetValue.DeepCopy() return nil } @@ -142,28 +137,20 @@ func DeepCopy_extensions_CustomMetricTargetList(in CustomMetricTargetList, out * } func DeepCopy_extensions_DaemonSet(in DaemonSet, out *DaemonSet, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } if err := DeepCopy_extensions_DaemonSetSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_extensions_DaemonSetStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } func DeepCopy_extensions_DaemonSetList(in DaemonSetList, out *DaemonSetList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]DaemonSet, len(in)) @@ -202,28 +189,20 @@ func DeepCopy_extensions_DaemonSetStatus(in DaemonSetStatus, out *DaemonSetStatu } func DeepCopy_extensions_Deployment(in Deployment, out *Deployment, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } if err := DeepCopy_extensions_DeploymentSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_extensions_DeploymentStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } func DeepCopy_extensions_DeploymentList(in DeploymentList, out *DeploymentList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Deployment, len(in)) @@ -239,9 +218,7 @@ func DeepCopy_extensions_DeploymentList(in DeploymentList, out *DeploymentList, } func DeepCopy_extensions_DeploymentRollback(in DeploymentRollback, out *DeploymentRollback, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Name = in.Name if in.UpdatedAnnotations != nil { in, out := in.UpdatedAnnotations, &out.UpdatedAnnotations @@ -252,9 +229,7 @@ func DeepCopy_extensions_DeploymentRollback(in DeploymentRollback, out *Deployme } else { out.UpdatedAnnotations = nil } - if err := DeepCopy_extensions_RollbackConfig(in.RollbackTo, &out.RollbackTo, c); err != nil { - return err - } + out.RollbackTo = in.RollbackTo return nil } @@ -287,9 +262,7 @@ func DeepCopy_extensions_DeploymentSpec(in DeploymentSpec, out *DeploymentSpec, if in.RollbackTo != nil { in, out := in.RollbackTo, &out.RollbackTo *out = new(RollbackConfig) - if err := DeepCopy_extensions_RollbackConfig(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.RollbackTo = nil } @@ -310,9 +283,7 @@ func DeepCopy_extensions_DeploymentStrategy(in DeploymentStrategy, out *Deployme if in.RollingUpdate != nil { in, out := in.RollingUpdate, &out.RollingUpdate *out = new(RollingUpdateDeployment) - if err := DeepCopy_extensions_RollingUpdateDeployment(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.RollingUpdate = nil } @@ -325,9 +296,7 @@ func DeepCopy_extensions_FSGroupStrategyOptions(in FSGroupStrategyOptions, out * in, out := in.Ranges, &out.Ranges *out = make([]IDRange, len(in)) for i := range in { - if err := DeepCopy_extensions_IDRange(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Ranges = nil @@ -337,9 +306,7 @@ func DeepCopy_extensions_FSGroupStrategyOptions(in FSGroupStrategyOptions, out * func DeepCopy_extensions_HTTPIngressPath(in HTTPIngressPath, out *HTTPIngressPath, c *conversion.Cloner) error { out.Path = in.Path - if err := DeepCopy_extensions_IngressBackend(in.Backend, &out.Backend, c); err != nil { - return err - } + out.Backend = in.Backend return nil } @@ -348,9 +315,7 @@ func DeepCopy_extensions_HTTPIngressRuleValue(in HTTPIngressRuleValue, out *HTTP in, out := in.Paths, &out.Paths *out = make([]HTTPIngressPath, len(in)) for i := range in { - if err := DeepCopy_extensions_HTTPIngressPath(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Paths = nil @@ -371,9 +336,7 @@ func DeepCopy_extensions_IDRange(in IDRange, out *IDRange, c *conversion.Cloner) } func DeepCopy_extensions_Ingress(in Ingress, out *Ingress, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -388,19 +351,13 @@ func DeepCopy_extensions_Ingress(in Ingress, out *Ingress, c *conversion.Cloner) func DeepCopy_extensions_IngressBackend(in IngressBackend, out *IngressBackend, c *conversion.Cloner) error { out.ServiceName = in.ServiceName - if err := intstr.DeepCopy_intstr_IntOrString(in.ServicePort, &out.ServicePort, c); err != nil { - return err - } + out.ServicePort = in.ServicePort return nil } func DeepCopy_extensions_IngressList(in IngressList, out *IngressList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Ingress, len(in)) @@ -440,9 +397,7 @@ func DeepCopy_extensions_IngressSpec(in IngressSpec, out *IngressSpec, c *conver if in.Backend != nil { in, out := in.Backend, &out.Backend *out = new(IngressBackend) - if err := DeepCopy_extensions_IngressBackend(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Backend = nil } @@ -491,9 +446,7 @@ func DeepCopy_extensions_IngressTLS(in IngressTLS, out *IngressTLS, c *conversio } func DeepCopy_extensions_NetworkPolicy(in NetworkPolicy, out *NetworkPolicy, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -530,12 +483,8 @@ func DeepCopy_extensions_NetworkPolicyIngressRule(in NetworkPolicyIngressRule, o } func DeepCopy_extensions_NetworkPolicyList(in NetworkPolicyList, out *NetworkPolicyList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]NetworkPolicy, len(in)) @@ -576,20 +525,14 @@ func DeepCopy_extensions_NetworkPolicyPort(in NetworkPolicyPort, out *NetworkPol if in.Protocol != nil { in, out := in.Protocol, &out.Protocol *out = new(api.Protocol) - if newVal, err := c.DeepCopy(*in); err != nil { - return err - } else { - **out = newVal.(api.Protocol) - } + **out = *in } else { out.Protocol = nil } if in.Port != nil { in, out := in.Port, &out.Port *out = new(intstr.IntOrString) - if err := intstr.DeepCopy_intstr_IntOrString(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Port = nil } @@ -615,9 +558,7 @@ func DeepCopy_extensions_NetworkPolicySpec(in NetworkPolicySpec, out *NetworkPol } func DeepCopy_extensions_PodSecurityPolicy(in PodSecurityPolicy, out *PodSecurityPolicy, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -628,12 +569,8 @@ func DeepCopy_extensions_PodSecurityPolicy(in PodSecurityPolicy, out *PodSecurit } func DeepCopy_extensions_PodSecurityPolicyList(in PodSecurityPolicyList, out *PodSecurityPolicyList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]PodSecurityPolicy, len(in)) @@ -691,9 +628,7 @@ func DeepCopy_extensions_PodSecurityPolicySpec(in PodSecurityPolicySpec, out *Po in, out := in.HostPorts, &out.HostPorts *out = make([]HostPortRange, len(in)) for i := range in { - if err := DeepCopy_extensions_HostPortRange(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.HostPorts = nil @@ -717,28 +652,20 @@ func DeepCopy_extensions_PodSecurityPolicySpec(in PodSecurityPolicySpec, out *Po } func DeepCopy_extensions_ReplicaSet(in ReplicaSet, out *ReplicaSet, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } if err := DeepCopy_extensions_ReplicaSetSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_extensions_ReplicaSetStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } func DeepCopy_extensions_ReplicaSetList(in ReplicaSetList, out *ReplicaSetList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ReplicaSet, len(in)) @@ -778,9 +705,7 @@ func DeepCopy_extensions_ReplicaSetStatus(in ReplicaSetStatus, out *ReplicaSetSt } func DeepCopy_extensions_ReplicationControllerDummy(in ReplicationControllerDummy, out *ReplicationControllerDummy, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta return nil } @@ -790,12 +715,8 @@ func DeepCopy_extensions_RollbackConfig(in RollbackConfig, out *RollbackConfig, } func DeepCopy_extensions_RollingUpdateDeployment(in RollingUpdateDeployment, out *RollingUpdateDeployment, c *conversion.Cloner) error { - if err := intstr.DeepCopy_intstr_IntOrString(in.MaxUnavailable, &out.MaxUnavailable, c); err != nil { - return err - } - if err := intstr.DeepCopy_intstr_IntOrString(in.MaxSurge, &out.MaxSurge, c); err != nil { - return err - } + out.MaxUnavailable = in.MaxUnavailable + out.MaxSurge = in.MaxSurge return nil } @@ -805,9 +726,7 @@ func DeepCopy_extensions_RunAsUserStrategyOptions(in RunAsUserStrategyOptions, o in, out := in.Ranges, &out.Ranges *out = make([]IDRange, len(in)) for i := range in { - if err := DeepCopy_extensions_IDRange(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Ranges = nil @@ -820,9 +739,7 @@ func DeepCopy_extensions_SELinuxStrategyOptions(in SELinuxStrategyOptions, out * if in.SELinuxOptions != nil { in, out := in.SELinuxOptions, &out.SELinuxOptions *out = new(api.SELinuxOptions) - if err := api.DeepCopy_api_SELinuxOptions(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SELinuxOptions = nil } @@ -830,15 +747,11 @@ func DeepCopy_extensions_SELinuxStrategyOptions(in SELinuxStrategyOptions, out * } func DeepCopy_extensions_Scale(in Scale, out *Scale, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } - if err := DeepCopy_extensions_ScaleSpec(in.Spec, &out.Spec, c); err != nil { - return err - } + out.Spec = in.Spec if err := DeepCopy_extensions_ScaleStatus(in.Status, &out.Status, c); err != nil { return err } @@ -870,9 +783,7 @@ func DeepCopy_extensions_SupplementalGroupsStrategyOptions(in SupplementalGroups in, out := in.Ranges, &out.Ranges *out = make([]IDRange, len(in)) for i := range in { - if err := DeepCopy_extensions_IDRange(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Ranges = nil @@ -881,9 +792,7 @@ func DeepCopy_extensions_SupplementalGroupsStrategyOptions(in SupplementalGroups } func DeepCopy_extensions_ThirdPartyResource(in ThirdPartyResource, out *ThirdPartyResource, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -892,9 +801,7 @@ func DeepCopy_extensions_ThirdPartyResource(in ThirdPartyResource, out *ThirdPar in, out := in.Versions, &out.Versions *out = make([]APIVersion, len(in)) for i := range in { - if err := DeepCopy_extensions_APIVersion(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Versions = nil @@ -903,9 +810,7 @@ func DeepCopy_extensions_ThirdPartyResource(in ThirdPartyResource, out *ThirdPar } func DeepCopy_extensions_ThirdPartyResourceData(in ThirdPartyResourceData, out *ThirdPartyResourceData, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -920,12 +825,8 @@ func DeepCopy_extensions_ThirdPartyResourceData(in ThirdPartyResourceData, out * } func DeepCopy_extensions_ThirdPartyResourceDataList(in ThirdPartyResourceDataList, out *ThirdPartyResourceDataList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ThirdPartyResourceData, len(in)) @@ -941,12 +842,8 @@ func DeepCopy_extensions_ThirdPartyResourceDataList(in ThirdPartyResourceDataLis } func DeepCopy_extensions_ThirdPartyResourceList(in ThirdPartyResourceList, out *ThirdPartyResourceList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ThirdPartyResource, len(in)) diff --git a/pkg/apis/extensions/v1beta1/deep_copy_generated.go b/pkg/apis/extensions/v1beta1/deep_copy_generated.go index 0e30e6e23a7..b7e43ed8826 100644 --- a/pkg/apis/extensions/v1beta1/deep_copy_generated.go +++ b/pkg/apis/extensions/v1beta1/deep_copy_generated.go @@ -22,7 +22,6 @@ package v1beta1 import ( api "k8s.io/kubernetes/pkg/api" - resource "k8s.io/kubernetes/pkg/api/resource" unversioned "k8s.io/kubernetes/pkg/api/unversioned" v1 "k8s.io/kubernetes/pkg/api/v1" conversion "k8s.io/kubernetes/pkg/conversion" @@ -118,9 +117,7 @@ func DeepCopy_v1beta1_CPUTargetUtilization(in CPUTargetUtilization, out *CPUTarg func DeepCopy_v1beta1_CustomMetricCurrentStatus(in CustomMetricCurrentStatus, out *CustomMetricCurrentStatus, c *conversion.Cloner) error { out.Name = in.Name - if err := resource.DeepCopy_resource_Quantity(in.CurrentValue, &out.CurrentValue, c); err != nil { - return err - } + out.CurrentValue = in.CurrentValue.DeepCopy() return nil } @@ -141,9 +138,7 @@ func DeepCopy_v1beta1_CustomMetricCurrentStatusList(in CustomMetricCurrentStatus func DeepCopy_v1beta1_CustomMetricTarget(in CustomMetricTarget, out *CustomMetricTarget, c *conversion.Cloner) error { out.Name = in.Name - if err := resource.DeepCopy_resource_Quantity(in.TargetValue, &out.TargetValue, c); err != nil { - return err - } + out.TargetValue = in.TargetValue.DeepCopy() return nil } @@ -163,28 +158,20 @@ func DeepCopy_v1beta1_CustomMetricTargetList(in CustomMetricTargetList, out *Cus } func DeepCopy_v1beta1_DaemonSet(in DaemonSet, out *DaemonSet, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } if err := DeepCopy_v1beta1_DaemonSetSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_v1beta1_DaemonSetStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } func DeepCopy_v1beta1_DaemonSetList(in DaemonSetList, out *DaemonSetList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]DaemonSet, len(in)) @@ -223,28 +210,20 @@ func DeepCopy_v1beta1_DaemonSetStatus(in DaemonSetStatus, out *DaemonSetStatus, } func DeepCopy_v1beta1_Deployment(in Deployment, out *Deployment, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } if err := DeepCopy_v1beta1_DeploymentSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_v1beta1_DeploymentStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } func DeepCopy_v1beta1_DeploymentList(in DeploymentList, out *DeploymentList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Deployment, len(in)) @@ -260,9 +239,7 @@ func DeepCopy_v1beta1_DeploymentList(in DeploymentList, out *DeploymentList, c * } func DeepCopy_v1beta1_DeploymentRollback(in DeploymentRollback, out *DeploymentRollback, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Name = in.Name if in.UpdatedAnnotations != nil { in, out := in.UpdatedAnnotations, &out.UpdatedAnnotations @@ -273,9 +250,7 @@ func DeepCopy_v1beta1_DeploymentRollback(in DeploymentRollback, out *DeploymentR } else { out.UpdatedAnnotations = nil } - if err := DeepCopy_v1beta1_RollbackConfig(in.RollbackTo, &out.RollbackTo, c); err != nil { - return err - } + out.RollbackTo = in.RollbackTo return nil } @@ -314,9 +289,7 @@ func DeepCopy_v1beta1_DeploymentSpec(in DeploymentSpec, out *DeploymentSpec, c * if in.RollbackTo != nil { in, out := in.RollbackTo, &out.RollbackTo *out = new(RollbackConfig) - if err := DeepCopy_v1beta1_RollbackConfig(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.RollbackTo = nil } @@ -347,9 +320,7 @@ func DeepCopy_v1beta1_DeploymentStrategy(in DeploymentStrategy, out *DeploymentS } func DeepCopy_v1beta1_ExportOptions(in ExportOptions, out *ExportOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Export = in.Export out.Exact = in.Exact return nil @@ -361,9 +332,7 @@ func DeepCopy_v1beta1_FSGroupStrategyOptions(in FSGroupStrategyOptions, out *FSG in, out := in.Ranges, &out.Ranges *out = make([]IDRange, len(in)) for i := range in { - if err := DeepCopy_v1beta1_IDRange(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Ranges = nil @@ -373,9 +342,7 @@ func DeepCopy_v1beta1_FSGroupStrategyOptions(in FSGroupStrategyOptions, out *FSG func DeepCopy_v1beta1_HTTPIngressPath(in HTTPIngressPath, out *HTTPIngressPath, c *conversion.Cloner) error { out.Path = in.Path - if err := DeepCopy_v1beta1_IngressBackend(in.Backend, &out.Backend, c); err != nil { - return err - } + out.Backend = in.Backend return nil } @@ -384,9 +351,7 @@ func DeepCopy_v1beta1_HTTPIngressRuleValue(in HTTPIngressRuleValue, out *HTTPIng in, out := in.Paths, &out.Paths *out = make([]HTTPIngressPath, len(in)) for i := range in { - if err := DeepCopy_v1beta1_HTTPIngressPath(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Paths = nil @@ -395,9 +360,7 @@ func DeepCopy_v1beta1_HTTPIngressRuleValue(in HTTPIngressRuleValue, out *HTTPIng } func DeepCopy_v1beta1_HorizontalPodAutoscaler(in HorizontalPodAutoscaler, out *HorizontalPodAutoscaler, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -411,12 +374,8 @@ func DeepCopy_v1beta1_HorizontalPodAutoscaler(in HorizontalPodAutoscaler, out *H } func DeepCopy_v1beta1_HorizontalPodAutoscalerList(in HorizontalPodAutoscalerList, out *HorizontalPodAutoscalerList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]HorizontalPodAutoscaler, len(in)) @@ -432,9 +391,7 @@ func DeepCopy_v1beta1_HorizontalPodAutoscalerList(in HorizontalPodAutoscalerList } func DeepCopy_v1beta1_HorizontalPodAutoscalerSpec(in HorizontalPodAutoscalerSpec, out *HorizontalPodAutoscalerSpec, c *conversion.Cloner) error { - if err := DeepCopy_v1beta1_SubresourceReference(in.ScaleRef, &out.ScaleRef, c); err != nil { - return err - } + out.ScaleRef = in.ScaleRef if in.MinReplicas != nil { in, out := in.MinReplicas, &out.MinReplicas *out = new(int32) @@ -446,9 +403,7 @@ func DeepCopy_v1beta1_HorizontalPodAutoscalerSpec(in HorizontalPodAutoscalerSpec if in.CPUUtilization != nil { in, out := in.CPUUtilization, &out.CPUUtilization *out = new(CPUTargetUtilization) - if err := DeepCopy_v1beta1_CPUTargetUtilization(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.CPUUtilization = nil } @@ -466,9 +421,7 @@ func DeepCopy_v1beta1_HorizontalPodAutoscalerStatus(in HorizontalPodAutoscalerSt if in.LastScaleTime != nil { in, out := in.LastScaleTime, &out.LastScaleTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.LastScaleTime = nil } @@ -497,9 +450,7 @@ func DeepCopy_v1beta1_IDRange(in IDRange, out *IDRange, c *conversion.Cloner) er } func DeepCopy_v1beta1_Ingress(in Ingress, out *Ingress, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -514,19 +465,13 @@ func DeepCopy_v1beta1_Ingress(in Ingress, out *Ingress, c *conversion.Cloner) er func DeepCopy_v1beta1_IngressBackend(in IngressBackend, out *IngressBackend, c *conversion.Cloner) error { out.ServiceName = in.ServiceName - if err := intstr.DeepCopy_intstr_IntOrString(in.ServicePort, &out.ServicePort, c); err != nil { - return err - } + out.ServicePort = in.ServicePort return nil } func DeepCopy_v1beta1_IngressList(in IngressList, out *IngressList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Ingress, len(in)) @@ -566,9 +511,7 @@ func DeepCopy_v1beta1_IngressSpec(in IngressSpec, out *IngressSpec, c *conversio if in.Backend != nil { in, out := in.Backend, &out.Backend *out = new(IngressBackend) - if err := DeepCopy_v1beta1_IngressBackend(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Backend = nil } @@ -617,9 +560,7 @@ func DeepCopy_v1beta1_IngressTLS(in IngressTLS, out *IngressTLS, c *conversion.C } func DeepCopy_v1beta1_Job(in Job, out *Job, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -635,24 +576,16 @@ func DeepCopy_v1beta1_Job(in Job, out *Job, c *conversion.Cloner) error { func DeepCopy_v1beta1_JobCondition(in JobCondition, out *JobCondition, c *conversion.Cloner) error { out.Type = in.Type out.Status = in.Status - if err := unversioned.DeepCopy_unversioned_Time(in.LastProbeTime, &out.LastProbeTime, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_Time(in.LastTransitionTime, &out.LastTransitionTime, c); err != nil { - return err - } + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() out.Reason = in.Reason out.Message = in.Message return nil } func DeepCopy_v1beta1_JobList(in JobList, out *JobList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Job, len(in)) @@ -726,18 +659,14 @@ func DeepCopy_v1beta1_JobStatus(in JobStatus, out *JobStatus, c *conversion.Clon if in.StartTime != nil { in, out := in.StartTime, &out.StartTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.StartTime = nil } if in.CompletionTime != nil { in, out := in.CompletionTime, &out.CompletionTime *out = new(unversioned.Time) - if err := unversioned.DeepCopy_unversioned_Time(*in, *out, c); err != nil { - return err - } + **out = in.DeepCopy() } else { out.CompletionTime = nil } @@ -785,9 +714,7 @@ func DeepCopy_v1beta1_LabelSelectorRequirement(in LabelSelectorRequirement, out } func DeepCopy_v1beta1_ListOptions(in ListOptions, out *ListOptions, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.LabelSelector = in.LabelSelector out.FieldSelector = in.FieldSelector out.Watch = in.Watch @@ -803,9 +730,7 @@ func DeepCopy_v1beta1_ListOptions(in ListOptions, out *ListOptions, c *conversio } func DeepCopy_v1beta1_NetworkPolicy(in NetworkPolicy, out *NetworkPolicy, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -842,12 +767,8 @@ func DeepCopy_v1beta1_NetworkPolicyIngressRule(in NetworkPolicyIngressRule, out } func DeepCopy_v1beta1_NetworkPolicyList(in NetworkPolicyList, out *NetworkPolicyList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]NetworkPolicy, len(in)) @@ -888,20 +809,14 @@ func DeepCopy_v1beta1_NetworkPolicyPort(in NetworkPolicyPort, out *NetworkPolicy if in.Protocol != nil { in, out := in.Protocol, &out.Protocol *out = new(v1.Protocol) - if newVal, err := c.DeepCopy(*in); err != nil { - return err - } else { - **out = newVal.(v1.Protocol) - } + **out = *in } else { out.Protocol = nil } if in.Port != nil { in, out := in.Port, &out.Port *out = new(intstr.IntOrString) - if err := intstr.DeepCopy_intstr_IntOrString(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.Port = nil } @@ -927,9 +842,7 @@ func DeepCopy_v1beta1_NetworkPolicySpec(in NetworkPolicySpec, out *NetworkPolicy } func DeepCopy_v1beta1_PodSecurityPolicy(in PodSecurityPolicy, out *PodSecurityPolicy, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -940,12 +853,8 @@ func DeepCopy_v1beta1_PodSecurityPolicy(in PodSecurityPolicy, out *PodSecurityPo } func DeepCopy_v1beta1_PodSecurityPolicyList(in PodSecurityPolicyList, out *PodSecurityPolicyList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]PodSecurityPolicy, len(in)) @@ -1003,9 +912,7 @@ func DeepCopy_v1beta1_PodSecurityPolicySpec(in PodSecurityPolicySpec, out *PodSe in, out := in.HostPorts, &out.HostPorts *out = make([]HostPortRange, len(in)) for i := range in { - if err := DeepCopy_v1beta1_HostPortRange(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.HostPorts = nil @@ -1029,28 +936,20 @@ func DeepCopy_v1beta1_PodSecurityPolicySpec(in PodSecurityPolicySpec, out *PodSe } func DeepCopy_v1beta1_ReplicaSet(in ReplicaSet, out *ReplicaSet, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } if err := DeepCopy_v1beta1_ReplicaSetSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_v1beta1_ReplicaSetStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } func DeepCopy_v1beta1_ReplicaSetList(in ReplicaSetList, out *ReplicaSetList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ReplicaSet, len(in)) @@ -1096,9 +995,7 @@ func DeepCopy_v1beta1_ReplicaSetStatus(in ReplicaSetStatus, out *ReplicaSetStatu } func DeepCopy_v1beta1_ReplicationControllerDummy(in ReplicationControllerDummy, out *ReplicationControllerDummy, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta return nil } @@ -1111,18 +1008,14 @@ func DeepCopy_v1beta1_RollingUpdateDeployment(in RollingUpdateDeployment, out *R if in.MaxUnavailable != nil { in, out := in.MaxUnavailable, &out.MaxUnavailable *out = new(intstr.IntOrString) - if err := intstr.DeepCopy_intstr_IntOrString(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.MaxUnavailable = nil } if in.MaxSurge != nil { in, out := in.MaxSurge, &out.MaxSurge *out = new(intstr.IntOrString) - if err := intstr.DeepCopy_intstr_IntOrString(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.MaxSurge = nil } @@ -1135,9 +1028,7 @@ func DeepCopy_v1beta1_RunAsUserStrategyOptions(in RunAsUserStrategyOptions, out in, out := in.Ranges, &out.Ranges *out = make([]IDRange, len(in)) for i := range in { - if err := DeepCopy_v1beta1_IDRange(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Ranges = nil @@ -1150,9 +1041,7 @@ func DeepCopy_v1beta1_SELinuxStrategyOptions(in SELinuxStrategyOptions, out *SEL if in.SELinuxOptions != nil { in, out := in.SELinuxOptions, &out.SELinuxOptions *out = new(v1.SELinuxOptions) - if err := v1.DeepCopy_v1_SELinuxOptions(*in, *out, c); err != nil { - return err - } + **out = *in } else { out.SELinuxOptions = nil } @@ -1160,15 +1049,11 @@ func DeepCopy_v1beta1_SELinuxStrategyOptions(in SELinuxStrategyOptions, out *SEL } func DeepCopy_v1beta1_Scale(in Scale, out *Scale, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } - if err := DeepCopy_v1beta1_ScaleSpec(in.Spec, &out.Spec, c); err != nil { - return err - } + out.Spec = in.Spec if err := DeepCopy_v1beta1_ScaleStatus(in.Status, &out.Status, c); err != nil { return err } @@ -1209,9 +1094,7 @@ func DeepCopy_v1beta1_SupplementalGroupsStrategyOptions(in SupplementalGroupsStr in, out := in.Ranges, &out.Ranges *out = make([]IDRange, len(in)) for i := range in { - if err := DeepCopy_v1beta1_IDRange(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Ranges = nil @@ -1220,9 +1103,7 @@ func DeepCopy_v1beta1_SupplementalGroupsStrategyOptions(in SupplementalGroupsStr } func DeepCopy_v1beta1_ThirdPartyResource(in ThirdPartyResource, out *ThirdPartyResource, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -1231,9 +1112,7 @@ func DeepCopy_v1beta1_ThirdPartyResource(in ThirdPartyResource, out *ThirdPartyR in, out := in.Versions, &out.Versions *out = make([]APIVersion, len(in)) for i := range in { - if err := DeepCopy_v1beta1_APIVersion(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Versions = nil @@ -1242,9 +1121,7 @@ func DeepCopy_v1beta1_ThirdPartyResource(in ThirdPartyResource, out *ThirdPartyR } func DeepCopy_v1beta1_ThirdPartyResourceData(in ThirdPartyResourceData, out *ThirdPartyResourceData, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -1259,12 +1136,8 @@ func DeepCopy_v1beta1_ThirdPartyResourceData(in ThirdPartyResourceData, out *Thi } func DeepCopy_v1beta1_ThirdPartyResourceDataList(in ThirdPartyResourceDataList, out *ThirdPartyResourceDataList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ThirdPartyResourceData, len(in)) @@ -1280,12 +1153,8 @@ func DeepCopy_v1beta1_ThirdPartyResourceDataList(in ThirdPartyResourceDataList, } func DeepCopy_v1beta1_ThirdPartyResourceList(in ThirdPartyResourceList, out *ThirdPartyResourceList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ThirdPartyResource, len(in)) diff --git a/pkg/apis/policy/deep_copy_generated.go b/pkg/apis/policy/deep_copy_generated.go index ab83ab89d62..098a0eed867 100644 --- a/pkg/apis/policy/deep_copy_generated.go +++ b/pkg/apis/policy/deep_copy_generated.go @@ -24,7 +24,6 @@ import ( api "k8s.io/kubernetes/pkg/api" unversioned "k8s.io/kubernetes/pkg/api/unversioned" conversion "k8s.io/kubernetes/pkg/conversion" - intstr "k8s.io/kubernetes/pkg/util/intstr" ) func init() { @@ -40,28 +39,20 @@ func init() { } func DeepCopy_policy_PodDisruptionBudget(in PodDisruptionBudget, out *PodDisruptionBudget, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } if err := DeepCopy_policy_PodDisruptionBudgetSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_policy_PodDisruptionBudgetStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } func DeepCopy_policy_PodDisruptionBudgetList(in PodDisruptionBudgetList, out *PodDisruptionBudgetList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]PodDisruptionBudget, len(in)) @@ -77,9 +68,7 @@ func DeepCopy_policy_PodDisruptionBudgetList(in PodDisruptionBudgetList, out *Po } func DeepCopy_policy_PodDisruptionBudgetSpec(in PodDisruptionBudgetSpec, out *PodDisruptionBudgetSpec, c *conversion.Cloner) error { - if err := intstr.DeepCopy_intstr_IntOrString(in.MinAvailable, &out.MinAvailable, c); err != nil { - return err - } + out.MinAvailable = in.MinAvailable if in.Selector != nil { in, out := in.Selector, &out.Selector *out = new(unversioned.LabelSelector) diff --git a/pkg/apis/policy/v1alpha1/deep_copy_generated.go b/pkg/apis/policy/v1alpha1/deep_copy_generated.go index e284bd31bc9..05f286d09bd 100644 --- a/pkg/apis/policy/v1alpha1/deep_copy_generated.go +++ b/pkg/apis/policy/v1alpha1/deep_copy_generated.go @@ -25,7 +25,6 @@ import ( unversioned "k8s.io/kubernetes/pkg/api/unversioned" v1 "k8s.io/kubernetes/pkg/api/v1" conversion "k8s.io/kubernetes/pkg/conversion" - intstr "k8s.io/kubernetes/pkg/util/intstr" ) func init() { @@ -41,28 +40,20 @@ func init() { } func DeepCopy_v1alpha1_PodDisruptionBudget(in PodDisruptionBudget, out *PodDisruptionBudget, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } if err := DeepCopy_v1alpha1_PodDisruptionBudgetSpec(in.Spec, &out.Spec, c); err != nil { return err } - if err := DeepCopy_v1alpha1_PodDisruptionBudgetStatus(in.Status, &out.Status, c); err != nil { - return err - } + out.Status = in.Status return nil } func DeepCopy_v1alpha1_PodDisruptionBudgetList(in PodDisruptionBudgetList, out *PodDisruptionBudgetList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]PodDisruptionBudget, len(in)) @@ -78,9 +69,7 @@ func DeepCopy_v1alpha1_PodDisruptionBudgetList(in PodDisruptionBudgetList, out * } func DeepCopy_v1alpha1_PodDisruptionBudgetSpec(in PodDisruptionBudgetSpec, out *PodDisruptionBudgetSpec, c *conversion.Cloner) error { - if err := intstr.DeepCopy_intstr_IntOrString(in.MinAvailable, &out.MinAvailable, c); err != nil { - return err - } + out.MinAvailable = in.MinAvailable if in.Selector != nil { in, out := in.Selector, &out.Selector *out = new(unversioned.LabelSelector) diff --git a/pkg/apis/rbac/deep_copy_generated.go b/pkg/apis/rbac/deep_copy_generated.go index 6c2bb5716ea..10d8c40f61e 100644 --- a/pkg/apis/rbac/deep_copy_generated.go +++ b/pkg/apis/rbac/deep_copy_generated.go @@ -22,7 +22,6 @@ package rbac import ( api "k8s.io/kubernetes/pkg/api" - unversioned "k8s.io/kubernetes/pkg/api/unversioned" conversion "k8s.io/kubernetes/pkg/conversion" runtime "k8s.io/kubernetes/pkg/runtime" ) @@ -46,9 +45,7 @@ func init() { } func DeepCopy_rbac_ClusterRole(in ClusterRole, out *ClusterRole, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -67,9 +64,7 @@ func DeepCopy_rbac_ClusterRole(in ClusterRole, out *ClusterRole, c *conversion.C } func DeepCopy_rbac_ClusterRoleBinding(in ClusterRoleBinding, out *ClusterRoleBinding, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -77,26 +72,18 @@ func DeepCopy_rbac_ClusterRoleBinding(in ClusterRoleBinding, out *ClusterRoleBin in, out := in.Subjects, &out.Subjects *out = make([]Subject, len(in)) for i := range in { - if err := DeepCopy_rbac_Subject(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Subjects = nil } - if err := api.DeepCopy_api_ObjectReference(in.RoleRef, &out.RoleRef, c); err != nil { - return err - } + out.RoleRef = in.RoleRef return nil } func DeepCopy_rbac_ClusterRoleBindingList(in ClusterRoleBindingList, out *ClusterRoleBindingList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ClusterRoleBinding, len(in)) @@ -112,12 +99,8 @@ func DeepCopy_rbac_ClusterRoleBindingList(in ClusterRoleBindingList, out *Cluste } func DeepCopy_rbac_ClusterRoleList(in ClusterRoleList, out *ClusterRoleList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ClusterRole, len(in)) @@ -179,9 +162,7 @@ func DeepCopy_rbac_PolicyRule(in PolicyRule, out *PolicyRule, c *conversion.Clon } func DeepCopy_rbac_Role(in Role, out *Role, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -200,9 +181,7 @@ func DeepCopy_rbac_Role(in Role, out *Role, c *conversion.Cloner) error { } func DeepCopy_rbac_RoleBinding(in RoleBinding, out *RoleBinding, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := api.DeepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -210,26 +189,18 @@ func DeepCopy_rbac_RoleBinding(in RoleBinding, out *RoleBinding, c *conversion.C in, out := in.Subjects, &out.Subjects *out = make([]Subject, len(in)) for i := range in { - if err := DeepCopy_rbac_Subject(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Subjects = nil } - if err := api.DeepCopy_api_ObjectReference(in.RoleRef, &out.RoleRef, c); err != nil { - return err - } + out.RoleRef = in.RoleRef return nil } func DeepCopy_rbac_RoleBindingList(in RoleBindingList, out *RoleBindingList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]RoleBinding, len(in)) @@ -245,12 +216,8 @@ func DeepCopy_rbac_RoleBindingList(in RoleBindingList, out *RoleBindingList, c * } func DeepCopy_rbac_RoleList(in RoleList, out *RoleList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Role, len(in)) diff --git a/pkg/apis/rbac/v1alpha1/deep_copy_generated.go b/pkg/apis/rbac/v1alpha1/deep_copy_generated.go index 8b46841482d..3f0e1eb360d 100644 --- a/pkg/apis/rbac/v1alpha1/deep_copy_generated.go +++ b/pkg/apis/rbac/v1alpha1/deep_copy_generated.go @@ -22,7 +22,6 @@ package v1alpha1 import ( api "k8s.io/kubernetes/pkg/api" - unversioned "k8s.io/kubernetes/pkg/api/unversioned" v1 "k8s.io/kubernetes/pkg/api/v1" conversion "k8s.io/kubernetes/pkg/conversion" runtime "k8s.io/kubernetes/pkg/runtime" @@ -47,9 +46,7 @@ func init() { } func DeepCopy_v1alpha1_ClusterRole(in ClusterRole, out *ClusterRole, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -68,9 +65,7 @@ func DeepCopy_v1alpha1_ClusterRole(in ClusterRole, out *ClusterRole, c *conversi } func DeepCopy_v1alpha1_ClusterRoleBinding(in ClusterRoleBinding, out *ClusterRoleBinding, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -78,26 +73,18 @@ func DeepCopy_v1alpha1_ClusterRoleBinding(in ClusterRoleBinding, out *ClusterRol in, out := in.Subjects, &out.Subjects *out = make([]Subject, len(in)) for i := range in { - if err := DeepCopy_v1alpha1_Subject(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Subjects = nil } - if err := v1.DeepCopy_v1_ObjectReference(in.RoleRef, &out.RoleRef, c); err != nil { - return err - } + out.RoleRef = in.RoleRef return nil } func DeepCopy_v1alpha1_ClusterRoleBindingList(in ClusterRoleBindingList, out *ClusterRoleBindingList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ClusterRoleBinding, len(in)) @@ -113,12 +100,8 @@ func DeepCopy_v1alpha1_ClusterRoleBindingList(in ClusterRoleBindingList, out *Cl } func DeepCopy_v1alpha1_ClusterRoleList(in ClusterRoleList, out *ClusterRoleList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]ClusterRole, len(in)) @@ -176,9 +159,7 @@ func DeepCopy_v1alpha1_PolicyRule(in PolicyRule, out *PolicyRule, c *conversion. } func DeepCopy_v1alpha1_Role(in Role, out *Role, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -197,9 +178,7 @@ func DeepCopy_v1alpha1_Role(in Role, out *Role, c *conversion.Cloner) error { } func DeepCopy_v1alpha1_RoleBinding(in RoleBinding, out *RoleBinding, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if err := v1.DeepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil { return err } @@ -207,26 +186,18 @@ func DeepCopy_v1alpha1_RoleBinding(in RoleBinding, out *RoleBinding, c *conversi in, out := in.Subjects, &out.Subjects *out = make([]Subject, len(in)) for i := range in { - if err := DeepCopy_v1alpha1_Subject(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Subjects = nil } - if err := v1.DeepCopy_v1_ObjectReference(in.RoleRef, &out.RoleRef, c); err != nil { - return err - } + out.RoleRef = in.RoleRef return nil } func DeepCopy_v1alpha1_RoleBindingList(in RoleBindingList, out *RoleBindingList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]RoleBinding, len(in)) @@ -242,12 +213,8 @@ func DeepCopy_v1alpha1_RoleBindingList(in RoleBindingList, out *RoleBindingList, } func DeepCopy_v1alpha1_RoleList(in RoleList, out *RoleList, c *conversion.Cloner) error { - if err := unversioned.DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := unversioned.DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta if in.Items != nil { in, out := in.Items, &out.Items *out = make([]Role, len(in)) From b01ac4726fb1b24f1e16a84caabf89ac9dc3c186 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Thu, 16 Jun 2016 16:29:35 -0700 Subject: [PATCH 04/14] go2idl: Consistently handle comments as []string This makes subsequent comment-tag PRs more consistent. --- .../generators/fake/generator_fake_for_type.go | 8 +++----- .../generators/generator_for_group.go | 9 +++------ .../conversion-gen/generators/conversion.go | 7 ++----- .../go2idl/go-to-protobuf/protobuf/generator.go | 7 +++---- cmd/libs/go2idl/parser/parse.go | 17 +++++++++-------- cmd/libs/go2idl/parser/parse_test.go | 16 ++++++++-------- cmd/libs/go2idl/types/comments.go | 3 +-- cmd/libs/go2idl/types/types.go | 8 ++++---- 8 files changed, 33 insertions(+), 42 deletions(-) diff --git a/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_type.go b/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_type.go index b341653ce13..81c750d0a41 100644 --- a/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_type.go +++ b/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_type.go @@ -95,11 +95,9 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io. } // allow user to define a group name that's different from the one parsed from the directory. - for _, comment := range c.Universe.Package(g.inputPackage).DocComments { - comment = strings.TrimLeft(comment, "//") - if override, ok := types.ExtractCommentTags("+", comment)["groupName"]; ok { - groupName = override - } + p := c.Universe.Package(g.inputPackage) + if override, ok := types.ExtractCommentTags("+", p.DocComments)["groupName"]; ok { + groupName = override } m := map[string]interface{}{ diff --git a/cmd/libs/go2idl/client-gen/generators/generator_for_group.go b/cmd/libs/go2idl/client-gen/generators/generator_for_group.go index 9dca192a49e..265f5e584c2 100644 --- a/cmd/libs/go2idl/client-gen/generators/generator_for_group.go +++ b/cmd/libs/go2idl/client-gen/generators/generator_for_group.go @@ -18,7 +18,6 @@ package generators import ( "io" - "strings" "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/normalization" "k8s.io/kubernetes/cmd/libs/go2idl/generator" @@ -74,11 +73,9 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer groupName = "" } // allow user to define a group name that's different from the one parsed from the directory. - for _, comment := range c.Universe.Package(g.inputPacakge).DocComments { - comment = strings.TrimLeft(comment, "//") - if override, ok := types.ExtractCommentTags("+", comment)["groupName"]; ok && override != "" { - groupName = override - } + p := c.Universe.Package(g.inputPacakge) + if override, ok := types.ExtractCommentTags("+", p.DocComments)["groupName"]; ok && override != "" { + groupName = override } m := map[string]interface{}{ diff --git a/cmd/libs/go2idl/conversion-gen/generators/conversion.go b/cmd/libs/go2idl/conversion-gen/generators/conversion.go index 35dc1f3f37f..9eb6bd88a00 100644 --- a/cmd/libs/go2idl/conversion-gen/generators/conversion.go +++ b/cmd/libs/go2idl/conversion-gen/generators/conversion.go @@ -232,11 +232,8 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat // Only generate conversions for package which explicitly requested it // byt setting "+genversion=true" in their doc.go file. filtered := false - for _, comment := range p.DocComments { - comment := strings.Trim(comment, "//") - if types.ExtractCommentTags("+", comment)["genconversion"] == "true" { - filtered = true - } + if types.ExtractCommentTags("+", p.DocComments)["genconversion"] == "true" { + filtered = true } if !filtered { continue diff --git a/cmd/libs/go2idl/go-to-protobuf/protobuf/generator.go b/cmd/libs/go2idl/go-to-protobuf/protobuf/generator.go index 3bfa47f9150..23de08692d0 100644 --- a/cmd/libs/go2idl/go-to-protobuf/protobuf/generator.go +++ b/cmd/libs/go2idl/go-to-protobuf/protobuf/generator.go @@ -268,7 +268,7 @@ func (b bodyGen) doAlias(sw *generator.SnippetWriter) error { Members: []types.Member{ { Name: "Items", - CommentLines: fmt.Sprintf("items, if empty, will result in an empty %s\n", kind), + CommentLines: []string{fmt.Sprintf("items, if empty, will result in an empty %s\n", kind)}, Type: b.t.Underlying, }, }, @@ -410,7 +410,7 @@ type protoField struct { Nullable bool Extras map[string]string - CommentLines string + CommentLines []string } var ( @@ -687,8 +687,7 @@ func membersToFields(locator ProtobufLocator, t *types.Type, localPackage types. return fields, nil } -func genComment(out io.Writer, comment, indent string) { - lines := strings.Split(comment, "\n") +func genComment(out io.Writer, lines []string, indent string) { for { l := len(lines) if l == 0 || len(lines[l-1]) != 0 { diff --git a/cmd/libs/go2idl/parser/parse.go b/cmd/libs/go2idl/parser/parse.go index 7915d8c6852..3d264a94bb5 100644 --- a/cmd/libs/go2idl/parser/parse.go +++ b/cmd/libs/go2idl/parser/parse.go @@ -371,10 +371,7 @@ func (b *Builder) FindTypes() (types.Universe, error) { for _, f := range b.parsed[pkgPath] { if strings.HasSuffix(f.name, "/doc.go") { if f.file.Doc != nil { - tp := u.Package(pkgPath) - for _, c := range f.file.Doc.List { - tp.DocComments = append(tp.DocComments, c.Text) - } + u.Package(pkgPath).DocComments = splitLines(f.file.Doc.Text()) } } } @@ -386,11 +383,11 @@ func (b *Builder) FindTypes() (types.Universe, error) { if ok { t := b.walkType(u, nil, tn.Type()) c1 := b.priorCommentLines(obj.Pos(), 1) - t.CommentLines = c1.Text() + t.CommentLines = splitLines(c1.Text()) if c1 == nil { - t.SecondClosestCommentLines = b.priorCommentLines(obj.Pos(), 2).Text() + t.SecondClosestCommentLines = splitLines(b.priorCommentLines(obj.Pos(), 2).Text()) } else { - t.SecondClosestCommentLines = b.priorCommentLines(c1.List[0].Slash, 2).Text() + t.SecondClosestCommentLines = splitLines(b.priorCommentLines(c1.List[0].Slash, 2).Text()) } } tf, ok := obj.(*tc.Func) @@ -418,6 +415,10 @@ func (b *Builder) priorCommentLines(pos token.Pos, lines int) *ast.CommentGroup return b.endLineToCommentGroup[key] } +func splitLines(str string) []string { + return strings.Split(strings.TrimRight(str, "\n"), "\n") +} + func tcFuncNameToName(in string) types.Name { name := strings.TrimLeft(in, "func ") nameParts := strings.Split(name, "(") @@ -494,7 +495,7 @@ func (b *Builder) walkType(u types.Universe, useName *types.Name, in tc.Type) *t Embedded: f.Anonymous(), Tags: t.Tag(i), Type: b.walkType(u, nil, f.Type()), - CommentLines: b.priorCommentLines(f.Pos(), 1).Text(), + CommentLines: splitLines(b.priorCommentLines(f.Pos(), 1).Text()), } out.Members = append(out.Members, m) } diff --git a/cmd/libs/go2idl/parser/parse_test.go b/cmd/libs/go2idl/parser/parse_test.go index 50e0f14017b..7ffd198c432 100644 --- a/cmd/libs/go2idl/parser/parse_test.go +++ b/cmd/libs/go2idl/parser/parse_test.go @@ -197,13 +197,13 @@ type Blah struct { if e, a := types.Struct, blahT.Kind; e != a { t.Errorf("struct kind wrong, wanted %v, got %v", e, a) } - if e, a := "Blah is a test.\nA test, I tell you.\n", blahT.CommentLines; e != a { - t.Errorf("struct comment wrong, wanted %v, got %v", e, a) + if e, a := []string{"Blah is a test.", "A test, I tell you."}, blahT.CommentLines; !reflect.DeepEqual(e, a) { + t.Errorf("struct comment wrong, wanted %q, got %q", e, a) } m := types.Member{ Name: "B", Embedded: false, - CommentLines: "B is the second field.\nMultiline comments work.\n", + CommentLines: []string{"B is the second field.", "Multiline comments work."}, Tags: `json:"b"`, Type: types.String, } @@ -216,7 +216,7 @@ func TestParseSecondClosestCommentLines(t *testing.T) { const fileName = "base/foo/proto/foo.go" testCases := []struct { testFile map[string]string - expected string + expected []string }{ { map[string]string{fileName: `package foo @@ -229,7 +229,7 @@ type Blah struct { a int } `}, - "Blah's SecondClosestCommentLines.\nAnother line.\n", + []string{"Blah's SecondClosestCommentLines.", "Another line."}, }, { map[string]string{fileName: `package foo @@ -240,15 +240,15 @@ type Blah struct { a int } `}, - "Blah's SecondClosestCommentLines.\nAnother line.\n", + []string{"Blah's SecondClosestCommentLines.", "Another line."}, }, } for _, test := range testCases { _, u, o := construct(t, test.testFile, namer.NewPublicNamer(0)) t.Logf("%#v", o) blahT := u.Type(types.Name{Package: "base/foo/proto", Name: "Blah"}) - if e, a := test.expected, blahT.SecondClosestCommentLines; e != a { - t.Errorf("struct second closest comment wrong, wanted %v, got %v", e, a) + if e, a := test.expected, blahT.SecondClosestCommentLines; !reflect.DeepEqual(e, a) { + t.Errorf("struct second closest comment wrong, wanted %q, got %q", e, a) } } } diff --git a/cmd/libs/go2idl/types/comments.go b/cmd/libs/go2idl/types/comments.go index 40187ae6228..4be9de6fdbb 100644 --- a/cmd/libs/go2idl/types/comments.go +++ b/cmd/libs/go2idl/types/comments.go @@ -39,8 +39,7 @@ import ( // TODO: Basically we need to define a standard way of giving instructions to // autogenerators in the comments of a type. This is a first iteration of that. // TODO: allow multiple values per key? -func ExtractCommentTags(marker, allLines string) map[string]string { - lines := strings.Split(allLines, "\n") +func ExtractCommentTags(marker string, lines []string) map[string]string { out := map[string]string{} for _, line := range lines { line = strings.Trim(line, " ") diff --git a/cmd/libs/go2idl/types/types.go b/cmd/libs/go2idl/types/types.go index 9e20e937e1e..d34450868c4 100644 --- a/cmd/libs/go2idl/types/types.go +++ b/cmd/libs/go2idl/types/types.go @@ -235,7 +235,7 @@ type Type struct { // If there are comment lines immediately before the type definition, // they will be recorded here. - CommentLines string + CommentLines []string // If there are comment lines preceding the `CommentLines`, they will be // recorded here. There are two cases: @@ -252,7 +252,7 @@ type Type struct { // a blank line // type definition // --- - SecondClosestCommentLines string + SecondClosestCommentLines []string // If Kind == Struct Members []Member @@ -330,7 +330,7 @@ type Member struct { // If there are comment lines immediately before the member in the type // definition, they will be recorded here. - CommentLines string + CommentLines []string // If there are tags along with this member, they will be saved here. Tags string @@ -358,7 +358,7 @@ type Signature struct { // If there are comment lines immediately before this // signature/method/function declaration, they will be recorded here. - CommentLines string + CommentLines []string } // Built in types. From 4a00a0fd6d5e391601f48c6ea4771de4f3750fe9 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Fri, 17 Jun 2016 05:17:29 -0700 Subject: [PATCH 05/14] go2idl: Allow multiple values for a comment-tag This means that tags like: // +foo=bar // +foo=bat ..will produce []string{"bar", "bat"}. This is needed for later commits which will want to use this to make code generation more self contained. --- .../client-gen/generators/client_generator.go | 4 +- .../generators/fake/fake_client_generator.go | 12 +++- .../fake/generator_fake_for_group.go | 2 +- .../fake/generator_fake_for_type.go | 8 +-- .../generators/generator_for_group.go | 6 +- .../generators/generator_for_type.go | 4 +- cmd/libs/go2idl/client-gen/generators/tags.go | 33 +++++++++++ .../conversion-gen/generators/conversion.go | 6 +- .../go2idl/conversion-gen/generators/tags.go | 33 +++++++++++ .../deepcopy-gen/generators/deepcopy.go | 2 +- .../go2idl/deepcopy-gen/generators/tags.go | 33 +++++++++++ .../go-to-protobuf/protobuf/generator.go | 37 +++++++----- .../go2idl/go-to-protobuf/protobuf/tags.go | 33 +++++++++++ cmd/libs/go2idl/set-gen/generators/sets.go | 2 +- cmd/libs/go2idl/set-gen/generators/tags.go | 33 +++++++++++ cmd/libs/go2idl/types/comments.go | 45 ++++++++++---- cmd/libs/go2idl/types/comments_test.go | 59 ++++++++++++++++--- 17 files changed, 300 insertions(+), 52 deletions(-) create mode 100644 cmd/libs/go2idl/client-gen/generators/tags.go create mode 100644 cmd/libs/go2idl/conversion-gen/generators/tags.go create mode 100644 cmd/libs/go2idl/deepcopy-gen/generators/tags.go create mode 100644 cmd/libs/go2idl/go-to-protobuf/protobuf/tags.go create mode 100644 cmd/libs/go2idl/set-gen/generators/tags.go diff --git a/cmd/libs/go2idl/client-gen/generators/client_generator.go b/cmd/libs/go2idl/client-gen/generators/client_generator.go index 81eef6256b3..ac55f9e7768 100644 --- a/cmd/libs/go2idl/client-gen/generators/client_generator.go +++ b/cmd/libs/go2idl/client-gen/generators/client_generator.go @@ -120,7 +120,7 @@ func packageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packag return generators }, FilterFunc: func(c *generator.Context, t *types.Type) bool { - return types.ExtractCommentTags("+", t.SecondClosestCommentLines)["genclient"] == "true" + return extractBoolTagOrDie("genclient", t.SecondClosestCommentLines) == true }, } } @@ -190,7 +190,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat } else { // User has not specified any override for this group version. // filter out types which dont have genclient=true. - if types.ExtractCommentTags("+", t.SecondClosestCommentLines)["genclient"] != "true" { + if extractBoolTagOrDie("genclient", t.SecondClosestCommentLines) == false { continue } } diff --git a/cmd/libs/go2idl/client-gen/generators/fake/fake_client_generator.go b/cmd/libs/go2idl/client-gen/generators/fake/fake_client_generator.go index 76d1f26c527..1e866bf8582 100644 --- a/cmd/libs/go2idl/client-gen/generators/fake/fake_client_generator.go +++ b/cmd/libs/go2idl/client-gen/generators/fake/fake_client_generator.go @@ -20,6 +20,8 @@ import ( "path/filepath" "strings" + "github.com/golang/glog" + clientgenargs "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/args" "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/normalization" "k8s.io/kubernetes/cmd/libs/go2idl/generator" @@ -75,11 +77,19 @@ func PackageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packag return generators }, FilterFunc: func(c *generator.Context, t *types.Type) bool { - return types.ExtractCommentTags("+", t.SecondClosestCommentLines)["genclient"] == "true" + return extractBoolTagOrDie("genclient", t.SecondClosestCommentLines) == true }, } } +func extractBoolTagOrDie(key string, lines []string) bool { + val, err := types.ExtractSingleBoolCommentTag("+", key, false, lines) + if err != nil { + glog.Fatalf(err.Error()) + } + return val +} + func PackageForClientset(customArgs clientgenargs.Args, typedClientBasePath string, boilerplate []byte, generatedBy string) generator.Package { return &generator.DefaultPackage{ // TODO: we'll generate fake clientset for different release in the future. diff --git a/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_group.go b/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_group.go index 0790046d15a..59b947fcbfe 100644 --- a/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_group.go +++ b/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_group.go @@ -72,7 +72,7 @@ func (g *genFakeForGroup) GenerateType(c *generator.Context, t *types.Type, w io "Group": namer.IC(g.group), "realClientPackage": filepath.Base(g.realClientPath), } - namespaced := !(types.ExtractCommentTags("+", t.SecondClosestCommentLines)["nonNamespaced"] == "true") + namespaced := !extractBoolTagOrDie("nonNamespaced", t.SecondClosestCommentLines) if namespaced { sw.Do(getterImplNamespaced, wrapper) } else { diff --git a/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_type.go b/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_type.go index 81c750d0a41..c5c43e84661 100644 --- a/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_type.go +++ b/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_type.go @@ -79,7 +79,7 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io. sw := generator.NewSnippetWriter(w, c, "$", "$") pkg := filepath.Base(t.Name.Package) const pkgTestingCore = "k8s.io/kubernetes/pkg/client/testing/core" - namespaced := !(types.ExtractCommentTags("+", t.SecondClosestCommentLines)["nonNamespaced"] == "true") + namespaced := !extractBoolTagOrDie("nonNamespaced", t.SecondClosestCommentLines) canonicalGroup := g.group if canonicalGroup == "core" { canonicalGroup = "" @@ -96,8 +96,8 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io. // allow user to define a group name that's different from the one parsed from the directory. p := c.Universe.Package(g.inputPackage) - if override, ok := types.ExtractCommentTags("+", p.DocComments)["groupName"]; ok { - groupName = override + if override := types.ExtractCommentTags("+", p.DocComments)["groupName"]; override != nil { + groupName = override[0] } m := map[string]interface{}{ @@ -136,7 +136,7 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io. "NewPatchAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewPatchAction"}), } - noMethods := types.ExtractCommentTags("+", t.SecondClosestCommentLines)["noMethods"] == "true" + noMethods := extractBoolTagOrDie("noMethods", t.SecondClosestCommentLines) == true if namespaced { sw.Do(structNamespaced, m) diff --git a/cmd/libs/go2idl/client-gen/generators/generator_for_group.go b/cmd/libs/go2idl/client-gen/generators/generator_for_group.go index 265f5e584c2..75b5478203d 100644 --- a/cmd/libs/go2idl/client-gen/generators/generator_for_group.go +++ b/cmd/libs/go2idl/client-gen/generators/generator_for_group.go @@ -74,8 +74,8 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer } // allow user to define a group name that's different from the one parsed from the directory. p := c.Universe.Package(g.inputPacakge) - if override, ok := types.ExtractCommentTags("+", p.DocComments)["groupName"]; ok && override != "" { - groupName = override + if override := types.ExtractCommentTags("+", p.DocComments)["groupName"]; override != nil { + groupName = override[0] } m := map[string]interface{}{ @@ -101,7 +101,7 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer "type": t, "Group": namer.IC(normalization.BeforeFirstDot(g.group)), } - namespaced := !(types.ExtractCommentTags("+", t.SecondClosestCommentLines)["nonNamespaced"] == "true") + namespaced := !extractBoolTagOrDie("nonNamespaced", t.SecondClosestCommentLines) if namespaced { sw.Do(getterImplNamespaced, wrapper) } else { diff --git a/cmd/libs/go2idl/client-gen/generators/generator_for_type.go b/cmd/libs/go2idl/client-gen/generators/generator_for_type.go index 056556eb8ce..692f0d79e61 100644 --- a/cmd/libs/go2idl/client-gen/generators/generator_for_type.go +++ b/cmd/libs/go2idl/client-gen/generators/generator_for_type.go @@ -66,7 +66,7 @@ func hasStatus(t *types.Type) bool { func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { sw := generator.NewSnippetWriter(w, c, "$", "$") pkg := filepath.Base(t.Name.Package) - namespaced := !(types.ExtractCommentTags("+", t.SecondClosestCommentLines)["nonNamespaced"] == "true") + namespaced := !extractBoolTagOrDie("nonNamespaced", t.SecondClosestCommentLines) m := map[string]interface{}{ "type": t, "package": pkg, @@ -86,7 +86,7 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i } else { sw.Do(getterNonNamesapced, m) } - noMethods := types.ExtractCommentTags("+", t.SecondClosestCommentLines)["noMethods"] == "true" + noMethods := extractBoolTagOrDie("noMethods", t.SecondClosestCommentLines) == true sw.Do(interfaceTemplate1, m) if !noMethods { diff --git a/cmd/libs/go2idl/client-gen/generators/tags.go b/cmd/libs/go2idl/client-gen/generators/tags.go new file mode 100644 index 00000000000..9008fcbc9d0 --- /dev/null +++ b/cmd/libs/go2idl/client-gen/generators/tags.go @@ -0,0 +1,33 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package generators + +import ( + "github.com/golang/glog" + "k8s.io/kubernetes/cmd/libs/go2idl/types" +) + +// extractBoolTagOrDie gets the comment-tags for the key and asserts that, if +// it exists, the value is boolean. If the tag did not exist, it returns +// false. +func extractBoolTagOrDie(key string, lines []string) bool { + val, err := types.ExtractSingleBoolCommentTag("+", key, false, lines) + if err != nil { + glog.Fatalf(err.Error()) + } + return val +} diff --git a/cmd/libs/go2idl/conversion-gen/generators/conversion.go b/cmd/libs/go2idl/conversion-gen/generators/conversion.go index 9eb6bd88a00..8cf6c1b5560 100644 --- a/cmd/libs/go2idl/conversion-gen/generators/conversion.go +++ b/cmd/libs/go2idl/conversion-gen/generators/conversion.go @@ -232,7 +232,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat // Only generate conversions for package which explicitly requested it // byt setting "+genversion=true" in their doc.go file. filtered := false - if types.ExtractCommentTags("+", p.DocComments)["genconversion"] == "true" { + if extractBoolTagOrDie("genconversion", false, p.DocComments) == true { filtered = true } if !filtered { @@ -342,7 +342,7 @@ func isDirectlyConvertible(in, out *types.Type, preexisting conversions) bool { // "+ genconversion=false" // comment to ignore this field for conversion. // TODO: Switch to SecondClosestCommentLines. - if types.ExtractCommentTags("+", inMember.CommentLines)["genconversion"] == "false" { + if extractBoolTagOrDie("genconversion", true, inMember.CommentLines) == false { continue } return false @@ -428,7 +428,7 @@ func (g *genConversion) convertibleOnlyWithinPackage(inType, outType *types.Type if t.Name.Package != g.targetPackage { return false } - if types.ExtractCommentTags("+", t.CommentLines)["genconversion"] == "false" { + if extractBoolTagOrDie("genconversion", true, t.CommentLines) == false { return false } // TODO: Consider generating functions for other kinds too. diff --git a/cmd/libs/go2idl/conversion-gen/generators/tags.go b/cmd/libs/go2idl/conversion-gen/generators/tags.go new file mode 100644 index 00000000000..032c501e3de --- /dev/null +++ b/cmd/libs/go2idl/conversion-gen/generators/tags.go @@ -0,0 +1,33 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package generators + +import ( + "github.com/golang/glog" + "k8s.io/kubernetes/cmd/libs/go2idl/types" +) + +// extractBoolTagOrDie gets the comment-tags for the key and asserts that, if +// it exists, the value is boolean. If the tag did not exist, it returns +// defaultVal. +func extractBoolTagOrDie(key string, defaultVal bool, lines []string) bool { + val, err := types.ExtractSingleBoolCommentTag("+", key, defaultVal, lines) + if err != nil { + glog.Fatalf(err.Error()) + } + return val +} diff --git a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go index 8d35a8fe614..83e16c43ec3 100644 --- a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go +++ b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go @@ -200,7 +200,7 @@ func isRootedUnder(pkg string, roots []string) bool { func copyableWithinPackage(t *types.Type, boundingDirs []string) bool { // If the type opts out of copy-generation, stop. - if types.ExtractCommentTags("+", t.CommentLines)["gencopy"] == "false" { + if extractBoolTagOrDie("gencopy", true, t.CommentLines) == false { return false } // Only packages within the restricted range can be processed. diff --git a/cmd/libs/go2idl/deepcopy-gen/generators/tags.go b/cmd/libs/go2idl/deepcopy-gen/generators/tags.go new file mode 100644 index 00000000000..032c501e3de --- /dev/null +++ b/cmd/libs/go2idl/deepcopy-gen/generators/tags.go @@ -0,0 +1,33 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package generators + +import ( + "github.com/golang/glog" + "k8s.io/kubernetes/cmd/libs/go2idl/types" +) + +// extractBoolTagOrDie gets the comment-tags for the key and asserts that, if +// it exists, the value is boolean. If the tag did not exist, it returns +// defaultVal. +func extractBoolTagOrDie(key string, defaultVal bool, lines []string) bool { + val, err := types.ExtractSingleBoolCommentTag("+", key, defaultVal, lines) + if err != nil { + glog.Fatalf(err.Error()) + } + return val +} diff --git a/cmd/libs/go2idl/go-to-protobuf/protobuf/generator.go b/cmd/libs/go2idl/go-to-protobuf/protobuf/generator.go index 23de08692d0..a41cf3c8c30 100644 --- a/cmd/libs/go2idl/go-to-protobuf/protobuf/generator.go +++ b/cmd/libs/go2idl/go-to-protobuf/protobuf/generator.go @@ -25,6 +25,8 @@ import ( "strconv" "strings" + "github.com/golang/glog" + "k8s.io/kubernetes/cmd/libs/go2idl/generator" "k8s.io/kubernetes/cmd/libs/go2idl/namer" "k8s.io/kubernetes/cmd/libs/go2idl/types" @@ -70,13 +72,20 @@ func (g *genProtoIDL) Namers(c *generator.Context) namer.NameSystems { // Filter ignores types that are identified as not exportable. func (g *genProtoIDL) Filter(c *generator.Context, t *types.Type) bool { - flags := types.ExtractCommentTags("+", t.CommentLines) - switch { - case flags["protobuf"] == "false": - return false - case flags["protobuf"] == "true": - return true - case !g.generateAll: + tagVals := types.ExtractCommentTags("+", t.CommentLines)["protobuf"] + if tagVals != nil { + if tagVals[0] == "false" { + // Type specified "false". + return false + } + if tagVals[0] == "true" { + // Type specified "true". + return true + } + glog.Fatalf(`Comment tag "protobuf" must be true or false, found: %q`, tagVals[0]) + } + if !g.generateAll { + // We're not generating everything. return false } seen := map[*types.Type]bool{} @@ -125,7 +134,7 @@ func isOptionalAlias(t *types.Type) bool { if t.Underlying == nil || (t.Underlying.Kind != types.Map && t.Underlying.Kind != types.Slice) { return false } - if types.ExtractCommentTags("+", t.CommentLines)["protobuf.nullable"] != "true" { + if extractBoolTagOrDie("protobuf.nullable", t.CommentLines) == false { return false } return true @@ -296,7 +305,7 @@ func (b bodyGen) doStruct(sw *generator.SnippetWriter) error { key := strings.TrimPrefix(k, "protobuf.options.") switch key { case "marshal": - if v == "false" { + if v[0] == "false" { if !b.omitGogo { options = append(options, "(gogoproto.marshaler) = false", @@ -307,14 +316,14 @@ func (b bodyGen) doStruct(sw *generator.SnippetWriter) error { } default: if !b.omitGogo || !strings.HasPrefix(key, "(gogoproto.") { - options = append(options, fmt.Sprintf("%s = %s", key, v)) + options = append(options, fmt.Sprintf("%s = %s", key, v[0])) } } // protobuf.as allows a type to have the same message contents as another Go type case k == "protobuf.as": fields = nil - if alias = b.locator.GoTypeForName(types.Name{Name: v}); alias == nil { - return fmt.Errorf("type %v references alias %q which does not exist", b.t, v) + if alias = b.locator.GoTypeForName(types.Name{Name: v[0]}); alias == nil { + return fmt.Errorf("type %v references alias %q which does not exist", b.t, v[0]) } // protobuf.embed instructs the generator to use the named type in this package // as an embedded message. @@ -322,10 +331,10 @@ func (b bodyGen) doStruct(sw *generator.SnippetWriter) error { fields = []protoField{ { Tag: 1, - Name: v, + Name: v[0], Type: &types.Type{ Name: types.Name{ - Name: v, + Name: v[0], Package: b.localPackage.Package, Path: b.localPackage.Path, }, diff --git a/cmd/libs/go2idl/go-to-protobuf/protobuf/tags.go b/cmd/libs/go2idl/go-to-protobuf/protobuf/tags.go new file mode 100644 index 00000000000..04283cfbc44 --- /dev/null +++ b/cmd/libs/go2idl/go-to-protobuf/protobuf/tags.go @@ -0,0 +1,33 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package protobuf + +import ( + "github.com/golang/glog" + "k8s.io/kubernetes/cmd/libs/go2idl/types" +) + +// extractBoolTagOrDie gets the comment-tags for the key and asserts that, if +// it exists, the value is boolean. If the tag did not exist, it returns +// false. +func extractBoolTagOrDie(key string, lines []string) bool { + val, err := types.ExtractSingleBoolCommentTag("+", key, false, lines) + if err != nil { + glog.Fatalf(err.Error()) + } + return val +} diff --git a/cmd/libs/go2idl/set-gen/generators/sets.go b/cmd/libs/go2idl/set-gen/generators/sets.go index c20e13a70a4..d8ad284a527 100644 --- a/cmd/libs/go2idl/set-gen/generators/sets.go +++ b/cmd/libs/go2idl/set-gen/generators/sets.go @@ -108,7 +108,7 @@ func Packages(_ *generator.Context, arguments *args.GeneratorArgs) generator.Pac // // +genset // or // // +genset=true - return types.ExtractCommentTags("+", t.CommentLines)["genset"] == "true" + return extractBoolTagOrDie("genset", t.CommentLines) == true } return false }, diff --git a/cmd/libs/go2idl/set-gen/generators/tags.go b/cmd/libs/go2idl/set-gen/generators/tags.go new file mode 100644 index 00000000000..9008fcbc9d0 --- /dev/null +++ b/cmd/libs/go2idl/set-gen/generators/tags.go @@ -0,0 +1,33 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package generators + +import ( + "github.com/golang/glog" + "k8s.io/kubernetes/cmd/libs/go2idl/types" +) + +// extractBoolTagOrDie gets the comment-tags for the key and asserts that, if +// it exists, the value is boolean. If the tag did not exist, it returns +// false. +func extractBoolTagOrDie(key string, lines []string) bool { + val, err := types.ExtractSingleBoolCommentTag("+", key, false, lines) + if err != nil { + glog.Fatalf(err.Error()) + } + return val +} diff --git a/cmd/libs/go2idl/types/comments.go b/cmd/libs/go2idl/types/comments.go index 4be9de6fdbb..92980e49fc6 100644 --- a/cmd/libs/go2idl/types/comments.go +++ b/cmd/libs/go2idl/types/comments.go @@ -19,28 +19,26 @@ limitations under the License. package types import ( + "fmt" "strings" ) // ExtractCommentTags parses comments for lines of the form: // -// 'marker'+"key1=value1,key2=value2". +// 'marker' + "key1=value1,key2=value2". // -// Values are optional; 'true' is the default. If a key is set multiple times, -// the last one wins. +// Values are optional; "" is the default. A tag can be specified more than +// one time and all values are returned. If the resulting map has an entry for +// a key, the value (a slice) is guaranteed to have at least 1 element. // // Example: if you pass "+" for 'marker', and the following two lines are in // the comments: // +foo=value1,bar -// +foo=value2,baz="frobber" +// +foo=value2,baz="qux" // Then this function will return: -// map[string]string{"foo":"value2", "bar": "true", "baz": "frobber"} -// -// TODO: Basically we need to define a standard way of giving instructions to -// autogenerators in the comments of a type. This is a first iteration of that. -// TODO: allow multiple values per key? -func ExtractCommentTags(marker string, lines []string) map[string]string { - out := map[string]string{} +// map[string][]string{"foo":{"value1, "value2"}, "bar": {""}, "baz": {"qux"}} +func ExtractCommentTags(marker string, lines []string) map[string][]string { + out := map[string][]string{} for _, line := range lines { line = strings.Trim(line, " ") if len(line) == 0 { @@ -53,11 +51,32 @@ func ExtractCommentTags(marker string, lines []string) map[string]string { for _, p := range pairs { kv := strings.Split(p, "=") if len(kv) == 2 { - out[kv[0]] = kv[1] + out[kv[0]] = append(out[kv[0]], kv[1]) } else if len(kv) == 1 { - out[kv[0]] = "true" + out[kv[0]] = append(out[kv[0]], "") } } } return out } + +// ExtractSingleBoolCommentTag parses comments for lines of the form: +// +// 'marker' + "key=value1" +// +// If the tag is not found, the default value is returned. Values are asserted +// to be boolean ("true" or "false"), and any other value will cause an error +// to be returned. If the key has multiple values, the first one will be used. +func ExtractSingleBoolCommentTag(marker string, key string, defaultVal bool, lines []string) (bool, error) { + values := ExtractCommentTags(marker, lines)[key] + if values == nil { + return defaultVal, nil + } + if values[0] == "true" { + return true, nil + } + if values[0] == "false" { + return false, nil + } + return false, fmt.Errorf("tag value for %q is not boolean: %q", key, values[0]) +} diff --git a/cmd/libs/go2idl/types/comments_test.go b/cmd/libs/go2idl/types/comments_test.go index 154dcafdf44..a498156f8ee 100644 --- a/cmd/libs/go2idl/types/comments_test.go +++ b/cmd/libs/go2idl/types/comments_test.go @@ -18,18 +18,63 @@ package types import ( "reflect" + "strings" "testing" ) func TestExtractCommentTags(t *testing.T) { - commentLines := ` -Human comment that is ignored. -+foo=value1,bar -+foo=value2,baz=frobber -` + commentLines := []string{ + "Human comment that is ignored.", + "+foo=value1,bar", + "+foo=value2,baz=qux", + } + a := ExtractCommentTags("+", commentLines) - e := map[string]string{"foo": "value2", "bar": "true", "baz": "frobber"} + e := map[string][]string{"foo": {"value1", "value2"}, "bar": {""}, "baz": {"qux"}} if !reflect.DeepEqual(e, a) { - t.Errorf("Wanted %#v, got %#v", e, a) + t.Errorf("Wanted %q, got %q", e, a) + } +} + +func TestExtractSingleBoolCommentTag(t *testing.T) { + commentLines := []string{ + "Human comment that is ignored.", + "+TRUE=true", + "+FALSE=false", + "+MULTI=true", + "+MULTI=false", + "+MULTI=multi", + "+NOTBOOL=blue", + "+EMPTY", + } + + testCases := []struct { + key string + def bool + exp bool + err string // if set, ignore exp. + }{ + {"TRUE", false, true, ""}, + {"FALSE", true, false, ""}, + {"MULTI", false, true, ""}, + {"NOTBOOL", false, true, "is not boolean"}, + {"EMPTY", false, true, "is not boolean"}, + {"ABSENT", true, true, ""}, + {"ABSENT", false, false, ""}, + } + + for i, tc := range testCases { + v, err := ExtractSingleBoolCommentTag("+", tc.key, tc.def, commentLines) + if err != nil && tc.err == "" { + t.Errorf("[%d]: unexpected failure: %v", i, err) + } else if err == nil && tc.err != "" { + t.Errorf("[%d]: expected failure: %v", i, tc.err) + } else if err != nil { + if !strings.Contains(err.Error(), tc.err) { + t.Errorf("[%d]: unexpected error: expected %q, got %q", i, tc.err, err) + } + } else if v != tc.exp { + t.Errorf("[%d]: unexpected value: expected %t, got %t", i, tc.exp, v) + } } } From 052847f4edfdb02472380c3659a334fc23e35d05 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Sat, 18 Jun 2016 06:42:46 -0700 Subject: [PATCH 06/14] go2idl: Track doc.go file-comments Previously we just tracked comments on the 'package' declaration. Treat all file comments as one comment-block, for simplicity. Can be revisited if needed. --- cmd/libs/go2idl/parser/parse.go | 6 +++++- cmd/libs/go2idl/types/types.go | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/cmd/libs/go2idl/parser/parse.go b/cmd/libs/go2idl/parser/parse.go index 3d264a94bb5..2bf2f806217 100644 --- a/cmd/libs/go2idl/parser/parse.go +++ b/cmd/libs/go2idl/parser/parse.go @@ -370,8 +370,12 @@ func (b *Builder) FindTypes() (types.Universe, error) { for _, f := range b.parsed[pkgPath] { if strings.HasSuffix(f.name, "/doc.go") { + tp := u.Package(pkgPath) + for i := range f.file.Comments { + tp.Comments = append(tp.Comments, splitLines(f.file.Comments[i].Text())...) + } if f.file.Doc != nil { - u.Package(pkgPath).DocComments = splitLines(f.file.Doc.Text()) + tp.DocComments = splitLines(f.file.Doc.Text()) } } } diff --git a/cmd/libs/go2idl/types/types.go b/cmd/libs/go2idl/types/types.go index d34450868c4..b6e9391d716 100644 --- a/cmd/libs/go2idl/types/types.go +++ b/cmd/libs/go2idl/types/types.go @@ -89,9 +89,12 @@ type Package struct { // 'package x' line. Name string - // Comments from doc.go file. + // DocComments from doc.go, if any. DocComments []string + // Comments from doc.go, if any. + Comments []string + // Types within this package, indexed by their name (*not* including // package name). Types map[string]*Type From d88fc84baec5409a51d61d85f202bb29182e2228 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Sun, 19 Jun 2016 05:38:27 -0700 Subject: [PATCH 07/14] Make multi-key tags more explicit This is in prep to simplify tag logic. Don't rely on processing commas as new tag delimiters. Put new tags on new lines. This had zero effect on generated code (as intended). --- federation/apis/federation/types.go | 3 ++- federation/apis/federation/v1beta1/types.go | 3 ++- pkg/api/types.go | 12 ++++++++---- pkg/api/v1/types.go | 12 ++++++++---- pkg/apis/certificates/types.go | 3 ++- pkg/apis/certificates/v1alpha1/types.go | 3 ++- pkg/apis/extensions/types.go | 9 ++++++--- pkg/apis/extensions/v1beta1/types.go | 9 ++++++--- pkg/apis/policy/types.go | 3 ++- pkg/apis/policy/v1alpha1/types.go | 3 ++- pkg/apis/rbac/types.go | 6 ++++-- pkg/apis/rbac/v1alpha1/types.go | 6 ++++-- 12 files changed, 48 insertions(+), 24 deletions(-) diff --git a/federation/apis/federation/types.go b/federation/apis/federation/types.go index c80603fd6b9..c3ee0eab83a 100644 --- a/federation/apis/federation/types.go +++ b/federation/apis/federation/types.go @@ -82,7 +82,8 @@ type ClusterStatus struct { Region string `json:"region,omitempty"` } -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // Information about a registered cluster in a federated kubernetes setup. Clusters are not namespaced and have unique names in the federation. type Cluster struct { diff --git a/federation/apis/federation/v1beta1/types.go b/federation/apis/federation/v1beta1/types.go index 42a07667394..a69608b204c 100644 --- a/federation/apis/federation/v1beta1/types.go +++ b/federation/apis/federation/v1beta1/types.go @@ -82,7 +82,8 @@ type ClusterStatus struct { Region string `json:"region,omitempty" protobuf:"bytes,6,opt,name=region"` } -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // Information about a registered cluster in a federated kubernetes setup. Clusters are not namespaced and have unique names in the federation. type Cluster struct { diff --git a/pkg/api/types.go b/pkg/api/types.go index 6eb9a2b15f2..1c038d0dc11 100644 --- a/pkg/api/types.go +++ b/pkg/api/types.go @@ -283,7 +283,8 @@ type PersistentVolumeClaimVolumeSource struct { ReadOnly bool `json:"readOnly,omitempty"` } -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true type PersistentVolume struct { unversioned.TypeMeta `json:",inline"` @@ -2096,7 +2097,8 @@ const ( // ResourceList is a set of (resource name, quantity) pairs. type ResourceList map[ResourceName]resource.Quantity -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // Node is a worker node in Kubernetes // The name of the node according to etcd is in ObjectMeta.Name. @@ -2149,7 +2151,8 @@ const ( NamespaceTerminating NamespacePhase = "Terminating" ) -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // A namespace provides a scope for Names. // Use of multiple namespaces is optional @@ -2785,7 +2788,8 @@ type ComponentCondition struct { Error string `json:"error,omitempty"` } -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // ComponentStatus (and ComponentStatusList) holds the cluster validation info. type ComponentStatus struct { diff --git a/pkg/api/v1/types.go b/pkg/api/v1/types.go index 557a61a5562..9cb0ac558a2 100644 --- a/pkg/api/v1/types.go +++ b/pkg/api/v1/types.go @@ -341,7 +341,8 @@ type PersistentVolumeSource struct { VsphereVolume *VsphereVirtualDiskVolumeSource `json:"vsphereVolume,omitempty" protobuf:"bytes,14,opt,name=vsphereVolume"` } -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // PersistentVolume (PV) is a storage resource provisioned by an administrator. // It is analogous to a node. @@ -2497,7 +2498,8 @@ const ( // ResourceList is a set of (resource name, quantity) pairs. type ResourceList map[ResourceName]resource.Quantity -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // Node is a worker node in Kubernetes, formerly known as minion. // Each node will have a unique identifier in the cache (i.e. in etcd). @@ -2560,7 +2562,8 @@ const ( NamespaceTerminating NamespacePhase = "Terminating" ) -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // Namespace provides a scope for Names. // Use of multiple namespaces is optional. @@ -3215,7 +3218,8 @@ type ComponentCondition struct { Error string `json:"error,omitempty" protobuf:"bytes,4,opt,name=error"` } -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // ComponentStatus (and ComponentStatusList) holds the cluster validation info. type ComponentStatus struct { diff --git a/pkg/apis/certificates/types.go b/pkg/apis/certificates/types.go index 46c41e392b4..c0eb47b1f06 100644 --- a/pkg/apis/certificates/types.go +++ b/pkg/apis/certificates/types.go @@ -21,7 +21,8 @@ import ( "k8s.io/kubernetes/pkg/api/unversioned" ) -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // Describes a certificate signing request type CertificateSigningRequest struct { diff --git a/pkg/apis/certificates/v1alpha1/types.go b/pkg/apis/certificates/v1alpha1/types.go index 85969cfc403..5f046ba85e0 100644 --- a/pkg/apis/certificates/v1alpha1/types.go +++ b/pkg/apis/certificates/v1alpha1/types.go @@ -21,7 +21,8 @@ import ( "k8s.io/kubernetes/pkg/api/v1" ) -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // Describes a certificate signing request type CertificateSigningRequest struct { diff --git a/pkg/apis/extensions/types.go b/pkg/apis/extensions/types.go index a2b6cc9cde0..8c73db72ea3 100644 --- a/pkg/apis/extensions/types.go +++ b/pkg/apis/extensions/types.go @@ -51,7 +51,8 @@ type ScaleStatus struct { Selector *unversioned.LabelSelector `json:"selector,omitempty"` } -// +genclient=true,noMethods=true +// +genclient=true +// +noMethods=true // represents a scaling request for a resource. type Scale struct { @@ -94,7 +95,8 @@ type CustomMetricCurrentStatusList struct { Items []CustomMetricCurrentStatus `json:"items"` } -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource // types to the API. It consists of one or more Versions of the api. @@ -624,7 +626,8 @@ type ReplicaSetStatus struct { ObservedGeneration int64 `json:"observedGeneration,omitempty"` } -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // PodSecurityPolicy governs the ability to make requests that affect the SecurityContext // that will be applied to a pod and container. diff --git a/pkg/apis/extensions/v1beta1/types.go b/pkg/apis/extensions/v1beta1/types.go index 99901133847..55719fdbae8 100644 --- a/pkg/apis/extensions/v1beta1/types.go +++ b/pkg/apis/extensions/v1beta1/types.go @@ -46,7 +46,8 @@ type ScaleStatus struct { TargetSelector string `json:"targetSelector,omitempty" protobuf:"bytes,3,opt,name=targetSelector"` } -// +genclient=true,noMethods=true +// +genclient=true +// +noMethods=true // represents a scaling request for a resource. type Scale struct { @@ -166,7 +167,8 @@ type HorizontalPodAutoscalerList struct { Items []HorizontalPodAutoscaler `json:"items" protobuf:"bytes,2,rep,name=items"` } -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource // types to the API. It consists of one or more Versions of the api. @@ -912,7 +914,8 @@ type ReplicaSetStatus struct { ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,3,opt,name=observedGeneration"` } -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // Pod Security Policy governs the ability to make requests that affect the Security Context // that will be applied to a pod and container. diff --git a/pkg/apis/policy/types.go b/pkg/apis/policy/types.go index 9b20699bd22..adc31e59f15 100644 --- a/pkg/apis/policy/types.go +++ b/pkg/apis/policy/types.go @@ -49,7 +49,8 @@ type PodDisruptionBudgetStatus struct { ExpectedPods int32 `json:"expectedPods"` } -// +genclient=true,noMethods=true +// +genclient=true +// +noMethods=true // PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods type PodDisruptionBudget struct { diff --git a/pkg/apis/policy/v1alpha1/types.go b/pkg/apis/policy/v1alpha1/types.go index 09d62285c78..efe136fda2a 100644 --- a/pkg/apis/policy/v1alpha1/types.go +++ b/pkg/apis/policy/v1alpha1/types.go @@ -50,7 +50,8 @@ type PodDisruptionBudgetStatus struct { ExpectedPods int32 `json:"expectedPods" protobuf:"varint,4,opt,name=expectedPods"` } -// +genclient=true,noMethods=true +// +genclient=true +// +noMethods=true // PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods type PodDisruptionBudget struct { diff --git a/pkg/apis/rbac/types.go b/pkg/apis/rbac/types.go index 361c9361513..44a38971b45 100644 --- a/pkg/apis/rbac/types.go +++ b/pkg/apis/rbac/types.go @@ -126,7 +126,8 @@ type RoleList struct { Items []Role } -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. type ClusterRole struct { @@ -138,7 +139,8 @@ type ClusterRole struct { Rules []PolicyRule } -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, // and adds who information via Subject. diff --git a/pkg/apis/rbac/v1alpha1/types.go b/pkg/apis/rbac/v1alpha1/types.go index e05c78998d1..a260facea9b 100644 --- a/pkg/apis/rbac/v1alpha1/types.go +++ b/pkg/apis/rbac/v1alpha1/types.go @@ -113,7 +113,8 @@ type RoleList struct { Items []Role `json:"items" protobuf:"bytes,2,rep,name=items"` } -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. type ClusterRole struct { @@ -125,7 +126,8 @@ type ClusterRole struct { Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"` } -// +genclient=true,nonNamespaced=true +// +genclient=true +// +nonNamespaced=true // ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, // and adds who information via Subject. From ec79eee28952dd1c12837ebf0db4cac27c6ed5d0 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Sun, 19 Jun 2016 06:06:54 -0700 Subject: [PATCH 08/14] go2idl: remove comma-processing for comment-tags It's simpler and clearer without them, and it leaves room for per-use-case parsing of the tag lines. If anything we should be splitting on whitespace. --- cmd/libs/go2idl/types/comments.go | 24 ++++++++++++------------ cmd/libs/go2idl/types/comments_test.go | 12 +++++++++--- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/cmd/libs/go2idl/types/comments.go b/cmd/libs/go2idl/types/comments.go index 92980e49fc6..8150c383875 100644 --- a/cmd/libs/go2idl/types/comments.go +++ b/cmd/libs/go2idl/types/comments.go @@ -25,16 +25,18 @@ import ( // ExtractCommentTags parses comments for lines of the form: // -// 'marker' + "key1=value1,key2=value2". +// 'marker' + "key=value". // // Values are optional; "" is the default. A tag can be specified more than // one time and all values are returned. If the resulting map has an entry for // a key, the value (a slice) is guaranteed to have at least 1 element. // -// Example: if you pass "+" for 'marker', and the following two lines are in +// Example: if you pass "+" for 'marker', and the following lines are in // the comments: -// +foo=value1,bar -// +foo=value2,baz="qux" +// +foo=value1 +// +bar +// +foo=value2 +// +baz="qux" // Then this function will return: // map[string][]string{"foo":{"value1, "value2"}, "bar": {""}, "baz": {"qux"}} func ExtractCommentTags(marker string, lines []string) map[string][]string { @@ -47,14 +49,12 @@ func ExtractCommentTags(marker string, lines []string) map[string][]string { if !strings.HasPrefix(line, marker) { continue } - pairs := strings.Split(line[len(marker):], ",") - for _, p := range pairs { - kv := strings.Split(p, "=") - if len(kv) == 2 { - out[kv[0]] = append(out[kv[0]], kv[1]) - } else if len(kv) == 1 { - out[kv[0]] = append(out[kv[0]], "") - } + // TODO: we could support multiple values per key if we split on spaces + kv := strings.SplitN(line[len(marker):], "=", 2) + if len(kv) == 2 { + out[kv[0]] = append(out[kv[0]], kv[1]) + } else if len(kv) == 1 { + out[kv[0]] = append(out[kv[0]], "") } } return out diff --git a/cmd/libs/go2idl/types/comments_test.go b/cmd/libs/go2idl/types/comments_test.go index a498156f8ee..161f4a6e98c 100644 --- a/cmd/libs/go2idl/types/comments_test.go +++ b/cmd/libs/go2idl/types/comments_test.go @@ -25,12 +25,18 @@ import ( func TestExtractCommentTags(t *testing.T) { commentLines := []string{ "Human comment that is ignored.", - "+foo=value1,bar", - "+foo=value2,baz=qux", + "+foo=value1", + "+bar", + "+foo=value2", + "+baz=qux,zrb=true", } a := ExtractCommentTags("+", commentLines) - e := map[string][]string{"foo": {"value1", "value2"}, "bar": {""}, "baz": {"qux"}} + e := map[string][]string{ + "foo": {"value1", "value2"}, + "bar": {""}, + "baz": {"qux,zrb=true"}, + } if !reflect.DeepEqual(e, a) { t.Errorf("Wanted %q, got %q", e, a) } From 4c4c6fc40e4862cee4ce998dc9ec0f922cef1492 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Sat, 28 May 2016 21:12:59 -0700 Subject: [PATCH 09/14] go2idl: Add an 'output basename' option This will be used when generated files are no longer checked in. I include it as a standalone commit for ease of review. --- cmd/libs/go2idl/args/args.go | 4 ++++ hack/verify-flags/known-flags.txt | 1 + 2 files changed, 5 insertions(+) diff --git a/cmd/libs/go2idl/args/args.go b/cmd/libs/go2idl/args/args.go index 04b84225f84..58bdf932ee9 100644 --- a/cmd/libs/go2idl/args/args.go +++ b/cmd/libs/go2idl/args/args.go @@ -61,6 +61,9 @@ type GeneratorArgs struct { // Package path within the source tree. OutputPackagePath string + // Output file name. + OutputFileBaseName string + // Where to get copyright header text. GoHeaderFilePath string @@ -81,6 +84,7 @@ func (g *GeneratorArgs) AddFlags(fs *pflag.FlagSet) { fs.StringSliceVarP(&g.InputDirs, "input-dirs", "i", g.InputDirs, "Comma-separated list of import paths to get input types from.") fs.StringVarP(&g.OutputBase, "output-base", "o", g.OutputBase, "Output base; defaults to $GOPATH/src/ or ./ if $GOPATH is not set.") fs.StringVarP(&g.OutputPackagePath, "output-package", "p", g.OutputPackagePath, "Base package path.") + fs.StringVarP(&g.OutputFileBaseName, "output-file-base", "O", g.OutputFileBaseName, "Base name (without .go suffix) for output files.") fs.StringVarP(&g.GoHeaderFilePath, "go-header-file", "h", g.GoHeaderFilePath, "File containing boilerplate header text. The string YEAR will be replaced with the current 4-digit year.") fs.BoolVar(&g.VerifyOnly, "verify-only", g.VerifyOnly, "If true, only verify existing output, do not write anything.") fs.BoolVar(&g.Recursive, "recursive", g.VerifyOnly, "If true, recurse into all children of input directories.") diff --git a/hack/verify-flags/known-flags.txt b/hack/verify-flags/known-flags.txt index b6c02689b52..6235db909b7 100644 --- a/hack/verify-flags/known-flags.txt +++ b/hack/verify-flags/known-flags.txt @@ -339,6 +339,7 @@ out-version outofdisk-transition-frequency output-base output-directory +output-file-base output-package output-print-type output-version From 28af54138d60ddad11bdf77dd8034d65a88f308e Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Mon, 6 Jun 2016 22:46:24 -0700 Subject: [PATCH 10/14] Use file tags to generate deep-copies This drives most of the logic of deep-copy generation from tags like: // +deepcopy-gen=package ..rather than hardcoded lists of packages. This will make it possible to subsequently generate code ONLY for packages that need it *right now*, rather than all of them always. Also remove pkgs that really do not need deep-copies (no symbols used anywhere). --- .../deepcopy-gen/generators/deepcopy.go | 42 ++-- .../deepcopy-gen/generators/deepcopy_test.go | 2 +- cmd/libs/go2idl/deepcopy-gen/main.go | 57 +++-- docs/devel/adding-an-APIGroup.md | 8 +- docs/devel/api_changes.md | 9 +- federation/apis/core/deep_copy.go | 42 ---- federation/apis/core/register.go | 1 - federation/apis/core/v1/deep_copy.go | 42 ---- federation/apis/core/v1/register.go | 1 - .../apis/federation/doc.go | 17 +- federation/apis/federation/v1beta1/doc.go | 2 + hack/update-codegen.sh | 29 ++- pkg/api/doc.go | 2 + pkg/api/unversioned/deep_copy_generated.go | 55 ++--- pkg/api/unversioned/doc.go | 19 ++ pkg/api/v1/doc.go | 2 + pkg/apis/apps/doc.go | 19 ++ pkg/apis/apps/v1alpha1/doc.go | 2 + pkg/apis/authentication.k8s.io/doc.go | 19 ++ pkg/apis/authentication.k8s.io/v1beta1/doc.go | 2 + pkg/apis/authorization/doc.go | 19 ++ pkg/apis/authorization/v1beta1/doc.go | 2 + pkg/apis/autoscaling/doc.go | 19 ++ pkg/apis/autoscaling/v1/doc.go | 2 + pkg/apis/batch/doc.go | 19 ++ pkg/apis/batch/v1/doc.go | 2 + pkg/apis/batch/v2alpha1/doc.go | 2 + pkg/apis/certificates/doc.go | 19 ++ pkg/apis/certificates/v1alpha1/doc.go | 2 + pkg/apis/componentconfig/doc.go | 19 ++ pkg/apis/componentconfig/v1alpha1/doc.go | 2 + pkg/apis/extensions/doc.go | 19 ++ pkg/apis/extensions/v1beta1/doc.go | 2 + pkg/apis/policy/doc.go | 19 ++ pkg/apis/policy/v1alpha1/doc.go | 2 + pkg/apis/rbac/doc.go | 2 + pkg/apis/rbac/v1alpha1/doc.go | 2 + pkg/conversion/deep_copy_generated.go | 185 +++++++++++++++ pkg/conversion/doc.go | 2 + pkg/runtime/deep_copy_generated.go | 211 +++++++++++++++++- pkg/runtime/doc.go | 3 + 41 files changed, 723 insertions(+), 203 deletions(-) delete mode 100644 federation/apis/core/deep_copy.go delete mode 100644 federation/apis/core/v1/deep_copy.go rename pkg/util/intstr/deep_copy_generated.go => federation/apis/federation/doc.go (61%) create mode 100644 pkg/api/unversioned/doc.go create mode 100644 pkg/apis/apps/doc.go create mode 100644 pkg/apis/authentication.k8s.io/doc.go create mode 100644 pkg/apis/authorization/doc.go create mode 100644 pkg/apis/autoscaling/doc.go create mode 100644 pkg/apis/batch/doc.go create mode 100644 pkg/apis/certificates/doc.go create mode 100644 pkg/apis/componentconfig/doc.go create mode 100644 pkg/apis/extensions/doc.go create mode 100644 pkg/apis/policy/doc.go create mode 100644 pkg/conversion/deep_copy_generated.go diff --git a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go index 83e16c43ec3..d28396c0c35 100644 --- a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go +++ b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go @@ -87,13 +87,23 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat } for _, p := range context.Universe { - copyableType := false + // Short-circuit if this package has not opted in. + if tagvals := types.ExtractCommentTags("+", p.Comments)["k8s:deepcopy-gen"]; tagvals == nil { + // No tag for this package. + continue + } else if tagvals[0] != "generate" && tagvals[0] != "register" { + // Unknown tag. + glog.Errorf("Uknown tag value '+k8s:deepcopy-gen=%s'", tagvals[0]) + continue + } + needsGeneration := false for _, t := range p.Types { if copyableWithinPackage(t, boundingDirs) && inputs.Has(t.Name.Package) { - copyableType = true + needsGeneration = true + break } } - if copyableType { + if needsGeneration { path := p.Path packages = append(packages, &generator.DefaultPackage{ @@ -103,7 +113,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) { generators = []generator.Generator{} generators = append( - generators, NewGenDeepCopy("deep_copy_generated", path, boundingDirs, inputs.Has(path))) + generators, NewGenDeepCopy(arguments.OutputFileBaseName, path, boundingDirs)) return generators }, FilterFunc: func(c *generator.Context, t *types.Type) bool { @@ -123,25 +133,23 @@ const ( // genDeepCopy produces a file with autogenerated deep-copy functions. type genDeepCopy struct { generator.DefaultGen - targetPackage string - boundingDirs []string - imports namer.ImportTracker - typesForInit []*types.Type - generateInitFunc bool + targetPackage string + boundingDirs []string + imports namer.ImportTracker + typesForInit []*types.Type globalVariables map[string]interface{} } -func NewGenDeepCopy(sanitizedName, targetPackage string, boundingDirs []string, generateInitFunc bool) generator.Generator { +func NewGenDeepCopy(sanitizedName, targetPackage string, boundingDirs []string) generator.Generator { return &genDeepCopy{ DefaultGen: generator.DefaultGen{ OptionalName: sanitizedName, }, - targetPackage: targetPackage, - boundingDirs: boundingDirs, - imports: generator.NewImportTracker(), - typesForInit: make([]*types.Type, 0), - generateInitFunc: generateInitFunc, + targetPackage: targetPackage, + boundingDirs: boundingDirs, + imports: generator.NewImportTracker(), + typesForInit: make([]*types.Type, 0), } } @@ -200,7 +208,7 @@ func isRootedUnder(pkg string, roots []string) bool { func copyableWithinPackage(t *types.Type, boundingDirs []string) bool { // If the type opts out of copy-generation, stop. - if extractBoolTagOrDie("gencopy", true, t.CommentLines) == false { + if extractBoolTagOrDie("k8s:deepcopy-gen", true, t.CommentLines) == false { return false } // Only packages within the restricted range can be processed. @@ -268,7 +276,7 @@ func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error { g.globalVariables = map[string]interface{}{ "Cloner": cloner, } - if !g.generateInitFunc { + if tagvals := types.ExtractCommentTags("+", c.Universe[g.targetPackage].Comments)["k8s:deepcopy-gen"]; tagvals != nil && tagvals[0] != "register" { // TODO: We should come up with a solution to register all generated // deep-copy functions. However, for now, to avoid import cycles // we register only those explicitly requested. diff --git a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go index c9cf55354d8..f6d33837e1b 100644 --- a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go +++ b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go @@ -1,5 +1,5 @@ /* -Copyright 2016 The Kubernetes Authors All rights reserved. +Copyright 2016 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/cmd/libs/go2idl/deepcopy-gen/main.go b/cmd/libs/go2idl/deepcopy-gen/main.go index ae4b1d901f6..dd584ce811b 100644 --- a/cmd/libs/go2idl/deepcopy-gen/main.go +++ b/cmd/libs/go2idl/deepcopy-gen/main.go @@ -16,9 +16,30 @@ limitations under the License. // deepcopy-gen is a tool for auto-generating DeepCopy functions. // -// Structs in the input directories with the below line in their comments -// will be ignored during generation. -// // +gencopy=false +// Given a list of input directories, it will generate functions that +// efficiently perform a full deep-copy of each type. For any type that +// offers a `.DeepCopy()` method, it will simply call that. Otherwise it will +// use standard value assignment whenever possible. If that is not possible it +// will try to call its own generated copy function for the type, if the type is +// within the allowed root packages. Failing that, it will fall back on +// `conversion.Cloner.DeepCopy(val)` to make the copy. The resulting file will +// be stored in the same directory as the processed source package. +// +// Generation is governed by comment tags in the source. Any package may +// request DeepCopy generation by including a comment in the file-comments of +// one file, of the form: +// // +k8s:deepcopy-gen=generate +// or: +// // +k8s:deepcopy-gen=register +// +// Packages which specify `=generate` will have DeepCopy functions generated +// into them. Packages which specify `=register` will have DeepCopy functions +// generated and registered with in `init()` function call to +// `Scheme.AddGeneratedDeepCopyFuncs()`. +// +// Individual types may opt out of DeepCopy generation by specifying a comment +// of the form: +// // +k8s:deepcopy-gen=false package main import ( @@ -32,34 +53,8 @@ import ( func main() { arguments := args.Default() - // Override defaults. These are Kubernetes specific input locations. - arguments.InputDirs = []string{ - "k8s.io/kubernetes/pkg/api", - "k8s.io/kubernetes/pkg/api/v1", - "k8s.io/kubernetes/pkg/apis/authentication.k8s.io", - "k8s.io/kubernetes/pkg/apis/authentication.k8s.io/v1beta1", - "k8s.io/kubernetes/pkg/apis/authorization", - "k8s.io/kubernetes/pkg/apis/authorization/v1beta1", - "k8s.io/kubernetes/pkg/apis/autoscaling", - "k8s.io/kubernetes/pkg/apis/autoscaling/v1", - "k8s.io/kubernetes/pkg/apis/batch", - "k8s.io/kubernetes/pkg/apis/batch/v1", - "k8s.io/kubernetes/pkg/apis/batch/v2alpha1", - "k8s.io/kubernetes/pkg/apis/apps", - "k8s.io/kubernetes/pkg/apis/apps/v1alpha1", - "k8s.io/kubernetes/pkg/apis/certificates", - "k8s.io/kubernetes/pkg/apis/certificates/v1alpha1", - "k8s.io/kubernetes/pkg/apis/componentconfig", - "k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1", - "k8s.io/kubernetes/pkg/apis/policy", - "k8s.io/kubernetes/pkg/apis/policy/v1alpha1", - "k8s.io/kubernetes/pkg/apis/extensions", - "k8s.io/kubernetes/pkg/apis/extensions/v1beta1", - "k8s.io/kubernetes/pkg/apis/rbac", - "k8s.io/kubernetes/pkg/apis/rbac/v1alpha1", - "k8s.io/kubernetes/federation/apis/federation", - "k8s.io/kubernetes/federation/apis/federation/v1beta1", - } + // Override defaults. + arguments.OutputFileBaseName = "deep_copy_generated" // Custom args. customArgs := &generators.CustomArgs{ diff --git a/docs/devel/adding-an-APIGroup.md b/docs/devel/adding-an-APIGroup.md index c219776167a..6026cc2e45d 100644 --- a/docs/devel/adding-an-APIGroup.md +++ b/docs/devel/adding-an-APIGroup.md @@ -75,12 +75,14 @@ cmd/libs/go2idl/ tool. 1. Generate conversions and deep-copies: 1. Add your "group/" or "group/version" into - cmd/libs/go2idl/{conversion-gen, deep-copy-gen}/main.go; + cmd/libs/go2idl/conversion-gen/main.go; 2. Make sure your pkg/apis/``/`` directory has a doc.go file + with the comment `// +k8s:deepcopy-gen=register`, to catch the attention + of our generation tools. + 3. Make sure your pkg/apis/``/`` directory has a doc.go file with the comment `// +genconversion=true`, to catch the attention of our gen-conversion script. - 3. Run hack/update-all.sh. - + 4. Run hack/update-all.sh. 2. Generate files for Ugorji codec: diff --git a/docs/devel/api_changes.md b/docs/devel/api_changes.md index 4af0bd7c374..99aba0d77d9 100644 --- a/docs/devel/api_changes.md +++ b/docs/devel/api_changes.md @@ -468,12 +468,11 @@ regenerate auto-generated ones. To regenerate them run: hack/update-codegen.sh ``` -update-codegen will also generate code to handle deep copy of your versioned -api objects. The deep copy code resides with each versioned API: - - `pkg/api//deep_copy_generated.go` containing auto-generated copy functions - - `pkg/apis/extensions//deep_copy_generated.go` containing auto-generated copy functions +As part of the build, kubernetes will also generate code to handle deep copy of +your versioned api objects. The deep copy code resides with each versioned API: + - `/zz_generated.deep_copy.go` containing auto-generated copy functions -If running the above script is impossible due to compile errors, the easiest +If regeneration is somehow not possible due to compile errors, the easiest workaround is to comment out the code causing errors and let the script to regenerate it. If the auto-generated conversion methods are not used by the manually-written ones, it's fine to just remove the whole file and let the diff --git a/federation/apis/core/deep_copy.go b/federation/apis/core/deep_copy.go deleted file mode 100644 index d83bffc81d8..00000000000 --- a/federation/apis/core/deep_copy.go +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package core - -import ( - "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/runtime" -) - -func addDeepCopyFuncs(scheme *runtime.Scheme) { - if err := scheme.AddGeneratedDeepCopyFuncs( - api.DeepCopy_api_DeleteOptions, - api.DeepCopy_api_ExportOptions, - api.DeepCopy_api_List, - api.DeepCopy_api_ListOptions, - api.DeepCopy_api_ObjectMeta, - api.DeepCopy_api_ObjectReference, - api.DeepCopy_api_OwnerReference, - api.DeepCopy_api_Service, - api.DeepCopy_api_ServiceList, - api.DeepCopy_api_ServicePort, - api.DeepCopy_api_ServiceSpec, - api.DeepCopy_api_ServiceStatus, - ); err != nil { - // if one of the deep copy functions is malformed, detect it immediately. - panic(err) - } -} diff --git a/federation/apis/core/register.go b/federation/apis/core/register.go index c045520af88..c4d1c289e08 100644 --- a/federation/apis/core/register.go +++ b/federation/apis/core/register.go @@ -73,7 +73,6 @@ func AddToScheme(scheme *runtime.Scheme) { &unversioned.APIResourceList{}, ) - addDeepCopyFuncs(scheme) addDefaultingFuncs(scheme) addConversionFuncs(scheme) } diff --git a/federation/apis/core/v1/deep_copy.go b/federation/apis/core/v1/deep_copy.go deleted file mode 100644 index 23f8592c866..00000000000 --- a/federation/apis/core/v1/deep_copy.go +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1 - -import ( - "k8s.io/kubernetes/pkg/api/v1" - "k8s.io/kubernetes/pkg/runtime" -) - -func addDeepCopyFuncs(scheme *runtime.Scheme) { - if err := scheme.AddGeneratedDeepCopyFuncs( - v1.DeepCopy_v1_DeleteOptions, - v1.DeepCopy_v1_ExportOptions, - v1.DeepCopy_v1_List, - v1.DeepCopy_v1_ListOptions, - v1.DeepCopy_v1_ObjectMeta, - v1.DeepCopy_v1_ObjectReference, - v1.DeepCopy_v1_OwnerReference, - v1.DeepCopy_v1_Service, - v1.DeepCopy_v1_ServiceList, - v1.DeepCopy_v1_ServicePort, - v1.DeepCopy_v1_ServiceSpec, - v1.DeepCopy_v1_ServiceStatus, - ); err != nil { - // if one of the deep copy functions is malformed, detect it immediately. - panic(err) - } -} diff --git a/federation/apis/core/v1/register.go b/federation/apis/core/v1/register.go index 0a3d87bb9a0..30054870f24 100644 --- a/federation/apis/core/v1/register.go +++ b/federation/apis/core/v1/register.go @@ -34,7 +34,6 @@ func AddToScheme(scheme *runtime.Scheme) { addKnownTypes(scheme) addConversionFuncs(scheme) addDefaultingFuncs(scheme) - addDeepCopyFuncs(scheme) } // Adds the list of known types to api.Scheme. diff --git a/pkg/util/intstr/deep_copy_generated.go b/federation/apis/federation/doc.go similarity index 61% rename from pkg/util/intstr/deep_copy_generated.go rename to federation/apis/federation/doc.go index 793b1ebd184..d3eb70de2df 100644 --- a/pkg/util/intstr/deep_copy_generated.go +++ b/federation/apis/federation/doc.go @@ -1,5 +1,3 @@ -// +build !ignore_autogenerated - /* Copyright 2016 The Kubernetes Authors. @@ -16,17 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// This file was autogenerated by deepcopy-gen. Do not edit it manually! +// +k8s:deepcopy-gen=register -package intstr - -import ( - conversion "k8s.io/kubernetes/pkg/conversion" -) - -func DeepCopy_intstr_IntOrString(in IntOrString, out *IntOrString, c *conversion.Cloner) error { - out.Type = in.Type - out.IntVal = in.IntVal - out.StrVal = in.StrVal - return nil -} +package federation diff --git a/federation/apis/federation/v1beta1/doc.go b/federation/apis/federation/v1beta1/doc.go index ac2fd00ba91..0dc068a3494 100644 --- a/federation/apis/federation/v1beta1/doc.go +++ b/federation/apis/federation/v1beta1/doc.go @@ -14,5 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:deepcopy-gen=register + // +genconversion=true package v1beta1 diff --git a/hack/update-codegen.sh b/hack/update-codegen.sh index 979422d36bf..9d5df48b903 100755 --- a/hack/update-codegen.sh +++ b/hack/update-codegen.sh @@ -48,7 +48,34 @@ ${clientgen} --clientset-name="release_1_4" --input="api/v1,extensions/v1beta1,a ${clientgen} --clientset-name=federation_internalclientset --clientset-path=k8s.io/kubernetes/federation/client/clientset_generated --input="../../federation/apis/federation/","api/" --included-types-overrides="api/Service" "$@" ${clientgen} --clientset-name=federation_release_1_4 --clientset-path=k8s.io/kubernetes/federation/client/clientset_generated --input="../../federation/apis/federation/v1beta1","api/v1" --included-types-overrides="api/v1/Service" "$@" ${conversiongen} "$@" -${deepcopygen} "$@" ${setgen} "$@" # You may add additional calls of code generators like set-gen above. + +# Generate a list of all files that have a `+k8s:` comment-tag. This will be +# used to derive lists of files/dirs for generation tools. +ALL_K8S_TAG_FILES=$( + grep -l '^// \?+k8s:' $( + find . \ + -not \( \ + \( \ + -path ./vendor -o \ + -path ./_output -o \ + -path ./.git \ + \) -prune \ + \) \ + -type f -name \*.go \ + | sed 's|^./||' + ) + ) +DEEP_COPY_DIRS=$( + grep -l '+k8s:deepcopy-gen=' ${ALL_K8S_TAG_FILES} \ + | xargs dirname \ + | sort -u + ) +INPUTS=$( + for d in ${DEEP_COPY_DIRS}; do + echo k8s.io/kubernetes/$d + done | paste -sd, + ) +${deepcopygen} -i ${INPUTS} diff --git a/pkg/api/doc.go b/pkg/api/doc.go index a4262ab3613..23fea0579da 100644 --- a/pkg/api/doc.go +++ b/pkg/api/doc.go @@ -14,6 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:deepcopy-gen=register + // Package api contains the latest (or "internal") version of the // Kubernetes API objects. This is the API objects as represented in memory. // The contract presented to clients is located in the versioned packages, diff --git a/pkg/api/unversioned/deep_copy_generated.go b/pkg/api/unversioned/deep_copy_generated.go index b26c6579fe4..77f5b66d882 100644 --- a/pkg/api/unversioned/deep_copy_generated.go +++ b/pkg/api/unversioned/deep_copy_generated.go @@ -21,37 +21,28 @@ limitations under the License. package unversioned import ( - time "time" - conversion "k8s.io/kubernetes/pkg/conversion" + time "time" ) func DeepCopy_unversioned_APIGroup(in APIGroup, out *APIGroup, c *conversion.Cloner) error { - if err := DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Name = in.Name if in.Versions != nil { in, out := in.Versions, &out.Versions *out = make([]GroupVersionForDiscovery, len(in)) for i := range in { - if err := DeepCopy_unversioned_GroupVersionForDiscovery(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Versions = nil } - if err := DeepCopy_unversioned_GroupVersionForDiscovery(in.PreferredVersion, &out.PreferredVersion, c); err != nil { - return err - } + out.PreferredVersion = in.PreferredVersion if in.ServerAddressByClientCIDRs != nil { in, out := in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs *out = make([]ServerAddressByClientCIDR, len(in)) for i := range in { - if err := DeepCopy_unversioned_ServerAddressByClientCIDR(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.ServerAddressByClientCIDRs = nil @@ -60,9 +51,7 @@ func DeepCopy_unversioned_APIGroup(in APIGroup, out *APIGroup, c *conversion.Clo } func DeepCopy_unversioned_APIGroupList(in APIGroupList, out *APIGroupList, c *conversion.Cloner) error { - if err := DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if in.Groups != nil { in, out := in.Groups, &out.Groups *out = make([]APIGroup, len(in)) @@ -85,17 +74,13 @@ func DeepCopy_unversioned_APIResource(in APIResource, out *APIResource, c *conve } func DeepCopy_unversioned_APIResourceList(in APIResourceList, out *APIResourceList, c *conversion.Cloner) error { - if err := DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.GroupVersion = in.GroupVersion if in.APIResources != nil { in, out := in.APIResources, &out.APIResources *out = make([]APIResource, len(in)) for i := range in { - if err := DeepCopy_unversioned_APIResource(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.APIResources = nil @@ -104,9 +89,7 @@ func DeepCopy_unversioned_APIResourceList(in APIResourceList, out *APIResourceLi } func DeepCopy_unversioned_APIVersions(in APIVersions, out *APIVersions, c *conversion.Cloner) error { - if err := DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if in.Versions != nil { in, out := in.Versions, &out.Versions *out = make([]string, len(in)) @@ -118,9 +101,7 @@ func DeepCopy_unversioned_APIVersions(in APIVersions, out *APIVersions, c *conve in, out := in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs *out = make([]ServerAddressByClientCIDR, len(in)) for i := range in { - if err := DeepCopy_unversioned_ServerAddressByClientCIDR(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.ServerAddressByClientCIDRs = nil @@ -134,9 +115,7 @@ func DeepCopy_unversioned_Duration(in Duration, out *Duration, c *conversion.Clo } func DeepCopy_unversioned_ExportOptions(in ExportOptions, out *ExportOptions, c *conversion.Cloner) error { - if err := DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta out.Export = in.Export out.Exact = in.Exact return nil @@ -245,12 +224,8 @@ func DeepCopy_unversioned_ServerAddressByClientCIDR(in ServerAddressByClientCIDR } func DeepCopy_unversioned_Status(in Status, out *Status, c *conversion.Cloner) error { - if err := DeepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } - if err := DeepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta out.Status = in.Status out.Message = in.Message out.Reason = in.Reason @@ -282,9 +257,7 @@ func DeepCopy_unversioned_StatusDetails(in StatusDetails, out *StatusDetails, c in, out := in.Causes, &out.Causes *out = make([]StatusCause, len(in)) for i := range in { - if err := DeepCopy_unversioned_StatusCause(in[i], &(*out)[i], c); err != nil { - return err - } + (*out)[i] = in[i] } } else { out.Causes = nil diff --git a/pkg/api/unversioned/doc.go b/pkg/api/unversioned/doc.go new file mode 100644 index 00000000000..e18a6675fd2 --- /dev/null +++ b/pkg/api/unversioned/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=generate + +package unversioned diff --git a/pkg/api/v1/doc.go b/pkg/api/v1/doc.go index 6f00ffc857c..b9c15641bce 100644 --- a/pkg/api/v1/doc.go +++ b/pkg/api/v1/doc.go @@ -14,6 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:deepcopy-gen=register + // Package v1 is the v1 version of the API. // +genconversion=true package v1 diff --git a/pkg/apis/apps/doc.go b/pkg/apis/apps/doc.go new file mode 100644 index 00000000000..9943700e451 --- /dev/null +++ b/pkg/apis/apps/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=register + +package apps diff --git a/pkg/apis/apps/v1alpha1/doc.go b/pkg/apis/apps/v1alpha1/doc.go index 935d55b7423..06dafc4f96b 100644 --- a/pkg/apis/apps/v1alpha1/doc.go +++ b/pkg/apis/apps/v1alpha1/doc.go @@ -14,5 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:deepcopy-gen=register + // +genconversion=true package v1alpha1 diff --git a/pkg/apis/authentication.k8s.io/doc.go b/pkg/apis/authentication.k8s.io/doc.go new file mode 100644 index 00000000000..084447ac6fe --- /dev/null +++ b/pkg/apis/authentication.k8s.io/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=register + +package authentication diff --git a/pkg/apis/authentication.k8s.io/v1beta1/doc.go b/pkg/apis/authentication.k8s.io/v1beta1/doc.go index ac2fd00ba91..0dc068a3494 100644 --- a/pkg/apis/authentication.k8s.io/v1beta1/doc.go +++ b/pkg/apis/authentication.k8s.io/v1beta1/doc.go @@ -14,5 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:deepcopy-gen=register + // +genconversion=true package v1beta1 diff --git a/pkg/apis/authorization/doc.go b/pkg/apis/authorization/doc.go new file mode 100644 index 00000000000..47877fadc02 --- /dev/null +++ b/pkg/apis/authorization/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=register + +package authorization diff --git a/pkg/apis/authorization/v1beta1/doc.go b/pkg/apis/authorization/v1beta1/doc.go index ac2fd00ba91..0dc068a3494 100644 --- a/pkg/apis/authorization/v1beta1/doc.go +++ b/pkg/apis/authorization/v1beta1/doc.go @@ -14,5 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:deepcopy-gen=register + // +genconversion=true package v1beta1 diff --git a/pkg/apis/autoscaling/doc.go b/pkg/apis/autoscaling/doc.go new file mode 100644 index 00000000000..601be4361c9 --- /dev/null +++ b/pkg/apis/autoscaling/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=register + +package autoscaling diff --git a/pkg/apis/autoscaling/v1/doc.go b/pkg/apis/autoscaling/v1/doc.go index 30030131794..d41a7fb76f7 100644 --- a/pkg/apis/autoscaling/v1/doc.go +++ b/pkg/apis/autoscaling/v1/doc.go @@ -14,5 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:deepcopy-gen=register + // +genconversion=true package v1 diff --git a/pkg/apis/batch/doc.go b/pkg/apis/batch/doc.go new file mode 100644 index 00000000000..bac88a93b16 --- /dev/null +++ b/pkg/apis/batch/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=register + +package batch diff --git a/pkg/apis/batch/v1/doc.go b/pkg/apis/batch/v1/doc.go index 30030131794..d41a7fb76f7 100644 --- a/pkg/apis/batch/v1/doc.go +++ b/pkg/apis/batch/v1/doc.go @@ -14,5 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:deepcopy-gen=register + // +genconversion=true package v1 diff --git a/pkg/apis/batch/v2alpha1/doc.go b/pkg/apis/batch/v2alpha1/doc.go index d320bc733c0..7a5c3bce461 100644 --- a/pkg/apis/batch/v2alpha1/doc.go +++ b/pkg/apis/batch/v2alpha1/doc.go @@ -14,5 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:deepcopy-gen=register + // +genconversion=true package v2alpha1 diff --git a/pkg/apis/certificates/doc.go b/pkg/apis/certificates/doc.go new file mode 100644 index 00000000000..f045cee7da8 --- /dev/null +++ b/pkg/apis/certificates/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=register + +package certificates diff --git a/pkg/apis/certificates/v1alpha1/doc.go b/pkg/apis/certificates/v1alpha1/doc.go index 935d55b7423..06dafc4f96b 100644 --- a/pkg/apis/certificates/v1alpha1/doc.go +++ b/pkg/apis/certificates/v1alpha1/doc.go @@ -14,5 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:deepcopy-gen=register + // +genconversion=true package v1alpha1 diff --git a/pkg/apis/componentconfig/doc.go b/pkg/apis/componentconfig/doc.go new file mode 100644 index 00000000000..bdbbbbd5ddf --- /dev/null +++ b/pkg/apis/componentconfig/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=register + +package componentconfig diff --git a/pkg/apis/componentconfig/v1alpha1/doc.go b/pkg/apis/componentconfig/v1alpha1/doc.go index 935d55b7423..06dafc4f96b 100644 --- a/pkg/apis/componentconfig/v1alpha1/doc.go +++ b/pkg/apis/componentconfig/v1alpha1/doc.go @@ -14,5 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:deepcopy-gen=register + // +genconversion=true package v1alpha1 diff --git a/pkg/apis/extensions/doc.go b/pkg/apis/extensions/doc.go new file mode 100644 index 00000000000..e2d73e9daf9 --- /dev/null +++ b/pkg/apis/extensions/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=register + +package extensions diff --git a/pkg/apis/extensions/v1beta1/doc.go b/pkg/apis/extensions/v1beta1/doc.go index ac2fd00ba91..0dc068a3494 100644 --- a/pkg/apis/extensions/v1beta1/doc.go +++ b/pkg/apis/extensions/v1beta1/doc.go @@ -14,5 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:deepcopy-gen=register + // +genconversion=true package v1beta1 diff --git a/pkg/apis/policy/doc.go b/pkg/apis/policy/doc.go new file mode 100644 index 00000000000..e7584c0fc2a --- /dev/null +++ b/pkg/apis/policy/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=register + +package policy diff --git a/pkg/apis/policy/v1alpha1/doc.go b/pkg/apis/policy/v1alpha1/doc.go index 67857651c4f..f4ed6878b30 100644 --- a/pkg/apis/policy/v1alpha1/doc.go +++ b/pkg/apis/policy/v1alpha1/doc.go @@ -14,6 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:deepcopy-gen=register + // Package policy is for any kind of policy object. Suitable examples, even if // they aren't all here, are PodDisruptionBudget, PodSecurityPolicy, // NetworkPolicy, etc. diff --git a/pkg/apis/rbac/doc.go b/pkg/apis/rbac/doc.go index c5f057484c4..6836fde7b1b 100644 --- a/pkg/apis/rbac/doc.go +++ b/pkg/apis/rbac/doc.go @@ -14,5 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:deepcopy-gen=register + // +groupName=rbac.authorization.k8s.io package rbac diff --git a/pkg/apis/rbac/v1alpha1/doc.go b/pkg/apis/rbac/v1alpha1/doc.go index 84205537df6..9446f85afe2 100644 --- a/pkg/apis/rbac/v1alpha1/doc.go +++ b/pkg/apis/rbac/v1alpha1/doc.go @@ -15,5 +15,7 @@ limitations under the License. */ // +groupName=rbac.authorization.k8s.io +// +k8s:deepcopy-gen=register + // +genconversion=true package v1alpha1 diff --git a/pkg/conversion/deep_copy_generated.go b/pkg/conversion/deep_copy_generated.go new file mode 100644 index 00000000000..e8d736f9168 --- /dev/null +++ b/pkg/conversion/deep_copy_generated.go @@ -0,0 +1,185 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package conversion + +import ( + forked_reflect "k8s.io/kubernetes/third_party/forked/reflect" + reflect "reflect" +) + +func DeepCopy_conversion_Cloner(in Cloner, out *Cloner, c *Cloner) error { + if in.deepCopyFuncs != nil { + in, out := in.deepCopyFuncs, &out.deepCopyFuncs + *out = make(map[reflect.Type]reflect.Value) + for range in { + // FIXME: Copying unassignable keys unsupported reflect.Type + } + } else { + out.deepCopyFuncs = nil + } + if in.generatedDeepCopyFuncs != nil { + in, out := in.generatedDeepCopyFuncs, &out.generatedDeepCopyFuncs + *out = make(map[reflect.Type]reflect.Value) + for range in { + // FIXME: Copying unassignable keys unsupported reflect.Type + } + } else { + out.generatedDeepCopyFuncs = nil + } + return nil +} + +func DeepCopy_conversion_ConversionFuncs(in ConversionFuncs, out *ConversionFuncs, c *Cloner) error { + if in.fns != nil { + in, out := in.fns, &out.fns + *out = make(map[typePair]reflect.Value) + for range in { + // FIXME: Copying unassignable keys unsupported typePair + } + } else { + out.fns = nil + } + return nil +} + +func DeepCopy_conversion_Converter(in Converter, out *Converter, c *Cloner) error { + if err := DeepCopy_conversion_ConversionFuncs(in.conversionFuncs, &out.conversionFuncs, c); err != nil { + return err + } + if err := DeepCopy_conversion_ConversionFuncs(in.generatedConversionFuncs, &out.generatedConversionFuncs, c); err != nil { + return err + } + if in.genericConversions != nil { + in, out := in.genericConversions, &out.genericConversions + *out = make([]GenericConversionFunc, len(in)) + for i := range in { + if newVal, err := c.DeepCopy(in[i]); err != nil { + return err + } else { + (*out)[i] = newVal.(GenericConversionFunc) + } + } + } else { + out.genericConversions = nil + } + if in.ignoredConversions != nil { + in, out := in.ignoredConversions, &out.ignoredConversions + *out = make(map[typePair]struct{}) + for range in { + // FIXME: Copying unassignable keys unsupported typePair + } + } else { + out.ignoredConversions = nil + } + if in.structFieldDests != nil { + in, out := in.structFieldDests, &out.structFieldDests + *out = make(map[typeNamePair][]typeNamePair) + for range in { + // FIXME: Copying unassignable keys unsupported typeNamePair + } + } else { + out.structFieldDests = nil + } + if in.structFieldSources != nil { + in, out := in.structFieldSources, &out.structFieldSources + *out = make(map[typeNamePair][]typeNamePair) + for range in { + // FIXME: Copying unassignable keys unsupported typeNamePair + } + } else { + out.structFieldSources = nil + } + if in.defaultingFuncs != nil { + in, out := in.defaultingFuncs, &out.defaultingFuncs + *out = make(map[reflect.Type]reflect.Value) + for range in { + // FIXME: Copying unassignable keys unsupported reflect.Type + } + } else { + out.defaultingFuncs = nil + } + if in.defaultingInterfaces != nil { + in, out := in.defaultingInterfaces, &out.defaultingInterfaces + *out = make(map[reflect.Type]interface{}) + for range in { + // FIXME: Copying unassignable keys unsupported reflect.Type + } + } else { + out.defaultingInterfaces = nil + } + if in.inputFieldMappingFuncs != nil { + in, out := in.inputFieldMappingFuncs, &out.inputFieldMappingFuncs + *out = make(map[reflect.Type]FieldMappingFunc) + for range in { + // FIXME: Copying unassignable keys unsupported reflect.Type + } + } else { + out.inputFieldMappingFuncs = nil + } + if in.inputDefaultFlags != nil { + in, out := in.inputDefaultFlags, &out.inputDefaultFlags + *out = make(map[reflect.Type]FieldMatchingFlags) + for range in { + // FIXME: Copying unassignable keys unsupported reflect.Type + } + } else { + out.inputDefaultFlags = nil + } + if in.Debug == nil { + out.Debug = nil + } else if newVal, err := c.DeepCopy(in.Debug); err != nil { + return err + } else { + out.Debug = newVal.(DebugLogger) + } + if in.nameFunc == nil { + out.nameFunc = nil + } else if newVal, err := c.DeepCopy(in.nameFunc); err != nil { + return err + } else { + out.nameFunc = newVal.(func(reflect.Type) string) + } + return nil +} + +func DeepCopy_conversion_Equalities(in Equalities, out *Equalities, c *Cloner) error { + if in.Equalities != nil { + in, out := in.Equalities, &out.Equalities + *out = make(forked_reflect.Equalities) + for range in { + // FIXME: Copying unassignable keys unsupported reflect.Type + } + } else { + out.Equalities = nil + } + return nil +} + +func DeepCopy_conversion_Meta(in Meta, out *Meta, c *Cloner) error { + if in.KeyNameMapping == nil { + out.KeyNameMapping = nil + } else if newVal, err := c.DeepCopy(in.KeyNameMapping); err != nil { + return err + } else { + out.KeyNameMapping = newVal.(FieldMappingFunc) + } + return nil +} diff --git a/pkg/conversion/doc.go b/pkg/conversion/doc.go index 0c46ef2d169..c3866ff46a2 100644 --- a/pkg/conversion/doc.go +++ b/pkg/conversion/doc.go @@ -14,6 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:deepcopy-gen=generate + // Package conversion provides go object versioning. // // Specifically, conversion provides a way for you to define multiple versions diff --git a/pkg/runtime/deep_copy_generated.go b/pkg/runtime/deep_copy_generated.go index 3456eabeb32..46f08062f45 100644 --- a/pkg/runtime/deep_copy_generated.go +++ b/pkg/runtime/deep_copy_generated.go @@ -21,9 +21,39 @@ limitations under the License. package runtime import ( + unversioned "k8s.io/kubernetes/pkg/api/unversioned" conversion "k8s.io/kubernetes/pkg/conversion" + reflect "reflect" ) +func DeepCopy_runtime_NoopDecoder(in NoopDecoder, out *NoopDecoder, c *conversion.Cloner) error { + if in.Encoder == nil { + out.Encoder = nil + } else if newVal, err := c.DeepCopy(in.Encoder); err != nil { + return err + } else { + out.Encoder = newVal.(Encoder) + } + return nil +} + +func DeepCopy_runtime_NoopEncoder(in NoopEncoder, out *NoopEncoder, c *conversion.Cloner) error { + if in.Decoder == nil { + out.Decoder = nil + } else if newVal, err := c.DeepCopy(in.Decoder); err != nil { + return err + } else { + out.Decoder = newVal.(Decoder) + } + return nil +} + +func DeepCopy_runtime_Pair(in Pair, out *Pair, c *conversion.Cloner) error { + out.Name = in.Name + out.Doc = in.Doc + return nil +} + func DeepCopy_runtime_RawExtension(in RawExtension, out *RawExtension, c *conversion.Cloner) error { if in.Raw != nil { in, out := in.Raw, &out.Raw @@ -42,6 +72,115 @@ func DeepCopy_runtime_RawExtension(in RawExtension, out *RawExtension, c *conver return nil } +func DeepCopy_runtime_Scheme(in Scheme, out *Scheme, c *conversion.Cloner) error { + if in.gvkToType != nil { + in, out := in.gvkToType, &out.gvkToType + *out = make(map[unversioned.GroupVersionKind]reflect.Type) + for key, val := range in { + if newVal, err := c.DeepCopy(val); err != nil { + return err + } else { + (*out)[key] = newVal.(reflect.Type) + } + } + } else { + out.gvkToType = nil + } + if in.typeToGVK != nil { + in, out := in.typeToGVK, &out.typeToGVK + *out = make(map[reflect.Type][]unversioned.GroupVersionKind) + for range in { + // FIXME: Copying unassignable keys unsupported reflect.Type + } + } else { + out.typeToGVK = nil + } + if in.unversionedTypes != nil { + in, out := in.unversionedTypes, &out.unversionedTypes + *out = make(map[reflect.Type]unversioned.GroupVersionKind) + for range in { + // FIXME: Copying unassignable keys unsupported reflect.Type + } + } else { + out.unversionedTypes = nil + } + if in.unversionedKinds != nil { + in, out := in.unversionedKinds, &out.unversionedKinds + *out = make(map[string]reflect.Type) + for key, val := range in { + if newVal, err := c.DeepCopy(val); err != nil { + return err + } else { + (*out)[key] = newVal.(reflect.Type) + } + } + } else { + out.unversionedKinds = nil + } + if in.fieldLabelConversionFuncs != nil { + in, out := in.fieldLabelConversionFuncs, &out.fieldLabelConversionFuncs + *out = make(map[string]map[string]FieldLabelConversionFunc) + for key, val := range in { + if newVal, err := c.DeepCopy(val); err != nil { + return err + } else { + (*out)[key] = newVal.(map[string]FieldLabelConversionFunc) + } + } + } else { + out.fieldLabelConversionFuncs = nil + } + if in.converter != nil { + in, out := in.converter, &out.converter + *out = new(conversion.Converter) + if err := conversion.DeepCopy_conversion_Converter(*in, *out, c); err != nil { + return err + } + } else { + out.converter = nil + } + if in.cloner != nil { + in, out := in.cloner, &out.cloner + *out = new(conversion.Cloner) + if err := conversion.DeepCopy_conversion_Cloner(*in, *out, c); err != nil { + return err + } + } else { + out.cloner = nil + } + return nil +} + +func DeepCopy_runtime_SerializerInfo(in SerializerInfo, out *SerializerInfo, c *conversion.Cloner) error { + if in.Serializer == nil { + out.Serializer = nil + } else if newVal, err := c.DeepCopy(in.Serializer); err != nil { + return err + } else { + out.Serializer = newVal.(Serializer) + } + out.EncodesAsText = in.EncodesAsText + out.MediaType = in.MediaType + return nil +} + +func DeepCopy_runtime_StreamSerializerInfo(in StreamSerializerInfo, out *StreamSerializerInfo, c *conversion.Cloner) error { + if err := DeepCopy_runtime_SerializerInfo(in.SerializerInfo, &out.SerializerInfo, c); err != nil { + return err + } + if in.Framer == nil { + out.Framer = nil + } else if newVal, err := c.DeepCopy(in.Framer); err != nil { + return err + } else { + out.Framer = newVal.(Framer) + } + if err := DeepCopy_runtime_SerializerInfo(in.Embedded, &out.Embedded, c); err != nil { + return err + } + return nil +} + func DeepCopy_runtime_TypeMeta(in TypeMeta, out *TypeMeta, c *conversion.Cloner) error { out.APIVersion = in.APIVersion out.Kind = in.Kind @@ -49,9 +188,7 @@ func DeepCopy_runtime_TypeMeta(in TypeMeta, out *TypeMeta, c *conversion.Cloner) } func DeepCopy_runtime_Unknown(in Unknown, out *Unknown, c *conversion.Cloner) error { - if err := DeepCopy_runtime_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil { - return err - } + out.TypeMeta = in.TypeMeta if in.Raw != nil { in, out := in.Raw, &out.Raw *out = make([]byte, len(in)) @@ -63,3 +200,71 @@ func DeepCopy_runtime_Unknown(in Unknown, out *Unknown, c *conversion.Cloner) er out.ContentType = in.ContentType return nil } + +func DeepCopy_runtime_Unstructured(in Unstructured, out *Unstructured, c *conversion.Cloner) error { + if in.Object != nil { + in, out := in.Object, &out.Object + *out = make(map[string]interface{}) + for key, val := range in { + if newVal, err := c.DeepCopy(val); err != nil { + return err + } else { + (*out)[key] = newVal.(interface{}) + } + } + } else { + out.Object = nil + } + return nil +} + +func DeepCopy_runtime_UnstructuredList(in UnstructuredList, out *UnstructuredList, c *conversion.Cloner) error { + if in.Object != nil { + in, out := in.Object, &out.Object + *out = make(map[string]interface{}) + for key, val := range in { + if newVal, err := c.DeepCopy(val); err != nil { + return err + } else { + (*out)[key] = newVal.(interface{}) + } + } + } else { + out.Object = nil + } + if in.Items != nil { + in, out := in.Items, &out.Items + *out = make([]*Unstructured, len(in)) + for i := range in { + if newVal, err := c.DeepCopy(in[i]); err != nil { + return err + } else { + (*out)[i] = newVal.(*Unstructured) + } + } + } else { + out.Items = nil + } + return nil +} + +func DeepCopy_runtime_UnstructuredObjectConverter(in UnstructuredObjectConverter, out *UnstructuredObjectConverter, c *conversion.Cloner) error { + return nil +} + +func DeepCopy_runtime_VersionedObjects(in VersionedObjects, out *VersionedObjects, c *conversion.Cloner) error { + if in.Objects != nil { + in, out := in.Objects, &out.Objects + *out = make([]Object, len(in)) + for i := range in { + if newVal, err := c.DeepCopy(in[i]); err != nil { + return err + } else { + (*out)[i] = newVal.(Object) + } + } + } else { + out.Objects = nil + } + return nil +} diff --git a/pkg/runtime/doc.go b/pkg/runtime/doc.go index 7bdc70a2f77..120cd6d90db 100644 --- a/pkg/runtime/doc.go +++ b/pkg/runtime/doc.go @@ -41,4 +41,7 @@ limitations under the License. // // As a bonus, a few common types useful from all api objects and versions // are provided in types.go. + +// +k8s:deepcopy-gen=generate + package runtime From dc10f10e48bf445d0c510c1fc35e6bd85cd286f5 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Wed, 15 Jun 2016 23:43:13 -0700 Subject: [PATCH 11/14] Recreate the opt-in/opt-out logic for deepcopy This is the last piece of Clayton's #26179 to be implemented with file tags. All diffs are accounted for. Followup will use this to streamline some packages. Also add some V(5) debugging - it was helpful in diagnosing various issues, it may be helpful again. --- cmd/libs/go2idl/args/args.go | 5 +- .../deepcopy-gen/generators/deepcopy.go | 165 +++++++++++++++--- .../deepcopy-gen/generators/deepcopy_test.go | 77 ++++++++ .../go2idl/deepcopy-gen/generators/tags.go | 33 ---- cmd/libs/go2idl/deepcopy-gen/main.go | 23 ++- docs/devel/adding-an-APIGroup.md | 4 +- federation/apis/federation/doc.go | 2 +- federation/apis/federation/v1beta1/doc.go | 2 +- pkg/api/doc.go | 2 +- pkg/api/unversioned/doc.go | 2 +- pkg/api/v1/doc.go | 2 +- pkg/apis/apps/doc.go | 2 +- pkg/apis/apps/v1alpha1/doc.go | 2 +- pkg/apis/authentication.k8s.io/doc.go | 2 +- pkg/apis/authentication.k8s.io/v1beta1/doc.go | 2 +- pkg/apis/authorization/doc.go | 2 +- pkg/apis/authorization/v1beta1/doc.go | 2 +- pkg/apis/autoscaling/doc.go | 2 +- pkg/apis/autoscaling/v1/doc.go | 2 +- pkg/apis/batch/doc.go | 2 +- pkg/apis/batch/v1/doc.go | 2 +- pkg/apis/batch/v2alpha1/doc.go | 2 +- pkg/apis/certificates/doc.go | 2 +- pkg/apis/certificates/v1alpha1/doc.go | 2 +- pkg/apis/componentconfig/doc.go | 2 +- pkg/apis/componentconfig/v1alpha1/doc.go | 2 +- pkg/apis/extensions/doc.go | 2 +- pkg/apis/extensions/v1beta1/doc.go | 2 +- pkg/apis/policy/doc.go | 2 +- pkg/apis/policy/v1alpha1/doc.go | 2 +- pkg/apis/rbac/doc.go | 2 +- pkg/apis/rbac/v1alpha1/doc.go | 2 +- pkg/conversion/doc.go | 2 +- pkg/runtime/doc.go | 2 +- 34 files changed, 266 insertions(+), 97 deletions(-) delete mode 100644 cmd/libs/go2idl/deepcopy-gen/generators/tags.go diff --git a/cmd/libs/go2idl/args/args.go b/cmd/libs/go2idl/args/args.go index 58bdf932ee9..a5bee69b434 100644 --- a/cmd/libs/go2idl/args/args.go +++ b/cmd/libs/go2idl/args/args.go @@ -31,6 +31,8 @@ import ( "k8s.io/kubernetes/cmd/libs/go2idl/namer" "k8s.io/kubernetes/cmd/libs/go2idl/parser" "k8s.io/kubernetes/cmd/libs/go2idl/types" + "k8s.io/kubernetes/pkg/util" + utilflag "k8s.io/kubernetes/pkg/util/flag" "github.com/spf13/pflag" ) @@ -147,7 +149,8 @@ func DefaultSourceTree() string { // If you don't need any non-default behavior, use as: // args.Default().Execute(...) func (g *GeneratorArgs) Execute(nameSystems namer.NameSystems, defaultSystem string, pkgs func(*generator.Context, *GeneratorArgs) generator.Packages) error { - pflag.Parse() + utilflag.InitFlags() + util.InitLogs() b, err := g.NewBuilder() if err != nil { diff --git a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go index d28396c0c35..5c34d18177e 100644 --- a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go +++ b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go @@ -37,6 +37,59 @@ type CustomArgs struct { BoundingDirs []string // Only deal with types rooted under these dirs. } +// This is the comment tag that carries parameters for deep-copy generation. +const tagName = "k8s:deepcopy-gen" + +// Known values for the comment tag. +const tagValuePackage = "package" + +// tagValue holds parameters from a tagName tag. +type tagValue struct { + value string + register bool +} + +func extractTag(comments []string) *tagValue { + tagVals := types.ExtractCommentTags("+", comments)[tagName] + if tagVals == nil { + // No match for the tag. + return nil + } + // If there are multiple values, abort. + if len(tagVals) > 1 { + glog.Fatalf("Found %d %s tags: %q", len(tagVals), tagName, tagVals) + } + + // If we got here we are returning something. + tag := &tagValue{} + + // Get the primary value. + parts := strings.Split(tagVals[0], ",") + if len(parts) >= 1 { + tag.value = parts[0] + } + + // Parse extra arguments. + parts = parts[1:] + for i := range parts { + kv := strings.SplitN(parts[i], "=", 2) + k := kv[0] + v := "" + if len(kv) == 2 { + v = kv[1] + } + switch k { + case "register": + if v != "false" { + tag.register = true + } + default: + glog.Fatalf("Unsupported %s param: %q", tagName, parts[i]) + } + } + return tag +} + // TODO: This is created only to reduce number of changes in a single PR. // Remove it and use PublicNamer instead. func deepCopyNamer() *namer.NameStrategy { @@ -86,38 +139,61 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat } } - for _, p := range context.Universe { - // Short-circuit if this package has not opted in. - if tagvals := types.ExtractCommentTags("+", p.Comments)["k8s:deepcopy-gen"]; tagvals == nil { - // No tag for this package. - continue - } else if tagvals[0] != "generate" && tagvals[0] != "register" { - // Unknown tag. - glog.Errorf("Uknown tag value '+k8s:deepcopy-gen=%s'", tagvals[0]) + for i := range inputs { + glog.V(5).Infof("considering pkg %q", i) + pkg := context.Universe[i] + if pkg == nil { + // If the input had no Go files, for example. continue } - needsGeneration := false - for _, t := range p.Types { - if copyableWithinPackage(t, boundingDirs) && inputs.Has(t.Name.Package) { - needsGeneration = true - break + + ptag := extractTag(pkg.Comments) + ptagValue := "" + ptagRegister := false + if ptag != nil { + ptagValue = ptag.value + if ptagValue != tagValuePackage { + glog.Fatalf("Package %v: unsupported %s value: %q", i, tagName, ptagValue) + } + ptagRegister = ptag.register + glog.V(5).Infof(" tag.value: %q, tag.register: %t", ptagValue, ptagRegister) + } else { + glog.V(5).Infof(" no tag") + } + + // If the pkg-scoped tag says to generate, we can skip scanning types. + pkgNeedsGeneration := (ptagValue == tagValuePackage) + if !pkgNeedsGeneration { + // If the pkg-scoped tag did not exist, scan all types for one that + // explicitly wants generation. + for _, t := range pkg.Types { + glog.V(5).Infof(" considering type %q", t.Name.String()) + ttag := extractTag(t.CommentLines) + if ttag != nil && ttag.value == "true" { + glog.V(5).Infof(" tag=true") + if !copyableWithinPackage(t, boundingDirs) { + glog.Fatalf("Type %v requests deepcopy generation but is not copyable", t) + } + pkgNeedsGeneration = true + break + } } } - if needsGeneration { - path := p.Path + + if pkgNeedsGeneration { packages = append(packages, &generator.DefaultPackage{ - PackageName: strings.Split(filepath.Base(path), ".")[0], - PackagePath: path, + PackageName: strings.Split(filepath.Base(pkg.Path), ".")[0], + PackagePath: pkg.Path, HeaderText: header, GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) { generators = []generator.Generator{} generators = append( - generators, NewGenDeepCopy(arguments.OutputFileBaseName, path, boundingDirs)) + generators, NewGenDeepCopy(arguments.OutputFileBaseName, pkg.Path, boundingDirs, (ptagValue == tagValuePackage), ptagRegister)) return generators }, FilterFunc: func(c *generator.Context, t *types.Type) bool { - return t.Name.Package == path + return t.Name.Package == pkg.Path }, }) } @@ -135,19 +211,23 @@ type genDeepCopy struct { generator.DefaultGen targetPackage string boundingDirs []string + allTypes bool + registerTypes bool imports namer.ImportTracker typesForInit []*types.Type globalVariables map[string]interface{} } -func NewGenDeepCopy(sanitizedName, targetPackage string, boundingDirs []string) generator.Generator { +func NewGenDeepCopy(sanitizedName, targetPackage string, boundingDirs []string, allTypes, registerTypes bool) generator.Generator { return &genDeepCopy{ DefaultGen: generator.DefaultGen{ OptionalName: sanitizedName, }, targetPackage: targetPackage, boundingDirs: boundingDirs, + allTypes: allTypes, + registerTypes: registerTypes, imports: generator.NewImportTracker(), typesForInit: make([]*types.Type, 0), } @@ -159,8 +239,15 @@ func (g *genDeepCopy) Namers(c *generator.Context) namer.NameSystems { } func (g *genDeepCopy) Filter(c *generator.Context, t *types.Type) bool { - // Filter out all types not copyable within the package. - copyable := g.copyableWithinPackage(t) + // Filter out types not being processed or not copyable within the package. + enabled := g.allTypes + if !enabled { + ttag := extractTag(t.CommentLines) + if ttag != nil && ttag.value == "true" { + enabled = true + } + } + copyable := enabled && g.copyableWithinPackage(t) if copyable { g.typesForInit = append(g.typesForInit, t) } @@ -208,7 +295,8 @@ func isRootedUnder(pkg string, roots []string) bool { func copyableWithinPackage(t *types.Type, boundingDirs []string) bool { // If the type opts out of copy-generation, stop. - if extractBoolTagOrDie("k8s:deepcopy-gen", true, t.CommentLines) == false { + ttag := extractTag(t.CommentLines) + if ttag != nil && ttag.value == "false" { return false } // Only packages within the restricted range can be processed. @@ -276,12 +364,14 @@ func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error { g.globalVariables = map[string]interface{}{ "Cloner": cloner, } - if tagvals := types.ExtractCommentTags("+", c.Universe[g.targetPackage].Comments)["k8s:deepcopy-gen"]; tagvals != nil && tagvals[0] != "register" { + if !g.registerTypes { // TODO: We should come up with a solution to register all generated // deep-copy functions. However, for now, to avoid import cycles // we register only those explicitly requested. return nil } + glog.V(5).Infof("registering types in pkg %q", g.targetPackage) + scheme := c.Universe.Variable(types.Name{Package: apiPackagePath, Name: "Scheme"}) g.imports.AddType(scheme) g.globalVariables["scheme"] = scheme @@ -302,7 +392,34 @@ func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error { return sw.Error() } +func (g *genDeepCopy) needsGeneration(t *types.Type) bool { + tag := extractTag(t.CommentLines) + tv := "" + if tag != nil { + tv = tag.value + if tv != "true" && tv != "false" { + glog.Fatalf("Type %v: unsupported %s value: %q", t, tagName, tag.value) + } + } + if g.allTypes && tv == "false" { + // The whole package is being generated, but this type has opted out. + glog.V(5).Infof("not generating for type %v because type opted out", t) + return false + } + if !g.allTypes && tv != "true" { + // The whole package is NOT being generated, and this type has NOT opted in. + glog.V(5).Infof("not generating for type %v because type did not opt in", t) + return false + } + return true +} + func (g *genDeepCopy) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { + if !g.needsGeneration(t) { + return nil + } + glog.V(5).Infof("generating for type %v", t) + sw := generator.NewSnippetWriter(w, c, "$", "$") funcName := g.funcNameTmpl(t) sw.Do(fmt.Sprintf("func %s(in $.type|raw$, out *$.type|raw$, c *$.Cloner|raw$) error {\n", funcName), g.withGlobals(argsFromType(t))) diff --git a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go index f6d33837e1b..cafab0db656 100644 --- a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go +++ b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy_test.go @@ -265,3 +265,80 @@ func Test_hasDeepCopyMethod(t *testing.T) { } } } + +func Test_extractTagParams(t *testing.T) { + testCases := []struct { + comments []string + expect *tagValue + }{ + { + comments: []string{ + "Human comment", + }, + expect: nil, + }, + { + comments: []string{ + "Human comment", + "+k8s:deepcopy-gen", + }, + expect: &tagValue{ + value: "", + register: false, + }, + }, + { + comments: []string{ + "Human comment", + "+k8s:deepcopy-gen=package", + }, + expect: &tagValue{ + value: "package", + register: false, + }, + }, + { + comments: []string{ + "Human comment", + "+k8s:deepcopy-gen=package,register", + }, + expect: &tagValue{ + value: "package", + register: true, + }, + }, + { + comments: []string{ + "Human comment", + "+k8s:deepcopy-gen=package,register=true", + }, + expect: &tagValue{ + value: "package", + register: true, + }, + }, + { + comments: []string{ + "Human comment", + "+k8s:deepcopy-gen=package,register=false", + }, + expect: &tagValue{ + value: "package", + register: false, + }, + }, + } + + for i, tc := range testCases { + r := extractTag(tc.comments) + if r == nil && tc.expect != nil { + t.Errorf("case[%d]: expected non-nil", i) + } + if r != nil && tc.expect == nil { + t.Errorf("case[%d]: expected nil, got %v", i, *r) + } + if r != nil && *r != *tc.expect { + t.Errorf("case[%d]: expected %v, got %v", i, *tc.expect, *r) + } + } +} diff --git a/cmd/libs/go2idl/deepcopy-gen/generators/tags.go b/cmd/libs/go2idl/deepcopy-gen/generators/tags.go deleted file mode 100644 index 032c501e3de..00000000000 --- a/cmd/libs/go2idl/deepcopy-gen/generators/tags.go +++ /dev/null @@ -1,33 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package generators - -import ( - "github.com/golang/glog" - "k8s.io/kubernetes/cmd/libs/go2idl/types" -) - -// extractBoolTagOrDie gets the comment-tags for the key and asserts that, if -// it exists, the value is boolean. If the tag did not exist, it returns -// defaultVal. -func extractBoolTagOrDie(key string, defaultVal bool, lines []string) bool { - val, err := types.ExtractSingleBoolCommentTag("+", key, defaultVal, lines) - if err != nil { - glog.Fatalf(err.Error()) - } - return val -} diff --git a/cmd/libs/go2idl/deepcopy-gen/main.go b/cmd/libs/go2idl/deepcopy-gen/main.go index dd584ce811b..39927b8a655 100644 --- a/cmd/libs/go2idl/deepcopy-gen/main.go +++ b/cmd/libs/go2idl/deepcopy-gen/main.go @@ -28,18 +28,23 @@ limitations under the License. // Generation is governed by comment tags in the source. Any package may // request DeepCopy generation by including a comment in the file-comments of // one file, of the form: -// // +k8s:deepcopy-gen=generate -// or: -// // +k8s:deepcopy-gen=register +// // +k8s:deepcopy-gen=package // -// Packages which specify `=generate` will have DeepCopy functions generated -// into them. Packages which specify `=register` will have DeepCopy functions -// generated and registered with in `init()` function call to -// `Scheme.AddGeneratedDeepCopyFuncs()`. +// Packages can request that the generated DeepCopy functions be registered +// with an `init()` function call to `Scheme.AddGeneratedDeepCopyFuncs()` by +// changing the tag to: +// // +k8s:deepcopy-gen=package,register // -// Individual types may opt out of DeepCopy generation by specifying a comment -// of the form: +// DeepCopy functions can be generated for individual types, rather than the +// entire package by specifying a comment on the type definion of the form: +// // +k8s:deepcopy-gen=true +// +// When generating for a whole package, individual types may opt out of +// DeepCopy generation by specifying a comment on the of the form: // // +k8s:deepcopy-gen=false +// +// Note that registration is a whole-package option, and is not available for +// individual types. package main import ( diff --git a/docs/devel/adding-an-APIGroup.md b/docs/devel/adding-an-APIGroup.md index 6026cc2e45d..63c4e2a2d69 100644 --- a/docs/devel/adding-an-APIGroup.md +++ b/docs/devel/adding-an-APIGroup.md @@ -77,8 +77,8 @@ cmd/libs/go2idl/ tool. 1. Add your "group/" or "group/version" into cmd/libs/go2idl/conversion-gen/main.go; 2. Make sure your pkg/apis/``/`` directory has a doc.go file - with the comment `// +k8s:deepcopy-gen=register`, to catch the attention - of our generation tools. + with the comment `// +k8s:deepcopy-gen=package,register`, to catch the + attention of our generation tools. 3. Make sure your pkg/apis/``/`` directory has a doc.go file with the comment `// +genconversion=true`, to catch the attention of our gen-conversion script. diff --git a/federation/apis/federation/doc.go b/federation/apis/federation/doc.go index d3eb70de2df..7a45fb7bb8c 100644 --- a/federation/apis/federation/doc.go +++ b/federation/apis/federation/doc.go @@ -14,6 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register package federation diff --git a/federation/apis/federation/v1beta1/doc.go b/federation/apis/federation/v1beta1/doc.go index 0dc068a3494..8eebd4e8795 100644 --- a/federation/apis/federation/v1beta1/doc.go +++ b/federation/apis/federation/v1beta1/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register // +genconversion=true package v1beta1 diff --git a/pkg/api/doc.go b/pkg/api/doc.go index 23fea0579da..1507a8823b4 100644 --- a/pkg/api/doc.go +++ b/pkg/api/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register // Package api contains the latest (or "internal") version of the // Kubernetes API objects. This is the API objects as represented in memory. diff --git a/pkg/api/unversioned/doc.go b/pkg/api/unversioned/doc.go index e18a6675fd2..d0ffc33275f 100644 --- a/pkg/api/unversioned/doc.go +++ b/pkg/api/unversioned/doc.go @@ -14,6 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=generate +// +k8s:deepcopy-gen=package package unversioned diff --git a/pkg/api/v1/doc.go b/pkg/api/v1/doc.go index b9c15641bce..0d81e264a06 100644 --- a/pkg/api/v1/doc.go +++ b/pkg/api/v1/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register // Package v1 is the v1 version of the API. // +genconversion=true diff --git a/pkg/apis/apps/doc.go b/pkg/apis/apps/doc.go index 9943700e451..bca1ff4ef01 100644 --- a/pkg/apis/apps/doc.go +++ b/pkg/apis/apps/doc.go @@ -14,6 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register package apps diff --git a/pkg/apis/apps/v1alpha1/doc.go b/pkg/apis/apps/v1alpha1/doc.go index 06dafc4f96b..97c790d9da3 100644 --- a/pkg/apis/apps/v1alpha1/doc.go +++ b/pkg/apis/apps/v1alpha1/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register // +genconversion=true package v1alpha1 diff --git a/pkg/apis/authentication.k8s.io/doc.go b/pkg/apis/authentication.k8s.io/doc.go index 084447ac6fe..66c5ae720c0 100644 --- a/pkg/apis/authentication.k8s.io/doc.go +++ b/pkg/apis/authentication.k8s.io/doc.go @@ -14,6 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register package authentication diff --git a/pkg/apis/authentication.k8s.io/v1beta1/doc.go b/pkg/apis/authentication.k8s.io/v1beta1/doc.go index 0dc068a3494..8eebd4e8795 100644 --- a/pkg/apis/authentication.k8s.io/v1beta1/doc.go +++ b/pkg/apis/authentication.k8s.io/v1beta1/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register // +genconversion=true package v1beta1 diff --git a/pkg/apis/authorization/doc.go b/pkg/apis/authorization/doc.go index 47877fadc02..9660e5eacf9 100644 --- a/pkg/apis/authorization/doc.go +++ b/pkg/apis/authorization/doc.go @@ -14,6 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register package authorization diff --git a/pkg/apis/authorization/v1beta1/doc.go b/pkg/apis/authorization/v1beta1/doc.go index 0dc068a3494..8eebd4e8795 100644 --- a/pkg/apis/authorization/v1beta1/doc.go +++ b/pkg/apis/authorization/v1beta1/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register // +genconversion=true package v1beta1 diff --git a/pkg/apis/autoscaling/doc.go b/pkg/apis/autoscaling/doc.go index 601be4361c9..2c770186ba7 100644 --- a/pkg/apis/autoscaling/doc.go +++ b/pkg/apis/autoscaling/doc.go @@ -14,6 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register package autoscaling diff --git a/pkg/apis/autoscaling/v1/doc.go b/pkg/apis/autoscaling/v1/doc.go index d41a7fb76f7..0dc08faf0a7 100644 --- a/pkg/apis/autoscaling/v1/doc.go +++ b/pkg/apis/autoscaling/v1/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register // +genconversion=true package v1 diff --git a/pkg/apis/batch/doc.go b/pkg/apis/batch/doc.go index bac88a93b16..c6b203cd8eb 100644 --- a/pkg/apis/batch/doc.go +++ b/pkg/apis/batch/doc.go @@ -14,6 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register package batch diff --git a/pkg/apis/batch/v1/doc.go b/pkg/apis/batch/v1/doc.go index d41a7fb76f7..0dc08faf0a7 100644 --- a/pkg/apis/batch/v1/doc.go +++ b/pkg/apis/batch/v1/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register // +genconversion=true package v1 diff --git a/pkg/apis/batch/v2alpha1/doc.go b/pkg/apis/batch/v2alpha1/doc.go index 7a5c3bce461..c7cf93b9f98 100644 --- a/pkg/apis/batch/v2alpha1/doc.go +++ b/pkg/apis/batch/v2alpha1/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register // +genconversion=true package v2alpha1 diff --git a/pkg/apis/certificates/doc.go b/pkg/apis/certificates/doc.go index f045cee7da8..d2897cb87d7 100644 --- a/pkg/apis/certificates/doc.go +++ b/pkg/apis/certificates/doc.go @@ -14,6 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register package certificates diff --git a/pkg/apis/certificates/v1alpha1/doc.go b/pkg/apis/certificates/v1alpha1/doc.go index 06dafc4f96b..97c790d9da3 100644 --- a/pkg/apis/certificates/v1alpha1/doc.go +++ b/pkg/apis/certificates/v1alpha1/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register // +genconversion=true package v1alpha1 diff --git a/pkg/apis/componentconfig/doc.go b/pkg/apis/componentconfig/doc.go index bdbbbbd5ddf..d044b16db39 100644 --- a/pkg/apis/componentconfig/doc.go +++ b/pkg/apis/componentconfig/doc.go @@ -14,6 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register package componentconfig diff --git a/pkg/apis/componentconfig/v1alpha1/doc.go b/pkg/apis/componentconfig/v1alpha1/doc.go index 06dafc4f96b..97c790d9da3 100644 --- a/pkg/apis/componentconfig/v1alpha1/doc.go +++ b/pkg/apis/componentconfig/v1alpha1/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register // +genconversion=true package v1alpha1 diff --git a/pkg/apis/extensions/doc.go b/pkg/apis/extensions/doc.go index e2d73e9daf9..2bbb71d0571 100644 --- a/pkg/apis/extensions/doc.go +++ b/pkg/apis/extensions/doc.go @@ -14,6 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register package extensions diff --git a/pkg/apis/extensions/v1beta1/doc.go b/pkg/apis/extensions/v1beta1/doc.go index 0dc068a3494..8eebd4e8795 100644 --- a/pkg/apis/extensions/v1beta1/doc.go +++ b/pkg/apis/extensions/v1beta1/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register // +genconversion=true package v1beta1 diff --git a/pkg/apis/policy/doc.go b/pkg/apis/policy/doc.go index e7584c0fc2a..876858cd9a7 100644 --- a/pkg/apis/policy/doc.go +++ b/pkg/apis/policy/doc.go @@ -14,6 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register package policy diff --git a/pkg/apis/policy/v1alpha1/doc.go b/pkg/apis/policy/v1alpha1/doc.go index f4ed6878b30..37d78e29170 100644 --- a/pkg/apis/policy/v1alpha1/doc.go +++ b/pkg/apis/policy/v1alpha1/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register // Package policy is for any kind of policy object. Suitable examples, even if // they aren't all here, are PodDisruptionBudget, PodSecurityPolicy, diff --git a/pkg/apis/rbac/doc.go b/pkg/apis/rbac/doc.go index 6836fde7b1b..e4ce69b40b9 100644 --- a/pkg/apis/rbac/doc.go +++ b/pkg/apis/rbac/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register // +groupName=rbac.authorization.k8s.io package rbac diff --git a/pkg/apis/rbac/v1alpha1/doc.go b/pkg/apis/rbac/v1alpha1/doc.go index 9446f85afe2..35aef40894f 100644 --- a/pkg/apis/rbac/v1alpha1/doc.go +++ b/pkg/apis/rbac/v1alpha1/doc.go @@ -15,7 +15,7 @@ limitations under the License. */ // +groupName=rbac.authorization.k8s.io -// +k8s:deepcopy-gen=register +// +k8s:deepcopy-gen=package,register // +genconversion=true package v1alpha1 diff --git a/pkg/conversion/doc.go b/pkg/conversion/doc.go index c3866ff46a2..6aadeef7de8 100644 --- a/pkg/conversion/doc.go +++ b/pkg/conversion/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=generate +// +k8s:deepcopy-gen=package // Package conversion provides go object versioning. // diff --git a/pkg/runtime/doc.go b/pkg/runtime/doc.go index 120cd6d90db..89425b8a7d5 100644 --- a/pkg/runtime/doc.go +++ b/pkg/runtime/doc.go @@ -42,6 +42,6 @@ limitations under the License. // As a bonus, a few common types useful from all api objects and versions // are provided in types.go. -// +k8s:deepcopy-gen=generate +// +k8s:deepcopy-gen=package package runtime From 51394e862dcb429af9ce19348ca86062cc9ad815 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Wed, 15 Jun 2016 23:43:13 -0700 Subject: [PATCH 12/14] Make runtime opt in to deepcopy This minimizes the number of functions generated. It also breaks the chain of symbol dependencies to pkg/conversion, so we can remove now-unreferenced (previously unused but referenced) conversion deep-copies. --- pkg/conversion/deep_copy_generated.go | 185 ----------------------- pkg/conversion/doc.go | 2 - pkg/runtime/deep_copy_generated.go | 207 -------------------------- pkg/runtime/doc.go | 2 - pkg/runtime/generated.proto | 3 + pkg/runtime/types.go | 3 + 6 files changed, 6 insertions(+), 396 deletions(-) delete mode 100644 pkg/conversion/deep_copy_generated.go diff --git a/pkg/conversion/deep_copy_generated.go b/pkg/conversion/deep_copy_generated.go deleted file mode 100644 index e8d736f9168..00000000000 --- a/pkg/conversion/deep_copy_generated.go +++ /dev/null @@ -1,185 +0,0 @@ -// +build !ignore_autogenerated - -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// This file was autogenerated by deepcopy-gen. Do not edit it manually! - -package conversion - -import ( - forked_reflect "k8s.io/kubernetes/third_party/forked/reflect" - reflect "reflect" -) - -func DeepCopy_conversion_Cloner(in Cloner, out *Cloner, c *Cloner) error { - if in.deepCopyFuncs != nil { - in, out := in.deepCopyFuncs, &out.deepCopyFuncs - *out = make(map[reflect.Type]reflect.Value) - for range in { - // FIXME: Copying unassignable keys unsupported reflect.Type - } - } else { - out.deepCopyFuncs = nil - } - if in.generatedDeepCopyFuncs != nil { - in, out := in.generatedDeepCopyFuncs, &out.generatedDeepCopyFuncs - *out = make(map[reflect.Type]reflect.Value) - for range in { - // FIXME: Copying unassignable keys unsupported reflect.Type - } - } else { - out.generatedDeepCopyFuncs = nil - } - return nil -} - -func DeepCopy_conversion_ConversionFuncs(in ConversionFuncs, out *ConversionFuncs, c *Cloner) error { - if in.fns != nil { - in, out := in.fns, &out.fns - *out = make(map[typePair]reflect.Value) - for range in { - // FIXME: Copying unassignable keys unsupported typePair - } - } else { - out.fns = nil - } - return nil -} - -func DeepCopy_conversion_Converter(in Converter, out *Converter, c *Cloner) error { - if err := DeepCopy_conversion_ConversionFuncs(in.conversionFuncs, &out.conversionFuncs, c); err != nil { - return err - } - if err := DeepCopy_conversion_ConversionFuncs(in.generatedConversionFuncs, &out.generatedConversionFuncs, c); err != nil { - return err - } - if in.genericConversions != nil { - in, out := in.genericConversions, &out.genericConversions - *out = make([]GenericConversionFunc, len(in)) - for i := range in { - if newVal, err := c.DeepCopy(in[i]); err != nil { - return err - } else { - (*out)[i] = newVal.(GenericConversionFunc) - } - } - } else { - out.genericConversions = nil - } - if in.ignoredConversions != nil { - in, out := in.ignoredConversions, &out.ignoredConversions - *out = make(map[typePair]struct{}) - for range in { - // FIXME: Copying unassignable keys unsupported typePair - } - } else { - out.ignoredConversions = nil - } - if in.structFieldDests != nil { - in, out := in.structFieldDests, &out.structFieldDests - *out = make(map[typeNamePair][]typeNamePair) - for range in { - // FIXME: Copying unassignable keys unsupported typeNamePair - } - } else { - out.structFieldDests = nil - } - if in.structFieldSources != nil { - in, out := in.structFieldSources, &out.structFieldSources - *out = make(map[typeNamePair][]typeNamePair) - for range in { - // FIXME: Copying unassignable keys unsupported typeNamePair - } - } else { - out.structFieldSources = nil - } - if in.defaultingFuncs != nil { - in, out := in.defaultingFuncs, &out.defaultingFuncs - *out = make(map[reflect.Type]reflect.Value) - for range in { - // FIXME: Copying unassignable keys unsupported reflect.Type - } - } else { - out.defaultingFuncs = nil - } - if in.defaultingInterfaces != nil { - in, out := in.defaultingInterfaces, &out.defaultingInterfaces - *out = make(map[reflect.Type]interface{}) - for range in { - // FIXME: Copying unassignable keys unsupported reflect.Type - } - } else { - out.defaultingInterfaces = nil - } - if in.inputFieldMappingFuncs != nil { - in, out := in.inputFieldMappingFuncs, &out.inputFieldMappingFuncs - *out = make(map[reflect.Type]FieldMappingFunc) - for range in { - // FIXME: Copying unassignable keys unsupported reflect.Type - } - } else { - out.inputFieldMappingFuncs = nil - } - if in.inputDefaultFlags != nil { - in, out := in.inputDefaultFlags, &out.inputDefaultFlags - *out = make(map[reflect.Type]FieldMatchingFlags) - for range in { - // FIXME: Copying unassignable keys unsupported reflect.Type - } - } else { - out.inputDefaultFlags = nil - } - if in.Debug == nil { - out.Debug = nil - } else if newVal, err := c.DeepCopy(in.Debug); err != nil { - return err - } else { - out.Debug = newVal.(DebugLogger) - } - if in.nameFunc == nil { - out.nameFunc = nil - } else if newVal, err := c.DeepCopy(in.nameFunc); err != nil { - return err - } else { - out.nameFunc = newVal.(func(reflect.Type) string) - } - return nil -} - -func DeepCopy_conversion_Equalities(in Equalities, out *Equalities, c *Cloner) error { - if in.Equalities != nil { - in, out := in.Equalities, &out.Equalities - *out = make(forked_reflect.Equalities) - for range in { - // FIXME: Copying unassignable keys unsupported reflect.Type - } - } else { - out.Equalities = nil - } - return nil -} - -func DeepCopy_conversion_Meta(in Meta, out *Meta, c *Cloner) error { - if in.KeyNameMapping == nil { - out.KeyNameMapping = nil - } else if newVal, err := c.DeepCopy(in.KeyNameMapping); err != nil { - return err - } else { - out.KeyNameMapping = newVal.(FieldMappingFunc) - } - return nil -} diff --git a/pkg/conversion/doc.go b/pkg/conversion/doc.go index 6aadeef7de8..0c46ef2d169 100644 --- a/pkg/conversion/doc.go +++ b/pkg/conversion/doc.go @@ -14,8 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=package - // Package conversion provides go object versioning. // // Specifically, conversion provides a way for you to define multiple versions diff --git a/pkg/runtime/deep_copy_generated.go b/pkg/runtime/deep_copy_generated.go index 46f08062f45..6f5f613076c 100644 --- a/pkg/runtime/deep_copy_generated.go +++ b/pkg/runtime/deep_copy_generated.go @@ -21,39 +21,9 @@ limitations under the License. package runtime import ( - unversioned "k8s.io/kubernetes/pkg/api/unversioned" conversion "k8s.io/kubernetes/pkg/conversion" - reflect "reflect" ) -func DeepCopy_runtime_NoopDecoder(in NoopDecoder, out *NoopDecoder, c *conversion.Cloner) error { - if in.Encoder == nil { - out.Encoder = nil - } else if newVal, err := c.DeepCopy(in.Encoder); err != nil { - return err - } else { - out.Encoder = newVal.(Encoder) - } - return nil -} - -func DeepCopy_runtime_NoopEncoder(in NoopEncoder, out *NoopEncoder, c *conversion.Cloner) error { - if in.Decoder == nil { - out.Decoder = nil - } else if newVal, err := c.DeepCopy(in.Decoder); err != nil { - return err - } else { - out.Decoder = newVal.(Decoder) - } - return nil -} - -func DeepCopy_runtime_Pair(in Pair, out *Pair, c *conversion.Cloner) error { - out.Name = in.Name - out.Doc = in.Doc - return nil -} - func DeepCopy_runtime_RawExtension(in RawExtension, out *RawExtension, c *conversion.Cloner) error { if in.Raw != nil { in, out := in.Raw, &out.Raw @@ -72,115 +42,6 @@ func DeepCopy_runtime_RawExtension(in RawExtension, out *RawExtension, c *conver return nil } -func DeepCopy_runtime_Scheme(in Scheme, out *Scheme, c *conversion.Cloner) error { - if in.gvkToType != nil { - in, out := in.gvkToType, &out.gvkToType - *out = make(map[unversioned.GroupVersionKind]reflect.Type) - for key, val := range in { - if newVal, err := c.DeepCopy(val); err != nil { - return err - } else { - (*out)[key] = newVal.(reflect.Type) - } - } - } else { - out.gvkToType = nil - } - if in.typeToGVK != nil { - in, out := in.typeToGVK, &out.typeToGVK - *out = make(map[reflect.Type][]unversioned.GroupVersionKind) - for range in { - // FIXME: Copying unassignable keys unsupported reflect.Type - } - } else { - out.typeToGVK = nil - } - if in.unversionedTypes != nil { - in, out := in.unversionedTypes, &out.unversionedTypes - *out = make(map[reflect.Type]unversioned.GroupVersionKind) - for range in { - // FIXME: Copying unassignable keys unsupported reflect.Type - } - } else { - out.unversionedTypes = nil - } - if in.unversionedKinds != nil { - in, out := in.unversionedKinds, &out.unversionedKinds - *out = make(map[string]reflect.Type) - for key, val := range in { - if newVal, err := c.DeepCopy(val); err != nil { - return err - } else { - (*out)[key] = newVal.(reflect.Type) - } - } - } else { - out.unversionedKinds = nil - } - if in.fieldLabelConversionFuncs != nil { - in, out := in.fieldLabelConversionFuncs, &out.fieldLabelConversionFuncs - *out = make(map[string]map[string]FieldLabelConversionFunc) - for key, val := range in { - if newVal, err := c.DeepCopy(val); err != nil { - return err - } else { - (*out)[key] = newVal.(map[string]FieldLabelConversionFunc) - } - } - } else { - out.fieldLabelConversionFuncs = nil - } - if in.converter != nil { - in, out := in.converter, &out.converter - *out = new(conversion.Converter) - if err := conversion.DeepCopy_conversion_Converter(*in, *out, c); err != nil { - return err - } - } else { - out.converter = nil - } - if in.cloner != nil { - in, out := in.cloner, &out.cloner - *out = new(conversion.Cloner) - if err := conversion.DeepCopy_conversion_Cloner(*in, *out, c); err != nil { - return err - } - } else { - out.cloner = nil - } - return nil -} - -func DeepCopy_runtime_SerializerInfo(in SerializerInfo, out *SerializerInfo, c *conversion.Cloner) error { - if in.Serializer == nil { - out.Serializer = nil - } else if newVal, err := c.DeepCopy(in.Serializer); err != nil { - return err - } else { - out.Serializer = newVal.(Serializer) - } - out.EncodesAsText = in.EncodesAsText - out.MediaType = in.MediaType - return nil -} - -func DeepCopy_runtime_StreamSerializerInfo(in StreamSerializerInfo, out *StreamSerializerInfo, c *conversion.Cloner) error { - if err := DeepCopy_runtime_SerializerInfo(in.SerializerInfo, &out.SerializerInfo, c); err != nil { - return err - } - if in.Framer == nil { - out.Framer = nil - } else if newVal, err := c.DeepCopy(in.Framer); err != nil { - return err - } else { - out.Framer = newVal.(Framer) - } - if err := DeepCopy_runtime_SerializerInfo(in.Embedded, &out.Embedded, c); err != nil { - return err - } - return nil -} - func DeepCopy_runtime_TypeMeta(in TypeMeta, out *TypeMeta, c *conversion.Cloner) error { out.APIVersion = in.APIVersion out.Kind = in.Kind @@ -200,71 +61,3 @@ func DeepCopy_runtime_Unknown(in Unknown, out *Unknown, c *conversion.Cloner) er out.ContentType = in.ContentType return nil } - -func DeepCopy_runtime_Unstructured(in Unstructured, out *Unstructured, c *conversion.Cloner) error { - if in.Object != nil { - in, out := in.Object, &out.Object - *out = make(map[string]interface{}) - for key, val := range in { - if newVal, err := c.DeepCopy(val); err != nil { - return err - } else { - (*out)[key] = newVal.(interface{}) - } - } - } else { - out.Object = nil - } - return nil -} - -func DeepCopy_runtime_UnstructuredList(in UnstructuredList, out *UnstructuredList, c *conversion.Cloner) error { - if in.Object != nil { - in, out := in.Object, &out.Object - *out = make(map[string]interface{}) - for key, val := range in { - if newVal, err := c.DeepCopy(val); err != nil { - return err - } else { - (*out)[key] = newVal.(interface{}) - } - } - } else { - out.Object = nil - } - if in.Items != nil { - in, out := in.Items, &out.Items - *out = make([]*Unstructured, len(in)) - for i := range in { - if newVal, err := c.DeepCopy(in[i]); err != nil { - return err - } else { - (*out)[i] = newVal.(*Unstructured) - } - } - } else { - out.Items = nil - } - return nil -} - -func DeepCopy_runtime_UnstructuredObjectConverter(in UnstructuredObjectConverter, out *UnstructuredObjectConverter, c *conversion.Cloner) error { - return nil -} - -func DeepCopy_runtime_VersionedObjects(in VersionedObjects, out *VersionedObjects, c *conversion.Cloner) error { - if in.Objects != nil { - in, out := in.Objects, &out.Objects - *out = make([]Object, len(in)) - for i := range in { - if newVal, err := c.DeepCopy(in[i]); err != nil { - return err - } else { - (*out)[i] = newVal.(Object) - } - } - } else { - out.Objects = nil - } - return nil -} diff --git a/pkg/runtime/doc.go b/pkg/runtime/doc.go index 89425b8a7d5..a9d084d9fbe 100644 --- a/pkg/runtime/doc.go +++ b/pkg/runtime/doc.go @@ -42,6 +42,4 @@ limitations under the License. // As a bonus, a few common types useful from all api objects and versions // are provided in types.go. -// +k8s:deepcopy-gen=package - package runtime diff --git a/pkg/runtime/generated.proto b/pkg/runtime/generated.proto index fdd803f89f0..0e602abe1b3 100644 --- a/pkg/runtime/generated.proto +++ b/pkg/runtime/generated.proto @@ -69,6 +69,7 @@ option go_package = "runtime"; // in the Object. (TODO: In the case where the object is of an unknown type, a // runtime.Unknown object will be created and stored.) // +// +k8s:deepcopy-gen=true // +protobuf=true message RawExtension { // Raw is the underlying serialization of this object. @@ -88,6 +89,7 @@ message RawExtension { // TypeMeta is provided here for convenience. You may use it directly from this package or define // your own with the same fields. // +// +k8s:deepcopy-gen=true // +protobuf=true message TypeMeta { optional string apiVersion = 1; @@ -101,6 +103,7 @@ message TypeMeta { // TODO: Make this object have easy access to field based accessors and settors for // metadata and field mutatation. // +// +k8s:deepcopy-gen=true // +protobuf=true message Unknown { optional TypeMeta typeMeta = 1; diff --git a/pkg/runtime/types.go b/pkg/runtime/types.go index 7c9c93b2cf4..5033c0dc2c9 100644 --- a/pkg/runtime/types.go +++ b/pkg/runtime/types.go @@ -40,6 +40,7 @@ import ( // TypeMeta is provided here for convenience. You may use it directly from this package or define // your own with the same fields. // +// +k8s:deepcopy-gen=true // +protobuf=true type TypeMeta struct { APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" protobuf:"bytes,1,opt,name=apiVersion"` @@ -92,6 +93,7 @@ const ( // in the Object. (TODO: In the case where the object is of an unknown type, a // runtime.Unknown object will be created and stored.) // +// +k8s:deepcopy-gen=true // +protobuf=true type RawExtension struct { // Raw is the underlying serialization of this object. @@ -109,6 +111,7 @@ type RawExtension struct { // TODO: Make this object have easy access to field based accessors and settors for // metadata and field mutatation. // +// +k8s:deepcopy-gen=true // +protobuf=true type Unknown struct { TypeMeta `json:",inline" protobuf:"bytes,1,opt,name=typeMeta"` From 1ba6f5df9ecd14e723f30d45e66bc065c7fd9f7b Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Wed, 22 Jun 2016 15:07:24 +0900 Subject: [PATCH 13/14] go2idl: Allow ... pkg specs This is closer to standard Go semantics and obsoletes our custom --recursive flag. --- cmd/libs/go2idl/args/args.go | 18 +++++++----------- .../go2idl/deepcopy-gen/generators/deepcopy.go | 2 +- cmd/libs/go2idl/generator/generator.go | 10 +++++++--- cmd/libs/go2idl/import-boss/main.go | 7 +++---- cmd/libs/go2idl/parser/parse.go | 18 +++++++++++++++++- 5 files changed, 35 insertions(+), 20 deletions(-) diff --git a/cmd/libs/go2idl/args/args.go b/cmd/libs/go2idl/args/args.go index a5bee69b434..97b3dc989f9 100644 --- a/cmd/libs/go2idl/args/args.go +++ b/cmd/libs/go2idl/args/args.go @@ -54,9 +54,6 @@ type GeneratorArgs struct { // Which directories to parse. InputDirs []string - // If true, recurse into all children of InputDirs - Recursive bool - // Source tree to write results to. OutputBase string @@ -89,7 +86,6 @@ func (g *GeneratorArgs) AddFlags(fs *pflag.FlagSet) { fs.StringVarP(&g.OutputFileBaseName, "output-file-base", "O", g.OutputFileBaseName, "Base name (without .go suffix) for output files.") fs.StringVarP(&g.GoHeaderFilePath, "go-header-file", "h", g.GoHeaderFilePath, "File containing boilerplate header text. The string YEAR will be replaced with the current 4-digit year.") fs.BoolVar(&g.VerifyOnly, "verify-only", g.VerifyOnly, "If true, only verify existing output, do not write anything.") - fs.BoolVar(&g.Recursive, "recursive", g.VerifyOnly, "If true, recurse into all children of input directories.") fs.StringVar(&g.GeneratedBuildTag, "build-tag", g.GeneratedBuildTag, "A Go build tag to use to identify files generated by this command. Should be unique.") } @@ -111,14 +107,14 @@ func (g *GeneratorArgs) NewBuilder() (*parser.Builder, error) { b.AddBuildTags(g.GeneratedBuildTag) for _, d := range g.InputDirs { - if g.Recursive { - if err := b.AddDirRecursive(d); err != nil { - return nil, fmt.Errorf("unable to add directory %q: %v", d, err) - } + var err error + if strings.HasSuffix(d, "/...") { + err = b.AddDirRecursive(strings.TrimSuffix(d, "/...")) } else { - if err := b.AddDir(d); err != nil { - return nil, fmt.Errorf("unable to add directory %q: %v", d, err) - } + err = b.AddDir(d) + } + if err != nil { + return nil, fmt.Errorf("unable to add directory %q: %v", d, err) } } return b, nil diff --git a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go index 5c34d18177e..035ebe61d0e 100644 --- a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go +++ b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go @@ -121,7 +121,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat glog.Fatalf("Failed loading boilerplate: %v", err) } - inputs := sets.NewString(arguments.InputDirs...) + inputs := sets.NewString(context.Inputs...) packages := generator.Packages{} header := append([]byte(fmt.Sprintf("// +build !%s\n\n", arguments.GeneratedBuildTag)), boilerplate...) header = append(header, []byte( diff --git a/cmd/libs/go2idl/generator/generator.go b/cmd/libs/go2idl/generator/generator.go index c0b44cddeae..bb197494c6d 100644 --- a/cmd/libs/go2idl/generator/generator.go +++ b/cmd/libs/go2idl/generator/generator.go @@ -152,6 +152,9 @@ type Context struct { // All the types, in case you want to look up something. Universe types.Universe + // All the user-specified packages. This is after recursive expansion. + Inputs []string + // The canonical ordering of the types (will be filtered by both the // Package's and Generator's Filter methods). Order []*types.Type @@ -168,14 +171,15 @@ type Context struct { // NewContext generates a context from the given builder, naming systems, and // the naming system you wish to construct the canonical ordering from. func NewContext(b *parser.Builder, nameSystems namer.NameSystems, canonicalOrderName string) (*Context, error) { - u, err := b.FindTypes() + universe, err := b.FindTypes() if err != nil { return nil, err } c := &Context{ Namers: namer.NameSystems{}, - Universe: u, + Universe: universe, + Inputs: b.FindPackages(), FileTypes: map[string]FileType{ GolangFileType: NewGolangFile(), }, @@ -185,7 +189,7 @@ func NewContext(b *parser.Builder, nameSystems namer.NameSystems, canonicalOrder c.Namers[name] = systemNamer if name == canonicalOrderName { orderer := namer.Orderer{Namer: systemNamer} - c.Order = orderer.OrderUniverse(u) + c.Order = orderer.OrderUniverse(universe) } } return c, nil diff --git a/cmd/libs/go2idl/import-boss/main.go b/cmd/libs/go2idl/import-boss/main.go index 3f2fcf2ab4c..7e587cc6e68 100644 --- a/cmd/libs/go2idl/import-boss/main.go +++ b/cmd/libs/go2idl/import-boss/main.go @@ -70,11 +70,10 @@ func main() { // Override defaults. These are Kubernetes specific input and output // locations. arguments.InputDirs = []string{ - "k8s.io/kubernetes/pkg/", - "k8s.io/kubernetes/cmd/", - "k8s.io/kubernetes/plugin/", + "k8s.io/kubernetes/pkg/...", + "k8s.io/kubernetes/cmd/...", + "k8s.io/kubernetes/plugin/...", } - arguments.Recursive = true // arguments.VerifyOnly = true if err := arguments.Execute( diff --git a/cmd/libs/go2idl/parser/parse.go b/cmd/libs/go2idl/parser/parse.go index 2bf2f806217..6496dc04c84 100644 --- a/cmd/libs/go2idl/parser/parse.go +++ b/cmd/libs/go2idl/parser/parse.go @@ -129,7 +129,9 @@ func (b *Builder) buildPackage(pkgPath string) (*build.Package, error) { } pkg, err = b.context.Import(pkgPath, cwd, build.ImportComment) if err != nil { - return nil, fmt.Errorf("unable to import %q: %v", pkgPath, err) + if _, ok := err.(*build.NoGoError); !ok { + return nil, fmt.Errorf("unable to import %q: %v", pkgPath, err) + } } b.buildInfo[pkgPath] = pkg @@ -350,6 +352,20 @@ func (b *Builder) makePackages() error { return nil } +// FindPackages fetches a list of the user-imported packages. +func (b *Builder) FindPackages() []string { + result := []string{} + for pkgPath := range b.pkgs { + if b.userRequested[pkgPath] { + // Since walkType is recursive, all types that are in packages that + // were directly mentioned will be included. We don't need to + // include all types in all transitive packages, though. + result = append(result, pkgPath) + } + } + return result +} + // FindTypes finalizes the package imports, and searches through all the // packages for types. func (b *Builder) FindTypes() (types.Universe, error) { From 82b2d2c87b0e23c7fa0e917324c27bf871325b17 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Tue, 28 Jun 2016 23:15:56 -0700 Subject: [PATCH 14/14] Clarify copyable vs in-bounds This make it clearer where "is copyable" is needed and where "is in bounds" is needed. No effect on generated code. --- .../deepcopy-gen/generators/deepcopy.go | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go index 035ebe61d0e..80ab575ae7d 100644 --- a/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go +++ b/cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go @@ -171,7 +171,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat ttag := extractTag(t.CommentLines) if ttag != nil && ttag.value == "true" { glog.V(5).Infof(" tag=true") - if !copyableWithinPackage(t, boundingDirs) { + if !copyableType(t) { glog.Fatalf("Type %v requests deepcopy generation but is not copyable", t) } pkgNeedsGeneration = true @@ -247,15 +247,22 @@ func (g *genDeepCopy) Filter(c *generator.Context, t *types.Type) bool { enabled = true } } - copyable := enabled && g.copyableWithinPackage(t) + copyable := enabled && copyableType(t) if copyable { g.typesForInit = append(g.typesForInit, t) } return copyable } -func (g *genDeepCopy) copyableWithinPackage(t *types.Type) bool { - return copyableWithinPackage(t, g.boundingDirs) +func (g *genDeepCopy) copyableAndInBounds(t *types.Type) bool { + if !copyableType(t) { + return false + } + // Only packages within the restricted range can be processed. + if !isRootedUnder(t.Name.Package, g.boundingDirs) { + return false + } + return true } // hasDeepCopyMethod returns true if an appropriate DeepCopy() method is @@ -293,16 +300,12 @@ func isRootedUnder(pkg string, roots []string) bool { return false } -func copyableWithinPackage(t *types.Type, boundingDirs []string) bool { +func copyableType(t *types.Type) bool { // If the type opts out of copy-generation, stop. ttag := extractTag(t.CommentLines) if ttag != nil && ttag.value == "false" { return false } - // Only packages within the restricted range can be processed. - if !isRootedUnder(t.Name.Package, boundingDirs) { - return false - } // TODO: Consider generating functions for other kinds too. if t.Kind != types.Struct { return false @@ -477,7 +480,7 @@ func (g *genDeepCopy) doMap(t *types.Type, sw *generator.SnippetWriter) { sw.Do("}\n", nil) default: sw.Do("for key, val := range in {\n", nil) - if g.copyableWithinPackage(t.Elem) { + if g.copyableAndInBounds(t.Elem) { sw.Do("newVal := new($.|raw$)\n", t.Elem) funcName := g.funcNameTmpl(t.Elem) sw.Do(fmt.Sprintf("if err := %s(val, newVal, c); err != nil {\n", funcName), argsFromType(t.Elem)) @@ -511,7 +514,7 @@ func (g *genDeepCopy) doSlice(t *types.Type, sw *generator.SnippetWriter) { sw.Do("(*out)[i] = in[i].DeepCopy()\n", nil) } else if t.Elem.IsAssignable() { sw.Do("(*out)[i] = in[i]\n", nil) - } else if g.copyableWithinPackage(t.Elem) { + } else if g.copyableAndInBounds(t.Elem) { funcName := g.funcNameTmpl(t.Elem) sw.Do(fmt.Sprintf("if err := %s(in[i], &(*out)[i], c); err != nil {\n", funcName), argsFromType(t.Elem)) sw.Do("return err\n", nil) @@ -554,7 +557,7 @@ func (g *genDeepCopy) doStruct(t *types.Type, sw *generator.SnippetWriter) { sw.Do("out.$.name$ = in.$.name$.DeepCopy()\n", args) } else if t.IsAssignable() { sw.Do("out.$.name$ = in.$.name$\n", args) - } else if g.copyableWithinPackage(t) { + } else if g.copyableAndInBounds(t) { funcName := g.funcNameTmpl(t) sw.Do(fmt.Sprintf("if err := %s(in.$.name$, &out.$.name$, c); err != nil {\n", funcName), args) sw.Do("return err\n", nil) @@ -589,7 +592,7 @@ func (g *genDeepCopy) doPointer(t *types.Type, sw *generator.SnippetWriter) { sw.Do("**out = in.DeepCopy()\n", nil) } else if t.Elem.IsAssignable() { sw.Do("**out = *in", nil) - } else if g.copyableWithinPackage(t.Elem) { + } else if g.copyableAndInBounds(t.Elem) { funcName := g.funcNameTmpl(t.Elem) sw.Do(fmt.Sprintf("if err := %s(*in, *out, c); err != nil {\n", funcName), argsFromType(t.Elem)) sw.Do("return err\n", nil)