Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deprecate DisableExternalCloudProvider #112

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
104 changes: 84 additions & 20 deletions bootstrap/api/v1beta1/conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,79 +16,143 @@ package v1beta1
import (
"fmt"

"sigs.k8s.io/controller-runtime/pkg/conversion"
"k8s.io/apimachinery/pkg/conversion"
utilconversion "sigs.k8s.io/cluster-api/util/conversion"
ctrlconversion "sigs.k8s.io/controller-runtime/pkg/conversion"

cabp3v1 "github.com/k3s-io/cluster-api-k3s/bootstrap/api/v1beta2"
bootstrapv1beta2 "github.com/k3s-io/cluster-api-k3s/bootstrap/api/v1beta2"
)

// ConvertTo converts the v1beta1 KThreesConfig receiver to a v1beta2 KThreesConfig.
func (c *KThreesConfig) ConvertTo(dstRaw conversion.Hub) error {
dst := dstRaw.(*cabp3v1.KThreesConfig)
if err := autoConvert_v1beta1_KThreesConfig_To_v1beta2_KThreesConfig(c, dst, nil); err != nil {
func (c *KThreesConfig) ConvertTo(dstRaw ctrlconversion.Hub) error {
dst := dstRaw.(*bootstrapv1beta2.KThreesConfig)
if err := Convert_v1beta1_KThreesConfig_To_v1beta2_KThreesConfig(c, dst, nil); err != nil {
return fmt.Errorf("converting KThreesConfig v1beta1 to v1beta2: %w", err)
}

restored := &bootstrapv1beta2.KThreesConfig{}
if ok, err := utilconversion.UnmarshalData(c, restored); err != nil {
mogliang marked this conversation as resolved.
Show resolved Hide resolved
return fmt.Errorf("unmarshalling stored conversion data: %w", err)
} else if !ok {
// No stored data.
return nil
}

dst.Spec.ServerConfig.CloudProviderName = restored.Spec.ServerConfig.CloudProviderName
dst.Spec.ServerConfig.DeprecatedDisableExternalCloudProvider = restored.Spec.ServerConfig.DeprecatedDisableExternalCloudProvider
mogliang marked this conversation as resolved.
Show resolved Hide resolved
dst.Spec.ServerConfig.DisableCloudController = restored.Spec.ServerConfig.DisableCloudController
return nil
}

// ConvertFrom converts the v1beta1 KThreesConfig receiver from a v1beta2 KThreesConfig.
func (c *KThreesConfig) ConvertFrom(srcRaw conversion.Hub) error {
src := srcRaw.(*cabp3v1.KThreesConfig)
if err := autoConvert_v1beta2_KThreesConfig_To_v1beta1_KThreesConfig(src, c, nil); err != nil {
func (c *KThreesConfig) ConvertFrom(srcRaw ctrlconversion.Hub) error {
src := srcRaw.(*bootstrapv1beta2.KThreesConfig)
if err := Convert_v1beta2_KThreesConfig_To_v1beta1_KThreesConfig(src, c, nil); err != nil {
return fmt.Errorf("converting KThreesConfig v1beta1 from v1beta2: %w", err)
}

if err := utilconversion.MarshalData(src, c); err != nil {
return fmt.Errorf("storing conversion data: %w", err)
}
return nil
}

// ConvertTo converts the v1beta1 KThreesConfigList receiver to a v1beta2 KThreesConfigList.
func (c *KThreesConfigList) ConvertTo(dstRaw conversion.Hub) error {
dst := dstRaw.(*cabp3v1.KThreesConfigList)
func (c *KThreesConfigList) ConvertTo(dstRaw ctrlconversion.Hub) error {
dst := dstRaw.(*bootstrapv1beta2.KThreesConfigList)
if err := autoConvert_v1beta1_KThreesConfigList_To_v1beta2_KThreesConfigList(c, dst, nil); err != nil {
return fmt.Errorf("converting KThreesConfigList v1beta1 to v1beta2: %w", err)
}
return nil
}

// ConvertFrom converts the v1beta1 KThreesConfigList receiver from a v1beta2 KThreesConfigList.
func (c *KThreesConfigList) ConvertFrom(srcRaw conversion.Hub) error {
src := srcRaw.(*cabp3v1.KThreesConfigList)
func (c *KThreesConfigList) ConvertFrom(srcRaw ctrlconversion.Hub) error {
src := srcRaw.(*bootstrapv1beta2.KThreesConfigList)
if err := autoConvert_v1beta2_KThreesConfigList_To_v1beta1_KThreesConfigList(src, c, nil); err != nil {
return fmt.Errorf("converting KThreesConfigList v1beta1 from v1beta2: %w", err)
}
return nil
}

// ConvertTo converts the v1beta1 KThreesConfigTemplate receiver to a v1beta2 KThreesConfigTemplate.
func (r *KThreesConfigTemplate) ConvertTo(dstRaw conversion.Hub) error {
dst := dstRaw.(*cabp3v1.KThreesConfigTemplate)
func (r *KThreesConfigTemplate) ConvertTo(dstRaw ctrlconversion.Hub) error {
dst := dstRaw.(*bootstrapv1beta2.KThreesConfigTemplate)
if err := autoConvert_v1beta1_KThreesConfigTemplate_To_v1beta2_KThreesConfigTemplate(r, dst, nil); err != nil {
return fmt.Errorf("converting KThreesConfigTemplate v1beta1 to v1beta2: %w", err)
}

restored := &bootstrapv1beta2.KThreesConfigTemplate{}
if ok, err := utilconversion.UnmarshalData(r, restored); err != nil {
return fmt.Errorf("unmarshalling stored conversion data: %w", err)
} else if !ok {
// No stored data.
return nil
}

dst.Spec.Template.Spec.ServerConfig.CloudProviderName = restored.Spec.Template.Spec.ServerConfig.CloudProviderName
dst.Spec.Template.Spec.ServerConfig.DeprecatedDisableExternalCloudProvider = restored.Spec.Template.Spec.ServerConfig.DeprecatedDisableExternalCloudProvider
dst.Spec.Template.Spec.ServerConfig.DisableCloudController = restored.Spec.Template.Spec.ServerConfig.DisableCloudController
return nil
}

// ConvertFrom converts the v1beta1 KThreesConfigTemplate receiver from a v1beta2 KThreesConfigTemplate.
func (r *KThreesConfigTemplate) ConvertFrom(srcRaw conversion.Hub) error {
src := srcRaw.(*cabp3v1.KThreesConfigTemplate)
func (r *KThreesConfigTemplate) ConvertFrom(srcRaw ctrlconversion.Hub) error {
src := srcRaw.(*bootstrapv1beta2.KThreesConfigTemplate)
if err := autoConvert_v1beta2_KThreesConfigTemplate_To_v1beta1_KThreesConfigTemplate(src, r, nil); err != nil {
return fmt.Errorf("converting KThreesConfigTemplate v1beta1 from v1beta2: %w", err)
}

if err := utilconversion.MarshalData(src, r); err != nil {
return fmt.Errorf("storing conversion data: %w", err)
}
return nil
}

// ConvertTo converts the v1beta1 KThreesConfigTemplateList receiver to a v1beta2 KThreesConfigTemplateList.
func (r *KThreesConfigTemplateList) ConvertTo(dstRaw conversion.Hub) error {
dst := dstRaw.(*cabp3v1.KThreesConfigTemplateList)
func (r *KThreesConfigTemplateList) ConvertTo(dstRaw ctrlconversion.Hub) error {
dst := dstRaw.(*bootstrapv1beta2.KThreesConfigTemplateList)
if err := autoConvert_v1beta1_KThreesConfigTemplateList_To_v1beta2_KThreesConfigTemplateList(r, dst, nil); err != nil {
return fmt.Errorf("converting KThreesConfigTemplateList v1beta1 to v1beta2: %w", err)
}
return nil
}

// ConvertFrom converts the v1beta1 KThreesConfigTemplateList receiver from a v1beta2 KThreesConfigTemplateList.
func (r *KThreesConfigTemplateList) ConvertFrom(srcRaw conversion.Hub) error {
src := srcRaw.(*cabp3v1.KThreesConfigTemplateList)
func (r *KThreesConfigTemplateList) ConvertFrom(srcRaw ctrlconversion.Hub) error {
src := srcRaw.(*bootstrapv1beta2.KThreesConfigTemplateList)
if err := autoConvert_v1beta2_KThreesConfigTemplateList_To_v1beta1_KThreesConfigTemplateList(src, r, nil); err != nil {
return fmt.Errorf("converting KThreesConfigTemplateList v1beta1 from v1beta2: %w", err)
}
return nil
}

// Convert_v1beta1_KThreesServerConfig_To_v1beta2_KThreesServerConfig converts KThreesServerConfig v1beta1 to v1beta2.
func Convert_v1beta1_KThreesServerConfig_To_v1beta2_KThreesServerConfig(in *KThreesServerConfig, out *bootstrapv1beta2.KThreesServerConfig, s conversion.Scope) error { //nolint: stylecheck
if err := autoConvert_v1beta1_KThreesServerConfig_To_v1beta2_KThreesServerConfig(in, out, s); err != nil {
return fmt.Errorf("converting KThreesServerConfig v1beta1 to v1beta2: %w", err)
}

out.DeprecatedDisableExternalCloudProvider = in.DisableExternalCloudProvider

if !in.DisableExternalCloudProvider {
out.CloudProviderName = "external"
out.DisableCloudController = true
} else {
out.CloudProviderName = ""
out.DisableCloudController = false
}

return nil
}

// Convert_v1beta2_KThreesServerConfig_To_v1beta1_KThreesServerConfig converts KThreesServerConfig v1beta2 to v1beta1.
func Convert_v1beta2_KThreesServerConfig_To_v1beta1_KThreesServerConfig(in *bootstrapv1beta2.KThreesServerConfig, out *KThreesServerConfig, s conversion.Scope) error { //nolint: stylecheck
if err := autoConvert_v1beta2_KThreesServerConfig_To_v1beta1_KThreesServerConfig(in, out, s); err != nil {
return fmt.Errorf("converting KThreesServerConfig v1beta2 to v1beta1: %w", err)
}

out.DisableExternalCloudProvider = in.DeprecatedDisableExternalCloudProvider

return nil
}
8 changes: 4 additions & 4 deletions bootstrap/api/v1beta1/conversion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,24 +21,24 @@ import (
"k8s.io/apimachinery/pkg/runtime"
utilconversion "sigs.k8s.io/cluster-api/util/conversion"

cabp3v1 "github.com/k3s-io/cluster-api-k3s/bootstrap/api/v1beta2"
bootstrapv1beta2 "github.com/k3s-io/cluster-api-k3s/bootstrap/api/v1beta2"
)

func TestFuzzyConversion(t *testing.T) {
g := NewWithT(t)
scheme := runtime.NewScheme()
g.Expect(AddToScheme(scheme)).To(Succeed())
g.Expect(cabp3v1.AddToScheme(scheme)).To(Succeed())
g.Expect(bootstrapv1beta2.AddToScheme(scheme)).To(Succeed())

t.Run("for KThreesConfig", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{
Scheme: scheme,
Hub: &cabp3v1.KThreesConfig{},
Hub: &bootstrapv1beta2.KThreesConfig{},
Spoke: &KThreesConfig{},
FuzzerFuncs: []fuzzer.FuzzerFuncs{},
}))
t.Run("for KThreesConfigTemplate", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{
Scheme: scheme,
Hub: &cabp3v1.KThreesConfigTemplate{},
Hub: &bootstrapv1beta2.KThreesConfigTemplate{},
Spoke: &KThreesConfigTemplate{},
FuzzerFuncs: []fuzzer.FuzzerFuncs{},
}))
Expand Down
80 changes: 56 additions & 24 deletions bootstrap/api/v1beta1/zz_generated.conversion.go

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

14 changes: 12 additions & 2 deletions bootstrap/api/v1beta2/kthreesconfig_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,19 @@ type KThreesServerConfig struct {
// +optional
DisableComponents []string `json:"disableComponents,omitempty"`

// DisableExternalCloudProvider suppresses the 'cloud-provider=external' kubelet argument. (default: false)
// DeprecatedDisableExternalCloudProvider suppresses the 'cloud-provider=external' kubelet argument. (default: false)
// +optional
DisableExternalCloudProvider bool `json:"disableExternalCloudProvider,omitempty"`
DeprecatedDisableExternalCloudProvider bool `json:"disableExternalCloudProvider,omitempty"`

// DisableCloudController disables k3s default cloud controller manager. (default: true)
// +optional
// +kubebuilder:default=true
DisableCloudController bool `json:"disableCloudController,omitempty"`

// CloudProviderName defines the --cloud-provider= kubelet extra arg. (default: "external")
// +optional
// +kubebuilder:default=external
CloudProviderName string `json:"cloudProviderName,omitempty"`
}

type KThreesAgentConfig struct {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,11 @@ spec:
bindAddress:
description: 'BindAddress k3s bind address (default: 0.0.0.0)'
type: string
cloudProviderName:
default: external
description: 'CloudProviderName defines the --cloud-provider=
kubelet extra arg. (default: "external")'
type: string
clusterCidr:
description: 'ClusterCidr Network CIDR to use for pod IPs (default:
"10.42.0.0/16")'
Expand All @@ -452,15 +457,21 @@ spec:
clusterDomain:
description: 'ClusterDomain Cluster Domain (default: "cluster.local")'
type: string
disableCloudController:
default: true
description: 'DisableCloudController disables k3s default cloud
controller manager. (default: true)'
type: boolean
disableComponents:
description: DisableComponents specifies extra commands to run
before k3s setup runs
items:
type: string
type: array
disableExternalCloudProvider:
description: 'DisableExternalCloudProvider suppresses the ''cloud-provider=external''
kubelet argument. (default: false)'
description: 'DeprecatedDisableExternalCloudProvider suppresses
the ''cloud-provider=external'' kubelet argument. (default:
false)'
type: boolean
httpsListenPort:
description: 'HTTPSListenPort HTTPS listen port (default: 6443)'
Expand Down
Loading
Loading