Commit 45092722 authored by k8s-merge-robot's avatar k8s-merge-robot

Merge pull request #20649 from wojtek-t/cross_dir_deep_copies

Auto commit by PR queue bot
parents e604efcf e610c137
......@@ -93,6 +93,9 @@ func (g *GeneratorArgs) LoadGoBoilerplate() ([]byte, error) {
// directories.
func (g *GeneratorArgs) NewBuilder() (*parser.Builder, error) {
b := parser.New()
// Ignore all auto-generated files.
b.AddBuildTags("ignore_autogenerated")
for _, d := range g.InputDirs {
if g.Recursive {
if err := b.AddDirRecursive(d); err != nil {
......
......@@ -26,6 +26,7 @@ import (
"k8s.io/kubernetes/cmd/libs/go2idl/generator"
"k8s.io/kubernetes/cmd/libs/go2idl/namer"
"k8s.io/kubernetes/cmd/libs/go2idl/types"
"k8s.io/kubernetes/pkg/util/sets"
"github.com/golang/glog"
)
......@@ -55,48 +56,52 @@ func DefaultNameSystem() string {
return "public"
}
func Packages(_ *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
func Packages(context *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
boilerplate, err := arguments.LoadGoBoilerplate()
if err != nil {
glog.Fatalf("Failed loading boilerplate: %v", err)
}
inputs := sets.NewString(arguments.InputDirs...)
packages := generator.Packages{}
for _, inputDir := range arguments.InputDirs {
packages = append(packages,
&generator.DefaultPackage{
PackageName: filepath.Base(inputDir),
PackagePath: inputDir,
HeaderText: append(boilerplate, []byte(
`
header := append([]byte(
`
// +build !ignore_autogenerated
`), boilerplate...)
header = append(header, []byte(
`
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
`)...),
GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
generators = []generator.Generator{}
// TODO: Check whether anything will be generated.
generators = append(generators, NewGenDeepCopy("deep_copy_generated", inputDir))
return generators
},
FilterFunc: func(c *generator.Context, t *types.Type) bool {
switch t.Kind {
case types.Func, types.Chan:
// These types can't be copied.
return false
case types.Unknown, types.Unsupported:
// These types are explicitly ignored.
return false
case types.Array:
// We don't support arrays.
return false
}
// Also, filter out private types.
if namer.IsPrivateGoName(t.Name.Name) {
return false
}
return true
},
})
`)...)
for _, p := range context.Universe {
copyableType := false
for _, t := range p.Types {
if copyableWithinPackage(t) {
copyableType = true
}
}
if copyableType {
path := p.Path
packages = append(packages,
&generator.DefaultPackage{
PackageName: filepath.Base(path),
PackagePath: path,
HeaderText: header,
GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
generators = []generator.Generator{}
generators = append(
generators, NewGenDeepCopy("deep_copy_generated", path, inputs.Has(path)))
return generators
},
FilterFunc: func(c *generator.Context, t *types.Type) bool {
if t.Name.Package != path {
return false
}
return copyableWithinPackage(t)
},
})
}
}
return packages
}
......@@ -109,19 +114,21 @@ const (
// genDeepCopy produces a file with a set for a single type.
type genDeepCopy struct {
generator.DefaultGen
targetPackage string
imports namer.ImportTracker
typesForInit []*types.Type
targetPackage string
imports namer.ImportTracker
typesForInit []*types.Type
generateInitFunc bool
}
func NewGenDeepCopy(sanitizedName, targetPackage string) 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),
targetPackage: targetPackage,
imports: generator.NewImportTracker(),
typesForInit: make([]*types.Type, 0),
generateInitFunc: generateInitFunc,
}
}
......@@ -133,21 +140,14 @@ func (g *genDeepCopy) Namers(c *generator.Context) namer.NameSystems {
// Filter ignores all but one type because we're making a single file per type.
func (g *genDeepCopy) Filter(c *generator.Context, t *types.Type) bool {
// Filter out all types not copyable within the package.
copyable := g.copyableWithinPackage(t)
copyable := copyableWithinPackage(t)
if copyable {
g.typesForInit = append(g.typesForInit, t)
}
return copyable
}
func (g *genDeepCopy) copyableWithinPackage(t *types.Type) bool {
// TODO: We should generate public DeepCopy functions per directory, instead
// of generating everything everywhere.
// This is done that way only to minimize number of changes per PR.
// Once this is done, we should replace HasPrefix with:
//if t.Name.Package != g.targetPackage {
// return false
//}
func copyableWithinPackage(t *types.Type) bool {
if !strings.HasPrefix(t.Name.Package, "k8s.io/kubernetes/") {
return false
}
......@@ -158,21 +158,9 @@ func (g *genDeepCopy) copyableWithinPackage(t *types.Type) bool {
if t.Kind != types.Struct {
return false
}
// TODO: This should be removed once we start generating public DeepCopy
// functions per directory.
if t.Name.Package != g.targetPackage {
// We won't be able to access private fields.
// Thus, this type cannot have private fields.
for _, member := range t.Members {
if namer.IsPrivateGoName(member.Name) {
return false
}
// TODO: This is a temporary hack, to make avoid generating function
// for conversion.Equalities. We should get rid of it.
if member.Embedded {
return false
}
}
// Also, filter out private types.
if namer.IsPrivateGoName(t.Name.Name) {
return false
}
return true
}
......@@ -189,7 +177,7 @@ func (g *genDeepCopy) isOtherPackage(pkg string) bool {
func (g *genDeepCopy) Imports(c *generator.Context) (imports []string) {
importLines := []string{}
if g.isOtherPackage(apiPackagePath) {
if g.isOtherPackage(apiPackagePath) && g.generateInitFunc {
importLines = append(importLines, "api \""+apiPackagePath+"\"")
}
if g.isOtherPackage(conversionPackagePath) {
......@@ -210,10 +198,21 @@ func argsFromType(t *types.Type) interface{} {
}
func (g *genDeepCopy) funcNameTmpl(t *types.Type) string {
return "DeepCopy_$.type|public$"
tmpl := "DeepCopy_$.type|public$"
g.imports.AddType(t)
if t.Name.Package != g.targetPackage {
tmpl = g.imports.LocalNameOf(t.Name.Package) + "." + tmpl
}
return tmpl
}
func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error {
if !g.generateInitFunc {
// 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
}
sw := generator.NewSnippetWriter(w, c, "$", "$")
sw.Do("func init() {\n", nil)
if g.targetPackage == apiPackagePath {
......@@ -236,7 +235,11 @@ func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error {
func (g *genDeepCopy) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
sw := generator.NewSnippetWriter(w, c, "$", "$")
funcName := g.funcNameTmpl(t)
sw.Do(fmt.Sprintf("func %s(in $.type|raw$, out *$.type|raw$, c *conversion.Cloner) error {\n", funcName), argsFromType(t))
if g.targetPackage == conversionPackagePath {
sw.Do(fmt.Sprintf("func %s(in $.type|raw$, out *$.type|raw$, c *Cloner) error {\n", funcName), argsFromType(t))
} else {
sw.Do(fmt.Sprintf("func %s(in $.type|raw$, out *$.type|raw$, c *conversion.Cloner) error {\n", funcName), argsFromType(t))
}
g.generateFor(t, sw)
sw.Do("return nil\n", nil)
sw.Do("}\n\n", nil)
......@@ -275,12 +278,12 @@ func (g *genDeepCopy) doBuiltin(t *types.Type, sw *generator.SnippetWriter) {
func (g *genDeepCopy) doMap(t *types.Type, sw *generator.SnippetWriter) {
sw.Do("*out = make($.|raw$)\n", t)
sw.Do("for key, val := range in {\n", nil)
if t.Key.IsAssignable() {
sw.Do("for key, val := range in {\n", nil)
if t.Elem.IsAssignable() {
sw.Do("(*out)[key] = val\n", nil)
} else {
if g.copyableWithinPackage(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))
......@@ -297,6 +300,7 @@ func (g *genDeepCopy) doMap(t *types.Type, sw *generator.SnippetWriter) {
}
} else {
// TODO: Implement it when necessary.
sw.Do("for range in {\n", nil)
sw.Do("// FIXME: Copying unassignable keys unsupported $.|raw$\n", t.Key)
}
sw.Do("}\n", nil)
......@@ -310,7 +314,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.copyableWithinPackage(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)
......@@ -343,7 +347,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.copyableWithinPackage(m.Type) {
if copyableWithinPackage(m.Type) {
funcName := g.funcNameTmpl(m.Type)
sw.Do(fmt.Sprintf("if err := %s(in.$.name$, &out.$.name$, c); err != nil {\n", funcName), args)
sw.Do("return err\n", nil)
......@@ -378,7 +382,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 g.copyableWithinPackage(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)
......
// +build !ignore_autogenerated
/*
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.
*/
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
package meta
import (
unversioned "k8s.io/kubernetes/pkg/api/unversioned"
conversion "k8s.io/kubernetes/pkg/conversion"
runtime "k8s.io/kubernetes/pkg/runtime"
)
func DeepCopy_meta_DefaultRESTMapper(in DefaultRESTMapper, out *DefaultRESTMapper, c *conversion.Cloner) error {
if in.defaultGroupVersions != nil {
in, out := in.defaultGroupVersions, &out.defaultGroupVersions
*out = make([]unversioned.GroupVersion, len(in))
for i := range in {
if err := unversioned.DeepCopy_unversioned_GroupVersion(in[i], &(*out)[i], c); err != nil {
return err
}
}
} else {
out.defaultGroupVersions = nil
}
if in.resourceToKind != nil {
in, out := in.resourceToKind, &out.resourceToKind
*out = make(map[unversioned.GroupVersionResource]unversioned.GroupVersionKind)
for range in {
// FIXME: Copying unassignable keys unsupported unversioned.GroupVersionResource
}
} else {
out.resourceToKind = nil
}
if in.kindToPluralResource != nil {
in, out := in.kindToPluralResource, &out.kindToPluralResource
*out = make(map[unversioned.GroupVersionKind]unversioned.GroupVersionResource)
for range in {
// FIXME: Copying unassignable keys unsupported unversioned.GroupVersionKind
}
} else {
out.kindToPluralResource = nil
}
if in.kindToScope != nil {
in, out := in.kindToScope, &out.kindToScope
*out = make(map[unversioned.GroupVersionKind]RESTScope)
for range in {
// FIXME: Copying unassignable keys unsupported unversioned.GroupVersionKind
}
} else {
out.kindToScope = nil
}
if in.singularToPlural != nil {
in, out := in.singularToPlural, &out.singularToPlural
*out = make(map[unversioned.GroupVersionResource]unversioned.GroupVersionResource)
for range in {
// FIXME: Copying unassignable keys unsupported unversioned.GroupVersionResource
}
} else {
out.singularToPlural = nil
}
if in.pluralToSingular != nil {
in, out := in.pluralToSingular, &out.pluralToSingular
*out = make(map[unversioned.GroupVersionResource]unversioned.GroupVersionResource)
for range in {
// FIXME: Copying unassignable keys unsupported unversioned.GroupVersionResource
}
} else {
out.pluralToSingular = nil
}
if newVal, err := c.DeepCopy(in.interfacesFunc); err != nil {
return err
} else {
out.interfacesFunc = newVal.(VersionInterfacesFunc)
}
if in.aliasToResource != nil {
in, out := in.aliasToResource, &out.aliasToResource
*out = make(map[string][]string)
for key, val := range in {
if newVal, err := c.DeepCopy(val); err != nil {
return err
} else {
(*out)[key] = newVal.([]string)
}
}
} else {
out.aliasToResource = nil
}
return nil
}
func DeepCopy_meta_RESTMapping(in RESTMapping, out *RESTMapping, c *conversion.Cloner) error {
out.Resource = in.Resource
if err := unversioned.DeepCopy_unversioned_GroupVersionKind(in.GroupVersionKind, &out.GroupVersionKind, c); err != nil {
return err
}
if newVal, err := c.DeepCopy(in.Scope); err != nil {
return err
} else {
out.Scope = newVal.(RESTScope)
}
if newVal, err := c.DeepCopy(in.ObjectConvertor); err != nil {
return err
} else {
out.ObjectConvertor = newVal.(runtime.ObjectConvertor)
}
if newVal, err := c.DeepCopy(in.MetadataAccessor); err != nil {
return err
} else {
out.MetadataAccessor = newVal.(MetadataAccessor)
}
return nil
}
func DeepCopy_meta_VersionInterfaces(in VersionInterfaces, out *VersionInterfaces, c *conversion.Cloner) error {
if newVal, err := c.DeepCopy(in.ObjectConvertor); err != nil {
return err
} else {
out.ObjectConvertor = newVal.(runtime.ObjectConvertor)
}
if newVal, err := c.DeepCopy(in.MetadataAccessor); err != nil {
return err
} else {
out.MetadataAccessor = newVal.(MetadataAccessor)
}
return nil
}
// +build !ignore_autogenerated
/*
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.
*/
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
package resource
import (
conversion "k8s.io/kubernetes/pkg/conversion"
inf "speter.net/go/exp/math/dec/inf"
)
func DeepCopy_resource_Quantity(in Quantity, out *Quantity, c *conversion.Cloner) error {
if in.Amount != nil {
in, out := in.Amount, &out.Amount
*out = new(inf.Dec)
if newVal, err := c.DeepCopy(*in); err != nil {
return err
} else {
**out = newVal.(inf.Dec)
}
} else {
out.Amount = nil
}
out.Format = in.Format
return nil
}
// +build !ignore_autogenerated
/*
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.
*/
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
package unversioned
import (
conversion "k8s.io/kubernetes/pkg/conversion"
time "time"
)
func DeepCopy_unversioned_GroupKind(in GroupKind, out *GroupKind, c *conversion.Cloner) error {
out.Group = in.Group
out.Kind = in.Kind
return nil
}
func DeepCopy_unversioned_GroupResource(in GroupResource, out *GroupResource, c *conversion.Cloner) error {
out.Group = in.Group
out.Resource = in.Resource
return nil
}
func DeepCopy_unversioned_GroupVersion(in GroupVersion, out *GroupVersion, c *conversion.Cloner) error {
out.Group = in.Group
out.Version = in.Version
return nil
}
func DeepCopy_unversioned_GroupVersionKind(in GroupVersionKind, out *GroupVersionKind, c *conversion.Cloner) error {
out.Group = in.Group
out.Version = in.Version
out.Kind = in.Kind
return nil
}
func DeepCopy_unversioned_GroupVersionResource(in GroupVersionResource, out *GroupVersionResource, c *conversion.Cloner) error {
out.Group = in.Group
out.Version = in.Version
out.Resource = in.Resource
return nil
}
func DeepCopy_unversioned_ListMeta(in ListMeta, out *ListMeta, c *conversion.Cloner) error {
out.SelfLink = in.SelfLink
out.ResourceVersion = in.ResourceVersion
return nil
}
func DeepCopy_unversioned_Time(in Time, out *Time, c *conversion.Cloner) error {
if newVal, err := c.DeepCopy(in.Time); err != nil {
return err
} else {
out.Time = newVal.(time.Time)
}
return nil
}
func DeepCopy_unversioned_TypeMeta(in TypeMeta, out *TypeMeta, c *conversion.Cloner) error {
out.Kind = in.Kind
out.APIVersion = in.APIVersion
return nil
}
// +build !ignore_autogenerated
/*
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.
*/
// 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.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 newVal, err := c.DeepCopy(in.Debug); err != nil {
return err
} else {
out.Debug = newVal.(DebugLogger)
}
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 {
out.SrcVersion = in.SrcVersion
out.DestVersion = in.DestVersion
if newVal, err := c.DeepCopy(in.KeyNameMapping); err != nil {
return err
} else {
out.KeyNameMapping = newVal.(FieldMappingFunc)
}
return nil
}
// +build !ignore_autogenerated
/*
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.
*/
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
package labels
import (
conversion "k8s.io/kubernetes/pkg/conversion"
sets "k8s.io/kubernetes/pkg/util/sets"
)
func DeepCopy_labels_Requirement(in Requirement, out *Requirement, c *conversion.Cloner) error {
out.key = in.key
out.operator = in.operator
if in.strValues != nil {
in, out := in.strValues, &out.strValues
*out = make(sets.String)
for key, val := range in {
newVal := new(sets.Empty)
if err := sets.DeepCopy_sets_Empty(val, newVal, c); err != nil {
return err
}
(*out)[key] = *newVal
}
} else {
out.strValues = nil
}
return nil
}
// +build !ignore_autogenerated
/*
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.
*/
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
package runtime
import (
unversioned "k8s.io/kubernetes/pkg/api/unversioned"
conversion "k8s.io/kubernetes/pkg/conversion"
reflect "reflect"
)
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 range in {
// FIXME: Copying unassignable keys unsupported unversioned.GroupVersionKind
}
} 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
}
// +build !ignore_autogenerated
/*
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.
*/
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
package serializer
import (
conversion "k8s.io/kubernetes/pkg/conversion"
runtime "k8s.io/kubernetes/pkg/runtime"
)
func DeepCopy_serializer_CodecFactory(in CodecFactory, out *CodecFactory, c *conversion.Cloner) error {
if in.scheme != nil {
in, out := in.scheme, &out.scheme
*out = new(runtime.Scheme)
if err := runtime.DeepCopy_runtime_Scheme(*in, *out, c); err != nil {
return err
}
} else {
out.scheme = nil
}
if in.serializers != nil {
in, out := in.serializers, &out.serializers
*out = make([]serializerType, len(in))
for i := range in {
if newVal, err := c.DeepCopy(in[i]); err != nil {
return err
} else {
(*out)[i] = newVal.(serializerType)
}
}
} else {
out.serializers = nil
}
if newVal, err := c.DeepCopy(in.universal); err != nil {
return err
} else {
out.universal = newVal.(runtime.Decoder)
}
if in.accepts != nil {
in, out := in.accepts, &out.accepts
*out = make([]string, len(in))
copy(*out, in)
} else {
out.accepts = nil
}
if newVal, err := c.DeepCopy(in.legacySerializer); err != nil {
return err
} else {
out.legacySerializer = newVal.(runtime.Serializer)
}
return nil
}
// +build !ignore_autogenerated
/*
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.
*/
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
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
}
// +build !ignore_autogenerated
/*
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.
*/
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
package sets
import (
conversion "k8s.io/kubernetes/pkg/conversion"
)
func DeepCopy_sets_Empty(in Empty, out *Empty, c *conversion.Cloner) error {
return nil
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment