Skip to content

Commit e4ce0e7

Browse files
authored
fix: set nil when gpu configuration is empty (#503)
1 parent dbe98ff commit e4ce0e7

File tree

3 files changed

+55
-7
lines changed

3 files changed

+55
-7
lines changed

castai/resource_node_template.go

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1566,33 +1566,47 @@ func toTemplateGpu(obj map[string]any) *sdk.NodetemplatesV1GPU {
15661566
return nil
15671567
}
15681568

1569-
out := &sdk.NodetemplatesV1GPU{}
1569+
var defaultSharedClientsPerGpu int32
15701570
if v, ok := obj[FieldNodeTemplateDefaultSharedClientsPerGpu].(int); ok {
1571-
out.DefaultSharedClientsPerGpu = toPtr(int32(v))
1571+
defaultSharedClientsPerGpu = int32(v)
15721572
}
15731573

1574+
var enableTimeSharing bool
15741575
if v, ok := obj[FieldNodeTemplateEnableTimeSharing].(bool); ok {
1575-
out.EnableTimeSharing = toPtr(v)
1576+
enableTimeSharing = v
15761577
}
1577-
1578+
var sharingConfig map[string]sdk.NodetemplatesV1SharedGPU
15781579
if sharingConfiguration, ok := obj[FieldNodeTemplateSharingConfiguration].([]interface{}); ok {
15791580
outSharingConfiguration := make(map[string]sdk.NodetemplatesV1SharedGPU)
15801581
for _, configuration := range sharingConfiguration {
15811582

15821583
sharedGPUConfig := configuration.(map[string]interface{})
15831584
gpuName, gpuNameOk := sharedGPUConfig[FieldNodeTemplateSharedGpuName].(string)
15841585
sharedClientsPerGpu, sharedClientsPerGpuOk := sharedGPUConfig[FieldNodeTemplateSharedClientsPerGpu].(int)
1585-
if gpuNameOk && sharedClientsPerGpuOk {
1586+
if gpuNameOk && gpuName != "" && sharedClientsPerGpuOk {
15861587
outSharingConfiguration[gpuName] = sdk.NodetemplatesV1SharedGPU{
15871588
SharedClientsPerGpu: toPtr(int32(sharedClientsPerGpu)),
15881589
}
15891590
}
15901591
}
15911592
if len(outSharingConfiguration) > 0 {
1592-
out.SharingConfiguration = &outSharingConfiguration
1593+
sharingConfig = outSharingConfiguration
15931594
}
15941595
}
1595-
return out
1596+
1597+
// terraform treats nil values as zero values
1598+
// this condition checks whether the whole gpu configuration is deleted
1599+
// and gpu configuration should be set to nil
1600+
if defaultSharedClientsPerGpu == 0 &&
1601+
!enableTimeSharing &&
1602+
len(sharingConfig) == 0 {
1603+
return nil
1604+
}
1605+
return &sdk.NodetemplatesV1GPU{
1606+
DefaultSharedClientsPerGpu: &defaultSharedClientsPerGpu,
1607+
EnableTimeSharing: &enableTimeSharing,
1608+
SharingConfiguration: &sharingConfig,
1609+
}
15961610
}
15971611

15981612
func toTemplateConstraintsInstanceFamilies(o map[string]any) *sdk.NodetemplatesV1TemplateConstraintsInstanceFamilyConstraints {

castai/sdk/api.gen.go

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

castai/sdk/client.gen.go

Lines changed: 16 additions & 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)