diff --git a/staging/src/k8s.io/client-go/applyconfigurations/apps/v1beta2/scale.go b/staging/src/k8s.io/client-go/applyconfigurations/apps/v1beta2/scale.go index d4901edf9beb..9b98fbb856dc 100644 --- a/staging/src/k8s.io/client-go/applyconfigurations/apps/v1beta2/scale.go +++ b/staging/src/k8s.io/client-go/applyconfigurations/apps/v1beta2/scale.go @@ -37,7 +37,10 @@ type ScaleApplyConfiguration struct { // ScaleApplyConfiguration constructs an declarative configuration of the Scale type for use with // apply. func Scale() *ScaleApplyConfiguration { - return &ScaleApplyConfiguration{} + b := &ScaleApplyConfiguration{} + b.WithKind("Scale") + b.WithAPIVersion("apps/v1beta2") + return b } // WithKind sets the Kind field in the declarative configuration to the given value diff --git a/staging/src/k8s.io/client-go/applyconfigurations/autoscaling/v1/scale.go b/staging/src/k8s.io/client-go/applyconfigurations/autoscaling/v1/scale.go index 2d2cfeb972fc..27862e9c9ed9 100644 --- a/staging/src/k8s.io/client-go/applyconfigurations/autoscaling/v1/scale.go +++ b/staging/src/k8s.io/client-go/applyconfigurations/autoscaling/v1/scale.go @@ -36,7 +36,10 @@ type ScaleApplyConfiguration struct { // ScaleApplyConfiguration constructs an declarative configuration of the Scale type for use with // apply. func Scale() *ScaleApplyConfiguration { - return &ScaleApplyConfiguration{} + b := &ScaleApplyConfiguration{} + b.WithKind("Scale") + b.WithAPIVersion("autoscaling/v1") + return b } // WithKind sets the Kind field in the declarative configuration to the given value diff --git a/staging/src/k8s.io/client-go/applyconfigurations/extensions/v1beta1/scale.go b/staging/src/k8s.io/client-go/applyconfigurations/extensions/v1beta1/scale.go index 701145825dab..1f774e63f208 100644 --- a/staging/src/k8s.io/client-go/applyconfigurations/extensions/v1beta1/scale.go +++ b/staging/src/k8s.io/client-go/applyconfigurations/extensions/v1beta1/scale.go @@ -37,7 +37,10 @@ type ScaleApplyConfiguration struct { // ScaleApplyConfiguration constructs an declarative configuration of the Scale type for use with // apply. func Scale() *ScaleApplyConfiguration { - return &ScaleApplyConfiguration{} + b := &ScaleApplyConfiguration{} + b.WithKind("Scale") + b.WithAPIVersion("extensions/v1beta1") + return b } // WithKind sets the Kind field in the declarative configuration to the given value diff --git a/staging/src/k8s.io/client-go/applyconfigurations/meta/v1/deleteoptions.go b/staging/src/k8s.io/client-go/applyconfigurations/meta/v1/deleteoptions.go index 289bef43de30..7a1d23114d09 100644 --- a/staging/src/k8s.io/client-go/applyconfigurations/meta/v1/deleteoptions.go +++ b/staging/src/k8s.io/client-go/applyconfigurations/meta/v1/deleteoptions.go @@ -36,7 +36,10 @@ type DeleteOptionsApplyConfiguration struct { // DeleteOptionsApplyConfiguration constructs an declarative configuration of the DeleteOptions type for use with // apply. func DeleteOptions() *DeleteOptionsApplyConfiguration { - return &DeleteOptionsApplyConfiguration{} + b := &DeleteOptionsApplyConfiguration{} + b.WithKind("DeleteOptions") + b.WithAPIVersion("meta.k8s.io/v1") + return b } // WithKind sets the Kind field in the declarative configuration to the given value diff --git a/staging/src/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/applyconfiguration.go b/staging/src/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/applyconfiguration.go index 1b2d00022550..b91a4619bd91 100644 --- a/staging/src/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/applyconfiguration.go +++ b/staging/src/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/applyconfiguration.go @@ -105,12 +105,25 @@ func (g *applyConfigurationGenerator) GenerateType(c *generator.Context, t *type g.generateClientgenExtract(sw, typeParams, !typeParams.Tags.NoStatus) } } else { - sw.Do(constructor, typeParams) + if hasTypeMetaField(t) { + sw.Do(constructorWithTypeMeta, typeParams) + } else { + sw.Do(constructor, typeParams) + } } g.generateWithFuncs(t, typeParams, sw, nil) return sw.Error() } +func hasTypeMetaField(t *types.Type) bool { + for _, member := range t.Members { + if typeMeta.Name == member.Type.Name { + return true + } + } + return false +} + func blocklisted(t *types.Type, member types.Member) bool { if objectMeta.Name == t.Name && member.Name == "ManagedFields" { return true @@ -309,6 +322,17 @@ func $.ApplyConfig.Type|public$(name string) *$.ApplyConfig.ApplyConfiguration|p } ` +var constructorWithTypeMeta = ` +// $.ApplyConfig.ApplyConfiguration|public$ constructs an declarative configuration of the $.ApplyConfig.Type|public$ type for use with +// apply. +func $.ApplyConfig.Type|public$() *$.ApplyConfig.ApplyConfiguration|public$ { + b := &$.ApplyConfig.ApplyConfiguration|public${} + b.WithKind("$.ApplyConfig.Type|singularKind$") + b.WithAPIVersion("$.APIVersion$") + return b +} +` + var constructor = ` // $.ApplyConfig.ApplyConfiguration|public$ constructs an declarative configuration of the $.ApplyConfig.Type|public$ type for use with // apply. diff --git a/staging/src/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/types.go b/staging/src/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/types.go index 70ea37cc75a6..66578ae0489b 100644 --- a/staging/src/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/types.go +++ b/staging/src/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/types.go @@ -21,6 +21,7 @@ import "k8s.io/gengo/types" var ( applyConfiguration = types.Ref("k8s.io/apimachinery/pkg/runtime", "ApplyConfiguration") groupVersionKind = types.Ref("k8s.io/apimachinery/pkg/runtime/schema", "GroupVersionKind") + typeMeta = types.Ref("k8s.io/apimachinery/pkg/apis/meta/v1", "TypeMeta") objectMeta = types.Ref("k8s.io/apimachinery/pkg/apis/meta/v1", "ObjectMeta") rawExtension = types.Ref("k8s.io/apimachinery/pkg/runtime", "RawExtension") unknown = types.Ref("k8s.io/apimachinery/pkg/runtime", "Unknown")