@@ -1404,3 +1404,133 @@ func TestAccScalewayInstanceServer_MigrateInvalidLocalVolumeSize(t *testing.T) {
1404
1404
},
1405
1405
})
1406
1406
}
1407
+
1408
+ func TestAccScalewayInstanceServer_CustomDiffImage (t * testing.T ) {
1409
+ tt := NewTestTools (t )
1410
+ defer tt .Cleanup ()
1411
+ resource .ParallelTest (t , resource.TestCase {
1412
+ PreCheck : func () { testAccPreCheck (t ) },
1413
+ ProviderFactories : tt .ProviderFactories ,
1414
+ CheckDestroy : testAccCheckScalewayInstanceServerDestroy (tt ),
1415
+ Steps : []resource.TestStep {
1416
+ {
1417
+ Config : `
1418
+ resource "scaleway_instance_server" "main" {
1419
+ image = "ubuntu_jammy"
1420
+ type = "DEV1-S"
1421
+ state = "stopped"
1422
+ }
1423
+ ` ,
1424
+ Check : resource .ComposeTestCheckFunc (
1425
+ testAccCheckScalewayInstanceServerExists (tt , "scaleway_instance_server.main" ),
1426
+ resource .TestCheckResourceAttr ("scaleway_instance_server.main" , "image" , "ubuntu_jammy" ),
1427
+ ),
1428
+ },
1429
+ {
1430
+ Config : `
1431
+ resource "scaleway_instance_server" "main" {
1432
+ image = "ubuntu_jammy"
1433
+ type = "DEV1-S"
1434
+ state = "stopped"
1435
+ }
1436
+ resource "scaleway_instance_server" "copy" {
1437
+ image = "ubuntu_jammy"
1438
+ type = "DEV1-S"
1439
+ state = "stopped"
1440
+ }
1441
+ ` ,
1442
+ Check : resource .ComposeTestCheckFunc (
1443
+ testAccCheckScalewayInstanceServerExists (tt , "scaleway_instance_server.main" ),
1444
+ testAccCheckScalewayInstanceServerExists (tt , "scaleway_instance_server.copy" ),
1445
+ resource .TestCheckResourceAttr ("scaleway_instance_server.main" , "image" , "ubuntu_jammy" ),
1446
+ resource .TestCheckResourceAttr ("scaleway_instance_server.copy" , "image" , "ubuntu_jammy" ),
1447
+ resource .TestCheckResourceAttrPair ("scaleway_instance_server.main" , "id" , "scaleway_instance_server.copy" , "id" ),
1448
+ ),
1449
+ ResourceName : "scaleway_instance_server.copy" ,
1450
+ ImportState : true ,
1451
+ ImportStateIdFunc : func (state * terraform.State ) (string , error ) {
1452
+ return state .RootModule ().Resources ["scaleway_instance_server.main" ].Primary .ID , nil
1453
+ },
1454
+ ImportStatePersist : true ,
1455
+ },
1456
+ {
1457
+ Config : `
1458
+ data "scaleway_marketplace_image" "jammy" {
1459
+ label = "ubuntu_jammy"
1460
+ }
1461
+ resource "scaleway_instance_server" "main" {
1462
+ image = data.scaleway_marketplace_image.jammy.id
1463
+ type = "DEV1-S"
1464
+ state = "stopped"
1465
+ }
1466
+ resource "scaleway_instance_server" "copy" {
1467
+ image = "ubuntu_jammy"
1468
+ type = "DEV1-S"
1469
+ state = "stopped"
1470
+ }
1471
+ ` ,
1472
+ Check : resource .ComposeTestCheckFunc (
1473
+ testAccCheckScalewayInstanceServerExists (tt , "scaleway_instance_server.main" ),
1474
+ testAccCheckScalewayInstanceServerExists (tt , "scaleway_instance_server.copy" ),
1475
+ resource .TestCheckResourceAttrPair ("scaleway_instance_server.main" , "image" , "data.scaleway_marketplace_image.jammy" , "id" ),
1476
+ resource .TestCheckResourceAttrPair ("scaleway_instance_server.main" , "id" , "scaleway_instance_server.copy" , "id" ),
1477
+ ),
1478
+ },
1479
+ {
1480
+ RefreshState : true ,
1481
+ Check : resource .ComposeTestCheckFunc (
1482
+ testAccCheckScalewayInstanceServerExists (tt , "scaleway_instance_server.main" ),
1483
+ testAccCheckScalewayInstanceServerExists (tt , "scaleway_instance_server.copy" ),
1484
+ resource .TestCheckResourceAttrPair ("scaleway_instance_server.main" , "image" , "data.scaleway_marketplace_image.jammy" , "id" ),
1485
+ resource .TestCheckResourceAttrPair ("scaleway_instance_server.main" , "id" , "scaleway_instance_server.copy" , "id" ),
1486
+ ),
1487
+ },
1488
+ {
1489
+ Config : `
1490
+ data "scaleway_marketplace_image" "focal" {
1491
+ label = "ubuntu_focal"
1492
+ }
1493
+ resource "scaleway_instance_server" "main" {
1494
+ image = data.scaleway_marketplace_image.focal.id
1495
+ type = "DEV1-S"
1496
+ state = "stopped"
1497
+ }
1498
+ resource "scaleway_instance_server" "copy" {
1499
+ image = "ubuntu_jammy"
1500
+ type = "DEV1-S"
1501
+ state = "stopped"
1502
+ }
1503
+ ` ,
1504
+ PlanOnly : true ,
1505
+ ExpectNonEmptyPlan : true ,
1506
+ Check : resource .ComposeTestCheckFunc (
1507
+ testAccCheckScalewayInstanceServerExists (tt , "scaleway_instance_server.main" ),
1508
+ resource .TestCheckResourceAttrPair ("scaleway_instance_server.main" , "image" , "data.scaleway_marketplace_image.focal" , "id" ),
1509
+ resource .TestCheckResourceAttr ("scaleway_instance_server.copy" , "image" , "ubuntu_jammy" ),
1510
+ testAccCheckScalewayInstanceServerIDsAreDifferent ("scaleway_instance_server.main" , "scaleway_instance_server.copy" ),
1511
+ ),
1512
+ },
1513
+ },
1514
+ })
1515
+ }
1516
+
1517
+ func testAccCheckScalewayInstanceServerIDsAreDifferent (nameFirst , nameSecond string ) resource.TestCheckFunc {
1518
+ return func (s * terraform.State ) error {
1519
+ rs , ok := s .RootModule ().Resources [nameFirst ]
1520
+ if ! ok {
1521
+ return fmt .Errorf ("resource was not found: %s" , nameFirst )
1522
+ }
1523
+ idFirst := rs .Primary .ID
1524
+
1525
+ rs , ok = s .RootModule ().Resources [nameSecond ]
1526
+ if ! ok {
1527
+ return fmt .Errorf ("resource was not found: %s" , nameSecond )
1528
+ }
1529
+ idSecond := rs .Primary .ID
1530
+
1531
+ if idFirst == idSecond {
1532
+ return fmt .Errorf ("IDs of both resources were equal when they should not have been (%s and %s)" , nameFirst , nameSecond )
1533
+ }
1534
+ return nil
1535
+ }
1536
+ }
0 commit comments