...
1 package backup
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/tracing"
14 "net/http"
15 )
16
17
18 type CrossRegionRestoreClient struct {
19 BaseClient
20 }
21
22
23 func NewCrossRegionRestoreClient(subscriptionID string) CrossRegionRestoreClient {
24 return NewCrossRegionRestoreClientWithBaseURI(DefaultBaseURI, subscriptionID)
25 }
26
27
28
29
30 func NewCrossRegionRestoreClientWithBaseURI(baseURI string, subscriptionID string) CrossRegionRestoreClient {
31 return CrossRegionRestoreClient{NewWithBaseURI(baseURI, subscriptionID)}
32 }
33
34
35
36
37
38 func (client CrossRegionRestoreClient) Trigger(ctx context.Context, azureRegion string, parameters CrossRegionRestoreRequest) (result CrossRegionRestoreTriggerFuture, err error) {
39 if tracing.IsEnabled() {
40 ctx = tracing.StartSpan(ctx, fqdn+"/CrossRegionRestoreClient.Trigger")
41 defer func() {
42 sc := -1
43 if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
44 sc = result.FutureAPI.Response().StatusCode
45 }
46 tracing.EndSpan(ctx, sc, err)
47 }()
48 }
49 req, err := client.TriggerPreparer(ctx, azureRegion, parameters)
50 if err != nil {
51 err = autorest.NewErrorWithError(err, "backup.CrossRegionRestoreClient", "Trigger", nil, "Failure preparing request")
52 return
53 }
54
55 result, err = client.TriggerSender(req)
56 if err != nil {
57 err = autorest.NewErrorWithError(err, "backup.CrossRegionRestoreClient", "Trigger", result.Response(), "Failure sending request")
58 return
59 }
60
61 return
62 }
63
64
65 func (client CrossRegionRestoreClient) TriggerPreparer(ctx context.Context, azureRegion string, parameters CrossRegionRestoreRequest) (*http.Request, error) {
66 pathParameters := map[string]interface{}{
67 "azureRegion": autorest.Encode("path", azureRegion),
68 "subscriptionId": autorest.Encode("path", client.SubscriptionID),
69 }
70
71 const APIVersion = "2018-12-20"
72 queryParameters := map[string]interface{}{
73 "api-version": APIVersion,
74 }
75
76 preparer := autorest.CreatePreparer(
77 autorest.AsContentType("application/json; charset=utf-8"),
78 autorest.AsPost(),
79 autorest.WithBaseURL(client.BaseURI),
80 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/locations/{azureRegion}/backupCrossRegionRestore", pathParameters),
81 autorest.WithJSON(parameters),
82 autorest.WithQueryParameters(queryParameters))
83 return preparer.Prepare((&http.Request{}).WithContext(ctx))
84 }
85
86
87
88 func (client CrossRegionRestoreClient) TriggerSender(req *http.Request) (future CrossRegionRestoreTriggerFuture, err error) {
89 var resp *http.Response
90 future.FutureAPI = &azure.Future{}
91 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
92 if err != nil {
93 return
94 }
95 var azf azure.Future
96 azf, err = azure.NewFutureFromResponse(resp)
97 future.FutureAPI = &azf
98 future.Result = future.result
99 return
100 }
101
102
103
104 func (client CrossRegionRestoreClient) TriggerResponder(resp *http.Response) (result autorest.Response, err error) {
105 err = autorest.Respond(
106 resp,
107 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
108 autorest.ByClosing())
109 result.Response = resp
110 return
111 }
112
View as plain text