1 package storsimple
2
3
4
5
6
7
8
9 import (
10 "context"
11 "github.com/Azure/go-autorest/autorest"
12 "github.com/Azure/go-autorest/autorest/azure"
13 "github.com/Azure/go-autorest/autorest/validation"
14 "github.com/Azure/go-autorest/tracing"
15 "net/http"
16 )
17
18
19 type BackupsClient struct {
20 BaseClient
21 }
22
23
24 func NewBackupsClient(subscriptionID string) BackupsClient {
25 return NewBackupsClientWithBaseURI(DefaultBaseURI, subscriptionID)
26 }
27
28
29
30 func NewBackupsClientWithBaseURI(baseURI string, subscriptionID string) BackupsClient {
31 return BackupsClient{NewWithBaseURI(baseURI, subscriptionID)}
32 }
33
34
35
36
37
38
39
40
41
42 func (client BackupsClient) Clone(ctx context.Context, deviceName string, backupName string, backupElementName string, parameters CloneRequest, resourceGroupName string, managerName string) (result BackupsCloneFuture, err error) {
43 if tracing.IsEnabled() {
44 ctx = tracing.StartSpan(ctx, fqdn+"/BackupsClient.Clone")
45 defer func() {
46 sc := -1
47 if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
48 sc = result.FutureAPI.Response().StatusCode
49 }
50 tracing.EndSpan(ctx, sc, err)
51 }()
52 }
53 if err := validation.Validate([]validation.Validation{
54 {TargetValue: parameters,
55 Constraints: []validation.Constraint{{Target: "parameters.TargetDeviceID", Name: validation.Null, Rule: true, Chain: nil},
56 {Target: "parameters.TargetVolumeName", Name: validation.Null, Rule: true, Chain: nil},
57 {Target: "parameters.TargetAccessControlRecordIds", Name: validation.Null, Rule: true, Chain: nil},
58 {Target: "parameters.BackupElement", Name: validation.Null, Rule: true,
59 Chain: []validation.Constraint{{Target: "parameters.BackupElement.ElementID", Name: validation.Null, Rule: true, Chain: nil},
60 {Target: "parameters.BackupElement.ElementName", Name: validation.Null, Rule: true, Chain: nil},
61 {Target: "parameters.BackupElement.ElementType", Name: validation.Null, Rule: true, Chain: nil},
62 {Target: "parameters.BackupElement.SizeInBytes", Name: validation.Null, Rule: true, Chain: nil},
63 {Target: "parameters.BackupElement.VolumeName", Name: validation.Null, Rule: true, Chain: nil},
64 {Target: "parameters.BackupElement.VolumeContainerID", Name: validation.Null, Rule: true, Chain: nil},
65 }}}},
66 {TargetValue: managerName,
67 Constraints: []validation.Constraint{{Target: "managerName", Name: validation.MaxLength, Rule: 50, Chain: nil},
68 {Target: "managerName", Name: validation.MinLength, Rule: 2, Chain: nil}}}}); err != nil {
69 return result, validation.NewError("storsimple.BackupsClient", "Clone", err.Error())
70 }
71
72 req, err := client.ClonePreparer(ctx, deviceName, backupName, backupElementName, parameters, resourceGroupName, managerName)
73 if err != nil {
74 err = autorest.NewErrorWithError(err, "storsimple.BackupsClient", "Clone", nil, "Failure preparing request")
75 return
76 }
77
78 result, err = client.CloneSender(req)
79 if err != nil {
80 err = autorest.NewErrorWithError(err, "storsimple.BackupsClient", "Clone", result.Response(), "Failure sending request")
81 return
82 }
83
84 return
85 }
86
87
88 func (client BackupsClient) ClonePreparer(ctx context.Context, deviceName string, backupName string, backupElementName string, parameters CloneRequest, resourceGroupName string, managerName string) (*http.Request, error) {
89 pathParameters := map[string]interface{}{
90 "backupElementName": backupElementName,
91 "backupName": backupName,
92 "deviceName": deviceName,
93 "managerName": managerName,
94 "resourceGroupName": resourceGroupName,
95 "subscriptionId": client.SubscriptionID,
96 }
97
98 const APIVersion = "2017-06-01"
99 queryParameters := map[string]interface{}{
100 "api-version": APIVersion,
101 }
102
103 preparer := autorest.CreatePreparer(
104 autorest.AsContentType("application/json; charset=utf-8"),
105 autorest.AsPost(),
106 autorest.WithBaseURL(client.BaseURI),
107 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backups/{backupName}/elements/{backupElementName}/clone", pathParameters),
108 autorest.WithJSON(parameters),
109 autorest.WithQueryParameters(queryParameters))
110 return preparer.Prepare((&http.Request{}).WithContext(ctx))
111 }
112
113
114
115 func (client BackupsClient) CloneSender(req *http.Request) (future BackupsCloneFuture, err error) {
116 var resp *http.Response
117 future.FutureAPI = &azure.Future{}
118 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
119 if err != nil {
120 return
121 }
122 var azf azure.Future
123 azf, err = azure.NewFutureFromResponse(resp)
124 future.FutureAPI = &azf
125 future.Result = future.result
126 return
127 }
128
129
130
131 func (client BackupsClient) CloneResponder(resp *http.Response) (result autorest.Response, err error) {
132 err = autorest.Respond(
133 resp,
134 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
135 autorest.ByClosing())
136 result.Response = resp
137 return
138 }
139
140
141
142
143
144
145
146 func (client BackupsClient) Delete(ctx context.Context, deviceName string, backupName string, resourceGroupName string, managerName string) (result BackupsDeleteFuture, err error) {
147 if tracing.IsEnabled() {
148 ctx = tracing.StartSpan(ctx, fqdn+"/BackupsClient.Delete")
149 defer func() {
150 sc := -1
151 if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
152 sc = result.FutureAPI.Response().StatusCode
153 }
154 tracing.EndSpan(ctx, sc, err)
155 }()
156 }
157 if err := validation.Validate([]validation.Validation{
158 {TargetValue: managerName,
159 Constraints: []validation.Constraint{{Target: "managerName", Name: validation.MaxLength, Rule: 50, Chain: nil},
160 {Target: "managerName", Name: validation.MinLength, Rule: 2, Chain: nil}}}}); err != nil {
161 return result, validation.NewError("storsimple.BackupsClient", "Delete", err.Error())
162 }
163
164 req, err := client.DeletePreparer(ctx, deviceName, backupName, resourceGroupName, managerName)
165 if err != nil {
166 err = autorest.NewErrorWithError(err, "storsimple.BackupsClient", "Delete", nil, "Failure preparing request")
167 return
168 }
169
170 result, err = client.DeleteSender(req)
171 if err != nil {
172 err = autorest.NewErrorWithError(err, "storsimple.BackupsClient", "Delete", result.Response(), "Failure sending request")
173 return
174 }
175
176 return
177 }
178
179
180 func (client BackupsClient) DeletePreparer(ctx context.Context, deviceName string, backupName string, resourceGroupName string, managerName string) (*http.Request, error) {
181 pathParameters := map[string]interface{}{
182 "backupName": backupName,
183 "deviceName": deviceName,
184 "managerName": managerName,
185 "resourceGroupName": resourceGroupName,
186 "subscriptionId": client.SubscriptionID,
187 }
188
189 const APIVersion = "2017-06-01"
190 queryParameters := map[string]interface{}{
191 "api-version": APIVersion,
192 }
193
194 preparer := autorest.CreatePreparer(
195 autorest.AsDelete(),
196 autorest.WithBaseURL(client.BaseURI),
197 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backups/{backupName}", pathParameters),
198 autorest.WithQueryParameters(queryParameters))
199 return preparer.Prepare((&http.Request{}).WithContext(ctx))
200 }
201
202
203
204 func (client BackupsClient) DeleteSender(req *http.Request) (future BackupsDeleteFuture, err error) {
205 var resp *http.Response
206 future.FutureAPI = &azure.Future{}
207 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
208 if err != nil {
209 return
210 }
211 var azf azure.Future
212 azf, err = azure.NewFutureFromResponse(resp)
213 future.FutureAPI = &azf
214 future.Result = future.result
215 return
216 }
217
218
219
220 func (client BackupsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
221 err = autorest.Respond(
222 resp,
223 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
224 autorest.ByClosing())
225 result.Response = resp
226 return
227 }
228
229
230
231
232
233
234
235 func (client BackupsClient) ListByDevice(ctx context.Context, deviceName string, resourceGroupName string, managerName string, filter string) (result BackupListPage, err error) {
236 if tracing.IsEnabled() {
237 ctx = tracing.StartSpan(ctx, fqdn+"/BackupsClient.ListByDevice")
238 defer func() {
239 sc := -1
240 if result.bl.Response.Response != nil {
241 sc = result.bl.Response.Response.StatusCode
242 }
243 tracing.EndSpan(ctx, sc, err)
244 }()
245 }
246 if err := validation.Validate([]validation.Validation{
247 {TargetValue: managerName,
248 Constraints: []validation.Constraint{{Target: "managerName", Name: validation.MaxLength, Rule: 50, Chain: nil},
249 {Target: "managerName", Name: validation.MinLength, Rule: 2, Chain: nil}}}}); err != nil {
250 return result, validation.NewError("storsimple.BackupsClient", "ListByDevice", err.Error())
251 }
252
253 result.fn = client.listByDeviceNextResults
254 req, err := client.ListByDevicePreparer(ctx, deviceName, resourceGroupName, managerName, filter)
255 if err != nil {
256 err = autorest.NewErrorWithError(err, "storsimple.BackupsClient", "ListByDevice", nil, "Failure preparing request")
257 return
258 }
259
260 resp, err := client.ListByDeviceSender(req)
261 if err != nil {
262 result.bl.Response = autorest.Response{Response: resp}
263 err = autorest.NewErrorWithError(err, "storsimple.BackupsClient", "ListByDevice", resp, "Failure sending request")
264 return
265 }
266
267 result.bl, err = client.ListByDeviceResponder(resp)
268 if err != nil {
269 err = autorest.NewErrorWithError(err, "storsimple.BackupsClient", "ListByDevice", resp, "Failure responding to request")
270 return
271 }
272 if result.bl.hasNextLink() && result.bl.IsEmpty() {
273 err = result.NextWithContext(ctx)
274 return
275 }
276
277 return
278 }
279
280
281 func (client BackupsClient) ListByDevicePreparer(ctx context.Context, deviceName string, resourceGroupName string, managerName string, filter string) (*http.Request, error) {
282 pathParameters := map[string]interface{}{
283 "deviceName": deviceName,
284 "managerName": managerName,
285 "resourceGroupName": resourceGroupName,
286 "subscriptionId": client.SubscriptionID,
287 }
288
289 const APIVersion = "2017-06-01"
290 queryParameters := map[string]interface{}{
291 "api-version": APIVersion,
292 }
293 if len(filter) > 0 {
294 queryParameters["$filter"] = autorest.Encode("query", filter)
295 }
296
297 preparer := autorest.CreatePreparer(
298 autorest.AsGet(),
299 autorest.WithBaseURL(client.BaseURI),
300 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backups", pathParameters),
301 autorest.WithQueryParameters(queryParameters))
302 return preparer.Prepare((&http.Request{}).WithContext(ctx))
303 }
304
305
306
307 func (client BackupsClient) ListByDeviceSender(req *http.Request) (*http.Response, error) {
308 return client.Send(req, azure.DoRetryWithRegistration(client.Client))
309 }
310
311
312
313 func (client BackupsClient) ListByDeviceResponder(resp *http.Response) (result BackupList, err error) {
314 err = autorest.Respond(
315 resp,
316 azure.WithErrorUnlessStatusCode(http.StatusOK),
317 autorest.ByUnmarshallingJSON(&result),
318 autorest.ByClosing())
319 result.Response = autorest.Response{Response: resp}
320 return
321 }
322
323
324 func (client BackupsClient) listByDeviceNextResults(ctx context.Context, lastResults BackupList) (result BackupList, err error) {
325 req, err := lastResults.backupListPreparer(ctx)
326 if err != nil {
327 return result, autorest.NewErrorWithError(err, "storsimple.BackupsClient", "listByDeviceNextResults", nil, "Failure preparing next results request")
328 }
329 if req == nil {
330 return
331 }
332 resp, err := client.ListByDeviceSender(req)
333 if err != nil {
334 result.Response = autorest.Response{Response: resp}
335 return result, autorest.NewErrorWithError(err, "storsimple.BackupsClient", "listByDeviceNextResults", resp, "Failure sending next results request")
336 }
337 result, err = client.ListByDeviceResponder(resp)
338 if err != nil {
339 err = autorest.NewErrorWithError(err, "storsimple.BackupsClient", "listByDeviceNextResults", resp, "Failure responding to next results request")
340 }
341 return
342 }
343
344
345 func (client BackupsClient) ListByDeviceComplete(ctx context.Context, deviceName string, resourceGroupName string, managerName string, filter string) (result BackupListIterator, err error) {
346 if tracing.IsEnabled() {
347 ctx = tracing.StartSpan(ctx, fqdn+"/BackupsClient.ListByDevice")
348 defer func() {
349 sc := -1
350 if result.Response().Response.Response != nil {
351 sc = result.page.Response().Response.Response.StatusCode
352 }
353 tracing.EndSpan(ctx, sc, err)
354 }()
355 }
356 result.page, err = client.ListByDevice(ctx, deviceName, resourceGroupName, managerName, filter)
357 return
358 }
359
360
361
362
363
364
365
366 func (client BackupsClient) Restore(ctx context.Context, deviceName string, backupName string, resourceGroupName string, managerName string) (result BackupsRestoreFuture, err error) {
367 if tracing.IsEnabled() {
368 ctx = tracing.StartSpan(ctx, fqdn+"/BackupsClient.Restore")
369 defer func() {
370 sc := -1
371 if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
372 sc = result.FutureAPI.Response().StatusCode
373 }
374 tracing.EndSpan(ctx, sc, err)
375 }()
376 }
377 if err := validation.Validate([]validation.Validation{
378 {TargetValue: managerName,
379 Constraints: []validation.Constraint{{Target: "managerName", Name: validation.MaxLength, Rule: 50, Chain: nil},
380 {Target: "managerName", Name: validation.MinLength, Rule: 2, Chain: nil}}}}); err != nil {
381 return result, validation.NewError("storsimple.BackupsClient", "Restore", err.Error())
382 }
383
384 req, err := client.RestorePreparer(ctx, deviceName, backupName, resourceGroupName, managerName)
385 if err != nil {
386 err = autorest.NewErrorWithError(err, "storsimple.BackupsClient", "Restore", nil, "Failure preparing request")
387 return
388 }
389
390 result, err = client.RestoreSender(req)
391 if err != nil {
392 err = autorest.NewErrorWithError(err, "storsimple.BackupsClient", "Restore", result.Response(), "Failure sending request")
393 return
394 }
395
396 return
397 }
398
399
400 func (client BackupsClient) RestorePreparer(ctx context.Context, deviceName string, backupName string, resourceGroupName string, managerName string) (*http.Request, error) {
401 pathParameters := map[string]interface{}{
402 "backupName": backupName,
403 "deviceName": deviceName,
404 "managerName": managerName,
405 "resourceGroupName": resourceGroupName,
406 "subscriptionId": client.SubscriptionID,
407 }
408
409 const APIVersion = "2017-06-01"
410 queryParameters := map[string]interface{}{
411 "api-version": APIVersion,
412 }
413
414 preparer := autorest.CreatePreparer(
415 autorest.AsPost(),
416 autorest.WithBaseURL(client.BaseURI),
417 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backups/{backupName}/restore", pathParameters),
418 autorest.WithQueryParameters(queryParameters))
419 return preparer.Prepare((&http.Request{}).WithContext(ctx))
420 }
421
422
423
424 func (client BackupsClient) RestoreSender(req *http.Request) (future BackupsRestoreFuture, err error) {
425 var resp *http.Response
426 future.FutureAPI = &azure.Future{}
427 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
428 if err != nil {
429 return
430 }
431 var azf azure.Future
432 azf, err = azure.NewFutureFromResponse(resp)
433 future.FutureAPI = &azf
434 future.Result = future.result
435 return
436 }
437
438
439
440 func (client BackupsClient) RestoreResponder(resp *http.Response) (result autorest.Response, err error) {
441 err = autorest.Respond(
442 resp,
443 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
444 autorest.ByClosing())
445 result.Response = resp
446 return
447 }
448
View as plain text