Commit Graph

66 Commits

Author SHA1 Message Date
Patrick Ohly
51d6ac6f55 rbd: refuse to create block volumes
Without this check, the driver fails one of the E2E storage tests in
Kubernetes 1.13: provisioning a block volume is expected to fail in
e689d515f7/test/e2e/storage/testsuites/volumemode.go (L329-L330)
2019-01-14 20:15:09 +00:00
Patrick Ohly
403cad682c rbd: protect against concurrent gRPC calls
The timeout value in external-provisioner is fairly low. It's not
uncommon that it times out and retries before the rbdplugin is done
with CreateVolume. rbdplugin has to serialize calls and ensure that
they are idempotent to deal with this.
2019-01-14 20:15:09 +00:00
Mike Cronce
23a4126aed pkg/rbd/controllerserver.go: gofmt 2018-12-04 21:44:04 -05:00
Mike Cronce
93cb8a04d7 pkg/rbd: Updated for new versions of CSI/Kubernetes dependencies 2018-11-24 14:18:24 -05:00
Patrick Ohly
720ad4afeb rbd: protect against concurrent gRPC calls
The timeout value in external-provisioner is fairly low. It's not
uncommon that it times out and retries before the rbdplugin is done
with CreateVolume. rbdplugin has to serialize calls and ensure that
they are idempotent to deal with this.
2018-10-26 15:29:48 +02:00
Patrick Ohly
25e3a961c3 rbdplugin: idempotent DeleteVolume
When the initial DeleteVolume times out (as it does on slow clusters
due to the low 10 second limit), the external-provisioner calls it
again. The CSI standard requires the second call to succeed if the
volume has been deleted in the meantime. This didn't work because
DeleteVolume returned an error when failing to find the volume info
file:

  rbdplugin: E1008 08:05:35.631783       1 utils.go:100] GRPC error: rbd: open err /var/lib/kubelet/plugins/csi-rbdplugin/controller/csi-rbd-622a252c-cad0-11e8-9112-deadbeef0101.json/open /var/lib/kubelet/plugins/csi-rbdplugin/controller/csi-rbd-622a252c-cad0-11e8-9112-deadbeef0101.json: no such file or directory

The fix is to treat a missing volume info file as "volume already
deleted" and return success. To detect this, the original os error
must be wrapped, otherwise the caller of loadVolInfo cannot determine
the root cause.

Note that further work may be needed to make the driver really
resilient, for example there are probably concurrency issues.
But for now this fixes: #82
2018-10-09 12:08:56 +02:00
Seungcheol Ko
38aa575925 check snapshot feature 2018-08-09 22:07:13 +09:00
Seungcheol Ko
4312907f7b remove the snapshot if can't store snapshot information 2018-08-09 22:07:06 +09:00
Seungcheol Ko
b0e68a52e0 Refactoring using users 2018-08-09 22:07:00 +09:00
Seungcheol Ko
7d90783f03 fix nit 2018-08-09 22:06:51 +09:00
Seungcheol Ko
b1ccdbb154 Support snapshot feature in rbdplugin 2018-08-08 17:16:07 +09:00
Serguei Bezverkhi
1ff1f8be30 code update 2018-03-08 13:22:40 -05:00
Serguei Bezverkhi
de16b0f5e9 Refactor rbdplugin for CSI 0.2.0 spec 2018-02-15 10:49:38 -05:00
Huamin Chen
57a4715e95 rbd plugin refactoring: remove k8s clientSet
Signed-off-by: Huamin Chen <hchen@redhat.com>
2018-02-06 14:36:58 +00:00
Serguei Bezverkhi
8614aee8ef Making VolumeID != volName as per CSI spec 2018-01-15 20:57:07 -05:00
Serguei Bezverkhi
27334ac60d just code files 2018-01-15 11:50:50 -05:00