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