Skip to content

Commit a8a6e92

Browse files
committed
add tests and fix edge case
1 parent 732a946 commit a8a6e92

8 files changed

+7734
-1448
lines changed

internal/services/baremetal/easy_partitioning_data_source.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ func DataEasyPartitioning() *schema.Resource {
5050
"ext_4_mountpoint": {
5151
Type: schema.TypeString,
5252
Optional: true,
53-
Default: "/hello",
53+
Default: "/data",
5454
Description: "Mount point must be an absolute path with alphanumeric characters and underscores",
5555
},
5656
"json_partition": {
@@ -126,6 +126,11 @@ func dataEasyPartitioningRead(ctx context.Context, d *schema.ResourceData, m int
126126
mountpoint := d.Get("ext_4_mountpoint").(string)
127127
addExtraExt4Partition(mountpoint, defaultPartitioningSchema, extraPart)
128128

129+
if !extraPart && !swap {
130+
defaultPartitioningSchema.Filesystems = defaultPartitioningSchema.Filesystems[:len(defaultPartitioningSchema.Filesystems)-1]
131+
defaultPartitioningSchema.Raids = defaultPartitioningSchema.Raids[:len(defaultPartitioningSchema.Raids)-1]
132+
}
133+
129134
err = api.ValidatePartitioningSchema(&baremetal.ValidatePartitioningSchemaRequest{
130135
Zone: fallBackZone,
131136
OfferID: offerID.ID,
@@ -154,6 +159,7 @@ func handleSwapPartitions(originalDisks []*baremetal.SchemaDisk, withExtraPartit
154159
if swap {
155160
return originalDisks
156161
}
162+
157163
result := make([]*baremetal.SchemaDisk, 0)
158164

159165
for _, disk := range originalDisks {
@@ -190,6 +196,9 @@ func handleSwapPartitions(originalDisks []*baremetal.SchemaDisk, withExtraPartit
190196
}
191197

192198
func addExtraExt4Partition(mountpoint string, defaultPartitionSchema *baremetal.Schema, extraPart bool) {
199+
if !extraPart {
200+
return
201+
}
193202

194203
for _, disk := range defaultPartitionSchema.Disks {
195204
partIndex := uint32(len(disk.Partitions)) + 1

internal/services/baremetal/easy_partitioning_source_test.go

Lines changed: 144 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ func TestAccEasyPartitioningDataSource_Basic(t *testing.T) {
5757
data "scaleway_baremetal_easy_partitioning" "test" {
5858
offer_id = data.scaleway_baremetal_offer.my_offer.offer_id
5959
os_id = data.scaleway_baremetal_os.my_os.os_id
60-
swap = false
60+
swap = true
6161
ext_4_mountpoint = "%s"
6262
}
6363
@@ -90,6 +90,140 @@ func TestAccEasyPartitioningDataSource_Basic(t *testing.T) {
9090
})
9191
}
9292

93+
func TestAccEasyPartitioningDataSource_WithoutExtraPart(t *testing.T) {
94+
tt := acctest.NewTestTools(t)
95+
defer tt.Cleanup()
96+
97+
sshKeyName := "TestAccEasyPartitioningDataSource_WithoutExtraPart"
98+
serverName := "TestAccEasyPartitioningDataSource_WithoutExtraPart"
99+
100+
resource.ParallelTest(t, resource.TestCase{
101+
PreCheck: func() { acctest.PreCheck(t) },
102+
ProviderFactories: tt.ProviderFactories,
103+
CheckDestroy: resource.ComposeTestCheckFunc(
104+
baremetalchecks.CheckServerDestroy(tt),
105+
),
106+
Steps: []resource.TestStep{
107+
{
108+
Config: fmt.Sprintf(`
109+
data "scaleway_baremetal_offer" "my_offer" {
110+
zone = "%s"
111+
name = "%s"
112+
}
113+
114+
data "scaleway_baremetal_os" "my_os" {
115+
zone = "%s"
116+
name = "Ubuntu"
117+
version = "22.04 LTS (Jammy Jellyfish)"
118+
}
119+
120+
resource "scaleway_iam_ssh_key" "main" {
121+
name = "%s"
122+
public_key = "%s"
123+
}
124+
125+
data "scaleway_baremetal_easy_partitioning" "test" {
126+
offer_id = data.scaleway_baremetal_offer.my_offer.offer_id
127+
os_id = data.scaleway_baremetal_os.my_os.os_id
128+
swap = true
129+
extra_partition = false
130+
}
131+
132+
resource "scaleway_baremetal_server" "base" {
133+
name = "%s"
134+
zone = "%s"
135+
description = "test a description"
136+
offer = data.scaleway_baremetal_offer.my_offer.offer_id
137+
os = data.scaleway_baremetal_os.my_os.os_id
138+
partitioning = data.scaleway_baremetal_easy_partitioning.test.json_partition
139+
tags = ["terraform-test", "scaleway_baremetal_server", "minimal", "edited"]
140+
ssh_key_ids = [scaleway_iam_ssh_key.main.id]
141+
}
142+
`,
143+
Zone,
144+
offerNameEasyPartitioning,
145+
Zone,
146+
sshKeyName,
147+
SSHKeyBaremetal,
148+
serverName,
149+
Zone,
150+
),
151+
Check: resource.ComposeTestCheckFunc(
152+
testAccCheckBaremetalServerExists(tt, "scaleway_baremetal_server.base"),
153+
testAccCheckEasyPartitioning(tt, "scaleway_baremetal_server.base", "data.scaleway_baremetal_easy_partitioning.test"),
154+
),
155+
},
156+
},
157+
})
158+
}
159+
160+
func TestAccEasyPartitioningDataSource_WithoutSwapAndExtraPart(t *testing.T) {
161+
tt := acctest.NewTestTools(t)
162+
defer tt.Cleanup()
163+
164+
sshKeyName := "TestAccEasyPartitioningDataSource_Basic"
165+
serverName := "TestAccEasyPartitioningDataSource_Basic"
166+
167+
resource.ParallelTest(t, resource.TestCase{
168+
PreCheck: func() { acctest.PreCheck(t) },
169+
ProviderFactories: tt.ProviderFactories,
170+
CheckDestroy: resource.ComposeTestCheckFunc(
171+
baremetalchecks.CheckServerDestroy(tt),
172+
),
173+
Steps: []resource.TestStep{
174+
{
175+
Config: fmt.Sprintf(`
176+
data "scaleway_baremetal_offer" "my_offer" {
177+
zone = "%s"
178+
name = "%s"
179+
}
180+
181+
data "scaleway_baremetal_os" "my_os" {
182+
zone = "%s"
183+
name = "Ubuntu"
184+
version = "22.04 LTS (Jammy Jellyfish)"
185+
}
186+
187+
resource "scaleway_iam_ssh_key" "main" {
188+
name = "%s"
189+
public_key = "%s"
190+
}
191+
192+
data "scaleway_baremetal_easy_partitioning" "test" {
193+
offer_id = data.scaleway_baremetal_offer.my_offer.offer_id
194+
os_id = data.scaleway_baremetal_os.my_os.os_id
195+
swap = false
196+
extra_partition = false
197+
}
198+
199+
resource "scaleway_baremetal_server" "base" {
200+
name = "%s"
201+
zone = "%s"
202+
description = "test a description"
203+
offer = data.scaleway_baremetal_offer.my_offer.offer_id
204+
os = data.scaleway_baremetal_os.my_os.os_id
205+
partitioning = data.scaleway_baremetal_easy_partitioning.test.json_partition
206+
tags = ["terraform-test", "scaleway_baremetal_server", "minimal", "edited"]
207+
ssh_key_ids = [scaleway_iam_ssh_key.main.id]
208+
}
209+
`,
210+
Zone,
211+
offerNameEasyPartitioning,
212+
Zone,
213+
sshKeyName,
214+
SSHKeyBaremetal,
215+
serverName,
216+
Zone,
217+
),
218+
Check: resource.ComposeTestCheckFunc(
219+
testAccCheckBaremetalServerExists(tt, "scaleway_baremetal_server.base"),
220+
testAccCheckEasyPartitioning(tt, "scaleway_baremetal_server.base", "data.scaleway_baremetal_easy_partitioning.test"),
221+
),
222+
},
223+
},
224+
})
225+
}
226+
93227
func TestAccEasyPartitioningDataSource_WithAlternateOffer(t *testing.T) {
94228
tt := acctest.NewTestTools(t)
95229
defer tt.Cleanup()
@@ -271,7 +405,15 @@ func TestAccEasyPartitioningDataSource_IncompatibleOffer(t *testing.T) {
271405
272406
tags = [ "terraform-test", "scaleway_baremetal_server", "minimal", "edited" ]
273407
ssh_key_ids = [ scaleway_iam_ssh_key.main.id ]
274-
}`, Zone, incompatibleOfferName, Zone, SSHKeyName, SSHKeyBaremetal, mountpoint, name, Zone),
408+
}`, Zone,
409+
incompatibleOfferName,
410+
Zone,
411+
SSHKeyName,
412+
SSHKeyBaremetal,
413+
mountpoint,
414+
name,
415+
Zone,
416+
),
275417
ExpectError: regexp.MustCompile("Custom Partitioning not supported"),
276418
},
277419
},

0 commit comments

Comments
 (0)