Skip to content

Commit 2a14b6e

Browse files
authored
Deprecate DisableExternalCloudProvider (#112)
Signed-off-by: Andrea Mazzotti <[email protected]>
1 parent 5c72dca commit 2a14b6e

14 files changed

+245
-80
lines changed

bootstrap/api/v1beta1/conversion.go

Lines changed: 84 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,79 +16,143 @@ package v1beta1
1616
import (
1717
"fmt"
1818

19-
"sigs.k8s.io/controller-runtime/pkg/conversion"
19+
"k8s.io/apimachinery/pkg/conversion"
20+
utilconversion "sigs.k8s.io/cluster-api/util/conversion"
21+
ctrlconversion "sigs.k8s.io/controller-runtime/pkg/conversion"
2022

21-
cabp3v1 "github.com/k3s-io/cluster-api-k3s/bootstrap/api/v1beta2"
23+
bootstrapv1beta2 "github.com/k3s-io/cluster-api-k3s/bootstrap/api/v1beta2"
2224
)
2325

2426
// ConvertTo converts the v1beta1 KThreesConfig receiver to a v1beta2 KThreesConfig.
25-
func (c *KThreesConfig) ConvertTo(dstRaw conversion.Hub) error {
26-
dst := dstRaw.(*cabp3v1.KThreesConfig)
27-
if err := autoConvert_v1beta1_KThreesConfig_To_v1beta2_KThreesConfig(c, dst, nil); err != nil {
27+
func (c *KThreesConfig) ConvertTo(dstRaw ctrlconversion.Hub) error {
28+
dst := dstRaw.(*bootstrapv1beta2.KThreesConfig)
29+
if err := Convert_v1beta1_KThreesConfig_To_v1beta2_KThreesConfig(c, dst, nil); err != nil {
2830
return fmt.Errorf("converting KThreesConfig v1beta1 to v1beta2: %w", err)
2931
}
32+
33+
restored := &bootstrapv1beta2.KThreesConfig{}
34+
if ok, err := utilconversion.UnmarshalData(c, restored); err != nil {
35+
return fmt.Errorf("unmarshalling stored conversion data: %w", err)
36+
} else if !ok {
37+
// No stored data.
38+
return nil
39+
}
40+
41+
dst.Spec.ServerConfig.CloudProviderName = restored.Spec.ServerConfig.CloudProviderName
42+
dst.Spec.ServerConfig.DeprecatedDisableExternalCloudProvider = restored.Spec.ServerConfig.DeprecatedDisableExternalCloudProvider
43+
dst.Spec.ServerConfig.DisableCloudController = restored.Spec.ServerConfig.DisableCloudController
3044
return nil
3145
}
3246

3347
// ConvertFrom converts the v1beta1 KThreesConfig receiver from a v1beta2 KThreesConfig.
34-
func (c *KThreesConfig) ConvertFrom(srcRaw conversion.Hub) error {
35-
src := srcRaw.(*cabp3v1.KThreesConfig)
36-
if err := autoConvert_v1beta2_KThreesConfig_To_v1beta1_KThreesConfig(src, c, nil); err != nil {
48+
func (c *KThreesConfig) ConvertFrom(srcRaw ctrlconversion.Hub) error {
49+
src := srcRaw.(*bootstrapv1beta2.KThreesConfig)
50+
if err := Convert_v1beta2_KThreesConfig_To_v1beta1_KThreesConfig(src, c, nil); err != nil {
3751
return fmt.Errorf("converting KThreesConfig v1beta1 from v1beta2: %w", err)
3852
}
53+
54+
if err := utilconversion.MarshalData(src, c); err != nil {
55+
return fmt.Errorf("storing conversion data: %w", err)
56+
}
3957
return nil
4058
}
4159

4260
// ConvertTo converts the v1beta1 KThreesConfigList receiver to a v1beta2 KThreesConfigList.
43-
func (c *KThreesConfigList) ConvertTo(dstRaw conversion.Hub) error {
44-
dst := dstRaw.(*cabp3v1.KThreesConfigList)
61+
func (c *KThreesConfigList) ConvertTo(dstRaw ctrlconversion.Hub) error {
62+
dst := dstRaw.(*bootstrapv1beta2.KThreesConfigList)
4563
if err := autoConvert_v1beta1_KThreesConfigList_To_v1beta2_KThreesConfigList(c, dst, nil); err != nil {
4664
return fmt.Errorf("converting KThreesConfigList v1beta1 to v1beta2: %w", err)
4765
}
4866
return nil
4967
}
5068

5169
// ConvertFrom converts the v1beta1 KThreesConfigList receiver from a v1beta2 KThreesConfigList.
52-
func (c *KThreesConfigList) ConvertFrom(srcRaw conversion.Hub) error {
53-
src := srcRaw.(*cabp3v1.KThreesConfigList)
70+
func (c *KThreesConfigList) ConvertFrom(srcRaw ctrlconversion.Hub) error {
71+
src := srcRaw.(*bootstrapv1beta2.KThreesConfigList)
5472
if err := autoConvert_v1beta2_KThreesConfigList_To_v1beta1_KThreesConfigList(src, c, nil); err != nil {
5573
return fmt.Errorf("converting KThreesConfigList v1beta1 from v1beta2: %w", err)
5674
}
5775
return nil
5876
}
5977

6078
// ConvertTo converts the v1beta1 KThreesConfigTemplate receiver to a v1beta2 KThreesConfigTemplate.
61-
func (r *KThreesConfigTemplate) ConvertTo(dstRaw conversion.Hub) error {
62-
dst := dstRaw.(*cabp3v1.KThreesConfigTemplate)
79+
func (r *KThreesConfigTemplate) ConvertTo(dstRaw ctrlconversion.Hub) error {
80+
dst := dstRaw.(*bootstrapv1beta2.KThreesConfigTemplate)
6381
if err := autoConvert_v1beta1_KThreesConfigTemplate_To_v1beta2_KThreesConfigTemplate(r, dst, nil); err != nil {
6482
return fmt.Errorf("converting KThreesConfigTemplate v1beta1 to v1beta2: %w", err)
6583
}
84+
85+
restored := &bootstrapv1beta2.KThreesConfigTemplate{}
86+
if ok, err := utilconversion.UnmarshalData(r, restored); err != nil {
87+
return fmt.Errorf("unmarshalling stored conversion data: %w", err)
88+
} else if !ok {
89+
// No stored data.
90+
return nil
91+
}
92+
93+
dst.Spec.Template.Spec.ServerConfig.CloudProviderName = restored.Spec.Template.Spec.ServerConfig.CloudProviderName
94+
dst.Spec.Template.Spec.ServerConfig.DeprecatedDisableExternalCloudProvider = restored.Spec.Template.Spec.ServerConfig.DeprecatedDisableExternalCloudProvider
95+
dst.Spec.Template.Spec.ServerConfig.DisableCloudController = restored.Spec.Template.Spec.ServerConfig.DisableCloudController
6696
return nil
6797
}
6898

6999
// ConvertFrom converts the v1beta1 KThreesConfigTemplate receiver from a v1beta2 KThreesConfigTemplate.
70-
func (r *KThreesConfigTemplate) ConvertFrom(srcRaw conversion.Hub) error {
71-
src := srcRaw.(*cabp3v1.KThreesConfigTemplate)
100+
func (r *KThreesConfigTemplate) ConvertFrom(srcRaw ctrlconversion.Hub) error {
101+
src := srcRaw.(*bootstrapv1beta2.KThreesConfigTemplate)
72102
if err := autoConvert_v1beta2_KThreesConfigTemplate_To_v1beta1_KThreesConfigTemplate(src, r, nil); err != nil {
73103
return fmt.Errorf("converting KThreesConfigTemplate v1beta1 from v1beta2: %w", err)
74104
}
105+
106+
if err := utilconversion.MarshalData(src, r); err != nil {
107+
return fmt.Errorf("storing conversion data: %w", err)
108+
}
75109
return nil
76110
}
77111

78112
// ConvertTo converts the v1beta1 KThreesConfigTemplateList receiver to a v1beta2 KThreesConfigTemplateList.
79-
func (r *KThreesConfigTemplateList) ConvertTo(dstRaw conversion.Hub) error {
80-
dst := dstRaw.(*cabp3v1.KThreesConfigTemplateList)
113+
func (r *KThreesConfigTemplateList) ConvertTo(dstRaw ctrlconversion.Hub) error {
114+
dst := dstRaw.(*bootstrapv1beta2.KThreesConfigTemplateList)
81115
if err := autoConvert_v1beta1_KThreesConfigTemplateList_To_v1beta2_KThreesConfigTemplateList(r, dst, nil); err != nil {
82116
return fmt.Errorf("converting KThreesConfigTemplateList v1beta1 to v1beta2: %w", err)
83117
}
84118
return nil
85119
}
86120

87121
// ConvertFrom converts the v1beta1 KThreesConfigTemplateList receiver from a v1beta2 KThreesConfigTemplateList.
88-
func (r *KThreesConfigTemplateList) ConvertFrom(srcRaw conversion.Hub) error {
89-
src := srcRaw.(*cabp3v1.KThreesConfigTemplateList)
122+
func (r *KThreesConfigTemplateList) ConvertFrom(srcRaw ctrlconversion.Hub) error {
123+
src := srcRaw.(*bootstrapv1beta2.KThreesConfigTemplateList)
90124
if err := autoConvert_v1beta2_KThreesConfigTemplateList_To_v1beta1_KThreesConfigTemplateList(src, r, nil); err != nil {
91125
return fmt.Errorf("converting KThreesConfigTemplateList v1beta1 from v1beta2: %w", err)
92126
}
93127
return nil
94128
}
129+
130+
// Convert_v1beta1_KThreesServerConfig_To_v1beta2_KThreesServerConfig converts KThreesServerConfig v1beta1 to v1beta2.
131+
func Convert_v1beta1_KThreesServerConfig_To_v1beta2_KThreesServerConfig(in *KThreesServerConfig, out *bootstrapv1beta2.KThreesServerConfig, s conversion.Scope) error { //nolint: stylecheck
132+
if err := autoConvert_v1beta1_KThreesServerConfig_To_v1beta2_KThreesServerConfig(in, out, s); err != nil {
133+
return fmt.Errorf("converting KThreesServerConfig v1beta1 to v1beta2: %w", err)
134+
}
135+
136+
out.DeprecatedDisableExternalCloudProvider = in.DisableExternalCloudProvider
137+
138+
if !in.DisableExternalCloudProvider {
139+
out.CloudProviderName = "external"
140+
out.DisableCloudController = true
141+
} else {
142+
out.CloudProviderName = ""
143+
out.DisableCloudController = false
144+
}
145+
146+
return nil
147+
}
148+
149+
// Convert_v1beta2_KThreesServerConfig_To_v1beta1_KThreesServerConfig converts KThreesServerConfig v1beta2 to v1beta1.
150+
func Convert_v1beta2_KThreesServerConfig_To_v1beta1_KThreesServerConfig(in *bootstrapv1beta2.KThreesServerConfig, out *KThreesServerConfig, s conversion.Scope) error { //nolint: stylecheck
151+
if err := autoConvert_v1beta2_KThreesServerConfig_To_v1beta1_KThreesServerConfig(in, out, s); err != nil {
152+
return fmt.Errorf("converting KThreesServerConfig v1beta2 to v1beta1: %w", err)
153+
}
154+
155+
out.DisableExternalCloudProvider = in.DeprecatedDisableExternalCloudProvider
156+
157+
return nil
158+
}

bootstrap/api/v1beta1/conversion_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,24 @@ import (
2121
"k8s.io/apimachinery/pkg/runtime"
2222
utilconversion "sigs.k8s.io/cluster-api/util/conversion"
2323

24-
cabp3v1 "github.com/k3s-io/cluster-api-k3s/bootstrap/api/v1beta2"
24+
bootstrapv1beta2 "github.com/k3s-io/cluster-api-k3s/bootstrap/api/v1beta2"
2525
)
2626

2727
func TestFuzzyConversion(t *testing.T) {
2828
g := NewWithT(t)
2929
scheme := runtime.NewScheme()
3030
g.Expect(AddToScheme(scheme)).To(Succeed())
31-
g.Expect(cabp3v1.AddToScheme(scheme)).To(Succeed())
31+
g.Expect(bootstrapv1beta2.AddToScheme(scheme)).To(Succeed())
3232

3333
t.Run("for KThreesConfig", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{
3434
Scheme: scheme,
35-
Hub: &cabp3v1.KThreesConfig{},
35+
Hub: &bootstrapv1beta2.KThreesConfig{},
3636
Spoke: &KThreesConfig{},
3737
FuzzerFuncs: []fuzzer.FuzzerFuncs{},
3838
}))
3939
t.Run("for KThreesConfigTemplate", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{
4040
Scheme: scheme,
41-
Hub: &cabp3v1.KThreesConfigTemplate{},
41+
Hub: &bootstrapv1beta2.KThreesConfigTemplate{},
4242
Spoke: &KThreesConfigTemplate{},
4343
FuzzerFuncs: []fuzzer.FuzzerFuncs{},
4444
}))

bootstrap/api/v1beta1/zz_generated.conversion.go

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

bootstrap/api/v1beta2/kthreesconfig_types.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,19 @@ type KThreesServerConfig struct {
109109
// +optional
110110
DisableComponents []string `json:"disableComponents,omitempty"`
111111

112-
// DisableExternalCloudProvider suppresses the 'cloud-provider=external' kubelet argument. (default: false)
112+
// DeprecatedDisableExternalCloudProvider suppresses the 'cloud-provider=external' kubelet argument. (default: false)
113113
// +optional
114-
DisableExternalCloudProvider bool `json:"disableExternalCloudProvider,omitempty"`
114+
DeprecatedDisableExternalCloudProvider bool `json:"disableExternalCloudProvider,omitempty"`
115+
116+
// DisableCloudController disables k3s default cloud controller manager. (default: true)
117+
// +optional
118+
// +kubebuilder:default=true
119+
DisableCloudController bool `json:"disableCloudController,omitempty"`
120+
121+
// CloudProviderName defines the --cloud-provider= kubelet extra arg. (default: "external")
122+
// +optional
123+
// +kubebuilder:default=external
124+
CloudProviderName string `json:"cloudProviderName,omitempty"`
115125
}
116126

117127
type KThreesAgentConfig struct {

bootstrap/config/crd/bases/bootstrap.cluster.x-k8s.io_kthreesconfigs.yaml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,11 @@ spec:
441441
bindAddress:
442442
description: 'BindAddress k3s bind address (default: 0.0.0.0)'
443443
type: string
444+
cloudProviderName:
445+
default: external
446+
description: 'CloudProviderName defines the --cloud-provider=
447+
kubelet extra arg. (default: "external")'
448+
type: string
444449
clusterCidr:
445450
description: 'ClusterCidr Network CIDR to use for pod IPs (default:
446451
"10.42.0.0/16")'
@@ -452,15 +457,21 @@ spec:
452457
clusterDomain:
453458
description: 'ClusterDomain Cluster Domain (default: "cluster.local")'
454459
type: string
460+
disableCloudController:
461+
default: true
462+
description: 'DisableCloudController disables k3s default cloud
463+
controller manager. (default: true)'
464+
type: boolean
455465
disableComponents:
456466
description: DisableComponents specifies extra commands to run
457467
before k3s setup runs
458468
items:
459469
type: string
460470
type: array
461471
disableExternalCloudProvider:
462-
description: 'DisableExternalCloudProvider suppresses the ''cloud-provider=external''
463-
kubelet argument. (default: false)'
472+
description: 'DeprecatedDisableExternalCloudProvider suppresses
473+
the ''cloud-provider=external'' kubelet argument. (default:
474+
false)'
464475
type: boolean
465476
httpsListenPort:
466477
description: 'HTTPSListenPort HTTPS listen port (default: 6443)'

0 commit comments

Comments
 (0)