Skip to content

Commit a77d006

Browse files
committed
Update snapshot CRD to v1beta
1 parent 4160887 commit a77d006

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
@@ -121,7 +121,7 @@ func main() {
121121
if err != nil {
122122
klog.Fatalf("Failed to create client: %v", err)
123123
}
124-
// snapclientset.NewForConfig creates a new Clientset for VolumesnapshotV1alpha1Client
124+
// snapclientset.NewForConfig creates a new Clientset for VolumesnapshotV1beta1Client
125125
snapClient, err := snapclientset.NewForConfig(config)
126126
if err != nil {
127127
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"
@@ -119,6 +119,8 @@ const (
119119
deleteVolumeRetryCount = 5
120120

121121
annStorageProvisioner = "volume.beta.kubernetes.io/storage-provisioner"
122+
123+
snapshotNotBound = "snapshot %s not bound"
122124
)
123125

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

806805
if snapshotObj.ObjectMeta.DeletionTimestamp != nil {
807806
return nil, fmt.Errorf("snapshot %s is currently being deleted", options.PVC.Spec.DataSource.Name)
808807
}
809808
klog.V(5).Infof("VolumeSnapshot %+v", snapshotObj)
810809

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

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

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

827-
if snapContentObj.Spec.VolumeSnapshotSource.CSI == nil {
828-
klog.Warningf("error getting snapshot source from snapshotcontent %s for snapshot %s/%s", snapshotObj.Spec.SnapshotContentName, snapshotObj.Namespace, snapshotObj.Name)
829-
return nil, fmt.Errorf("snapshot in dataSource not bound or invalid")
826+
if snapContentObj.Spec.Driver != options.StorageClass.Provisioner {
827+
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)
828+
return nil, fmt.Errorf(snapshotNotBound, options.PVC.Spec.DataSource.Name)
830829
}
831830

832-
if snapContentObj.Spec.VolumeSnapshotSource.CSI.Driver != options.StorageClass.Provisioner {
833-
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)
834-
return nil, fmt.Errorf("snapshot in dataSource not bound or invalid")
831+
if snapshotObj.Status.ReadyToUse == nil || *snapshotObj.Status.ReadyToUse == false {
832+
return nil, fmt.Errorf("snapshot %s is not Ready", options.PVC.Spec.DataSource.Name)
835833
}
836834

837835
klog.V(5).Infof("VolumeSnapshotContent %+v", snapContentObj)
836+
837+
if snapContentObj.Status == nil || snapContentObj.Status.SnapshotHandle == nil {
838+
return nil, fmt.Errorf("snapshot handle %s is not available", options.PVC.Spec.DataSource.Name)
839+
}
840+
838841
snapshotSource := csi.VolumeContentSource_Snapshot{
839842
Snapshot: &csi.VolumeContentSource_SnapshotSource{
840-
SnapshotId: snapContentObj.Spec.VolumeSnapshotSource.CSI.SnapshotHandle,
843+
SnapshotId: *snapContentObj.Status.SnapshotHandle,
841844
},
842845
}
843846
klog.V(5).Infof("VolumeContentSource_Snapshot %+v", snapshotSource)

0 commit comments

Comments
 (0)