1// Package backup implements the Azure ARM Backup service API version . 2// 3// Open API 2.0 Specs for Azure RecoveryServices Backup service 4package backup 5 6// Copyright (c) Microsoft Corporation. All rights reserved. 7// Licensed under the MIT License. See License.txt in the project root for license information. 8// 9// Code generated by Microsoft (R) AutoRest Code Generator. 10// Changes may cause incorrect behavior and will be lost if the code is regenerated. 11 12import ( 13 "context" 14 "github.com/Azure/go-autorest/autorest" 15 "github.com/Azure/go-autorest/autorest/azure" 16 "github.com/Azure/go-autorest/autorest/validation" 17 "github.com/Azure/go-autorest/tracing" 18 "net/http" 19) 20 21const ( 22 // DefaultBaseURI is the default URI used for the service Backup 23 DefaultBaseURI = "https://management.azure.com" 24) 25 26// BaseClient is the base client for Backup. 27type BaseClient struct { 28 autorest.Client 29 BaseURI string 30 SubscriptionID string 31} 32 33// New creates an instance of the BaseClient client. 34func New(subscriptionID string) BaseClient { 35 return NewWithBaseURI(DefaultBaseURI, subscriptionID) 36} 37 38// NewWithBaseURI creates an instance of the BaseClient client using a custom endpoint. Use this when interacting with 39// an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). 40func NewWithBaseURI(baseURI string, subscriptionID string) BaseClient { 41 return BaseClient{ 42 Client: autorest.NewClientWithUserAgent(UserAgent()), 43 BaseURI: baseURI, 44 SubscriptionID: subscriptionID, 45 } 46} 47 48// BMSPrepareDataMove prepares source vault for Data Move operation 49// Parameters: 50// vaultName - the name of the recovery services vault. 51// resourceGroupName - the name of the resource group where the recovery services vault is present. 52// parameters - prepare data move request 53func (client BaseClient) BMSPrepareDataMove(ctx context.Context, vaultName string, resourceGroupName string, parameters PrepareDataMoveRequest) (result BMSPrepareDataMoveFuture, err error) { 54 if tracing.IsEnabled() { 55 ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.BMSPrepareDataMove") 56 defer func() { 57 sc := -1 58 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 59 sc = result.FutureAPI.Response().StatusCode 60 } 61 tracing.EndSpan(ctx, sc, err) 62 }() 63 } 64 if err := validation.Validate([]validation.Validation{ 65 {TargetValue: parameters, 66 Constraints: []validation.Constraint{{Target: "parameters.TargetResourceID", Name: validation.Null, Rule: true, Chain: nil}, 67 {Target: "parameters.TargetRegion", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { 68 return result, validation.NewError("backup.BaseClient", "BMSPrepareDataMove", err.Error()) 69 } 70 71 req, err := client.BMSPrepareDataMovePreparer(ctx, vaultName, resourceGroupName, parameters) 72 if err != nil { 73 err = autorest.NewErrorWithError(err, "backup.BaseClient", "BMSPrepareDataMove", nil, "Failure preparing request") 74 return 75 } 76 77 result, err = client.BMSPrepareDataMoveSender(req) 78 if err != nil { 79 err = autorest.NewErrorWithError(err, "backup.BaseClient", "BMSPrepareDataMove", nil, "Failure sending request") 80 return 81 } 82 83 return 84} 85 86// BMSPrepareDataMovePreparer prepares the BMSPrepareDataMove request. 87func (client BaseClient) BMSPrepareDataMovePreparer(ctx context.Context, vaultName string, resourceGroupName string, parameters PrepareDataMoveRequest) (*http.Request, error) { 88 pathParameters := map[string]interface{}{ 89 "resourceGroupName": autorest.Encode("path", resourceGroupName), 90 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 91 "vaultName": autorest.Encode("path", vaultName), 92 } 93 94 const APIVersion = "2021-01-01" 95 queryParameters := map[string]interface{}{ 96 "api-version": APIVersion, 97 } 98 99 preparer := autorest.CreatePreparer( 100 autorest.AsContentType("application/json; charset=utf-8"), 101 autorest.AsPost(), 102 autorest.WithBaseURL(client.BaseURI), 103 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupstorageconfig/vaultstorageconfig/prepareDataMove", pathParameters), 104 autorest.WithJSON(parameters), 105 autorest.WithQueryParameters(queryParameters)) 106 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 107} 108 109// BMSPrepareDataMoveSender sends the BMSPrepareDataMove request. The method will close the 110// http.Response Body if it receives an error. 111func (client BaseClient) BMSPrepareDataMoveSender(req *http.Request) (future BMSPrepareDataMoveFuture, err error) { 112 var resp *http.Response 113 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 114 if err != nil { 115 return 116 } 117 var azf azure.Future 118 azf, err = azure.NewFutureFromResponse(resp) 119 future.FutureAPI = &azf 120 future.Result = future.result 121 return 122} 123 124// BMSPrepareDataMoveResponder handles the response to the BMSPrepareDataMove request. The method always 125// closes the http.Response Body. 126func (client BaseClient) BMSPrepareDataMoveResponder(resp *http.Response) (result autorest.Response, err error) { 127 err = autorest.Respond( 128 resp, 129 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), 130 autorest.ByClosing()) 131 result.Response = resp 132 return 133} 134 135// BMSTriggerDataMove triggers Data Move Operation on target vault 136// Parameters: 137// vaultName - the name of the recovery services vault. 138// resourceGroupName - the name of the resource group where the recovery services vault is present. 139// parameters - trigger data move request 140func (client BaseClient) BMSTriggerDataMove(ctx context.Context, vaultName string, resourceGroupName string, parameters TriggerDataMoveRequest) (result BMSTriggerDataMoveFuture, err error) { 141 if tracing.IsEnabled() { 142 ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.BMSTriggerDataMove") 143 defer func() { 144 sc := -1 145 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 146 sc = result.FutureAPI.Response().StatusCode 147 } 148 tracing.EndSpan(ctx, sc, err) 149 }() 150 } 151 if err := validation.Validate([]validation.Validation{ 152 {TargetValue: parameters, 153 Constraints: []validation.Constraint{{Target: "parameters.SourceResourceID", Name: validation.Null, Rule: true, Chain: nil}, 154 {Target: "parameters.SourceRegion", Name: validation.Null, Rule: true, Chain: nil}, 155 {Target: "parameters.CorrelationID", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { 156 return result, validation.NewError("backup.BaseClient", "BMSTriggerDataMove", err.Error()) 157 } 158 159 req, err := client.BMSTriggerDataMovePreparer(ctx, vaultName, resourceGroupName, parameters) 160 if err != nil { 161 err = autorest.NewErrorWithError(err, "backup.BaseClient", "BMSTriggerDataMove", nil, "Failure preparing request") 162 return 163 } 164 165 result, err = client.BMSTriggerDataMoveSender(req) 166 if err != nil { 167 err = autorest.NewErrorWithError(err, "backup.BaseClient", "BMSTriggerDataMove", nil, "Failure sending request") 168 return 169 } 170 171 return 172} 173 174// BMSTriggerDataMovePreparer prepares the BMSTriggerDataMove request. 175func (client BaseClient) BMSTriggerDataMovePreparer(ctx context.Context, vaultName string, resourceGroupName string, parameters TriggerDataMoveRequest) (*http.Request, error) { 176 pathParameters := map[string]interface{}{ 177 "resourceGroupName": autorest.Encode("path", resourceGroupName), 178 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 179 "vaultName": autorest.Encode("path", vaultName), 180 } 181 182 const APIVersion = "2021-01-01" 183 queryParameters := map[string]interface{}{ 184 "api-version": APIVersion, 185 } 186 187 preparer := autorest.CreatePreparer( 188 autorest.AsContentType("application/json; charset=utf-8"), 189 autorest.AsPost(), 190 autorest.WithBaseURL(client.BaseURI), 191 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupstorageconfig/vaultstorageconfig/triggerDataMove", pathParameters), 192 autorest.WithJSON(parameters), 193 autorest.WithQueryParameters(queryParameters)) 194 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 195} 196 197// BMSTriggerDataMoveSender sends the BMSTriggerDataMove request. The method will close the 198// http.Response Body if it receives an error. 199func (client BaseClient) BMSTriggerDataMoveSender(req *http.Request) (future BMSTriggerDataMoveFuture, err error) { 200 var resp *http.Response 201 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 202 if err != nil { 203 return 204 } 205 var azf azure.Future 206 azf, err = azure.NewFutureFromResponse(resp) 207 future.FutureAPI = &azf 208 future.Result = future.result 209 return 210} 211 212// BMSTriggerDataMoveResponder handles the response to the BMSTriggerDataMove request. The method always 213// closes the http.Response Body. 214func (client BaseClient) BMSTriggerDataMoveResponder(resp *http.Response) (result autorest.Response, err error) { 215 err = autorest.Respond( 216 resp, 217 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), 218 autorest.ByClosing()) 219 result.Response = resp 220 return 221} 222 223// GetOperationStatus fetches operation status for data move operation on vault 224// Parameters: 225// vaultName - the name of the recovery services vault. 226// resourceGroupName - the name of the resource group where the recovery services vault is present. 227func (client BaseClient) GetOperationStatus(ctx context.Context, vaultName string, resourceGroupName string, operationID string) (result OperationStatus, err error) { 228 if tracing.IsEnabled() { 229 ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.GetOperationStatus") 230 defer func() { 231 sc := -1 232 if result.Response.Response != nil { 233 sc = result.Response.Response.StatusCode 234 } 235 tracing.EndSpan(ctx, sc, err) 236 }() 237 } 238 req, err := client.GetOperationStatusPreparer(ctx, vaultName, resourceGroupName, operationID) 239 if err != nil { 240 err = autorest.NewErrorWithError(err, "backup.BaseClient", "GetOperationStatus", nil, "Failure preparing request") 241 return 242 } 243 244 resp, err := client.GetOperationStatusSender(req) 245 if err != nil { 246 result.Response = autorest.Response{Response: resp} 247 err = autorest.NewErrorWithError(err, "backup.BaseClient", "GetOperationStatus", resp, "Failure sending request") 248 return 249 } 250 251 result, err = client.GetOperationStatusResponder(resp) 252 if err != nil { 253 err = autorest.NewErrorWithError(err, "backup.BaseClient", "GetOperationStatus", resp, "Failure responding to request") 254 return 255 } 256 257 return 258} 259 260// GetOperationStatusPreparer prepares the GetOperationStatus request. 261func (client BaseClient) GetOperationStatusPreparer(ctx context.Context, vaultName string, resourceGroupName string, operationID string) (*http.Request, error) { 262 pathParameters := map[string]interface{}{ 263 "operationId": autorest.Encode("path", operationID), 264 "resourceGroupName": autorest.Encode("path", resourceGroupName), 265 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 266 "vaultName": autorest.Encode("path", vaultName), 267 } 268 269 const APIVersion = "2021-01-01" 270 queryParameters := map[string]interface{}{ 271 "api-version": APIVersion, 272 } 273 274 preparer := autorest.CreatePreparer( 275 autorest.AsGet(), 276 autorest.WithBaseURL(client.BaseURI), 277 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupstorageconfig/vaultstorageconfig/operationStatus/{operationId}", pathParameters), 278 autorest.WithQueryParameters(queryParameters)) 279 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 280} 281 282// GetOperationStatusSender sends the GetOperationStatus request. The method will close the 283// http.Response Body if it receives an error. 284func (client BaseClient) GetOperationStatusSender(req *http.Request) (*http.Response, error) { 285 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 286} 287 288// GetOperationStatusResponder handles the response to the GetOperationStatus request. The method always 289// closes the http.Response Body. 290func (client BaseClient) GetOperationStatusResponder(resp *http.Response) (result OperationStatus, err error) { 291 err = autorest.Respond( 292 resp, 293 azure.WithErrorUnlessStatusCode(http.StatusOK), 294 autorest.ByUnmarshallingJSON(&result), 295 autorest.ByClosing()) 296 result.Response = autorest.Response{Response: resp} 297 return 298} 299 300// MoveRecoveryPoint sends the move recovery point request. 301// Parameters: 302// vaultName - the name of the recovery services vault. 303// resourceGroupName - the name of the resource group where the recovery services vault is present. 304// parameters - move Resource Across Tiers Request 305func (client BaseClient) MoveRecoveryPoint(ctx context.Context, vaultName string, resourceGroupName string, fabricName string, containerName string, protectedItemName string, recoveryPointID string, parameters MoveRPAcrossTiersRequest) (result MoveRecoveryPointFuture, err error) { 306 if tracing.IsEnabled() { 307 ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.MoveRecoveryPoint") 308 defer func() { 309 sc := -1 310 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 311 sc = result.FutureAPI.Response().StatusCode 312 } 313 tracing.EndSpan(ctx, sc, err) 314 }() 315 } 316 req, err := client.MoveRecoveryPointPreparer(ctx, vaultName, resourceGroupName, fabricName, containerName, protectedItemName, recoveryPointID, parameters) 317 if err != nil { 318 err = autorest.NewErrorWithError(err, "backup.BaseClient", "MoveRecoveryPoint", nil, "Failure preparing request") 319 return 320 } 321 322 result, err = client.MoveRecoveryPointSender(req) 323 if err != nil { 324 err = autorest.NewErrorWithError(err, "backup.BaseClient", "MoveRecoveryPoint", nil, "Failure sending request") 325 return 326 } 327 328 return 329} 330 331// MoveRecoveryPointPreparer prepares the MoveRecoveryPoint request. 332func (client BaseClient) MoveRecoveryPointPreparer(ctx context.Context, vaultName string, resourceGroupName string, fabricName string, containerName string, protectedItemName string, recoveryPointID string, parameters MoveRPAcrossTiersRequest) (*http.Request, error) { 333 pathParameters := map[string]interface{}{ 334 "containerName": autorest.Encode("path", containerName), 335 "fabricName": autorest.Encode("path", fabricName), 336 "protectedItemName": autorest.Encode("path", protectedItemName), 337 "recoveryPointId": autorest.Encode("path", recoveryPointID), 338 "resourceGroupName": autorest.Encode("path", resourceGroupName), 339 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 340 "vaultName": autorest.Encode("path", vaultName), 341 } 342 343 const APIVersion = "2021-01-01" 344 queryParameters := map[string]interface{}{ 345 "api-version": APIVersion, 346 } 347 348 preparer := autorest.CreatePreparer( 349 autorest.AsContentType("application/json; charset=utf-8"), 350 autorest.AsPost(), 351 autorest.WithBaseURL(client.BaseURI), 352 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints/{recoveryPointId}/move", pathParameters), 353 autorest.WithJSON(parameters), 354 autorest.WithQueryParameters(queryParameters)) 355 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 356} 357 358// MoveRecoveryPointSender sends the MoveRecoveryPoint request. The method will close the 359// http.Response Body if it receives an error. 360func (client BaseClient) MoveRecoveryPointSender(req *http.Request) (future MoveRecoveryPointFuture, err error) { 361 var resp *http.Response 362 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 363 if err != nil { 364 return 365 } 366 var azf azure.Future 367 azf, err = azure.NewFutureFromResponse(resp) 368 future.FutureAPI = &azf 369 future.Result = future.result 370 return 371} 372 373// MoveRecoveryPointResponder handles the response to the MoveRecoveryPoint request. The method always 374// closes the http.Response Body. 375func (client BaseClient) MoveRecoveryPointResponder(resp *http.Response) (result autorest.Response, err error) { 376 err = autorest.Respond( 377 resp, 378 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), 379 autorest.ByClosing()) 380 result.Response = resp 381 return 382} 383