@@ -12,6 +12,9 @@ const (
12
12
cloudAccountPath = "%s/api/cloud/v2/accounts/%s"
13
13
cloudAccountWithExternalIDPath = "%s/api/cloud/v2/accounts/%s?includeExternalID=true"
14
14
providersPath = "%v/api/v2/providers"
15
+ costCloudAccountPath = "%s/api/cloudaccount"
16
+ costProviderURL = "%s/api/cloudaccount/features/cost/account?id=%d"
17
+ updateCostProviderURL = "%s/api/cloudaccount/features/cost"
15
18
)
16
19
17
20
type CloudAccountSecureInterface interface {
@@ -25,8 +28,11 @@ type CloudAccountSecureInterface interface {
25
28
type CloudAccountMonitorInterface interface {
26
29
Base
27
30
CreateCloudAccountMonitor (ctx context.Context , provider * CloudAccountMonitor ) (* CloudAccountMonitor , error )
31
+ CreateCloudAccountMonitorForCost (ctx context.Context , provider * CloudAccountMonitorForCost ) (* CloudAccountCreatedForCost , error )
28
32
UpdateCloudAccountMonitor (ctx context.Context , id int , provider * CloudAccountMonitor ) (* CloudAccountMonitor , error )
33
+ UpdateCloudAccountMonitorForCost (ctx context.Context , provider * CloudAccountCostProvider ) (* CloudAccountCostProvider , error )
29
34
GetCloudAccountMonitor (ctx context.Context , id int ) (* CloudAccountMonitor , error )
35
+ GetCloudAccountMonitorForCost (ctx context.Context , id int ) (* CloudAccountCostProvider , error )
30
36
DeleteCloudAccountMonitor (ctx context.Context , id int ) error
31
37
}
32
38
@@ -135,6 +141,30 @@ func (client *Client) CreateCloudAccountMonitor(ctx context.Context, provider *C
135
141
return & wrapper .CloudAccount , nil
136
142
}
137
143
144
+ func (client * Client ) CreateCloudAccountMonitorForCost (ctx context.Context , provider * CloudAccountMonitorForCost ) (* CloudAccountCreatedForCost , error ) {
145
+ payload , err := Marshal (provider )
146
+ if err != nil {
147
+ return nil , err
148
+ }
149
+
150
+ response , err := client .requester .Request (ctx , http .MethodPost , client .getCostProvidersURL (), payload )
151
+ if err != nil {
152
+ return nil , err
153
+ }
154
+ defer response .Body .Close ()
155
+
156
+ if response .StatusCode != http .StatusOK {
157
+ return nil , client .ErrorFromResponse (response )
158
+ }
159
+
160
+ wrapper , err := Unmarshal [CloudAccountCreatedForCost ](response .Body )
161
+ if err != nil {
162
+ return nil , err
163
+ }
164
+
165
+ return & wrapper , nil
166
+ }
167
+
138
168
func (client * Client ) UpdateCloudAccountMonitor (ctx context.Context , id int , provider * CloudAccountMonitor ) (* CloudAccountMonitor , error ) {
139
169
payload , err := Marshal (provider )
140
170
if err != nil {
@@ -159,6 +189,30 @@ func (client *Client) UpdateCloudAccountMonitor(ctx context.Context, id int, pro
159
189
return & wrapper .CloudAccount , nil
160
190
}
161
191
192
+ func (client * Client ) UpdateCloudAccountMonitorForCost (ctx context.Context , provider * CloudAccountCostProvider ) (* CloudAccountCostProvider , error ) {
193
+ payload , err := Marshal (provider )
194
+ if err != nil {
195
+ return nil , err
196
+ }
197
+
198
+ response , err := client .requester .Request (ctx , http .MethodPut , client .getUpdateCostProviderURL (), payload )
199
+ if err != nil {
200
+ return nil , err
201
+ }
202
+ defer response .Body .Close ()
203
+
204
+ if response .StatusCode != http .StatusOK {
205
+ return nil , client .ErrorFromResponse (response )
206
+ }
207
+
208
+ wrapper , err := Unmarshal [CloudAccountCostProviderWrapper ](response .Body )
209
+ if err != nil {
210
+ return nil , err
211
+ }
212
+
213
+ return & wrapper .CloudAccountCostProvider , nil
214
+ }
215
+
162
216
func (client * Client ) GetCloudAccountMonitor (ctx context.Context , id int ) (* CloudAccountMonitor , error ) {
163
217
response , err := client .requester .Request (ctx , http .MethodGet , client .getProviderURL (id ), nil )
164
218
if err != nil {
@@ -178,6 +232,25 @@ func (client *Client) GetCloudAccountMonitor(ctx context.Context, id int) (*Clou
178
232
return & wrapper .CloudAccount , nil
179
233
}
180
234
235
+ func (client * Client ) GetCloudAccountMonitorForCost (ctx context.Context , id int ) (* CloudAccountCostProvider , error ) {
236
+ response , err := client .requester .Request (ctx , http .MethodGet , client .getCostProviderURL (id ), nil )
237
+ if err != nil {
238
+ return nil , err
239
+ }
240
+ defer response .Body .Close ()
241
+
242
+ if response .StatusCode != http .StatusOK {
243
+ return nil , client .ErrorFromResponse (response )
244
+ }
245
+
246
+ wrapper , err := Unmarshal [CloudAccountCostProviderWrapper ](response .Body )
247
+ if err != nil {
248
+ return nil , err
249
+ }
250
+
251
+ return & wrapper .CloudAccountCostProvider , nil
252
+ }
253
+
181
254
func (client * Client ) DeleteCloudAccountMonitor (ctx context.Context , id int ) error {
182
255
response , err := client .requester .Request (ctx , http .MethodDelete , client .getProviderURL (id ), nil )
183
256
if err != nil {
@@ -199,3 +272,15 @@ func (client *Client) getProviderURL(id int) string {
199
272
func (client * Client ) getProvidersURL () string {
200
273
return fmt .Sprintf (providersPath , client .config .url )
201
274
}
275
+
276
+ func (client * Client ) getCostProvidersURL () string {
277
+ return fmt .Sprintf (costCloudAccountPath , client .config .url )
278
+ }
279
+
280
+ func (client * Client ) getCostProviderURL (id int ) string {
281
+ return fmt .Sprintf (costProviderURL , client .config .url , id )
282
+ }
283
+
284
+ func (client * Client ) getUpdateCostProviderURL () string {
285
+ return fmt .Sprintf (updateCostProviderURL , client .config .url )
286
+ }
0 commit comments