Skip to content

Commit c619dda

Browse files
refactor(ims): refactor ims_evs_system_image resource code style
1 parent 4ed097d commit c619dda

File tree

2 files changed

+432
-62
lines changed

2 files changed

+432
-62
lines changed

huaweicloud/services/acceptance/ims/resource_huaweicloud_ims_evs_system_image_test.go

Lines changed: 83 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,56 @@ import (
66
"testing"
77

88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
910

10-
"github.com/chnsz/golangsdk/openstack/ims/v2/cloudimages"
11+
"github.com/chnsz/golangsdk"
1112

13+
"github.com/huaweicloud/terraform-provider-huaweicloud/huaweicloud/config"
1214
"github.com/huaweicloud/terraform-provider-huaweicloud/huaweicloud/services/acceptance"
15+
"github.com/huaweicloud/terraform-provider-huaweicloud/huaweicloud/services/acceptance/common"
16+
"github.com/huaweicloud/terraform-provider-huaweicloud/huaweicloud/utils"
1317
)
1418

19+
func getEvsSystemImageResourceFunc(cfg *config.Config, state *terraform.ResourceState) (interface{}, error) {
20+
var (
21+
region = acceptance.HW_REGION_NAME
22+
product = "ims"
23+
httpUrl = "v2/cloudimages"
24+
)
25+
26+
client, err := cfg.NewServiceClient(product, region)
27+
if err != nil {
28+
return nil, fmt.Errorf("error creating IMS client: %s", err)
29+
}
30+
31+
getPath := client.Endpoint + httpUrl
32+
getPath += fmt.Sprintf("?id=%s", state.Primary.ID)
33+
getOpt := golangsdk.RequestOpts{
34+
KeepResponseBody: true,
35+
}
36+
37+
getResp, err := client.Request("GET", getPath, &getOpt)
38+
if err != nil {
39+
return nil, fmt.Errorf("error retrieving IMS EVS system image: %s", err)
40+
}
41+
42+
getRespBody, err := utils.FlattenResponse(getResp)
43+
if err != nil {
44+
return nil, err
45+
}
46+
47+
image := utils.PathSearch("images[0]", getRespBody, nil)
48+
// If the list API return empty, then return `404` error code.
49+
if image == nil {
50+
return nil, golangsdk.ErrDefault404{}
51+
}
52+
53+
return image, nil
54+
}
55+
1556
func TestAccEvsSystemImage_basic(t *testing.T) {
1657
var (
17-
image cloudimages.Image
58+
image interface{}
1859
rName = acceptance.RandomAccResourceName()
1960
rNameUpdate = rName + "-update"
2061
resourceName = "huaweicloud_ims_evs_system_image.test"
@@ -25,7 +66,7 @@ func TestAccEvsSystemImage_basic(t *testing.T) {
2566
rc := acceptance.InitResourceCheck(
2667
resourceName,
2768
&image,
28-
getImsImageResourceFunc,
69+
getEvsSystemImageResourceFunc,
2970
)
3071

3172
resource.ParallelTest(t, resource.TestCase{
@@ -108,6 +149,42 @@ func TestAccEvsSystemImage_basic(t *testing.T) {
108149
})
109150
}
110151

152+
func testAccEvsSystemImage_base(rName string) string {
153+
return fmt.Sprintf(`
154+
%[1]s
155+
156+
data "huaweicloud_availability_zones" "test" {}
157+
158+
data "huaweicloud_compute_flavors" "test" {
159+
availability_zone = data.huaweicloud_availability_zones.test.names[0]
160+
performance_type = "normal"
161+
cpu_core_count = 2
162+
memory_size = 4
163+
}
164+
165+
resource "huaweicloud_compute_instance" "test" {
166+
name = "%[2]s"
167+
image_name = "Ubuntu 18.04 server 64bit"
168+
flavor_id = data.huaweicloud_compute_flavors.test.ids[0]
169+
security_group_ids = [huaweicloud_networking_secgroup.test.id]
170+
availability_zone = data.huaweicloud_availability_zones.test.names[0]
171+
172+
network {
173+
uuid = huaweicloud_vpc_subnet.test.id
174+
}
175+
}
176+
177+
resource "huaweicloud_evs_volume" "test" {
178+
name = "%[2]s"
179+
volume_type = "GPSSD"
180+
availability_zone = data.huaweicloud_availability_zones.test.names[0]
181+
server_id = huaweicloud_compute_instance.test.id
182+
size = 100
183+
charging_mode = "postPaid"
184+
}
185+
`, common.TestBaseNetwork(rName), rName)
186+
}
187+
111188
func testAccEvsSystemImage_basic(rName string) string {
112189
return fmt.Sprintf(`
113190
%[1]s
@@ -126,7 +203,7 @@ resource "huaweicloud_ims_evs_system_image" "test" {
126203
key = "value"
127204
}
128205
}
129-
`, testAccEvsDataImage_base(rName), rName)
206+
`, testAccEvsSystemImage_base(rName), rName)
130207
}
131208

132209
func testAccEvsSystemImage_update1(rName, rNameUpdate, migrateEpsId string, maxRAM, minRAM int) string {
@@ -148,7 +225,7 @@ resource "huaweicloud_ims_evs_system_image" "test" {
148225
key2 = "value2"
149226
}
150227
}
151-
`, testAccEvsDataImage_base(rName), rNameUpdate, migrateEpsId, maxRAM, minRAM)
228+
`, testAccEvsSystemImage_base(rName), rNameUpdate, migrateEpsId, maxRAM, minRAM)
152229
}
153230

154231
func testAccEvsSystemImage_update2(rName, rNameUpdate, defaultEpsId string, maxRAM, minRAM int) string {
@@ -170,5 +247,5 @@ resource "huaweicloud_ims_evs_system_image" "test" {
170247
key2 = "value2"
171248
}
172249
}
173-
`, testAccEvsDataImage_base(rName), rNameUpdate, defaultEpsId, maxRAM, minRAM)
250+
`, testAccEvsSystemImage_base(rName), rNameUpdate, defaultEpsId, maxRAM, minRAM)
174251
}

0 commit comments

Comments
 (0)