@@ -419,7 +419,7 @@ func convertV1CustomerEncryptionKeyToBeta(v1Key *computev1.CustomerEncryptionKey
419
419
}
420
420
}
421
421
422
- func convertV1DiskToBetaDisk (v1Disk * computev1.Disk , provisionedThroughputOnCreate int64 ) * computebeta.Disk {
422
+ func convertV1DiskToBetaDisk (v1Disk * computev1.Disk ) * computebeta.Disk {
423
423
var dek * computebeta.CustomerEncryptionKey = nil
424
424
425
425
if v1Disk .DiskEncryptionKey != nil {
@@ -444,12 +444,17 @@ func convertV1DiskToBetaDisk(v1Disk *computev1.Disk, provisionedThroughputOnCrea
444
444
Status : v1Disk .Status ,
445
445
SelfLink : v1Disk .SelfLink ,
446
446
}
447
+
448
+ // Hyperdisk doesn't currently support multiWriter (https://cloud.google.com/compute/docs/disks/hyperdisks#limitations),
449
+ // but if multiWriter + hyperdisk is supported in the future, we want the PDCSI driver to support this feature without
450
+ // any additional code change.
447
451
if v1Disk .ProvisionedIops > 0 {
448
452
betaDisk .ProvisionedIops = v1Disk .ProvisionedIops
449
453
}
450
- if provisionedThroughputOnCreate > 0 {
451
- betaDisk .ProvisionedThroughput = provisionedThroughputOnCreate
454
+ if v1Disk . ProvisionedThroughput > 0 {
455
+ betaDisk .ProvisionedThroughput = v1Disk . ProvisionedThroughput
452
456
}
457
+ betaDisk .StoragePool = v1Disk .StoragePool
453
458
454
459
return betaDisk
455
460
}
@@ -543,7 +548,7 @@ func (cloud *CloudProvider) insertRegionalDisk(
543
548
544
549
if gceAPIVersion == GCEAPIVersionBeta {
545
550
var insertOp * computebeta.Operation
546
- betaDiskToCreate := convertV1DiskToBetaDisk (diskToCreate , 0 )
551
+ betaDiskToCreate := convertV1DiskToBetaDisk (diskToCreate )
547
552
betaDiskToCreate .MultiWriter = multiWriter
548
553
insertOp , err = cloud .betaService .RegionDisks .Insert (project , volKey .Region , betaDiskToCreate ).Context (ctx ).Do ()
549
554
if insertOp != nil {
@@ -619,13 +624,9 @@ func (cloud *CloudProvider) insertZonalDisk(
619
624
opName string
620
625
gceAPIVersion = GCEAPIVersionV1
621
626
)
622
- if multiWriter || containsBetaDiskType ( hyperdiskTypes , params . DiskType ) {
627
+ if multiWriter {
623
628
gceAPIVersion = GCEAPIVersionBeta
624
629
}
625
- storagePoolsEnabled := params .StoragePools != nil
626
- if storagePoolsEnabled {
627
- gceAPIVersion = GCEAPIVersionAlpha
628
- }
629
630
630
631
diskToCreate := & computev1.Disk {
631
632
Name : volKey .Name ,
@@ -638,6 +639,17 @@ func (cloud *CloudProvider) insertZonalDisk(
638
639
if params .ProvisionedIOPSOnCreate > 0 {
639
640
diskToCreate .ProvisionedIops = params .ProvisionedIOPSOnCreate
640
641
}
642
+ if params .ProvisionedThroughputOnCreate > 0 {
643
+ diskToCreate .ProvisionedThroughput = params .ProvisionedThroughputOnCreate
644
+ }
645
+
646
+ if params .StoragePools != nil {
647
+ sp := common .StoragePoolInZone (params .StoragePools , volKey .Zone )
648
+ if sp == nil {
649
+ return status .Errorf (codes .InvalidArgument , "cannot create disk in zone %q: no Storage Pools exist in zone" , volKey .Zone )
650
+ }
651
+ diskToCreate .StoragePool = sp .ResourceName
652
+ }
641
653
642
654
if snapshotID != "" {
643
655
_ , snapshotType , _ , err := common .SnapshotIDToProjectKey (snapshotID )
@@ -662,20 +674,20 @@ func (cloud *CloudProvider) insertZonalDisk(
662
674
KmsKeyName : params .DiskEncryptionKMSKey ,
663
675
}
664
676
}
677
+ diskToCreate .EnableConfidentialCompute = params .EnableConfidentialCompute
665
678
666
679
if gceAPIVersion == GCEAPIVersionBeta {
667
680
var insertOp * computebeta.Operation
668
- betaDiskToCreate := convertV1DiskToBetaDisk (diskToCreate , params . ProvisionedThroughputOnCreate )
681
+ betaDiskToCreate := convertV1DiskToBetaDisk (diskToCreate )
669
682
betaDiskToCreate .MultiWriter = multiWriter
670
- betaDiskToCreate .EnableConfidentialCompute = params .EnableConfidentialCompute
671
683
insertOp , err = cloud .betaService .Disks .Insert (project , volKey .Zone , betaDiskToCreate ).Context (ctx ).Do ()
672
684
if insertOp != nil {
673
685
opName = insertOp .Name
674
686
}
675
687
} else if gceAPIVersion == GCEAPIVersionAlpha {
676
688
var insertOp * computealpha.Operation
677
689
var storagePool * common.StoragePool
678
- if storagePoolsEnabled {
690
+ if params . StoragePools != nil {
679
691
storagePool = common .StoragePoolInZone (params .StoragePools , volKey .Zone )
680
692
if storagePool == nil {
681
693
return status .Errorf (codes .InvalidArgument , "cannot create disk in zone %q: no Storage Pools exist in zone" , volKey .Zone )
0 commit comments