Jan Safranek
c7da3abd5b
volume controller: Speed up binding by not sorting volumes
...
The binder sorts all available volumes first, then it filters out volumes
that cannot be bound by processing each volume in a loop and then finds
the smallest matching volume by binary search.
So, if we process every available volume in a loop, we can also remember the
smallest matching one and save us potentially long sorting (and quick binary
search).
2016-05-20 12:26:39 +02:00
Jan Safranek
01b20d8e77
Generate shorter provisioned PV names.
...
GCE PD names are generated out of provisioned PV.Name, therefore it should be
as short as possible and still unique.
2016-05-18 10:06:51 +02:00
Jan Safranek
79b91b9ee0
Refactor persistent volume initialization
...
There should be only one initialization function, shared by the real
controller and unit tests.
2016-05-18 10:06:51 +02:00
Jan Safranek
7f549511e2
Big move and rename
...
- remove persistentvolume_ prefix from all files
- split controller.go into controller.go and controller_base.go (to have them
under 1500 lines for github)
2016-05-18 10:06:51 +02:00
Jan Safranek
c5fe1f943c
Fixed binder logging
...
- we need the original volume/claim in error paths
- don't report version conflicts as errors (they happen pretty often and we
recover from them)
2016-05-18 10:06:51 +02:00
Jan Safranek
41adcc5496
Speed up binding of provisioned volumes
...
This fixes e2e test for provisioning - it expects that provisioned volumes
are bound quickly.
Majority of this patch is update of test framework needs to initialize the
controller appropriately.
2016-05-18 10:06:51 +02:00
Jan Safranek
c6f05c8056
provisioning: Add unit testso for provisioning errors.
2016-05-18 10:06:51 +02:00
Jan Safranek
c24b33793c
unit test: Add possibility to inject kubeclient errors.
2016-05-18 10:06:51 +02:00
Jan Safranek
92dc159ab6
Delete provisioned volumes that are not needed.
...
We should delete volumes that are provisioned for a claim and the claim
gets bound to different volume during the provisioning.
2016-05-18 10:06:51 +02:00
Jan Safranek
9fb0f7a3fd
provisioning: Unit tests
2016-05-18 10:06:51 +02:00
Jan Safranek
514d595881
provisioning: Implement provisioner
2016-05-18 10:06:51 +02:00
Jan Safranek
75b0e2ad63
provisioning: Refactor volume plugins.
...
NewPersistentVolumeTemplate() and Provision() are merged into one call.
2016-05-18 10:06:51 +02:00
Jan Safranek
dd7890c362
delete: Implement Deleter
2016-05-18 10:06:51 +02:00
Jan Safranek
22e68d4622
recycler: unit tests
...
- Add reclaim policy to newVolume() call.
- Implement reactor Volumes().Get().
- Implement mock volume plugin.
- Add recycler tests.
- Add a synchronization condition to controller.scheduleOperation
- we need to pause the controller here, let the test to do some bad things
to the controller and test error cases in recycleVolumeOperation.
Test framework gets more and more complicated... But this is the last piece,
I promise.
2016-05-18 10:06:24 +02:00
Jan Safranek
a08d826ca5
Make a separate functions to emit events and change status.
...
These two seem to be always used together.
2016-05-18 10:06:24 +02:00
Jan Safranek
1feb346830
recycler: implement recycler
...
Also update the old unit test to pass. New unit tests will be added in
subsequent commit.
2016-05-18 10:06:24 +02:00
Jan Safranek
56cae2dc20
unit test framework: Wait for all running operations to finish during all tests.
2016-05-18 10:06:24 +02:00
Jan Safranek
cf68370371
recycler: Maintain a list of long-running operations.
...
We need to keep list of running recyclers, deleters and provisioners in
memory in order not to start a new recycling/deleting/provisioning twice
for the same volume/claim.
This will be eventually replaced by GoRoutineMap from PR #24838 .
2016-05-18 10:06:24 +02:00
Jan Safranek
4e47f69cba
recycler: Implement volume host interfaces.
...
We need the controller to implement volume.VolumeHost interface to be able
to call recycle plugins.
2016-05-18 10:06:24 +02:00
Jan Safranek
a17f0d5949
Move release logic to standalone function.
2016-05-18 10:06:23 +02:00
Jan Safranek
7b73384fda
Add controller method tests.
2016-05-18 10:05:14 +02:00
Jan Safranek
af295719f6
Add events.
2016-05-17 15:14:11 +02:00
Jan Safranek
61019b2401
Process deleted PVs
...
To speed up marking claims as "lost".
2016-05-17 15:14:10 +02:00
Jan Safranek
50b61ae168
Add "multi-sync" tests.
...
These test will call syncVolume/syncClaim until they reach consistent state.
2016-05-17 15:14:09 +02:00
Jan Safranek
f4f252e81c
Implement syncVolume.
2016-05-17 15:14:08 +02:00
Jan Safranek
5949b956f5
Implement syncClaim with bound claims.
2016-05-17 15:14:06 +02:00
Jan Safranek
eff6b50b93
Bind unbound claims in syncClaim.
2016-05-17 15:14:06 +02:00
Jan Safranek
e620bfc9cc
Add unit test framework.
...
It's quite complicated one, see subsequent commits for usage.
2016-05-17 15:14:05 +02:00
Jan Safranek
a195802d3e
Make standalone function to check for (pre-)bound volumes.
...
Note the semantic change, we now check for UID=""
2016-05-17 15:14:04 +02:00
Jan Safranek
20305f9235
Don't process events until fully initialized.
...
We do not want to process any volume / claim events until both PV and claim
caches are fully loaded.
2016-05-17 15:14:03 +02:00
Jan Safranek
71aa892a86
Implement volume controller skeleton.
...
This is a simple controller that watches changes of PersistentVolumes and
PersistentVolumeClaims.
2016-05-17 15:14:02 +02:00
Jan Safranek
b86e5923b2
Rename types.go to persistentvolume_index.go
...
With some changes:
- make some method private, nobody seems to use them.
- adapt to framework.NewIndexerInformer instead of using custom cache.
2016-05-17 15:14:01 +02:00
Jan Safranek
6fa527a460
Remove all three PersistentVolume controllers.
...
We will add new ones gradually in smaller chunks.
2016-05-10 17:57:54 +02:00
Prashanth Balasubramanian
6bc3052551
PetSet alpha controller
2016-05-04 18:39:17 -07:00
gmarek
3171aac57c
Generated clients can return their RESTClients, RESTClient can return its RateLimiter
2016-04-27 22:15:10 +02:00
Sami Wagiaalla
99744df6ee
Add loging to the recently recycled PV section
2016-04-04 10:07:03 -04:00
Andy Goldstein
5ce2e6d576
Check claimRef UID when processing a recycled PV, take 2
...
Reorder code a bit so it doesn't allow a case where you get some error other than "not found"
combined with a non-nil Claim.
Add test case.
2016-03-28 15:25:17 -04:00
saadali
79012f6d53
Rename volume.Builder to Mounter and volume.Cleaner to Unmounter
2016-03-25 11:29:58 -07:00
Sami Wagiaalla
b77abe56a2
Check claimRef UID when processing a recycled PV
2016-03-16 17:00:05 -04:00
Jordan Liggitt
d008283942
Tolerate multiple registered versions in a single group
2016-03-12 12:49:41 -05:00
k8s-merge-robot
d81d823ca5
Merge pull request #22393 from eparis/blunderbuss
...
Auto commit by PR queue bot
2016-03-02 18:51:56 -08:00
Eric Paris
5e5a823294
Move blunderbuss assignees into tree
2016-03-02 20:46:32 -05:00
Tim St. Clair
246b389275
Move test-only volume files to test-only volume package
2016-02-29 14:44:28 -08:00
k8s-merge-robot
a52eb5d433
Merge pull request #21268 from jsafrane/devel/recycle-provisioned
...
Auto commit by PR queue bot
2016-02-20 15:26:28 -08:00
k8s-merge-robot
eb45154996
Merge pull request #21348 from caesarxuchao/generate-fake-for-1-2
...
Auto commit by PR queue bot
2016-02-18 23:02:05 -08:00
Chao Xu
ad46715f51
generate fake client for release_1_2
2016-02-17 16:10:02 -08:00
laushinka
7ef585be22
Spelling fixes inspired by github.com/client9/misspell
2016-02-18 06:58:05 +07:00
Jan Safranek
6088369227
Delete provisioned volumes without claim.
...
There is a race in dynamic provisioning:
1. User creates a claim to dynamically provision a volume.
2. Kubernetes start provisioning the volume.
3. User deletes the claim before 2. is finished.
4. Kubernetes finished provisioning the volume.
The volume is in Pending state. This volume should be deleted instead of
moving to Available state.
2016-02-15 16:38:35 +01:00
k8s-merge-robot
315a509340
Merge pull request #20900 from jsafrane/devel/volume-names
...
Auto commit by PR queue bot
2016-02-13 17:58:29 -08:00
k8s-merge-robot
ad7ed67904
Merge pull request #20213 from jsafrane/devel/pv-reload
...
Auto commit by PR queue bot
2016-02-12 06:49:29 -08:00