@@ -9,35 +9,53 @@ import (
9
9
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
10
10
11
11
"github.com/chnsz/golangsdk"
12
- "github.com/chnsz/golangsdk/openstack/ims/v2/cloudimages"
13
12
14
13
"github.com/huaweicloud/terraform-provider-huaweicloud/huaweicloud/config"
15
14
"github.com/huaweicloud/terraform-provider-huaweicloud/huaweicloud/services/acceptance"
16
15
"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 "
18
17
)
19
18
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 )
22
38
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 )
24
40
}
25
41
26
- imageList , err := ims . GetImageList ( client , state . Primary . ID )
42
+ getRespBody , err := utils . FlattenResponse ( getResp )
27
43
if err != nil {
28
- return nil , fmt . Errorf ( "error retrieving IMS ECS system images: %s" , err )
44
+ return nil , err
29
45
}
30
46
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 {
32
50
return nil , golangsdk.ErrDefault404 {}
33
51
}
34
52
35
- return imageList [ 0 ] , nil
53
+ return image , nil
36
54
}
37
55
38
56
func TestAccEcsSystemImage_basic (t * testing.T ) {
39
57
var (
40
- image cloudimages. Image
58
+ image interface {}
41
59
rName = acceptance .RandomAccResourceName ()
42
60
rNameUpdate = rName + "-update"
43
61
resourceName = "huaweicloud_ims_ecs_system_image.test"
@@ -48,7 +66,7 @@ func TestAccEcsSystemImage_basic(t *testing.T) {
48
66
rc := acceptance .InitResourceCheck (
49
67
resourceName ,
50
68
& image ,
51
- getImsImageResourceFunc ,
69
+ getEcsSystemImageResourceFunc ,
52
70
)
53
71
54
72
resource .ParallelTest (t , resource.TestCase {
0 commit comments