diff --git a/pkg/volume/emptydir/BUILD b/pkg/volume/emptydir/BUILD index 4833bc31f51..51b6ee31a25 100644 --- a/pkg/volume/emptydir/BUILD +++ b/pkg/volume/emptydir/BUILD @@ -20,7 +20,7 @@ go_library( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", - "//pkg/volume/util/quota:go_default_library", + "//pkg/volume/util/fsquota: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/apis/meta/v1:go_default_library", diff --git a/pkg/volume/emptydir/empty_dir.go b/pkg/volume/emptydir/empty_dir.go index 4655f076f3f..c42b68ac145 100644 --- a/pkg/volume/emptydir/empty_dir.go +++ b/pkg/volume/emptydir/empty_dir.go @@ -30,7 +30,7 @@ import ( "k8s.io/kubernetes/pkg/util/mount" "k8s.io/kubernetes/pkg/volume" volumeutil "k8s.io/kubernetes/pkg/volume/util" - "k8s.io/kubernetes/pkg/volume/util/quota" + "k8s.io/kubernetes/pkg/volume/util/fsquota" utilstrings "k8s.io/utils/strings" ) @@ -241,12 +241,12 @@ func (ed *emptyDir) SetUpAt(dir string, mounterArgs volume.MounterArgs) error { if mounterArgs.DesiredSize != nil { // Deliberately shadow the outer use of err as noted // above. - hasQuotas, err := quota.SupportsQuotas(ed.mounter, dir) + hasQuotas, err := fsquota.SupportsQuotas(ed.mounter, dir) if err != nil { klog.V(3).Infof("Unable to check for quota support on %s: %s", dir, err.Error()) } else if hasQuotas { klog.V(4).Infof("emptydir trying to assign quota %v on %s", mounterArgs.DesiredSize, dir) - err := quota.AssignQuota(ed.mounter, dir, mounterArgs.PodUID, mounterArgs.DesiredSize) + err := fsquota.AssignQuota(ed.mounter, dir, ed.pod.UID, mounterArgs.DesiredSize) if err != nil { klog.V(3).Infof("Set quota on %s failed %s", dir, err.Error()) } @@ -416,7 +416,7 @@ func (ed *emptyDir) TearDownAt(dir string) error { func (ed *emptyDir) teardownDefault(dir string) error { // Remove any quota - err := quota.ClearQuota(ed.mounter, dir) + err := fsquota.ClearQuota(ed.mounter, dir) if err != nil { klog.Warningf("Warning: Failed to clear quota on %s: %v", dir, err) } diff --git a/pkg/volume/util/BUILD b/pkg/volume/util/BUILD index a94e304a482..4b8c3f4827c 100644 --- a/pkg/volume/util/BUILD +++ b/pkg/volume/util/BUILD @@ -88,10 +88,10 @@ filegroup( ":package-srcs", "//pkg/volume/util/exec:all-srcs", "//pkg/volume/util/fs:all-srcs", + "//pkg/volume/util/fsquota:all-srcs", "//pkg/volume/util/nestedpendingoperations:all-srcs", "//pkg/volume/util/nsenter:all-srcs", "//pkg/volume/util/operationexecutor:all-srcs", - "//pkg/volume/util/quota:all-srcs", "//pkg/volume/util/recyclerclient:all-srcs", "//pkg/volume/util/subpath:all-srcs", "//pkg/volume/util/types:all-srcs", diff --git a/pkg/volume/util/fs/BUILD b/pkg/volume/util/fs/BUILD index 504175781f2..5df65eb027d 100644 --- a/pkg/volume/util/fs/BUILD +++ b/pkg/volume/util/fs/BUILD @@ -14,7 +14,7 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], "@io_bazel_rules_go//go/platform:darwin": [ - "//pkg/volume/util/quota:go_default_library", + "//pkg/volume/util/fsquota:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//vendor/golang.org/x/sys/unix:go_default_library", ], @@ -25,7 +25,7 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], "@io_bazel_rules_go//go/platform:linux": [ - "//pkg/volume/util/quota:go_default_library", + "//pkg/volume/util/fsquota:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//vendor/golang.org/x/sys/unix:go_default_library", ], diff --git a/pkg/volume/util/fs/fs.go b/pkg/volume/util/fs/fs.go index 6118a0bac7c..21fb3a21e15 100644 --- a/pkg/volume/util/fs/fs.go +++ b/pkg/volume/util/fs/fs.go @@ -27,7 +27,7 @@ import ( "golang.org/x/sys/unix" "k8s.io/apimachinery/pkg/api/resource" - "k8s.io/kubernetes/pkg/volume/util/quota" + "k8s.io/kubernetes/pkg/volume/util/fsquota" ) // FSInfo linux returns (available bytes, byte capacity, byte usage, total inodes, inodes free, inode usage, error) @@ -60,7 +60,7 @@ func DiskUsage(path string) (*resource.Quantity, error) { // First check whether the quota system knows about this directory // A nil quantity with no error means that the path does not support quotas // and we should use other mechanisms. - data, err := quota.GetConsumption(path) + data, err := fsquota.GetConsumption(path) if data != nil { return data, nil } else if err != nil { @@ -89,7 +89,7 @@ func Find(path string) (int64, error) { // First check whether the quota system knows about this directory // A nil quantity with no error means that the path does not support quotas // and we should use other mechanisms. - inodes, err := quota.GetInodes(path) + inodes, err := fsquota.GetInodes(path) if inodes != nil { return inodes.Value(), nil } else if err != nil { diff --git a/pkg/volume/util/quota/BUILD b/pkg/volume/util/fsquota/BUILD similarity index 81% rename from pkg/volume/util/quota/BUILD rename to pkg/volume/util/fsquota/BUILD index 278469809e5..b10fa34e5a5 100644 --- a/pkg/volume/util/quota/BUILD +++ b/pkg/volume/util/fsquota/BUILD @@ -8,16 +8,17 @@ go_library( "quota_linux.go", "quota_unsupported.go", ], - importpath = "k8s.io/kubernetes/pkg/volume/util/quota", + importpath = "k8s.io/kubernetes/pkg/volume/util/fsquota", visibility = ["//visibility:public"], deps = [ "//pkg/features:go_default_library", "//pkg/util/mount: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/apiserver/pkg/util/feature:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux": [ - "//pkg/volume/util/quota/common:go_default_library", + "//pkg/volume/util/fsquota/common:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", "//vendor/golang.org/x/sys/unix:go_default_library", "//vendor/k8s.io/klog:go_default_library", @@ -34,8 +35,9 @@ go_test( "@io_bazel_rules_go//go/platform:linux": [ "//pkg/features:go_default_library", "//pkg/util/mount:go_default_library", - "//pkg/volume/util/quota/common:go_default_library", + "//pkg/volume/util/fsquota/common: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/apiserver/pkg/util/feature:go_default_library", "//staging/src/k8s.io/component-base/featuregate/testing:go_default_library", ], @@ -54,7 +56,7 @@ filegroup( name = "all-srcs", srcs = [ ":package-srcs", - "//pkg/volume/util/quota/common:all-srcs", + "//pkg/volume/util/fsquota/common:all-srcs", ], tags = ["automanaged"], visibility = ["//visibility:public"], diff --git a/pkg/volume/util/quota/common/BUILD b/pkg/volume/util/fsquota/common/BUILD similarity index 90% rename from pkg/volume/util/quota/common/BUILD rename to pkg/volume/util/fsquota/common/BUILD index 9261c0cf01d..78f219d7fe9 100644 --- a/pkg/volume/util/quota/common/BUILD +++ b/pkg/volume/util/fsquota/common/BUILD @@ -6,7 +6,7 @@ go_library( "quota_linux_common.go", "quota_linux_common_impl.go", ], - importpath = "k8s.io/kubernetes/pkg/volume/util/quota/common", + importpath = "k8s.io/kubernetes/pkg/volume/util/fsquota/common", visibility = ["//visibility:public"], deps = select({ "@io_bazel_rules_go//go/platform:linux": [ diff --git a/pkg/volume/util/quota/common/quota_linux_common.go b/pkg/volume/util/fsquota/common/quota_linux_common.go similarity index 100% rename from pkg/volume/util/quota/common/quota_linux_common.go rename to pkg/volume/util/fsquota/common/quota_linux_common.go diff --git a/pkg/volume/util/quota/common/quota_linux_common_impl.go b/pkg/volume/util/fsquota/common/quota_linux_common_impl.go similarity index 100% rename from pkg/volume/util/quota/common/quota_linux_common_impl.go rename to pkg/volume/util/fsquota/common/quota_linux_common_impl.go diff --git a/pkg/volume/util/quota/project.go b/pkg/volume/util/fsquota/project.go similarity index 99% rename from pkg/volume/util/quota/project.go rename to pkg/volume/util/fsquota/project.go index b3aa1b244f0..32f04f8decc 100644 --- a/pkg/volume/util/quota/project.go +++ b/pkg/volume/util/fsquota/project.go @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package quota +package fsquota import ( "bufio" @@ -29,7 +29,7 @@ import ( "sync" "golang.org/x/sys/unix" - "k8s.io/kubernetes/pkg/volume/util/quota/common" + "k8s.io/kubernetes/pkg/volume/util/fsquota/common" ) var projectsFile = "/etc/projects" diff --git a/pkg/volume/util/quota/quota.go b/pkg/volume/util/fsquota/quota.go similarity index 88% rename from pkg/volume/util/quota/quota.go rename to pkg/volume/util/fsquota/quota.go index 1e578ff5ba5..877b8fe9d28 100644 --- a/pkg/volume/util/quota/quota.go +++ b/pkg/volume/util/fsquota/quota.go @@ -14,10 +14,11 @@ See the License for the specific language governing permissions and limitations under the License. */ -package quota +package fsquota import ( "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/apimachinery/pkg/types" utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/util/mount" @@ -29,7 +30,7 @@ type Interface interface { SupportsQuotas(m mount.Interface, path string) (bool, error) // Assign a quota (picked by the quota mechanism) to a path, // and return it. - AssignQuota(m mount.Interface, path string, poduid string, bytes *resource.Quantity) error + AssignQuota(m mount.Interface, path string, poduid types.UID, bytes *resource.Quantity) error // Get the quota-based storage consumption for the path GetConsumption(path string) (*resource.Quantity, error) @@ -40,7 +41,7 @@ type Interface interface { // Remove the quota from a path // Implementations may assume that any data covered by the // quota has already been removed. - ClearQuota(m mount.Interface, path string, poduid string) error + ClearQuota(m mount.Interface, path string) error } func enabledQuotasForMonitoring() bool { diff --git a/pkg/volume/util/quota/quota_linux.go b/pkg/volume/util/fsquota/quota_linux.go similarity index 96% rename from pkg/volume/util/quota/quota_linux.go rename to pkg/volume/util/fsquota/quota_linux.go index fdf2f00a2cb..65c24c52070 100644 --- a/pkg/volume/util/quota/quota_linux.go +++ b/pkg/volume/util/fsquota/quota_linux.go @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package quota +package fsquota import ( "bufio" @@ -26,23 +26,24 @@ import ( "sync" "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/klog" "k8s.io/kubernetes/pkg/util/mount" - "k8s.io/kubernetes/pkg/volume/util/quota/common" + "k8s.io/kubernetes/pkg/volume/util/fsquota/common" ) // Pod -> ID -var podQuotaMap = make(map[string]common.QuotaID) +var podQuotaMap = make(map[types.UID]common.QuotaID) // Dir -> ID (for convenience) var dirQuotaMap = make(map[string]common.QuotaID) // ID -> pod -var quotaPodMap = make(map[common.QuotaID]string) +var quotaPodMap = make(map[common.QuotaID]types.UID) // Directory -> pod -var dirPodMap = make(map[string]string) +var dirPodMap = make(map[string]types.UID) // Backing device -> applier // This is *not* cleaned up; its size will be bounded. @@ -53,7 +54,7 @@ var dirApplierMap = make(map[string]common.LinuxVolumeQuotaApplier) var dirApplierLock sync.RWMutex // Pod -> refcount -var podDirCountMap = make(map[string]int) +var podDirCountMap = make(map[types.UID]int) // ID -> size var quotaSizeMap = make(map[common.QuotaID]int64) @@ -296,7 +297,7 @@ func SupportsQuotas(m mount.Interface, path string) (bool, error) { // AssignQuota chooses the quota ID based on the pod UID and path. // If the pod UID is identical to another one known, it may (but presently // doesn't) choose the same quota ID as other volumes in the pod. -func AssignQuota(m mount.Interface, path string, poduid string, bytes *resource.Quantity) error { +func AssignQuota(m mount.Interface, path string, poduid types.UID, bytes *resource.Quantity) error { if bytes == nil { return fmt.Errorf("Attempting to assign null quota to %s", path) } @@ -311,7 +312,7 @@ func AssignQuota(m mount.Interface, path string, poduid string, bytes *resource. // volumes in a pod, we can simply remove this line of code. // If and when we decide permanently that we're going to adop // one quota per volume, we can rip all of the pod code out. - poduid = string(uuid.NewUUID()) + poduid = types.UID(uuid.NewUUID()) if pod, ok := dirPodMap[path]; ok && pod != poduid { return fmt.Errorf("Requesting quota on existing directory %s but different pod %s %s", path, pod, poduid) } diff --git a/pkg/volume/util/quota/quota_linux_test.go b/pkg/volume/util/fsquota/quota_linux_test.go similarity index 98% rename from pkg/volume/util/quota/quota_linux_test.go rename to pkg/volume/util/fsquota/quota_linux_test.go index a7acfcd2022..06119c738b5 100644 --- a/pkg/volume/util/quota/quota_linux_test.go +++ b/pkg/volume/util/fsquota/quota_linux_test.go @@ -16,17 +16,18 @@ See the License for the specific language governing permissions and limitations under the License. */ -package quota +package fsquota import ( "fmt" "io/ioutil" "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/apimachinery/pkg/types" utilfeature "k8s.io/apiserver/pkg/util/feature" featuregatetesting "k8s.io/component-base/featuregate/testing" "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/util/mount" - "k8s.io/kubernetes/pkg/volume/util/quota/common" + "k8s.io/kubernetes/pkg/volume/util/fsquota/common" "os" "strings" "testing" @@ -389,7 +390,7 @@ func fakeSupportsQuotas(path string) (bool, error) { return SupportsQuotas(dummyQuotaTest(), path) } -func fakeAssignQuota(path string, poduid string, bytes int64) error { +func fakeAssignQuota(path string, poduid types.UID, bytes int64) error { dummySetFSInfo(path) return AssignQuota(dummyQuotaTest(), path, poduid, resource.NewQuantity(bytes, resource.DecimalSI)) } @@ -401,7 +402,7 @@ func fakeClearQuota(path string) error { type quotaTestCase struct { path string - poduid string + poduid types.UID bytes int64 op string expectedProjects string diff --git a/pkg/volume/util/quota/quota_unsupported.go b/pkg/volume/util/fsquota/quota_unsupported.go similarity index 91% rename from pkg/volume/util/quota/quota_unsupported.go rename to pkg/volume/util/fsquota/quota_unsupported.go index 16cbfaffd1a..f1ae4cdd1f4 100644 --- a/pkg/volume/util/quota/quota_unsupported.go +++ b/pkg/volume/util/fsquota/quota_unsupported.go @@ -16,11 +16,12 @@ See the License for the specific language governing permissions and limitations under the License. */ -package quota +package fsquota import ( "errors" "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/apimachinery/pkg/types" "k8s.io/kubernetes/pkg/util/mount" ) @@ -35,7 +36,7 @@ func SupportsQuotas(_ mount.Interface, _ string) (bool, error) { } // AssignQuota -- dummy implementation -func AssignQuota(_ mount.Interface, _ string, _ string, _ *resource.Quantity) error { +func AssignQuota(_ mount.Interface, _ string, _ types.UID, _ *resource.Quantity) error { return errNotImplemented } diff --git a/pkg/volume/util/operationexecutor/operation_generator.go b/pkg/volume/util/operationexecutor/operation_generator.go index 7d547402e9d..7428de7c534 100644 --- a/pkg/volume/util/operationexecutor/operation_generator.go +++ b/pkg/volume/util/operationexecutor/operation_generator.go @@ -698,7 +698,6 @@ func (og *operationGenerator) GenerateMountVolumeFunc( mountErr := volumeMounter.SetUp(volume.MounterArgs{ FsGroup: fsGroup, DesiredSize: volumeToMount.DesiredSizeLimit, - PodUID: string(volumeToMount.Pod.UID), }) if mountErr != nil { // On failure, return error. Caller will log and retry. diff --git a/pkg/volume/volume.go b/pkg/volume/volume.go index bfc4b31d656..cb78d94515a 100644 --- a/pkg/volume/volume.go +++ b/pkg/volume/volume.go @@ -105,7 +105,6 @@ type Attributes struct { type MounterArgs struct { FsGroup *int64 DesiredSize *resource.Quantity - PodUID string } // Mounter interface provides methods to set up/mount the volume. diff --git a/test/e2e_node/BUILD b/test/e2e_node/BUILD index 8b480d713ab..5de952b2b3e 100644 --- a/test/e2e_node/BUILD +++ b/test/e2e_node/BUILD @@ -146,7 +146,7 @@ go_test( "//pkg/kubelet/types:go_default_library", "//pkg/security/apparmor:go_default_library", "//pkg/util/mount:go_default_library", - "//pkg/volume/util/quota:go_default_library", + "//pkg/volume/util/fsquota:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/api/scheduling/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", diff --git a/test/e2e_node/quota_lsci_test.go b/test/e2e_node/quota_lsci_test.go index 2fc09ff4053..b0328f3c75f 100644 --- a/test/e2e_node/quota_lsci_test.go +++ b/test/e2e_node/quota_lsci_test.go @@ -27,7 +27,7 @@ import ( "k8s.io/kubernetes/pkg/features" kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config" "k8s.io/kubernetes/pkg/util/mount" - "k8s.io/kubernetes/pkg/volume/util/quota" + "k8s.io/kubernetes/pkg/volume/util/fsquota" "k8s.io/kubernetes/test/e2e/framework" imageutils "k8s.io/kubernetes/test/utils/image" @@ -142,6 +142,6 @@ func diskConcealingPod(name string, diskConsumedMB int, volumeSource *v1.VolumeS // Don't bother returning an error; if something goes wrong, // simply treat it as "no". func supportsQuotas(dir string) bool { - supportsQuota, err := quota.SupportsQuotas(mount.New(""), dir) + supportsQuota, err := fsquota.SupportsQuotas(mount.New(""), dir) return supportsQuota && err == nil }