Skip to content

Commit 4ed097d

Browse files
refactor(ims): refactor ims_ecs_system_image resource code style (#6587)
1 parent 27bfa79 commit 4ed097d

4 files changed

+675
-253
lines changed

huaweicloud/services/acceptance/ims/resource_huaweicloud_ims_ecs_system_image_test.go

+29-11
Original file line numberDiff line numberDiff line change
@@ -9,35 +9,53 @@ import (
99
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
1010

1111
"github.com/chnsz/golangsdk"
12-
"github.com/chnsz/golangsdk/openstack/ims/v2/cloudimages"
1312

1413
"github.com/huaweicloud/terraform-provider-huaweicloud/huaweicloud/config"
1514
"github.com/huaweicloud/terraform-provider-huaweicloud/huaweicloud/services/acceptance"
1615
"github.com/huaweicloud/terraform-provider-huaweicloud/huaweicloud/services/acceptance/common"
17-
"github.com/huaweicloud/terraform-provider-huaweicloud/huaweicloud/services/ims"
16+
"github.com/huaweicloud/terraform-provider-huaweicloud/huaweicloud/utils"
1817
)
1918

20-
func getImsImageResourceFunc(cfg *config.Config, state *terraform.ResourceState) (interface{}, error) {
21-
client, err := cfg.ImageV2Client(acceptance.HW_REGION_NAME)
19+
func getEcsSystemImageResourceFunc(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)
2238
if err != nil {
23-
return nil, fmt.Errorf("error creating IMS v2 client: %s", err)
39+
return nil, fmt.Errorf("error retrieving IMS ECS system image: %s", err)
2440
}
2541

26-
imageList, err := ims.GetImageList(client, state.Primary.ID)
42+
getRespBody, err := utils.FlattenResponse(getResp)
2743
if err != nil {
28-
return nil, fmt.Errorf("error retrieving IMS ECS system images: %s", err)
44+
return nil, err
2945
}
3046

31-
if len(imageList) < 1 {
47+
image := utils.PathSearch("images[0]", getRespBody, nil)
48+
// If the list API return empty, then return `404` error code.
49+
if image == nil {
3250
return nil, golangsdk.ErrDefault404{}
3351
}
3452

35-
return imageList[0], nil
53+
return image, nil
3654
}
3755

3856
func TestAccEcsSystemImage_basic(t *testing.T) {
3957
var (
40-
image cloudimages.Image
58+
image interface{}
4159
rName = acceptance.RandomAccResourceName()
4260
rNameUpdate = rName + "-update"
4361
resourceName = "huaweicloud_ims_ecs_system_image.test"
@@ -48,7 +66,7 @@ func TestAccEcsSystemImage_basic(t *testing.T) {
4866
rc := acceptance.InitResourceCheck(
4967
resourceName,
5068
&image,
51-
getImsImageResourceFunc,
69+
getEcsSystemImageResourceFunc,
5270
)
5371

5472
resource.ParallelTest(t, resource.TestCase{

huaweicloud/services/acceptance/ims/resource_huaweicloud_ims_obs_iso_image_test.go

+23
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,35 @@ import (
66
"testing"
77

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

11+
"github.com/chnsz/golangsdk"
1012
"github.com/chnsz/golangsdk/openstack/ims/v2/cloudimages"
1113

14+
"github.com/huaweicloud/terraform-provider-huaweicloud/huaweicloud/config"
1215
"github.com/huaweicloud/terraform-provider-huaweicloud/huaweicloud/services/acceptance"
16+
"github.com/huaweicloud/terraform-provider-huaweicloud/huaweicloud/services/ims"
1317
)
1418

19+
// This method is being used by other resources and will be deleted in the future.
20+
func getImsImageResourceFunc(cfg *config.Config, state *terraform.ResourceState) (interface{}, error) {
21+
client, err := cfg.ImageV2Client(acceptance.HW_REGION_NAME)
22+
if err != nil {
23+
return nil, fmt.Errorf("error creating IMS v2 client: %s", err)
24+
}
25+
26+
imageList, err := ims.GetImageList(client, state.Primary.ID)
27+
if err != nil {
28+
return nil, fmt.Errorf("error retrieving IMS images: %s", err)
29+
}
30+
31+
if len(imageList) < 1 {
32+
return nil, golangsdk.ErrDefault404{}
33+
}
34+
35+
return imageList[0], nil
36+
}
37+
1538
func TestAccObsIsoImage_basic(t *testing.T) {
1639
var (
1740
image cloudimages.Image

0 commit comments

Comments
 (0)