Skip to content

Commit 9693c59

Browse files
Add machinepool machine support (#304)
* Add support for machinepool machines and CAPI 1.5 support
1 parent 43eaa99 commit 9693c59

File tree

61 files changed

+2693
-449
lines changed

Some content is hidden

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

61 files changed

+2693
-449
lines changed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Build the manager binary
2-
FROM golang:1.19.3 as builder
2+
FROM golang:1.20.6 as builder
33

44
WORKDIR /workspace
55
# Copy the Go Modules manifests

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ $(KUSTOMIZE): ## Download kustomize locally if necessary.
378378
GOBIN=$(BIN_DIR)/ $(GO_INSTALL) sigs.k8s.io/kustomize/kustomize/v4 $(KUSTOMIZE_BIN) v4.5.2
379379

380380
$(GINKGO): ## Build ginkgo.
381-
GOBIN=$(BIN_DIR)/ $(GO_INSTALL) github.com/onsi/ginkgo/v2/ginkgo $(GINKGO_BIN) v2.9.2
381+
GOBIN=$(BIN_DIR)/ $(GO_INSTALL) github.com/onsi/ginkgo/v2/ginkgo $(GINKGO_BIN) v2.11.0
382382

383383
$(GOLANGCI_LINT): ## Build golanci-lint.
384384
GOBIN=$(BIN_DIR)/ $(GO_INSTALL) github.com/golangci/golangci-lint/cmd/golangci-lint $(GOLANGCI_LINT_BIN) v1.44.0

api/v1beta2/ocicluster_webhook.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"k8s.io/apimachinery/pkg/util/validation/field"
3030
ctrl "sigs.k8s.io/controller-runtime"
3131
"sigs.k8s.io/controller-runtime/pkg/webhook"
32+
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
3233
)
3334

3435
var clusterlogger = ctrl.Log.WithName("ocicluster-resource")
@@ -58,36 +59,36 @@ func (c *OCICluster) SetupWebhookWithManager(mgr ctrl.Manager) error {
5859
}
5960

6061
// ValidateCreate implements webhook.Validator so a webhook will be registered for the type.
61-
func (c *OCICluster) ValidateCreate() error {
62+
func (c *OCICluster) ValidateCreate() (admission.Warnings, error) {
6263
clusterlogger.Info("validate update cluster", "name", c.Name)
6364

6465
var allErrs field.ErrorList
6566

6667
allErrs = append(allErrs, c.validate(nil)...)
6768

6869
if len(allErrs) == 0 {
69-
return nil
70+
return nil, nil
7071
}
7172

72-
return apierrors.NewInvalid(c.GroupVersionKind().GroupKind(), c.Name, allErrs)
73+
return nil, apierrors.NewInvalid(c.GroupVersionKind().GroupKind(), c.Name, allErrs)
7374
}
7475

7576
// ValidateDelete implements webhook.Validator so a webhook will be registered for the type.
76-
func (c *OCICluster) ValidateDelete() error {
77+
func (c *OCICluster) ValidateDelete() (admission.Warnings, error) {
7778
clusterlogger.Info("validate delete cluster", "name", c.Name)
7879

79-
return nil
80+
return nil, nil
8081
}
8182

8283
// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type.
83-
func (c *OCICluster) ValidateUpdate(old runtime.Object) error {
84+
func (c *OCICluster) ValidateUpdate(old runtime.Object) (admission.Warnings, error) {
8485
clusterlogger.Info("validate update cluster", "name", c.Name)
8586

8687
var allErrs field.ErrorList
8788

8889
oldCluster, ok := old.(*OCICluster)
8990
if !ok {
90-
return apierrors.NewBadRequest(fmt.Sprintf("expected an OCICluster but got a %T", old))
91+
return nil, apierrors.NewBadRequest(fmt.Sprintf("expected an OCICluster but got a %T", old))
9192
}
9293

9394
if c.Spec.Region != oldCluster.Spec.Region {
@@ -105,10 +106,10 @@ func (c *OCICluster) ValidateUpdate(old runtime.Object) error {
105106
allErrs = append(allErrs, c.validate(oldCluster)...)
106107

107108
if len(allErrs) == 0 {
108-
return nil
109+
return nil, nil
109110
}
110111

111-
return apierrors.NewInvalid(c.GroupVersionKind().GroupKind(), c.Name, allErrs)
112+
return nil, apierrors.NewInvalid(c.GroupVersionKind().GroupKind(), c.Name, allErrs)
112113
}
113114

114115
func (c *OCICluster) validate(old *OCICluster) field.ErrorList {

api/v1beta2/ocicluster_webhook_test.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -439,11 +439,12 @@ func TestOCICluster_ValidateCreate(t *testing.T) {
439439
g := gomega.NewWithT(t)
440440

441441
if test.expectErr {
442-
err := test.c.ValidateCreate()
442+
_, err := test.c.ValidateCreate()
443443
g.Expect(err).NotTo(gomega.Succeed())
444444
g.Expect(strings.Contains(err.Error(), test.errorMgsShouldContain)).To(gomega.BeTrue())
445445
} else {
446-
g.Expect(test.c.ValidateCreate()).To(gomega.Succeed())
446+
_, err := test.c.ValidateCreate()
447+
g.Expect(err).To(gomega.Succeed())
447448
}
448449
})
449450
}
@@ -562,11 +563,12 @@ func TestOCICluster_ValidateUpdate(t *testing.T) {
562563
g := gomega.NewWithT(t)
563564

564565
if test.expectErr {
565-
err := test.c.ValidateUpdate(test.old)
566+
_, err := test.c.ValidateUpdate(test.old)
566567
g.Expect(err).NotTo(gomega.Succeed())
567568
g.Expect(strings.Contains(err.Error(), test.errorMgsShouldContain)).To(gomega.BeTrue())
568569
} else {
569-
g.Expect(test.c.ValidateUpdate(test.old)).To(gomega.Succeed())
570+
_, err := test.c.ValidateUpdate(test.old)
571+
g.Expect(err).To(gomega.Succeed())
570572
}
571573
})
572574
}

api/v1beta2/ocimachinetemplate_webhook.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"k8s.io/apimachinery/pkg/util/validation/field"
2525
ctrl "sigs.k8s.io/controller-runtime"
2626
"sigs.k8s.io/controller-runtime/pkg/webhook"
27+
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
2728
)
2829

2930
var (
@@ -39,40 +40,40 @@ func (m *OCIMachineTemplate) SetupWebhookWithManager(mgr ctrl.Manager) error {
3940
}
4041

4142
// ValidateCreate implements webhook.Validator so a webhook will be registered for the type.
42-
func (m *OCIMachineTemplate) ValidateCreate() error {
43+
func (m *OCIMachineTemplate) ValidateCreate() (admission.Warnings, error) {
4344
clusterlogger.Info("validate create machinetemplate", "name", m.Name)
4445

4546
var allErrs field.ErrorList
4647

4748
allErrs = append(allErrs, m.validate()...)
4849

4950
if len(allErrs) == 0 {
50-
return nil
51+
return nil, nil
5152
}
5253

53-
return apierrors.NewInvalid(m.GroupVersionKind().GroupKind(), m.Name, allErrs)
54+
return nil, apierrors.NewInvalid(m.GroupVersionKind().GroupKind(), m.Name, allErrs)
5455
}
5556

5657
// ValidateDelete implements webhook.Validator so a webhook will be registered for the type.
57-
func (m *OCIMachineTemplate) ValidateDelete() error {
58+
func (m *OCIMachineTemplate) ValidateDelete() (admission.Warnings, error) {
5859
clusterlogger.Info("validate delete machinetemplate", "name", m.Name)
5960

60-
return nil
61+
return nil, nil
6162
}
6263

6364
// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type.
64-
func (m *OCIMachineTemplate) ValidateUpdate(old runtime.Object) error {
65+
func (m *OCIMachineTemplate) ValidateUpdate(old runtime.Object) (admission.Warnings, error) {
6566
clusterlogger.Info("validate update machinetemplate", "name", m.Name)
6667

6768
var allErrs field.ErrorList
6869

6970
allErrs = append(allErrs, m.validate()...)
7071

7172
if len(allErrs) == 0 {
72-
return nil
73+
return nil, nil
7374
}
7475

75-
return apierrors.NewInvalid(m.GroupVersionKind().GroupKind(), m.Name, allErrs)
76+
return nil, apierrors.NewInvalid(m.GroupVersionKind().GroupKind(), m.Name, allErrs)
7677
}
7778

7879
func (m *OCIMachineTemplate) validate() field.ErrorList {

api/v1beta2/ocimachinetemplate_webhook_test.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,12 @@ func TestOCIMachineTemplate_ValidateCreate(t *testing.T) {
9999
g := gomega.NewWithT(t)
100100

101101
if test.expectErr {
102-
err := test.inputTemplate.ValidateCreate()
102+
_, err := test.inputTemplate.ValidateCreate()
103103
g.Expect(err).NotTo(gomega.Succeed())
104104
g.Expect(strings.Contains(err.Error(), test.errorField)).To(gomega.BeTrue())
105105
} else {
106-
g.Expect(test.inputTemplate.ValidateCreate()).To(gomega.Succeed())
106+
_, err := test.inputTemplate.ValidateCreate()
107+
g.Expect(err).To(gomega.Succeed())
107108
}
108109
})
109110
}
@@ -115,11 +116,12 @@ func TestOCIMachineTemplate_ValidateUpdate(t *testing.T) {
115116
g := gomega.NewWithT(t)
116117

117118
if test.expectErr {
118-
err := test.inputTemplate.ValidateUpdate(nil)
119+
_, err := test.inputTemplate.ValidateUpdate(nil)
119120
g.Expect(err).NotTo(gomega.Succeed())
120121
g.Expect(strings.Contains(err.Error(), test.errorField)).To(gomega.BeTrue())
121122
} else {
122-
g.Expect(test.inputTemplate.ValidateUpdate(nil)).To(gomega.Succeed())
123+
_, err := test.inputTemplate.ValidateUpdate(nil)
124+
g.Expect(err).To(gomega.Succeed())
123125
}
124126
})
125127
}

api/v1beta2/ocimanagedcluster_webhook.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"k8s.io/apimachinery/pkg/util/validation/field"
2828
ctrl "sigs.k8s.io/controller-runtime"
2929
"sigs.k8s.io/controller-runtime/pkg/webhook"
30+
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
3031
)
3132

3233
var managedclusterlogger = ctrl.Log.WithName("ocimanagedcluster-resource")
@@ -114,36 +115,36 @@ func (c *OCIManagedCluster) SetupWebhookWithManager(mgr ctrl.Manager) error {
114115
}
115116

116117
// ValidateCreate implements webhook.Validator so a webhook will be registered for the type.
117-
func (c *OCIManagedCluster) ValidateCreate() error {
118+
func (c *OCIManagedCluster) ValidateCreate() (admission.Warnings, error) {
118119
managedclusterlogger.Info("validate create cluster", "name", c.Name)
119120

120121
var allErrs field.ErrorList
121122

122123
allErrs = append(allErrs, c.validate(nil)...)
123124

124125
if len(allErrs) == 0 {
125-
return nil
126+
return nil, nil
126127
}
127128

128-
return apierrors.NewInvalid(c.GroupVersionKind().GroupKind(), c.Name, allErrs)
129+
return nil, apierrors.NewInvalid(c.GroupVersionKind().GroupKind(), c.Name, allErrs)
129130
}
130131

131132
// ValidateDelete implements webhook.Validator so a webhook will be registered for the type.
132-
func (c *OCIManagedCluster) ValidateDelete() error {
133+
func (c *OCIManagedCluster) ValidateDelete() (admission.Warnings, error) {
133134
managedclusterlogger.Info("validate delete cluster", "name", c.Name)
134135

135-
return nil
136+
return nil, nil
136137
}
137138

138139
// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type.
139-
func (c *OCIManagedCluster) ValidateUpdate(old runtime.Object) error {
140+
func (c *OCIManagedCluster) ValidateUpdate(old runtime.Object) (admission.Warnings, error) {
140141
managedclusterlogger.Info("validate update cluster", "name", c.Name)
141142

142143
var allErrs field.ErrorList
143144

144145
oldCluster, ok := old.(*OCIManagedCluster)
145146
if !ok {
146-
return apierrors.NewBadRequest(fmt.Sprintf("expected an OCIManagedCluster but got a %T", old))
147+
return nil, apierrors.NewBadRequest(fmt.Sprintf("expected an OCIManagedCluster but got a %T", old))
147148
}
148149

149150
if c.Spec.Region != oldCluster.Spec.Region {
@@ -161,10 +162,10 @@ func (c *OCIManagedCluster) ValidateUpdate(old runtime.Object) error {
161162
allErrs = append(allErrs, c.validate(oldCluster)...)
162163

163164
if len(allErrs) == 0 {
164-
return nil
165+
return nil, nil
165166
}
166167

167-
return apierrors.NewInvalid(c.GroupVersionKind().GroupKind(), c.Name, allErrs)
168+
return nil, apierrors.NewInvalid(c.GroupVersionKind().GroupKind(), c.Name, allErrs)
168169
}
169170

170171
func (c *OCIManagedCluster) validate(old *OCIManagedCluster) field.ErrorList {

api/v1beta2/ocimanagedcluster_webhook_test.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -464,11 +464,12 @@ func TestOCIManagedCluster_ValidateCreate(t *testing.T) {
464464
g := gomega.NewWithT(t)
465465

466466
if test.expectErr {
467-
err := test.c.ValidateCreate()
467+
_, err := test.c.ValidateCreate()
468468
g.Expect(err).NotTo(gomega.Succeed())
469469
g.Expect(strings.Contains(err.Error(), test.errorMgsShouldContain)).To(gomega.BeTrue())
470470
} else {
471-
g.Expect(test.c.ValidateCreate()).To(gomega.Succeed())
471+
_, err := test.c.ValidateCreate()
472+
g.Expect(err).To(gomega.Succeed())
472473
}
473474
})
474475
}
@@ -587,11 +588,12 @@ func TestOCIManagedCluster_ValidateUpdate(t *testing.T) {
587588
g := gomega.NewWithT(t)
588589

589590
if test.expectErr {
590-
err := test.c.ValidateUpdate(test.old)
591+
_, err := test.c.ValidateUpdate(test.old)
591592
g.Expect(err).NotTo(gomega.Succeed())
592593
g.Expect(strings.Contains(err.Error(), test.errorMgsShouldContain)).To(gomega.BeTrue())
593594
} else {
594-
g.Expect(test.c.ValidateUpdate(test.old)).To(gomega.Succeed())
595+
_, err := test.c.ValidateUpdate(test.old)
596+
g.Expect(err).To(gomega.Succeed())
595597
}
596598
})
597599
}

api/v1beta2/ocimanagedcontrolplane_webhook.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"k8s.io/apimachinery/pkg/util/validation/field"
2323
ctrl "sigs.k8s.io/controller-runtime"
2424
"sigs.k8s.io/controller-runtime/pkg/webhook"
25+
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
2526
)
2627

2728
var managedcplanelogger = ctrl.Log.WithName("ocimanagedcontrolplane-resource")
@@ -50,21 +51,21 @@ func (c *OCIManagedControlPlane) SetupWebhookWithManager(mgr ctrl.Manager) error
5051
Complete()
5152
}
5253

53-
func (c *OCIManagedControlPlane) ValidateCreate() error {
54+
func (c *OCIManagedControlPlane) ValidateCreate() (admission.Warnings, error) {
5455
var allErrs field.ErrorList
5556
if len(c.Name) > 31 {
5657
allErrs = append(allErrs, field.Invalid(field.NewPath("Name"), c.Name, "Name cannot be more than 31 characters"))
5758
}
5859
if len(allErrs) == 0 {
59-
return nil
60+
return nil, nil
6061
}
61-
return apierrors.NewInvalid(c.GroupVersionKind().GroupKind(), c.Name, allErrs)
62+
return nil, apierrors.NewInvalid(c.GroupVersionKind().GroupKind(), c.Name, allErrs)
6263
}
6364

64-
func (c *OCIManagedControlPlane) ValidateUpdate(old runtime.Object) error {
65-
return nil
65+
func (c *OCIManagedControlPlane) ValidateUpdate(old runtime.Object) (admission.Warnings, error) {
66+
return nil, nil
6667
}
6768

68-
func (c *OCIManagedControlPlane) ValidateDelete() error {
69-
return nil
69+
func (c *OCIManagedControlPlane) ValidateDelete() (admission.Warnings, error) {
70+
return nil, nil
7071
}

api/v1beta2/ocimanagedcontrolplane_webhook_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,12 @@ func TestOCIManagedControlPlane_ValidateCreate(t *testing.T) {
8585
g := gomega.NewWithT(t)
8686

8787
if test.expectErr {
88-
err := test.c.ValidateCreate()
88+
_, err := test.c.ValidateCreate()
8989
g.Expect(err).NotTo(gomega.Succeed())
9090
g.Expect(strings.Contains(err.Error(), test.errorMgsShouldContain)).To(gomega.BeTrue())
9191
} else {
92-
g.Expect(test.c.ValidateCreate()).To(gomega.Succeed())
92+
_, err := test.c.ValidateCreate()
93+
g.Expect(err).To(gomega.Succeed())
9394
}
9495
})
9596
}

0 commit comments

Comments
 (0)