@@ -104,9 +104,10 @@ type ClusterSpec struct {
104104 // treated as workload node. Defaults to a VM with 4 CPUs if not specified
105105 // by WorkloadNodeCPUs.
106106 // TODO(GouravKumar): remove use of WorkloadNode, use WorkloadNodeCount instead
107- WorkloadNode bool
108- WorkloadNodeCount int
109- WorkloadNodeCPUs int
107+ WorkloadNode bool
108+ WorkloadNodeCount int
109+ WorkloadNodeCPUs int
110+ WorkloadRequiresDisk bool
110111 // CPUs is the number of CPUs per node.
111112 CPUs int
112113 Mem MemPerCPU
@@ -226,7 +227,12 @@ func awsMachineSupportsSSD(machineType string) bool {
226227}
227228
228229func getAWSOpts (
229- machineType string , volumeSize , ebsThroughput int , ebsIOPS int , localSSD bool , useSpotVMs bool ,
230+ machineType string ,
231+ volumeSize , ebsThroughput int ,
232+ ebsIOPS int ,
233+ localSSD bool ,
234+ useSpotVMs bool ,
235+ bootDiskOnly bool ,
230236) vm.ProviderOpts {
231237 opts := aws .DefaultProviderOpts ()
232238 if volumeSize != 0 {
@@ -244,6 +250,7 @@ func getAWSOpts(
244250 opts .MachineType = machineType
245251 }
246252 opts .UseSpot = useSpotVMs
253+ opts .BootDiskOnly = bootDiskOnly
247254 return opts
248255}
249256
@@ -258,6 +265,7 @@ func getGCEOpts(
258265 volumeType string ,
259266 volumeCount int ,
260267 useSpot bool ,
268+ bootDiskOnly bool ,
261269) vm.ProviderOpts {
262270 opts := gce .DefaultProviderOpts ()
263271 opts .MachineType = machineType
@@ -286,16 +294,17 @@ func getGCEOpts(
286294 if volumeType != "" {
287295 opts .PDVolumeType = volumeType
288296 }
289-
297+ opts . BootDiskOnly = bootDiskOnly
290298 return opts
291299}
292300
293- func getAzureOpts (machineType string , volumeSize int ) vm.ProviderOpts {
301+ func getAzureOpts (machineType string , volumeSize int , bootDiskOnly bool ) vm.ProviderOpts {
294302 opts := azure .DefaultProviderOpts ()
295303 opts .MachineType = machineType
296304 if volumeSize != 0 {
297305 opts .NetworkDiskSize = int32 (volumeSize )
298306 }
307+ opts .BootDiskOnly = bootDiskOnly
299308 return opts
300309}
301310
@@ -307,6 +316,7 @@ func getIBMOpts(
307316 volumeIOPS int ,
308317 extraVolumeCount int ,
309318 RAID0 bool ,
319+ bootDiskOnly bool ,
310320) vm.ProviderOpts {
311321 opts := ibm .DefaultProviderOpts ()
312322 opts .MachineType = machineType
@@ -334,6 +344,7 @@ func getIBMOpts(
334344 }
335345 opts .UseMultipleDisks = ! RAID0
336346 }
347+ opts .BootDiskOnly = bootDiskOnly
337348
338349 return opts
339350}
@@ -510,7 +521,7 @@ func (s *ClusterSpec) RoachprodOpts(
510521 var err error
511522 switch cloud {
512523 case AWS :
513- workloadMachineType , _ , err = SelectAWSMachineType (s .WorkloadNodeCPUs , s .Mem , preferLocalSSD && s . VolumeSize == 0 , selectedArch )
524+ workloadMachineType , _ , err = SelectAWSMachineType (s .WorkloadNodeCPUs , s .Mem , false , selectedArch )
514525 case GCE :
515526 workloadMachineType , _ = SelectGCEMachineType (s .WorkloadNodeCPUs , s .Mem , selectedArch )
516527 case Azure :
@@ -532,27 +543,29 @@ func (s *ClusterSpec) RoachprodOpts(
532543 switch cloud {
533544 case AWS :
534545 providerOpts = getAWSOpts (machineType , s .VolumeSize , s .AWS .VolumeThroughput , s .AWS .VolumeIOPS ,
535- createVMOpts .SSDOpts .UseLocalSSD , s .UseSpotVMs )
536- workloadProviderOpts = getAWSOpts (workloadMachineType , s .VolumeSize , s .AWS .VolumeThroughput ,
537- s . AWS . VolumeIOPS , createVMOpts .SSDOpts .UseLocalSSD , s .UseSpotVMs )
546+ createVMOpts .SSDOpts .UseLocalSSD , s .UseSpotVMs , false )
547+ workloadProviderOpts = getAWSOpts (workloadMachineType , s .VolumeSize , s .AWS .VolumeThroughput , s . AWS . VolumeIOPS ,
548+ createVMOpts .SSDOpts .UseLocalSSD , s .UseSpotVMs , ! s . WorkloadRequiresDisk )
538549 case GCE :
539550 providerOpts = getGCEOpts (machineType , s .VolumeSize , ssdCount ,
540551 createVMOpts .SSDOpts .UseLocalSSD , s .RAID0 , s .TerminateOnMigration ,
541- s .GCE .MinCPUPlatform , vm .ParseArch (createVMOpts .Arch ), s .GCE .VolumeType , s .GCE .VolumeCount , s .UseSpotVMs ,
552+ s .GCE .MinCPUPlatform , vm .ParseArch (createVMOpts .Arch ), s .GCE .VolumeType ,
553+ s .GCE .VolumeCount , s .UseSpotVMs , false ,
542554 )
543555 workloadProviderOpts = getGCEOpts (workloadMachineType , s .VolumeSize , ssdCount ,
544556 createVMOpts .SSDOpts .UseLocalSSD , s .RAID0 , s .TerminateOnMigration ,
545- s .GCE .MinCPUPlatform , vm .ParseArch (createVMOpts .Arch ), s .GCE .VolumeType , s .GCE .VolumeCount , s .UseSpotVMs ,
557+ s .GCE .MinCPUPlatform , vm .ParseArch (createVMOpts .Arch ), s .GCE .VolumeType ,
558+ s .GCE .VolumeCount , s .UseSpotVMs , ! s .WorkloadRequiresDisk ,
546559 )
547560 case Azure :
548- providerOpts = getAzureOpts (machineType , s .VolumeSize )
549- workloadProviderOpts = getAzureOpts (workloadMachineType , s .VolumeSize )
561+ providerOpts = getAzureOpts (machineType , s .VolumeSize , false )
562+ workloadProviderOpts = getAzureOpts (workloadMachineType , s .VolumeSize , true )
550563 case IBM :
551564 providerOpts = getIBMOpts (machineType , s .TerminateOnMigration , s .VolumeSize ,
552- s .IBM .VolumeType , s .IBM .VolumeIOPS , s .IBM .VolumeCount , s .RAID0 ,
565+ s .IBM .VolumeType , s .IBM .VolumeIOPS , s .IBM .VolumeCount , s .RAID0 , false ,
553566 )
554567 workloadProviderOpts = getIBMOpts (workloadMachineType , s .TerminateOnMigration , s .VolumeSize ,
555- s .IBM .VolumeType , s .IBM .VolumeIOPS , s .IBM .VolumeCount , s .RAID0 ,
568+ s .IBM .VolumeType , s .IBM .VolumeIOPS , s .IBM .VolumeCount , s .RAID0 , true ,
556569 )
557570 }
558571
0 commit comments