From 50e7aa49aa8f05c12ee72da92d1dc61900f86cac Mon Sep 17 00:00:00 2001 From: Jefftree Date: Fri, 13 Nov 2020 17:27:40 -0800 Subject: [PATCH] Integrate defaults marker and remove ContainerPort defaulter --- go.mod | 4 +- go.sum | 4 +- pkg/apis/apps/v1/zz_generated.defaults.go | 50 +++- .../apps/v1beta1/zz_generated.defaults.go | 26 +- .../apps/v1beta2/zz_generated.defaults.go | 50 +++- pkg/apis/batch/v1/zz_generated.defaults.go | 14 +- .../batch/v1beta1/zz_generated.defaults.go | 26 +- .../batch/v2alpha1/zz_generated.defaults.go | 26 +- pkg/apis/core/v1/defaults.go | 7 +- pkg/apis/core/v1/zz_generated.defaults.go | 42 ++- .../v1beta1/zz_generated.defaults.go | 38 ++- .../src/k8s.io/apiextensions-apiserver/go.sum | 6 +- staging/src/k8s.io/code-generator/go.mod | 3 +- staging/src/k8s.io/code-generator/go.sum | 7 +- staging/src/k8s.io/kube-aggregator/go.sum | 6 +- staging/src/k8s.io/kubectl/go.sum | 4 +- staging/src/k8s.io/metrics/go.sum | 6 +- staging/src/k8s.io/sample-apiserver/go.sum | 6 +- staging/src/k8s.io/sample-controller/go.sum | 6 +- .../defaulter-gen/generators/defaulter.go | 271 +++++++++++++++++- .../gengo/examples/set-gen/generators/sets.go | 2 +- .../gengo/examples/set-gen/sets/byte.go | 2 +- .../k8s.io/gengo/examples/set-gen/sets/int.go | 2 +- .../gengo/examples/set-gen/sets/int64.go | 2 +- .../gengo/examples/set-gen/sets/string.go | 2 +- .../k8s.io/gengo/generator/snippet_writer.go | 2 +- vendor/k8s.io/gengo/parser/parse.go | 20 +- vendor/k8s.io/gengo/types/types.go | 7 + vendor/modules.txt | 4 +- 29 files changed, 541 insertions(+), 104 deletions(-) diff --git a/go.mod b/go.mod index f86e327e81b..cf3242416f5 100644 --- a/go.mod +++ b/go.mod @@ -125,7 +125,7 @@ require ( k8s.io/controller-manager v0.0.0 k8s.io/cri-api v0.0.0 k8s.io/csi-translation-lib v0.0.0 - k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 + k8s.io/gengo v0.0.0-20201113003025-83324d819ded k8s.io/heapster v1.2.0-beta.1 k8s.io/klog/v2 v2.4.0 k8s.io/kube-aggregator v0.0.0 @@ -505,7 +505,7 @@ replace ( k8s.io/controller-manager => ./staging/src/k8s.io/controller-manager k8s.io/cri-api => ./staging/src/k8s.io/cri-api k8s.io/csi-translation-lib => ./staging/src/k8s.io/csi-translation-lib - k8s.io/gengo => k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 + k8s.io/gengo => k8s.io/gengo v0.0.0-20201113003025-83324d819ded k8s.io/heapster => k8s.io/heapster v1.2.0-beta.1 k8s.io/klog/v2 => k8s.io/klog/v2 v2.4.0 k8s.io/kube-aggregator => ./staging/src/k8s.io/kube-aggregator diff --git a/go.sum b/go.sum index 86a551e65dc..1986df1d41e 100644 --- a/go.sum +++ b/go.sum @@ -589,8 +589,8 @@ gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81 gotest.tools/v3 v3.0.2 h1:kG1BFyqVHuQoVQiR1bWGnfz/fmHvvuiSPIV7rvl360E= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 h1:t4L10Qfx/p7ASH3gXCdIUtPbbIuegCoUJf3TMSFekjw= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded h1:JApXBKYyB7l9xx+DK7/+mFjC7A9Bt5A93FPvFD0HIFE= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/heapster v1.2.0-beta.1 h1:lUsE/AHOMHpi3MLlBEkaU8Esxm5QhdyCrv1o7ot0s84= k8s.io/heapster v1.2.0-beta.1/go.mod h1:h1uhptVXMwC8xtZBYsPXKVi8fpdlYkTs6k949KozGrM= k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ= diff --git a/pkg/apis/apps/v1/zz_generated.defaults.go b/pkg/apis/apps/v1/zz_generated.defaults.go index 0eb8a900c78..58a99f3f6b6 100644 --- a/pkg/apis/apps/v1/zz_generated.defaults.go +++ b/pkg/apis/apps/v1/zz_generated.defaults.go @@ -21,6 +21,8 @@ limitations under the License. package v1 import ( + "reflect" + v1 "k8s.io/api/apps/v1" runtime "k8s.io/apimachinery/pkg/runtime" corev1 "k8s.io/kubernetes/pkg/apis/core/v1" @@ -107,7 +109,9 @@ func SetObjectDefaults_DaemonSet(in *v1.DaemonSet) { corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - corev1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -155,7 +159,9 @@ func SetObjectDefaults_DaemonSet(in *v1.DaemonSet) { corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - corev1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -203,7 +209,9 @@ func SetObjectDefaults_DaemonSet(in *v1.DaemonSet) { corev1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - corev1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] @@ -322,7 +330,9 @@ func SetObjectDefaults_Deployment(in *v1.Deployment) { corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - corev1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -370,7 +380,9 @@ func SetObjectDefaults_Deployment(in *v1.Deployment) { corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - corev1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -418,7 +430,9 @@ func SetObjectDefaults_Deployment(in *v1.Deployment) { corev1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - corev1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] @@ -537,7 +551,9 @@ func SetObjectDefaults_ReplicaSet(in *v1.ReplicaSet) { corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - corev1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -585,7 +601,9 @@ func SetObjectDefaults_ReplicaSet(in *v1.ReplicaSet) { corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - corev1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -633,7 +651,9 @@ func SetObjectDefaults_ReplicaSet(in *v1.ReplicaSet) { corev1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - corev1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] @@ -752,7 +772,9 @@ func SetObjectDefaults_StatefulSet(in *v1.StatefulSet) { corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - corev1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -800,7 +822,9 @@ func SetObjectDefaults_StatefulSet(in *v1.StatefulSet) { corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - corev1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -848,7 +872,9 @@ func SetObjectDefaults_StatefulSet(in *v1.StatefulSet) { corev1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - corev1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] diff --git a/pkg/apis/apps/v1beta1/zz_generated.defaults.go b/pkg/apis/apps/v1beta1/zz_generated.defaults.go index 001b53b7dd8..f248064ce3e 100644 --- a/pkg/apis/apps/v1beta1/zz_generated.defaults.go +++ b/pkg/apis/apps/v1beta1/zz_generated.defaults.go @@ -21,6 +21,8 @@ limitations under the License. package v1beta1 import ( + "reflect" + v1beta1 "k8s.io/api/apps/v1beta1" runtime "k8s.io/apimachinery/pkg/runtime" v1 "k8s.io/kubernetes/pkg/apis/core/v1" @@ -103,7 +105,9 @@ func SetObjectDefaults_Deployment(in *v1beta1.Deployment) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -151,7 +155,9 @@ func SetObjectDefaults_Deployment(in *v1beta1.Deployment) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -199,7 +205,9 @@ func SetObjectDefaults_Deployment(in *v1beta1.Deployment) { v1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] @@ -318,7 +326,9 @@ func SetObjectDefaults_StatefulSet(in *v1beta1.StatefulSet) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -366,7 +376,9 @@ func SetObjectDefaults_StatefulSet(in *v1beta1.StatefulSet) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -414,7 +426,9 @@ func SetObjectDefaults_StatefulSet(in *v1beta1.StatefulSet) { v1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] diff --git a/pkg/apis/apps/v1beta2/zz_generated.defaults.go b/pkg/apis/apps/v1beta2/zz_generated.defaults.go index a8798788cc4..ffabe5f60e7 100644 --- a/pkg/apis/apps/v1beta2/zz_generated.defaults.go +++ b/pkg/apis/apps/v1beta2/zz_generated.defaults.go @@ -21,6 +21,8 @@ limitations under the License. package v1beta2 import ( + "reflect" + v1beta2 "k8s.io/api/apps/v1beta2" runtime "k8s.io/apimachinery/pkg/runtime" v1 "k8s.io/kubernetes/pkg/apis/core/v1" @@ -107,7 +109,9 @@ func SetObjectDefaults_DaemonSet(in *v1beta2.DaemonSet) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -155,7 +159,9 @@ func SetObjectDefaults_DaemonSet(in *v1beta2.DaemonSet) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -203,7 +209,9 @@ func SetObjectDefaults_DaemonSet(in *v1beta2.DaemonSet) { v1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] @@ -322,7 +330,9 @@ func SetObjectDefaults_Deployment(in *v1beta2.Deployment) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -370,7 +380,9 @@ func SetObjectDefaults_Deployment(in *v1beta2.Deployment) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -418,7 +430,9 @@ func SetObjectDefaults_Deployment(in *v1beta2.Deployment) { v1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] @@ -537,7 +551,9 @@ func SetObjectDefaults_ReplicaSet(in *v1beta2.ReplicaSet) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -585,7 +601,9 @@ func SetObjectDefaults_ReplicaSet(in *v1beta2.ReplicaSet) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -633,7 +651,9 @@ func SetObjectDefaults_ReplicaSet(in *v1beta2.ReplicaSet) { v1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] @@ -752,7 +772,9 @@ func SetObjectDefaults_StatefulSet(in *v1beta2.StatefulSet) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -800,7 +822,9 @@ func SetObjectDefaults_StatefulSet(in *v1beta2.StatefulSet) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -848,7 +872,9 @@ func SetObjectDefaults_StatefulSet(in *v1beta2.StatefulSet) { v1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] diff --git a/pkg/apis/batch/v1/zz_generated.defaults.go b/pkg/apis/batch/v1/zz_generated.defaults.go index 75e7cd5b934..ffeba646f2a 100644 --- a/pkg/apis/batch/v1/zz_generated.defaults.go +++ b/pkg/apis/batch/v1/zz_generated.defaults.go @@ -21,6 +21,8 @@ limitations under the License. package v1 import ( + "reflect" + v1 "k8s.io/api/batch/v1" runtime "k8s.io/apimachinery/pkg/runtime" corev1 "k8s.io/kubernetes/pkg/apis/core/v1" @@ -101,7 +103,9 @@ func SetObjectDefaults_Job(in *v1.Job) { corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - corev1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -149,7 +153,9 @@ func SetObjectDefaults_Job(in *v1.Job) { corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - corev1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -197,7 +203,9 @@ func SetObjectDefaults_Job(in *v1.Job) { corev1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - corev1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] diff --git a/pkg/apis/batch/v1beta1/zz_generated.defaults.go b/pkg/apis/batch/v1beta1/zz_generated.defaults.go index d435a8e5e17..2b11eb14698 100644 --- a/pkg/apis/batch/v1beta1/zz_generated.defaults.go +++ b/pkg/apis/batch/v1beta1/zz_generated.defaults.go @@ -21,6 +21,8 @@ limitations under the License. package v1beta1 import ( + "reflect" + v1beta1 "k8s.io/api/batch/v1beta1" runtime "k8s.io/apimachinery/pkg/runtime" v1 "k8s.io/kubernetes/pkg/apis/core/v1" @@ -102,7 +104,9 @@ func SetObjectDefaults_CronJob(in *v1beta1.CronJob) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -150,7 +154,9 @@ func SetObjectDefaults_CronJob(in *v1beta1.CronJob) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -198,7 +204,9 @@ func SetObjectDefaults_CronJob(in *v1beta1.CronJob) { v1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] @@ -316,7 +324,9 @@ func SetObjectDefaults_JobTemplate(in *v1beta1.JobTemplate) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -364,7 +374,9 @@ func SetObjectDefaults_JobTemplate(in *v1beta1.JobTemplate) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -412,7 +424,9 @@ func SetObjectDefaults_JobTemplate(in *v1beta1.JobTemplate) { v1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] diff --git a/pkg/apis/batch/v2alpha1/zz_generated.defaults.go b/pkg/apis/batch/v2alpha1/zz_generated.defaults.go index 64377e4a2df..eb96b04cb57 100644 --- a/pkg/apis/batch/v2alpha1/zz_generated.defaults.go +++ b/pkg/apis/batch/v2alpha1/zz_generated.defaults.go @@ -21,6 +21,8 @@ limitations under the License. package v2alpha1 import ( + "reflect" + v2alpha1 "k8s.io/api/batch/v2alpha1" runtime "k8s.io/apimachinery/pkg/runtime" v1 "k8s.io/kubernetes/pkg/apis/core/v1" @@ -102,7 +104,9 @@ func SetObjectDefaults_CronJob(in *v2alpha1.CronJob) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -150,7 +154,9 @@ func SetObjectDefaults_CronJob(in *v2alpha1.CronJob) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -198,7 +204,9 @@ func SetObjectDefaults_CronJob(in *v2alpha1.CronJob) { v1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] @@ -316,7 +324,9 @@ func SetObjectDefaults_JobTemplate(in *v2alpha1.JobTemplate) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -364,7 +374,9 @@ func SetObjectDefaults_JobTemplate(in *v2alpha1.JobTemplate) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -412,7 +424,9 @@ func SetObjectDefaults_JobTemplate(in *v2alpha1.JobTemplate) { v1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] diff --git a/pkg/apis/core/v1/defaults.go b/pkg/apis/core/v1/defaults.go index d1b81bae73b..28ceb24244e 100644 --- a/pkg/apis/core/v1/defaults.go +++ b/pkg/apis/core/v1/defaults.go @@ -19,7 +19,7 @@ package v1 import ( "time" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/kubernetes/pkg/util/parsers" @@ -70,11 +70,6 @@ func SetDefaults_Volume(obj *v1.Volume) { } } } -func SetDefaults_ContainerPort(obj *v1.ContainerPort) { - if obj.Protocol == "" { - obj.Protocol = v1.ProtocolTCP - } -} func SetDefaults_Container(obj *v1.Container) { if obj.ImagePullPolicy == "" { // Ignore error and assume it has been validated elsewhere diff --git a/pkg/apis/core/v1/zz_generated.defaults.go b/pkg/apis/core/v1/zz_generated.defaults.go index d85f6291e47..89f45a026b6 100644 --- a/pkg/apis/core/v1/zz_generated.defaults.go +++ b/pkg/apis/core/v1/zz_generated.defaults.go @@ -21,6 +21,8 @@ limitations under the License. package v1 import ( + "reflect" + v1 "k8s.io/api/core/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -91,7 +93,9 @@ func SetObjectDefaults_EphemeralContainers(in *v1.EphemeralContainers) { SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] @@ -287,7 +291,9 @@ func SetObjectDefaults_Pod(in *v1.Pod) { SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -335,7 +341,9 @@ func SetObjectDefaults_Pod(in *v1.Pod) { SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -383,7 +391,9 @@ func SetObjectDefaults_Pod(in *v1.Pod) { SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] @@ -501,7 +511,9 @@ func SetObjectDefaults_PodTemplate(in *v1.PodTemplate) { SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -549,7 +561,9 @@ func SetObjectDefaults_PodTemplate(in *v1.PodTemplate) { SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -597,7 +611,9 @@ func SetObjectDefaults_PodTemplate(in *v1.PodTemplate) { SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] @@ -717,7 +733,9 @@ func SetObjectDefaults_ReplicationController(in *v1.ReplicationController) { SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -765,7 +783,9 @@ func SetObjectDefaults_ReplicationController(in *v1.ReplicationController) { SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -813,7 +833,9 @@ func SetObjectDefaults_ReplicationController(in *v1.ReplicationController) { SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] diff --git a/pkg/apis/extensions/v1beta1/zz_generated.defaults.go b/pkg/apis/extensions/v1beta1/zz_generated.defaults.go index 29f0d6064ee..317003e1dbe 100644 --- a/pkg/apis/extensions/v1beta1/zz_generated.defaults.go +++ b/pkg/apis/extensions/v1beta1/zz_generated.defaults.go @@ -21,6 +21,8 @@ limitations under the License. package v1beta1 import ( + "reflect" + v1beta1 "k8s.io/api/extensions/v1beta1" runtime "k8s.io/apimachinery/pkg/runtime" v1 "k8s.io/kubernetes/pkg/apis/core/v1" @@ -111,7 +113,9 @@ func SetObjectDefaults_DaemonSet(in *v1beta1.DaemonSet) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -159,7 +163,9 @@ func SetObjectDefaults_DaemonSet(in *v1beta1.DaemonSet) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -207,7 +213,9 @@ func SetObjectDefaults_DaemonSet(in *v1beta1.DaemonSet) { v1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] @@ -326,7 +334,9 @@ func SetObjectDefaults_Deployment(in *v1beta1.Deployment) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -374,7 +384,9 @@ func SetObjectDefaults_Deployment(in *v1beta1.Deployment) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -422,7 +434,9 @@ func SetObjectDefaults_Deployment(in *v1beta1.Deployment) { v1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] @@ -582,7 +596,9 @@ func SetObjectDefaults_ReplicaSet(in *v1beta1.ReplicaSet) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -630,7 +646,9 @@ func SetObjectDefaults_ReplicaSet(in *v1beta1.ReplicaSet) { v1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.Env { b := &a.Env[j] @@ -678,7 +696,9 @@ func SetObjectDefaults_ReplicaSet(in *v1beta1.ReplicaSet) { v1.SetDefaults_EphemeralContainer(a) for j := range a.EphemeralContainerCommon.Ports { b := &a.EphemeralContainerCommon.Ports[j] - v1.SetDefaults_ContainerPort(b) + if reflect.ValueOf(b.Protocol).IsZero() { + b.Protocol = "TCP" + } } for j := range a.EphemeralContainerCommon.Env { b := &a.EphemeralContainerCommon.Env[j] diff --git a/staging/src/k8s.io/apiextensions-apiserver/go.sum b/staging/src/k8s.io/apiextensions-apiserver/go.sum index 50c80b09f85..5e20c4eaea6 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/go.sum +++ b/staging/src/k8s.io/apiextensions-apiserver/go.sum @@ -573,6 +573,7 @@ golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054 h1:HHeAlu5H9b71C+Fx0K+1dGgVFN1DM1/wz4aoGOA5qS8= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -676,9 +677,10 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 h1:t4L10Qfx/p7ASH3gXCdIUtPbbIuegCoUJf3TMSFekjw= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded h1:JApXBKYyB7l9xx+DK7/+mFjC7A9Bt5A93FPvFD0HIFE= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd h1:sOHNzJIkytDF6qadMNKhhDRpc6ODik8lVC6nOur7B2c= diff --git a/staging/src/k8s.io/code-generator/go.mod b/staging/src/k8s.io/code-generator/go.mod index 998a5f85821..404d8f3c26b 100644 --- a/staging/src/k8s.io/code-generator/go.mod +++ b/staging/src/k8s.io/code-generator/go.mod @@ -17,10 +17,9 @@ require ( golang.org/x/text v0.3.4 // indirect golang.org/x/tools v0.0.0-20200616133436-c1934b75d054 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect - k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 + k8s.io/gengo v0.0.0-20201113003025-83324d819ded k8s.io/klog/v2 v2.4.0 k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd - sigs.k8s.io/yaml v1.2.0 // indirect ) replace k8s.io/code-generator => ../code-generator diff --git a/staging/src/k8s.io/code-generator/go.sum b/staging/src/k8s.io/code-generator/go.sum index dc53f09a03e..af35786dcd7 100644 --- a/staging/src/k8s.io/code-generator/go.sum +++ b/staging/src/k8s.io/code-generator/go.sum @@ -35,6 +35,7 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -109,6 +110,7 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054 h1:HHeAlu5H9b71C+Fx0K+1dGgVFN1DM1/wz4aoGOA5qS8= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -129,9 +131,10 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 h1:t4L10Qfx/p7ASH3gXCdIUtPbbIuegCoUJf3TMSFekjw= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded h1:JApXBKYyB7l9xx+DK7/+mFjC7A9Bt5A93FPvFD0HIFE= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd h1:sOHNzJIkytDF6qadMNKhhDRpc6ODik8lVC6nOur7B2c= diff --git a/staging/src/k8s.io/kube-aggregator/go.sum b/staging/src/k8s.io/kube-aggregator/go.sum index 74b0969049e..8aa1ffdbab9 100644 --- a/staging/src/k8s.io/kube-aggregator/go.sum +++ b/staging/src/k8s.io/kube-aggregator/go.sum @@ -573,6 +573,7 @@ golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054 h1:HHeAlu5H9b71C+Fx0K+1dGgVFN1DM1/wz4aoGOA5qS8= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -676,9 +677,10 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 h1:t4L10Qfx/p7ASH3gXCdIUtPbbIuegCoUJf3TMSFekjw= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded h1:JApXBKYyB7l9xx+DK7/+mFjC7A9Bt5A93FPvFD0HIFE= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd h1:sOHNzJIkytDF6qadMNKhhDRpc6ODik8lVC6nOur7B2c= diff --git a/staging/src/k8s.io/kubectl/go.sum b/staging/src/k8s.io/kubectl/go.sum index b47351ab016..0e2bee7a756 100644 --- a/staging/src/k8s.io/kubectl/go.sum +++ b/staging/src/k8s.io/kubectl/go.sum @@ -542,6 +542,7 @@ golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -634,8 +635,9 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd h1:sOHNzJIkytDF6qadMNKhhDRpc6ODik8lVC6nOur7B2c= diff --git a/staging/src/k8s.io/metrics/go.sum b/staging/src/k8s.io/metrics/go.sum index ff8c12a7c9c..daea75c36c8 100644 --- a/staging/src/k8s.io/metrics/go.sum +++ b/staging/src/k8s.io/metrics/go.sum @@ -342,6 +342,7 @@ golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054 h1:HHeAlu5H9b71C+Fx0K+1dGgVFN1DM1/wz4aoGOA5qS8= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -426,9 +427,10 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 h1:t4L10Qfx/p7ASH3gXCdIUtPbbIuegCoUJf3TMSFekjw= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded h1:JApXBKYyB7l9xx+DK7/+mFjC7A9Bt5A93FPvFD0HIFE= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd h1:sOHNzJIkytDF6qadMNKhhDRpc6ODik8lVC6nOur7B2c= diff --git a/staging/src/k8s.io/sample-apiserver/go.sum b/staging/src/k8s.io/sample-apiserver/go.sum index 9a18d142258..b7273ee9772 100644 --- a/staging/src/k8s.io/sample-apiserver/go.sum +++ b/staging/src/k8s.io/sample-apiserver/go.sum @@ -570,6 +570,7 @@ golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054 h1:HHeAlu5H9b71C+Fx0K+1dGgVFN1DM1/wz4aoGOA5qS8= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -673,9 +674,10 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 h1:t4L10Qfx/p7ASH3gXCdIUtPbbIuegCoUJf3TMSFekjw= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded h1:JApXBKYyB7l9xx+DK7/+mFjC7A9Bt5A93FPvFD0HIFE= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd h1:sOHNzJIkytDF6qadMNKhhDRpc6ODik8lVC6nOur7B2c= diff --git a/staging/src/k8s.io/sample-controller/go.sum b/staging/src/k8s.io/sample-controller/go.sum index c5c1e19cdb8..b152b9c8d7c 100644 --- a/staging/src/k8s.io/sample-controller/go.sum +++ b/staging/src/k8s.io/sample-controller/go.sum @@ -348,6 +348,7 @@ golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054 h1:HHeAlu5H9b71C+Fx0K+1dGgVFN1DM1/wz4aoGOA5qS8= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -432,9 +433,10 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 h1:t4L10Qfx/p7ASH3gXCdIUtPbbIuegCoUJf3TMSFekjw= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded h1:JApXBKYyB7l9xx+DK7/+mFjC7A9Bt5A93FPvFD0HIFE= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd h1:sOHNzJIkytDF6qadMNKhhDRpc6ODik8lVC6nOur7B2c= diff --git a/vendor/k8s.io/gengo/examples/defaulter-gen/generators/defaulter.go b/vendor/k8s.io/gengo/examples/defaulter-gen/generators/defaulter.go index 5861fcfed83..cdb6f7c7e43 100644 --- a/vendor/k8s.io/gengo/examples/defaulter-gen/generators/defaulter.go +++ b/vendor/k8s.io/gengo/examples/defaulter-gen/generators/defaulter.go @@ -18,6 +18,7 @@ package generators import ( "bytes" + "encoding/json" "fmt" "io" "path/filepath" @@ -38,16 +39,45 @@ type CustomArgs struct { ExtraPeerDirs []string // Always consider these as last-ditch possibilities for conversions. } +var typeZeroValue = map[string]interface{}{ + "uint": 0., + "uint8": 0., + "uint16": 0., + "uint32": 0., + "uint64": 0., + "int": 0., + "int8": 0., + "int16": 0., + "int32": 0., + "int64": 0., + "byte": 0, + "float64": 0., + "float32": 0., + "bool": false, + "time.Time": "", + "string": "", + "integer": 0., + "number": 0., + "boolean": false, + "[]byte": "", // base64 encoded characters + "interface{}": interface{}(nil), +} + // These are the comment tags that carry parameters for defaulter generation. const tagName = "k8s:defaulter-gen" -const intputTagName = "k8s:defaulter-gen-input" +const inputTagName = "k8s:defaulter-gen-input" +const defaultTagName = "default" + +func extractDefaultTag(comments []string) []string { + return types.ExtractCommentTags("+", comments)[defaultTagName] +} func extractTag(comments []string) []string { return types.ExtractCommentTags("+", comments)[tagName] } func extractInputTag(comments []string) []string { - return types.ExtractCommentTags("+", comments)[intputTagName] + return types.ExtractCommentTags("+", comments)[inputTagName] } func checkTag(comments []string, require ...string) bool { @@ -401,6 +431,112 @@ func newCallTreeForType(existingDefaulters, newDefaulters defaulterFuncMap) *cal } } +func resolveTypeAndDepth(t *types.Type) (*types.Type, int) { + var prev *types.Type + depth := 0 + for prev != t { + prev = t + if t.Kind == types.Alias { + t = t.Underlying + } else if t.Kind == types.Pointer { + t = t.Elem + depth += 1 + } + } + return t, depth +} + +// getNestedDefault returns the first default value when resolving alias types +func getNestedDefault(t *types.Type) string { + var prev *types.Type + for prev != t { + prev = t + defaultMap := extractDefaultTag(t.CommentLines) + if len(defaultMap) == 1 && defaultMap[0] != "" { + return defaultMap[0] + } + if t.Kind == types.Alias { + t = t.Underlying + } else if t.Kind == types.Pointer { + t = t.Elem + } + } + return "" +} + +func mustEnforceDefault(t *types.Type, depth int, omitEmpty bool) (interface{}, error) { + if depth > 0 { + return nil, nil + } + switch t.Kind { + case types.Pointer, types.Map, types.Slice, types.Array, types.Interface: + return nil, nil + case types.Struct: + return map[string]interface{}{}, nil + case types.Builtin: + if !omitEmpty { + if zero, ok := typeZeroValue[t.String()]; ok { + return zero, nil + } else { + return nil, fmt.Errorf("please add type %v to typeZeroValue struct", t) + } + } + return nil, nil + default: + return nil, fmt.Errorf("not sure how to enforce default for %v", t.Kind) + } +} + +func populateDefaultValue(node *callNode, t *types.Type, tags string, commentLines []string) *callNode { + defaultMap := extractDefaultTag(commentLines) + var defaultString string + if len(defaultMap) == 1 { + defaultString = defaultMap[0] + } + + t, depth := resolveTypeAndDepth(t) + if depth > 0 && defaultString == "" { + defaultString = getNestedDefault(t) + } + if len(defaultMap) > 1 { + klog.Fatalf("Found more than one default tag for %v", t.Kind) + } else if len(defaultMap) == 0 { + return node + } + var defaultValue interface{} + if err := json.Unmarshal([]byte(defaultString), &defaultValue); err != nil { + klog.Fatalf("Failed to unmarshal default: %v", err) + } + + omitEmpty := strings.Contains(reflect.StructTag(tags).Get("json"), "omitempty") + if enforced, err := mustEnforceDefault(t, depth, omitEmpty); err != nil { + klog.Fatal(err) + } else if enforced != nil { + if defaultValue != nil { + if reflect.DeepEqual(defaultValue, enforced) { + // If the default value annotation matches the default value for the type, + // do not generate any defaulting function + return node + } else { + enforcedJSON, _ := json.Marshal(enforced) + klog.Fatalf("Invalid default value (%#v) for non-pointer/non-omitempty. If specified, must be: %v", defaultValue, string(enforcedJSON)) + } + } + } + + // callNodes are not automatically generated for primitive types. Generate one if the callNode does not exist + if node == nil { + node = &callNode{} + node.markerOnly = true + } + + node.defaultIsPrimitive = t.IsPrimitive() + node.defaultType = t.String() + node.defaultValue = defaultString + node.defaultDepth = depth + return node +} + // build creates a tree of paths to fields (based on how they would be accessed in Go - pointer, elem, // slice, or key) and the functions that should be invoked on each field. An in-order traversal of the resulting tree // can be used to generate a Go function that invokes each nested function on the appropriate type. The return @@ -473,12 +609,19 @@ func (c *callTreeForType) build(t *types.Type, root bool) *callNode { child.elem = true } parent.children = append(parent.children, *child) + } else if member := populateDefaultValue(nil, t.Elem, "", t.Elem.CommentLines); member != nil { + member.index = true + parent.children = append(parent.children, *member) } case types.Map: if child := c.build(t.Elem, false); child != nil { child.key = true parent.children = append(parent.children, *child) + } else if member := populateDefaultValue(nil, t.Elem, "", t.Elem.CommentLines); member != nil { + member.key = true + parent.children = append(parent.children, *member) } + case types.Struct: for _, field := range t.Members { name := field.Name @@ -491,7 +634,11 @@ func (c *callTreeForType) build(t *types.Type, root bool) *callNode { } if child := c.build(field.Type, false); child != nil { child.field = name + populateDefaultValue(child, field.Type, field.Tags, field.CommentLines) parent.children = append(parent.children, *child) + } else if member := populateDefaultValue(nil, field.Type, field.Tags, field.CommentLines); member != nil { + member.field = name + parent.children = append(parent.children, *member) } } case types.Alias: @@ -676,6 +823,27 @@ type callNode struct { call []*types.Type // children is the child call nodes that must also be traversed children []callNode + + // defaultValue is the defaultValue of a callNode struct + // Only primitive types and pointer types are eligible to have a default value + defaultValue string + + // defaultIsPrimitive is used to determine how to assign the default value. + // Primitive types will be directly assigned while complex types will use JSON unmarshalling + defaultIsPrimitive bool + + // markerOnly is true if the callNode exists solely to fill in a default value + markerOnly bool + + // defaultDepth is used to determine pointer level of the default value + // For example 1 corresponds to setting a default value and taking its pointer while + // 2 corresponds to setting a default value and taking its pointer's pointer + // 0 implies that no pointers are used + defaultDepth int + + // defaultType is the type of the default value. + // Only populated if defaultIsPrimitive is true + defaultType string } // CallNodeVisitorFunc is a function for visiting a call tree. ancestors is the list of all parents @@ -731,6 +899,85 @@ func (n *callNode) writeCalls(varName string, isVarPointer bool, sw *generator.S } } +func (n *callNode) writeDefaulter(varName string, index string, isVarPointer bool, sw *generator.SnippetWriter) { + if n.defaultValue == "" { + return + } + varPointer := varName + if !isVarPointer { + varPointer = "&" + varPointer + } + + args := generator.Args{ + "defaultValue": n.defaultValue, + "varPointer": varPointer, + "varName": varName, + "index": index, + "varDepth": n.defaultDepth, + "varType": n.defaultType, + } + + if n.index { + sw.Do("if reflect.ValueOf($.var$[$.index$]).IsZero() {\n", generator.Args{"var": varName, "index": index}) + if n.defaultIsPrimitive { + if n.defaultDepth > 0 { + sw.Do("var ptrVar$.varDepth$ $.varType$ = $.defaultValue$\n", args) + for i := n.defaultDepth; i > 0; i-- { + sw.Do("ptrVar$.ptri$ := &ptrVar$.i$\n", generator.Args{"i": fmt.Sprintf("%d", i), "ptri": fmt.Sprintf("%d", (i - 1))}) + } + sw.Do("$.varName$[$.index$] = ptrVar0", args) + } else { + sw.Do("$.varName$[$.index$] = $.defaultValue$", args) + } + } else { + sw.Do("if err := json.Unmarshal([]byte(`$.defaultValue$`), $.varPointer$[$.index$]); err != nil {\n", args) + sw.Do("panic(err)\n", nil) + sw.Do("}\n", nil) + } + } else if n.key { + mapDefaultVar := index + "_default" + args["mapDefaultVar"] = mapDefaultVar + sw.Do("if reflect.ValueOf($.var$[$.index$]).IsZero() {\n", generator.Args{"var": varName, "index": index}) + + if n.defaultIsPrimitive { + if n.defaultDepth > 0 { + sw.Do("var ptrVar$.varDepth$ $.varType$ = $.defaultValue$\n", args) + for i := n.defaultDepth; i > 0; i-- { + sw.Do("ptrVar$.ptri$ := &ptrVar$.i$\n", generator.Args{"i": fmt.Sprintf("%d", i), "ptri": fmt.Sprintf("%d", (i - 1))}) + } + sw.Do("$.varName$[$.index$] = ptrVar0", args) + } else { + sw.Do("$.varName$[$.index$] = $.defaultValue$", args) + } + } else { + sw.Do("$.mapDefaultVar$ := $.varName$[$.index$]\n", args) + sw.Do("if err := json.Unmarshal([]byte(`$.defaultValue$`), &$.mapDefaultVar$); err != nil {\n", args) + sw.Do("panic(err)\n", nil) + sw.Do("}\n", nil) + sw.Do("$.varName$[$.index$] = $.mapDefaultVar$\n", args) + } + } else { + sw.Do("if reflect.ValueOf($.var$).IsZero() {\n", generator.Args{"var": varName}) + + if n.defaultIsPrimitive { + if n.defaultDepth > 0 { + sw.Do("var ptrVar$.varDepth$ $.varType$ = $.defaultValue$\n", args) + for i := n.defaultDepth; i > 0; i-- { + sw.Do("ptrVar$.ptri$ := &ptrVar$.i$\n", generator.Args{"i": fmt.Sprintf("%d", i), "ptri": fmt.Sprintf("%d", (i - 1))}) + } + sw.Do("$.varName$ = ptrVar0", args) + } else { + sw.Do("$.varName$ = $.defaultValue$", args) + } + } else { + sw.Do("if err := json.Unmarshal([]byte(`$.defaultValue$`), $.varPointer$); err != nil {\n", args) + sw.Do("panic(err)\n", nil) + sw.Do("}\n", nil) + } + } + sw.Do("}\n", nil) +} + // WriteMethod performs an in-order traversal of the calltree, generating loops and if blocks as necessary // to correctly turn the call tree into a method body that invokes all calls on all child nodes of the call tree. // Depth is used to generate local variables at the proper depth. @@ -758,19 +1005,31 @@ func (n *callNode) WriteMethod(varName string, depth int, ancestors []*callNode, switch { case n.index: sw.Do("for $.index$ := range $.var$ {\n", vars) - if n.elem { - sw.Do("$.local$ := $.var$[$.index$]\n", vars) - } else { - sw.Do("$.local$ := &$.var$[$.index$]\n", vars) + if !n.markerOnly { + if n.elem { + sw.Do("$.local$ := $.var$[$.index$]\n", vars) + } else { + sw.Do("$.local$ := &$.var$[$.index$]\n", vars) + } } + n.writeDefaulter(varName, index, isPointer, sw) n.writeCalls(local, true, sw) for i := range n.children { n.children[i].WriteMethod(local, depth+1, append(ancestors, n), sw) } sw.Do("}\n", nil) case n.key: + if n.defaultValue != "" { + // Map keys are typed and cannot share the same index variable as arrays and other maps + index = index + "_" + ancestors[len(ancestors)-1].field + vars["index"] = index + sw.Do("for $.index$ := range $.var$ {\n", vars) + n.writeDefaulter(varName, index, isPointer, sw) + sw.Do("}\n", nil) + } default: + n.writeDefaulter(varName, index, isPointer, sw) n.writeCalls(varName, isPointer, sw) for i := range n.children { n.children[i].WriteMethod(varName, depth, append(ancestors, n), sw) diff --git a/vendor/k8s.io/gengo/examples/set-gen/generators/sets.go b/vendor/k8s.io/gengo/examples/set-gen/generators/sets.go index ab9fc7f1e23..ee99d26b5b3 100644 --- a/vendor/k8s.io/gengo/examples/set-gen/generators/sets.go +++ b/vendor/k8s.io/gengo/examples/set-gen/generators/sets.go @@ -187,7 +187,7 @@ type $.type|public$ map[$.type|raw$]Empty // New$.type|public$ creates a $.type|public$ from a list of values. func New$.type|public$(items ...$.type|raw$) $.type|public$ { - ss := $.type|public${} + ss := make($.type|public$, len(items)) ss.Insert(items...) return ss } diff --git a/vendor/k8s.io/gengo/examples/set-gen/sets/byte.go b/vendor/k8s.io/gengo/examples/set-gen/sets/byte.go index 9bfa85d43d4..b7f3500dbd9 100644 --- a/vendor/k8s.io/gengo/examples/set-gen/sets/byte.go +++ b/vendor/k8s.io/gengo/examples/set-gen/sets/byte.go @@ -28,7 +28,7 @@ type Byte map[byte]Empty // NewByte creates a Byte from a list of values. func NewByte(items ...byte) Byte { - ss := Byte{} + ss := make(Byte, len(items)) ss.Insert(items...) return ss } diff --git a/vendor/k8s.io/gengo/examples/set-gen/sets/int.go b/vendor/k8s.io/gengo/examples/set-gen/sets/int.go index 88bd7096791..43c4a271f51 100644 --- a/vendor/k8s.io/gengo/examples/set-gen/sets/int.go +++ b/vendor/k8s.io/gengo/examples/set-gen/sets/int.go @@ -28,7 +28,7 @@ type Int map[int]Empty // NewInt creates a Int from a list of values. func NewInt(items ...int) Int { - ss := Int{} + ss := make(Int, len(items)) ss.Insert(items...) return ss } diff --git a/vendor/k8s.io/gengo/examples/set-gen/sets/int64.go b/vendor/k8s.io/gengo/examples/set-gen/sets/int64.go index b375a1b065c..1a2c674e942 100644 --- a/vendor/k8s.io/gengo/examples/set-gen/sets/int64.go +++ b/vendor/k8s.io/gengo/examples/set-gen/sets/int64.go @@ -28,7 +28,7 @@ type Int64 map[int64]Empty // NewInt64 creates a Int64 from a list of values. func NewInt64(items ...int64) Int64 { - ss := Int64{} + ss := make(Int64, len(items)) ss.Insert(items...) return ss } diff --git a/vendor/k8s.io/gengo/examples/set-gen/sets/string.go b/vendor/k8s.io/gengo/examples/set-gen/sets/string.go index e6f37db8874..bcba151fa73 100644 --- a/vendor/k8s.io/gengo/examples/set-gen/sets/string.go +++ b/vendor/k8s.io/gengo/examples/set-gen/sets/string.go @@ -28,7 +28,7 @@ type String map[string]Empty // NewString creates a String from a list of values. func NewString(items ...string) String { - ss := String{} + ss := make(String, len(items)) ss.Insert(items...) return ss } diff --git a/vendor/k8s.io/gengo/generator/snippet_writer.go b/vendor/k8s.io/gengo/generator/snippet_writer.go index eae917c1381..590775ff228 100644 --- a/vendor/k8s.io/gengo/generator/snippet_writer.go +++ b/vendor/k8s.io/gengo/generator/snippet_writer.go @@ -57,7 +57,7 @@ func NewSnippetWriter(w io.Writer, c *Context, left, right string) *SnippetWrite // Do parses format and runs args through it. You can have arbitrary logic in // the format (see the text/template documentation), but consider running many -// short templaces, with ordinary go logic in between--this may be more +// short templates with ordinary go logic in between--this may be more // readable. Do is chainable. Any error causes every other call to do to be // ignored, and the error will be returned by Error(). So you can check it just // once, at the end of your function. diff --git a/vendor/k8s.io/gengo/parser/parse.go b/vendor/k8s.io/gengo/parser/parse.go index 497f4615b42..14b5ae13479 100644 --- a/vendor/k8s.io/gengo/parser/parse.go +++ b/vendor/k8s.io/gengo/parser/parse.go @@ -20,6 +20,7 @@ import ( "fmt" "go/ast" "go/build" + "go/constant" "go/parser" "go/token" tc "go/types" @@ -335,7 +336,8 @@ func (b *Builder) addDir(dir string, userRequested bool) error { return nil } -var regexErrPackageNotFound = regexp.MustCompile(`^unable to import ".*?": cannot find package ".*?" in any of:`) +// regexErrPackageNotFound helps test the expected error for not finding a package. +var regexErrPackageNotFound = regexp.MustCompile(`^unable to import ".*?":.*`) func isErrPackageNotFound(err error) bool { return regexErrPackageNotFound.MatchString(err.Error()) @@ -847,6 +849,22 @@ func (b *Builder) addConstant(u types.Universe, useName *types.Name, in *tc.Cons out := u.Constant(name) out.Kind = types.DeclarationOf out.Underlying = b.walkType(u, nil, in.Type()) + + var constval string + + // For strings, we use `StringVal()` to get the un-truncated, + // un-quoted string. For other values, `.String()` is preferable to + // get something relatively human readable (especially since for + // floating point types, `ExactString()` will generate numeric + // expressions using `big.(*Float).Text()`. + switch in.Val().Kind() { + case constant.String: + constval = constant.StringVal(in.Val()) + default: + constval = in.Val().String() + } + + out.ConstValue = &constval return out } diff --git a/vendor/k8s.io/gengo/types/types.go b/vendor/k8s.io/gengo/types/types.go index 78357bcce1b..12ec1d97525 100644 --- a/vendor/k8s.io/gengo/types/types.go +++ b/vendor/k8s.io/gengo/types/types.go @@ -341,6 +341,13 @@ type Type struct { // If Kind == func, this is the signature of the function. Signature *Signature + // ConstValue contains a stringified constant value if + // Kind == DeclarationOf and this is a constant value + // declaration. For string constants, this field contains + // the entire, un-quoted value. For other types, it contains + // a human-readable literal. + ConstValue *string + // TODO: Add: // * channel direction // * array length diff --git a/vendor/modules.txt b/vendor/modules.txt index e1ede4215ff..32ca29d0b39 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -2266,9 +2266,9 @@ k8s.io/cri-api/pkg/apis/testing k8s.io/csi-translation-lib # k8s.io/csi-translation-lib => ./staging/src/k8s.io/csi-translation-lib k8s.io/csi-translation-lib/plugins -# k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 => k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 +# k8s.io/gengo v0.0.0-20201113003025-83324d819ded => k8s.io/gengo v0.0.0-20201113003025-83324d819ded ## explicit -# k8s.io/gengo => k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 +# k8s.io/gengo => k8s.io/gengo v0.0.0-20201113003025-83324d819ded k8s.io/gengo/args k8s.io/gengo/examples/deepcopy-gen/generators k8s.io/gengo/examples/defaulter-gen/generators