Skip to content

Commit ef550e6

Browse files
authored
Merge pull request kubernetes#75434 from cofyc/fix56098
Refactor PV scheduling library into a separate package
2 parents e871241 + 214ea1a commit ef550e6

33 files changed

+1313
-1048
lines changed

cmd/kube-scheduler/app/options/BUILD

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ go_library(
1212
visibility = ["//visibility:public"],
1313
deps = [
1414
"//cmd/kube-scheduler/app/config:go_default_library",
15-
"//pkg/api/legacyscheme:go_default_library",
1615
"//pkg/client/leaderelectionconfig:go_default_library",
1716
"//pkg/master/ports:go_default_library",
1817
"//pkg/scheduler/apis/config:go_default_library",
@@ -29,6 +28,7 @@ go_library(
2928
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
3029
"//staging/src/k8s.io/client-go/informers:go_default_library",
3130
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
31+
"//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
3232
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
3333
"//staging/src/k8s.io/client-go/rest:go_default_library",
3434
"//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library",

cmd/kube-scheduler/app/options/options.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
utilfeature "k8s.io/apiserver/pkg/util/feature"
3131
"k8s.io/client-go/informers"
3232
clientset "k8s.io/client-go/kubernetes"
33+
"k8s.io/client-go/kubernetes/scheme"
3334
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
3435
restclient "k8s.io/client-go/rest"
3536
"k8s.io/client-go/tools/clientcmd"
@@ -42,7 +43,6 @@ import (
4243
"k8s.io/klog"
4344
kubeschedulerconfigv1alpha1 "k8s.io/kube-scheduler/config/v1alpha1"
4445
schedulerappconfig "k8s.io/kubernetes/cmd/kube-scheduler/app/config"
45-
"k8s.io/kubernetes/pkg/api/legacyscheme"
4646
"k8s.io/kubernetes/pkg/client/leaderelectionconfig"
4747
"k8s.io/kubernetes/pkg/master/ports"
4848
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
@@ -238,7 +238,7 @@ func (o *Options) Config() (*schedulerappconfig.Config, error) {
238238

239239
// Prepare event clients.
240240
eventBroadcaster := record.NewBroadcaster()
241-
recorder := eventBroadcaster.NewRecorder(legacyscheme.Scheme, corev1.EventSource{Component: c.ComponentConfig.SchedulerName})
241+
recorder := eventBroadcaster.NewRecorder(scheme.Scheme, corev1.EventSource{Component: c.ComponentConfig.SchedulerName})
242242

243243
// Set up leader election if enabled.
244244
var leaderElectionConfig *leaderelection.LeaderElectionConfig

hack/.golint_failures

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ pkg/controller/volume/expand
107107
pkg/controller/volume/persistentvolume
108108
pkg/controller/volume/persistentvolume/config/v1alpha1
109109
pkg/controller/volume/persistentvolume/options
110+
pkg/controller/volume/persistentvolume/testing
111+
pkg/controller/volume/scheduling
110112
pkg/credentialprovider
111113
pkg/credentialprovider/gcp
112114
pkg/features

pkg/controller/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ filegroup(
146146
"//pkg/controller/volume/protectionutil:all-srcs",
147147
"//pkg/controller/volume/pvcprotection:all-srcs",
148148
"//pkg/controller/volume/pvprotection:all-srcs",
149+
"//pkg/controller/volume/scheduling:all-srcs",
149150
],
150151
tags = ["automanaged"],
151152
)

pkg/controller/volume/persistentvolume/BUILD

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,6 @@ go_library(
1212
"index.go",
1313
"pv_controller.go",
1414
"pv_controller_base.go",
15-
"scheduler_assume_cache.go",
16-
"scheduler_bind_cache_metrics.go",
17-
"scheduler_binder.go",
18-
"scheduler_binder_cache.go",
19-
"scheduler_binder_fake.go",
20-
"util.go",
2115
"volume_host.go",
2216
],
2317
importpath = "k8s.io/kubernetes/pkg/controller/volume/persistentvolume",
@@ -26,6 +20,7 @@ go_library(
2620
"//pkg/controller:go_default_library",
2721
"//pkg/controller/volume/events:go_default_library",
2822
"//pkg/controller/volume/persistentvolume/metrics:go_default_library",
23+
"//pkg/controller/volume/persistentvolume/util:go_default_library",
2924
"//pkg/features:go_default_library",
3025
"//pkg/util/goroutinemap:go_default_library",
3126
"//pkg/util/goroutinemap/exponentialbackoff:go_default_library",
@@ -39,14 +34,12 @@ go_library(
3934
"//staging/src/k8s.io/api/storage/v1:go_default_library",
4035
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
4136
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
42-
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
4337
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
4438
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
4539
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
4640
"//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
4741
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
4842
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
49-
"//staging/src/k8s.io/apiserver/pkg/storage/etcd:go_default_library",
5043
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
5144
"//staging/src/k8s.io/client-go/informers/core/v1:go_default_library",
5245
"//staging/src/k8s.io/client-go/informers/storage/v1:go_default_library",
@@ -62,7 +55,6 @@ go_library(
6255
"//staging/src/k8s.io/cloud-provider:go_default_library",
6356
"//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library",
6457
"//staging/src/k8s.io/csi-translation-lib:go_default_library",
65-
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
6658
"//vendor/k8s.io/klog:go_default_library",
6759
],
6860
)
@@ -77,15 +69,14 @@ go_test(
7769
"provision_test.go",
7870
"pv_controller_test.go",
7971
"recycle_test.go",
80-
"scheduler_assume_cache_test.go",
81-
"scheduler_binder_cache_test.go",
82-
"scheduler_binder_test.go",
8372
],
8473
embed = [":go_default_library"],
8574
deps = [
8675
"//pkg/api/testapi:go_default_library",
8776
"//pkg/apis/core:go_default_library",
8877
"//pkg/controller:go_default_library",
78+
"//pkg/controller/volume/persistentvolume/testing:go_default_library",
79+
"//pkg/controller/volume/persistentvolume/util:go_default_library",
8980
"//pkg/features:go_default_library",
9081
"//pkg/volume:go_default_library",
9182
"//pkg/volume/util:go_default_library",
@@ -95,16 +86,12 @@ go_test(
9586
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
9687
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
9788
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
98-
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
99-
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
10089
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
101-
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
10290
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
10391
"//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library",
10492
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
10593
"//staging/src/k8s.io/apiserver/pkg/util/feature/testing:go_default_library",
10694
"//staging/src/k8s.io/client-go/informers:go_default_library",
107-
"//staging/src/k8s.io/client-go/informers/core/v1:go_default_library",
10895
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
10996
"//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
11097
"//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
@@ -132,6 +119,8 @@ filegroup(
132119
"//pkg/controller/volume/persistentvolume/config:all-srcs",
133120
"//pkg/controller/volume/persistentvolume/metrics:all-srcs",
134121
"//pkg/controller/volume/persistentvolume/options:all-srcs",
122+
"//pkg/controller/volume/persistentvolume/testing:all-srcs",
123+
"//pkg/controller/volume/persistentvolume/util:all-srcs",
135124
],
136125
tags = ["automanaged"],
137126
)

pkg/controller/volume/persistentvolume/delete_test.go

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222

2323
"k8s.io/api/core/v1"
2424
storage "k8s.io/api/storage/v1"
25+
pvtesting "k8s.io/kubernetes/pkg/controller/volume/persistentvolume/testing"
2526
)
2627

2728
// Test single call to syncVolume, expecting recycling to happen.
@@ -91,11 +92,9 @@ func TestDeleteSync(t *testing.T) {
9192
noclaims,
9293
noclaims,
9394
noevents, noerrors,
94-
wrapTestWithInjectedOperation(wrapTestWithReclaimCalls(operationDelete, []error{}, testSyncVolume), func(ctrl *PersistentVolumeController, reactor *volumeReactor) {
95+
wrapTestWithInjectedOperation(wrapTestWithReclaimCalls(operationDelete, []error{}, testSyncVolume), func(ctrl *PersistentVolumeController, reactor *pvtesting.VolumeReactor) {
9596
// Delete the volume before delete operation starts
96-
reactor.lock.Lock()
97-
delete(reactor.volumes, "volume8-6")
98-
reactor.lock.Unlock()
97+
reactor.DeleteVolume("volume8-6")
9998
}),
10099
},
101100
{
@@ -108,16 +107,12 @@ func TestDeleteSync(t *testing.T) {
108107
noclaims,
109108
newClaimArray("claim8-7", "uid8-7", "10Gi", "volume8-7", v1.ClaimBound, nil),
110109
noevents, noerrors,
111-
wrapTestWithInjectedOperation(wrapTestWithReclaimCalls(operationDelete, []error{}, testSyncVolume), func(ctrl *PersistentVolumeController, reactor *volumeReactor) {
112-
reactor.lock.Lock()
113-
defer reactor.lock.Unlock()
110+
wrapTestWithInjectedOperation(wrapTestWithReclaimCalls(operationDelete, []error{}, testSyncVolume), func(ctrl *PersistentVolumeController, reactor *pvtesting.VolumeReactor) {
114111
// Bind the volume to resurrected claim (this should never
115112
// happen)
116113
claim := newClaim("claim8-7", "uid8-7", "10Gi", "volume8-7", v1.ClaimBound, nil)
117-
reactor.claims[claim.Name] = claim
114+
reactor.AddClaimBoundToVolume(claim)
118115
ctrl.claims.Add(claim)
119-
volume := reactor.volumes["volume8-7"]
120-
volume.Status.Phase = v1.VolumeBound
121116
}),
122117
},
123118
{
@@ -141,7 +136,7 @@ func TestDeleteSync(t *testing.T) {
141136
noclaims,
142137
noclaims,
143138
noevents, noerrors,
144-
func(ctrl *PersistentVolumeController, reactor *volumeReactor, test controllerTest) error {
139+
func(ctrl *PersistentVolumeController, reactor *pvtesting.VolumeReactor, test controllerTest) error {
145140
// Inject external deleter annotation
146141
test.initialVolumes[0].Annotations[annDynamicallyProvisioned] = "external.io/test"
147142
test.expectedVolumes[0].Annotations[annDynamicallyProvisioned] = "external.io/test"
@@ -184,7 +179,7 @@ func TestDeleteSync(t *testing.T) {
184179
newClaimArray("claim8-12", "uid8-12", "10Gi", "volume8-12-2", v1.ClaimBound, nil),
185180
newClaimArray("claim8-12", "uid8-12", "10Gi", "volume8-12-2", v1.ClaimBound, nil),
186181
noevents, noerrors,
187-
func(ctrl *PersistentVolumeController, reactor *volumeReactor, test controllerTest) error {
182+
func(ctrl *PersistentVolumeController, reactor *pvtesting.VolumeReactor, test controllerTest) error {
188183
// Inject external deleter annotation
189184
test.initialVolumes[0].Annotations[annDynamicallyProvisioned] = "external.io/test"
190185
test.expectedVolumes[0].Annotations[annDynamicallyProvisioned] = "external.io/test"

0 commit comments

Comments
 (0)