@@ -40,6 +40,8 @@ const (
40
40
cryptoKeyVerDelimiter = "/cryptoKeyVersions"
41
41
)
42
42
43
+ var hyperdiskTypes = []string {"hyperdisk-extreme" , "hyperdisk-throughput" }
44
+
43
45
type GCEAPIVersion string
44
46
45
47
const (
@@ -387,15 +389,15 @@ func convertV1CustomerEncryptionKeyToBeta(v1Key *computev1.CustomerEncryptionKey
387
389
}
388
390
}
389
391
390
- func convertV1DiskToBetaDisk (v1Disk * computev1.Disk ) * computebeta.Disk {
392
+ func convertV1DiskToBetaDisk (v1Disk * computev1.Disk , provisionedThroughputOnCreate int64 ) * computebeta.Disk {
391
393
var dek * computebeta.CustomerEncryptionKey = nil
392
394
393
395
if v1Disk .DiskEncryptionKey != nil {
394
396
dek = convertV1CustomerEncryptionKeyToBeta (v1Disk .DiskEncryptionKey )
395
397
}
396
398
397
399
// Note: this is an incomplete list. It only includes the fields we use for disk creation.
398
- return & computebeta.Disk {
400
+ betaDisk := & computebeta.Disk {
399
401
Name : v1Disk .Name ,
400
402
SizeGb : v1Disk .SizeGb ,
401
403
Description : v1Disk .Description ,
@@ -404,6 +406,11 @@ func convertV1DiskToBetaDisk(v1Disk *computev1.Disk) *computebeta.Disk {
404
406
ReplicaZones : v1Disk .ReplicaZones ,
405
407
DiskEncryptionKey : dek ,
406
408
}
409
+ if provisionedThroughputOnCreate > 0 {
410
+ betaDisk .ProvisionedThroughput = provisionedThroughputOnCreate
411
+ }
412
+
413
+ return betaDisk
407
414
}
408
415
409
416
func (cloud * CloudProvider ) insertRegionalDisk (
@@ -429,13 +436,12 @@ func (cloud *CloudProvider) insertRegionalDisk(
429
436
}
430
437
431
438
diskToCreate := & computev1.Disk {
432
- Name : volKey .Name ,
433
- SizeGb : common .BytesToGbRoundUp (capBytes ),
434
- Description : description ,
435
- Type : cloud .GetDiskTypeURI (cloud .project , volKey , params .DiskType ),
436
- Labels : params .Labels ,
437
- ProvisionedIops : params .ProvisionedIOPSOnCreate ,
438
- ProvisionedThroughput : params .ProvisionedThroughputOnCreate ,
439
+ Name : volKey .Name ,
440
+ SizeGb : common .BytesToGbRoundUp (capBytes ),
441
+ Description : description ,
442
+ Type : cloud .GetDiskTypeURI (cloud .project , volKey , params .DiskType ),
443
+ Labels : params .Labels ,
444
+ ProvisionedIops : params .ProvisionedIOPSOnCreate ,
439
445
}
440
446
if snapshotID != "" {
441
447
_ , snapshotType , _ , err := common .SnapshotIDToProjectKey (snapshotID )
@@ -466,7 +472,7 @@ func (cloud *CloudProvider) insertRegionalDisk(
466
472
467
473
if gceAPIVersion == GCEAPIVersionBeta {
468
474
var insertOp * computebeta.Operation
469
- betaDiskToCreate := convertV1DiskToBetaDisk (diskToCreate )
475
+ betaDiskToCreate := convertV1DiskToBetaDisk (diskToCreate , 0 )
470
476
betaDiskToCreate .MultiWriter = multiWriter
471
477
insertOp , err = cloud .betaService .RegionDisks .Insert (project , volKey .Region , betaDiskToCreate ).Context (ctx ).Do ()
472
478
if insertOp != nil {
@@ -538,7 +544,7 @@ func (cloud *CloudProvider) insertZonalDisk(
538
544
gceAPIVersion = GCEAPIVersionV1
539
545
)
540
546
541
- if multiWriter {
547
+ if multiWriter || containsBetaDiskType ( hyperdiskTypes , params . DiskType ) {
542
548
gceAPIVersion = GCEAPIVersionBeta
543
549
}
544
550
@@ -576,7 +582,7 @@ func (cloud *CloudProvider) insertZonalDisk(
576
582
577
583
if gceAPIVersion == GCEAPIVersionBeta {
578
584
var insertOp * computebeta.Operation
579
- betaDiskToCreate := convertV1DiskToBetaDisk (diskToCreate )
585
+ betaDiskToCreate := convertV1DiskToBetaDisk (diskToCreate , params . ProvisionedThroughputOnCreate )
580
586
betaDiskToCreate .MultiWriter = multiWriter
581
587
insertOp , err = cloud .betaService .Disks .Insert (project , volKey .Zone , betaDiskToCreate ).Context (ctx ).Do ()
582
588
if insertOp != nil {
@@ -1168,3 +1174,13 @@ func encodeTags(tags map[string]string) (string, error) {
1168
1174
}
1169
1175
return string (enc ), nil
1170
1176
}
1177
+
1178
+ func containsBetaDiskType (betaDiskTypes []string , diskType string ) bool {
1179
+ for _ , betaDiskType := range betaDiskTypes {
1180
+ if betaDiskType == diskType {
1181
+ return true
1182
+ }
1183
+ }
1184
+
1185
+ return false
1186
+ }
0 commit comments