1package backup 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/tracing" 14 "net/http" 15) 16 17// RecoveryPointsCrrClient is the open API 2.0 Specs for Azure RecoveryServices Backup service 18type RecoveryPointsCrrClient struct { 19 BaseClient 20} 21 22// NewRecoveryPointsCrrClient creates an instance of the RecoveryPointsCrrClient client. 23func NewRecoveryPointsCrrClient(subscriptionID string) RecoveryPointsCrrClient { 24 return NewRecoveryPointsCrrClientWithBaseURI(DefaultBaseURI, subscriptionID) 25} 26 27// NewRecoveryPointsCrrClientWithBaseURI creates an instance of the RecoveryPointsCrrClient client using a custom 28// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure 29// stack). 30func NewRecoveryPointsCrrClientWithBaseURI(baseURI string, subscriptionID string) RecoveryPointsCrrClient { 31 return RecoveryPointsCrrClient{NewWithBaseURI(baseURI, subscriptionID)} 32} 33 34// List lists the backup copies for the backed up item. 35// Parameters: 36// vaultName - the name of the recovery services vault. 37// resourceGroupName - the name of the resource group where the recovery services vault is present. 38// fabricName - fabric name associated with the backed up item. 39// containerName - container name associated with the backed up item. 40// protectedItemName - backed up item whose backup copies are to be fetched. 41// filter - oData filter options. 42func (client RecoveryPointsCrrClient) List(ctx context.Context, vaultName string, resourceGroupName string, fabricName string, containerName string, protectedItemName string, filter string) (result RecoveryPointResourceListPage, err error) { 43 if tracing.IsEnabled() { 44 ctx = tracing.StartSpan(ctx, fqdn+"/RecoveryPointsCrrClient.List") 45 defer func() { 46 sc := -1 47 if result.rprl.Response.Response != nil { 48 sc = result.rprl.Response.Response.StatusCode 49 } 50 tracing.EndSpan(ctx, sc, err) 51 }() 52 } 53 result.fn = client.listNextResults 54 req, err := client.ListPreparer(ctx, vaultName, resourceGroupName, fabricName, containerName, protectedItemName, filter) 55 if err != nil { 56 err = autorest.NewErrorWithError(err, "backup.RecoveryPointsCrrClient", "List", nil, "Failure preparing request") 57 return 58 } 59 60 resp, err := client.ListSender(req) 61 if err != nil { 62 result.rprl.Response = autorest.Response{Response: resp} 63 err = autorest.NewErrorWithError(err, "backup.RecoveryPointsCrrClient", "List", resp, "Failure sending request") 64 return 65 } 66 67 result.rprl, err = client.ListResponder(resp) 68 if err != nil { 69 err = autorest.NewErrorWithError(err, "backup.RecoveryPointsCrrClient", "List", resp, "Failure responding to request") 70 return 71 } 72 if result.rprl.hasNextLink() && result.rprl.IsEmpty() { 73 err = result.NextWithContext(ctx) 74 return 75 } 76 77 return 78} 79 80// ListPreparer prepares the List request. 81func (client RecoveryPointsCrrClient) ListPreparer(ctx context.Context, vaultName string, resourceGroupName string, fabricName string, containerName string, protectedItemName string, filter string) (*http.Request, error) { 82 pathParameters := map[string]interface{}{ 83 "containerName": autorest.Encode("path", containerName), 84 "fabricName": autorest.Encode("path", fabricName), 85 "protectedItemName": autorest.Encode("path", protectedItemName), 86 "resourceGroupName": autorest.Encode("path", resourceGroupName), 87 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 88 "vaultName": autorest.Encode("path", vaultName), 89 } 90 91 const APIVersion = "2018-12-20" 92 queryParameters := map[string]interface{}{ 93 "api-version": APIVersion, 94 } 95 if len(filter) > 0 { 96 queryParameters["$filter"] = autorest.Encode("query", filter) 97 } 98 99 preparer := autorest.CreatePreparer( 100 autorest.AsGet(), 101 autorest.WithBaseURL(client.BaseURI), 102 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints/", pathParameters), 103 autorest.WithQueryParameters(queryParameters)) 104 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 105} 106 107// ListSender sends the List request. The method will close the 108// http.Response Body if it receives an error. 109func (client RecoveryPointsCrrClient) ListSender(req *http.Request) (*http.Response, error) { 110 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 111} 112 113// ListResponder handles the response to the List request. The method always 114// closes the http.Response Body. 115func (client RecoveryPointsCrrClient) ListResponder(resp *http.Response) (result RecoveryPointResourceList, err error) { 116 err = autorest.Respond( 117 resp, 118 azure.WithErrorUnlessStatusCode(http.StatusOK), 119 autorest.ByUnmarshallingJSON(&result), 120 autorest.ByClosing()) 121 result.Response = autorest.Response{Response: resp} 122 return 123} 124 125// listNextResults retrieves the next set of results, if any. 126func (client RecoveryPointsCrrClient) listNextResults(ctx context.Context, lastResults RecoveryPointResourceList) (result RecoveryPointResourceList, err error) { 127 req, err := lastResults.recoveryPointResourceListPreparer(ctx) 128 if err != nil { 129 return result, autorest.NewErrorWithError(err, "backup.RecoveryPointsCrrClient", "listNextResults", nil, "Failure preparing next results request") 130 } 131 if req == nil { 132 return 133 } 134 resp, err := client.ListSender(req) 135 if err != nil { 136 result.Response = autorest.Response{Response: resp} 137 return result, autorest.NewErrorWithError(err, "backup.RecoveryPointsCrrClient", "listNextResults", resp, "Failure sending next results request") 138 } 139 result, err = client.ListResponder(resp) 140 if err != nil { 141 err = autorest.NewErrorWithError(err, "backup.RecoveryPointsCrrClient", "listNextResults", resp, "Failure responding to next results request") 142 } 143 return 144} 145 146// ListComplete enumerates all values, automatically crossing page boundaries as required. 147func (client RecoveryPointsCrrClient) ListComplete(ctx context.Context, vaultName string, resourceGroupName string, fabricName string, containerName string, protectedItemName string, filter string) (result RecoveryPointResourceListIterator, err error) { 148 if tracing.IsEnabled() { 149 ctx = tracing.StartSpan(ctx, fqdn+"/RecoveryPointsCrrClient.List") 150 defer func() { 151 sc := -1 152 if result.Response().Response.Response != nil { 153 sc = result.page.Response().Response.Response.StatusCode 154 } 155 tracing.EndSpan(ctx, sc, err) 156 }() 157 } 158 result.page, err = client.List(ctx, vaultName, resourceGroupName, fabricName, containerName, protectedItemName, filter) 159 return 160} 161