@@ -6,21 +6,34 @@ import (
6
6
"testing"
7
7
8
8
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
9
- "github.com/hashicorp/terraform-plugin-sdk/terraform"
10
9
)
11
10
12
- var testAccPublicCloudPrivateNetworkSubnetConfig = fmt . Sprintf ( `
11
+ var testAccPublicCloudPrivateNetworkSubnetConfig_attachVrack = `
13
12
resource "ovh_vrack_cloudproject" "attach" {
14
13
vrack_id = "%s"
15
14
project_id = "%s"
16
15
}
17
16
18
17
data "ovh_cloud_regions" "regions" {
19
18
project_id = ovh_vrack_cloudproject.attach.project_id
19
+
20
+ has_services_up = ["network"]
20
21
}
22
+ `
23
+
24
+ var testAccPublicCloudPrivateNetworkSubnetConfig_noAttachVrack = `
25
+ data "ovh_cloud_regions" "regions" {
26
+ project_id = "%s"
27
+
28
+ has_services_up = ["network"]
29
+ }
30
+ `
31
+
32
+ var testAccPublicCloudPrivateNetworkSubnetConfig_basic = `
33
+ %s
21
34
22
35
resource "ovh_cloud_network_private" "network" {
23
- project_id = ovh_vrack_cloudproject.attach .project_id
36
+ project_id = data.ovh_cloud_regions.regions .project_id
24
37
vlan_id = 0
25
38
name = "terraform_testacc_private_net"
26
39
regions = tolist(data.ovh_cloud_regions.regions.names)
@@ -38,20 +51,45 @@ resource "ovh_cloud_network_private_subnet" "subnet" {
38
51
dhcp = true
39
52
no_gateway = false
40
53
}
41
- ` , os .Getenv ("OVH_VRACK" ), os .Getenv ("OVH_PUBLIC_CLOUD" ))
54
+ `
55
+
56
+ func testAccPublicCloudPrivateNetworkSubnetConfig () string {
57
+ attachVrack := fmt .Sprintf (
58
+ testAccPublicCloudPrivateNetworkSubnetConfig_attachVrack ,
59
+ os .Getenv ("OVH_VRACK" ),
60
+ os .Getenv ("OVH_PUBLIC_CLOUD" ),
61
+ )
62
+ noAttachVrack := fmt .Sprintf (
63
+ testAccPublicCloudPrivateNetworkSubnetConfig_noAttachVrack ,
64
+ os .Getenv ("OVH_PUBLIC_CLOUD" ),
65
+ )
66
+
67
+ if os .Getenv ("OVH_ATTACH_VRACK" ) == "0" {
68
+ return fmt .Sprintf (
69
+ testAccPublicCloudPrivateNetworkSubnetConfig_basic ,
70
+ noAttachVrack ,
71
+ )
72
+ }
73
+
74
+ return fmt .Sprintf (
75
+ testAccPublicCloudPrivateNetworkSubnetConfig_basic ,
76
+ attachVrack ,
77
+ )
78
+ }
42
79
43
80
func TestAccPublicCloudPrivateNetworkSubnet_basic (t * testing.T ) {
44
81
resource .Test (t , resource.TestCase {
45
- PreCheck : func () { testAccCheckPublicCloudPrivateNetworkSubnetPreCheck (t ) },
46
- Providers : testAccProviders ,
47
- CheckDestroy : testAccCheckPublicCloudPrivateNetworkSubnetDestroy ,
82
+ PreCheck : func () { testAccCheckPublicCloudPrivateNetworkSubnetPreCheck (t ) },
83
+ Providers : testAccProviders ,
48
84
Steps : []resource.TestStep {
49
85
{
50
- Config : testAccPublicCloudPrivateNetworkSubnetConfig ,
86
+ Config : testAccPublicCloudPrivateNetworkSubnetConfig () ,
51
87
Check : resource .ComposeTestCheckFunc (
52
- testAccCheckVRackPublicCloudAttachmentExists ("ovh_vrack_cloudproject.attach" , t ),
53
- testAccCheckPublicCloudPrivateNetworkExists ("ovh_cloud_network_private.network" , t ),
54
- testAccCheckPublicCloudPrivateNetworkSubnetExists ("ovh_cloud_network_private_subnet.subnet" , t ),
88
+ resource .TestCheckResourceAttrSet ("ovh_cloud_network_private_subnet.subnet" , "project_id" ),
89
+ resource .TestCheckResourceAttrSet ("ovh_cloud_network_private_subnet.subnet" , "network_id" ),
90
+ resource .TestCheckResourceAttr ("ovh_cloud_network_private_subnet.subnet" , "start" , "192.168.168.100" ),
91
+ resource .TestCheckResourceAttr ("ovh_cloud_network_private_subnet.subnet" , "end" , "192.168.168.200" ),
92
+ resource .TestCheckResourceAttr ("ovh_cloud_network_private_subnet.subnet" , "network" , "192.168.168.0/24" ),
55
93
),
56
94
},
57
95
},
@@ -61,56 +99,5 @@ func TestAccPublicCloudPrivateNetworkSubnet_basic(t *testing.T) {
61
99
func testAccCheckPublicCloudPrivateNetworkSubnetPreCheck (t * testing.T ) {
62
100
testAccPreCheckPublicCloud (t )
63
101
testAccCheckPublicCloudExists (t )
64
- }
65
-
66
- func testAccCheckPublicCloudPrivateNetworkSubnetExists (n string , t * testing.T ) resource.TestCheckFunc {
67
- return func (s * terraform.State ) error {
68
- config := testAccProvider .Meta ().(* Config )
69
-
70
- rs , ok := s .RootModule ().Resources [n ]
71
- if ! ok {
72
- return fmt .Errorf ("Not found: %s" , n )
73
- }
74
-
75
- if rs .Primary .ID == "" {
76
- return fmt .Errorf ("No ID is set" )
77
- }
78
-
79
- if rs .Primary .Attributes ["project_id" ] == "" {
80
- return fmt .Errorf ("No Project ID is set" )
81
- }
82
-
83
- if rs .Primary .Attributes ["network_id" ] == "" {
84
- return fmt .Errorf ("No Network ID is set" )
85
- }
86
-
87
- return publicCloudPrivateNetworkSubnetExists (
88
- rs .Primary .Attributes ["project_id" ],
89
- rs .Primary .Attributes ["network_id" ],
90
- rs .Primary .ID ,
91
- config .OVHClient ,
92
- )
93
- }
94
- }
95
-
96
- func testAccCheckPublicCloudPrivateNetworkSubnetDestroy (s * terraform.State ) error {
97
- config := testAccProvider .Meta ().(* Config )
98
- for _ , rs := range s .RootModule ().Resources {
99
- if rs .Type != "ovh_cloud_network_private_subnet" {
100
- continue
101
- }
102
-
103
- err := publicCloudPrivateNetworkSubnetExists (
104
- rs .Primary .Attributes ["project_id" ],
105
- rs .Primary .Attributes ["network_id" ],
106
- rs .Primary .ID ,
107
- config .OVHClient ,
108
- )
109
-
110
- if err == nil {
111
- return fmt .Errorf ("VRack > Public Cloud Private Network Subnet still exists" )
112
- }
113
-
114
- }
115
- return nil
102
+ testAccPreCheckVRack (t )
116
103
}
0 commit comments