Skip to content

Commit 5622fae

Browse files
committed
fix test and customDiff logic
1 parent 5eda7f9 commit 5622fae

File tree

4 files changed

+4127
-70
lines changed

4 files changed

+4127
-70
lines changed

internal/services/baremetal/helpers.go

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -259,16 +259,6 @@ func customDiffOffer() func(ctx context.Context, diff *schema.ResourceDiff, i in
259259
return errors.New("invalid plan transition: you cannot transition from a monthly plan to an hourly plan. Only the reverse (hourly to monthly) is supported. Please update your configuration accordingly")
260260
}
261261

262-
ServerID := regional.ExpandID(diff.Id())
263-
264-
_, err = api.MigrateServerToMonthlyOffer(&baremetal.MigrateServerToMonthlyOfferRequest{
265-
Zone: zone.Zone,
266-
ServerID: ServerID.ID,
267-
}, scw.WithContext(ctx))
268-
if err != nil {
269-
return errors.New("migration to monthly plan failed: " + err.Error())
270-
}
271-
272262
return nil
273263
}
274264
}

internal/services/baremetal/server.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/scaleway/terraform-provider-scaleway/v2/internal/dsf"
1919
"github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
2020
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality"
21+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/regional"
2122
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/zonal"
2223
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/account"
2324
"github.com/scaleway/terraform-provider-scaleway/v2/internal/types"
@@ -518,6 +519,26 @@ func ResourceServerUpdate(ctx context.Context, d *schema.ResourceData, m interfa
518519
var serverGetOptionIDs []*baremetal.ServerOption
519520
serverGetOptionIDs = append(serverGetOptionIDs, server.Options...)
520521

522+
if d.HasChange("offer") {
523+
ServerID := regional.ExpandID(server.ID)
524+
525+
_, err = api.MigrateServerToMonthlyOffer(&baremetal.MigrateServerToMonthlyOfferRequest{
526+
Zone: zonedID.Zone,
527+
ServerID: ServerID.ID,
528+
}, scw.WithContext(ctx))
529+
if err != nil {
530+
return diag.FromErr(err)
531+
}
532+
533+
_, err := api.WaitForServer(&baremetal.WaitForServerRequest{
534+
Zone: zonedID.Zone,
535+
ServerID: ServerID.ID,
536+
})
537+
if err != nil {
538+
return diag.FromErr(err)
539+
}
540+
}
541+
521542
if d.HasChange("options") {
522543
options, err := expandOptions(d.Get("options"))
523544
if err != nil {

internal/services/baremetal/server_test.go

Lines changed: 34 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,100 +1056,75 @@ func TestAccServer_UpdateSubscriptionPeriod(t *testing.T) {
10561056
Steps: []resource.TestStep{
10571057
{
10581058
Config: fmt.Sprintf(`
1059-
10601059
data "scaleway_baremetal_offer" "my_offer" {
10611060
zone = "%s"
1062-
name = "EM-B112X-SSD"
1061+
name = "%s"
10631062
subscription_period = "hourly"
1064-
10651063
}
1066-
1064+
10671065
resource "scaleway_baremetal_server" "server01" {
1068-
name = "TestAccServer_UpdateSubscriptionPeriod"
1069-
offer = data.scaleway_baremetal_offer.my_offer.offer_id
1070-
zone = "%s"
1071-
install_config_afterward = true
1072-
1073-
}`, Zone, Zone,
1074-
),
1066+
name = "TestAccServer_UpdateSubscriptionPeriod"
1067+
offer = data.scaleway_baremetal_offer.my_offer.offer_id
1068+
zone = "%s"
1069+
install_config_afterward = true
1070+
}`, Zone, OfferName, Zone),
10751071
Check: resource.ComposeTestCheckFunc(
1076-
resource.TestCheckResourceAttr("scaleway_baremetal_server.server01", "subscription_period", "hourly"),
1077-
resource.TestCheckResourceAttr("scaleway_baremetal_server.server01", "zone", "fr-par-1"),
1072+
resource.TestCheckResourceAttr("scaleway_baremetal_server.server01", "zone", Zone),
1073+
resource.TestCheckResourceAttrPair("scaleway_baremetal_server.server01", "offer_id", "data.scaleway_baremetal_offer.my_offer", "offer_id"),
10781074
),
10791075
},
10801076
{
10811077
Config: fmt.Sprintf(`
10821078
data "scaleway_baremetal_offer" "my_offer" {
10831079
zone = "%s"
1084-
name = "EM-B112X-SSD"
1085-
subscription_period = "hourly"
1086-
1087-
}
1088-
1089-
data "scaleway_baremetal_offer" "my_offer_monthly" {
1090-
zone = "%s"
1091-
name = "EM-B112X-SSD"
1080+
name = "%s"
10921081
subscription_period = "monthly"
1093-
10941082
}
1095-
1083+
10961084
resource "scaleway_baremetal_server" "server01" {
1097-
name = "TestAccServer_UpdateSubscriptionPeriod"
1098-
offer = data.scaleway_baremetal_offer.my_offer_monthly.offer_id
1099-
zone = "%s"
1100-
install_config_afterward = true
1101-
1102-
}`,
1103-
Zone, Zone, Zone),
1085+
name = "TestAccServer_UpdateSubscriptionPeriod"
1086+
offer = data.scaleway_baremetal_offer.my_offer.offer_id
1087+
zone = "%s"
1088+
install_config_afterward = true
1089+
}`, Zone, OfferName, Zone),
11041090
Check: resource.ComposeTestCheckFunc(
1105-
resource.TestCheckResourceAttr("scaleway_baremetal_server.server01", "zone", "fr-par-1"),
1091+
resource.TestCheckResourceAttr("scaleway_baremetal_server.server01", "zone", Zone),
1092+
resource.TestCheckResourceAttrPair("scaleway_baremetal_server.server01", "offer_id", "data.scaleway_baremetal_offer.my_offer", "offer_id"),
11061093
),
11071094
},
11081095
{
11091096
Config: fmt.Sprintf(`
11101097
data "scaleway_baremetal_offer" "my_offer" {
11111098
zone = "%s"
1112-
name = "EM-B112X-SSD"
1099+
name = "%s"
11131100
subscription_period = "hourly"
1114-
1115-
}
1116-
data "scaleway_baremetal_offer" "my_offer_monthly" {
1117-
zone = "%s"
1118-
name = "EM-B112X-SSD"
1119-
subscription_period = "monthly"
1120-
11211101
}
1122-
1102+
11231103
resource "scaleway_baremetal_server" "server01" {
1124-
name = "Test_UpdateSubscriptionPeriod"
1125-
offer = data.scaleway_baremetal_offer.my_offer.offer_id
1126-
zone = "%s"
1127-
install_config_afterward = true
1128-
1129-
}`, Zone, Zone, Zone,
1130-
),
1131-
ExpectError: regexp.MustCompile("invalid plan transition: you cannot transition from a monthly plan to an hourly plan. Only the reverse (hourly to monthly) is supported. Please update your configuration accordingly"),
1104+
name = "TestAccServer_UpdateSubscriptionPeriod"
1105+
offer = data.scaleway_baremetal_offer.my_offer.offer_id
1106+
zone = "%s"
1107+
install_config_afterward = true
1108+
}`, Zone, OfferName, Zone),
1109+
ExpectError: regexp.MustCompile(`invalid plan transition: you cannot transition from a monthly plan to an hourly plan. Only the reverse \(hourly to monthly\) is supported. Please update your configuration accordingly`),
11321110
},
11331111
{
11341112
Config: fmt.Sprintf(`
1135-
11361113
data "scaleway_baremetal_offer" "my_offer" {
11371114
zone = "%s"
1138-
name = "EM-B111X-SATA"
1115+
name = "EM-B320E-NVME"
11391116
subscription_period = "hourly"
1140-
11411117
}
1142-
1118+
11431119
resource "scaleway_baremetal_server" "server01" {
1144-
name = "Test_UpdateSubscriptionPeriod"
1145-
offer = data.scaleway_baremetal_offer.my_offer.offer_id
1146-
zone = "%s"
1147-
install_config_afterward = true
1148-
1149-
}`, Zone, Zone,
1150-
),
1120+
name = "Test_UpdateSubscriptionPeriod"
1121+
offer = data.scaleway_baremetal_offer.my_offer.offer_id
1122+
zone = "%s"
1123+
install_config_afterward = true
1124+
}`, Zone, Zone),
11511125
Check: resource.ComposeTestCheckFunc(
11521126
resource.TestCheckResourceAttr("scaleway_baremetal_server.server01", "zone", "fr-par-1"),
1127+
resource.TestCheckResourceAttrPair("scaleway_baremetal_server.server01", "offer_id", "data.scaleway_baremetal_offer.my_offer", "offer_id"),
11531128
),
11541129
},
11551130
},

internal/services/baremetal/testdata/server-update-subscription-period.cassette.yaml

Lines changed: 4072 additions & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)