Skip to content

Commit fc0acd7

Browse files
committed
Update volume group snapshot KEP
1 parent 73af599 commit fc0acd7

File tree

1 file changed

+7
-42
lines changed
  • keps/sig-storage/3476-volume-group-snapshot

1 file changed

+7
-42
lines changed

keps/sig-storage/3476-volume-group-snapshot/README.md

Lines changed: 7 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
8282
- [x] (R) Production readiness review completed
8383
- [x] Production readiness review approved
8484
- [x] "Implementation History" section is up-to-date for milestone
85-
- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
85+
- [x] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
8686
- [ ] Supporting documentation e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
8787

8888
<!--
@@ -137,10 +137,10 @@ Note: In the following, we will use VolumeGroupSnapshot Controller to refer to t
137137
* The group snapshot logic in csi-snapshotter will retrieve all volumeSnapshotHandles and their source volumeHandles in the Volume Group Snapshot from the CSI CreateVolumeGroupSnapshotResponse, and populate the VolumeSnapshotHandlePairList field in the VolumeGroupSnapshotContent status.
138138
* The VolumeGroupSnapshot controller will be watching the VolumeGroupSnapshotContent, and create VolumeSnapshotContents pointing to the volumeSnapshotHandles once they are available in the VolumeGroupSnapshotContent status. Then the controller will create VolumeSnapshots pointing to the VolumeSnapshotContents.
139139
* CreateVolumeGroupSnapshot CSI function response
140-
* The CreateVolumeGroupSnapshot CSI function should return a list of snapshots (Snapshot message defined in CSI Spec) in its response. The group snapshot logic in the csi-snapshotter sidecar will update the VolumeSnapshotHandlePairList field in the VolumeGroupSnapshotContent status based on the returned list of snapshots from the CSI call. The VolumeGroupSnapshot controller can use VolumeSnapshotHandles to construct corresponding individual VolumeSnapshotContents and VolumeSnapshots, wait for VolumeSnapshots and VolumeSnapshotContents to be bound, and update PVCVolumeSnapshotRefList in the VolumeGroupSnapshot Status and PVVolumeSnapshotContentList in the VolumeGroupSnapshotContent Status.
140+
* The CreateVolumeGroupSnapshot CSI function should return a list of snapshots (Snapshot message defined in CSI Spec) in its response. The group snapshot logic in the csi-snapshotter sidecar will update the VolumeSnapshotHandlePairList field in the VolumeGroupSnapshotContent status based on the returned list of snapshots from the CSI call. The VolumeGroupSnapshot controller can use VolumeSnapshotHandles to construct corresponding individual VolumeSnapshotContents and VolumeSnapshots, wait for VolumeSnapshots and VolumeSnapshotContents to be bound.
141141
* Individual VolumeSnapshots will be named in this format:
142-
* <snap>-<hash of VolumeGroupSnapshot UUID+PVC UUID+timestamp>
143-
* A label with VolumeGroupSnapshot name will also be added to the VolumeSnapshot
142+
* <snap>-<hash of VolumeGroupSnapshotContent UUID + volume handle>
143+
* VolumeGroupSnapshot will also be added as an OwnerReference for the VolumeSnapshot
144144

145145
```
146146
apiVersion: snapshot.storage.k8s.io/v1
@@ -165,6 +165,8 @@ Admin can create a VolumeGroupSnapshotContent, specifying an existing VolumeGrou
165165

166166
The controller will call the CSI GetVolumeGroupSnapshot method to retrieve all volumeSnapshotHandles in the Volume Group Snapshot from the storage system, create VolumeSnapshotContents pointing to the volumeSnapshotHandles. Then the controller will create VolumeSnapshots pointing to the VolumeSnapshotContents.
167167

168+
Note: The automatic creation of individual VolumeSnapshots and VolumeSnapshotContents are not done in Beta. For now, the admin will need to manually construct these individual API objects. We plan to work on this before the feature moves to GA.
169+
168170
### Delete VolumeGroupSnapshot
169171

170172
A VolumeGroupSnapshot can be deleted if the CSI driver supports the CREATE_DELETE_GET_VOLUME_GROUP_SNAPSHOT capability.
@@ -373,21 +375,6 @@ Type VolumeGroupSnapshotStatus struct {
373375
374376
// +optional
375377
Error *VolumeSnapshotError
376-
377-
// VolumeSnapshotRefList is the list of PVC and VolumeSnapshot pairs that
378-
// is part of this group snapshot.
379-
// The maximum number of allowed snapshots in the group is 100.
380-
// +optional
381-
PVCVolumeSnapshotRefList []PVCVolumeSnapshotPair
382-
}
383-
384-
// PVCVolumeSnapshotPair defines a pair of a PVC reference and a Volume Snapshot Reference
385-
type PVCVolumeSnapshotPair struct {
386-
// PersistentVolumeClaimRef is a reference to the PVC this pair is referring to
387-
PersistentVolumeClaimRef core_v1.LocalObjectReference
388-
389-
// VolumeSnapshotRef is a reference to the VolumeSnapshot this pair is referring to
390-
VolumeSnapshotRef core_v1.LocalObjectReference
391378
}
392379
```
393380

@@ -494,17 +481,10 @@ Type VolumeGroupSnapshotContentStatus struct {
494481
ReadyToUse *bool
495482
496483
// +optional
497-
CreationTime *int64
484+
CreationTime *metav1.Time
498485
499486
// +optional
500487
Error *VolumeSnapshotError
501-
502-
// NOTE: We will consider removing this field after testing.
503-
// PVVolumeSnapshotContentList is the list of pairs of PV and
504-
// VolumeSnapshotContent for this group snapshot
505-
// The maximum number of allowed snapshots in the group is 100.
506-
// +optional
507-
PVVolumeSnapshotContentList []PVVolumeSnapshotContentPair
508488
}
509489
```
510490

@@ -576,17 +556,14 @@ service Controller {
576556
577557
rpc CreateVolumeGroupSnapshot(CreateVolumeGroupSnapshotRequest)
578558
returns (CreateVolumeGroupSnapshotResponse) {
579-
option (alpha_method) = true;
580559
}
581560
582561
rpc DeleteVolumeGroupSnapshot(DeleteVolumeGroupSnapshotRequest)
583562
returns (DeleteVolumeGroupSnapshotResponse) {
584-
option (alpha_method) = true;
585563
}
586564
587565
rpc GetVolumeGroupSnapshot(GetVolumeGroupSnapshotRequest)
588566
returns (GetVolumeGroupSnapshotResponse) {
589-
option (alpha_method) = true;
590567
}
591568
592569
}
@@ -598,8 +575,6 @@ The purpose of this call is to request the creation of a multi-volume snapshot.
598575

599576
```
600577
message CreateVolumeGroupSnapshotRequest {
601-
option (alpha_message) = true;
602-
603578
// The suggested name for the group snapshot. This field is REQUIRED
604579
// for idempotency.
605580
// Any Unicode string that conforms to the length limit is allowed
@@ -627,16 +602,12 @@ message CreateVolumeGroupSnapshotRequest {
627602
}
628603
629604
message CreateVolumeGroupSnapshotResponse {
630-
option (alpha_message) = true;
631-
632605
// Contains all attributes of the newly created group snapshot.
633606
// This field is REQUIRED.
634607
VolumeGroupSnapshot group_snapshot = 1;
635608
}
636609
637610
message VolumeGroupSnapshot {
638-
option (alpha_message) = true;
639-
640611
// The identifier for this group snapshot, generated by the plugin.
641612
// This field MUST contain enough information to uniquely identify
642613
// this specific snapshot vs all other group snapshots supported by
@@ -673,8 +644,6 @@ message VolumeGroupSnapshot {
673644

674645
```
675646
message DeleteVolumeGroupSnapshotRequest {
676-
option (alpha_message) = true;
677-
678647
// The ID of the group snapshot to be deleted.
679648
// This field is REQUIRED.
680649
string group_snapshot_id = 1;
@@ -706,8 +675,6 @@ message DeleteVolumeGroupSnapshotResponse {
706675

707676
```
708677
message GetVolumeGroupSnapshotRequest {
709-
option (alpha_message) = true;
710-
711678
// The ID of the group snapshot to fetch current group snapshot
712679
// information for.
713680
// This field is REQUIRED.
@@ -725,8 +692,6 @@ message GetVolumeGroupSnapshotRequest {
725692
}
726693
727694
message GetVolumeGroupSnapshotResponse {
728-
option (alpha_message) = true;
729-
730695
// This field is REQUIRED
731696
VolumeGroupSnapshot group_snapshot = 1;
732697
}

0 commit comments

Comments
 (0)