Skip to content

Commit d84f298

Browse files
authored
Merge pull request #124 from yanndegat/fix/importsubnet
Fix/importsubnet
2 parents f70bfe7 + 0b41bd5 commit d84f298

20 files changed

+565
-372
lines changed

ovh/data_source_ovh_publiccloud_region.go ovh/data_source_ovh_cloud_region.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import (
1111
"github.com/ovh/go-ovh/ovh"
1212
)
1313

14-
func dataSourcePublicCloudRegion() *schema.Resource {
14+
func dataSourceCloudRegion() *schema.Resource {
1515
return &schema.Resource{
16-
Read: dataSourcePublicCloudRegionRead,
16+
Read: dataSourceCloudRegionRead,
1717
Schema: map[string]*schema.Schema{
1818
"project_id": {
1919
Type: schema.TypeString,
@@ -28,7 +28,7 @@ func dataSourcePublicCloudRegion() *schema.Resource {
2828
},
2929
"services": {
3030
Type: schema.TypeSet,
31-
Set: publicCloudServiceHash,
31+
Set: cloudServiceHash,
3232
Computed: true,
3333
Elem: &schema.Resource{
3434
Schema: map[string]*schema.Schema{
@@ -68,7 +68,7 @@ func dataSourcePublicCloudRegion() *schema.Resource {
6868
}
6969
}
7070

71-
func dataSourcePublicCloudRegionRead(d *schema.ResourceData, meta interface{}) error {
71+
func dataSourceCloudRegionRead(d *schema.ResourceData, meta interface{}) error {
7272
config := meta.(*Config)
7373
projectId := d.Get("project_id").(string)
7474
name := d.Get("name").(string)
@@ -87,7 +87,7 @@ func dataSourcePublicCloudRegionRead(d *schema.ResourceData, meta interface{}) e
8787
d.Set("continent_code", region.ContinentCode)
8888

8989
services := &schema.Set{
90-
F: publicCloudServiceHash,
90+
F: cloudServiceHash,
9191
}
9292
for i := range region.Services {
9393
service := map[string]interface{}{
@@ -103,10 +103,10 @@ func dataSourcePublicCloudRegionRead(d *schema.ResourceData, meta interface{}) e
103103
return nil
104104
}
105105

106-
func getCloudRegion(projectId, region string, client *ovh.Client) (*PublicCloudRegionResponse, error) {
106+
func getCloudRegion(projectId, region string, client *ovh.Client) (*CloudRegionResponse, error) {
107107
log.Printf("[DEBUG] Will read public cloud region %s for project: %s", region, projectId)
108108

109-
response := &PublicCloudRegionResponse{}
109+
response := &CloudRegionResponse{}
110110
endpoint := fmt.Sprintf(
111111
"/cloud/project/%s/region/%s",
112112
url.PathEscape(projectId),
@@ -120,7 +120,7 @@ func getCloudRegion(projectId, region string, client *ovh.Client) (*PublicCloudR
120120
return response, nil
121121
}
122122

123-
func publicCloudServiceHash(v interface{}) int {
123+
func cloudServiceHash(v interface{}) int {
124124
r := v.(map[string]interface{})
125125
return hashcode.String(r["name"].(string))
126126
}

ovh/data_source_ovh_publiccloud_region_test.go ovh/data_source_ovh_cloud_region_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ import (
88
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
99
)
1010

11-
func TestAccPublicCloudRegionDataSource_basic(t *testing.T) {
11+
func TestAccCloudRegionDataSource_basic(t *testing.T) {
1212
resource.Test(t, resource.TestCase{
13-
PreCheck: func() { testAccPreCheckPublicCloud(t) },
13+
PreCheck: func() { testAccPreCheckCloud(t) },
1414
Providers: testAccProviders,
1515
Steps: []resource.TestStep{
1616
{
17-
Config: testAccPublicCloudRegionDatasourceConfig,
17+
Config: testAccCloudRegionDatasourceConfig,
1818
Check: resource.ComposeTestCheckFunc(
1919
resource.TestCheckResourceAttrSet("data.ovh_cloud_region.region_attr.0", "name"),
2020
resource.TestCheckResourceAttrSet("data.ovh_cloud_region.region_attr.0", "services.#"),
@@ -28,7 +28,7 @@ func TestAccPublicCloudRegionDataSource_basic(t *testing.T) {
2828
})
2929
}
3030

31-
var testAccPublicCloudRegionDatasourceConfig = fmt.Sprintf(`
31+
var testAccCloudRegionDatasourceConfig = fmt.Sprintf(`
3232
data "ovh_cloud_regions" "regions" {
3333
project_id = "%s"
3434
}

ovh/data_source_ovh_publiccloud_regions.go ovh/data_source_ovh_cloud_regions.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import (
88
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
99
)
1010

11-
func dataSourcePublicCloudRegions() *schema.Resource {
11+
func dataSourceCloudRegions() *schema.Resource {
1212
return &schema.Resource{
13-
Read: dataSourcePublicCloudRegionsRead,
13+
Read: dataSourceCloudRegionsRead,
1414
Schema: map[string]*schema.Schema{
1515
"project_id": {
1616
Type: schema.TypeString,
@@ -34,7 +34,7 @@ func dataSourcePublicCloudRegions() *schema.Resource {
3434
}
3535
}
3636

37-
func dataSourcePublicCloudRegionsRead(d *schema.ResourceData, meta interface{}) error {
37+
func dataSourceCloudRegionsRead(d *schema.ResourceData, meta interface{}) error {
3838
config := meta.(*Config)
3939
projectId := d.Get("project_id").(string)
4040

ovh/data_source_ovh_publiccloud_regions_test.go ovh/data_source_ovh_cloud_regions_test.go

+12-12
Original file line numberDiff line numberDiff line change
@@ -8,58 +8,58 @@ import (
88
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
99
)
1010

11-
func TestAccPublicCloudRegionsDataSource_basic(t *testing.T) {
11+
func TestAccCloudRegionsDataSource_basic(t *testing.T) {
1212
resource.Test(t, resource.TestCase{
13-
PreCheck: func() { testAccPreCheckPublicCloud(t) },
13+
PreCheck: func() { testAccPreCheckCloud(t) },
1414
Providers: testAccProviders,
1515
Steps: []resource.TestStep{
1616
{
17-
Config: testAccPublicCloudRegionsDatasourceConfig,
17+
Config: testAccCloudRegionsDatasourceConfig,
1818
Check: resource.TestCheckResourceAttrSet("data.ovh_cloud_regions.regions", "names.#"),
1919
},
2020
},
2121
})
2222
}
2323

24-
func TestAccPublicCloudRegionsDataSource_withNetworkUp(t *testing.T) {
24+
func TestAccCloudRegionsDataSource_withNetworkUp(t *testing.T) {
2525
resource.Test(t, resource.TestCase{
26-
PreCheck: func() { testAccPreCheckPublicCloud(t) },
26+
PreCheck: func() { testAccPreCheckCloud(t) },
2727
Providers: testAccProviders,
2828
Steps: []resource.TestStep{
2929
{
30-
Config: testAccPublicCloudRegionsDatasourceConfig_withNetwork,
30+
Config: testAccCloudRegionsDatasourceConfig_withNetwork,
3131
Check: resource.TestCheckResourceAttrSet("data.ovh_cloud_regions.regions", "names.#"),
3232
},
3333
},
3434
})
3535
}
3636

37-
func TestAccPublicCloudRegionsDataSource_withProjectIdEnvVar(t *testing.T) {
37+
func TestAccCloudRegionsDataSource_withProjectIdEnvVar(t *testing.T) {
3838
os.Setenv("OVH_PROJECT_ID", os.Getenv("OVH_PUBLIC_CLOUD"))
3939

4040
resource.Test(t, resource.TestCase{
41-
PreCheck: func() { testAccPreCheckPublicCloud(t) },
41+
PreCheck: func() { testAccPreCheckCloud(t) },
4242
Providers: testAccProviders,
4343
Steps: []resource.TestStep{
4444
{
45-
Config: testAccPublicCloudRegionsDatasourceConfig_withProjectIdEnvVar,
45+
Config: testAccCloudRegionsDatasourceConfig_withProjectIdEnvVar,
4646
Check: resource.TestCheckResourceAttrSet("data.ovh_cloud_regions.regions", "names.#"),
4747
},
4848
},
4949
})
5050
}
5151

52-
var testAccPublicCloudRegionsDatasourceConfig = fmt.Sprintf(`
52+
var testAccCloudRegionsDatasourceConfig = fmt.Sprintf(`
5353
data "ovh_cloud_regions" "regions" {
5454
project_id = "%s"
5555
}
5656
`, os.Getenv("OVH_PUBLIC_CLOUD"))
5757

58-
var testAccPublicCloudRegionsDatasourceConfig_withProjectIdEnvVar = `
58+
var testAccCloudRegionsDatasourceConfig_withProjectIdEnvVar = `
5959
data "ovh_cloud_regions" "regions" {}
6060
`
6161

62-
var testAccPublicCloudRegionsDatasourceConfig_withNetwork = fmt.Sprintf(`
62+
var testAccCloudRegionsDatasourceConfig_withNetwork = fmt.Sprintf(`
6363
data "ovh_cloud_regions" "regions" {
6464
project_id = "%s"
6565
has_services_up = ["network"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package ovh
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
8+
"github.com/hashicorp/terraform-plugin-sdk/terraform"
9+
)
10+
11+
func TestAccCloudNetworkPrivateSubnet_importBasic(t *testing.T) {
12+
resource.Test(t, resource.TestCase{
13+
PreCheck: func() {
14+
testAccPreCheckCredentials(t)
15+
testAccCheckcCloudNetworkPrivateSubnetPreCheck(t)
16+
},
17+
Providers: testAccProviders,
18+
Steps: []resource.TestStep{
19+
{
20+
Config: testAccCloudNetworkPrivateSubnetConfig(),
21+
},
22+
{
23+
ResourceName: "ovh_cloud_network_private_subnet.subnet",
24+
ImportState: true,
25+
ImportStateVerify: true,
26+
ImportStateIdFunc: testAccCloudNetworkPrivateSubnetImportId("ovh_cloud_network_private_subnet.subnet"),
27+
},
28+
},
29+
})
30+
}
31+
32+
func testAccCloudNetworkPrivateSubnetImportId(resourceName string) resource.ImportStateIdFunc {
33+
return func(s *terraform.State) (string, error) {
34+
subnet, ok := s.RootModule().Resources[resourceName]
35+
if !ok {
36+
return "", fmt.Errorf("subnet not found: %s", resourceName)
37+
}
38+
39+
return fmt.Sprintf(
40+
"%s/%s/%s",
41+
subnet.Primary.Attributes["project_id"],
42+
subnet.Primary.Attributes["network_id"],
43+
subnet.Primary.ID,
44+
), nil
45+
}
46+
}

ovh/provider.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ func Provider() terraform.ResourceProvider {
4141
},
4242

4343
DataSourcesMap: map[string]*schema.Resource{
44-
"ovh_cloud_region": dataSourcePublicCloudRegion(),
45-
"ovh_cloud_regions": dataSourcePublicCloudRegions(),
44+
"ovh_cloud_region": dataSourceCloudRegion(),
45+
"ovh_cloud_regions": dataSourceCloudRegions(),
4646
"ovh_dedicated_installation_templates": dataSourceDedicatedInstallationTemplates(),
4747
"ovh_dedicated_server": dataSourceDedicatedServer(),
4848
"ovh_dedicated_server_boots": dataSourceDedicatedServerBoots(),
@@ -58,16 +58,16 @@ func Provider() terraform.ResourceProvider {
5858
"ovh_vracks": dataSourceVracks(),
5959

6060
// Legacy naming schema (publiccloud)
61-
"ovh_publiccloud_region": deprecated(dataSourcePublicCloudRegion(),
61+
"ovh_publiccloud_region": deprecated(dataSourceCloudRegion(),
6262
"Use ovh_cloud_region data source instead"),
63-
"ovh_publiccloud_regions": deprecated(dataSourcePublicCloudRegions(),
63+
"ovh_publiccloud_regions": deprecated(dataSourceCloudRegions(),
6464
"Use ovh_cloud_regions data source instead"),
6565
},
6666

6767
ResourcesMap: map[string]*schema.Resource{
68-
"ovh_cloud_network_private": resourcePublicCloudPrivateNetwork(),
69-
"ovh_cloud_network_private_subnet": resourcePublicCloudPrivateNetworkSubnet(),
70-
"ovh_cloud_user": resourcePublicCloudUser(),
68+
"ovh_cloud_network_private": resourceCloudNetworkPrivate(),
69+
"ovh_cloud_network_private_subnet": resourceCloudNetworkPrivateSubnet(),
70+
"ovh_cloud_user": resourceCloudUser(),
7171
"ovh_dedicated_server_update": resourceDedicatedServerUpdate(),
7272
"ovh_dedicated_server_install_task": resourceDedicatedServerInstallTask(),
7373
"ovh_dedicated_server_reboot_task": resourceDedicatedServerRebootTask(),
@@ -93,11 +93,11 @@ func Provider() terraform.ResourceProvider {
9393
"ovh_vrack_dedicated_server_interface": resourceVrackDedicatedServerInterface(),
9494

9595
// Legacy naming schema (publiccloud)
96-
"ovh_publiccloud_private_network": deprecated(resourcePublicCloudPrivateNetwork(),
96+
"ovh_publiccloud_private_network": deprecated(resourceCloudNetworkPrivate(),
9797
"Use ovh_cloud_network_private resource instead"),
98-
"ovh_publiccloud_private_network_subnet": deprecated(resourcePublicCloudPrivateNetworkSubnet(),
98+
"ovh_publiccloud_private_network_subnet": deprecated(resourceCloudNetworkPrivateSubnet(),
9999
"Use ovh_cloud_network_private_subnet resource instead"),
100-
"ovh_publiccloud_user": deprecated(resourcePublicCloudUser(),
100+
"ovh_publiccloud_user": deprecated(resourceCloudUser(),
101101
"Use ovh_cloud_user resource instead"),
102102
"ovh_vrack_publiccloud_attachment": deprecated(resourceVrackCloudProject(),
103103
"Use ovh_vrack_cloudproject resource instead"),

ovh/provider_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func testAccPreCheckDomain(t *testing.T) {
8888

8989
// Checks that the environment variables needed for the /cloud acceptance tests
9090
// are set.
91-
func testAccPreCheckPublicCloud(t *testing.T) {
91+
func testAccPreCheckCloud(t *testing.T) {
9292
testAccPreCheckCredentials(t)
9393
checkEnvOrSkip(t, "OVH_PUBLIC_CLOUD")
9494
}
@@ -137,7 +137,7 @@ func testAccCheckVRackExists(t *testing.T) {
137137

138138
}
139139

140-
func testAccCheckPublicCloudExists(t *testing.T) {
140+
func testAccCheckCloudExists(t *testing.T) {
141141
type cloudProjectResponse struct {
142142
ID string `json:"project_id"`
143143
Status string `json:"status"`

0 commit comments

Comments
 (0)