Skip to content

Commit 237ba95

Browse files
authored
Merge pull request #7 from mlmhl/csi
add implement for CSI plugin
2 parents e51969d + defb012 commit 237ba95

File tree

121 files changed

+35627
-133
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

121 files changed

+35627
-133
lines changed

Gopkg.lock

+86-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Gopkg.toml

+11-6
Original file line numberDiff line numberDiff line change
@@ -24,25 +24,30 @@
2424
# go-tests = true
2525
# unused-packages = true
2626

27-
# TODO: Change to a concrete v1.14 tag after klog is included.
2827
[[constraint]]
29-
branch = "master"
3028
name = "k8s.io/api"
29+
version = "kubernetes-1.14.0-alpha.1"
3130

32-
# TODO: Change to a concrete v1.14 tag after klog is included.
3331
[[constraint]]
34-
branch = "master"
3532
name = "k8s.io/apimachinery"
33+
version = "kubernetes-1.14.0-alpha.1"
3634

37-
# TODO: Change to a concrete v1.14 tag after klog is included.
3835
[[constraint]]
39-
branch = "master"
4036
name = "k8s.io/client-go"
37+
version = "kubernetes-1.14.0-alpha.1"
4138

4239
[[constraint]]
4340
name = "k8s.io/klog"
4441
version = "0.1.0"
4542

43+
[[constraint]]
44+
branch = "master"
45+
name = "github.com/container-storage-interface/spec"
46+
47+
[[constraint]]
48+
name = "github.com/kubernetes-csi/csi-lib-utils"
49+
version = "0.2.0"
50+
4651
[prune]
4752
non-go = true
4853
go-tests = true

cmd/csi-resizer/main.go

+17-3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import (
2424
"github.com/kubernetes-csi/external-resizer/pkg/resizer"
2525
"github.com/kubernetes-csi/external-resizer/pkg/util"
2626

27+
"k8s.io/apimachinery/pkg/util/wait"
28+
"k8s.io/client-go/informers"
2729
"k8s.io/klog"
2830
)
2931

@@ -33,6 +35,9 @@ var (
3335
resyncPeriod = flag.Duration("resync-period", time.Minute*10, "Resync period for cache")
3436
workers = flag.Int("workers", 10, "Concurrency to process multiple resize requests")
3537

38+
csiAddress = flag.String("csi-address", "/run/csi/socket", "Address of the CSI driver socket.")
39+
csiTimeout = flag.Duration("csiTimeout", 15*time.Second, "Timeout for waiting for CSI driver socket.")
40+
3641
enableLeaderElection = flag.Bool("leader-election", false, "Enable leader election.")
3742
leaderElectionIdentity = flag.String("leader-election-identity", "", "Unique identity of this resizer. Typically name of the pod where the resizer runs.")
3843
leaderElectionNamespace = flag.String("leader-election-namespace", "kube-system", "Namespace where this resizer runs.")
@@ -58,13 +63,20 @@ func main() {
5863
flag.Set("logtostderr", "true")
5964
flag.Parse()
6065

61-
resizerName := "csi/example-resizer"
62-
6366
kubeClient, err := util.NewK8sClient(*master, *kubeConfig)
6467
if err != nil {
6568
klog.Fatal(err.Error())
6669
}
6770

71+
informerFactory := informers.NewSharedInformerFactory(kubeClient, *resyncPeriod)
72+
73+
csiResizer, err := resizer.NewCSIResizer(*csiAddress, *csiTimeout, kubeClient, informerFactory)
74+
if err != nil {
75+
klog.Fatal(err.Error())
76+
}
77+
78+
resizerName := csiResizer.Name()
79+
6880
var leaderElectionConfig *util.LeaderElectionConfig
6981
if *enableLeaderElection {
7082
if leaderElectionIdentity == nil || *leaderElectionIdentity == "" {
@@ -80,6 +92,8 @@ func main() {
8092
}
8193
}
8294

83-
rc := controller.NewResizeController(resizerName, resizer.New(), kubeClient, *resyncPeriod)
95+
rc := controller.NewResizeController(resizerName, csiResizer, kubeClient, *resyncPeriod, informerFactory)
96+
97+
informerFactory.Start(wait.NeverStop)
8498
rc.Run(*workers, leaderElectionConfig)
8599
}

pkg/controller/controller.go

+20-23
Original file line numberDiff line numberDiff line change
@@ -48,25 +48,24 @@ type ResizeController interface {
4848
}
4949

5050
type resizeController struct {
51-
name string
52-
resizer resizer.Resizer
53-
kubeClient kubernetes.Interface
54-
claimQueue workqueue.RateLimitingInterface
55-
eventRecorder record.EventRecorder
56-
pvLister corelisters.PersistentVolumeLister
57-
pvSynced cache.InformerSynced
58-
pvcLister corelisters.PersistentVolumeClaimLister
59-
pvcSynced cache.InformerSynced
60-
informerFactory informers.SharedInformerFactory
51+
name string
52+
resizer resizer.Resizer
53+
kubeClient kubernetes.Interface
54+
claimQueue workqueue.RateLimitingInterface
55+
eventRecorder record.EventRecorder
56+
pvLister corelisters.PersistentVolumeLister
57+
pvSynced cache.InformerSynced
58+
pvcLister corelisters.PersistentVolumeClaimLister
59+
pvcSynced cache.InformerSynced
6160
}
6261

6362
// NewResizeController returns a ResizeController.
6463
func NewResizeController(
6564
name string,
6665
resizer resizer.Resizer,
6766
kubeClient kubernetes.Interface,
68-
resyncPeriod time.Duration) ResizeController {
69-
informerFactory := informers.NewSharedInformerFactory(kubeClient, resyncPeriod)
67+
resyncPeriod time.Duration,
68+
informerFactory informers.SharedInformerFactory) ResizeController {
7069
pvInformer := informerFactory.Core().V1().PersistentVolumes()
7170
pvcInformer := informerFactory.Core().V1().PersistentVolumeClaims()
7271

@@ -80,16 +79,15 @@ func NewResizeController(
8079
workqueue.DefaultControllerRateLimiter(), fmt.Sprintf("%s-pvc", name))
8180

8281
ctrl := &resizeController{
83-
name: name,
84-
resizer: resizer,
85-
kubeClient: kubeClient,
86-
pvLister: pvInformer.Lister(),
87-
pvSynced: pvInformer.Informer().HasSynced,
88-
pvcLister: pvcInformer.Lister(),
89-
pvcSynced: pvcInformer.Informer().HasSynced,
90-
claimQueue: claimQueue,
91-
eventRecorder: eventRecorder,
92-
informerFactory: informerFactory,
82+
name: name,
83+
resizer: resizer,
84+
kubeClient: kubeClient,
85+
pvLister: pvInformer.Lister(),
86+
pvSynced: pvInformer.Informer().HasSynced,
87+
pvcLister: pvcInformer.Lister(),
88+
pvcSynced: pvcInformer.Informer().HasSynced,
89+
claimQueue: claimQueue,
90+
eventRecorder: eventRecorder,
9391
}
9492

9593
// Add a resync period as the PVC's request size can be resized again when we handling
@@ -166,7 +164,6 @@ func (ctrl *resizeController) Run(
166164

167165
stopCh := ctx.Done()
168166

169-
ctrl.informerFactory.Start(stopCh)
170167
if !cache.WaitForCacheSync(stopCh, ctrl.pvSynced, ctrl.pvcSynced) {
171168
klog.Errorf("Cannot sync pv/pvc caches")
172169
return

0 commit comments

Comments
 (0)