Skip to content

Commit 5deb9d8

Browse files
michal-kopczynskiMichal Kopczynski
andauthored
PRICE-1437: Expose auto assignment setting in commitments module (#656)
* PRICE-1437: Expose auto assignment setting in commitments module * improve * api gen and test fixes * gen docs --------- Co-authored-by: Michal Kopczynski <michal@cast.ai>
1 parent a99b1c4 commit 5deb9d8

File tree

4 files changed

+22
-5
lines changed

4 files changed

+22
-5
lines changed

castai/resource_commitments.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,12 @@ func resourceCommitments() *schema.Resource {
225225
Description: "Scaling strategy of the commitment in CAST AI. One of: Default, CPUBased, RamBased",
226226
ValidateDiagFunc: validation.ToDiagFunc(validation.StringInSlice([]string{"Default", "CPUBased", "RamBased"}, false)),
227227
},
228+
"auto_assignment": {
229+
Type: schema.TypeBool,
230+
Optional: true,
231+
Default: true,
232+
Description: "If enabled, the commitment is automatically assigned to all clusters in the matching region. When disabled, only explicitly listed cluster assignments are used.",
233+
},
228234
}),
229235
},
230236
},

castai/resource_commitments_mapping.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ import (
99
"strings"
1010
"time"
1111

12-
"github.com/samber/lo"
1312
"slices"
1413

14+
"github.com/samber/lo"
15+
1516
"github.com/castai/terraform-provider-castai/castai/reservations"
1617
"github.com/castai/terraform-provider-castai/castai/sdk"
1718
)
@@ -76,6 +77,7 @@ type (
7677
AllowedUsage *float64 `mapstructure:"allowed_usage,omitempty"`
7778
Assignments []*commitmentAssignmentResource `mapstructure:"assignments,omitempty"`
7879
ScalingStrategy *string `mapstructure:"scaling_strategy,omitempty"`
80+
AutoAssignment *bool `mapstructure:"auto_assignment,omitempty"`
7981
}
8082
commitmentConfigMatcherResource struct {
8183
Name string `mapstructure:"name"`
@@ -511,6 +513,7 @@ func mapCommitmentImportWithConfigToUpdateRequest(
511513
Prioritization: c.Commitment.Prioritization,
512514
Status: c.Commitment.Status,
513515
ScalingStrategy: c.Commitment.ScalingStrategy,
516+
AutoAssignment: c.Commitment.AutoAssignment,
514517
}
515518
if c.Config != nil {
516519
if c.Config.AllowedUsage != nil {
@@ -525,6 +528,9 @@ func mapCommitmentImportWithConfigToUpdateRequest(
525528
if c.Config.ScalingStrategy != nil {
526529
req.ScalingStrategy = (*sdk.CastaiInventoryV1beta1CommitmentScalingStrategy)(c.Config.ScalingStrategy)
527530
}
531+
if c.Config.AutoAssignment != nil {
532+
req.AutoAssignment = c.Config.AutoAssignment
533+
}
528534
}
529535
return req
530536
}

castai/resource_commitments_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ func TestCommitmentsResourceCreateAndUpdate(t *testing.T) {
8888
commitmentImport: gcpImport,
8989
expectCommitmentUpdate: sdk.CommitmentsAPIUpdateCommitmentJSONRequestBody{
9090
AllowedUsage: lo.ToPtr[float32](0.6),
91+
AutoAssignment: lo.ToPtr(true),
9192
Prioritization: lo.ToPtr(true),
9293
ScalingStrategy: lo.ToPtr(sdk.CPUBased),
9394
Status: lo.ToPtr(sdk.CastaiInventoryV1beta1CommitmentStatusActive),
@@ -157,6 +158,7 @@ test,3b3de39c-bc44-4d69-be2d-69527dfe9958,630226bb-5170-4b95-90b0-f222757130c1,S
157158
commitmentImport: commitmentImport,
158159
expectCommitmentUpdate: sdk.CommitmentsAPIUpdateCommitmentJSONRequestBody{
159160
AllowedUsage: lo.ToPtr[float32](0.7),
161+
AutoAssignment: lo.ToPtr(true),
160162
Prioritization: lo.ToPtr(true),
161163
ScalingStrategy: lo.ToPtr(sdk.Default),
162164
Status: lo.ToPtr(sdk.CastaiInventoryV1beta1CommitmentStatusActive),
@@ -363,10 +365,11 @@ test,3b3de39c-bc44-4d69-be2d-69527dfe9958,630226bb-5170-4b95-90b0-f222757130c1,S
363365
"priority": 1,
364366
},
365367
},
366-
"prioritization": true,
367-
"status": "Active",
368-
"allowed_usage": 0.7,
369-
"scaling_strategy": "Default",
368+
"prioritization": true,
369+
"status": "Active",
370+
"allowed_usage": 0.7,
371+
"scaling_strategy": "Default",
372+
"auto_assignment": false,
370373
},
371374
},
372375
})
@@ -427,6 +430,7 @@ test,3b3de39c-bc44-4d69-be2d-69527dfe9958,630226bb-5170-4b95-90b0-f222757130c1,S
427430
mockClient.EXPECT().CommitmentsAPIUpdateCommitmentWithResponse(
428431
gomock.Any(), commitmentID.String(), sdk.CommitmentsAPIUpdateCommitmentJSONRequestBody{
429432
AllowedUsage: lo.ToPtr[float32](0.7),
433+
AutoAssignment: lo.ToPtr(false),
430434
Prioritization: lo.ToPtr(true),
431435
ScalingStrategy: lo.ToPtr(sdk.Default),
432436
Status: lo.ToPtr(sdk.CastaiInventoryV1beta1CommitmentStatusActive),

docs/resources/commitments.md

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)