@@ -12,6 +12,9 @@ const (
1212 cloudAccountPath = "%s/api/cloud/v2/accounts/%s"
1313 cloudAccountWithExternalIDPath = "%s/api/cloud/v2/accounts/%s?includeExternalID=true"
1414 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"
1518)
1619
1720type CloudAccountSecureInterface interface {
@@ -25,8 +28,11 @@ type CloudAccountSecureInterface interface {
2528type CloudAccountMonitorInterface interface {
2629 Base
2730 CreateCloudAccountMonitor (ctx context.Context , provider * CloudAccountMonitor ) (* CloudAccountMonitor , error )
31+ CreateCloudAccountMonitorForCost (ctx context.Context , provider * CloudAccountMonitorForCost ) (* CloudAccountCreatedForCost , error )
2832 UpdateCloudAccountMonitor (ctx context.Context , id int , provider * CloudAccountMonitor ) (* CloudAccountMonitor , error )
33+ UpdateCloudAccountMonitorForCost (ctx context.Context , provider * CloudAccountCostProvider ) (* CloudAccountCostProvider , error )
2934 GetCloudAccountMonitor (ctx context.Context , id int ) (* CloudAccountMonitor , error )
35+ GetCloudAccountMonitorForCost (ctx context.Context , id int ) (* CloudAccountCostProvider , error )
3036 DeleteCloudAccountMonitor (ctx context.Context , id int ) error
3137}
3238
@@ -135,6 +141,30 @@ func (client *Client) CreateCloudAccountMonitor(ctx context.Context, provider *C
135141 return & wrapper .CloudAccount , nil
136142}
137143
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+
138168func (client * Client ) UpdateCloudAccountMonitor (ctx context.Context , id int , provider * CloudAccountMonitor ) (* CloudAccountMonitor , error ) {
139169 payload , err := Marshal (provider )
140170 if err != nil {
@@ -159,6 +189,30 @@ func (client *Client) UpdateCloudAccountMonitor(ctx context.Context, id int, pro
159189 return & wrapper .CloudAccount , nil
160190}
161191
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+
162216func (client * Client ) GetCloudAccountMonitor (ctx context.Context , id int ) (* CloudAccountMonitor , error ) {
163217 response , err := client .requester .Request (ctx , http .MethodGet , client .getProviderURL (id ), nil )
164218 if err != nil {
@@ -178,6 +232,25 @@ func (client *Client) GetCloudAccountMonitor(ctx context.Context, id int) (*Clou
178232 return & wrapper .CloudAccount , nil
179233}
180234
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+
181254func (client * Client ) DeleteCloudAccountMonitor (ctx context.Context , id int ) error {
182255 response , err := client .requester .Request (ctx , http .MethodDelete , client .getProviderURL (id ), nil )
183256 if err != nil {
@@ -199,3 +272,15 @@ func (client *Client) getProviderURL(id int) string {
199272func (client * Client ) getProvidersURL () string {
200273 return fmt .Sprintf (providersPath , client .config .url )
201274}
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