-
Notifications
You must be signed in to change notification settings - Fork 547
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rbd: VolumeGroupSnapshot support #4502
Commits on Nov 6, 2024
-
rbd: close the RBD-image after adding it to a VolumeGroup
When the image is not closed, it keeps a watch open. This prevents the CSI Controller to delete the Volume, as there is still a user of it. Fixes: f9ab14e "rbd: check if an image is part of a group before adding it" Signed-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 3c13f82 - Browse repository at this point
Copy the full SHA 3c13f82View commit details -
journal: store
csi.groupid
for snapshotsCommit 95733b3 introduced the `StoreGroupID()` function, but that unfortunately set an empty key in the journal. Passing the `csiGroupIDKey` key (with value `csi.groupid`) caused setting `csi.csi.groupid` as a key. Reading the value back with the right `csi.groupid` key always returned an empty value. Fixes: 95733b3 "journal: add option to store the groupID" Signed-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for b1a9498 - Browse repository at this point
Copy the full SHA b1a9498View commit details -
rbd: have
GetVolumeGroup()
return an empty volume group if it was n……ot found Signed-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 34dd709 - Browse repository at this point
Copy the full SHA 34dd709View commit details -
rbd: add
.requestName
to thecommonVolumeGroup
structSigned-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 4128928 - Browse repository at this point
Copy the full SHA 4128928View commit details -
rbd: pass CSI-drivername to volume group instead of journal instance
Each object is responsible for maintaining a connection to the journal. By sharing a single journal, cleanup of objects becomes more complex as the journal is used in deferred functions and only the last should destroy the journal connection resources. Signed-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 84f99da - Browse repository at this point
Copy the full SHA 84f99daView commit details -
rbd: add
rbdVolume.NewSnapshotByID
to clone images by RBD snapshot-idThe NewSnapshotByID() function makes it possible to clone a new Snapshot from an existing RBD-image and the ID of an RBD-snapshot on that image. This will be used by the VolumeGroupSnapshot feature, where the ID of an RBD-snapshot is obtained for the RBD-snapshot on the RBD-images. Signed-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for def0862 - Browse repository at this point
Copy the full SHA def0862View commit details -
rbd: add VolumeGroup.CreateSnapshots() implementation
When the rbd.Manager creates a VolumeGroupSnapshot, each RBD-snapshot that is created as part of the RBD-group needs to be cloned into its own RBD-image that will be used as a CSI Snapshot. The VolumeGroup.CreateSnapshots() creates the RBD-group snapshot and returns a list of the Snapshot structs. Signed-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 7f18e7a - Browse repository at this point
Copy the full SHA 7f18e7aView commit details -
rbd: add VolumeGroupSnapshot type
The VolumeGroupSnapshot type will be used by the rbd.Manager to create, inspect and delete VolumeGroupSnapshos. Signed-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for c91a835 - Browse repository at this point
Copy the full SHA c91a835View commit details -
rbd: add manager GetSnapshotByID and SnapshotResolver interface
A (CSI) VolumeGroupSnapshot object contains references to Snapshot IDs (or CSI Snapshot handles). In order to work with a VolumeGroupSnapshot struct, the Snapshot IDs need to be resolved into rbdSnapshot structs. Signed-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 1240204 - Browse repository at this point
Copy the full SHA 1240204View commit details -
rbd: add manager.CreateVolumeGroupSnapshot()
Implement the CreateVolumeGroupSnapshot for the rbd.Manager. A Group Controller Server can use the rbd.Manager to create VolumeGroupSnapshots in an easy an idempotent way. Signed-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for e415b4b - Browse repository at this point
Copy the full SHA e415b4bView commit details -
rbd: implement Manager.GetVolumeGroupSnapshotByID
The GetVolumeGroupSnapshotByID function makes it possible to get a VolumeGroupSnapshot object from the Manager by passing a request-id. This makes it simple for the Group Controller Server to check if a VolumeGroupSnapshot already exists, so it is not needed to try and re-create an existing one. Signed-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for e058ca2 - Browse repository at this point
Copy the full SHA e058ca2View commit details -
rbd: add Manager.GetVolumeGroupSnapshotByName
The Group Controller Server may need to fetch a VolumeGroupSnapshot that was statically provisioned. In that case, only the name of the VolumeGroupSnapshot is known and should be resolved to an object. Signed-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 54061e5 - Browse repository at this point
Copy the full SHA 54061e5View commit details -
rbd: fix snapshot deletion by resolving image names correctly
When creating a Snapshot with the new NewSnapshotByID() function, the name of the RBD-image that is created is the same as the name of the Snapshot. The `RbdImageName` points to the name of parent image, which causes deleting the Snapshot to delete the parent image instead. Correcting the `RbdImageName` and setting it to the `RbdSnapName` makes sure that upon deletion, the Snapshot RBD-image is removed, and not the parent image. Signed-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 14ab5db - Browse repository at this point
Copy the full SHA 14ab5dbView commit details -
rbd: implement CSI Group Controller Server
Signed-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 1da6527 - Browse repository at this point
Copy the full SHA 1da6527View commit details -
rbd: expose the GroupControllerService
When the GroupSnapGetInfo go-ceph function is supported by librbd, the Group Controller Servive and VolumeGroupSnapshot capabilities can be exposed to the Container Orchestrator. Signed-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 42cb4b9 - Browse repository at this point
Copy the full SHA 42cb4b9View commit details -
rbd: set SnapshotGroupID on each Snapshot of a VolumeGroupSnapshot
Without the SnapshotGroupID in the Snapshot object, Kubernetes CSI does not know that the Snapshot belongs to a group. In that case, it allows the deletion of the Snapshot, which should be denied. Signed-off-by: Niels de Vos <ndevos@ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 1686dbb - Browse repository at this point
Copy the full SHA 1686dbbView commit details