-
Notifications
You must be signed in to change notification settings - Fork 9
/
service_volcengine_veenedge_available_resource.go
120 lines (103 loc) · 3.26 KB
/
service_volcengine_veenedge_available_resource.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
package available_resource
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 VolcengineResourceService struct {
Client *ve.SdkClient
}
func NewResourceService(c *ve.SdkClient) *VolcengineResourceService {
return &VolcengineResourceService{
Client: c,
}
}
func (s *VolcengineResourceService) GetClient() *ve.SdkClient {
return s.Client
}
func (s *VolcengineResourceService) ReadResources(condition map[string]interface{}) (data []interface{}, err error) {
var (
resp *map[string]interface{}
results interface{}
ok bool
)
action := "ListAvailableResourceInfo"
bytes, _ := json.Marshal(condition)
logger.Debug(logger.ReqFormat, action, string(bytes))
if condition == nil {
resp, err = s.Client.UniversalClient.DoCall(universalGet(action), nil)
if err != nil {
return data, err
}
} else {
resp, err = s.Client.UniversalClient.DoCall(universalGet(action), &condition)
if err != nil {
return data, err
}
}
respBytes, _ := json.Marshal(resp)
logger.Debug(logger.RespFormat, action, condition, string(respBytes))
results, err = ve.ObtainSdkValue("Result.regions", *resp)
if err != nil {
return data, err
}
if results == nil {
results = []interface{}{}
}
if data, ok = results.([]interface{}); !ok {
return data, errors.New(" Result.regions is not Slice")
}
return data, err
}
func (s *VolcengineResourceService) ReadResource(resourceData *schema.ResourceData, id string) (data map[string]interface{}, err error) {
return nil, nil
}
func (s *VolcengineResourceService) RefreshResourceState(resourceData *schema.ResourceData, target []string, timeout time.Duration, id string) *resource.StateChangeConf {
return nil
}
func (s *VolcengineResourceService) WithResourceResponseHandlers(d map[string]interface{}) []ve.ResourceResponseHandler {
return []ve.ResourceResponseHandler{}
}
func (s *VolcengineResourceService) CreateResource(resourceData *schema.ResourceData, resource *schema.Resource) []ve.Callback {
return []ve.Callback{}
}
func (s *VolcengineResourceService) ModifyResource(resourceData *schema.ResourceData, resource *schema.Resource) []ve.Callback {
var callbacks []ve.Callback
return callbacks
}
func (s *VolcengineResourceService) RemoveResource(resourceData *schema.ResourceData, r *schema.Resource) []ve.Callback {
return []ve.Callback{}
}
func (s *VolcengineResourceService) DatasourceResources(*schema.ResourceData, *schema.Resource) ve.DataSourceInfo {
return ve.DataSourceInfo{
RequestConverts: map[string]ve.RequestConvert{
"instance_type": {
TargetField: "instance_type",
},
"cloud_disk_type": {
TargetField: "cloud_disk_type",
},
"bandwith_limit": {
TargetField: "bandwith_limit",
},
},
ContentType: ve.ContentTypeJson,
CollectField: "regions",
}
}
func (s *VolcengineResourceService) ReadResourceId(id string) string {
return id
}
func universalGet(actionName string) ve.UniversalInfo {
return ve.UniversalInfo{
ServiceName: "veenedge",
Version: "2021-04-30",
HttpMethod: ve.GET,
ContentType: ve.Default,
Action: actionName,
}
}