From 1573be94ae4a0bc9543ece3e72d79ff186b96ced Mon Sep 17 00:00:00 2001 From: ZP-AlwaysWin Date: Fri, 12 Jul 2019 21:02:30 +0800 Subject: [PATCH] fix pkg/controller/volume/expand/pvc_populator.go --- pkg/controller/volume/expand/BUILD | 7 +- .../volume/expand/expand_controller.go | 1 + pkg/controller/volume/expand/pvc_populator.go | 125 ------------------ 3 files changed, 2 insertions(+), 131 deletions(-) delete mode 100644 pkg/controller/volume/expand/pvc_populator.go diff --git a/pkg/controller/volume/expand/BUILD b/pkg/controller/volume/expand/BUILD index 38c33353a3f..cf81d3d99f8 100644 --- a/pkg/controller/volume/expand/BUILD +++ b/pkg/controller/volume/expand/BUILD @@ -4,16 +4,12 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", - srcs = [ - "expand_controller.go", - "pvc_populator.go", - ], + srcs = ["expand_controller.go"], importpath = "k8s.io/kubernetes/pkg/controller/volume/expand", deps = [ "//pkg/apis/core/v1/helper:go_default_library", "//pkg/controller:go_default_library", "//pkg/controller/volume/events:go_default_library", - "//pkg/controller/volume/expand/cache:go_default_library", "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", @@ -23,7 +19,6 @@ go_library( "//staging/src/k8s.io/api/authentication/v1:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", diff --git a/pkg/controller/volume/expand/expand_controller.go b/pkg/controller/volume/expand/expand_controller.go index 4c305ff1644..3de8b3e2cd6 100644 --- a/pkg/controller/volume/expand/expand_controller.go +++ b/pkg/controller/volume/expand/expand_controller.go @@ -95,6 +95,7 @@ type expandController struct { queue workqueue.RateLimitingInterface } +// NewExpandController expands the pvs func NewExpandController( kubeClient clientset.Interface, pvcInformer coreinformers.PersistentVolumeClaimInformer, diff --git a/pkg/controller/volume/expand/pvc_populator.go b/pkg/controller/volume/expand/pvc_populator.go deleted file mode 100644 index 748d0c8bbef..00000000000 --- a/pkg/controller/volume/expand/pvc_populator.go +++ /dev/null @@ -1,125 +0,0 @@ -/* -Copyright 2017 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 reconciler implements interfaces that attempt to reconcile the -// desired state of the with the actual state of the world by triggering -// actions. - -package expand - -import ( - "fmt" - "time" - - "k8s.io/klog" - - "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/util/wait" - clientset "k8s.io/client-go/kubernetes" - "k8s.io/client-go/kubernetes/scheme" - v1core "k8s.io/client-go/kubernetes/typed/core/v1" - corelisters "k8s.io/client-go/listers/core/v1" - "k8s.io/client-go/tools/record" - "k8s.io/kubernetes/pkg/controller/volume/events" - "k8s.io/kubernetes/pkg/controller/volume/expand/cache" - "k8s.io/kubernetes/pkg/volume" - "k8s.io/kubernetes/pkg/volume/util" -) - -// PVCPopulator iterates through PVCs and checks if for bound PVCs -// their size doesn't match with Persistent Volume size -type PVCPopulator interface { - Run(stopCh <-chan struct{}) -} - -type pvcPopulator struct { - loopPeriod time.Duration - resizeMap cache.VolumeResizeMap - pvcLister corelisters.PersistentVolumeClaimLister - pvLister corelisters.PersistentVolumeLister - kubeClient clientset.Interface - volumePluginMgr *volume.VolumePluginMgr - recorder record.EventRecorder -} - -func NewPVCPopulator( - loopPeriod time.Duration, - resizeMap cache.VolumeResizeMap, - pvcLister corelisters.PersistentVolumeClaimLister, - pvLister corelisters.PersistentVolumeLister, - volumePluginMgr *volume.VolumePluginMgr, - kubeClient clientset.Interface) PVCPopulator { - populator := &pvcPopulator{ - loopPeriod: loopPeriod, - pvcLister: pvcLister, - pvLister: pvLister, - resizeMap: resizeMap, - volumePluginMgr: volumePluginMgr, - kubeClient: kubeClient, - } - eventBroadcaster := record.NewBroadcaster() - eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: kubeClient.CoreV1().Events("")}) - populator.recorder = eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: "volume_expand"}) - return populator -} - -func (populator *pvcPopulator) Run(stopCh <-chan struct{}) { - wait.Until(populator.Sync, populator.loopPeriod, stopCh) -} - -func (populator *pvcPopulator) Sync() { - pvcs, err := populator.pvcLister.List(labels.Everything()) - if err != nil { - klog.Errorf("Listing PVCs failed in populator : %v", err) - return - } - - for _, pvc := range pvcs { - pv, err := getPersistentVolume(pvc, populator.pvLister) - - if err != nil { - klog.V(5).Infof("Error getting persistent volume for PVC %q : %v", pvc.UID, err) - continue - } - - // Filter PVCs for which the corresponding volume plugins don't allow expansion. - pvcSize := pvc.Spec.Resources.Requests[v1.ResourceStorage] - pvcStatusSize := pvc.Status.Capacity[v1.ResourceStorage] - volumeSpec := volume.NewSpecFromPersistentVolume(pv, false) - volumePlugin, err := populator.volumePluginMgr.FindExpandablePluginBySpec(volumeSpec) - if (err != nil || volumePlugin == nil) && pvcStatusSize.Cmp(pvcSize) < 0 { - retErr := fmt.Errorf("didn't find a plugin capable of expanding the volume; " + - "waiting for an external controller to process this PVC") - eventType := v1.EventTypeNormal - if err != nil { - eventType = v1.EventTypeWarning - } - populator.recorder.Event(pvc, eventType, events.ExternalExpanding, - fmt.Sprintf("Ignoring the PVC: %v.", retErr)) - klog.V(3).Infof("Ignoring the PVC %q (uid: %q) : %v.", - util.GetPersistentVolumeClaimQualifiedName(pvc), pvc.UID, retErr) - continue - } - - // We are only going to add PVCs which are: - // - bound - // - pvc.Spec.Size > pvc.Status.Size - // These 2 checks are already performed in AddPVCUpdate function before adding pvc for resize - // and hence we do not repeat those checks here. - populator.resizeMap.AddPVCUpdate(pvc, pv) - } -}