Skip to content

Commit 245f627

Browse files
authored
Merge pull request #1283 from sunnylovestiramisu/release-1.9
[release-1.9]Fix provisioned-iops-on-create passing logic
2 parents c374714 + dd00d1e commit 245f627

File tree

3 files changed

+60
-23
lines changed

3 files changed

+60
-23
lines changed

pkg/common/utils_test.go

+6
Original file line numberDiff line numberDiff line change
@@ -597,6 +597,12 @@ func TestConvertStringToInt64(t *testing.T) {
597597
expInt64: 10000,
598598
expectError: false,
599599
},
600+
{
601+
desc: "test higher number",
602+
inputStr: "15000",
603+
expInt64: 15000,
604+
expectError: false,
605+
},
600606
{
601607
desc: "round M to number",
602608
inputStr: "1M",

pkg/gce-cloud-provider/compute/gce-compute.go

+14-11
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,9 @@ func convertV1DiskToBetaDisk(v1Disk *computev1.Disk, provisionedThroughputOnCrea
419419
ReplicaZones: v1Disk.ReplicaZones,
420420
DiskEncryptionKey: dek,
421421
}
422+
if v1Disk.ProvisionedIops > 0 {
423+
betaDisk.ProvisionedIops = v1Disk.ProvisionedIops
424+
}
422425
if provisionedThroughputOnCreate > 0 {
423426
betaDisk.ProvisionedThroughput = provisionedThroughputOnCreate
424427
}
@@ -449,12 +452,11 @@ func (cloud *CloudProvider) insertRegionalDisk(
449452
}
450453

451454
diskToCreate := &computev1.Disk{
452-
Name: volKey.Name,
453-
SizeGb: common.BytesToGbRoundUp(capBytes),
454-
Description: description,
455-
Type: cloud.GetDiskTypeURI(cloud.project, volKey, params.DiskType),
456-
Labels: params.Labels,
457-
ProvisionedIops: params.ProvisionedIOPSOnCreate,
455+
Name: volKey.Name,
456+
SizeGb: common.BytesToGbRoundUp(capBytes),
457+
Description: description,
458+
Type: cloud.GetDiskTypeURI(cloud.project, volKey, params.DiskType),
459+
Labels: params.Labels,
458460
}
459461
if snapshotID != "" {
460462
_, snapshotType, _, err := common.SnapshotIDToProjectKey(snapshotID)
@@ -562,11 +564,12 @@ func (cloud *CloudProvider) insertZonalDisk(
562564
}
563565

564566
diskToCreate := &computev1.Disk{
565-
Name: volKey.Name,
566-
SizeGb: common.BytesToGbRoundUp(capBytes),
567-
Description: description,
568-
Type: cloud.GetDiskTypeURI(project, volKey, params.DiskType),
569-
Labels: params.Labels,
567+
Name: volKey.Name,
568+
SizeGb: common.BytesToGbRoundUp(capBytes),
569+
Description: description,
570+
Type: cloud.GetDiskTypeURI(project, volKey, params.DiskType),
571+
Labels: params.Labels,
572+
ProvisionedIops: params.ProvisionedIOPSOnCreate,
570573
}
571574

572575
if snapshotID != "" {

test/e2e/tests/single_zone_e2e_test.go

+40-12
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,15 @@ const (
4545
testNamePrefix = "gcepd-csi-e2e-"
4646

4747
defaultSizeGb int64 = 5
48+
defaultExtremeSizeGb int64 = 500
4849
defaultRepdSizeGb int64 = 200
4950
defaultMwSizeGb int64 = 200
5051
defaultVolumeLimit int64 = 127
5152
readyState = "READY"
5253
standardDiskType = "pd-standard"
5354
extremeDiskType = "pd-extreme"
54-
provisionedIOPSOnCreate = "100000"
55-
provisionedIOPSOnCreateInt = int64(100000)
55+
provisionedIOPSOnCreate = "12345"
56+
provisionedIOPSOnCreateInt = int64(12345)
5657

5758
defaultEpsilon = 500000000 // 500M
5859
)
@@ -386,14 +387,21 @@ var _ = Describe("GCE PD CSI Driver", func() {
386387
// Create Disk
387388
disk := typeToDisk[diskType]
388389
volName := testNamePrefix + string(uuid.NewUUID())
389-
volID, err := client.CreateVolume(volName, disk.params, defaultSizeGb, nil, nil)
390+
391+
diskSize := defaultSizeGb
392+
if diskType == extremeDiskType {
393+
diskSize = defaultExtremeSizeGb
394+
}
395+
396+
volID, err := client.CreateVolume(volName, disk.params, diskSize, nil, nil)
397+
390398
Expect(err).To(BeNil(), "CreateVolume failed with error: %v", err)
391399

392400
// Validate Disk Created
393401
cloudDisk, err := computeService.Disks.Get(p, z, volName).Do()
394402
Expect(err).To(BeNil(), "Could not get disk from cloud directly")
395403
Expect(cloudDisk.Status).To(Equal(readyState))
396-
Expect(cloudDisk.SizeGb).To(Equal(defaultSizeGb))
404+
Expect(cloudDisk.SizeGb).To(Equal(diskSize))
397405
Expect(cloudDisk.Name).To(Equal(volName))
398406
disk.validate(cloudDisk)
399407

@@ -425,14 +433,19 @@ var _ = Describe("GCE PD CSI Driver", func() {
425433
params := merge(disk.params, map[string]string{
426434
common.ParameterKeyLabels: "key1=value1,key2=value2",
427435
})
428-
volID, err := client.CreateVolume(volName, params, defaultSizeGb, nil, nil)
436+
437+
diskSize := defaultSizeGb
438+
if diskType == extremeDiskType {
439+
diskSize = defaultExtremeSizeGb
440+
}
441+
volID, err := client.CreateVolume(volName, params, diskSize, nil, nil)
429442
Expect(err).To(BeNil(), "CreateVolume failed with error: %v", err)
430443

431444
// Validate Disk Created
432445
cloudDisk, err := computeService.Disks.Get(p, z, volName).Do()
433446
Expect(err).To(BeNil(), "Could not get disk from cloud directly")
434447
Expect(cloudDisk.Status).To(Equal(readyState))
435-
Expect(cloudDisk.SizeGb).To(Equal(defaultSizeGb))
448+
Expect(cloudDisk.SizeGb).To(Equal(diskSize))
436449
Expect(cloudDisk.Labels).To(Equal(map[string]string{
437450
"key1": "value1",
438451
"key2": "value2",
@@ -547,14 +560,19 @@ var _ = Describe("GCE PD CSI Driver", func() {
547560
},
548561
},
549562
}
550-
volID, err := controllerClient.CreateVolume(volName, params, defaultSizeGb, topology, nil)
563+
564+
diskSize := defaultSizeGb
565+
if diskType == extremeDiskType {
566+
diskSize = defaultExtremeSizeGb
567+
}
568+
volID, err := controllerClient.CreateVolume(volName, params, diskSize, topology, nil)
551569
Expect(err).To(BeNil(), "CreateVolume failed with error: %v", err)
552570

553571
// Validate Disk Created
554572
cloudDisk, err := computeService.Disks.Get(p, z, volName).Do()
555573
Expect(err).To(BeNil(), "Could not get disk from cloud directly")
556574
Expect(cloudDisk.Status).To(Equal(readyState))
557-
Expect(cloudDisk.SizeGb).To(Equal(defaultSizeGb))
575+
Expect(cloudDisk.SizeGb).To(Equal(diskSize))
558576
Expect(cloudDisk.Name).To(Equal(volName))
559577
disk.validate(cloudDisk)
560578

@@ -872,6 +890,11 @@ var _ = Describe("GCE PD CSI Driver", func() {
872890
controllerInstance := testContext.Instance
873891
controllerClient := testContext.Client
874892

893+
diskSize := defaultSizeGb
894+
if diskType == extremeDiskType {
895+
diskSize = defaultExtremeSizeGb
896+
}
897+
875898
p, z, _ := controllerInstance.GetIdentity()
876899

877900
// Create Disk
@@ -882,14 +905,14 @@ var _ = Describe("GCE PD CSI Driver", func() {
882905
common.ParameterKeyPVCNamespace: "test-pvc-namespace",
883906
common.ParameterKeyPVName: "test-pv-name",
884907
})
885-
volID, err := controllerClient.CreateVolume(volName, params, defaultSizeGb, nil /* topReq */, nil)
908+
volID, err := controllerClient.CreateVolume(volName, params, diskSize, nil /* topReq */, nil)
886909
Expect(err).To(BeNil(), "CreateVolume failed with error: %v", err)
887910

888911
// Validate Disk Created
889912
cloudDisk, err := computeService.Disks.Get(p, z, volName).Do()
890913
Expect(err).To(BeNil(), "Could not get disk from cloud directly")
891914
Expect(cloudDisk.Status).To(Equal(readyState))
892-
Expect(cloudDisk.SizeGb).To(Equal(defaultSizeGb))
915+
Expect(cloudDisk.SizeGb).To(Equal(diskSize))
893916
Expect(cloudDisk.Name).To(Equal(volName))
894917
Expect(cloudDisk.Description).To(Equal("{\"kubernetes.io/created-for/pv/name\":\"test-pv-name\",\"kubernetes.io/created-for/pvc/name\":\"test-pvc\",\"kubernetes.io/created-for/pvc/namespace\":\"test-pvc-namespace\",\"storage.gke.io/created-by\":\"pd.csi.storage.gke.io\"}"))
895918
disk.validate(cloudDisk)
@@ -1256,7 +1279,12 @@ func createAndValidateUniqueZonalDisk(client *remote.CsiClient, project, zone st
12561279
// Create Disk
12571280
disk := typeToDisk[diskType]
12581281
volName := testNamePrefix + string(uuid.NewUUID())
1259-
volID, err := client.CreateVolume(volName, disk.params, defaultSizeGb,
1282+
1283+
diskSize := defaultSizeGb
1284+
if diskType == extremeDiskType {
1285+
diskSize = defaultExtremeSizeGb
1286+
}
1287+
volID, err := client.CreateVolume(volName, disk.params, diskSize,
12601288
&csi.TopologyRequirement{
12611289
Requisite: []*csi.Topology{
12621290
{
@@ -1270,7 +1298,7 @@ func createAndValidateUniqueZonalDisk(client *remote.CsiClient, project, zone st
12701298
cloudDisk, err := computeService.Disks.Get(project, zone, volName).Do()
12711299
Expect(err).To(BeNil(), "Could not get disk from cloud directly")
12721300
Expect(cloudDisk.Status).To(Equal(readyState))
1273-
Expect(cloudDisk.SizeGb).To(Equal(defaultSizeGb))
1301+
Expect(cloudDisk.SizeGb).To(Equal(diskSize))
12741302
Expect(cloudDisk.Name).To(Equal(volName))
12751303
disk.validate(cloudDisk)
12761304

0 commit comments

Comments
 (0)