diff --git a/pkg/volume/gce_pd/gce_pd.go b/pkg/volume/gce_pd/gce_pd.go index 5576f1fabe..2b94cb2973 100644 --- a/pkg/volume/gce_pd/gce_pd.go +++ b/pkg/volume/gce_pd/gce_pd.go @@ -423,7 +423,7 @@ func (c *gcePersistentDiskProvisioner) Provision() (*v1.PersistentVolume, error) PersistentVolumeReclaimPolicy: c.options.PersistentVolumeReclaimPolicy, AccessModes: c.options.PVC.Spec.AccessModes, Capacity: v1.ResourceList{ - v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dGi", sizeGB)), + v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dG", sizeGB)), }, PersistentVolumeSource: v1.PersistentVolumeSource{ GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{ diff --git a/pkg/volume/gce_pd/gce_pd_test.go b/pkg/volume/gce_pd/gce_pd_test.go index e9124dee40..79c96b8ac5 100644 --- a/pkg/volume/gce_pd/gce_pd_test.go +++ b/pkg/volume/gce_pd/gce_pd_test.go @@ -183,7 +183,7 @@ func TestPlugin(t *testing.T) { } cap := persistentSpec.Spec.Capacity[v1.ResourceStorage] size := cap.Value() - if size != 100*1024*1024*1024 { + if size != 100*volume.GB { t.Errorf("Provision() returned unexpected volume size: %v", size) } diff --git a/pkg/volume/gce_pd/gce_util.go b/pkg/volume/gce_pd/gce_util.go index 3d17a45501..0ec7566ea9 100644 --- a/pkg/volume/gce_pd/gce_util.go +++ b/pkg/volume/gce_pd/gce_util.go @@ -82,8 +82,8 @@ func (gceutil *GCEDiskUtil) CreateVolume(c *gcePersistentDiskProvisioner) (strin name := volume.GenerateVolumeName(c.options.ClusterName, c.options.PVName, 63) // GCE PD name can have up to 63 characters capacity := c.options.PVC.Spec.Resources.Requests[v1.ResourceName(v1.ResourceStorage)] requestBytes := capacity.Value() - // GCE works with gigabytes, convert to GiB with rounding up - requestGB := volume.RoundUpSize(requestBytes, 1024*1024*1024) + // GCE PDs are allocated in chunks of GBs (not GiBs) + requestGB := volume.RoundUpSize(requestBytes, volume.GB) // Apply Parameters (case-insensitive). We leave validation of // the values to the cloud provider. diff --git a/test/e2e/storage/volume_provisioning.go b/test/e2e/storage/volume_provisioning.go index 38d1b25793..2c77177de3 100644 --- a/test/e2e/storage/volume_provisioning.go +++ b/test/e2e/storage/volume_provisioning.go @@ -256,8 +256,8 @@ var _ = SIGDescribe("Dynamic Provisioning", func() { "type": "pd-ssd", "zone": cloudZone, }, - "1.5Gi", - "2Gi", + "1.5G", + "2G", func(volume *v1.PersistentVolume) error { return checkGCEPD(volume, "pd-ssd") }, @@ -269,8 +269,8 @@ var _ = SIGDescribe("Dynamic Provisioning", func() { map[string]string{ "type": "pd-standard", }, - "1.5Gi", - "2Gi", + "1.5G", + "2G", func(volume *v1.PersistentVolume) error { return checkGCEPD(volume, "pd-standard") }, @@ -435,8 +435,8 @@ var _ = SIGDescribe("Dynamic Provisioning", func() { map[string]string{ "type": "pd-standard", }, - "1Gi", - "1Gi", + "1G", + "1G", func(volume *v1.PersistentVolume) error { return checkGCEPD(volume, "pd-standard") }, @@ -469,8 +469,8 @@ var _ = SIGDescribe("Dynamic Provisioning", func() { map[string]string{ "type": "pd-standard", }, - "1Gi", - "1Gi", + "1G", + "1G", func(volume *v1.PersistentVolume) error { return checkGCEPD(volume, "pd-standard") }, @@ -520,7 +520,7 @@ var _ = SIGDescribe("Dynamic Provisioning", func() { name: "unmanaged_zone", provisioner: "kubernetes.io/gce-pd", parameters: map[string]string{"zone": unmanagedZone}, - claimSize: "1Gi", + claimSize: "1G", } sc := newStorageClass(test, ns, suffix) sc, err = c.StorageV1().StorageClasses().Create(sc) @@ -640,6 +640,14 @@ var _ = SIGDescribe("Dynamic Provisioning", func() { claimSize: "2Gi", expectedSize: "2Gi", } + // gce or gke + if getDefaultPluginName() == "kubernetes.io/gce-pd" { + // using GB not GiB as e2e test unit since gce-pd returns GB, + // or expectedSize may be greater than claimSize. + test.claimSize = "2G" + test.expectedSize = "2G" + } + claim := newClaim(test, ns, "default") testDynamicProvisioning(test, c, claim, nil) })