Skip to content

Commit bfef6b0

Browse files
committed
Migrate API to use *Seconds instead of metav1.Duration fields
1 parent 45c844c commit bfef6b0

File tree

119 files changed

+3061
-1891
lines changed

Some content is hidden

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

119 files changed

+3061
-1891
lines changed

api/bootstrap/kubeadm/v1beta1/conversion.go

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func (src *KubeadmConfigSpec) ConvertTo(dst *bootstrapv1.KubeadmConfigSpec) {
7575
if dst.InitConfiguration.Timeouts == nil {
7676
dst.InitConfiguration.Timeouts = &bootstrapv1.Timeouts{}
7777
}
78-
dst.InitConfiguration.Timeouts.ControlPlaneComponentHealthCheckSeconds = bootstrapv1.ConvertToSeconds(src.ClusterConfiguration.APIServer.TimeoutForControlPlane)
78+
dst.InitConfiguration.Timeouts.ControlPlaneComponentHealthCheckSeconds = clusterv1.ConvertToSeconds(src.ClusterConfiguration.APIServer.TimeoutForControlPlane)
7979
initControlPlaneComponentHealthCheckSeconds = dst.InitConfiguration.Timeouts.ControlPlaneComponentHealthCheckSeconds
8080
}
8181
if (src.JoinConfiguration != nil && src.JoinConfiguration.Discovery.Timeout != nil) || initControlPlaneComponentHealthCheckSeconds != nil {
@@ -87,7 +87,7 @@ func (src *KubeadmConfigSpec) ConvertTo(dst *bootstrapv1.KubeadmConfigSpec) {
8787
}
8888
dst.JoinConfiguration.Timeouts.ControlPlaneComponentHealthCheckSeconds = initControlPlaneComponentHealthCheckSeconds
8989
if src.JoinConfiguration != nil && src.JoinConfiguration.Discovery.Timeout != nil {
90-
dst.JoinConfiguration.Timeouts.TLSBootstrapSeconds = bootstrapv1.ConvertToSeconds(src.JoinConfiguration.Discovery.Timeout)
90+
dst.JoinConfiguration.Timeouts.TLSBootstrapSeconds = clusterv1.ConvertToSeconds(src.JoinConfiguration.Discovery.Timeout)
9191
}
9292
}
9393

@@ -115,7 +115,7 @@ func (dst *KubeadmConfigSpec) ConvertFrom(src *bootstrapv1.KubeadmConfigSpec) {
115115
if dst.ClusterConfiguration == nil {
116116
dst.ClusterConfiguration = &ClusterConfiguration{}
117117
}
118-
dst.ClusterConfiguration.APIServer.TimeoutForControlPlane = bootstrapv1.ConvertFromSeconds(src.InitConfiguration.Timeouts.ControlPlaneComponentHealthCheckSeconds)
118+
dst.ClusterConfiguration.APIServer.TimeoutForControlPlane = clusterv1.ConvertFromSeconds(src.InitConfiguration.Timeouts.ControlPlaneComponentHealthCheckSeconds)
119119
}
120120
if reflect.DeepEqual(dst.InitConfiguration, &InitConfiguration{}) {
121121
dst.InitConfiguration = nil
@@ -124,7 +124,7 @@ func (dst *KubeadmConfigSpec) ConvertFrom(src *bootstrapv1.KubeadmConfigSpec) {
124124
if dst.JoinConfiguration == nil {
125125
dst.JoinConfiguration = &JoinConfiguration{}
126126
}
127-
dst.JoinConfiguration.Discovery.Timeout = bootstrapv1.ConvertFromSeconds(src.JoinConfiguration.Timeouts.TLSBootstrapSeconds)
127+
dst.JoinConfiguration.Discovery.Timeout = clusterv1.ConvertFromSeconds(src.JoinConfiguration.Timeouts.TLSBootstrapSeconds)
128128
}
129129
if reflect.DeepEqual(dst.JoinConfiguration, &JoinConfiguration{}) {
130130
dst.JoinConfiguration = nil
@@ -225,6 +225,14 @@ func Convert_v1beta2_NodeRegistrationOptions_To_v1beta1_NodeRegistrationOptions(
225225
return autoConvert_v1beta2_NodeRegistrationOptions_To_v1beta1_NodeRegistrationOptions(in, out, s)
226226
}
227227

228+
func Convert_v1beta2_BootstrapToken_To_v1beta1_BootstrapToken(in *bootstrapv1.BootstrapToken, out *BootstrapToken, s apimachineryconversion.Scope) error {
229+
if err := autoConvert_v1beta2_BootstrapToken_To_v1beta1_BootstrapToken(in, out, s); err != nil {
230+
return err
231+
}
232+
out.TTL = clusterv1.ConvertFromSeconds(in.TTLSeconds)
233+
return nil
234+
}
235+
228236
func Convert_v1beta1_APIServer_To_v1beta2_APIServer(in *APIServer, out *bootstrapv1.APIServer, s apimachineryconversion.Scope) error {
229237
// TimeoutForControlPlane has been removed in v1beta2
230238
return autoConvert_v1beta1_APIServer_To_v1beta2_APIServer(in, out, s)
@@ -296,6 +304,14 @@ func Convert_v1beta1_KubeadmConfigStatus_To_v1beta2_KubeadmConfigStatus(in *Kube
296304
return nil
297305
}
298306

307+
func Convert_v1beta1_BootstrapToken_To_v1beta2_BootstrapToken(in *BootstrapToken, out *bootstrapv1.BootstrapToken, s apimachineryconversion.Scope) error {
308+
if err := autoConvert_v1beta1_BootstrapToken_To_v1beta2_BootstrapToken(in, out, s); err != nil {
309+
return err
310+
}
311+
out.TTLSeconds = clusterv1.ConvertToSeconds(in.TTL)
312+
return nil
313+
}
314+
299315
// Implement local conversion func because conversion-gen is not aware of conversion func in other packages (see https://github.com/kubernetes/code-generator/issues/94)
300316

301317
func Convert_v1beta1_ObjectMeta_To_v1beta2_ObjectMeta(in *clusterv1beta1.ObjectMeta, out *clusterv1.ObjectMeta, s apimachineryconversion.Scope) error {

api/bootstrap/kubeadm/v1beta1/conversion_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ func KubeadmConfigFuzzFuncs(_ runtimeserializer.CodecFactory) []interface{} {
6363
spokeClusterConfiguration,
6464
hubBootstrapTokenString,
6565
spokeBootstrapTokenString,
66+
spokeBootstrapToken,
6667
hubKubeadmConfigSpec,
6768
}
6869
}
@@ -75,6 +76,7 @@ func KubeadmConfigTemplateFuzzFuncs(_ runtimeserializer.CodecFactory) []interfac
7576
spokeClusterConfiguration,
7677
spokeBootstrapTokenString,
7778
hubBootstrapTokenString,
79+
spokeBootstrapToken,
7880
hubKubeadmConfigSpec,
7981
}
8082
}
@@ -153,6 +155,14 @@ func spokeAPIServer(in *APIServer, c randfill.Continue) {
153155
}
154156
}
155157

158+
func spokeBootstrapToken(in *BootstrapToken, c randfill.Continue) {
159+
c.FillNoCustom(in)
160+
161+
if in.TTL != nil {
162+
in.TTL = ptr.To[metav1.Duration](metav1.Duration{Duration: time.Duration(c.Int31()) * time.Second})
163+
}
164+
}
165+
156166
func spokeDiscovery(in *Discovery, c randfill.Continue) {
157167
c.FillNoCustom(in)
158168

api/bootstrap/kubeadm/v1beta1/zz_generated.conversion.go

Lines changed: 34 additions & 24 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/bootstrap/kubeadm/v1beta2/conversion.go

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,7 @@ limitations under the License.
1717
package v1beta2
1818

1919
import (
20-
"math"
2120
"sort"
22-
"time"
23-
24-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
25-
"k8s.io/utils/ptr"
2621
)
2722

2823
func (*KubeadmConfig) Hub() {}
@@ -66,27 +61,3 @@ func ConvertFromArgs(in []Arg) map[string]string {
6661
}
6762
return args
6863
}
69-
70-
// ConvertToSeconds takes *metav1.Duration and returns a *int32.
71-
// Durations longer than MaxInt32 are capped.
72-
// NOTE: this is a util function intended only for usage in API conversions.
73-
func ConvertToSeconds(in *metav1.Duration) *int32 {
74-
if in == nil {
75-
return nil
76-
}
77-
seconds := math.Trunc(in.Seconds())
78-
if seconds > math.MaxInt32 {
79-
return ptr.To[int32](math.MaxInt32)
80-
}
81-
return ptr.To(int32(seconds))
82-
}
83-
84-
// ConvertFromSeconds takes *int32 and returns a *metav1.Duration.
85-
// Durations longer than MaxInt32 are capped.
86-
// NOTE: this is a util function intended only for usage in API conversions.
87-
func ConvertFromSeconds(in *int32) *metav1.Duration {
88-
if in == nil {
89-
return nil
90-
}
91-
return ptr.To(metav1.Duration{Duration: time.Duration(*in) * time.Second})
92-
}

api/bootstrap/kubeadm/v1beta2/conversion_test.go

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,9 @@ limitations under the License.
1717
package v1beta2
1818

1919
import (
20-
"math"
2120
"testing"
22-
"time"
2321

2422
. "github.com/onsi/gomega"
25-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26-
"k8s.io/utils/ptr"
2723
)
2824

2925
func TestConvertArgs(t *testing.T) {
@@ -57,19 +53,3 @@ func TestConvertArgs(t *testing.T) {
5753
},
5854
))
5955
}
60-
61-
func TestConvertSeconds(t *testing.T) {
62-
g := NewWithT(t)
63-
64-
seconds := ptr.To[int32](100)
65-
duration := ConvertFromSeconds(seconds)
66-
g.Expect(ConvertToSeconds(duration)).To(Equal(seconds))
67-
68-
seconds = nil
69-
duration = ConvertFromSeconds(seconds)
70-
g.Expect(ConvertToSeconds(duration)).To(Equal(seconds))
71-
72-
// Durations longer than MaxInt32 are capped.
73-
duration = ptr.To(metav1.Duration{Duration: (math.MaxInt32 + 1) * time.Second})
74-
g.Expect(ConvertToSeconds(duration)).To(Equal(ptr.To[int32](math.MaxInt32)))
75-
}

api/bootstrap/kubeadm/v1beta2/kubeadm_types.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -393,12 +393,13 @@ type BootstrapToken struct {
393393
// +kubebuilder:validation:MinLength=1
394394
// +kubebuilder:validation:MaxLength=512
395395
Description string `json:"description,omitempty"`
396-
// ttl defines the time to live for this token. Defaults to 24h.
397-
// Expires and TTL are mutually exclusive.
396+
// ttlSeconds defines the time to live for this token. Defaults to 24h.
397+
// Expires and ttlSeconds are mutually exclusive.
398398
// +optional
399-
TTL *metav1.Duration `json:"ttl,omitempty"`
399+
// +kubebuilder:validation:Minimum=0
400+
TTLSeconds *int32 `json:"ttlSeconds,omitempty"`
400401
// expires specifies the timestamp when this token expires. Defaults to being set
401-
// dynamically at runtime based on the TTL. Expires and TTL are mutually exclusive.
402+
// dynamically at runtime based on the ttlSeconds. Expires and ttlSeconds are mutually exclusive.
402403
// +optional
403404
Expires *metav1.Time `json:"expires,omitempty"`
404405
// usages describes the ways in which this token can be used. Can by default be used

api/bootstrap/kubeadm/v1beta2/zz_generated.deepcopy.go

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/controlplane/kubeadm/v1beta1/conversion.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package v1beta1
1919
import (
2020
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2121
apimachineryconversion "k8s.io/apimachinery/pkg/conversion"
22+
"k8s.io/utils/ptr"
2223
"sigs.k8s.io/controller-runtime/pkg/conversion"
2324

2425
bootstrapv1beta1 "sigs.k8s.io/cluster-api/api/bootstrap/kubeadm/v1beta1"
@@ -187,6 +188,63 @@ func Convert_v1beta1_KubeadmControlPlaneStatus_To_v1beta2_KubeadmControlPlaneSta
187188
return nil
188189
}
189190

191+
func Convert_v1beta1_KubeadmControlPlaneMachineTemplate_To_v1beta2_KubeadmControlPlaneMachineTemplate(in *KubeadmControlPlaneMachineTemplate, out *controlplanev1.KubeadmControlPlaneMachineTemplate, s apimachineryconversion.Scope) error {
192+
if err := autoConvert_v1beta1_KubeadmControlPlaneMachineTemplate_To_v1beta2_KubeadmControlPlaneMachineTemplate(in, out, s); err != nil {
193+
return err
194+
}
195+
out.NodeDrainTimeoutSeconds = clusterv1.ConvertToSeconds(in.NodeDrainTimeout)
196+
out.NodeVolumeDetachTimeoutSeconds = clusterv1.ConvertToSeconds(in.NodeVolumeDetachTimeout)
197+
out.NodeDeletionTimeoutSeconds = clusterv1.ConvertToSeconds(in.NodeDeletionTimeout)
198+
return nil
199+
}
200+
func Convert_v1beta2_KubeadmControlPlaneMachineTemplate_To_v1beta1_KubeadmControlPlaneMachineTemplate(in *controlplanev1.KubeadmControlPlaneMachineTemplate, out *KubeadmControlPlaneMachineTemplate, s apimachineryconversion.Scope) error {
201+
if err := autoConvert_v1beta2_KubeadmControlPlaneMachineTemplate_To_v1beta1_KubeadmControlPlaneMachineTemplate(in, out, s); err != nil {
202+
return err
203+
}
204+
out.NodeDrainTimeout = clusterv1.ConvertFromSeconds(in.NodeDrainTimeoutSeconds)
205+
out.NodeVolumeDetachTimeout = clusterv1.ConvertFromSeconds(in.NodeVolumeDetachTimeoutSeconds)
206+
out.NodeDeletionTimeout = clusterv1.ConvertFromSeconds(in.NodeDeletionTimeoutSeconds)
207+
return nil
208+
}
209+
210+
func Convert_v1beta1_KubeadmControlPlaneTemplateMachineTemplate_To_v1beta2_KubeadmControlPlaneTemplateMachineTemplate(in *KubeadmControlPlaneTemplateMachineTemplate, out *controlplanev1.KubeadmControlPlaneTemplateMachineTemplate, s apimachineryconversion.Scope) error {
211+
if err := autoConvert_v1beta1_KubeadmControlPlaneTemplateMachineTemplate_To_v1beta2_KubeadmControlPlaneTemplateMachineTemplate(in, out, s); err != nil {
212+
return err
213+
}
214+
out.NodeDrainTimeoutSeconds = clusterv1.ConvertToSeconds(in.NodeDrainTimeout)
215+
out.NodeVolumeDetachTimeoutSeconds = clusterv1.ConvertToSeconds(in.NodeVolumeDetachTimeout)
216+
out.NodeDeletionTimeoutSeconds = clusterv1.ConvertToSeconds(in.NodeDeletionTimeout)
217+
return nil
218+
}
219+
220+
func Convert_v1beta2_KubeadmControlPlaneTemplateMachineTemplate_To_v1beta1_KubeadmControlPlaneTemplateMachineTemplate(in *controlplanev1.KubeadmControlPlaneTemplateMachineTemplate, out *KubeadmControlPlaneTemplateMachineTemplate, s apimachineryconversion.Scope) error {
221+
if err := autoConvert_v1beta2_KubeadmControlPlaneTemplateMachineTemplate_To_v1beta1_KubeadmControlPlaneTemplateMachineTemplate(in, out, s); err != nil {
222+
return err
223+
}
224+
out.NodeDrainTimeout = clusterv1.ConvertFromSeconds(in.NodeDrainTimeoutSeconds)
225+
out.NodeVolumeDetachTimeout = clusterv1.ConvertFromSeconds(in.NodeVolumeDetachTimeoutSeconds)
226+
out.NodeDeletionTimeout = clusterv1.ConvertFromSeconds(in.NodeDeletionTimeoutSeconds)
227+
return nil
228+
}
229+
230+
func Convert_v1beta1_RemediationStrategy_To_v1beta2_RemediationStrategy(in *RemediationStrategy, out *controlplanev1.RemediationStrategy, s apimachineryconversion.Scope) error {
231+
if err := autoConvert_v1beta1_RemediationStrategy_To_v1beta2_RemediationStrategy(in, out, s); err != nil {
232+
return err
233+
}
234+
out.MinHealthyPeriodSeconds = clusterv1.ConvertToSeconds(in.MinHealthyPeriod)
235+
out.RetryPeriodSeconds = ptr.Deref(clusterv1.ConvertToSeconds(&in.RetryPeriod), 0)
236+
return nil
237+
}
238+
239+
func Convert_v1beta2_RemediationStrategy_To_v1beta1_RemediationStrategy(in *controlplanev1.RemediationStrategy, out *RemediationStrategy, s apimachineryconversion.Scope) error {
240+
if err := autoConvert_v1beta2_RemediationStrategy_To_v1beta1_RemediationStrategy(in, out, s); err != nil {
241+
return err
242+
}
243+
out.MinHealthyPeriod = clusterv1.ConvertFromSeconds(in.MinHealthyPeriodSeconds)
244+
out.RetryPeriod = ptr.Deref(clusterv1.ConvertFromSeconds(&in.RetryPeriodSeconds), metav1.Duration{})
245+
return nil
246+
}
247+
190248
// Implement local conversion func because conversion-gen is not aware of conversion func in other packages (see https://github.com/kubernetes/code-generator/issues/94)
191249

192250
func Convert_v1beta1_ObjectMeta_To_v1beta2_ObjectMeta(in *clusterv1beta1.ObjectMeta, out *clusterv1.ObjectMeta, s apimachineryconversion.Scope) error {

0 commit comments

Comments
 (0)