Skip to content

Commit 06723ac

Browse files
committed
v1beta2. controlplane api. wip
Signed-off-by: Alexey Makhov <amakhov@mirantis.com> Signed-off-by: makhov <amakhov@mirantis.com> # Conflicts: # internal/controller/bootstrap/controlplane_bootstrap_controller_test.go # internal/controller/bootstrap/worker_bootstrap_controller_test.go # internal/controller/controlplane/k0s_controlplane_controller_test.go
1 parent a649c8b commit 06723ac

File tree

46 files changed

+459
-790
lines changed

Some content is hidden

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

46 files changed

+459
-790
lines changed

api/bootstrap/v1beta1/k0s_controller_config_convert.go

Lines changed: 21 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,22 @@ import (
77
)
88

99
var _ conversion.Convertible = &K0sControllerConfig{}
10-
var _ conversion.Convertible = &K0sControllerConfigList{}
1110

1211
// ConvertTo converts this version (v1beta1) to the hub version (v1beta2).
1312
func (kccv1beta1 *K0sControllerConfig) ConvertTo(dstRaw conversion.Hub) error {
1413
dst := dstRaw.(*v1beta2.K0sControllerConfig)
15-
dst.ObjectMeta = kccv1beta1.ObjectMeta
14+
dst.ObjectMeta = *kccv1beta1.ObjectMeta.DeepCopy()
1615

1716
dst.Spec = k0sControllerConfigV1beta1ToV1beta2Spec(kccv1beta1.Spec)
17+
dst.Status = v1beta2.K0sControllerConfigStatus{
18+
Ready: kccv1beta1.Status.Ready,
19+
DataSecretName: kccv1beta1.Status.DataSecretName,
20+
Conditions: kccv1beta1.Status.Conditions,
21+
}
22+
if kccv1beta1.Status.DataSecretName != nil && *kccv1beta1.Status.DataSecretName != "" {
23+
dst.Status.Initialization.DataSecretCreated = true
24+
}
25+
1826
return nil
1927
}
2028

@@ -28,6 +36,7 @@ func k0sControllerConfigV1beta1ToV1beta2Spec(spec K0sControllerConfigSpec) v1bet
2836
return res
2937
}
3038

39+
// ConvertK0sConfigSpecV1beta1ToV1beta2 converts K0sConfigSpec from v1beta1 to v1beta2, handling the changes in the provisioner field.
3140
func ConvertK0sConfigSpecV1beta1ToV1beta2(spec *K0sConfigSpec) *v1beta2.K0sConfigSpec {
3241
if spec == nil {
3342
return nil
@@ -67,6 +76,12 @@ func (kccv1beta1 *K0sControllerConfig) ConvertFrom(srcRaw conversion.Hub) error
6776
kccv1beta1.ObjectMeta = src.ObjectMeta
6877

6978
kccv1beta1.Spec = k0sControllerConfigSpecV1beta2ToV1beta1(src.Spec)
79+
kccv1beta1.Status = K0sControllerConfigStatus{
80+
Ready: src.Status.Ready,
81+
DataSecretName: src.Status.DataSecretName,
82+
Conditions: src.Status.Conditions,
83+
}
84+
7085
return nil
7186
}
7287

@@ -80,6 +95,7 @@ func k0sControllerConfigSpecV1beta2ToV1beta1(spec v1beta2.K0sControllerConfigSpe
8095
return res
8196
}
8297

98+
// ConvertK0sConfigSpecV1beta2ToV1beta1 converts K0sConfigSpec from v1beta2 to v1beta1, handling the changes in the provisioner field.
8399
func ConvertK0sConfigSpecV1beta2ToV1beta1(spec *v1beta2.K0sConfigSpec) *K0sConfigSpec {
84100
if spec == nil {
85101
return nil
@@ -95,39 +111,13 @@ func ConvertK0sConfigSpecV1beta2ToV1beta1(spec *v1beta2.K0sConfigSpec) *K0sConfi
95111
PreInstalledK0s: spec.PreInstalledK0s,
96112
DownloadURL: spec.DownloadURL,
97113
Tunneling: spec.Tunneling,
98-
CustomUserDataRef: spec.CustomUserDataRef,
99114
WorkingDir: spec.WorkingDir,
100115
}
101116
if spec.Provisioner.Type == provisioner.IgnitionProvisioningFormat {
102117
res.Ignition = spec.Provisioner.Ignition
103118
}
104-
return res
105-
}
106-
107-
// ConvertTo converts this version (v1beta1) to the hub version (v1beta2).
108-
func (kccv1beta1 *K0sControllerConfigList) ConvertTo(dstRaw conversion.Hub) error {
109-
dst := dstRaw.(*v1beta2.K0sControllerConfigList)
110-
dst.ListMeta = kccv1beta1.ListMeta
111-
for _, item := range kccv1beta1.Items {
112-
converted := v1beta2.K0sControllerConfig{}
113-
if err := item.ConvertTo(&converted); err != nil {
114-
return err
115-
}
116-
dst.Items = append(dst.Items, converted)
117-
}
118-
return nil
119-
}
120-
121-
// ConvertFrom converts from the hub version (v1beta2) to this version (v1beta1).
122-
func (kccv1beta1 *K0sControllerConfigList) ConvertFrom(srcRaw conversion.Hub) error {
123-
src := srcRaw.(*v1beta2.K0sControllerConfigList)
124-
kccv1beta1.ListMeta = src.ListMeta
125-
for _, item := range src.Items {
126-
converted := K0sControllerConfig{}
127-
if err := converted.ConvertFrom(&item); err != nil {
128-
return err
129-
}
130-
kccv1beta1.Items = append(kccv1beta1.Items, converted)
119+
if spec.Provisioner.CustomUserDataRef != nil {
120+
res.CustomUserDataRef = spec.Provisioner.CustomUserDataRef
131121
}
132-
return nil
122+
return res
133123
}

api/bootstrap/v1beta1/k0s_worker_config_convert.go

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,21 @@ import (
77
)
88

99
var _ conversion.Convertible = &K0sWorkerConfig{}
10-
var _ conversion.Convertible = &K0sWorkerConfigList{}
1110
var _ conversion.Convertible = &K0sWorkerConfigTemplate{}
1211

1312
// ConvertTo converts this version (v1beta1) to the hub version (v1beta2).
1413
func (kwcv1beta1 *K0sWorkerConfig) ConvertTo(dstRaw conversion.Hub) error {
1514
dst := dstRaw.(*v1beta2.K0sWorkerConfig)
1615
dst.ObjectMeta = kwcv1beta1.ObjectMeta
1716
dst.Spec = k0sWorkerConfigV1beta1ToV1beta2Spec(kwcv1beta1.Spec)
17+
dst.Status = v1beta2.K0sWorkerConfigStatus{
18+
Ready: kwcv1beta1.Status.Ready,
19+
DataSecretName: kwcv1beta1.Status.DataSecretName,
20+
Conditions: kwcv1beta1.Status.Conditions,
21+
}
22+
if kwcv1beta1.Status.DataSecretName != nil && *kwcv1beta1.Status.DataSecretName != "" {
23+
dst.Status.Initialization.DataSecretCreated = true
24+
}
1825
return nil
1926
}
2027

@@ -55,6 +62,11 @@ func (kwcv1beta1 *K0sWorkerConfig) ConvertFrom(srcRaw conversion.Hub) error {
5562
kwcv1beta1.ObjectMeta = src.ObjectMeta
5663

5764
kwcv1beta1.Spec = k0sWorkerConfigV1beta2ToV1beta1Spec(src.Spec)
65+
kwcv1beta1.Status = K0sWorkerConfigStatus{
66+
Ready: src.Status.Ready,
67+
DataSecretName: src.Status.DataSecretName,
68+
Conditions: src.Status.Conditions,
69+
}
5870
return nil
5971
}
6072

@@ -79,34 +91,6 @@ func k0sWorkerConfigV1beta2ToV1beta1Spec(spec v1beta2.K0sWorkerConfigSpec) K0sWo
7991
return res
8092
}
8193

82-
// ConvertTo converts this version (v1beta1) to the hub version (v1beta2).
83-
func (kwcv1beta1 *K0sWorkerConfigList) ConvertTo(dstRaw conversion.Hub) error {
84-
dst := dstRaw.(*v1beta2.K0sWorkerConfigList)
85-
dst.ListMeta = kwcv1beta1.ListMeta
86-
for _, item := range kwcv1beta1.Items {
87-
converted := v1beta2.K0sWorkerConfig{}
88-
if err := item.ConvertTo(&converted); err != nil {
89-
return err
90-
}
91-
dst.Items = append(dst.Items, converted)
92-
}
93-
return nil
94-
}
95-
96-
// ConvertFrom converts from the hub version (v1beta2) to this version (v1beta1).
97-
func (kwcv1beta1 *K0sWorkerConfigList) ConvertFrom(srcRaw conversion.Hub) error {
98-
src := srcRaw.(*v1beta2.K0sWorkerConfigList)
99-
kwcv1beta1.ListMeta = src.ListMeta
100-
for _, item := range src.Items {
101-
converted := K0sWorkerConfig{}
102-
if err := converted.ConvertFrom(&item); err != nil {
103-
return err
104-
}
105-
kwcv1beta1.Items = append(kwcv1beta1.Items, converted)
106-
}
107-
return nil
108-
}
109-
11094
// ConvertTo converts this version (v1beta1) to the hub version (v1beta2).
11195
func (kwcv1beta1 *K0sWorkerConfigTemplate) ConvertTo(dstRaw conversion.Hub) error {
11296
dst := dstRaw.(*v1beta2.K0sWorkerConfigTemplate)

api/bootstrap/v1beta2/k0s_types.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -184,11 +184,19 @@ type K0sWorkerConfigStatus struct {
184184
// +optional
185185
DataSecretName *string `json:"dataSecretName,omitempty"`
186186

187+
// Initialization represents the initialization status of the worker node
188+
// +optional
189+
Initialization StatusInitialization `json:"initialization,omitempty"`
190+
187191
// Conditions defines current service state of the K0sWorkerConfig.
188192
// +optional
189193
Conditions []metav1.Condition `json:"conditions,omitempty"`
190194
}
191195

196+
type StatusInitialization struct {
197+
DataSecretCreated bool `json:"dataSecretCreated,omitempty"`
198+
}
199+
192200
// +kubebuilder:object:root=true
193201
// +kubebuilder:storageversion
194202
// +kubebuilder:conversion-gen=./api/bootstrap/v1beta2
@@ -212,6 +220,10 @@ type K0sControllerConfigStatus struct {
212220
// +optional
213221
DataSecretName *string `json:"dataSecretName,omitempty"`
214222

223+
// Initialization represents the initialization status of the worker node
224+
// +optional
225+
Initialization StatusInitialization `json:"initialization,omitempty"`
226+
215227
// Conditions defines current service state of the K0sControllerConfig.
216228
// +optional
217229
Conditions []metav1.Condition `json:"conditions,omitempty"`
@@ -329,12 +341,6 @@ type K0sConfigSpec struct {
329341
//+kubebuilder:validation:Optional
330342
Tunneling TunnelingSpec `json:"tunneling,omitempty"`
331343

332-
// CustomUserDataRef is a reference to a secret or a configmap that contains the custom user data.
333-
// Provided user-data will be merged with the one generated by k0smotron. Note that you may want to specify the merge type.
334-
// See: https://cloudinit.readthedocs.io/en/latest/reference/merging.html
335-
// +kubebuilder:validation:Optional
336-
CustomUserDataRef *ContentSource `json:"customUserDataRef,omitempty"`
337-
338344
// SecretMetadata specifies metadata (labels and annotations) to be propagated to the bootstrap Secret.
339345
// +kubebuilder:validation:Optional
340346
SecretMetadata *SecretMetadata `json:"secretMetadata,omitempty"`

internal/controller/bootstrap/worker_bootstrap_webhook.go renamed to api/bootstrap/v1beta2/worker_bootstrap_webhook.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,12 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package bootstrap
17+
package v1beta2
1818

1919
import (
2020
"context"
2121
"fmt"
2222

23-
"github.com/k0sproject/k0smotron/api/bootstrap/v1beta2"
24-
bootstrapv2 "github.com/k0sproject/k0smotron/api/bootstrap/v1beta2"
2523
apierrors "k8s.io/apimachinery/pkg/api/errors"
2624
"k8s.io/apimachinery/pkg/runtime"
2725
"k8s.io/apimachinery/pkg/util/validation/field"
@@ -39,7 +37,7 @@ var _ webhook.CustomValidator = &K0sWorkerConfigValidator{}
3937

4038
// ValidateCreate implements webhook.Validator so a webhook will be registered for the type.
4139
func (v *K0sWorkerConfigValidator) ValidateCreate(_ context.Context, obj runtime.Object) (admission.Warnings, error) {
42-
c, ok := obj.(*bootstrapv2.K0sWorkerConfig)
40+
c, ok := obj.(*K0sWorkerConfig)
4341
if !ok {
4442
return nil, apierrors.NewBadRequest(fmt.Sprintf("expected a K0sWorkerConfig but got a %T", obj))
4543
}
@@ -49,7 +47,7 @@ func (v *K0sWorkerConfigValidator) ValidateCreate(_ context.Context, obj runtime
4947

5048
// ValidateUpdate implements webhook.CustomValidator so a webhook will be registered for the type.
5149
func (v *K0sWorkerConfigValidator) ValidateUpdate(_ context.Context, _, newObj runtime.Object) (admission.Warnings, error) {
52-
newC, ok := newObj.(*bootstrapv2.K0sWorkerConfig)
50+
newC, ok := newObj.(*K0sWorkerConfig)
5351
if !ok {
5452
return nil, apierrors.NewBadRequest(fmt.Sprintf("expected a K0sWorkerConfig but got a %T", newObj))
5553
}
@@ -62,20 +60,20 @@ func (v *K0sWorkerConfigValidator) ValidateDelete(_ context.Context, _ runtime.O
6260
return nil, nil
6361
}
6462

65-
func (v *K0sWorkerConfigValidator) validate(c bootstrapv2.K0sWorkerConfigSpec, name string) error {
63+
func (v *K0sWorkerConfigValidator) validate(c K0sWorkerConfigSpec, name string) error {
6664
allErrs := c.Validate(field.NewPath("spec"))
6765

6866
if len(allErrs) == 0 {
6967
return nil
7068
}
7169

72-
return apierrors.NewInvalid(bootstrapv2.GroupVersion.WithKind("K0sWorkerConfig").GroupKind(), name, allErrs)
70+
return apierrors.NewInvalid(GroupVersion.WithKind("K0sWorkerConfig").GroupKind(), name, allErrs)
7371
}
7472

7573
// SetupK0sWorkerConfigWebhookWithManager registers the webhook for K0sWorkerConfig in the manager.
7674
func (v *K0sWorkerConfigValidator) SetupK0sWorkerConfigWebhookWithManager(mgr ctrl.Manager) error {
7775
return ctrl.NewWebhookManagedBy(mgr).
78-
For(&v1beta2.K0sWorkerConfig{}).
76+
For(&K0sWorkerConfig{}).
7977
WithValidator(v).
8078
Complete()
8179
}

0 commit comments

Comments
 (0)