1package documentdb 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// CollectionPartitionClient is the azure Cosmos DB Database Service Resource Provider REST API 19type CollectionPartitionClient struct { 20 BaseClient 21} 22 23// NewCollectionPartitionClient creates an instance of the CollectionPartitionClient client. 24func NewCollectionPartitionClient(subscriptionID string) CollectionPartitionClient { 25 return NewCollectionPartitionClientWithBaseURI(DefaultBaseURI, subscriptionID) 26} 27 28// NewCollectionPartitionClientWithBaseURI creates an instance of the CollectionPartitionClient client using a custom 29// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure 30// stack). 31func NewCollectionPartitionClientWithBaseURI(baseURI string, subscriptionID string) CollectionPartitionClient { 32 return CollectionPartitionClient{NewWithBaseURI(baseURI, subscriptionID)} 33} 34 35// ListMetrics retrieves the metrics determined by the given filter for the given collection, split by partition. 36// Parameters: 37// resourceGroupName - name of an Azure resource group. 38// accountName - cosmos DB database account name. 39// databaseRid - cosmos DB database rid. 40// collectionRid - cosmos DB collection rid. 41// filter - an OData filter expression that describes a subset of metrics to return. The parameters that can be 42// filtered are name.value (name of the metric, can have an or of multiple names), startTime, endTime, and 43// timeGrain. The supported operator is eq. 44func (client CollectionPartitionClient) ListMetrics(ctx context.Context, resourceGroupName string, accountName string, databaseRid string, collectionRid string, filter string) (result PartitionMetricListResult, err error) { 45 if tracing.IsEnabled() { 46 ctx = tracing.StartSpan(ctx, fqdn+"/CollectionPartitionClient.ListMetrics") 47 defer func() { 48 sc := -1 49 if result.Response.Response != nil { 50 sc = result.Response.Response.StatusCode 51 } 52 tracing.EndSpan(ctx, sc, err) 53 }() 54 } 55 if err := validation.Validate([]validation.Validation{ 56 {TargetValue: resourceGroupName, 57 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 58 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 59 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, 60 {TargetValue: accountName, 61 Constraints: []validation.Constraint{{Target: "accountName", Name: validation.MaxLength, Rule: 50, Chain: nil}, 62 {Target: "accountName", Name: validation.MinLength, Rule: 3, Chain: nil}, 63 {Target: "accountName", Name: validation.Pattern, Rule: `^[a-z0-9]+(-[a-z0-9]+)*`, Chain: nil}}}}); err != nil { 64 return result, validation.NewError("documentdb.CollectionPartitionClient", "ListMetrics", err.Error()) 65 } 66 67 req, err := client.ListMetricsPreparer(ctx, resourceGroupName, accountName, databaseRid, collectionRid, filter) 68 if err != nil { 69 err = autorest.NewErrorWithError(err, "documentdb.CollectionPartitionClient", "ListMetrics", nil, "Failure preparing request") 70 return 71 } 72 73 resp, err := client.ListMetricsSender(req) 74 if err != nil { 75 result.Response = autorest.Response{Response: resp} 76 err = autorest.NewErrorWithError(err, "documentdb.CollectionPartitionClient", "ListMetrics", resp, "Failure sending request") 77 return 78 } 79 80 result, err = client.ListMetricsResponder(resp) 81 if err != nil { 82 err = autorest.NewErrorWithError(err, "documentdb.CollectionPartitionClient", "ListMetrics", resp, "Failure responding to request") 83 return 84 } 85 86 return 87} 88 89// ListMetricsPreparer prepares the ListMetrics request. 90func (client CollectionPartitionClient) ListMetricsPreparer(ctx context.Context, resourceGroupName string, accountName string, databaseRid string, collectionRid string, filter string) (*http.Request, error) { 91 pathParameters := map[string]interface{}{ 92 "accountName": autorest.Encode("path", accountName), 93 "collectionRid": autorest.Encode("path", collectionRid), 94 "databaseRid": autorest.Encode("path", databaseRid), 95 "resourceGroupName": autorest.Encode("path", resourceGroupName), 96 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 97 } 98 99 const APIVersion = "2015-04-08" 100 queryParameters := map[string]interface{}{ 101 "$filter": autorest.Encode("query", filter), 102 "api-version": APIVersion, 103 } 104 105 preparer := autorest.CreatePreparer( 106 autorest.AsGet(), 107 autorest.WithBaseURL(client.BaseURI), 108 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/databases/{databaseRid}/collections/{collectionRid}/partitions/metrics", pathParameters), 109 autorest.WithQueryParameters(queryParameters)) 110 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 111} 112 113// ListMetricsSender sends the ListMetrics request. The method will close the 114// http.Response Body if it receives an error. 115func (client CollectionPartitionClient) ListMetricsSender(req *http.Request) (*http.Response, error) { 116 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 117} 118 119// ListMetricsResponder handles the response to the ListMetrics request. The method always 120// closes the http.Response Body. 121func (client CollectionPartitionClient) ListMetricsResponder(resp *http.Response) (result PartitionMetricListResult, err error) { 122 err = autorest.Respond( 123 resp, 124 azure.WithErrorUnlessStatusCode(http.StatusOK), 125 autorest.ByUnmarshallingJSON(&result), 126 autorest.ByClosing()) 127 result.Response = autorest.Response{Response: resp} 128 return 129} 130 131// ListUsages retrieves the usages (most recent storage data) for the given collection, split by partition. 132// Parameters: 133// resourceGroupName - name of an Azure resource group. 134// accountName - cosmos DB database account name. 135// databaseRid - cosmos DB database rid. 136// collectionRid - cosmos DB collection rid. 137// filter - an OData filter expression that describes a subset of usages to return. The supported parameter is 138// name.value (name of the metric, can have an or of multiple names). 139func (client CollectionPartitionClient) ListUsages(ctx context.Context, resourceGroupName string, accountName string, databaseRid string, collectionRid string, filter string) (result PartitionUsagesResult, err error) { 140 if tracing.IsEnabled() { 141 ctx = tracing.StartSpan(ctx, fqdn+"/CollectionPartitionClient.ListUsages") 142 defer func() { 143 sc := -1 144 if result.Response.Response != nil { 145 sc = result.Response.Response.StatusCode 146 } 147 tracing.EndSpan(ctx, sc, err) 148 }() 149 } 150 if err := validation.Validate([]validation.Validation{ 151 {TargetValue: resourceGroupName, 152 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 153 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 154 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, 155 {TargetValue: accountName, 156 Constraints: []validation.Constraint{{Target: "accountName", Name: validation.MaxLength, Rule: 50, Chain: nil}, 157 {Target: "accountName", Name: validation.MinLength, Rule: 3, Chain: nil}, 158 {Target: "accountName", Name: validation.Pattern, Rule: `^[a-z0-9]+(-[a-z0-9]+)*`, Chain: nil}}}}); err != nil { 159 return result, validation.NewError("documentdb.CollectionPartitionClient", "ListUsages", err.Error()) 160 } 161 162 req, err := client.ListUsagesPreparer(ctx, resourceGroupName, accountName, databaseRid, collectionRid, filter) 163 if err != nil { 164 err = autorest.NewErrorWithError(err, "documentdb.CollectionPartitionClient", "ListUsages", nil, "Failure preparing request") 165 return 166 } 167 168 resp, err := client.ListUsagesSender(req) 169 if err != nil { 170 result.Response = autorest.Response{Response: resp} 171 err = autorest.NewErrorWithError(err, "documentdb.CollectionPartitionClient", "ListUsages", resp, "Failure sending request") 172 return 173 } 174 175 result, err = client.ListUsagesResponder(resp) 176 if err != nil { 177 err = autorest.NewErrorWithError(err, "documentdb.CollectionPartitionClient", "ListUsages", resp, "Failure responding to request") 178 return 179 } 180 181 return 182} 183 184// ListUsagesPreparer prepares the ListUsages request. 185func (client CollectionPartitionClient) ListUsagesPreparer(ctx context.Context, resourceGroupName string, accountName string, databaseRid string, collectionRid string, filter string) (*http.Request, error) { 186 pathParameters := map[string]interface{}{ 187 "accountName": autorest.Encode("path", accountName), 188 "collectionRid": autorest.Encode("path", collectionRid), 189 "databaseRid": autorest.Encode("path", databaseRid), 190 "resourceGroupName": autorest.Encode("path", resourceGroupName), 191 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 192 } 193 194 const APIVersion = "2015-04-08" 195 queryParameters := map[string]interface{}{ 196 "api-version": APIVersion, 197 } 198 if len(filter) > 0 { 199 queryParameters["$filter"] = autorest.Encode("query", filter) 200 } 201 202 preparer := autorest.CreatePreparer( 203 autorest.AsGet(), 204 autorest.WithBaseURL(client.BaseURI), 205 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/databases/{databaseRid}/collections/{collectionRid}/partitions/usages", pathParameters), 206 autorest.WithQueryParameters(queryParameters)) 207 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 208} 209 210// ListUsagesSender sends the ListUsages request. The method will close the 211// http.Response Body if it receives an error. 212func (client CollectionPartitionClient) ListUsagesSender(req *http.Request) (*http.Response, error) { 213 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 214} 215 216// ListUsagesResponder handles the response to the ListUsages request. The method always 217// closes the http.Response Body. 218func (client CollectionPartitionClient) ListUsagesResponder(resp *http.Response) (result PartitionUsagesResult, err error) { 219 err = autorest.Respond( 220 resp, 221 azure.WithErrorUnlessStatusCode(http.StatusOK), 222 autorest.ByUnmarshallingJSON(&result), 223 autorest.ByClosing()) 224 result.Response = autorest.Response{Response: resp} 225 return 226} 227