Skip to content

Commit 3adb251

Browse files
authored
⚠️ Remove pointers from remaining pointer struct fields (#12545)
* Remove pointers from remaining pointer struct fields * Fix review findings * Fix review findings
1 parent c641a21 commit 3adb251

File tree

222 files changed

+4259
-4643
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

222 files changed

+4259
-4643
lines changed

.golangci-kal.yml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,11 @@ linters:
124124
text: "Properties should not use a map type, use a list type with a unique name/identifier instead"
125125
linters:
126126
- kubeapilinter
127+
# It's simpler to check these fields against nil vs. using reflect.DeepEqual everywhere.
128+
- path: "api/core/v1beta2/clusterclass_types.go"
129+
text: "optionalfields: field (AdditionalProperties|Items|Not) (is optional and does not allow the zero value. It must have the omitzero tag|is optional and does not have a valid zero value. The field does not need to be a pointer)"
130+
linters:
131+
- kubeapilinter
127132

128133
## Removal of bool fields of existing types requires further discussion
129134
- path: "api/bootstrap/kubeadm/v1beta2|api/controlplane/kubeadm/v1beta2|api/core/v1beta2|api/addons/v1beta2"
@@ -211,8 +216,12 @@ linters:
211216
- kubeapilinter
212217

213218
# TODO: Excludes that should be removed once https://github.com/kubernetes-sigs/kube-api-linter/issues/132 will be fixed
214-
- path: "api/ipam/v1beta2/ipaddressclaim_types.go"
215-
text: "optionalfields: field AddressRef is optional and has a valid zero value \\({}\\), but the validation is not complete \\(e.g. min properties/adding required fields\\). The field should be a pointer to allow the zero value to be set. If the zero value is not a valid use case, complete the validation and remove the pointer."
219+
- path: "api/.*"
220+
text: "optionalfields: field (.*) is optional and (should have the omitempty tag|should be a pointer)"
221+
linters:
222+
- kubeapilinter
223+
- path: "api/.*"
224+
text: "optionalfields: field (.*) is optional and has a valid zero value \\({}\\), but the validation is not complete \\(e.g. min properties/adding required fields\\). The field should be a pointer to allow the zero value to be set. If the zero value is not a valid use case, complete the validation and remove the pointer."
216225
linters:
217226
- kubeapilinter
218227
issues:

api/bootstrap/kubeadm/v1beta1/conversion.go

Lines changed: 399 additions & 135 deletions
Large diffs are not rendered by default.

api/bootstrap/kubeadm/v1beta1/conversion_test.go

Lines changed: 69 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -108,34 +108,21 @@ func hubKubeadmConfigSpec(in *bootstrapv1.KubeadmConfigSpec, c randfill.Continue
108108
c.FillNoCustom(in)
109109

110110
// enforce ControlPlaneComponentHealthCheckSeconds to be equal on init and join configuration
111-
var initControlPlaneComponentHealthCheckSeconds *int32
112-
if in.InitConfiguration != nil && in.InitConfiguration.Timeouts != nil {
113-
initControlPlaneComponentHealthCheckSeconds = in.InitConfiguration.Timeouts.ControlPlaneComponentHealthCheckSeconds
114-
}
115-
if (in.JoinConfiguration != nil && in.JoinConfiguration.Timeouts != nil) || initControlPlaneComponentHealthCheckSeconds != nil {
116-
if in.JoinConfiguration == nil {
117-
in.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
118-
}
119-
if in.JoinConfiguration.Timeouts == nil {
120-
in.JoinConfiguration.Timeouts = &bootstrapv1.Timeouts{}
121-
}
111+
initControlPlaneComponentHealthCheckSeconds := in.InitConfiguration.Timeouts.ControlPlaneComponentHealthCheckSeconds
112+
if in.JoinConfiguration.IsDefined() || initControlPlaneComponentHealthCheckSeconds != nil {
122113
in.JoinConfiguration.Timeouts.ControlPlaneComponentHealthCheckSeconds = initControlPlaneComponentHealthCheckSeconds
123114
}
124-
if in.ClusterConfiguration != nil {
125-
if in.ClusterConfiguration.APIServer.ExtraEnvs != nil && *in.ClusterConfiguration.APIServer.ExtraEnvs == nil {
126-
in.ClusterConfiguration.APIServer.ExtraEnvs = nil
127-
}
128-
if in.ClusterConfiguration.ControllerManager.ExtraEnvs != nil && *in.ClusterConfiguration.ControllerManager.ExtraEnvs == nil {
129-
in.ClusterConfiguration.ControllerManager.ExtraEnvs = nil
130-
}
131-
if in.ClusterConfiguration.Scheduler.ExtraEnvs != nil && *in.ClusterConfiguration.Scheduler.ExtraEnvs == nil {
132-
in.ClusterConfiguration.Scheduler.ExtraEnvs = nil
133-
}
134-
if in.ClusterConfiguration.Etcd.Local != nil {
135-
if in.ClusterConfiguration.Etcd.Local.ExtraEnvs != nil && *in.ClusterConfiguration.Etcd.Local.ExtraEnvs == nil {
136-
in.ClusterConfiguration.Etcd.Local.ExtraEnvs = nil
137-
}
138-
}
115+
if in.ClusterConfiguration.APIServer.ExtraEnvs != nil && *in.ClusterConfiguration.APIServer.ExtraEnvs == nil {
116+
in.ClusterConfiguration.APIServer.ExtraEnvs = nil
117+
}
118+
if in.ClusterConfiguration.ControllerManager.ExtraEnvs != nil && *in.ClusterConfiguration.ControllerManager.ExtraEnvs == nil {
119+
in.ClusterConfiguration.ControllerManager.ExtraEnvs = nil
120+
}
121+
if in.ClusterConfiguration.Scheduler.ExtraEnvs != nil && *in.ClusterConfiguration.Scheduler.ExtraEnvs == nil {
122+
in.ClusterConfiguration.Scheduler.ExtraEnvs = nil
123+
}
124+
if in.ClusterConfiguration.Etcd.Local.ExtraEnvs != nil && *in.ClusterConfiguration.Etcd.Local.ExtraEnvs == nil {
125+
in.ClusterConfiguration.Etcd.Local.ExtraEnvs = nil
139126
}
140127
}
141128

@@ -154,6 +141,33 @@ func spokeKubeadmConfigSpec(in *KubeadmConfigSpec, c randfill.Continue) {
154141
in.UseExperimentalRetryJoin = false
155142

156143
dropEmptyStringsKubeadmConfigSpec(in)
144+
145+
if in.InitConfiguration != nil && in.InitConfiguration.Patches != nil && reflect.DeepEqual(in.InitConfiguration.Patches, &Patches{}) {
146+
in.InitConfiguration.Patches = nil
147+
}
148+
if in.JoinConfiguration != nil && in.JoinConfiguration.Patches != nil && reflect.DeepEqual(in.JoinConfiguration.Patches, &Patches{}) {
149+
in.JoinConfiguration.Patches = nil
150+
}
151+
if in.Ignition != nil {
152+
if in.Ignition.ContainerLinuxConfig != nil && reflect.DeepEqual(in.Ignition.ContainerLinuxConfig, &ContainerLinuxConfig{}) {
153+
in.Ignition.ContainerLinuxConfig = nil
154+
}
155+
if reflect.DeepEqual(in.Ignition, &IgnitionSpec{}) {
156+
in.Ignition = nil
157+
}
158+
}
159+
if in.DiskSetup != nil && reflect.DeepEqual(in.DiskSetup, &DiskSetup{}) {
160+
in.DiskSetup = nil
161+
}
162+
if in.NTP != nil && reflect.DeepEqual(in.NTP, &NTP{}) {
163+
in.NTP = nil
164+
}
165+
for i, file := range in.Files {
166+
if file.ContentFrom != nil && reflect.DeepEqual(file.ContentFrom, &FileSource{}) {
167+
file.ContentFrom = nil
168+
}
169+
in.Files[i] = file
170+
}
157171
}
158172

159173
func spokeClusterConfiguration(in *ClusterConfiguration, c randfill.Continue) {
@@ -165,6 +179,13 @@ func spokeClusterConfiguration(in *ClusterConfiguration, c randfill.Continue) {
165179
in.Networking.DNSDomain = ""
166180
in.KubernetesVersion = ""
167181
in.ClusterName = ""
182+
183+
if in.Etcd.Local != nil && reflect.DeepEqual(in.Etcd.Local, &LocalEtcd{}) {
184+
in.Etcd.Local = nil
185+
}
186+
if in.Etcd.External != nil && reflect.DeepEqual(in.Etcd.External, &ExternalEtcd{}) {
187+
in.Etcd.External = nil
188+
}
168189
}
169190

170191
func spokeAPIServer(in *APIServer, c randfill.Continue) {
@@ -192,6 +213,28 @@ func spokeDiscovery(in *Discovery, c randfill.Continue) {
192213
if in.Timeout != nil {
193214
in.Timeout = ptr.To[metav1.Duration](metav1.Duration{Duration: time.Duration(c.Int31()) * time.Second})
194215
}
216+
if in.File != nil {
217+
if in.File.KubeConfig != nil {
218+
if in.File.KubeConfig.Cluster != nil && reflect.DeepEqual(in.File.KubeConfig.Cluster, &KubeConfigCluster{}) {
219+
in.File.KubeConfig.Cluster = nil
220+
}
221+
if in.File.KubeConfig.User.AuthProvider != nil && reflect.DeepEqual(in.File.KubeConfig.User.AuthProvider, &KubeConfigAuthProvider{}) {
222+
in.File.KubeConfig.User.AuthProvider = nil
223+
}
224+
if in.File.KubeConfig.User.Exec != nil && reflect.DeepEqual(in.File.KubeConfig.User.Exec, &KubeConfigAuthExec{}) {
225+
in.File.KubeConfig.User.Exec = nil
226+
}
227+
if reflect.DeepEqual(in.File.KubeConfig, &FileDiscoveryKubeConfig{}) {
228+
in.File.KubeConfig = nil
229+
}
230+
}
231+
if reflect.DeepEqual(in.File, &FileDiscovery{}) {
232+
in.File = nil
233+
}
234+
}
235+
if in.BootstrapToken != nil && reflect.DeepEqual(in.BootstrapToken, &BootstrapTokenDiscovery{}) {
236+
in.BootstrapToken = nil
237+
}
195238
}
196239

197240
func spokeKubeadmConfigStatus(in *KubeadmConfigStatus, c randfill.Continue) {

0 commit comments

Comments
 (0)