Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 20 additions & 4 deletions api/bootstrap/kubeadm/v1beta1/conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ func (src *KubeadmConfigSpec) ConvertTo(dst *bootstrapv1.KubeadmConfigSpec) {
if dst.InitConfiguration.Timeouts == nil {
dst.InitConfiguration.Timeouts = &bootstrapv1.Timeouts{}
}
dst.InitConfiguration.Timeouts.ControlPlaneComponentHealthCheckSeconds = bootstrapv1.ConvertToSeconds(src.ClusterConfiguration.APIServer.TimeoutForControlPlane)
dst.InitConfiguration.Timeouts.ControlPlaneComponentHealthCheckSeconds = clusterv1.ConvertToSeconds(src.ClusterConfiguration.APIServer.TimeoutForControlPlane)
initControlPlaneComponentHealthCheckSeconds = dst.InitConfiguration.Timeouts.ControlPlaneComponentHealthCheckSeconds
}
if (src.JoinConfiguration != nil && src.JoinConfiguration.Discovery.Timeout != nil) || initControlPlaneComponentHealthCheckSeconds != nil {
Expand All @@ -87,7 +87,7 @@ func (src *KubeadmConfigSpec) ConvertTo(dst *bootstrapv1.KubeadmConfigSpec) {
}
dst.JoinConfiguration.Timeouts.ControlPlaneComponentHealthCheckSeconds = initControlPlaneComponentHealthCheckSeconds
if src.JoinConfiguration != nil && src.JoinConfiguration.Discovery.Timeout != nil {
dst.JoinConfiguration.Timeouts.TLSBootstrapSeconds = bootstrapv1.ConvertToSeconds(src.JoinConfiguration.Discovery.Timeout)
dst.JoinConfiguration.Timeouts.TLSBootstrapSeconds = clusterv1.ConvertToSeconds(src.JoinConfiguration.Discovery.Timeout)
}
}

Expand Down Expand Up @@ -115,7 +115,7 @@ func (dst *KubeadmConfigSpec) ConvertFrom(src *bootstrapv1.KubeadmConfigSpec) {
if dst.ClusterConfiguration == nil {
dst.ClusterConfiguration = &ClusterConfiguration{}
}
dst.ClusterConfiguration.APIServer.TimeoutForControlPlane = bootstrapv1.ConvertFromSeconds(src.InitConfiguration.Timeouts.ControlPlaneComponentHealthCheckSeconds)
dst.ClusterConfiguration.APIServer.TimeoutForControlPlane = clusterv1.ConvertFromSeconds(src.InitConfiguration.Timeouts.ControlPlaneComponentHealthCheckSeconds)
}
if reflect.DeepEqual(dst.InitConfiguration, &InitConfiguration{}) {
dst.InitConfiguration = nil
Expand All @@ -124,7 +124,7 @@ func (dst *KubeadmConfigSpec) ConvertFrom(src *bootstrapv1.KubeadmConfigSpec) {
if dst.JoinConfiguration == nil {
dst.JoinConfiguration = &JoinConfiguration{}
}
dst.JoinConfiguration.Discovery.Timeout = bootstrapv1.ConvertFromSeconds(src.JoinConfiguration.Timeouts.TLSBootstrapSeconds)
dst.JoinConfiguration.Discovery.Timeout = clusterv1.ConvertFromSeconds(src.JoinConfiguration.Timeouts.TLSBootstrapSeconds)
}
if reflect.DeepEqual(dst.JoinConfiguration, &JoinConfiguration{}) {
dst.JoinConfiguration = nil
Expand Down Expand Up @@ -225,6 +225,14 @@ func Convert_v1beta2_NodeRegistrationOptions_To_v1beta1_NodeRegistrationOptions(
return autoConvert_v1beta2_NodeRegistrationOptions_To_v1beta1_NodeRegistrationOptions(in, out, s)
}

func Convert_v1beta2_BootstrapToken_To_v1beta1_BootstrapToken(in *bootstrapv1.BootstrapToken, out *BootstrapToken, s apimachineryconversion.Scope) error {
if err := autoConvert_v1beta2_BootstrapToken_To_v1beta1_BootstrapToken(in, out, s); err != nil {
return err
}
out.TTL = clusterv1.ConvertFromSeconds(in.TTLSeconds)
return nil
}

func Convert_v1beta1_APIServer_To_v1beta2_APIServer(in *APIServer, out *bootstrapv1.APIServer, s apimachineryconversion.Scope) error {
// TimeoutForControlPlane has been removed in v1beta2
return autoConvert_v1beta1_APIServer_To_v1beta2_APIServer(in, out, s)
Expand Down Expand Up @@ -296,6 +304,14 @@ func Convert_v1beta1_KubeadmConfigStatus_To_v1beta2_KubeadmConfigStatus(in *Kube
return nil
}

func Convert_v1beta1_BootstrapToken_To_v1beta2_BootstrapToken(in *BootstrapToken, out *bootstrapv1.BootstrapToken, s apimachineryconversion.Scope) error {
if err := autoConvert_v1beta1_BootstrapToken_To_v1beta2_BootstrapToken(in, out, s); err != nil {
return err
}
out.TTLSeconds = clusterv1.ConvertToSeconds(in.TTL)
return nil
}

// 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)

func Convert_v1beta1_ObjectMeta_To_v1beta2_ObjectMeta(in *clusterv1beta1.ObjectMeta, out *clusterv1.ObjectMeta, s apimachineryconversion.Scope) error {
Expand Down
10 changes: 10 additions & 0 deletions api/bootstrap/kubeadm/v1beta1/conversion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ func KubeadmConfigFuzzFuncs(_ runtimeserializer.CodecFactory) []interface{} {
spokeClusterConfiguration,
hubBootstrapTokenString,
spokeBootstrapTokenString,
spokeBootstrapToken,
hubKubeadmConfigSpec,
}
}
Expand All @@ -75,6 +76,7 @@ func KubeadmConfigTemplateFuzzFuncs(_ runtimeserializer.CodecFactory) []interfac
spokeClusterConfiguration,
spokeBootstrapTokenString,
hubBootstrapTokenString,
spokeBootstrapToken,
hubKubeadmConfigSpec,
}
}
Expand Down Expand Up @@ -153,6 +155,14 @@ func spokeAPIServer(in *APIServer, c randfill.Continue) {
}
}

func spokeBootstrapToken(in *BootstrapToken, c randfill.Continue) {
c.FillNoCustom(in)

if in.TTL != nil {
in.TTL = ptr.To[metav1.Duration](metav1.Duration{Duration: time.Duration(c.Int31()) * time.Second})
}
}

func spokeDiscovery(in *Discovery, c randfill.Continue) {
c.FillNoCustom(in)

Expand Down
58 changes: 34 additions & 24 deletions api/bootstrap/kubeadm/v1beta1/zz_generated.conversion.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

29 changes: 0 additions & 29 deletions api/bootstrap/kubeadm/v1beta2/conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,7 @@ limitations under the License.
package v1beta2

import (
"math"
"sort"
"time"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/utils/ptr"
)

func (*KubeadmConfig) Hub() {}
Expand Down Expand Up @@ -65,27 +60,3 @@ func ConvertFromArgs(in []Arg) map[string]string {
}
return args
}

// ConvertToSeconds takes *metav1.Duration and returns a *int32.
// Durations longer than MaxInt32 are capped.
// NOTE: this is a util function intended only for usage in API conversions.
func ConvertToSeconds(in *metav1.Duration) *int32 {
if in == nil {
return nil
}
seconds := math.Trunc(in.Seconds())
if seconds > math.MaxInt32 {
return ptr.To[int32](math.MaxInt32)
}
return ptr.To(int32(seconds))
}

// ConvertFromSeconds takes *int32 and returns a *metav1.Duration.
// Durations longer than MaxInt32 are capped.
// NOTE: this is a util function intended only for usage in API conversions.
func ConvertFromSeconds(in *int32) *metav1.Duration {
if in == nil {
return nil
}
return ptr.To(metav1.Duration{Duration: time.Duration(*in) * time.Second})
}
20 changes: 0 additions & 20 deletions api/bootstrap/kubeadm/v1beta2/conversion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,9 @@ limitations under the License.
package v1beta2

import (
"math"
"testing"
"time"

. "github.com/onsi/gomega"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/utils/ptr"
)

func TestConvertArgs(t *testing.T) {
Expand Down Expand Up @@ -57,19 +53,3 @@ func TestConvertArgs(t *testing.T) {
},
))
}

func TestConvertSeconds(t *testing.T) {
g := NewWithT(t)

seconds := ptr.To[int32](100)
duration := ConvertFromSeconds(seconds)
g.Expect(ConvertToSeconds(duration)).To(Equal(seconds))

seconds = nil
duration = ConvertFromSeconds(seconds)
g.Expect(ConvertToSeconds(duration)).To(Equal(seconds))

// Durations longer than MaxInt32 are capped.
duration = ptr.To(metav1.Duration{Duration: (math.MaxInt32 + 1) * time.Second})
g.Expect(ConvertToSeconds(duration)).To(Equal(ptr.To[int32](math.MaxInt32)))
}
9 changes: 5 additions & 4 deletions api/bootstrap/kubeadm/v1beta2/kubeadm_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -377,12 +377,13 @@ type BootstrapToken struct {
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=512
Description string `json:"description,omitempty"`
// ttl defines the time to live for this token. Defaults to 24h.
// Expires and TTL are mutually exclusive.
// ttlSeconds defines the time to live for this token. Defaults to 24h.
// Expires and ttlSeconds are mutually exclusive.
// +optional
TTL *metav1.Duration `json:"ttl,omitempty"`
// +kubebuilder:validation:Minimum=0
TTLSeconds *int32 `json:"ttlSeconds,omitempty"`
// expires specifies the timestamp when this token expires. Defaults to being set
// dynamically at runtime based on the TTL. Expires and TTL are mutually exclusive.
// dynamically at runtime based on the ttlSeconds. Expires and ttlSeconds are mutually exclusive.
// +optional
Expires *metav1.Time `json:"expires,omitempty"`
// usages describes the ways in which this token can be used. Can by default be used
Expand Down
6 changes: 3 additions & 3 deletions api/bootstrap/kubeadm/v1beta2/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

58 changes: 58 additions & 0 deletions api/controlplane/kubeadm/v1beta1/conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package v1beta1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
apimachineryconversion "k8s.io/apimachinery/pkg/conversion"
"k8s.io/utils/ptr"
"sigs.k8s.io/controller-runtime/pkg/conversion"

bootstrapv1beta1 "sigs.k8s.io/cluster-api/api/bootstrap/kubeadm/v1beta1"
Expand Down Expand Up @@ -187,6 +188,63 @@ func Convert_v1beta1_KubeadmControlPlaneStatus_To_v1beta2_KubeadmControlPlaneSta
return nil
}

func Convert_v1beta1_KubeadmControlPlaneMachineTemplate_To_v1beta2_KubeadmControlPlaneMachineTemplate(in *KubeadmControlPlaneMachineTemplate, out *controlplanev1.KubeadmControlPlaneMachineTemplate, s apimachineryconversion.Scope) error {
if err := autoConvert_v1beta1_KubeadmControlPlaneMachineTemplate_To_v1beta2_KubeadmControlPlaneMachineTemplate(in, out, s); err != nil {
return err
}
out.NodeDrainTimeoutSeconds = clusterv1.ConvertToSeconds(in.NodeDrainTimeout)
out.NodeVolumeDetachTimeoutSeconds = clusterv1.ConvertToSeconds(in.NodeVolumeDetachTimeout)
out.NodeDeletionTimeoutSeconds = clusterv1.ConvertToSeconds(in.NodeDeletionTimeout)
return nil
}
func Convert_v1beta2_KubeadmControlPlaneMachineTemplate_To_v1beta1_KubeadmControlPlaneMachineTemplate(in *controlplanev1.KubeadmControlPlaneMachineTemplate, out *KubeadmControlPlaneMachineTemplate, s apimachineryconversion.Scope) error {
if err := autoConvert_v1beta2_KubeadmControlPlaneMachineTemplate_To_v1beta1_KubeadmControlPlaneMachineTemplate(in, out, s); err != nil {
return err
}
out.NodeDrainTimeout = clusterv1.ConvertFromSeconds(in.NodeDrainTimeoutSeconds)
out.NodeVolumeDetachTimeout = clusterv1.ConvertFromSeconds(in.NodeVolumeDetachTimeoutSeconds)
out.NodeDeletionTimeout = clusterv1.ConvertFromSeconds(in.NodeDeletionTimeoutSeconds)
return nil
}

func Convert_v1beta1_KubeadmControlPlaneTemplateMachineTemplate_To_v1beta2_KubeadmControlPlaneTemplateMachineTemplate(in *KubeadmControlPlaneTemplateMachineTemplate, out *controlplanev1.KubeadmControlPlaneTemplateMachineTemplate, s apimachineryconversion.Scope) error {
if err := autoConvert_v1beta1_KubeadmControlPlaneTemplateMachineTemplate_To_v1beta2_KubeadmControlPlaneTemplateMachineTemplate(in, out, s); err != nil {
return err
}
out.NodeDrainTimeoutSeconds = clusterv1.ConvertToSeconds(in.NodeDrainTimeout)
out.NodeVolumeDetachTimeoutSeconds = clusterv1.ConvertToSeconds(in.NodeVolumeDetachTimeout)
out.NodeDeletionTimeoutSeconds = clusterv1.ConvertToSeconds(in.NodeDeletionTimeout)
return nil
}

func Convert_v1beta2_KubeadmControlPlaneTemplateMachineTemplate_To_v1beta1_KubeadmControlPlaneTemplateMachineTemplate(in *controlplanev1.KubeadmControlPlaneTemplateMachineTemplate, out *KubeadmControlPlaneTemplateMachineTemplate, s apimachineryconversion.Scope) error {
if err := autoConvert_v1beta2_KubeadmControlPlaneTemplateMachineTemplate_To_v1beta1_KubeadmControlPlaneTemplateMachineTemplate(in, out, s); err != nil {
return err
}
out.NodeDrainTimeout = clusterv1.ConvertFromSeconds(in.NodeDrainTimeoutSeconds)
out.NodeVolumeDetachTimeout = clusterv1.ConvertFromSeconds(in.NodeVolumeDetachTimeoutSeconds)
out.NodeDeletionTimeout = clusterv1.ConvertFromSeconds(in.NodeDeletionTimeoutSeconds)
return nil
}

func Convert_v1beta1_RemediationStrategy_To_v1beta2_RemediationStrategy(in *RemediationStrategy, out *controlplanev1.RemediationStrategy, s apimachineryconversion.Scope) error {
if err := autoConvert_v1beta1_RemediationStrategy_To_v1beta2_RemediationStrategy(in, out, s); err != nil {
return err
}
out.MinHealthyPeriodSeconds = clusterv1.ConvertToSeconds(in.MinHealthyPeriod)
out.RetryPeriodSeconds = ptr.Deref(clusterv1.ConvertToSeconds(&in.RetryPeriod), 0)
return nil
}

func Convert_v1beta2_RemediationStrategy_To_v1beta1_RemediationStrategy(in *controlplanev1.RemediationStrategy, out *RemediationStrategy, s apimachineryconversion.Scope) error {
if err := autoConvert_v1beta2_RemediationStrategy_To_v1beta1_RemediationStrategy(in, out, s); err != nil {
return err
}
out.MinHealthyPeriod = clusterv1.ConvertFromSeconds(in.MinHealthyPeriodSeconds)
out.RetryPeriod = ptr.Deref(clusterv1.ConvertFromSeconds(&in.RetryPeriodSeconds), metav1.Duration{})
return nil
}

// 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)

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