Skip to content

Commit 8c75d2d

Browse files
makhovapedriza
authored andcommitted
v1beta2 (#1339)
* v1beta2. wip Signed-off-by: Alexey Makhov <amakhov@mirantis.com> Signed-off-by: makhov <amakhov@mirantis.com> * v1beta2. controlplane api. wip Signed-off-by: Alexey Makhov <amakhov@mirantis.com> Signed-off-by: makhov <amakhov@mirantis.com> * v1beta2. controlplane api. wip Signed-off-by: Alexey Makhov <amakhov@mirantis.com> Signed-off-by: makhov <amakhov@mirantis.com> * v1beta2. linter fixes Signed-off-by: Alexey Makhov <amakhov@mirantis.com> Signed-off-by: makhov <amakhov@mirantis.com> * v1beta2 contracts Signed-off-by: Alexey Makhov <amakhov@mirantis.com> Signed-off-by: makhov <amakhov@mirantis.com> * v1beta2 contracts. printcolumns Signed-off-by: Alexey Makhov <amakhov@mirantis.com> Signed-off-by: makhov <amakhov@mirantis.com> * v1beta2 contracts. review fixes Signed-off-by: Alexey Makhov <amakhov@mirantis.com> Signed-off-by: makhov <amakhov@mirantis.com> * v1beta2 contracts. pointers everywhere Signed-off-by: Alexey Makhov <amakhov@mirantis.com> Signed-off-by: makhov <amakhov@mirantis.com> --------- Signed-off-by: Alexey Makhov <amakhov@mirantis.com> Signed-off-by: makhov <amakhov@mirantis.com>
1 parent e0d43a4 commit 8c75d2d

90 files changed

Lines changed: 30585 additions & 972 deletions

File tree

Some content is hidden

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

Makefile

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,35 +66,35 @@ help: ## Display this help.
6666
.PHONY: manifests-bootstrap manifests-controlplane manifests-infrastructure manifests-standalone
6767
manifests-bootstrap: $(CONTROLLER_GEN) ## Generate CRDs for bootstrap.cluster.x-k8s.io
6868
$(CONTROLLER_GEN) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true webhook \
69-
paths="./api/bootstrap/v1beta1/..." \
69+
paths="./api/bootstrap/..." \
7070
paths=./internal/controller/bootstrap/... \
7171
output:crd:artifacts:config=config/clusterapi/bootstrap/crd/bases \
7272
output:rbac:dir=config/clusterapi/bootstrap/rbac \
7373
output:webhook:dir=config/clusterapi/bootstrap/webhook
7474

7575
manifests-controlplane: $(CONTROLLER_GEN) ## Generate CRDs for controlplane.cluster.x-k8s.io.
7676
$(CONTROLLER_GEN) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true webhook \
77-
paths="./api/controlplane/v1beta1/..." \
77+
paths="./api/controlplane/..." \
7878
paths=./internal/controller/controlplane/... \
7979
output:crd:artifacts:config=config/clusterapi/controlplane/crd/bases
8080
$(CONTROLLER_GEN) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true webhook \
81-
paths="./api/controlplane/v1beta1/..." \
82-
paths="./api/k0smotron.io/v1beta1/..." \
81+
paths="./api/controlplane/..." \
82+
paths="./api/k0smotron.io/..." \
8383
paths=./internal/controller/controlplane/... \
8484
paths=./internal/controller/k0smotron.io/... \
8585
output:rbac:dir=config/clusterapi/controlplane/rbac \
8686
output:webhook:dir=config/clusterapi/controlplane/webhook
8787

8888
manifests-infrastructure: $(CONTROLLER_GEN) ## Generate CRDs for infrastructure.cluster.x-k8s.io
8989
$(CONTROLLER_GEN) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true \
90-
paths="./api/infrastructure/v1beta1/..." \
90+
paths="./api/infrastructure/..." \
9191
paths=./internal/controller/infrastructure/... \
9292
output:crd:artifacts:config=config/clusterapi/infrastructure/crd/bases \
9393
output:rbac:dir=config/clusterapi/infrastructure/rbac
9494

9595
manifests-standalone: $(CONTROLLER_GEN) ## Generate CRDs for k0smotron.io standalone
9696
$(CONTROLLER_GEN) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true webhook \
97-
paths="./api/k0smotron.io/v1beta1/..." \
97+
paths="./api/k0smotron.io/..." \
9898
paths=./internal/controller/k0smotron.io/... \
9999
output:crd:artifacts:config=config/standalone/crd/bases \
100100
output:rbac:dir=config/standalone/rbac \
@@ -106,13 +106,13 @@ manifests-capi-integration: manifests manifests-capi-integration-without-crd
106106
.PHONY: manifests-capi-integration-without-crd
107107
manifests-capi-integration-without-crd: $(CONTROLLER_GEN) # Generate RBAC and webhook manifests for all controllers except CRDs in order to reuse them from each config/clusterapi/{provider}
108108
$(CONTROLLER_GEN) rbac:roleName=manager-role webhook \
109-
paths="./api/bootstrap/v1beta1/..." \
109+
paths="./api/bootstrap/..." \
110110
paths=./internal/controller/bootstrap/... \
111-
paths="./api/controlplane/v1beta1/..." \
112-
paths="./api/k0smotron.io/v1beta1/..." \
111+
paths="./api/controlplane/..." \
112+
paths="./api/k0smotron.io/..." \
113113
paths=./internal/controller/controlplane/... \
114114
paths=./internal/controller/k0smotron.io/... \
115-
paths="./api/infrastructure/v1beta1/..." \
115+
paths="./api/infrastructure/..." \
116116
paths=./internal/controller/infrastructure/... \
117117
output:rbac:dir=config/clusterapi/all/rbac \
118118
output:webhook:dir=config/clusterapi/all/webhook
@@ -123,7 +123,9 @@ manifests: manifests-bootstrap manifests-controlplane manifests-infrastructure m
123123
### generate
124124
generate_targets += api/k0smotron.io/v1beta1/zz_generated.deepcopy.go
125125
generate_targets += api/bootstrap/v1beta1/zz_generated.deepcopy.go
126+
generate_targets += api/bootstrap/v1beta2/zz_generated.deepcopy.go
126127
generate_targets += api/controlplane/v1beta1/zz_generated.deepcopy.go
128+
generate_targets += api/controlplane/v1beta2/zz_generated.deepcopy.go
127129
generate_targets += api/infrastructure/v1beta1/zz_generated.deepcopy.go
128130
.PHONY: $(generate_targets)
129131
$(generate_targets): $(CONTROLLER_GEN)
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
package v1beta1
2+
3+
import (
4+
"github.com/k0sproject/k0smotron/api/bootstrap/v1beta2"
5+
"github.com/k0sproject/k0smotron/internal/provisioner"
6+
"k8s.io/utils/ptr"
7+
"sigs.k8s.io/controller-runtime/pkg/conversion"
8+
)
9+
10+
var _ conversion.Convertible = &K0sControllerConfig{}
11+
12+
// ConvertTo converts this version (v1beta1) to the hub version (v1beta2).
13+
func (c *K0sControllerConfig) ConvertTo(dstRaw conversion.Hub) error {
14+
dst := dstRaw.(*v1beta2.K0sControllerConfig)
15+
dst.ObjectMeta = *c.ObjectMeta.DeepCopy()
16+
17+
dst.Spec = k0sControllerConfigV1beta1ToV1beta2Spec(c.Spec)
18+
dst.Status = v1beta2.K0sControllerConfigStatus{
19+
DataSecretName: c.Status.DataSecretName,
20+
Conditions: c.Status.Conditions,
21+
Initialization: v1beta2.StatusInitialization{
22+
DataSecretCreated: ptr.To(c.Status.Ready),
23+
},
24+
}
25+
26+
return nil
27+
}
28+
29+
func k0sControllerConfigV1beta1ToV1beta2Spec(spec K0sControllerConfigSpec) v1beta2.K0sControllerConfigSpec {
30+
res := v1beta2.K0sControllerConfigSpec{
31+
Version: spec.Version,
32+
}
33+
if spec.K0sConfigSpec != nil {
34+
res.K0sConfigSpec = ConvertK0sConfigSpecV1beta1ToV1beta2(spec.K0sConfigSpec)
35+
}
36+
return res
37+
}
38+
39+
// ConvertK0sConfigSpecV1beta1ToV1beta2 converts K0sConfigSpec from v1beta1 to v1beta2, handling the changes in the provisioner field.
40+
func ConvertK0sConfigSpecV1beta1ToV1beta2(spec *K0sConfigSpec) *v1beta2.K0sConfigSpec {
41+
if spec == nil {
42+
return nil
43+
}
44+
res := &v1beta2.K0sConfigSpec{
45+
Provisioner: v1beta2.ProvisionerSpec{
46+
// Default to CloudInit, will be overridden below if Ignition is set
47+
Type: provisioner.CloudInitProvisioningFormat,
48+
},
49+
K0sInstallDir: spec.K0sInstallDir,
50+
K0s: spec.K0s,
51+
UseSystemHostname: spec.UseSystemHostname,
52+
Files: spec.Files,
53+
Args: spec.Args,
54+
PreK0sCommands: spec.PreStartCommands,
55+
PostK0sCommands: spec.PostStartCommands,
56+
PreInstalledK0s: spec.PreInstalledK0s,
57+
DownloadURL: spec.DownloadURL,
58+
Tunneling: spec.Tunneling,
59+
WorkingDir: spec.WorkingDir,
60+
}
61+
if spec.Ignition != nil {
62+
res.Provisioner = v1beta2.ProvisionerSpec{
63+
Type: provisioner.IgnitionProvisioningFormat,
64+
Ignition: spec.Ignition,
65+
}
66+
}
67+
if spec.CustomUserDataRef != nil {
68+
res.Provisioner.CustomUserDataRef = spec.CustomUserDataRef
69+
}
70+
return res
71+
}
72+
73+
// ConvertFrom converts from the hub version (v1beta2) to this version (v1beta1).
74+
func (c *K0sControllerConfig) ConvertFrom(srcRaw conversion.Hub) error {
75+
src := srcRaw.(*v1beta2.K0sControllerConfig)
76+
c.ObjectMeta = src.ObjectMeta
77+
78+
c.Spec = k0sControllerConfigSpecV1beta2ToV1beta1(src.Spec)
79+
c.Status = K0sControllerConfigStatus{
80+
Ready: false,
81+
DataSecretName: src.Status.DataSecretName,
82+
Conditions: src.Status.Conditions,
83+
}
84+
if src.Status.Initialization.DataSecretCreated != nil {
85+
c.Status.Ready = *src.Status.Initialization.DataSecretCreated
86+
}
87+
88+
return nil
89+
}
90+
91+
func k0sControllerConfigSpecV1beta2ToV1beta1(spec v1beta2.K0sControllerConfigSpec) K0sControllerConfigSpec {
92+
res := K0sControllerConfigSpec{
93+
Version: spec.Version,
94+
}
95+
if spec.K0sConfigSpec != nil {
96+
res.K0sConfigSpec = ConvertK0sConfigSpecV1beta2ToV1beta1(spec.K0sConfigSpec)
97+
}
98+
return res
99+
}
100+
101+
// ConvertK0sConfigSpecV1beta2ToV1beta1 converts K0sConfigSpec from v1beta2 to v1beta1, handling the changes in the provisioner field.
102+
func ConvertK0sConfigSpecV1beta2ToV1beta1(spec *v1beta2.K0sConfigSpec) *K0sConfigSpec {
103+
if spec == nil {
104+
return nil
105+
}
106+
res := &K0sConfigSpec{
107+
K0sInstallDir: spec.K0sInstallDir,
108+
K0s: spec.K0s,
109+
UseSystemHostname: spec.UseSystemHostname,
110+
Files: spec.Files,
111+
Args: spec.Args,
112+
PreStartCommands: spec.PreK0sCommands,
113+
PostStartCommands: spec.PostK0sCommands,
114+
PreInstalledK0s: spec.PreInstalledK0s,
115+
DownloadURL: spec.DownloadURL,
116+
Tunneling: spec.Tunneling,
117+
WorkingDir: spec.WorkingDir,
118+
}
119+
if spec.Provisioner.Type == provisioner.IgnitionProvisioningFormat {
120+
res.Ignition = spec.Provisioner.Ignition
121+
}
122+
if spec.Provisioner.CustomUserDataRef != nil {
123+
res.CustomUserDataRef = spec.Provisioner.CustomUserDataRef
124+
}
125+
return res
126+
}

api/bootstrap/v1beta1/k0s_template_types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ func init() {
3030
}
3131

3232
// +kubebuilder:object:root=true
33+
// +kubebuilder:deprecatedversion
3334
// +kubebuilder:subresource:status
3435
// +kubebuilder:metadata:labels="cluster.x-k8s.io/v1beta1=v1beta1"
3536
// +kubebuilder:metadata:labels="cluster.x-k8s.io/provider=bootstrap-k0smotron"

0 commit comments

Comments
 (0)