@@ -273,6 +273,7 @@ edge_location_ids.1 = b2c3d4e5-f6a7-8901-bcde-f12345678901
273273gpu.# = 1
274274gpu.0.default_shared_clients_per_gpu = 10
275275gpu.0.enable_time_sharing = true
276+ gpu.0.sharing_strategy =
276277gpu.0.user_managed_gpu_drivers = true
277278gpu.0.sharing_configuration.# = 1
278279gpu.0.sharing_configuration.0.gpu_name = A100
@@ -1334,6 +1335,45 @@ func Test_toTemplateGpu(t *testing.T) {
13341335 // UserManagedGpuDrivers not set (nil) - only sent when explicitly true (GKE-only)
13351336 },
13361337 },
1338+ {
1339+ name : "sharing_strategy mps" ,
1340+ input : map [string ]any {
1341+ FieldNodeTemplateSharingStrategy : "mps" ,
1342+ FieldNodeTemplateDefaultSharedClientsPerGpu : 4 ,
1343+ },
1344+ want : & sdk.NodetemplatesV1GPU {
1345+ DefaultSharedClientsPerGpu : lo .ToPtr (int32 (4 )),
1346+ EnableTimeSharing : lo .ToPtr (false ),
1347+ SharingConfiguration : & map [string ]sdk.NodetemplatesV1SharedGPU {},
1348+ SharingStrategy : lo .ToPtr (sdk .GPUSHARINGSTRATEGYMPS ),
1349+ },
1350+ },
1351+ {
1352+ name : "sharing_strategy time-slicing" ,
1353+ input : map [string ]any {
1354+ FieldNodeTemplateSharingStrategy : "time-slicing" ,
1355+ FieldNodeTemplateDefaultSharedClientsPerGpu : 8 ,
1356+ },
1357+ want : & sdk.NodetemplatesV1GPU {
1358+ DefaultSharedClientsPerGpu : lo .ToPtr (int32 (8 )),
1359+ EnableTimeSharing : lo .ToPtr (false ),
1360+ SharingConfiguration : & map [string ]sdk.NodetemplatesV1SharedGPU {},
1361+ SharingStrategy : lo .ToPtr (sdk .GPUSHARINGSTRATEGYTIMESLICING ),
1362+ },
1363+ },
1364+ {
1365+ name : "sharing_strategy mps with user_managed_gpu_drivers" ,
1366+ input : map [string ]any {
1367+ FieldNodeTemplateSharingStrategy : "mps" ,
1368+ FieldNodeTemplateUserManagedGPUDrivers : true ,
1369+ },
1370+ want : & sdk.NodetemplatesV1GPU {
1371+ EnableTimeSharing : lo .ToPtr (false ),
1372+ SharingConfiguration : & map [string ]sdk.NodetemplatesV1SharedGPU {},
1373+ SharingStrategy : lo .ToPtr (sdk .GPUSHARINGSTRATEGYMPS ),
1374+ UserManagedGpuDrivers : lo .ToPtr (true ),
1375+ },
1376+ },
13371377 }
13381378
13391379 for _ , tt := range tests {
@@ -1356,6 +1396,7 @@ func Test_toTemplateGpu(t *testing.T) {
13561396 }
13571397
13581398 require .Equal (t , tt .want .EnableTimeSharing , got .EnableTimeSharing )
1399+ require .Equal (t , tt .want .SharingStrategy , got .SharingStrategy )
13591400 require .Equal (t , tt .want .UserManagedGpuDrivers , got .UserManagedGpuDrivers )
13601401
13611402 if tt .want .SharingConfiguration != nil && got .SharingConfiguration != nil {
@@ -1471,6 +1512,34 @@ func Test_flattenGpuSettings(t *testing.T) {
14711512 },
14721513 wantErr : false ,
14731514 },
1515+ {
1516+ name : "sharing_strategy mps" ,
1517+ input : & sdk.NodetemplatesV1GPU {
1518+ SharingStrategy : lo .ToPtr (sdk .GPUSHARINGSTRATEGYMPS ),
1519+ DefaultSharedClientsPerGpu : lo .ToPtr (int32 (4 )),
1520+ },
1521+ want : []map [string ]any {
1522+ {
1523+ FieldNodeTemplateSharingStrategy : "mps" ,
1524+ FieldNodeTemplateDefaultSharedClientsPerGpu : lo .ToPtr (int32 (4 )),
1525+ },
1526+ },
1527+ wantErr : false ,
1528+ },
1529+ {
1530+ name : "sharing_strategy time-slicing" ,
1531+ input : & sdk.NodetemplatesV1GPU {
1532+ SharingStrategy : lo .ToPtr (sdk .GPUSHARINGSTRATEGYTIMESLICING ),
1533+ DefaultSharedClientsPerGpu : lo .ToPtr (int32 (8 )),
1534+ },
1535+ want : []map [string ]any {
1536+ {
1537+ FieldNodeTemplateSharingStrategy : "time-slicing" ,
1538+ FieldNodeTemplateDefaultSharedClientsPerGpu : lo .ToPtr (int32 (8 )),
1539+ },
1540+ },
1541+ wantErr : false ,
1542+ },
14741543 }
14751544
14761545 for _ , tt := range tests {
@@ -1491,6 +1560,7 @@ func Test_flattenGpuSettings(t *testing.T) {
14911560 // Compare all fields except sharing_configuration
14921561 require .Equal (t , tt .want [0 ][FieldNodeTemplateUserManagedGPUDrivers ], got [0 ][FieldNodeTemplateUserManagedGPUDrivers ])
14931562 require .Equal (t , tt .want [0 ][FieldNodeTemplateEnableTimeSharing ], got [0 ][FieldNodeTemplateEnableTimeSharing ])
1563+ require .Equal (t , tt .want [0 ][FieldNodeTemplateSharingStrategy ], got [0 ][FieldNodeTemplateSharingStrategy ])
14941564 require .Equal (t , tt .want [0 ][FieldNodeTemplateDefaultSharedClientsPerGpu ], got [0 ][FieldNodeTemplateDefaultSharedClientsPerGpu ])
14951565
14961566 // Compare sharing_configuration with ElementsMatch (order doesn't matter)
0 commit comments