From e4bd128ec61fcf9cf41756fc9b260a2e37afc938 Mon Sep 17 00:00:00 2001 From: Edouard Thuleau Date: Sat, 14 Nov 2020 10:55:26 +0100 Subject: [PATCH] Fixes fake client test generation The test code generation for create subresource was missing the resource name parameter in the template which caused a compile error for the sample projects using the scale subresource. That only occurs with non-namespaced resource kind. Also re-ran the code generation after applying the fix. --- .../_examples/MixedCase/apis/example/v1/types.go | 1 + .../versioned/typed/example/v1/clustertesttype.go | 15 +++++++++++++++ .../typed/example/v1/fake/fake_clustertesttype.go | 10 ++++++++++ .../generators/fake/generator_fake_for_type.go | 2 +- 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/staging/src/k8s.io/code-generator/_examples/MixedCase/apis/example/v1/types.go b/staging/src/k8s.io/code-generator/_examples/MixedCase/apis/example/v1/types.go index 8543ad26c26..3eb7669d3fc 100644 --- a/staging/src/k8s.io/code-generator/_examples/MixedCase/apis/example/v1/types.go +++ b/staging/src/k8s.io/code-generator/_examples/MixedCase/apis/example/v1/types.go @@ -60,6 +60,7 @@ type ClusterTestTypeList struct { // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/api/autoscaling/v1.Scale // +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale +// +genclient:method=CreateScale,verb=create,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale type ClusterTestType struct { metav1.TypeMeta `json:",inline"` diff --git a/staging/src/k8s.io/code-generator/_examples/MixedCase/clientset/versioned/typed/example/v1/clustertesttype.go b/staging/src/k8s.io/code-generator/_examples/MixedCase/clientset/versioned/typed/example/v1/clustertesttype.go index 824501d66d3..ea12fecb71a 100644 --- a/staging/src/k8s.io/code-generator/_examples/MixedCase/clientset/versioned/typed/example/v1/clustertesttype.go +++ b/staging/src/k8s.io/code-generator/_examples/MixedCase/clientset/versioned/typed/example/v1/clustertesttype.go @@ -50,6 +50,7 @@ type ClusterTestTypeInterface interface { Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ClusterTestType, err error) GetScale(ctx context.Context, clusterTestTypeName string, options metav1.GetOptions) (*autoscalingv1.Scale, error) UpdateScale(ctx context.Context, clusterTestTypeName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (*autoscalingv1.Scale, error) + CreateScale(ctx context.Context, clusterTestTypeName string, scale *autoscalingv1.Scale, opts metav1.CreateOptions) (*autoscalingv1.Scale, error) ClusterTestTypeExpansion } @@ -213,3 +214,17 @@ func (c *clusterTestTypes) UpdateScale(ctx context.Context, clusterTestTypeName Into(result) return } + +// CreateScale takes the representation of a scale and creates it. Returns the server's representation of the scale, and an error, if there is any. +func (c *clusterTestTypes) CreateScale(ctx context.Context, clusterTestTypeName string, scale *autoscalingv1.Scale, opts metav1.CreateOptions) (result *autoscalingv1.Scale, err error) { + result = &autoscalingv1.Scale{} + err = c.client.Post(). + Resource("clustertesttypes"). + Name(clusterTestTypeName). + SubResource("scale"). + VersionedParams(&opts, scheme.ParameterCodec). + Body(scale). + Do(ctx). + Into(result) + return +} diff --git a/staging/src/k8s.io/code-generator/_examples/MixedCase/clientset/versioned/typed/example/v1/fake/fake_clustertesttype.go b/staging/src/k8s.io/code-generator/_examples/MixedCase/clientset/versioned/typed/example/v1/fake/fake_clustertesttype.go index 669c97c740a..ec5f50f0cff 100644 --- a/staging/src/k8s.io/code-generator/_examples/MixedCase/clientset/versioned/typed/example/v1/fake/fake_clustertesttype.go +++ b/staging/src/k8s.io/code-generator/_examples/MixedCase/clientset/versioned/typed/example/v1/fake/fake_clustertesttype.go @@ -152,3 +152,13 @@ func (c *FakeClusterTestTypes) UpdateScale(ctx context.Context, clusterTestTypeN } return obj.(*autoscalingv1.Scale), err } + +// CreateScale takes the representation of a scale and creates it. Returns the server's representation of the scale, and an error, if there is any. +func (c *FakeClusterTestTypes) CreateScale(ctx context.Context, clusterTestTypeName string, scale *autoscalingv1.Scale, opts v1.CreateOptions) (result *autoscalingv1.Scale, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateSubresourceAction(clustertesttypesResource, clusterTestTypeName, "scale", scale), &autoscalingv1.Scale{}) + if obj == nil { + return nil, err + } + return obj.(*autoscalingv1.Scale), err +} diff --git a/staging/src/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_type.go b/staging/src/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_type.go index ebd8506ec94..9efe024fca5 100644 --- a/staging/src/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_type.go +++ b/staging/src/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_type.go @@ -411,7 +411,7 @@ var createSubresourceTemplate = ` func (c *Fake$.type|publicPlural$) Create(ctx context.Context, $.type|private$Name string, $.inputType|private$ *$.inputType|raw$, opts $.CreateOptions|raw$) (result *$.resultType|raw$, err error) { obj, err := c.Fake. $if .namespaced$Invokes($.NewCreateSubresourceAction|raw$($.type|allLowercasePlural$Resource, $.type|private$Name, "$.subresourcePath$", c.ns, $.inputType|private$), &$.resultType|raw${}) - $else$Invokes($.NewRootCreateSubresourceAction|raw$($.type|allLowercasePlural$Resource, "$.subresourcePath$", $.inputType|private$), &$.resultType|raw${})$end$ + $else$Invokes($.NewRootCreateSubresourceAction|raw$($.type|allLowercasePlural$Resource, $.type|private$Name, "$.subresourcePath$", $.inputType|private$), &$.resultType|raw${})$end$ if obj == nil { return nil, err }