Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
a62ee8b0
Commit
a62ee8b0
authored
Feb 05, 2019
by
Andrew Kim
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
clean up volume rounding functions and move to k8s.io/cloud-provider/volume
parent
ca6a051b
Hide whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
204 additions
and
103 deletions
+204
-103
BUILD
pkg/cloudprovider/providers/aws/BUILD
+1
-1
aws.go
pkg/cloudprovider/providers/aws/aws.go
+2
-2
BUILD
pkg/cloudprovider/providers/azure/BUILD
+1
-1
azure_managedDiskController.go
...udprovider/providers/azure/azure_managedDiskController.go
+2
-3
BUILD
pkg/cloudprovider/providers/gce/BUILD
+0
-1
gce_disks.go
pkg/cloudprovider/providers/gce/gce_disks.go
+1
-2
BUILD
pkg/cloudprovider/providers/openstack/BUILD
+1
-1
openstack_volumes.go
pkg/cloudprovider/providers/openstack/openstack_volumes.go
+2
-2
BUILD
pkg/volume/azure_file/BUILD
+1
-0
azure_file.go
pkg/volume/azure_file/azure_file.go
+2
-1
azure_provision.go
pkg/volume/azure_file/azure_provision.go
+2
-2
cinder_util.go
pkg/volume/cinder/cinder_util.go
+3
-3
BUILD
pkg/volume/flocker/BUILD
+1
-0
flocker_util.go
pkg/volume/flocker/flocker_util.go
+2
-2
BUILD
pkg/volume/gcepd/BUILD
+0
-1
gce_pd_test.go
pkg/volume/gcepd/gce_pd_test.go
+0
-1
BUILD
pkg/volume/glusterfs/BUILD
+1
-0
glusterfs.go
pkg/volume/glusterfs/glusterfs.go
+5
-4
BUILD
pkg/volume/photon_pd/BUILD
+1
-0
photon_util.go
pkg/volume/photon_pd/photon_util.go
+2
-1
BUILD
pkg/volume/portworx/BUILD
+1
-0
portworx_util.go
pkg/volume/portworx/portworx_util.go
+4
-4
BUILD
pkg/volume/quobyte/BUILD
+1
-0
quobyte_util.go
pkg/volume/quobyte/quobyte_util.go
+2
-2
BUILD
pkg/volume/rbd/BUILD
+1
-0
rbd_util.go
pkg/volume/rbd/rbd_util.go
+4
-5
BUILD
pkg/volume/scaleio/BUILD
+1
-0
sio_volume.go
pkg/volume/scaleio/sio_volume.go
+6
-4
BUILD
pkg/volume/storageos/BUILD
+1
-0
storageos.go
pkg/volume/storageos/storageos.go
+2
-1
util.go
pkg/volume/util/util.go
+0
-56
BUILD
pkg/volume/vsphere_volume/BUILD
+1
-0
vsphere_volume_util.go
pkg/volume/vsphere_volume/vsphere_volume_util.go
+2
-2
BUILD
staging/src/k8s.io/cloud-provider/volume/helpers/BUILD
+5
-1
rounding.go
staging/src/k8s.io/cloud-provider/volume/helpers/rounding.go
+143
-0
No files found.
pkg/cloudprovider/providers/aws/BUILD
View file @
a62ee8b0
...
@@ -28,7 +28,6 @@ go_library(
...
@@ -28,7 +28,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/aws",
importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/aws",
deps = [
deps = [
"//pkg/credentialprovider/aws:go_default_library",
"//pkg/credentialprovider/aws:go_default_library",
"//pkg/volume/util:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
...
@@ -45,6 +44,7 @@ go_library(
...
@@ -45,6 +44,7 @@ go_library(
"//staging/src/k8s.io/cloud-provider/service/helpers:go_default_library",
"//staging/src/k8s.io/cloud-provider/service/helpers:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws/awserr:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws/awserr:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws/credentials:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws/credentials:go_default_library",
...
...
pkg/cloudprovider/providers/aws/aws.go
View file @
a62ee8b0
...
@@ -62,7 +62,7 @@ import (
...
@@ -62,7 +62,7 @@ import (
servicehelpers
"k8s.io/cloud-provider/service/helpers"
servicehelpers
"k8s.io/cloud-provider/service/helpers"
cloudvolume
"k8s.io/cloud-provider/volume"
cloudvolume
"k8s.io/cloud-provider/volume"
volerr
"k8s.io/cloud-provider/volume/errors"
volerr
"k8s.io/cloud-provider/volume/errors"
volume
util
"k8s.io/kubernetes/pkg/volume/util
"
volume
helpers
"k8s.io/cloud-provider/volume/helpers
"
)
)
// NLBHealthCheckRuleDescription is the comment used on a security group rule to
// NLBHealthCheckRuleDescription is the comment used on a security group rule to
...
@@ -2604,7 +2604,7 @@ func (c *Cloud) ResizeDisk(
...
@@ -2604,7 +2604,7 @@ func (c *Cloud) ResizeDisk(
return
oldSize
,
descErr
return
oldSize
,
descErr
}
}
// AWS resizes in chunks of GiB (not GB)
// AWS resizes in chunks of GiB (not GB)
requestGiB
:=
volume
util
.
RoundUpToGiB
(
newSize
)
requestGiB
:=
volume
helpers
.
RoundUpToGiB
(
newSize
)
newSizeQuant
:=
resource
.
MustParse
(
fmt
.
Sprintf
(
"%dGi"
,
requestGiB
))
newSizeQuant
:=
resource
.
MustParse
(
fmt
.
Sprintf
(
"%dGi"
,
requestGiB
))
// If disk already if of greater or equal size than requested we return
// If disk already if of greater or equal size than requested we return
...
...
pkg/cloudprovider/providers/azure/BUILD
View file @
a62ee8b0
...
@@ -37,7 +37,6 @@ go_library(
...
@@ -37,7 +37,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/azure",
importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/azure",
deps = [
deps = [
"//pkg/cloudprovider/providers/azure/auth:go_default_library",
"//pkg/cloudprovider/providers/azure/auth:go_default_library",
"//pkg/volume/util:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
...
@@ -58,6 +57,7 @@ go_library(
...
@@ -58,6 +57,7 @@ go_library(
"//staging/src/k8s.io/cloud-provider/service/helpers:go_default_library",
"//staging/src/k8s.io/cloud-provider/service/helpers:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
"//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-10-01/compute:go_default_library",
"//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-10-01/compute:go_default_library",
"//vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network:go_default_library",
"//vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network:go_default_library",
"//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2018-07-01/storage:go_default_library",
"//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2018-07-01/storage:go_default_library",
...
...
pkg/cloudprovider/providers/azure/azure_managedDiskController.go
View file @
a62ee8b0
...
@@ -31,7 +31,7 @@ import (
...
@@ -31,7 +31,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/api/resource"
kwait
"k8s.io/apimachinery/pkg/util/wait"
kwait
"k8s.io/apimachinery/pkg/util/wait"
cloudvolume
"k8s.io/cloud-provider/volume"
cloudvolume
"k8s.io/cloud-provider/volume"
"k8s.io/kubernetes/pkg/volume/util
"
volumehelpers
"k8s.io/cloud-provider/volume/helpers
"
)
)
const
(
const
(
...
@@ -238,9 +238,8 @@ func (c *ManagedDiskController) ResizeDisk(diskURI string, oldSize resource.Quan
...
@@ -238,9 +238,8 @@ func (c *ManagedDiskController) ResizeDisk(diskURI string, oldSize resource.Quan
return
oldSize
,
fmt
.
Errorf
(
"DiskProperties of disk(%s) is nil"
,
diskName
)
return
oldSize
,
fmt
.
Errorf
(
"DiskProperties of disk(%s) is nil"
,
diskName
)
}
}
requestBytes
:=
newSize
.
Value
()
// Azure resizes in chunks of GiB (not GB)
// Azure resizes in chunks of GiB (not GB)
requestGiB
:=
int32
(
util
.
RoundUpSize
(
requestBytes
,
1024
*
1024
*
1024
))
requestGiB
:=
int32
(
volumehelpers
.
RoundUpToGiB
(
newSize
))
newSizeQuant
:=
resource
.
MustParse
(
fmt
.
Sprintf
(
"%dGi"
,
requestGiB
))
newSizeQuant
:=
resource
.
MustParse
(
fmt
.
Sprintf
(
"%dGi"
,
requestGiB
))
klog
.
V
(
2
)
.
Infof
(
"azureDisk - begin to resize disk(%s) with new size(%d), old size(%v)"
,
diskName
,
requestGiB
,
oldSize
)
klog
.
V
(
2
)
.
Infof
(
"azureDisk - begin to resize disk(%s) with new size(%d), old size(%v)"
,
diskName
,
requestGiB
,
oldSize
)
...
...
pkg/cloudprovider/providers/gce/BUILD
View file @
a62ee8b0
...
@@ -41,7 +41,6 @@ go_library(
...
@@ -41,7 +41,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/gce",
importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/gce",
visibility = ["//visibility:public"],
visibility = ["//visibility:public"],
deps = [
deps = [
"//pkg/volume/util:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
...
...
pkg/cloudprovider/providers/gce/gce_disks.go
View file @
a62ee8b0
...
@@ -32,7 +32,6 @@ import (
...
@@ -32,7 +32,6 @@ import (
cloudvolume
"k8s.io/cloud-provider/volume"
cloudvolume
"k8s.io/cloud-provider/volume"
volerr
"k8s.io/cloud-provider/volume/errors"
volerr
"k8s.io/cloud-provider/volume/errors"
volumehelpers
"k8s.io/cloud-provider/volume/helpers"
volumehelpers
"k8s.io/cloud-provider/volume/helpers"
volumeutil
"k8s.io/kubernetes/pkg/volume/util"
"github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud"
"github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud"
"github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta"
"github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta"
...
@@ -749,7 +748,7 @@ func (g *Cloud) ResizeDisk(diskToResize string, oldSize resource.Quantity, newSi
...
@@ -749,7 +748,7 @@ func (g *Cloud) ResizeDisk(diskToResize string, oldSize resource.Quantity, newSi
}
}
// GCE resizes in chunks of GiBs
// GCE resizes in chunks of GiBs
requestGIB
:=
volume
util
.
RoundUpToGiB
(
newSize
)
requestGIB
:=
volume
helpers
.
RoundUpToGiB
(
newSize
)
newSizeQuant
:=
resource
.
MustParse
(
fmt
.
Sprintf
(
"%dGi"
,
requestGIB
))
newSizeQuant
:=
resource
.
MustParse
(
fmt
.
Sprintf
(
"%dGi"
,
requestGIB
))
// If disk is already of size equal or greater than requested size, we simply return
// If disk is already of size equal or greater than requested size, we simply return
...
...
pkg/cloudprovider/providers/openstack/BUILD
View file @
a62ee8b0
...
@@ -21,7 +21,6 @@ go_library(
...
@@ -21,7 +21,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/openstack",
importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/openstack",
deps = [
deps = [
"//pkg/util/mount:go_default_library",
"//pkg/util/mount:go_default_library",
"//pkg/volume/util:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
...
@@ -34,6 +33,7 @@ go_library(
...
@@ -34,6 +33,7 @@ go_library(
"//staging/src/k8s.io/cloud-provider/service/helpers:go_default_library",
"//staging/src/k8s.io/cloud-provider/service/helpers:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
"//vendor/github.com/gophercloud/gophercloud:go_default_library",
"//vendor/github.com/gophercloud/gophercloud:go_default_library",
"//vendor/github.com/gophercloud/gophercloud/openstack:go_default_library",
"//vendor/github.com/gophercloud/gophercloud/openstack:go_default_library",
"//vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions:go_default_library",
"//vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions:go_default_library",
...
...
pkg/cloudprovider/providers/openstack/openstack_volumes.go
View file @
a62ee8b0
...
@@ -32,7 +32,7 @@ import (
...
@@ -32,7 +32,7 @@ import (
cloudprovider
"k8s.io/cloud-provider"
cloudprovider
"k8s.io/cloud-provider"
cloudvolume
"k8s.io/cloud-provider/volume"
cloudvolume
"k8s.io/cloud-provider/volume"
volerr
"k8s.io/cloud-provider/volume/errors"
volerr
"k8s.io/cloud-provider/volume/errors"
volume
util
"k8s.io/kubernetes/pkg/volume/util
"
volume
helpers
"k8s.io/cloud-provider/volume/helpers
"
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud"
volumeexpand
"github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions"
volumeexpand
"github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions"
...
@@ -413,7 +413,7 @@ func (os *OpenStack) ExpandVolume(volumeID string, oldSize resource.Quantity, ne
...
@@ -413,7 +413,7 @@ func (os *OpenStack) ExpandVolume(volumeID string, oldSize resource.Quantity, ne
}
}
// Cinder works with gigabytes, convert to GiB with rounding up
// Cinder works with gigabytes, convert to GiB with rounding up
volSizeGiB
,
err
:=
volume
util
.
RoundUpToGiBInt
(
newSize
)
volSizeGiB
,
err
:=
volume
helpers
.
RoundUpToGiBInt
(
newSize
)
if
err
!=
nil
{
if
err
!=
nil
{
return
oldSize
,
err
return
oldSize
,
err
}
}
...
...
pkg/volume/azure_file/BUILD
View file @
a62ee8b0
...
@@ -26,6 +26,7 @@ go_library(
...
@@ -26,6 +26,7 @@ go_library(
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/cloud-provider:go_default_library",
"//staging/src/k8s.io/cloud-provider:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
"//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2018-07-01/storage:go_default_library",
"//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2018-07-01/storage:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/utils/strings:go_default_library",
"//vendor/k8s.io/utils/strings:go_default_library",
...
...
pkg/volume/azure_file/azure_file.go
View file @
a62ee8b0
...
@@ -27,6 +27,7 @@ import (
...
@@ -27,6 +27,7 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/types"
cloudprovider
"k8s.io/cloud-provider"
cloudprovider
"k8s.io/cloud-provider"
volumehelpers
"k8s.io/cloud-provider/volume/helpers"
"k8s.io/klog"
"k8s.io/klog"
"k8s.io/kubernetes/pkg/cloudprovider/providers/azure"
"k8s.io/kubernetes/pkg/cloudprovider/providers/azure"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/kubernetes/pkg/util/mount"
...
@@ -173,7 +174,7 @@ func (plugin *azureFilePlugin) ExpandVolumeDevice(
...
@@ -173,7 +174,7 @@ func (plugin *azureFilePlugin) ExpandVolumeDevice(
return
oldSize
,
err
return
oldSize
,
err
}
}
if
err
:=
azure
.
ResizeFileShare
(
accountName
,
accountKey
,
shareName
,
int
(
volu
til
.
RoundUpToGiB
(
newSize
)));
err
!=
nil
{
if
err
:=
azure
.
ResizeFileShare
(
accountName
,
accountKey
,
shareName
,
int
(
volu
mehelpers
.
RoundUpToGiB
(
newSize
)));
err
!=
nil
{
return
oldSize
,
err
return
oldSize
,
err
}
}
...
...
pkg/volume/azure_file/azure_provision.go
View file @
a62ee8b0
...
@@ -27,6 +27,7 @@ import (
...
@@ -27,6 +27,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/api/resource"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
cloudprovider
"k8s.io/cloud-provider"
cloudprovider
"k8s.io/cloud-provider"
volumehelpers
"k8s.io/cloud-provider/volume/helpers"
"k8s.io/kubernetes/pkg/cloudprovider/providers/azure"
"k8s.io/kubernetes/pkg/cloudprovider/providers/azure"
"k8s.io/kubernetes/pkg/volume"
"k8s.io/kubernetes/pkg/volume"
"k8s.io/kubernetes/pkg/volume/util"
"k8s.io/kubernetes/pkg/volume/util"
...
@@ -147,8 +148,7 @@ func (a *azureFileProvisioner) Provision(selectedNode *v1.Node, allowedTopologie
...
@@ -147,8 +148,7 @@ func (a *azureFileProvisioner) Provision(selectedNode *v1.Node, allowedTopologie
name
:=
util
.
GenerateVolumeName
(
a
.
options
.
ClusterName
,
a
.
options
.
PVName
,
63
)
name
:=
util
.
GenerateVolumeName
(
a
.
options
.
ClusterName
,
a
.
options
.
PVName
,
63
)
name
=
strings
.
Replace
(
name
,
"--"
,
"-"
,
-
1
)
name
=
strings
.
Replace
(
name
,
"--"
,
"-"
,
-
1
)
capacity
:=
a
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
capacity
:=
a
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
requestBytes
:=
capacity
.
Value
()
requestGiB
:=
int
(
volumehelpers
.
RoundUpToGiB
(
capacity
))
requestGiB
:=
int
(
util
.
RoundUpSize
(
requestBytes
,
1024
*
1024
*
1024
))
secretNamespace
:=
a
.
options
.
PVC
.
Namespace
secretNamespace
:=
a
.
options
.
PVC
.
Namespace
// Apply ProvisionerParameters (case-insensitive). We leave validation of
// Apply ProvisionerParameters (case-insensitive). We leave validation of
// the values to the cloud provider.
// the values to the cloud provider.
...
...
pkg/volume/cinder/cinder_util.go
View file @
a62ee8b0
...
@@ -30,7 +30,7 @@ import (
...
@@ -30,7 +30,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/sets"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
cloud
volumehelpers
"k8s.io/cloud-provider/volume/helpers"
volumehelpers
"k8s.io/cloud-provider/volume/helpers"
"k8s.io/kubernetes/pkg/volume"
"k8s.io/kubernetes/pkg/volume"
volutil
"k8s.io/kubernetes/pkg/volume/util"
volutil
"k8s.io/kubernetes/pkg/volume/util"
"k8s.io/utils/exec"
"k8s.io/utils/exec"
...
@@ -170,7 +170,7 @@ func (util *DiskUtil) CreateVolume(c *cinderVolumeProvisioner, node *v1.Node, al
...
@@ -170,7 +170,7 @@ func (util *DiskUtil) CreateVolume(c *cinderVolumeProvisioner, node *v1.Node, al
capacity
:=
c
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
capacity
:=
c
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
// Cinder works with gigabytes, convert to GiB with rounding up
// Cinder works with gigabytes, convert to GiB with rounding up
volSizeGiB
,
err
:=
volu
til
.
RoundUpToGiBInt
(
capacity
)
volSizeGiB
,
err
:=
volu
mehelpers
.
RoundUpToGiBInt
(
capacity
)
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
0
,
nil
,
""
,
err
return
""
,
0
,
nil
,
""
,
err
}
}
...
@@ -207,7 +207,7 @@ func (util *DiskUtil) CreateVolume(c *cinderVolumeProvisioner, node *v1.Node, al
...
@@ -207,7 +207,7 @@ func (util *DiskUtil) CreateVolume(c *cinderVolumeProvisioner, node *v1.Node, al
// if we did not get any zones, lets leave it blank and gophercloud will
// if we did not get any zones, lets leave it blank and gophercloud will
// use zone "nova" as default
// use zone "nova" as default
if
len
(
zones
)
>
0
{
if
len
(
zones
)
>
0
{
availability
,
err
=
cloud
volumehelpers
.
SelectZoneForVolume
(
false
,
false
,
""
,
nil
,
zones
,
node
,
allowedTopologies
,
c
.
options
.
PVC
.
Name
)
availability
,
err
=
volumehelpers
.
SelectZoneForVolume
(
false
,
false
,
""
,
nil
,
zones
,
node
,
allowedTopologies
,
c
.
options
.
PVC
.
Name
)
if
err
!=
nil
{
if
err
!=
nil
{
klog
.
V
(
2
)
.
Infof
(
"error selecting zone for volume: %v"
,
err
)
klog
.
V
(
2
)
.
Infof
(
"error selecting zone for volume: %v"
,
err
)
return
""
,
0
,
nil
,
""
,
err
return
""
,
0
,
nil
,
""
,
err
...
...
pkg/volume/flocker/BUILD
View file @
a62ee8b0
...
@@ -25,6 +25,7 @@ go_library(
...
@@ -25,6 +25,7 @@ go_library(
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
"//vendor/github.com/clusterhq/flocker-go:go_default_library",
"//vendor/github.com/clusterhq/flocker-go:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/utils/strings:go_default_library",
"//vendor/k8s.io/utils/strings:go_default_library",
...
...
pkg/volume/flocker/flocker_util.go
View file @
a62ee8b0
...
@@ -22,7 +22,7 @@ import (
...
@@ -22,7 +22,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/util/rand"
"k8s.io/apimachinery/pkg/util/rand"
volu
til
"k8s.io/kubernetes/pkg/volume/util
"
volu
mehelpers
"k8s.io/cloud-provider/volume/helpers
"
flockerapi
"github.com/clusterhq/flocker-go"
flockerapi
"github.com/clusterhq/flocker-go"
"k8s.io/klog"
"k8s.io/klog"
...
@@ -72,7 +72,7 @@ func (util *flockerUtil) CreateVolume(c *flockerVolumeProvisioner) (datasetUUID
...
@@ -72,7 +72,7 @@ func (util *flockerUtil) CreateVolume(c *flockerVolumeProvisioner) (datasetUUID
capacity
:=
c
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
capacity
:=
c
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
requestBytes
:=
capacity
.
Value
()
requestBytes
:=
capacity
.
Value
()
volumeSizeGiB
,
err
=
volu
til
.
RoundUpToGiBInt
(
capacity
)
volumeSizeGiB
,
err
=
volu
mehelpers
.
RoundUpToGiBInt
(
capacity
)
if
err
!=
nil
{
if
err
!=
nil
{
return
return
}
}
...
...
pkg/volume/gcepd/BUILD
View file @
a62ee8b0
...
@@ -53,7 +53,6 @@ go_test(
...
@@ -53,7 +53,6 @@ go_test(
"//pkg/util/mount:go_default_library",
"//pkg/util/mount:go_default_library",
"//pkg/volume:go_default_library",
"//pkg/volume:go_default_library",
"//pkg/volume/testing:go_default_library",
"//pkg/volume/testing:go_default_library",
"//pkg/volume/util:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
...
...
pkg/volume/gcepd/gce_pd_test.go
View file @
a62ee8b0
...
@@ -33,7 +33,6 @@ import (
...
@@ -33,7 +33,6 @@ import (
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/kubernetes/pkg/volume"
"k8s.io/kubernetes/pkg/volume"
volumetest
"k8s.io/kubernetes/pkg/volume/testing"
volumetest
"k8s.io/kubernetes/pkg/volume/testing"
"k8s.io/kubernetes/pkg/volume/util"
)
)
func
TestCanSupport
(
t
*
testing
.
T
)
{
func
TestCanSupport
(
t
*
testing
.
T
)
{
...
...
pkg/volume/glusterfs/BUILD
View file @
a62ee8b0
...
@@ -29,6 +29,7 @@ go_library(
...
@@ -29,6 +29,7 @@ go_library(
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
"//vendor/github.com/heketi/heketi/client/api/go-client:go_default_library",
"//vendor/github.com/heketi/heketi/client/api/go-client:go_default_library",
"//vendor/github.com/heketi/heketi/pkg/glusterfs/api:go_default_library",
"//vendor/github.com/heketi/heketi/pkg/glusterfs/api:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
...
...
pkg/volume/glusterfs/glusterfs.go
View file @
a62ee8b0
...
@@ -37,6 +37,7 @@ import (
...
@@ -37,6 +37,7 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/apimachinery/pkg/util/uuid"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
volumehelpers
"k8s.io/cloud-provider/volume/helpers"
"k8s.io/klog"
"k8s.io/klog"
v1helper
"k8s.io/kubernetes/pkg/apis/core/v1/helper"
v1helper
"k8s.io/kubernetes/pkg/apis/core/v1/helper"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/kubernetes/pkg/util/mount"
...
@@ -811,7 +812,7 @@ func (p *glusterfsVolumeProvisioner) CreateVolume(gid int) (r *v1.GlusterfsPersi
...
@@ -811,7 +812,7 @@ func (p *glusterfsVolumeProvisioner) CreateVolume(gid int) (r *v1.GlusterfsPersi
capacity
:=
p
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
capacity
:=
p
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
// GlusterFS/heketi creates volumes in units of GiB.
// GlusterFS/heketi creates volumes in units of GiB.
sz
,
err
:=
volu
til
.
RoundUpToGiBInt
(
capacity
)
sz
,
err
:=
volu
mehelpers
.
RoundUpToGiBInt
(
capacity
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
0
,
""
,
err
return
nil
,
0
,
""
,
err
}
}
...
@@ -1240,11 +1241,11 @@ func (plugin *glusterfsPlugin) ExpandVolumeDevice(spec *volume.Spec, newSize res
...
@@ -1240,11 +1241,11 @@ func (plugin *glusterfsPlugin) ExpandVolumeDevice(spec *volume.Spec, newSize res
}
}
// Find out delta size
// Find out delta size
expansionSize
:=
(
newSize
.
Value
()
-
oldSize
.
Value
()
)
expansionSize
:=
resource
.
NewScaledQuantity
((
newSize
.
Value
()
-
oldSize
.
Value
()),
0
)
expansionSizeGiB
:=
int
(
volu
til
.
RoundUpSize
(
expansionSize
,
volutil
.
GIB
))
expansionSizeGiB
:=
int
(
volu
mehelpers
.
RoundUpToGiB
(
*
expansionSize
))
// Find out requested Size
// Find out requested Size
requestGiB
:=
volu
til
.
RoundUpToGiB
(
newSize
)
requestGiB
:=
volu
mehelpers
.
RoundUpToGiB
(
newSize
)
//Check the existing volume size
//Check the existing volume size
currentVolumeInfo
,
err
:=
cli
.
VolumeInfo
(
volumeID
)
currentVolumeInfo
,
err
:=
cli
.
VolumeInfo
(
volumeID
)
...
...
pkg/volume/photon_pd/BUILD
View file @
a62ee8b0
...
@@ -24,6 +24,7 @@ go_library(
...
@@ -24,6 +24,7 @@ go_library(
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/cloud-provider:go_default_library",
"//staging/src/k8s.io/cloud-provider:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/utils/strings:go_default_library",
"//vendor/k8s.io/utils/strings:go_default_library",
],
],
...
...
pkg/volume/photon_pd/photon_util.go
View file @
a62ee8b0
...
@@ -25,6 +25,7 @@ import (
...
@@ -25,6 +25,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
cloudprovider
"k8s.io/cloud-provider"
cloudprovider
"k8s.io/cloud-provider"
volumehelpers
"k8s.io/cloud-provider/volume/helpers"
"k8s.io/klog"
"k8s.io/klog"
"k8s.io/kubernetes/pkg/cloudprovider/providers/photon"
"k8s.io/kubernetes/pkg/cloudprovider/providers/photon"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/kubernetes/pkg/util/mount"
...
@@ -90,7 +91,7 @@ func (util *PhotonDiskUtil) CreateVolume(p *photonPersistentDiskProvisioner) (pd
...
@@ -90,7 +91,7 @@ func (util *PhotonDiskUtil) CreateVolume(p *photonPersistentDiskProvisioner) (pd
capacity
:=
p
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
capacity
:=
p
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
// PhotonController works with GiB, convert to GiB with rounding up
// PhotonController works with GiB, convert to GiB with rounding up
volSizeGB
,
err
:=
volume
util
.
RoundUpToGiBInt
(
capacity
)
volSizeGB
,
err
:=
volume
helpers
.
RoundUpToGiBInt
(
capacity
)
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
0
,
""
,
err
return
""
,
0
,
""
,
err
}
}
...
...
pkg/volume/portworx/BUILD
View file @
a62ee8b0
...
@@ -38,6 +38,7 @@ go_library(
...
@@ -38,6 +38,7 @@ go_library(
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
"//vendor/github.com/libopenstorage/openstorage/api:go_default_library",
"//vendor/github.com/libopenstorage/openstorage/api:go_default_library",
"//vendor/github.com/libopenstorage/openstorage/api/client:go_default_library",
"//vendor/github.com/libopenstorage/openstorage/api/client:go_default_library",
"//vendor/github.com/libopenstorage/openstorage/api/client/volume:go_default_library",
"//vendor/github.com/libopenstorage/openstorage/api/client/volume:go_default_library",
...
...
pkg/volume/portworx/portworx_util.go
View file @
a62ee8b0
...
@@ -27,10 +27,10 @@ import (
...
@@ -27,10 +27,10 @@ import (
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/api/resource"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
volumehelpers
"k8s.io/cloud-provider/volume/helpers"
"k8s.io/klog"
"k8s.io/klog"
api
"k8s.io/kubernetes/pkg/apis/core"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/volume"
"k8s.io/kubernetes/pkg/volume"
volutil
"k8s.io/kubernetes/pkg/volume/util"
)
)
const
(
const
(
...
@@ -59,7 +59,7 @@ func (util *portworxVolumeUtil) CreateVolume(p *portworxVolumeProvisioner) (stri
...
@@ -59,7 +59,7 @@ func (util *portworxVolumeUtil) CreateVolume(p *portworxVolumeProvisioner) (stri
capacity
:=
p
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
capacity
:=
p
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
// Portworx Volumes are specified in GiB
// Portworx Volumes are specified in GiB
requestGiB
:=
volu
til
.
RoundUpToGiB
(
capacity
)
requestGiB
:=
volu
mehelpers
.
RoundUpToGiB
(
capacity
)
// Perform a best-effort parsing of parameters. Portworx 1.2.9 and later parses volume parameters from
// Perform a best-effort parsing of parameters. Portworx 1.2.9 and later parses volume parameters from
// spec.VolumeLabels. So even if below SpecFromOpts() fails to parse certain parameters or
// spec.VolumeLabels. So even if below SpecFromOpts() fails to parse certain parameters or
...
@@ -79,7 +79,7 @@ func (util *portworxVolumeUtil) CreateVolume(p *portworxVolumeProvisioner) (stri
...
@@ -79,7 +79,7 @@ func (util *portworxVolumeUtil) CreateVolume(p *portworxVolumeProvisioner) (stri
}
}
// Update the requested size in the spec
// Update the requested size in the spec
spec
.
Size
=
uint64
(
requestGiB
*
volu
til
.
GI
B
)
spec
.
Size
=
uint64
(
requestGiB
*
volu
mehelpers
.
Gi
B
)
// Change the Portworx Volume name to PV name
// Change the Portworx Volume name to PV name
if
locator
==
nil
{
if
locator
==
nil
{
...
@@ -208,7 +208,7 @@ func (util *portworxVolumeUtil) ResizeVolume(spec *volume.Spec, newSize resource
...
@@ -208,7 +208,7 @@ func (util *portworxVolumeUtil) ResizeVolume(spec *volume.Spec, newSize resource
}
}
vol
:=
vols
[
0
]
vol
:=
vols
[
0
]
newSizeInBytes
:=
uint64
(
volu
til
.
RoundUpToGiB
(
newSize
)
*
volutil
.
GI
B
)
newSizeInBytes
:=
uint64
(
volu
mehelpers
.
RoundUpToGiB
(
newSize
)
*
volumehelpers
.
Gi
B
)
if
vol
.
Spec
.
Size
>=
newSizeInBytes
{
if
vol
.
Spec
.
Size
>=
newSizeInBytes
{
klog
.
Infof
(
"Portworx volume: %s already at size: %d greater than or equal to new "
+
klog
.
Infof
(
"Portworx volume: %s already at size: %d greater than or equal to new "
+
"requested size: %d. Skipping resize."
,
spec
.
Name
(),
vol
.
Spec
.
Size
,
newSizeInBytes
)
"requested size: %d. Skipping resize."
,
spec
.
Name
(),
vol
.
Spec
.
Size
,
newSizeInBytes
)
...
...
pkg/volume/quobyte/BUILD
View file @
a62ee8b0
...
@@ -22,6 +22,7 @@ go_library(
...
@@ -22,6 +22,7 @@ go_library(
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
"//vendor/github.com/pborman/uuid:go_default_library",
"//vendor/github.com/pborman/uuid:go_default_library",
"//vendor/github.com/quobyte/api:go_default_library",
"//vendor/github.com/quobyte/api:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
...
...
pkg/volume/quobyte/quobyte_util.go
View file @
a62ee8b0
...
@@ -23,7 +23,7 @@ import (
...
@@ -23,7 +23,7 @@ import (
"strings"
"strings"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
"k8s.io/kubernetes/pkg/volume/util
"
volumehelpers
"k8s.io/cloud-provider/volume/helpers
"
quobyteapi
"github.com/quobyte/api"
quobyteapi
"github.com/quobyte/api"
"k8s.io/klog"
"k8s.io/klog"
...
@@ -35,7 +35,7 @@ type quobyteVolumeManager struct {
...
@@ -35,7 +35,7 @@ type quobyteVolumeManager struct {
func
(
manager
*
quobyteVolumeManager
)
createVolume
(
provisioner
*
quobyteVolumeProvisioner
,
createQuota
bool
)
(
quobyte
*
v1
.
QuobyteVolumeSource
,
size
int
,
err
error
)
{
func
(
manager
*
quobyteVolumeManager
)
createVolume
(
provisioner
*
quobyteVolumeProvisioner
,
createQuota
bool
)
(
quobyte
*
v1
.
QuobyteVolumeSource
,
size
int
,
err
error
)
{
capacity
:=
provisioner
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
capacity
:=
provisioner
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
volumeSize
,
err
:=
util
.
RoundUpToGiBInt
(
capacity
)
volumeSize
,
err
:=
volumehelpers
.
RoundUpToGiBInt
(
capacity
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
0
,
err
return
nil
,
0
,
err
}
}
...
...
pkg/volume/rbd/BUILD
View file @
a62ee8b0
...
@@ -33,6 +33,7 @@ go_library(
...
@@ -33,6 +33,7 @@ go_library(
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/utils/path:go_default_library",
"//vendor/k8s.io/utils/path:go_default_library",
"//vendor/k8s.io/utils/strings:go_default_library",
"//vendor/k8s.io/utils/strings:go_default_library",
...
...
pkg/volume/rbd/rbd_util.go
View file @
a62ee8b0
...
@@ -36,11 +36,11 @@ import (
...
@@ -36,11 +36,11 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/util/wait"
volumehelpers
"k8s.io/cloud-provider/volume/helpers"
"k8s.io/klog"
"k8s.io/klog"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/kubernetes/pkg/util/node"
"k8s.io/kubernetes/pkg/util/node"
"k8s.io/kubernetes/pkg/volume"
"k8s.io/kubernetes/pkg/volume"
volutil
"k8s.io/kubernetes/pkg/volume/util"
utilpath
"k8s.io/utils/path"
utilpath
"k8s.io/utils/path"
)
)
...
@@ -580,9 +580,8 @@ func (util *RBDUtil) cleanOldRBDFile(plugin *rbdPlugin, rbdFile string) error {
...
@@ -580,9 +580,8 @@ func (util *RBDUtil) cleanOldRBDFile(plugin *rbdPlugin, rbdFile string) error {
func
(
util
*
RBDUtil
)
CreateImage
(
p
*
rbdVolumeProvisioner
)
(
r
*
v1
.
RBDPersistentVolumeSource
,
size
int
,
err
error
)
{
func
(
util
*
RBDUtil
)
CreateImage
(
p
*
rbdVolumeProvisioner
)
(
r
*
v1
.
RBDPersistentVolumeSource
,
size
int
,
err
error
)
{
var
output
[]
byte
var
output
[]
byte
capacity
:=
p
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
capacity
:=
p
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
volSizeBytes
:=
capacity
.
Value
()
// Convert to MB that rbd defaults on.
// Convert to MB that rbd defaults on.
sz
,
err
:=
volu
til
.
RoundUpSizeInt
(
volSizeBytes
,
1024
*
1024
)
sz
,
err
:=
volu
mehelpers
.
RoundUpToMiBInt
(
capacity
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
0
,
err
return
nil
,
0
,
err
}
}
...
@@ -641,9 +640,9 @@ func (util *RBDUtil) DeleteImage(p *rbdVolumeDeleter) error {
...
@@ -641,9 +640,9 @@ func (util *RBDUtil) DeleteImage(p *rbdVolumeDeleter) error {
func
(
util
*
RBDUtil
)
ExpandImage
(
rbdExpander
*
rbdVolumeExpander
,
oldSize
resource
.
Quantity
,
newSize
resource
.
Quantity
)
(
resource
.
Quantity
,
error
)
{
func
(
util
*
RBDUtil
)
ExpandImage
(
rbdExpander
*
rbdVolumeExpander
,
oldSize
resource
.
Quantity
,
newSize
resource
.
Quantity
)
(
resource
.
Quantity
,
error
)
{
var
output
[]
byte
var
output
[]
byte
var
err
error
var
err
error
volSizeBytes
:=
newSize
.
Value
()
// Convert to MB that rbd defaults on.
// Convert to MB that rbd defaults on.
sz
:=
int
(
volu
til
.
RoundUpSize
(
volSizeBytes
,
1024
*
1024
))
sz
:=
int
(
volu
mehelpers
.
RoundUpToMiB
(
newSize
))
newVolSz
:=
fmt
.
Sprintf
(
"%d"
,
sz
)
newVolSz
:=
fmt
.
Sprintf
(
"%d"
,
sz
)
newSizeQuant
:=
resource
.
MustParse
(
fmt
.
Sprintf
(
"%dMi"
,
sz
))
newSizeQuant
:=
resource
.
MustParse
(
fmt
.
Sprintf
(
"%dMi"
,
sz
))
...
...
pkg/volume/scaleio/BUILD
View file @
a62ee8b0
...
@@ -48,6 +48,7 @@ go_library(
...
@@ -48,6 +48,7 @@ go_library(
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
"//vendor/github.com/codedellemc/goscaleio:go_default_library",
"//vendor/github.com/codedellemc/goscaleio:go_default_library",
"//vendor/github.com/codedellemc/goscaleio/types/v1:go_default_library",
"//vendor/github.com/codedellemc/goscaleio/types/v1:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
...
...
pkg/volume/scaleio/sio_volume.go
View file @
a62ee8b0
...
@@ -28,6 +28,7 @@ import (
...
@@ -28,6 +28,7 @@ import (
meta
"k8s.io/apimachinery/pkg/apis/meta/v1"
meta
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/apimachinery/pkg/util/uuid"
volumehelpers
"k8s.io/cloud-provider/volume/helpers"
"k8s.io/klog"
"k8s.io/klog"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/kubernetes/pkg/volume"
"k8s.io/kubernetes/pkg/volume"
...
@@ -265,19 +266,20 @@ func (v *sioVolume) Provision(selectedNode *api.Node, allowedTopologies []api.To
...
@@ -265,19 +266,20 @@ func (v *sioVolume) Provision(selectedNode *api.Node, allowedTopologies []api.To
// setup volume attrributes
// setup volume attrributes
genName
:=
v
.
generateName
(
"k8svol"
,
11
)
genName
:=
v
.
generateName
(
"k8svol"
,
11
)
var
oneGig
int64
=
1024
*
1024
*
1024
eightGig
:=
int64
(
8
*
volumehelpers
.
GiB
)
eightGig
:=
8
*
oneGig
capacity
:=
v
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
api
.
ResourceName
(
api
.
ResourceStorage
)]
capacity
:=
v
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
api
.
ResourceName
(
api
.
ResourceStorage
)]
volSizeBytes
:=
capacity
.
Value
()
volSizeBytes
:=
capacity
.
Value
()
volSizeGB
:=
int64
(
util
.
RoundUpSize
(
volSizeBytes
,
oneGig
))
volSizeGB
:=
int64
(
volumehelpers
.
RoundUpToGiB
(
capacity
))
if
volSizeBytes
==
0
{
if
volSizeBytes
==
0
{
return
nil
,
fmt
.
Errorf
(
"invalid volume size of 0 specified"
)
return
nil
,
fmt
.
Errorf
(
"invalid volume size of 0 specified"
)
}
}
if
volSizeBytes
<
eightGig
{
if
volSizeBytes
<
eightGig
{
volSizeGB
=
int64
(
util
.
RoundUpSize
(
eightGig
,
oneGig
))
eightGiBCapacity
:=
resource
.
NewQuantity
(
eightGig
,
resource
.
BinarySI
)
volSizeGB
=
int64
(
volumehelpers
.
RoundUpToGiB
(
*
eightGiBCapacity
))
klog
.
V
(
4
)
.
Info
(
log
(
"capacity less than 8Gi found, adjusted to %dGi"
,
volSizeGB
))
klog
.
V
(
4
)
.
Info
(
log
(
"capacity less than 8Gi found, adjusted to %dGi"
,
volSizeGB
))
}
}
...
...
pkg/volume/storageos/BUILD
View file @
a62ee8b0
...
@@ -23,6 +23,7 @@ go_library(
...
@@ -23,6 +23,7 @@ go_library(
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
"//vendor/github.com/storageos/go-api:go_default_library",
"//vendor/github.com/storageos/go-api:go_default_library",
"//vendor/github.com/storageos/go-api/types:go_default_library",
"//vendor/github.com/storageos/go-api/types:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
...
...
pkg/volume/storageos/storageos.go
View file @
a62ee8b0
...
@@ -29,6 +29,7 @@ import (
...
@@ -29,6 +29,7 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/types"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
volumehelpers
"k8s.io/cloud-provider/volume/helpers"
"k8s.io/klog"
"k8s.io/klog"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/kubernetes/pkg/volume"
"k8s.io/kubernetes/pkg/volume"
...
@@ -606,7 +607,7 @@ func (c *storageosProvisioner) Provision(selectedNode *v1.Node, allowedTopologie
...
@@ -606,7 +607,7 @@ func (c *storageosProvisioner) Provision(selectedNode *v1.Node, allowedTopologie
}
}
capacity
:=
c
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
capacity
:=
c
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
var
err
error
var
err
error
c
.
sizeGB
,
err
=
util
.
RoundUpToGiBInt
(
capacity
)
c
.
sizeGB
,
err
=
volumehelpers
.
RoundUpToGiBInt
(
capacity
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
...
pkg/volume/util/util.go
View file @
a62ee8b0
...
@@ -47,11 +47,6 @@ import (
...
@@ -47,11 +47,6 @@ import (
)
)
const
(
const
(
// GB - GigaByte size
GB
=
1000
*
1000
*
1000
// GIB - GibiByte size
GIB
=
1024
*
1024
*
1024
readyFileName
=
"ready"
readyFileName
=
"ready"
// ControllerManagedAttachAnnotation is the key of the annotation on Node
// ControllerManagedAttachAnnotation is the key of the annotation on Node
...
@@ -219,57 +214,6 @@ func CalculateTimeoutForVolume(minimumTimeout, timeoutIncrement int, pv *v1.Pers
...
@@ -219,57 +214,6 @@ func CalculateTimeoutForVolume(minimumTimeout, timeoutIncrement int, pv *v1.Pers
return
timeout
return
timeout
}
}
// RoundUpSize calculates how many allocation units are needed to accommodate
// a volume of given size. E.g. when user wants 1500MiB volume, while AWS EBS
// allocates volumes in gibibyte-sized chunks,
// RoundUpSize(1500 * 1024*1024, 1024*1024*1024) returns '2'
// (2 GiB is the smallest allocatable volume that can hold 1500MiB)
func
RoundUpSize
(
volumeSizeBytes
int64
,
allocationUnitBytes
int64
)
int64
{
roundedUp
:=
volumeSizeBytes
/
allocationUnitBytes
if
volumeSizeBytes
%
allocationUnitBytes
>
0
{
roundedUp
++
}
return
roundedUp
}
// RoundUpToGB rounds up given quantity to chunks of GB
func
RoundUpToGB
(
size
resource
.
Quantity
)
int64
{
requestBytes
:=
size
.
Value
()
return
RoundUpSize
(
requestBytes
,
GB
)
}
// RoundUpToGiB rounds up given quantity upto chunks of GiB
func
RoundUpToGiB
(
size
resource
.
Quantity
)
int64
{
requestBytes
:=
size
.
Value
()
return
RoundUpSize
(
requestBytes
,
GIB
)
}
// RoundUpSizeInt calculates how many allocation units are needed to accommodate
// a volume of given size. It returns an int instead of an int64 and an error if
// there's overflow
func
RoundUpSizeInt
(
volumeSizeBytes
int64
,
allocationUnitBytes
int64
)
(
int
,
error
)
{
roundedUp
:=
RoundUpSize
(
volumeSizeBytes
,
allocationUnitBytes
)
roundedUpInt
:=
int
(
roundedUp
)
if
int64
(
roundedUpInt
)
!=
roundedUp
{
return
0
,
fmt
.
Errorf
(
"capacity %v is too great, casting results in integer overflow"
,
roundedUp
)
}
return
roundedUpInt
,
nil
}
// RoundUpToGBInt rounds up given quantity to chunks of GB. It returns an
// int instead of an int64 and an error if there's overflow
func
RoundUpToGBInt
(
size
resource
.
Quantity
)
(
int
,
error
)
{
requestBytes
:=
size
.
Value
()
return
RoundUpSizeInt
(
requestBytes
,
GB
)
}
// RoundUpToGiBInt rounds up given quantity upto chunks of GiB. It returns an
// int instead of an int64 and an error if there's overflow
func
RoundUpToGiBInt
(
size
resource
.
Quantity
)
(
int
,
error
)
{
requestBytes
:=
size
.
Value
()
return
RoundUpSizeInt
(
requestBytes
,
GIB
)
}
// GenerateVolumeName returns a PV name with clusterName prefix. The function
// GenerateVolumeName returns a PV name with clusterName prefix. The function
// should be used to generate a name of GCE PD or Cinder volume. It basically
// should be used to generate a name of GCE PD or Cinder volume. It basically
// adds "<clusterName>-dynamic-" before the PV name, making sure the resulting
// adds "<clusterName>-dynamic-" before the PV name, making sure the resulting
...
...
pkg/volume/vsphere_volume/BUILD
View file @
a62ee8b0
...
@@ -29,6 +29,7 @@ go_library(
...
@@ -29,6 +29,7 @@ go_library(
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//staging/src/k8s.io/cloud-provider:go_default_library",
"//staging/src/k8s.io/cloud-provider:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/utils/keymutex:go_default_library",
"//vendor/k8s.io/utils/keymutex:go_default_library",
"//vendor/k8s.io/utils/strings:go_default_library",
"//vendor/k8s.io/utils/strings:go_default_library",
...
...
pkg/volume/vsphere_volume/vsphere_volume_util.go
View file @
a62ee8b0
...
@@ -25,6 +25,7 @@ import (
...
@@ -25,6 +25,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
cloudprovider
"k8s.io/cloud-provider"
cloudprovider
"k8s.io/cloud-provider"
volumehelpers
"k8s.io/cloud-provider/volume/helpers"
"k8s.io/klog"
"k8s.io/klog"
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere"
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere"
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib"
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib"
...
@@ -92,9 +93,8 @@ func (util *VsphereDiskUtil) CreateVolume(v *vsphereVolumeProvisioner) (volSpec
...
@@ -92,9 +93,8 @@ func (util *VsphereDiskUtil) CreateVolume(v *vsphereVolumeProvisioner) (volSpec
}
}
capacity
:=
v
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
capacity
:=
v
.
options
.
PVC
.
Spec
.
Resources
.
Requests
[
v1
.
ResourceName
(
v1
.
ResourceStorage
)]
volSizeBytes
:=
capacity
.
Value
()
// vSphere works with kilobytes, convert to KiB with rounding up
// vSphere works with kilobytes, convert to KiB with rounding up
volSizeKiB
,
err
:=
volume
util
.
RoundUpSizeInt
(
volSizeBytes
,
1024
)
volSizeKiB
,
err
:=
volume
helpers
.
RoundUpToKiBInt
(
capacity
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
...
staging/src/k8s.io/cloud-provider/volume/helpers/BUILD
View file @
a62ee8b0
...
@@ -2,12 +2,16 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
...
@@ -2,12 +2,16 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
go_library(
go_library(
name = "go_default_library",
name = "go_default_library",
srcs = ["zones.go"],
srcs = [
"rounding.go",
"zones.go",
],
importmap = "k8s.io/kubernetes/vendor/k8s.io/cloud-provider/volume/helpers",
importmap = "k8s.io/kubernetes/vendor/k8s.io/cloud-provider/volume/helpers",
importpath = "k8s.io/cloud-provider/volume/helpers",
importpath = "k8s.io/cloud-provider/volume/helpers",
visibility = ["//visibility:public"],
visibility = ["//visibility:public"],
deps = [
deps = [
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
...
...
staging/src/k8s.io/cloud-provider/volume/helpers/rounding.go
0 → 100644
View file @
a62ee8b0
/*
Copyright 2019 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
helpers
import
(
"fmt"
"k8s.io/apimachinery/pkg/api/resource"
)
const
(
// GB - GigaByte size
GB
=
1000
*
1000
*
1000
// GiB - GibiByte size
GiB
=
1024
*
1024
*
1024
// MB - MegaByte size
MB
=
1000
*
1000
// MiB - MebiByte size
MiB
=
1024
*
1024
// KB - KiloByte size
KB
=
1000
// KiB - KibiByte size
KiB
=
1024
)
// RoundUpToGB rounds up given quantity to chunks of GB
func
RoundUpToGB
(
size
resource
.
Quantity
)
int64
{
requestBytes
:=
size
.
Value
()
return
roundUpSize
(
requestBytes
,
GB
)
}
// RoundUpToGiB rounds up given quantity upto chunks of GiB
func
RoundUpToGiB
(
size
resource
.
Quantity
)
int64
{
requestBytes
:=
size
.
Value
()
return
roundUpSize
(
requestBytes
,
GiB
)
}
// RoundUpToMB rounds up given quantity to chunks of MB
func
RoundUpToMB
(
size
resource
.
Quantity
)
int64
{
requestBytes
:=
size
.
Value
()
return
roundUpSize
(
requestBytes
,
MB
)
}
// RoundUpToMiB rounds up given quantity upto chunks of MiB
func
RoundUpToMiB
(
size
resource
.
Quantity
)
int64
{
requestBytes
:=
size
.
Value
()
return
roundUpSize
(
requestBytes
,
MiB
)
}
// RoundUpToKB rounds up given quantity to chunks of KB
func
RoundUpToKB
(
size
resource
.
Quantity
)
int64
{
requestBytes
:=
size
.
Value
()
return
roundUpSize
(
requestBytes
,
KB
)
}
// RoundUpToKiB rounds up given quantity upto chunks of KiB
func
RoundUpToKiB
(
size
resource
.
Quantity
)
int64
{
requestBytes
:=
size
.
Value
()
return
roundUpSize
(
requestBytes
,
KiB
)
}
// RoundUpToGBInt rounds up given quantity to chunks of GB. It returns an
// int instead of an int64 and an error if there's overflow
func
RoundUpToGBInt
(
size
resource
.
Quantity
)
(
int
,
error
)
{
requestBytes
:=
size
.
Value
()
return
roundUpSizeInt
(
requestBytes
,
GB
)
}
// RoundUpToGiBInt rounds up given quantity upto chunks of GiB. It returns an
// int instead of an int64 and an error if there's overflow
func
RoundUpToGiBInt
(
size
resource
.
Quantity
)
(
int
,
error
)
{
requestBytes
:=
size
.
Value
()
return
roundUpSizeInt
(
requestBytes
,
GiB
)
}
// RoundUpToMBInt rounds up given quantity to chunks of MB. It returns an
// int instead of an int64 and an error if there's overflow
func
RoundUpToMBInt
(
size
resource
.
Quantity
)
(
int
,
error
)
{
requestBytes
:=
size
.
Value
()
return
roundUpSizeInt
(
requestBytes
,
MB
)
}
// RoundUpToMiBInt rounds up given quantity upto chunks of MiB. It returns an
// int instead of an int64 and an error if there's overflow
func
RoundUpToMiBInt
(
size
resource
.
Quantity
)
(
int
,
error
)
{
requestBytes
:=
size
.
Value
()
return
roundUpSizeInt
(
requestBytes
,
MiB
)
}
// RoundUpToKBInt rounds up given quantity to chunks of KB. It returns an
// int instead of an int64 and an error if there's overflow
func
RoundUpToKBInt
(
size
resource
.
Quantity
)
(
int
,
error
)
{
requestBytes
:=
size
.
Value
()
return
roundUpSizeInt
(
requestBytes
,
KB
)
}
// RoundUpToKiBInt rounds up given quantity upto chunks of KiB. It returns an
// int instead of an int64 and an error if there's overflow
func
RoundUpToKiBInt
(
size
resource
.
Quantity
)
(
int
,
error
)
{
requestBytes
:=
size
.
Value
()
return
roundUpSizeInt
(
requestBytes
,
KiB
)
}
// roundUpSizeInt calculates how many allocation units are needed to accommodate
// a volume of given size. It returns an int instead of an int64 and an error if
// there's overflow
func
roundUpSizeInt
(
volumeSizeBytes
int64
,
allocationUnitBytes
int64
)
(
int
,
error
)
{
roundedUp
:=
roundUpSize
(
volumeSizeBytes
,
allocationUnitBytes
)
roundedUpInt
:=
int
(
roundedUp
)
if
int64
(
roundedUpInt
)
!=
roundedUp
{
return
0
,
fmt
.
Errorf
(
"capacity %v is too great, casting results in integer overflow"
,
roundedUp
)
}
return
roundedUpInt
,
nil
}
// roundUpSize calculates how many allocation units are needed to accommodate
// a volume of given size. E.g. when user wants 1500MiB volume, while AWS EBS
// allocates volumes in gibibyte-sized chunks,
// RoundUpSize(1500 * 1024*1024, 1024*1024*1024) returns '2'
// (2 GiB is the smallest allocatable volume that can hold 1500MiB)
func
roundUpSize
(
volumeSizeBytes
int64
,
allocationUnitBytes
int64
)
int64
{
roundedUp
:=
volumeSizeBytes
/
allocationUnitBytes
if
volumeSizeBytes
%
allocationUnitBytes
>
0
{
roundedUp
++
}
return
roundedUp
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment