Skip to content

Commit d2a2916

Browse files
authored
Merge pull request #3798 from giantswarm/fix_clusterctl_move_devicename
fix: remove check for root volume device name on create
2 parents a879df7 + 318e1a5 commit d2a2916

File tree

6 files changed

+42
-5
lines changed

6 files changed

+42
-5
lines changed

api/v1beta2/awsmachine_webhook.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ func (r *AWSMachine) validateRootVolume() field.ErrorList {
193193
}
194194

195195
if r.Spec.RootVolume.DeviceName != "" {
196-
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec.rootVolume.deviceName"), "root volume shouldn't have device name"))
196+
log.Info("root volume shouldn't have a device name (this can be ignored if performing a `clusterctl move`)")
197197
}
198198

199199
return allErrs

api/v1beta2/awsmachine_webhook_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,18 @@ func TestAWSMachine_Create(t *testing.T) {
8080
wantErr: true,
8181
},
8282
{
83-
name: "ensure root volume has no device name",
83+
name: "ensure root volume with device name works (for clusterctl move)",
8484
machine: &AWSMachine{
8585
Spec: AWSMachineSpec{
8686
RootVolume: &Volume{
8787
DeviceName: "name",
88+
Type: "gp2",
89+
Size: *aws.Int64(8),
8890
},
8991
InstanceType: "test",
9092
},
9193
},
92-
wantErr: true,
94+
wantErr: false,
9395
},
9496
{
9597
name: "ensure non root volume have device names",

api/v1beta2/awsmachinetemplate_webhook.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func (r *AWSMachineTemplate) validateRootVolume() field.ErrorList {
6868
}
6969

7070
if spec.RootVolume.DeviceName != "" {
71-
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec.template.spec.rootVolume.deviceName"), "root volume shouldn't have device name"))
71+
log.Info("root volume shouldn't have a device name (this can be ignored if performing a `clusterctl move`)")
7272
}
7373

7474
return allErrs

api/v1beta2/awsmachinetemplate_webhook_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"testing"
2222

23+
"github.com/aws/aws-sdk-go/aws"
2324
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2425
"k8s.io/utils/pointer"
2526
)
@@ -60,6 +61,25 @@ func TestAWSMachineTemplateValidateCreate(t *testing.T) {
6061
},
6162
wantError: true,
6263
},
64+
{
65+
name: "ensure RootVolume DeviceName can be set for use with clusterctl move",
66+
inputTemplate: &AWSMachineTemplate{
67+
ObjectMeta: metav1.ObjectMeta{},
68+
Spec: AWSMachineTemplateSpec{
69+
Template: AWSMachineTemplateResource{
70+
Spec: AWSMachineSpec{
71+
RootVolume: &Volume{
72+
DeviceName: "name",
73+
Type: "gp2",
74+
Size: *aws.Int64(8),
75+
},
76+
InstanceType: "test",
77+
},
78+
},
79+
},
80+
},
81+
wantError: false,
82+
},
6383
}
6484
for _, tt := range tests {
6585
t.Run(tt.name, func(t *testing.T) {

exp/api/v1beta2/awsmachinepool_webhook.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func (r *AWSMachinePool) validateRootVolume() field.ErrorList {
7575
}
7676

7777
if r.Spec.AWSLaunchTemplate.RootVolume.DeviceName != "" {
78-
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec.awsLaunchTemplate.rootVolume.deviceName"), "root volume shouldn't have device name"))
78+
log.Info("root volume shouldn't have a device name (this can be ignored if performing a `clusterctl move`)")
7979
}
8080

8181
return allErrs

exp/api/v1beta2/awsmachinepool_webhook_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,21 @@ func TestAWSMachinePool_ValidateCreate(t *testing.T) {
124124
},
125125
wantErr: false,
126126
},
127+
{
128+
name: "Ensure root volume with device name works (for clusterctl move)",
129+
pool: &AWSMachinePool{
130+
Spec: AWSMachinePoolSpec{
131+
AWSLaunchTemplate: AWSLaunchTemplate{
132+
RootVolume: &infrav1.Volume{
133+
DeviceName: "name",
134+
Type: "gp2",
135+
Size: *aws.Int64(8),
136+
},
137+
},
138+
},
139+
},
140+
wantErr: false,
141+
},
127142
}
128143
for _, tt := range tests {
129144
t.Run(tt.name, func(t *testing.T) {

0 commit comments

Comments
 (0)