@@ -195,9 +195,10 @@ type ClusterSpec struct {
195195 // treated as workload node. Defaults to a VM with 4 CPUs if not specified
196196 // by WorkloadNodeCPUs.
197197 // TODO(GouravKumar): remove use of WorkloadNode, use WorkloadNodeCount instead
198- WorkloadNode bool
199- WorkloadNodeCount int
200- WorkloadNodeCPUs int
198+ WorkloadNode bool
199+ WorkloadNodeCount int
200+ WorkloadNodeCPUs int
201+ WorkloadRequiresDisk bool
201202 // CPUs is the number of CPUs per node.
202203 CPUs int
203204 Mem MemPerCPU
@@ -317,7 +318,12 @@ func awsMachineSupportsSSD(machineType string) bool {
317318}
318319
319320func getAWSOpts (
320- machineType string , volumeSize , ebsThroughput int , ebsIOPS int , localSSD bool , useSpotVMs bool ,
321+ machineType string ,
322+ volumeSize , ebsThroughput int ,
323+ ebsIOPS int ,
324+ localSSD bool ,
325+ useSpotVMs bool ,
326+ bootDiskOnly bool ,
321327) vm.ProviderOpts {
322328 opts := aws .DefaultProviderOpts ()
323329 if volumeSize != 0 {
@@ -335,6 +341,7 @@ func getAWSOpts(
335341 opts .MachineType = machineType
336342 }
337343 opts .UseSpot = useSpotVMs
344+ opts .BootDiskOnly = bootDiskOnly
338345 return opts
339346}
340347
@@ -349,6 +356,7 @@ func getGCEOpts(
349356 volumeType string ,
350357 volumeCount int ,
351358 useSpot bool ,
359+ bootDiskOnly bool ,
352360) vm.ProviderOpts {
353361 opts := gce .DefaultProviderOpts ()
354362 opts .MachineType = machineType
@@ -377,16 +385,17 @@ func getGCEOpts(
377385 if volumeType != "" {
378386 opts .PDVolumeType = volumeType
379387 }
380-
388+ opts . BootDiskOnly = bootDiskOnly
381389 return opts
382390}
383391
384- func getAzureOpts (machineType string , volumeSize int ) vm.ProviderOpts {
392+ func getAzureOpts (machineType string , volumeSize int , bootDiskOnly bool ) vm.ProviderOpts {
385393 opts := azure .DefaultProviderOpts ()
386394 opts .MachineType = machineType
387395 if volumeSize != 0 {
388396 opts .NetworkDiskSize = int32 (volumeSize )
389397 }
398+ opts .BootDiskOnly = bootDiskOnly
390399 return opts
391400}
392401
@@ -398,6 +407,7 @@ func getIBMOpts(
398407 volumeIOPS int ,
399408 extraVolumeCount int ,
400409 RAID0 bool ,
410+ bootDiskOnly bool ,
401411) vm.ProviderOpts {
402412 opts := ibm .DefaultProviderOpts ()
403413 opts .MachineType = machineType
@@ -425,6 +435,7 @@ func getIBMOpts(
425435 }
426436 opts .UseMultipleDisks = ! RAID0
427437 }
438+ opts .BootDiskOnly = bootDiskOnly
428439
429440 return opts
430441}
@@ -601,7 +612,7 @@ func (s *ClusterSpec) RoachprodOpts(
601612 var err error
602613 switch cloud {
603614 case AWS :
604- workloadMachineType , _ , err = SelectAWSMachineType (s .WorkloadNodeCPUs , s .Mem , preferLocalSSD && s . VolumeSize == 0 , selectedArch )
615+ workloadMachineType , _ , err = SelectAWSMachineType (s .WorkloadNodeCPUs , s .Mem , false , selectedArch )
605616 case GCE :
606617 workloadMachineType , _ = SelectGCEMachineType (s .WorkloadNodeCPUs , s .Mem , selectedArch )
607618 case Azure :
@@ -623,27 +634,29 @@ func (s *ClusterSpec) RoachprodOpts(
623634 switch cloud {
624635 case AWS :
625636 providerOpts = getAWSOpts (machineType , s .VolumeSize , s .AWS .VolumeThroughput , s .AWS .VolumeIOPS ,
626- createVMOpts .SSDOpts .UseLocalSSD , s .UseSpotVMs )
627- workloadProviderOpts = getAWSOpts (workloadMachineType , s .VolumeSize , s .AWS .VolumeThroughput ,
628- s . AWS . VolumeIOPS , createVMOpts .SSDOpts .UseLocalSSD , s .UseSpotVMs )
637+ createVMOpts .SSDOpts .UseLocalSSD , s .UseSpotVMs , false )
638+ workloadProviderOpts = getAWSOpts (workloadMachineType , s .VolumeSize , s .AWS .VolumeThroughput , s . AWS . VolumeIOPS ,
639+ createVMOpts .SSDOpts .UseLocalSSD , s .UseSpotVMs , ! s . WorkloadRequiresDisk )
629640 case GCE :
630641 providerOpts = getGCEOpts (machineType , s .VolumeSize , ssdCount ,
631642 createVMOpts .SSDOpts .UseLocalSSD , s .RAID0 , s .TerminateOnMigration ,
632- s .GCE .MinCPUPlatform , vm .ParseArch (createVMOpts .Arch ), s .GCE .VolumeType , s .GCE .VolumeCount , s .UseSpotVMs ,
643+ s .GCE .MinCPUPlatform , vm .ParseArch (createVMOpts .Arch ), s .GCE .VolumeType ,
644+ s .GCE .VolumeCount , s .UseSpotVMs , false ,
633645 )
634646 workloadProviderOpts = getGCEOpts (workloadMachineType , s .VolumeSize , ssdCount ,
635647 createVMOpts .SSDOpts .UseLocalSSD , s .RAID0 , s .TerminateOnMigration ,
636- s .GCE .MinCPUPlatform , vm .ParseArch (createVMOpts .Arch ), s .GCE .VolumeType , s .GCE .VolumeCount , s .UseSpotVMs ,
648+ s .GCE .MinCPUPlatform , vm .ParseArch (createVMOpts .Arch ), s .GCE .VolumeType ,
649+ s .GCE .VolumeCount , s .UseSpotVMs , ! s .WorkloadRequiresDisk ,
637650 )
638651 case Azure :
639- providerOpts = getAzureOpts (machineType , s .VolumeSize )
640- workloadProviderOpts = getAzureOpts (workloadMachineType , s .VolumeSize )
652+ providerOpts = getAzureOpts (machineType , s .VolumeSize , false )
653+ workloadProviderOpts = getAzureOpts (workloadMachineType , s .VolumeSize , true )
641654 case IBM :
642655 providerOpts = getIBMOpts (machineType , s .TerminateOnMigration , s .VolumeSize ,
643- s .IBM .VolumeType , s .IBM .VolumeIOPS , s .IBM .VolumeCount , s .RAID0 ,
656+ s .IBM .VolumeType , s .IBM .VolumeIOPS , s .IBM .VolumeCount , s .RAID0 , false ,
644657 )
645658 workloadProviderOpts = getIBMOpts (workloadMachineType , s .TerminateOnMigration , s .VolumeSize ,
646- s .IBM .VolumeType , s .IBM .VolumeIOPS , s .IBM .VolumeCount , s .RAID0 ,
659+ s .IBM .VolumeType , s .IBM .VolumeIOPS , s .IBM .VolumeCount , s .RAID0 , true ,
647660 )
648661 }
649662
0 commit comments