@@ -62,16 +62,12 @@ func (r *SnapshotBrowseRunner) RunSnapshotBrowseHelper(ctx context.Context, args
62
62
return fmt .Errorf ("cli uninitialized" )
63
63
}
64
64
65
- sc , err := r .browserSteps .ValidateArgs (ctx , args )
66
- if err != nil {
67
- return errors .Wrap (err , "Failed to validate arguments." )
68
- }
69
-
70
65
fmt .Println ("Fetching the snapshot." )
71
- r . snapshot , err = r .browserSteps .FetchVS (ctx , args )
66
+ vs , sc , err : = r .browserSteps .ValidateArgs (ctx , args )
72
67
if err != nil {
73
- return errors .Wrap (err , "Failed to fetch VolumeSnapshot ." )
68
+ return errors .Wrap (err , "Failed to validate arguments ." )
74
69
}
70
+ r .snapshot = vs
75
71
76
72
fmt .Println ("Creating the file browser application." )
77
73
r .pod , r .pvc , err = r .browserSteps .CreateInspectorApplication (ctx , args , r .snapshot , sc )
@@ -90,8 +86,7 @@ func (r *SnapshotBrowseRunner) RunSnapshotBrowseHelper(ctx context.Context, args
90
86
91
87
//go:generate go run github.com/golang/mock/mockgen -destination=mocks/mock_snapshot_browser_stepper.go -package=mocks . SnapshotBrowserStepper
92
88
type SnapshotBrowserStepper interface {
93
- ValidateArgs (ctx context.Context , args * types.SnapshotBrowseArgs ) (* sv1.StorageClass , error )
94
- FetchVS (ctx context.Context , args * types.SnapshotBrowseArgs ) (* snapv1.VolumeSnapshot , error )
89
+ ValidateArgs (ctx context.Context , args * types.SnapshotBrowseArgs ) (* snapv1.VolumeSnapshot , * sv1.StorageClass , error )
95
90
CreateInspectorApplication (ctx context.Context , args * types.SnapshotBrowseArgs , snapshot * snapv1.VolumeSnapshot , storageClass * sv1.StorageClass ) (* v1.Pod , * v1.PersistentVolumeClaim , error )
96
91
PortForwardAPod (ctx context.Context , pod * v1.Pod , localPort int ) error
97
92
Cleanup (ctx context.Context , pvc * v1.PersistentVolumeClaim , pod * v1.Pod )
@@ -107,47 +102,39 @@ type snapshotBrowserSteps struct {
107
102
SnapshotGroupVersion * metav1.GroupVersionForDiscovery
108
103
}
109
104
110
- func (s * snapshotBrowserSteps ) ValidateArgs (ctx context.Context , args * types.SnapshotBrowseArgs ) (* sv1.StorageClass , error ) {
105
+ func (s * snapshotBrowserSteps ) ValidateArgs (ctx context.Context , args * types.SnapshotBrowseArgs ) (* snapv1. VolumeSnapshot , * sv1.StorageClass , error ) {
111
106
if err := args .Validate (); err != nil {
112
- return nil , errors .Wrap (err , "Failed to validate input arguments" )
107
+ return nil , nil , errors .Wrap (err , "Failed to validate input arguments" )
113
108
}
114
109
if err := s .validateOps .ValidateNamespace (ctx , args .Namespace ); err != nil {
115
- return nil , errors .Wrap (err , "Failed to validate Namespace" )
116
- }
117
- sc , err := s .validateOps .ValidateStorageClass (ctx , args .StorageClassName )
118
- if err != nil {
119
- return nil , errors .Wrap (err , "Failed to validate SC" )
110
+ return nil , nil , errors .Wrap (err , "Failed to validate Namespace" )
120
111
}
121
112
groupVersion , err := s .versionFetchOps .GetCSISnapshotGroupVersion ()
122
113
if err != nil {
123
- return nil , errors .Wrap (err , "Failed to fetch groupVersion" )
114
+ return nil , nil , errors .Wrap (err , "Failed to fetch groupVersion" )
124
115
}
125
116
s .SnapshotGroupVersion = groupVersion
126
117
snapshot , err := s .validateOps .ValidateVolumeSnapshot (ctx , args .SnapshotName , args .Namespace , groupVersion )
127
118
if err != nil {
128
- return nil , errors .Wrap (err , "Failed to validate VolumeSnapshot" )
119
+ return nil , nil , errors .Wrap (err , "Failed to validate VolumeSnapshot" )
129
120
}
130
- uVSC , err := s .validateOps .ValidateVolumeSnapshotClass (ctx , * snapshot .Spec .VolumeSnapshotClassName , groupVersion )
121
+ pvc , err := s .validateOps .ValidatePVC (ctx , * snapshot .Spec .Source . PersistentVolumeClaimName , args . Namespace )
131
122
if err != nil {
132
- return nil , errors .Wrap (err , "Failed to validate VolumeSnapshotClass " )
123
+ return nil , nil , errors .Wrap (err , "Failed to validate source PVC " )
133
124
}
134
- vscDriver := getDriverNameFromUVSC ( * uVSC , groupVersion . GroupVersion )
135
- if sc . Provisioner != vscDriver {
136
- return nil , fmt . Errorf ( "StorageClass provisioner (%s) and VolumeSnapshotClass driver (%s) are different." , sc . Provisioner , vscDriver )
125
+ sc , err := s . validateOps . ValidateStorageClass ( ctx , * pvc . Spec . StorageClassName )
126
+ if err != nil {
127
+ return nil , nil , errors . Wrap ( err , "Failed to validate SC" )
137
128
}
138
- return sc , nil
139
- }
140
-
141
- func (s * snapshotBrowserSteps ) FetchVS (ctx context.Context , args * types.SnapshotBrowseArgs ) (* snapv1.VolumeSnapshot , error ) {
142
- snapshotter , err := s .snapshotFetchOps .NewSnapshotter ()
129
+ uVSC , err := s .validateOps .ValidateVolumeSnapshotClass (ctx , * snapshot .Spec .VolumeSnapshotClassName , groupVersion )
143
130
if err != nil {
144
- return nil , errors .Wrap (err , "Failed to load snapshotter " )
131
+ return nil , nil , errors .Wrap (err , "Failed to validate VolumeSnapshotClass " )
145
132
}
146
- snapArgs := & types. FetchSnapshotArgs {
147
- Namespace : args . Namespace ,
148
- SnapshotName : args . SnapshotName ,
133
+ vscDriver := getDriverNameFromUVSC ( * uVSC , groupVersion . GroupVersion )
134
+ if sc . Provisioner != vscDriver {
135
+ return nil , nil , fmt . Errorf ( "StorageClass provisioner (%s) and VolumeSnapshotClass driver (%s) are different." , sc . Provisioner , vscDriver )
149
136
}
150
- return s . snapshotFetchOps . GetVolumeSnapshot ( ctx , snapshotter , snapArgs )
137
+ return snapshot , sc , nil
151
138
}
152
139
153
140
func (s * snapshotBrowserSteps ) CreateInspectorApplication (ctx context.Context , args * types.SnapshotBrowseArgs , snapshot * snapv1.VolumeSnapshot , storageClass * sv1.StorageClass ) (* v1.Pod , * v1.PersistentVolumeClaim , error ) {
0 commit comments