-
Notifications
You must be signed in to change notification settings - Fork 10
/
service_volcengine_ecs_instance_type.go
126 lines (111 loc) · 3.83 KB
/
service_volcengine_ecs_instance_type.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package ecs_instance_type
import (
"encoding/json"
"errors"
"time"
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
ve "github.com/volcengine/terraform-provider-volcengine/common"
"github.com/volcengine/terraform-provider-volcengine/logger"
)
type VolcengineEcsInstanceTypeService struct {
Client *ve.SdkClient
Dispatcher *ve.Dispatcher
}
func NewEcsInstanceTypeService(c *ve.SdkClient) *VolcengineEcsInstanceTypeService {
return &VolcengineEcsInstanceTypeService{
Client: c,
Dispatcher: &ve.Dispatcher{},
}
}
func (s *VolcengineEcsInstanceTypeService) GetClient() *ve.SdkClient {
return s.Client
}
func (s *VolcengineEcsInstanceTypeService) ReadResources(condition map[string]interface{}) (data []interface{}, err error) {
var (
resp *map[string]interface{}
results interface{}
nextToken interface{}
next string
ok bool
)
return ve.WithNextTokenQuery(condition, "MaxResults", "NextToken", 20, nil, func(m map[string]interface{}) ([]interface{}, string, error) {
action := "DescribeInstanceTypes"
bytes, _ := json.Marshal(condition)
logger.Debug(logger.ReqFormat, action, string(bytes))
if condition == nil {
resp, err = s.Client.UniversalClient.DoCall(getUniversalInfo(action), nil)
if err != nil {
return data, next, err
}
} else {
resp, err = s.Client.UniversalClient.DoCall(getUniversalInfo(action), &condition)
if err != nil {
return data, next, err
}
}
respBytes, _ := json.Marshal(resp)
logger.Debug(logger.RespFormat, action, condition, string(respBytes))
results, err = ve.ObtainSdkValue("Result.InstanceTypes", *resp)
if err != nil {
return data, next, err
}
nextToken, err = ve.ObtainSdkValue("Result.NextToken", *resp)
if err != nil {
return data, next, err
}
next = nextToken.(string)
if results == nil {
results = []interface{}{}
}
if data, ok = results.([]interface{}); !ok {
return data, next, errors.New("Result.InstanceTypes is not Slice")
}
return data, next, err
})
}
func (s *VolcengineEcsInstanceTypeService) ReadResource(resourceData *schema.ResourceData, id string) (data map[string]interface{}, err error) {
return data, err
}
func (s *VolcengineEcsInstanceTypeService) RefreshResourceState(resourceData *schema.ResourceData, target []string, timeout time.Duration, id string) *resource.StateChangeConf {
return &resource.StateChangeConf{}
}
func (s *VolcengineEcsInstanceTypeService) CreateResource(resourceData *schema.ResourceData, resource *schema.Resource) []ve.Callback {
return []ve.Callback{}
}
func (VolcengineEcsInstanceTypeService) WithResourceResponseHandlers(d map[string]interface{}) []ve.ResourceResponseHandler {
handler := func() (map[string]interface{}, map[string]ve.ResponseConvert, error) {
return d, nil, nil
}
return []ve.ResourceResponseHandler{handler}
}
func (s *VolcengineEcsInstanceTypeService) ModifyResource(resourceData *schema.ResourceData, resource *schema.Resource) []ve.Callback {
return []ve.Callback{}
}
func (s *VolcengineEcsInstanceTypeService) RemoveResource(resourceData *schema.ResourceData, r *schema.Resource) []ve.Callback {
return []ve.Callback{}
}
func (s *VolcengineEcsInstanceTypeService) DatasourceResources(*schema.ResourceData, *schema.Resource) ve.DataSourceInfo {
return ve.DataSourceInfo{
RequestConverts: map[string]ve.RequestConvert{
"ids": {
TargetField: "InstanceTypeIds",
ConvertType: ve.ConvertWithN,
},
},
IdField: "InstanceTypeId",
CollectField: "instance_types",
}
}
func (s *VolcengineEcsInstanceTypeService) ReadResourceId(id string) string {
return id
}
func getUniversalInfo(actionName string) ve.UniversalInfo {
return ve.UniversalInfo{
ServiceName: "ecs",
Version: "2020-04-01",
HttpMethod: ve.GET,
ContentType: ve.Default,
Action: actionName,
}
}