1package dataprotection 2 3// Copyright (c) Microsoft Corporation. All rights reserved. 4// Licensed under the MIT License. See License.txt in the project root for license information. 5// 6// Code generated by Microsoft (R) AutoRest Code Generator. 7// Changes may cause incorrect behavior and will be lost if the code is regenerated. 8 9import ( 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// BackupInstancesClient is the open API 2.0 Specs for Azure Data Protection service 19type BackupInstancesClient struct { 20 BaseClient 21} 22 23// NewBackupInstancesClient creates an instance of the BackupInstancesClient client. 24func NewBackupInstancesClient(subscriptionID string) BackupInstancesClient { 25 return NewBackupInstancesClientWithBaseURI(DefaultBaseURI, subscriptionID) 26} 27 28// NewBackupInstancesClientWithBaseURI creates an instance of the BackupInstancesClient client using a custom endpoint. 29// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). 30func NewBackupInstancesClientWithBaseURI(baseURI string, subscriptionID string) BackupInstancesClient { 31 return BackupInstancesClient{NewWithBaseURI(baseURI, subscriptionID)} 32} 33 34// AdhocBackup trigger adhoc backup 35// Parameters: 36// vaultName - the name of the backup vault. 37// resourceGroupName - the name of the resource group where the backup vault is present. 38// backupInstanceName - the name of the backup instance 39// parameters - request body for operation 40func (client BackupInstancesClient) AdhocBackup(ctx context.Context, vaultName string, resourceGroupName string, backupInstanceName string, parameters TriggerBackupRequest) (result BackupInstancesAdhocBackupFuture, err error) { 41 if tracing.IsEnabled() { 42 ctx = tracing.StartSpan(ctx, fqdn+"/BackupInstancesClient.AdhocBackup") 43 defer func() { 44 sc := -1 45 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 46 sc = result.FutureAPI.Response().StatusCode 47 } 48 tracing.EndSpan(ctx, sc, err) 49 }() 50 } 51 if err := validation.Validate([]validation.Validation{ 52 {TargetValue: parameters, 53 Constraints: []validation.Constraint{{Target: "parameters.BackupRuleOptions", Name: validation.Null, Rule: true, 54 Chain: []validation.Constraint{{Target: "parameters.BackupRuleOptions.RuleName", Name: validation.Null, Rule: true, Chain: nil}, 55 {Target: "parameters.BackupRuleOptions.TriggerOption", Name: validation.Null, Rule: true, Chain: nil}, 56 }}}}}); err != nil { 57 return result, validation.NewError("dataprotection.BackupInstancesClient", "AdhocBackup", err.Error()) 58 } 59 60 req, err := client.AdhocBackupPreparer(ctx, vaultName, resourceGroupName, backupInstanceName, parameters) 61 if err != nil { 62 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "AdhocBackup", nil, "Failure preparing request") 63 return 64 } 65 66 result, err = client.AdhocBackupSender(req) 67 if err != nil { 68 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "AdhocBackup", nil, "Failure sending request") 69 return 70 } 71 72 return 73} 74 75// AdhocBackupPreparer prepares the AdhocBackup request. 76func (client BackupInstancesClient) AdhocBackupPreparer(ctx context.Context, vaultName string, resourceGroupName string, backupInstanceName string, parameters TriggerBackupRequest) (*http.Request, error) { 77 pathParameters := map[string]interface{}{ 78 "backupInstanceName": autorest.Encode("path", backupInstanceName), 79 "resourceGroupName": autorest.Encode("path", resourceGroupName), 80 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 81 "vaultName": autorest.Encode("path", vaultName), 82 } 83 84 const APIVersion = "2021-01-01" 85 queryParameters := map[string]interface{}{ 86 "api-version": APIVersion, 87 } 88 89 preparer := autorest.CreatePreparer( 90 autorest.AsContentType("application/json; charset=utf-8"), 91 autorest.AsPost(), 92 autorest.WithBaseURL(client.BaseURI), 93 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/backup", pathParameters), 94 autorest.WithJSON(parameters), 95 autorest.WithQueryParameters(queryParameters)) 96 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 97} 98 99// AdhocBackupSender sends the AdhocBackup request. The method will close the 100// http.Response Body if it receives an error. 101func (client BackupInstancesClient) AdhocBackupSender(req *http.Request) (future BackupInstancesAdhocBackupFuture, err error) { 102 var resp *http.Response 103 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 104 if err != nil { 105 return 106 } 107 var azf azure.Future 108 azf, err = azure.NewFutureFromResponse(resp) 109 future.FutureAPI = &azf 110 future.Result = future.result 111 return 112} 113 114// AdhocBackupResponder handles the response to the AdhocBackup request. The method always 115// closes the http.Response Body. 116func (client BackupInstancesClient) AdhocBackupResponder(resp *http.Response) (result OperationJobExtendedInfo, err error) { 117 err = autorest.Respond( 118 resp, 119 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), 120 autorest.ByUnmarshallingJSON(&result), 121 autorest.ByClosing()) 122 result.Response = autorest.Response{Response: resp} 123 return 124} 125 126// CreateOrUpdate create or update a backup instance in a backup vault 127// Parameters: 128// vaultName - the name of the backup vault. 129// resourceGroupName - the name of the resource group where the backup vault is present. 130// backupInstanceName - the name of the backup instance 131// parameters - request body for operation 132func (client BackupInstancesClient) CreateOrUpdate(ctx context.Context, vaultName string, resourceGroupName string, backupInstanceName string, parameters BackupInstanceResource) (result BackupInstancesCreateOrUpdateFuture, err error) { 133 if tracing.IsEnabled() { 134 ctx = tracing.StartSpan(ctx, fqdn+"/BackupInstancesClient.CreateOrUpdate") 135 defer func() { 136 sc := -1 137 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 138 sc = result.FutureAPI.Response().StatusCode 139 } 140 tracing.EndSpan(ctx, sc, err) 141 }() 142 } 143 if err := validation.Validate([]validation.Validation{ 144 {TargetValue: parameters, 145 Constraints: []validation.Constraint{{Target: "parameters.Properties", Name: validation.Null, Rule: false, 146 Chain: []validation.Constraint{{Target: "parameters.Properties.DataSourceInfo", Name: validation.Null, Rule: true, 147 Chain: []validation.Constraint{{Target: "parameters.Properties.DataSourceInfo.ResourceID", Name: validation.Null, Rule: true, Chain: nil}}}, 148 {Target: "parameters.Properties.DataSourceSetInfo", Name: validation.Null, Rule: false, 149 Chain: []validation.Constraint{{Target: "parameters.Properties.DataSourceSetInfo.ResourceID", Name: validation.Null, Rule: true, Chain: nil}}}, 150 {Target: "parameters.Properties.PolicyInfo", Name: validation.Null, Rule: true, 151 Chain: []validation.Constraint{{Target: "parameters.Properties.PolicyInfo.PolicyID", Name: validation.Null, Rule: true, Chain: nil}}}, 152 {Target: "parameters.Properties.ProtectionStatus", Name: validation.Null, Rule: false, 153 Chain: []validation.Constraint{{Target: "parameters.Properties.ProtectionStatus.ErrorDetails", Name: validation.Null, Rule: false, 154 Chain: []validation.Constraint{{Target: "parameters.Properties.ProtectionStatus.ErrorDetails.InnerError", Name: validation.Null, Rule: false, 155 Chain: []validation.Constraint{{Target: "parameters.Properties.ProtectionStatus.ErrorDetails.InnerError.EmbeddedInnerError", Name: validation.Null, Rule: false, Chain: nil}}}, 156 }}, 157 }}, 158 {Target: "parameters.Properties.ProtectionErrorDetails", Name: validation.Null, Rule: false, 159 Chain: []validation.Constraint{{Target: "parameters.Properties.ProtectionErrorDetails.InnerError", Name: validation.Null, Rule: false, 160 Chain: []validation.Constraint{{Target: "parameters.Properties.ProtectionErrorDetails.InnerError.EmbeddedInnerError", Name: validation.Null, Rule: false, Chain: nil}}}, 161 }}, 162 {Target: "parameters.Properties.ObjectType", Name: validation.Null, Rule: true, Chain: nil}, 163 }}}}}); err != nil { 164 return result, validation.NewError("dataprotection.BackupInstancesClient", "CreateOrUpdate", err.Error()) 165 } 166 167 req, err := client.CreateOrUpdatePreparer(ctx, vaultName, resourceGroupName, backupInstanceName, parameters) 168 if err != nil { 169 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "CreateOrUpdate", nil, "Failure preparing request") 170 return 171 } 172 173 result, err = client.CreateOrUpdateSender(req) 174 if err != nil { 175 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "CreateOrUpdate", nil, "Failure sending request") 176 return 177 } 178 179 return 180} 181 182// CreateOrUpdatePreparer prepares the CreateOrUpdate request. 183func (client BackupInstancesClient) CreateOrUpdatePreparer(ctx context.Context, vaultName string, resourceGroupName string, backupInstanceName string, parameters BackupInstanceResource) (*http.Request, error) { 184 pathParameters := map[string]interface{}{ 185 "backupInstanceName": autorest.Encode("path", backupInstanceName), 186 "resourceGroupName": autorest.Encode("path", resourceGroupName), 187 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 188 "vaultName": autorest.Encode("path", vaultName), 189 } 190 191 const APIVersion = "2021-01-01" 192 queryParameters := map[string]interface{}{ 193 "api-version": APIVersion, 194 } 195 196 preparer := autorest.CreatePreparer( 197 autorest.AsContentType("application/json; charset=utf-8"), 198 autorest.AsPut(), 199 autorest.WithBaseURL(client.BaseURI), 200 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}", pathParameters), 201 autorest.WithJSON(parameters), 202 autorest.WithQueryParameters(queryParameters)) 203 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 204} 205 206// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the 207// http.Response Body if it receives an error. 208func (client BackupInstancesClient) CreateOrUpdateSender(req *http.Request) (future BackupInstancesCreateOrUpdateFuture, err error) { 209 var resp *http.Response 210 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 211 if err != nil { 212 return 213 } 214 var azf azure.Future 215 azf, err = azure.NewFutureFromResponse(resp) 216 future.FutureAPI = &azf 217 future.Result = future.result 218 return 219} 220 221// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always 222// closes the http.Response Body. 223func (client BackupInstancesClient) CreateOrUpdateResponder(resp *http.Response) (result BackupInstanceResource, err error) { 224 err = autorest.Respond( 225 resp, 226 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), 227 autorest.ByUnmarshallingJSON(&result), 228 autorest.ByClosing()) 229 result.Response = autorest.Response{Response: resp} 230 return 231} 232 233// Delete delete a backup instance in a backup vault 234// Parameters: 235// vaultName - the name of the backup vault. 236// resourceGroupName - the name of the resource group where the backup vault is present. 237// backupInstanceName - the name of the backup instance 238func (client BackupInstancesClient) Delete(ctx context.Context, vaultName string, resourceGroupName string, backupInstanceName string) (result BackupInstancesDeleteFuture, err error) { 239 if tracing.IsEnabled() { 240 ctx = tracing.StartSpan(ctx, fqdn+"/BackupInstancesClient.Delete") 241 defer func() { 242 sc := -1 243 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 244 sc = result.FutureAPI.Response().StatusCode 245 } 246 tracing.EndSpan(ctx, sc, err) 247 }() 248 } 249 req, err := client.DeletePreparer(ctx, vaultName, resourceGroupName, backupInstanceName) 250 if err != nil { 251 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "Delete", nil, "Failure preparing request") 252 return 253 } 254 255 result, err = client.DeleteSender(req) 256 if err != nil { 257 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "Delete", nil, "Failure sending request") 258 return 259 } 260 261 return 262} 263 264// DeletePreparer prepares the Delete request. 265func (client BackupInstancesClient) DeletePreparer(ctx context.Context, vaultName string, resourceGroupName string, backupInstanceName string) (*http.Request, error) { 266 pathParameters := map[string]interface{}{ 267 "backupInstanceName": autorest.Encode("path", backupInstanceName), 268 "resourceGroupName": autorest.Encode("path", resourceGroupName), 269 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 270 "vaultName": autorest.Encode("path", vaultName), 271 } 272 273 const APIVersion = "2021-01-01" 274 queryParameters := map[string]interface{}{ 275 "api-version": APIVersion, 276 } 277 278 preparer := autorest.CreatePreparer( 279 autorest.AsDelete(), 280 autorest.WithBaseURL(client.BaseURI), 281 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}", pathParameters), 282 autorest.WithQueryParameters(queryParameters)) 283 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 284} 285 286// DeleteSender sends the Delete request. The method will close the 287// http.Response Body if it receives an error. 288func (client BackupInstancesClient) DeleteSender(req *http.Request) (future BackupInstancesDeleteFuture, err error) { 289 var resp *http.Response 290 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 291 if err != nil { 292 return 293 } 294 var azf azure.Future 295 azf, err = azure.NewFutureFromResponse(resp) 296 future.FutureAPI = &azf 297 future.Result = future.result 298 return 299} 300 301// DeleteResponder handles the response to the Delete request. The method always 302// closes the http.Response Body. 303func (client BackupInstancesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { 304 err = autorest.Respond( 305 resp, 306 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), 307 autorest.ByClosing()) 308 result.Response = resp 309 return 310} 311 312// Get gets a backup instance with name in a backup vault 313// Parameters: 314// vaultName - the name of the backup vault. 315// resourceGroupName - the name of the resource group where the backup vault is present. 316// backupInstanceName - the name of the backup instance 317func (client BackupInstancesClient) Get(ctx context.Context, vaultName string, resourceGroupName string, backupInstanceName string) (result BackupInstanceResource, err error) { 318 if tracing.IsEnabled() { 319 ctx = tracing.StartSpan(ctx, fqdn+"/BackupInstancesClient.Get") 320 defer func() { 321 sc := -1 322 if result.Response.Response != nil { 323 sc = result.Response.Response.StatusCode 324 } 325 tracing.EndSpan(ctx, sc, err) 326 }() 327 } 328 req, err := client.GetPreparer(ctx, vaultName, resourceGroupName, backupInstanceName) 329 if err != nil { 330 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "Get", nil, "Failure preparing request") 331 return 332 } 333 334 resp, err := client.GetSender(req) 335 if err != nil { 336 result.Response = autorest.Response{Response: resp} 337 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "Get", resp, "Failure sending request") 338 return 339 } 340 341 result, err = client.GetResponder(resp) 342 if err != nil { 343 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "Get", resp, "Failure responding to request") 344 return 345 } 346 347 return 348} 349 350// GetPreparer prepares the Get request. 351func (client BackupInstancesClient) GetPreparer(ctx context.Context, vaultName string, resourceGroupName string, backupInstanceName string) (*http.Request, error) { 352 pathParameters := map[string]interface{}{ 353 "backupInstanceName": autorest.Encode("path", backupInstanceName), 354 "resourceGroupName": autorest.Encode("path", resourceGroupName), 355 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 356 "vaultName": autorest.Encode("path", vaultName), 357 } 358 359 const APIVersion = "2021-01-01" 360 queryParameters := map[string]interface{}{ 361 "api-version": APIVersion, 362 } 363 364 preparer := autorest.CreatePreparer( 365 autorest.AsGet(), 366 autorest.WithBaseURL(client.BaseURI), 367 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}", pathParameters), 368 autorest.WithQueryParameters(queryParameters)) 369 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 370} 371 372// GetSender sends the Get request. The method will close the 373// http.Response Body if it receives an error. 374func (client BackupInstancesClient) GetSender(req *http.Request) (*http.Response, error) { 375 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 376} 377 378// GetResponder handles the response to the Get request. The method always 379// closes the http.Response Body. 380func (client BackupInstancesClient) GetResponder(resp *http.Response) (result BackupInstanceResource, err error) { 381 err = autorest.Respond( 382 resp, 383 azure.WithErrorUnlessStatusCode(http.StatusOK), 384 autorest.ByUnmarshallingJSON(&result), 385 autorest.ByClosing()) 386 result.Response = autorest.Response{Response: resp} 387 return 388} 389 390// List gets a backup instances belonging to a backup vault 391// Parameters: 392// vaultName - the name of the backup vault. 393// resourceGroupName - the name of the resource group where the backup vault is present. 394func (client BackupInstancesClient) List(ctx context.Context, vaultName string, resourceGroupName string) (result BackupInstanceResourceListPage, err error) { 395 if tracing.IsEnabled() { 396 ctx = tracing.StartSpan(ctx, fqdn+"/BackupInstancesClient.List") 397 defer func() { 398 sc := -1 399 if result.birl.Response.Response != nil { 400 sc = result.birl.Response.Response.StatusCode 401 } 402 tracing.EndSpan(ctx, sc, err) 403 }() 404 } 405 result.fn = client.listNextResults 406 req, err := client.ListPreparer(ctx, vaultName, resourceGroupName) 407 if err != nil { 408 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "List", nil, "Failure preparing request") 409 return 410 } 411 412 resp, err := client.ListSender(req) 413 if err != nil { 414 result.birl.Response = autorest.Response{Response: resp} 415 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "List", resp, "Failure sending request") 416 return 417 } 418 419 result.birl, err = client.ListResponder(resp) 420 if err != nil { 421 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "List", resp, "Failure responding to request") 422 return 423 } 424 if result.birl.hasNextLink() && result.birl.IsEmpty() { 425 err = result.NextWithContext(ctx) 426 return 427 } 428 429 return 430} 431 432// ListPreparer prepares the List request. 433func (client BackupInstancesClient) ListPreparer(ctx context.Context, vaultName string, resourceGroupName string) (*http.Request, error) { 434 pathParameters := map[string]interface{}{ 435 "resourceGroupName": autorest.Encode("path", resourceGroupName), 436 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 437 "vaultName": autorest.Encode("path", vaultName), 438 } 439 440 const APIVersion = "2021-01-01" 441 queryParameters := map[string]interface{}{ 442 "api-version": APIVersion, 443 } 444 445 preparer := autorest.CreatePreparer( 446 autorest.AsGet(), 447 autorest.WithBaseURL(client.BaseURI), 448 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances", pathParameters), 449 autorest.WithQueryParameters(queryParameters)) 450 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 451} 452 453// ListSender sends the List request. The method will close the 454// http.Response Body if it receives an error. 455func (client BackupInstancesClient) ListSender(req *http.Request) (*http.Response, error) { 456 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 457} 458 459// ListResponder handles the response to the List request. The method always 460// closes the http.Response Body. 461func (client BackupInstancesClient) ListResponder(resp *http.Response) (result BackupInstanceResourceList, err error) { 462 err = autorest.Respond( 463 resp, 464 azure.WithErrorUnlessStatusCode(http.StatusOK), 465 autorest.ByUnmarshallingJSON(&result), 466 autorest.ByClosing()) 467 result.Response = autorest.Response{Response: resp} 468 return 469} 470 471// listNextResults retrieves the next set of results, if any. 472func (client BackupInstancesClient) listNextResults(ctx context.Context, lastResults BackupInstanceResourceList) (result BackupInstanceResourceList, err error) { 473 req, err := lastResults.backupInstanceResourceListPreparer(ctx) 474 if err != nil { 475 return result, autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "listNextResults", nil, "Failure preparing next results request") 476 } 477 if req == nil { 478 return 479 } 480 resp, err := client.ListSender(req) 481 if err != nil { 482 result.Response = autorest.Response{Response: resp} 483 return result, autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "listNextResults", resp, "Failure sending next results request") 484 } 485 result, err = client.ListResponder(resp) 486 if err != nil { 487 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "listNextResults", resp, "Failure responding to next results request") 488 } 489 return 490} 491 492// ListComplete enumerates all values, automatically crossing page boundaries as required. 493func (client BackupInstancesClient) ListComplete(ctx context.Context, vaultName string, resourceGroupName string) (result BackupInstanceResourceListIterator, err error) { 494 if tracing.IsEnabled() { 495 ctx = tracing.StartSpan(ctx, fqdn+"/BackupInstancesClient.List") 496 defer func() { 497 sc := -1 498 if result.Response().Response.Response != nil { 499 sc = result.page.Response().Response.Response.StatusCode 500 } 501 tracing.EndSpan(ctx, sc, err) 502 }() 503 } 504 result.page, err = client.List(ctx, vaultName, resourceGroupName) 505 return 506} 507 508// TriggerRehydrate rehydrate recovery point for restore for a BackupInstance 509// Parameters: 510// resourceGroupName - the name of the resource group where the backup vault is present. 511// vaultName - the name of the backup vault. 512// parameters - request body for operation 513func (client BackupInstancesClient) TriggerRehydrate(ctx context.Context, resourceGroupName string, vaultName string, parameters AzureBackupRehydrationRequest, backupInstanceName string) (result BackupInstancesTriggerRehydrateFuture, err error) { 514 if tracing.IsEnabled() { 515 ctx = tracing.StartSpan(ctx, fqdn+"/BackupInstancesClient.TriggerRehydrate") 516 defer func() { 517 sc := -1 518 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 519 sc = result.FutureAPI.Response().StatusCode 520 } 521 tracing.EndSpan(ctx, sc, err) 522 }() 523 } 524 if err := validation.Validate([]validation.Validation{ 525 {TargetValue: parameters, 526 Constraints: []validation.Constraint{{Target: "parameters.RecoveryPointID", Name: validation.Null, Rule: true, Chain: nil}, 527 {Target: "parameters.RehydrationRetentionDuration", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { 528 return result, validation.NewError("dataprotection.BackupInstancesClient", "TriggerRehydrate", err.Error()) 529 } 530 531 req, err := client.TriggerRehydratePreparer(ctx, resourceGroupName, vaultName, parameters, backupInstanceName) 532 if err != nil { 533 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "TriggerRehydrate", nil, "Failure preparing request") 534 return 535 } 536 537 result, err = client.TriggerRehydrateSender(req) 538 if err != nil { 539 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "TriggerRehydrate", nil, "Failure sending request") 540 return 541 } 542 543 return 544} 545 546// TriggerRehydratePreparer prepares the TriggerRehydrate request. 547func (client BackupInstancesClient) TriggerRehydratePreparer(ctx context.Context, resourceGroupName string, vaultName string, parameters AzureBackupRehydrationRequest, backupInstanceName string) (*http.Request, error) { 548 pathParameters := map[string]interface{}{ 549 "backupInstanceName": autorest.Encode("path", backupInstanceName), 550 "resourceGroupName": autorest.Encode("path", resourceGroupName), 551 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 552 "vaultName": autorest.Encode("path", vaultName), 553 } 554 555 const APIVersion = "2021-01-01" 556 queryParameters := map[string]interface{}{ 557 "api-version": APIVersion, 558 } 559 560 preparer := autorest.CreatePreparer( 561 autorest.AsContentType("application/json; charset=utf-8"), 562 autorest.AsPost(), 563 autorest.WithBaseURL(client.BaseURI), 564 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/rehydrate", pathParameters), 565 autorest.WithJSON(parameters), 566 autorest.WithQueryParameters(queryParameters)) 567 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 568} 569 570// TriggerRehydrateSender sends the TriggerRehydrate request. The method will close the 571// http.Response Body if it receives an error. 572func (client BackupInstancesClient) TriggerRehydrateSender(req *http.Request) (future BackupInstancesTriggerRehydrateFuture, err error) { 573 var resp *http.Response 574 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 575 if err != nil { 576 return 577 } 578 var azf azure.Future 579 azf, err = azure.NewFutureFromResponse(resp) 580 future.FutureAPI = &azf 581 future.Result = future.result 582 return 583} 584 585// TriggerRehydrateResponder handles the response to the TriggerRehydrate request. The method always 586// closes the http.Response Body. 587func (client BackupInstancesClient) TriggerRehydrateResponder(resp *http.Response) (result autorest.Response, err error) { 588 err = autorest.Respond( 589 resp, 590 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), 591 autorest.ByClosing()) 592 result.Response = resp 593 return 594} 595 596// TriggerRestore triggers restore for a BackupInstance 597// Parameters: 598// vaultName - the name of the backup vault. 599// resourceGroupName - the name of the resource group where the backup vault is present. 600// backupInstanceName - the name of the backup instance 601// parameters - request body for operation 602func (client BackupInstancesClient) TriggerRestore(ctx context.Context, vaultName string, resourceGroupName string, backupInstanceName string, parameters BasicAzureBackupRestoreRequest) (result BackupInstancesTriggerRestoreFuture, err error) { 603 if tracing.IsEnabled() { 604 ctx = tracing.StartSpan(ctx, fqdn+"/BackupInstancesClient.TriggerRestore") 605 defer func() { 606 sc := -1 607 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 608 sc = result.FutureAPI.Response().StatusCode 609 } 610 tracing.EndSpan(ctx, sc, err) 611 }() 612 } 613 req, err := client.TriggerRestorePreparer(ctx, vaultName, resourceGroupName, backupInstanceName, parameters) 614 if err != nil { 615 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "TriggerRestore", nil, "Failure preparing request") 616 return 617 } 618 619 result, err = client.TriggerRestoreSender(req) 620 if err != nil { 621 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "TriggerRestore", nil, "Failure sending request") 622 return 623 } 624 625 return 626} 627 628// TriggerRestorePreparer prepares the TriggerRestore request. 629func (client BackupInstancesClient) TriggerRestorePreparer(ctx context.Context, vaultName string, resourceGroupName string, backupInstanceName string, parameters BasicAzureBackupRestoreRequest) (*http.Request, error) { 630 pathParameters := map[string]interface{}{ 631 "backupInstanceName": autorest.Encode("path", backupInstanceName), 632 "resourceGroupName": autorest.Encode("path", resourceGroupName), 633 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 634 "vaultName": autorest.Encode("path", vaultName), 635 } 636 637 const APIVersion = "2021-01-01" 638 queryParameters := map[string]interface{}{ 639 "api-version": APIVersion, 640 } 641 642 preparer := autorest.CreatePreparer( 643 autorest.AsContentType("application/json; charset=utf-8"), 644 autorest.AsPost(), 645 autorest.WithBaseURL(client.BaseURI), 646 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/restore", pathParameters), 647 autorest.WithJSON(parameters), 648 autorest.WithQueryParameters(queryParameters)) 649 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 650} 651 652// TriggerRestoreSender sends the TriggerRestore request. The method will close the 653// http.Response Body if it receives an error. 654func (client BackupInstancesClient) TriggerRestoreSender(req *http.Request) (future BackupInstancesTriggerRestoreFuture, err error) { 655 var resp *http.Response 656 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 657 if err != nil { 658 return 659 } 660 var azf azure.Future 661 azf, err = azure.NewFutureFromResponse(resp) 662 future.FutureAPI = &azf 663 future.Result = future.result 664 return 665} 666 667// TriggerRestoreResponder handles the response to the TriggerRestore request. The method always 668// closes the http.Response Body. 669func (client BackupInstancesClient) TriggerRestoreResponder(resp *http.Response) (result OperationJobExtendedInfo, err error) { 670 err = autorest.Respond( 671 resp, 672 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), 673 autorest.ByUnmarshallingJSON(&result), 674 autorest.ByClosing()) 675 result.Response = autorest.Response{Response: resp} 676 return 677} 678 679// ValidateForBackup validate whether adhoc backup will be successful or not 680// Parameters: 681// vaultName - the name of the backup vault. 682// resourceGroupName - the name of the resource group where the backup vault is present. 683// parameters - request body for operation 684func (client BackupInstancesClient) ValidateForBackup(ctx context.Context, vaultName string, resourceGroupName string, parameters ValidateForBackupRequest) (result BackupInstancesValidateForBackupFuture, err error) { 685 if tracing.IsEnabled() { 686 ctx = tracing.StartSpan(ctx, fqdn+"/BackupInstancesClient.ValidateForBackup") 687 defer func() { 688 sc := -1 689 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 690 sc = result.FutureAPI.Response().StatusCode 691 } 692 tracing.EndSpan(ctx, sc, err) 693 }() 694 } 695 if err := validation.Validate([]validation.Validation{ 696 {TargetValue: parameters, 697 Constraints: []validation.Constraint{{Target: "parameters.BackupInstance", Name: validation.Null, Rule: true, 698 Chain: []validation.Constraint{{Target: "parameters.BackupInstance.DataSourceInfo", Name: validation.Null, Rule: true, 699 Chain: []validation.Constraint{{Target: "parameters.BackupInstance.DataSourceInfo.ResourceID", Name: validation.Null, Rule: true, Chain: nil}}}, 700 {Target: "parameters.BackupInstance.DataSourceSetInfo", Name: validation.Null, Rule: false, 701 Chain: []validation.Constraint{{Target: "parameters.BackupInstance.DataSourceSetInfo.ResourceID", Name: validation.Null, Rule: true, Chain: nil}}}, 702 {Target: "parameters.BackupInstance.PolicyInfo", Name: validation.Null, Rule: true, 703 Chain: []validation.Constraint{{Target: "parameters.BackupInstance.PolicyInfo.PolicyID", Name: validation.Null, Rule: true, Chain: nil}}}, 704 {Target: "parameters.BackupInstance.ProtectionStatus", Name: validation.Null, Rule: false, 705 Chain: []validation.Constraint{{Target: "parameters.BackupInstance.ProtectionStatus.ErrorDetails", Name: validation.Null, Rule: false, 706 Chain: []validation.Constraint{{Target: "parameters.BackupInstance.ProtectionStatus.ErrorDetails.InnerError", Name: validation.Null, Rule: false, 707 Chain: []validation.Constraint{{Target: "parameters.BackupInstance.ProtectionStatus.ErrorDetails.InnerError.EmbeddedInnerError", Name: validation.Null, Rule: false, Chain: nil}}}, 708 }}, 709 }}, 710 {Target: "parameters.BackupInstance.ProtectionErrorDetails", Name: validation.Null, Rule: false, 711 Chain: []validation.Constraint{{Target: "parameters.BackupInstance.ProtectionErrorDetails.InnerError", Name: validation.Null, Rule: false, 712 Chain: []validation.Constraint{{Target: "parameters.BackupInstance.ProtectionErrorDetails.InnerError.EmbeddedInnerError", Name: validation.Null, Rule: false, Chain: nil}}}, 713 }}, 714 {Target: "parameters.BackupInstance.ObjectType", Name: validation.Null, Rule: true, Chain: nil}, 715 }}}}}); err != nil { 716 return result, validation.NewError("dataprotection.BackupInstancesClient", "ValidateForBackup", err.Error()) 717 } 718 719 req, err := client.ValidateForBackupPreparer(ctx, vaultName, resourceGroupName, parameters) 720 if err != nil { 721 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "ValidateForBackup", nil, "Failure preparing request") 722 return 723 } 724 725 result, err = client.ValidateForBackupSender(req) 726 if err != nil { 727 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "ValidateForBackup", nil, "Failure sending request") 728 return 729 } 730 731 return 732} 733 734// ValidateForBackupPreparer prepares the ValidateForBackup request. 735func (client BackupInstancesClient) ValidateForBackupPreparer(ctx context.Context, vaultName string, resourceGroupName string, parameters ValidateForBackupRequest) (*http.Request, error) { 736 pathParameters := map[string]interface{}{ 737 "resourceGroupName": autorest.Encode("path", resourceGroupName), 738 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 739 "vaultName": autorest.Encode("path", vaultName), 740 } 741 742 const APIVersion = "2021-01-01" 743 queryParameters := map[string]interface{}{ 744 "api-version": APIVersion, 745 } 746 747 preparer := autorest.CreatePreparer( 748 autorest.AsContentType("application/json; charset=utf-8"), 749 autorest.AsPost(), 750 autorest.WithBaseURL(client.BaseURI), 751 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/validateForBackup", pathParameters), 752 autorest.WithJSON(parameters), 753 autorest.WithQueryParameters(queryParameters)) 754 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 755} 756 757// ValidateForBackupSender sends the ValidateForBackup request. The method will close the 758// http.Response Body if it receives an error. 759func (client BackupInstancesClient) ValidateForBackupSender(req *http.Request) (future BackupInstancesValidateForBackupFuture, err error) { 760 var resp *http.Response 761 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 762 if err != nil { 763 return 764 } 765 var azf azure.Future 766 azf, err = azure.NewFutureFromResponse(resp) 767 future.FutureAPI = &azf 768 future.Result = future.result 769 return 770} 771 772// ValidateForBackupResponder handles the response to the ValidateForBackup request. The method always 773// closes the http.Response Body. 774func (client BackupInstancesClient) ValidateForBackupResponder(resp *http.Response) (result OperationJobExtendedInfo, err error) { 775 err = autorest.Respond( 776 resp, 777 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), 778 autorest.ByUnmarshallingJSON(&result), 779 autorest.ByClosing()) 780 result.Response = autorest.Response{Response: resp} 781 return 782} 783 784// ValidateRestore validates if Restore can be triggered for a DataSource 785// Parameters: 786// vaultName - the name of the backup vault. 787// resourceGroupName - the name of the resource group where the backup vault is present. 788// backupInstanceName - the name of the backup instance 789// parameters - request body for operation 790func (client BackupInstancesClient) ValidateRestore(ctx context.Context, vaultName string, resourceGroupName string, backupInstanceName string, parameters ValidateRestoreRequestObject) (result BackupInstancesValidateRestoreFuture, err error) { 791 if tracing.IsEnabled() { 792 ctx = tracing.StartSpan(ctx, fqdn+"/BackupInstancesClient.ValidateRestore") 793 defer func() { 794 sc := -1 795 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 796 sc = result.FutureAPI.Response().StatusCode 797 } 798 tracing.EndSpan(ctx, sc, err) 799 }() 800 } 801 req, err := client.ValidateRestorePreparer(ctx, vaultName, resourceGroupName, backupInstanceName, parameters) 802 if err != nil { 803 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "ValidateRestore", nil, "Failure preparing request") 804 return 805 } 806 807 result, err = client.ValidateRestoreSender(req) 808 if err != nil { 809 err = autorest.NewErrorWithError(err, "dataprotection.BackupInstancesClient", "ValidateRestore", nil, "Failure sending request") 810 return 811 } 812 813 return 814} 815 816// ValidateRestorePreparer prepares the ValidateRestore request. 817func (client BackupInstancesClient) ValidateRestorePreparer(ctx context.Context, vaultName string, resourceGroupName string, backupInstanceName string, parameters ValidateRestoreRequestObject) (*http.Request, error) { 818 pathParameters := map[string]interface{}{ 819 "backupInstanceName": autorest.Encode("path", backupInstanceName), 820 "resourceGroupName": autorest.Encode("path", resourceGroupName), 821 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 822 "vaultName": autorest.Encode("path", vaultName), 823 } 824 825 const APIVersion = "2021-01-01" 826 queryParameters := map[string]interface{}{ 827 "api-version": APIVersion, 828 } 829 830 preparer := autorest.CreatePreparer( 831 autorest.AsContentType("application/json; charset=utf-8"), 832 autorest.AsPost(), 833 autorest.WithBaseURL(client.BaseURI), 834 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/validateRestore", pathParameters), 835 autorest.WithJSON(parameters), 836 autorest.WithQueryParameters(queryParameters)) 837 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 838} 839 840// ValidateRestoreSender sends the ValidateRestore request. The method will close the 841// http.Response Body if it receives an error. 842func (client BackupInstancesClient) ValidateRestoreSender(req *http.Request) (future BackupInstancesValidateRestoreFuture, err error) { 843 var resp *http.Response 844 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 845 if err != nil { 846 return 847 } 848 var azf azure.Future 849 azf, err = azure.NewFutureFromResponse(resp) 850 future.FutureAPI = &azf 851 future.Result = future.result 852 return 853} 854 855// ValidateRestoreResponder handles the response to the ValidateRestore request. The method always 856// closes the http.Response Body. 857func (client BackupInstancesClient) ValidateRestoreResponder(resp *http.Response) (result OperationJobExtendedInfo, err error) { 858 err = autorest.Respond( 859 resp, 860 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), 861 autorest.ByUnmarshallingJSON(&result), 862 autorest.ByClosing()) 863 result.Response = autorest.Response{Response: resp} 864 return 865} 866