Skip to content

Commit 83fe143

Browse files
committed
add documentation and checkdestroy
1 parent 7b6a41c commit 83fe143

6 files changed

+1361
-1274
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
2+
# scaleway_easy_partitioning
3+
4+
The scaleway_easy_partitioning data source allows you to retrieve a ready-to-use partitioning schema for a BareMetal server. This schema can be used for custom installations with optional swap and extra partitions.
5+
6+
This data source simplifies the process of generating valid partitioning configurations, especially useful when dealing with OS and offer compatibility requirements.
7+
8+
## Example Usage
9+
10+
```hcl
11+
data "scaleway_easy_partitioning" "default" {
12+
offer_id = "11111111-1111-1111-1111-111111111111"
13+
os_id = "22222222-2222-2222-2222-222222222222"
14+
swap = true
15+
extra_partition = true
16+
ext_4_mountpoint = "/data"
17+
}
18+
```
19+
20+
```hcl
21+
data "scaleway_baremetal_offer" "my_offer" {
22+
zone = "fr-par-1"
23+
name = "EM-B220E-NVME"
24+
}
25+
26+
data "scaleway_baremetal_os" "my_os" {
27+
zone = "fr-par-1"
28+
name = "Ubuntu"
29+
version = "22.04 LTS (Jammy Jellyfish)"
30+
}
31+
32+
resource "scaleway_iam_ssh_key" "main" {
33+
name = "my-ssh-key"
34+
public_key = "my-ssh-key-public"
35+
}
36+
37+
data "scaleway_baremetal_easy_partitioning" "test" {
38+
offer_id = data.scaleway_baremetal_offer.my_offer.offer_id
39+
os_id = data.scaleway_baremetal_os.my_os.os_id
40+
swap = false
41+
ext_4_mountpoint = "/hello"
42+
}
43+
44+
resource "scaleway_baremetal_server" "base" {
45+
name = "my-baremetal-server"
46+
zone = "fr-par-1"
47+
description = "test a description"
48+
offer = data.scaleway_baremetal_offer.my_offer.offer_id
49+
os = data.scaleway_baremetal_os.my_os.os_id
50+
partitioning = data.scaleway_baremetal_easy_partitioning.test.json_partition
51+
tags = ["terraform-test", "scaleway_baremetal_server", "minimal", "edited"]
52+
ssh_key_ids = [scaleway_iam_ssh_key.main.id]
53+
}
54+
```
55+
56+
## Argument Reference
57+
58+
- `offer_id` (Required) The UUID of the BareMetal offer.
59+
60+
- `os_id` (Required) The UUID of the OS image.
61+
62+
- `swap` (Optional, Default: true) Whether to include a swap partition.
63+
64+
- `extra_partition` (Optional, Default: true) Whether to add an extra ext4 data partition.
65+
66+
- `ext_4_mountpoint` (Optional, Default: "/data") The mount point for the extra partition. Must be an absolute path using alphanumeric characters and underscores.
67+
68+
## Attributes Reference
69+
70+
In addition to all above arguments, the following attributes are exported:
71+
72+
- `id` — A composite identifier derived from offer_id and os_id.
73+
74+
- `json_partition` — A validated partitioning schema in JSON format that can be directly used for BareMetal server deployment.

internal/services/baremetal/easy_partitioning_source_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package baremetal_test
33
import (
44
"encoding/json"
55
"fmt"
6+
baremetalchecks "github.com/scaleway/terraform-provider-scaleway/v2/internal/services/baremetal/testfuncs"
67
"reflect"
78
"regexp"
89
"testing"
@@ -31,6 +32,9 @@ func TestAccEasyPartitioningDataSource_Basic(t *testing.T) {
3132
resource.ParallelTest(t, resource.TestCase{
3233
PreCheck: func() { acctest.PreCheck(t) },
3334
ProviderFactories: tt.ProviderFactories,
35+
CheckDestroy: resource.ComposeTestCheckFunc(
36+
baremetalchecks.CheckServerDestroy(tt),
37+
),
3438
Steps: []resource.TestStep{
3539
{
3640
Config: fmt.Sprintf(`
@@ -96,6 +100,9 @@ func TestAccEasyPartitioningDataSource_WithAlternateOffer(t *testing.T) {
96100
resource.ParallelTest(t, resource.TestCase{
97101
PreCheck: func() { acctest.PreCheck(t) },
98102
ProviderFactories: tt.ProviderFactories,
103+
CheckDestroy: resource.ComposeTestCheckFunc(
104+
baremetalchecks.CheckServerDestroy(tt),
105+
),
99106
Steps: []resource.TestStep{
100107
{
101108
Config: fmt.Sprintf(
@@ -162,6 +169,9 @@ func TestAccEasyPartitioningDataSource_IncompatibleOS(t *testing.T) {
162169
resource.ParallelTest(t, resource.TestCase{
163170
PreCheck: func() { acctest.PreCheck(t) },
164171
ProviderFactories: tt.ProviderFactories,
172+
CheckDestroy: resource.ComposeTestCheckFunc(
173+
baremetalchecks.CheckServerDestroy(tt),
174+
),
165175
Steps: []resource.TestStep{
166176
{
167177
Config: fmt.Sprintf(
@@ -221,6 +231,9 @@ func TestAccEasyPartitioningDataSource_IncompatibleOffer(t *testing.T) {
221231
resource.ParallelTest(t, resource.TestCase{
222232
PreCheck: func() { acctest.PreCheck(t) },
223233
ProviderFactories: tt.ProviderFactories,
234+
CheckDestroy: resource.ComposeTestCheckFunc(
235+
baremetalchecks.CheckServerDestroy(tt),
236+
),
224237
Steps: []resource.TestStep{
225238
{
226239
Config: fmt.Sprintf(

internal/services/baremetal/testdata/easy-partitioning-data-source-basic.cassette.yaml

Lines changed: 644 additions & 595 deletions
Large diffs are not rendered by default.

internal/services/baremetal/testdata/easy-partitioning-data-source-incompatible-offer.cassette.yaml

Lines changed: 21 additions & 21 deletions
Large diffs are not rendered by default.

internal/services/baremetal/testdata/easy-partitioning-data-source-incompatible-os.cassette.yaml

Lines changed: 10 additions & 10 deletions
Large diffs are not rendered by default.

internal/services/baremetal/testdata/easy-partitioning-data-source-with-alternate-offer.cassette.yaml

Lines changed: 599 additions & 648 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)