Skip to content

Commit

Permalink
refactor!: update schema type bool to string
Browse files Browse the repository at this point in the history
... to support tristate for storage and compute optimized constrains
  • Loading branch information
aweris committed May 2, 2024
1 parent 553f798 commit abe44ba
Showing 1 changed file with 46 additions and 14 deletions.
60 changes: 46 additions & 14 deletions castai/resource_node_template.go
Original file line number Diff line number Diff line change
Expand Up @@ -219,10 +219,11 @@ func resourceNodeTemplate() *schema.Resource {
Description: "Max Memory (Mib) per node.",
},
FieldNodeTemplateStorageOptimized: {
Type: schema.TypeBool,
Optional: true,
Default: false,
Description: "Storage optimized instance constraint - will only pick storage optimized nodes if true",
Type: schema.TypeString,
Optional: true,
Default: "",
Description: "Storage optimized instance constraint - will only pick storage optimized nodes if enabled. Supported values include: `true`, `false` or empty string.",
ValidateDiagFunc: validation.ToDiagFunc(validation.StringInSlice([]string{"", "true", "false"}, false)),
},
FieldNodeTemplateIsGpuOnly: {
Type: schema.TypeBool,
Expand All @@ -231,10 +232,11 @@ func resourceNodeTemplate() *schema.Resource {
Description: "GPU instance constraint - will only pick nodes with GPU if true",
},
FieldNodeTemplateComputeOptimized: {
Type: schema.TypeBool,
Optional: true,
Default: false,
Description: "Compute optimized instance constraint - will only pick compute optimized nodes if true.",
Type: schema.TypeString,
Optional: true,
Default: "",
Description: "Compute optimized instance constraint - will only pick compute optimized nodes if enabled. Supported values include: `true`, `false` or empty string.",
ValidateDiagFunc: validation.ToDiagFunc(validation.StringInSlice([]string{"", "true", "false"}, false)),
},
FieldNodeTemplateInstanceFamilies: {
Type: schema.TypeList,
Expand Down Expand Up @@ -567,10 +569,18 @@ func flattenConstraints(c *sdk.NodetemplatesV1TemplateConstraints) ([]map[string
out[FieldNodeTemplateInstanceFamilies] = flattenInstanceFamilies(c.InstanceFamilies)
}
if c.ComputeOptimized != nil {
out[FieldNodeTemplateComputeOptimized] = c.ComputeOptimized
if lo.FromPtr(c.ComputeOptimized) {
out[FieldNodeTemplateComputeOptimized] = "true"
} else {
out[FieldNodeTemplateComputeOptimized] = "false"
}
}
if c.StorageOptimized != nil {
out[FieldNodeTemplateStorageOptimized] = c.StorageOptimized
if lo.FromPtr(c.StorageOptimized) {
out[FieldNodeTemplateStorageOptimized] = "true"
} else {
out[FieldNodeTemplateStorageOptimized] = "false"
}
}
if c.Spot != nil {
out[FieldNodeTemplateSpot] = c.Spot
Expand Down Expand Up @@ -1035,8 +1045,19 @@ func toTemplateConstraints(obj map[string]any) *sdk.NodetemplatesV1TemplateConst
}

out := &sdk.NodetemplatesV1TemplateConstraints{}
if v, ok := obj[FieldNodeTemplateComputeOptimized].(bool); ok {
out.ComputeOptimized = toPtr(v)
if v, ok := obj[FieldNodeTemplateComputeOptimized].(string); ok {
var boolV *bool

switch v {
case "true":
boolV = toPtr(true)
case "false":
boolV = toPtr(false)
default:
boolV = nil
}

out.ComputeOptimized = boolV
}
if v, ok := obj[FieldNodeTemplateFallbackRestoreRateSeconds].(int); ok {
out.FallbackRestoreRateSeconds = toPtr(int32(v))
Expand Down Expand Up @@ -1075,8 +1096,19 @@ func toTemplateConstraints(obj map[string]any) *sdk.NodetemplatesV1TemplateConst
out.Spot = toPtr(!v)
}
}
if v, ok := obj[FieldNodeTemplateStorageOptimized].(bool); ok {
out.StorageOptimized = toPtr(v)
if v, ok := obj[FieldNodeTemplateStorageOptimized].(string); ok {
var boolV *bool

switch v {
case "true":
boolV = toPtr(true)
case "false":
boolV = toPtr(false)
default:
boolV = nil
}

out.StorageOptimized = boolV
}
if v, ok := obj[FieldNodeTemplateUseSpotFallbacks].(bool); ok {
out.UseSpotFallbacks = toPtr(v)
Expand Down

0 comments on commit abe44ba

Please sign in to comment.