This repository has been archived by the owner on Nov 20, 2021. It is now read-only.
/
conversion.go
117 lines (100 loc) · 5.22 KB
/
conversion.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package v1alpha1
import (
"fmt"
"strings"
"github.com/pkg/errors"
"k8s.io/apimachinery/pkg/conversion"
kubeproxyconfigv1alpha1 "k8s.io/kube-proxy/config/v1alpha1"
"github.com/criticalstack/crit/pkg/config/constants"
"github.com/criticalstack/crit/pkg/config/v1alpha2"
netutil "github.com/criticalstack/crit/pkg/util/net"
)
func Convert_v1alpha1_ControlPlaneConfiguration_To_v1alpha2_ControlPlaneConfiguration(in *ControlPlaneConfiguration, out *v1alpha2.ControlPlaneConfiguration, s conversion.Scope) error {
SetDefaults_ControlPlaneConfiguration(in)
v1alpha2.SetDefaults_ControlPlaneConfiguration(out)
switch {
case in.APIServerURL != "":
host, port, err := netutil.SplitHostPort(strings.TrimPrefix(in.APIServerURL, "https://"))
if err != nil {
return err
}
out.ControlPlaneEndpoint.Host = host
out.ControlPlaneEndpoint.Port = port
case in.ControlPlaneEndpoint != "":
out.ControlPlaneEndpoint.Host = in.ControlPlaneEndpoint
}
// the bootstrap server was originally enabled by default
if out.FeatureGates == nil {
out.FeatureGates = make(map[string]bool)
}
out.FeatureGates["BootstrapServer"] = true
out.KubeAPIServerConfiguration.HealthcheckProxyVersion = constants.DefaultHealthcheckProxyVersion
out.KubeAPIServerConfiguration.HealthcheckProxyBindPort = constants.DefaultHealthcheckProxyBindPort
switch in.NodeConfiguration.KubeProxyMode {
case "disabled":
out.KubeProxyConfiguration.Disabled = true
case "iptables", "ipvs":
out.KubeProxyConfiguration.Config.Mode = kubeproxyconfigv1alpha1.ProxyMode(in.NodeConfiguration.KubeProxyMode)
default:
return errors.Errorf("unknown KubeProxyMode: %s", in.NodeConfiguration.KubeProxyMode)
}
out.PodSubnet = in.NodeConfiguration.PodSubnet
out.ServiceSubnet = in.NodeConfiguration.ServiceSubnet
return autoConvert_v1alpha1_ControlPlaneConfiguration_To_v1alpha2_ControlPlaneConfiguration(in, out, s)
}
func Convert_v1alpha1_WorkerConfiguration_To_v1alpha2_WorkerConfiguration(in *WorkerConfiguration, out *v1alpha2.WorkerConfiguration, s conversion.Scope) error {
SetDefaults_WorkerConfiguration(in)
v1alpha2.SetDefaults_WorkerConfiguration(out)
switch {
case in.APIServerURL != "":
host, port, err := netutil.SplitHostPort(strings.TrimPrefix(in.APIServerURL, "https://"))
if err != nil {
return err
}
out.ControlPlaneEndpoint.Host = host
out.ControlPlaneEndpoint.Port = port
case in.ControlPlaneEndpoint != "":
out.ControlPlaneEndpoint.Host = in.ControlPlaneEndpoint
}
return autoConvert_v1alpha1_WorkerConfiguration_To_v1alpha2_WorkerConfiguration(in, out, s)
}
func Convert_v1alpha2_ControlPlaneConfiguration_To_v1alpha1_ControlPlaneConfiguration(in *v1alpha2.ControlPlaneConfiguration, out *ControlPlaneConfiguration, s conversion.Scope) error {
v1alpha2.SetDefaults_ControlPlaneConfiguration(in)
SetDefaults_ControlPlaneConfiguration(out)
if !in.ControlPlaneEndpoint.IsZero() {
out.APIServerURL = fmt.Sprintf("https://%s", in.ControlPlaneEndpoint)
}
out.ControlPlaneEndpoint = in.ControlPlaneEndpoint.Host
out.NodeConfiguration.KubeProxyMode = string(in.KubeProxyConfiguration.Config.Mode)
if in.KubeProxyConfiguration.Disabled {
out.NodeConfiguration.KubeProxyMode = "disabled"
}
out.NodeConfiguration.PodSubnet = in.PodSubnet
out.NodeConfiguration.ServiceSubnet = in.ServiceSubnet
return autoConvert_v1alpha2_ControlPlaneConfiguration_To_v1alpha1_ControlPlaneConfiguration(in, out, s)
}
func Convert_v1alpha2_WorkerConfiguration_To_v1alpha1_WorkerConfiguration(in *v1alpha2.WorkerConfiguration, out *WorkerConfiguration, s conversion.Scope) error {
v1alpha2.SetDefaults_WorkerConfiguration(in)
SetDefaults_WorkerConfiguration(out)
if !in.ControlPlaneEndpoint.IsZero() {
out.APIServerURL = fmt.Sprintf("https://%s", in.ControlPlaneEndpoint)
}
out.ControlPlaneEndpoint = in.ControlPlaneEndpoint.Host
return autoConvert_v1alpha2_WorkerConfiguration_To_v1alpha1_WorkerConfiguration(in, out, s)
}
func Convert_v1alpha2_CritBootstrapServerConfiguration_To_v1alpha1_CritBootstrapServerConfiguration(in *v1alpha2.CritBootstrapServerConfiguration, out *CritBootstrapServerConfiguration, s conversion.Scope) error {
// Enabled is ignored as the bootstrap server could not be disabled in
// v1alpha1
return autoConvert_v1alpha2_CritBootstrapServerConfiguration_To_v1alpha1_CritBootstrapServerConfiguration(in, out, s)
}
func Convert_v1alpha1_CritBootstrapServerConfiguration_To_v1alpha2_CritBootstrapServerConfiguration(in *CritBootstrapServerConfiguration, out *v1alpha2.CritBootstrapServerConfiguration, s conversion.Scope) error {
return autoConvert_v1alpha1_CritBootstrapServerConfiguration_To_v1alpha2_CritBootstrapServerConfiguration(in, out, s)
}
func Convert_v1alpha2_KubeAPIServerConfiguration_To_v1alpha1_KubeAPIServerConfiguration(in *v1alpha2.KubeAPIServerConfiguration, out *KubeAPIServerConfiguration, s conversion.Scope) error {
return autoConvert_v1alpha2_KubeAPIServerConfiguration_To_v1alpha1_KubeAPIServerConfiguration(in, out, s)
}
func Convert_v1alpha1_NodeConfiguration_To_v1alpha2_NodeConfiguration(in *NodeConfiguration, out *v1alpha2.NodeConfiguration, s conversion.Scope) error {
// KubeProxyMode moved to ControlPlaneConfiguration and conversion is
// handled there
return autoConvert_v1alpha1_NodeConfiguration_To_v1alpha2_NodeConfiguration(in, out, s)
}