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
k8s-merge-robot
678958a706
Merge pull request #19868 from jsafrane/devel/syncclaim-twice
...
Auto commit by PR queue bot
2016-02-12 06:21:21 -08:00
Jan Safranek
1d0b1c227b
Add PV.Name into names of generated GCE/AWS/OSP volumes.
...
Volume names have now format <cluster-name>-dynamic-<pv-name>.
pv-name is guaranteed to be unique in Kubernetes cluster, adding
<cluster-name> ensures we don't conflict with any running cluster
in the cloud project (kube-controller-manager --cluster-name=XXX).
'kubernetes' is the default cluster name.
2016-02-12 09:46:59 +01:00
Tim Hockin
7cab7bd472
fix a few go-vet errors
2016-02-09 13:20:31 -08:00
k8s-merge-robot
e3c58293b9
Merge pull request #20197 from markturansky/check_pv_by_pvc_uid
...
Auto commit by PR queue bot
2016-02-05 21:06:16 -08:00
Chao Xu
184440f8ef
rename release_1_2 to internalclientset
2016-02-05 14:02:28 -08:00
Jan Safranek
76b6449715
Retry recycle or delete operation on failure.
...
Recycle controller tries to recycle or delete a PV several times.
It stores count of failed attempts and timestamp of the last attempt in
annotations of the PV.
By default, the controller tries to recycle/delete a PV 3 times in
10 minutes interval. These values are configurable by
kube-controller-manager --pv-recycler-maximum-retry=X --pvclaimbinder-sync-period=Y
arguments.
2016-02-05 17:02:13 +01:00
gmarek
0c191e787b
Split controller flags between controllers
2016-02-05 12:17:51 +01:00
Chao Xu
1b047f8e67
rename legacy to core
2016-02-04 14:26:56 -08:00
Chao Xu
f9f5736b01
grep sed
2016-02-03 13:06:07 -08:00
Jan Safranek
1edf34a4e5
Fixed persistent volume claim controllers processing an old claim.
...
Fixes #19860 (it may be easier to look at the issue to see exact sequence
to reproduce the bug and understand the fix).
When PersistentVolumeProvisionerController.reconcileClaim() is called with the
same claim in short succession (e.g. the claim is created by an user and
at the same time periodic check of all claims is scheduled), the second
reconcileClaim() call gets an old copy of the claim as its parameter.
The method should always reload the claim to get a fresh copy with all
annotations, possibly added by previous reconcileClaim() call.
The same applies to PersistentVolumeClaimBinder.syncClaim().
Also update all the test to store claims in "fake" API server before calling
syncClaim and reconcileClaim.
2016-02-02 13:52:07 +01:00
Jan Safranek
e2826626b1
Fixed persistent volume claim controllers processing an old volume
...
We should always load the newest version of the volume from APIserver before
processing it.
When PersistentVolumeProvisionerController.reconcileVolume() is called with the
same volume in short succession (e.g. the volume is created by a provisioner
and at the same time periodic check of all volumes is scheduled), the second
reconcileVolume() call gets an old copy of the volume as its parameter and
it does not see annotations updated by the previous call.
This may result in one volume being provisioned several times, creating orphan
volumes in the cloud.
The same error is in PersistentVolumeClaimBinder.syncVolume().
2016-02-01 10:44:31 +01:00
Chao Xu
c72d234bbf
replacing handwritten client in several controllers
2016-01-31 15:42:02 -08:00
Fabio Yeon
7205a160ac
Remove all instances of "/tmp" from unit tests and replace with a common
...
tmp directory creator. Exception is documented.
2016-01-27 16:11:22 -08:00
markturansky
1ad2df6b61
verify UID when releasing and binding volumes
2016-01-27 08:43:18 -05:00
k8s-merge-robot
52cb4c1d9d
Merge pull request #18445 from resouer/fix-emptydir
...
Auto commit by PR queue bot
2016-01-26 02:45:54 -08:00
harry
0fa5b6c4f7
Add e2e test for wrapper volumes
...
Use git server in e2e and refactor wrapper builder
Update e2e test to use a fake git server
2016-01-24 16:57:44 +08:00
Clayton Coleman
33085c0cf2
Update tests to handle codec changes
2016-01-22 13:27:26 -05:00
Alex Mohr
12845ba9a5
Merge pull request #18877 from markturansky/fix_18830
...
Trigger syncClaim after PV provisioning to reduce wait
2016-01-21 15:06:46 -08:00
k8s-merge-robot
6cf3a4b5f0
Merge pull request #18957 from jsafrane/devel/pv-name-tag
...
Auto commit by PR queue bot
2016-01-21 05:55:12 -08:00
Jan Safranek
8c48250a55
Add an integration test for volume tags.
2016-01-08 19:09:29 +01:00
Jan Safranek
400ebf87a1
Add PV.Name to volume tags.
...
We add claim.Name and claim.Namespace as tags to AWS EBS / GCE PD / OpenStack
Cinder volumes created by Kubernetes. To easily match Kubernetes volumes and
cloud volumes, let's add also PV.Name.
2016-01-04 12:28:02 +01:00
markturansky
50d83f3851
added missing return statements
2016-01-03 13:54:09 -05:00
markturansky
66b5844841
trigger syncClaim after pv provisioning to reduce wait
2015-12-17 21:35:10 -05:00
deads2k
9fda7f1812
update StatusDetails to handle Groups
2015-12-17 09:14:12 -05:00
k8s-merge-robot
9b106f5bc9
Merge pull request #18083 from markturansky/fail_if_no_recycler
...
Auto commit by PR queue bot
2015-12-16 19:35:49 -08:00
Saad Ali
3968a5e63c
Merge pull request #18601 from pmorie/devel/provisioner-aws
...
Dynamic provisioner for AWS EBS
2015-12-16 10:51:35 -08:00
markturansky
4aacb76149
added cast checks to controllers to prevent nil panics
2015-12-15 11:34:03 -05:00
Jan Safranek
6ff5286df9
Implement Creater and Deleter interfaces for AWS EBS.
...
Also mark the created EBS volumes with tags, so the admin knows
who/what created the volumes.
2015-12-15 10:22:49 +01:00
Wojciech Tyczynski
960808bf08
Switch to versioned ListOptions in client.
2015-12-14 14:26:09 +01:00
markturansky
4fc1bf1f23
Added PersistentVolumeController
2015-12-11 10:33:30 -05:00
markturansky
34c063cfe1
attempt recycling once, fail pv permanently
2015-12-10 18:23:45 -05:00
Phillip Wittrock
c67ce887f2
Volume Metrics Interface and base implementation.
...
- Add volume.MetricsProvider function to Volume interface.
- Add volume.MetricsDu for providing metrics via executing "du".
- Add volulme.MetricsNil for unsupported Volumes.
2015-12-09 16:06:24 -08:00
Wojciech Tyczynski
b0fcb5adef
Pass ListOptions to List in ListWatch.
2015-12-07 11:53:53 +01:00
Wojciech Tyczynski
6dcb689d4e
Simplify List() signature in clients.
2015-12-03 09:54:07 +01:00
k8s-merge-robot
8a8639d7af
Merge pull request #17863 from wojtek-t/only_list_options_in_watch
...
Auto commit by PR queue bot
2015-12-02 06:28:28 -08:00
Wojciech Tyczynski
8343c8ce6c
Pass ListOptions to List() methods.
2015-12-01 15:00:36 +01:00
Wojciech Tyczynski
d2dfc912e6
Simplify Watch() signature in clients.
2015-12-01 14:19:26 +01:00
Phillip Wittrock
6b358e43dd
Merge pull request #17747 from saad-ali/fixErrorCreatingPDTry2
...
Refactor GCE wrapper library to allow execution from E2E test suite
2015-11-25 15:57:42 -08:00
k8s-merge-robot
7f2f7aa091
Merge pull request #16432 from markturansky/recycler_race
...
Auto commit by PR queue bot
2015-11-25 11:54:06 -08:00
saadali
42b200a0a0
Refactor GCE wrapper library to allow execution from E2E test suite
...
This reverts commit 147b6911f5
, reversing
changes made to 6fd986065b
.
2015-11-25 11:48:06 -08:00
Wojciech Tyczynski
b6ef62af24
Use unversioned.ListOptions in clients.
2015-11-24 16:52:09 +01:00
Jerzy Szczepkowski
8a922e22be
Revert "Refactor GCE wrapper library to allow execution from E2E test suite"
2015-11-23 09:24:32 +01:00
saadali
882469dd7b
Refactor GCE wrapper library to allow execution from E2E test suite
2015-11-20 11:41:10 -08:00
markturansky
b9b8cf7fff
Fixed race condition in pv binder
2015-11-12 13:55:09 -05:00
Jerzy Szczepkowski
5ef087adab
Merge pull request #16266 from wojtek-t/fix_handshake_reflector
...
Reuse TCP connections in Reflector between resync periods.
2015-10-27 10:36:18 +01:00
k8s-merge-robot
df265b2d6e
Merge pull request #15510 from aveshagarwal/master-selflink-objref
...
Auto commit by PR queue bot
2015-10-27 00:37:21 -07:00
Wojciech Tyczynski
d47e21f19f
Reuse TCP connections in Reflector between resync periods.
2015-10-26 19:35:25 +01:00
Wojciech Tyczynski
f4d75e0a0a
Support timeout in watch requests
2015-10-24 13:12:49 +02:00
Avesh Agarwal
8e4a8b7260
Addresses issue #6596 .
...
Removes ForTesting_ReferencesAllowBlankSelfLinks.
Fixes controller's persistentvolumes unit tests.
2015-10-12 19:21:48 -04:00
eulerzgy
4ed5f9d240
adjust package name for pkg/controller directory
2015-10-12 09:51:27 +08:00
Chao Xu
7c9f4cc42f
experimental. -> extensions.
2015-10-09 15:49:10 -07:00
Wojciech Tyczynski
df79026b79
Extend resyncPeriods in controllers in production.
2015-10-08 09:10:09 +02:00
markturansky
f2378a2da7
shortened annotation key name, improved comments
2015-09-23 22:02:08 -04:00
markturansky
09600095c4
allow pre-binding of persistent volumes to pvclaims
2015-09-23 10:24:42 -04:00
k8s-merge-robot
c1eb1a1b2f
Merge pull request #13791 from fgrzadkowski/fix_secrets_in_docker
...
Auto commit by PR queue bot
2015-09-17 15:13:29 -07:00
markturansky
c2de9e9647
Added volume.Deleter interface and simple HostPath implementation
2015-09-17 12:08:58 -04:00
Filip Grzadkowski
7fe34f2050
Introduce nsenter writer for volume plugins
2015-09-17 16:40:29 +02:00
markturansky
7bc55b5aea
configurable pv recyclers
2015-09-15 12:48:25 -04:00
Daniel Smith
b225c1d47a
Run gofmt (separate commit for easy rebases)
2015-09-10 17:17:59 -07:00