Skip to content

Commit f807aff

Browse files
authored
Merge pull request #335 from xing-yang/snapshot_beta
Update snapshot CRD to v1beta
2 parents 16a2da3 + a77d006 commit f807aff

File tree

29 files changed

+971
-605
lines changed

29 files changed

+971
-605
lines changed

cmd/csi-provisioner/csi-provisioner.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ func main() {
122122
if err != nil {
123123
klog.Fatalf("Failed to create client: %v", err)
124124
}
125-
// snapclientset.NewForConfig creates a new Clientset for VolumesnapshotV1alpha1Client
125+
// snapclientset.NewForConfig creates a new Clientset for VolumesnapshotV1beta1Client
126126
snapClient, err := snapclientset.NewForConfig(config)
127127
if err != nil {
128128
klog.Fatalf("Failed to create snapshot client: %v", err)

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ require (
1111
github.com/imdario/mergo v0.3.7 // indirect
1212
github.com/kubernetes-csi/csi-lib-utils v0.6.1
1313
github.com/kubernetes-csi/csi-test v2.0.0+incompatible
14-
github.com/kubernetes-csi/external-snapshotter v0.0.0-20190401205233-54a21f108e31
14+
github.com/kubernetes-csi/external-snapshotter v2.0.0-rc1.0.20191024235139-bc6e42db5bc6+incompatible
1515
github.com/miekg/dns v1.1.8 // indirect
1616
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 // indirect
1717
github.com/prometheus/common v0.2.0 // indirect

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ github.com/kubernetes-csi/csi-lib-utils v0.6.1 h1:+AZ58SRSRWh2vmMoWAAGcv7x6fIyBM
9191
github.com/kubernetes-csi/csi-lib-utils v0.6.1/go.mod h1:GVmlUmxZ+SUjVLXicRFjqWUUvWez0g0Y78zNV9t7KfQ=
9292
github.com/kubernetes-csi/csi-test v2.0.0+incompatible h1:ia04uVFUM/J9n/v3LEMn3rEG6FmKV5BH9QLw7H68h44=
9393
github.com/kubernetes-csi/csi-test v2.0.0+incompatible/go.mod h1:YxJ4UiuPWIhMBkxUKY5c267DyA0uDZ/MtAimhx/2TA0=
94-
github.com/kubernetes-csi/external-snapshotter v0.0.0-20190401205233-54a21f108e31 h1:k5JUmEU48jVYjA2G6G0Vm09vK7QGm24KQm9XTWAF+KE=
95-
github.com/kubernetes-csi/external-snapshotter v0.0.0-20190401205233-54a21f108e31/go.mod h1:oYfxnsuh48V1UDYORl77YQxQbbdokNy7D73phuFpksY=
94+
github.com/kubernetes-csi/external-snapshotter v2.0.0-rc1.0.20191024235139-bc6e42db5bc6+incompatible h1:luZoAqNkFePdBVZlKNL3+GPRN9djXt8sxhDJjumGlD8=
95+
github.com/kubernetes-csi/external-snapshotter v2.0.0-rc1.0.20191024235139-bc6e42db5bc6+incompatible/go.mod h1:oYfxnsuh48V1UDYORl77YQxQbbdokNy7D73phuFpksY=
9696
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
9797
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
9898
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=

pkg/controller/controller.go

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import (
3030

3131
"github.com/container-storage-interface/spec/lib/go/csi"
3232
"github.com/kubernetes-csi/csi-lib-utils/connection"
33-
snapapi "github.com/kubernetes-csi/external-snapshotter/pkg/apis/volumesnapshot/v1alpha1"
33+
snapapi "github.com/kubernetes-csi/external-snapshotter/pkg/apis/volumesnapshot/v1beta1"
3434
snapclientset "github.com/kubernetes-csi/external-snapshotter/pkg/client/clientset/versioned"
3535
"sigs.k8s.io/sig-storage-lib-external-provisioner/controller"
3636
"sigs.k8s.io/sig-storage-lib-external-provisioner/util"
@@ -120,6 +120,8 @@ const (
120120
deleteVolumeRetryCount = 5
121121

122122
annStorageProvisioner = "volume.beta.kubernetes.io/storage-provisioner"
123+
124+
snapshotNotBound = "snapshot %s not bound"
123125
)
124126

125127
var (
@@ -800,49 +802,50 @@ func (p *csiProvisioner) getPVCSource(options controller.ProvisionOptions) (*csi
800802
// getSnapshotSource verifies DataSource.Kind of type VolumeSnapshot, making sure that the requested Snapshot is available/ready
801803
// returns the VolumeContentSource for the requested snapshot
802804
func (p *csiProvisioner) getSnapshotSource(options controller.ProvisionOptions) (*csi.VolumeContentSource, error) {
803-
snapshotObj, err := p.snapshotClient.VolumesnapshotV1alpha1().VolumeSnapshots(options.PVC.Namespace).Get(options.PVC.Spec.DataSource.Name, metav1.GetOptions{})
805+
snapshotObj, err := p.snapshotClient.SnapshotV1beta1().VolumeSnapshots(options.PVC.Namespace).Get(options.PVC.Spec.DataSource.Name, metav1.GetOptions{})
804806
if err != nil {
805807
return nil, fmt.Errorf("error getting snapshot %s from api server: %v", options.PVC.Spec.DataSource.Name, err)
806808
}
807-
if snapshotObj.Status.ReadyToUse == false {
808-
return nil, fmt.Errorf("snapshot %s is not Ready", options.PVC.Spec.DataSource.Name)
809-
}
810809

811810
if snapshotObj.ObjectMeta.DeletionTimestamp != nil {
812811
return nil, fmt.Errorf("snapshot %s is currently being deleted", options.PVC.Spec.DataSource.Name)
813812
}
814813
klog.V(5).Infof("VolumeSnapshot %+v", snapshotObj)
815814

816-
snapContentObj, err := p.snapshotClient.VolumesnapshotV1alpha1().VolumeSnapshotContents().Get(snapshotObj.Spec.SnapshotContentName, metav1.GetOptions{})
817-
if err != nil {
818-
klog.Warningf("error getting snapshotcontent %s for snapshot %s/%s from api server: %s", snapshotObj.Spec.SnapshotContentName, snapshotObj.Namespace, snapshotObj.Name, err)
819-
return nil, fmt.Errorf("snapshot in dataSource not bound or invalid")
815+
if snapshotObj.Status == nil || snapshotObj.Status.BoundVolumeSnapshotContentName == nil {
816+
return nil, fmt.Errorf(snapshotNotBound, options.PVC.Spec.DataSource.Name)
820817
}
821818

822-
if snapContentObj.Spec.VolumeSnapshotRef == nil {
823-
klog.Warningf("snapshotcontent %s for snapshot %s/%s is not bound", snapshotObj.Spec.SnapshotContentName, snapshotObj.Namespace, snapshotObj.Name)
824-
return nil, fmt.Errorf("snapshot in dataSource not bound or invalid")
819+
snapContentObj, err := p.snapshotClient.SnapshotV1beta1().VolumeSnapshotContents().Get(*snapshotObj.Status.BoundVolumeSnapshotContentName, metav1.GetOptions{})
820+
821+
if err != nil {
822+
klog.Warningf("error getting snapshotcontent %s for snapshot %s/%s from api server: %s", *snapshotObj.Status.BoundVolumeSnapshotContentName, snapshotObj.Namespace, snapshotObj.Name, err)
823+
return nil, fmt.Errorf(snapshotNotBound, options.PVC.Spec.DataSource.Name)
825824
}
826825

827826
if snapContentObj.Spec.VolumeSnapshotRef.UID != snapshotObj.UID || snapContentObj.Spec.VolumeSnapshotRef.Namespace != snapshotObj.Namespace || snapContentObj.Spec.VolumeSnapshotRef.Name != snapshotObj.Name {
828-
klog.Warningf("snapshotcontent %s for snapshot %s/%s is bound to a different snapshot", snapshotObj.Spec.SnapshotContentName, snapshotObj.Namespace, snapshotObj.Name)
829-
return nil, fmt.Errorf("snapshot in dataSource not bound or invalid")
827+
klog.Warningf("snapshotcontent %s for snapshot %s/%s is bound to a different snapshot", *snapshotObj.Status.BoundVolumeSnapshotContentName, snapshotObj.Namespace, snapshotObj.Name)
828+
return nil, fmt.Errorf(snapshotNotBound, options.PVC.Spec.DataSource.Name)
830829
}
831830

832-
if snapContentObj.Spec.VolumeSnapshotSource.CSI == nil {
833-
klog.Warningf("error getting snapshot source from snapshotcontent %s for snapshot %s/%s", snapshotObj.Spec.SnapshotContentName, snapshotObj.Namespace, snapshotObj.Name)
834-
return nil, fmt.Errorf("snapshot in dataSource not bound or invalid")
831+
if snapContentObj.Spec.Driver != options.StorageClass.Provisioner {
832+
klog.Warningf("snapshotcontent %s for snapshot %s/%s is handled by a different CSI driver than requested by StorageClass %s", *snapshotObj.Status.BoundVolumeSnapshotContentName, snapshotObj.Namespace, snapshotObj.Name, options.StorageClass.Name)
833+
return nil, fmt.Errorf(snapshotNotBound, options.PVC.Spec.DataSource.Name)
835834
}
836835

837-
if snapContentObj.Spec.VolumeSnapshotSource.CSI.Driver != options.StorageClass.Provisioner {
838-
klog.Warningf("snapshotcontent %s for snapshot %s/%s is handled by a different CSI driver than requested by StorageClass %s", snapshotObj.Spec.SnapshotContentName, snapshotObj.Namespace, snapshotObj.Name, options.StorageClass.Name)
839-
return nil, fmt.Errorf("snapshot in dataSource not bound or invalid")
836+
if snapshotObj.Status.ReadyToUse == nil || *snapshotObj.Status.ReadyToUse == false {
837+
return nil, fmt.Errorf("snapshot %s is not Ready", options.PVC.Spec.DataSource.Name)
840838
}
841839

842840
klog.V(5).Infof("VolumeSnapshotContent %+v", snapContentObj)
841+
842+
if snapContentObj.Status == nil || snapContentObj.Status.SnapshotHandle == nil {
843+
return nil, fmt.Errorf("snapshot handle %s is not available", options.PVC.Spec.DataSource.Name)
844+
}
845+
843846
snapshotSource := csi.VolumeContentSource_Snapshot{
844847
Snapshot: &csi.VolumeContentSource_SnapshotSource{
845-
SnapshotId: snapContentObj.Spec.VolumeSnapshotSource.CSI.SnapshotHandle,
848+
SnapshotId: *snapContentObj.Status.SnapshotHandle,
846849
},
847850
}
848851
klog.V(5).Infof("VolumeContentSource_Snapshot %+v", snapshotSource)

0 commit comments

Comments
 (0)