@@ -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
15981612func toTemplateConstraintsInstanceFamilies (o map [string ]any ) * sdk.NodetemplatesV1TemplateConstraintsInstanceFamilyConstraints {
0 commit comments