1package sql 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// VirtualClustersClient is the the Azure SQL Database management API provides a RESTful set of web services that 18// interact with Azure SQL Database services to manage your databases. The API enables you to create, retrieve, update, 19// and delete databases. 20type VirtualClustersClient struct { 21 BaseClient 22} 23 24// NewVirtualClustersClient creates an instance of the VirtualClustersClient client. 25func NewVirtualClustersClient(subscriptionID string) VirtualClustersClient { 26 return NewVirtualClustersClientWithBaseURI(DefaultBaseURI, subscriptionID) 27} 28 29// NewVirtualClustersClientWithBaseURI creates an instance of the VirtualClustersClient client using a custom endpoint. 30// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). 31func NewVirtualClustersClientWithBaseURI(baseURI string, subscriptionID string) VirtualClustersClient { 32 return VirtualClustersClient{NewWithBaseURI(baseURI, subscriptionID)} 33} 34 35// Delete deletes a virtual cluster. 36// Parameters: 37// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 38// from the Azure Resource Manager API or the portal. 39// virtualClusterName - the name of the virtual cluster. 40func (client VirtualClustersClient) Delete(ctx context.Context, resourceGroupName string, virtualClusterName string) (result VirtualClustersDeleteFuture, err error) { 41 if tracing.IsEnabled() { 42 ctx = tracing.StartSpan(ctx, fqdn+"/VirtualClustersClient.Delete") 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 req, err := client.DeletePreparer(ctx, resourceGroupName, virtualClusterName) 52 if err != nil { 53 err = autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "Delete", nil, "Failure preparing request") 54 return 55 } 56 57 result, err = client.DeleteSender(req) 58 if err != nil { 59 err = autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "Delete", nil, "Failure sending request") 60 return 61 } 62 63 return 64} 65 66// DeletePreparer prepares the Delete request. 67func (client VirtualClustersClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualClusterName string) (*http.Request, error) { 68 pathParameters := map[string]interface{}{ 69 "resourceGroupName": autorest.Encode("path", resourceGroupName), 70 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 71 "virtualClusterName": autorest.Encode("path", virtualClusterName), 72 } 73 74 const APIVersion = "2015-05-01-preview" 75 queryParameters := map[string]interface{}{ 76 "api-version": APIVersion, 77 } 78 79 preparer := autorest.CreatePreparer( 80 autorest.AsDelete(), 81 autorest.WithBaseURL(client.BaseURI), 82 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/virtualClusters/{virtualClusterName}", pathParameters), 83 autorest.WithQueryParameters(queryParameters)) 84 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 85} 86 87// DeleteSender sends the Delete request. The method will close the 88// http.Response Body if it receives an error. 89func (client VirtualClustersClient) DeleteSender(req *http.Request) (future VirtualClustersDeleteFuture, err error) { 90 var resp *http.Response 91 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 92 if err != nil { 93 return 94 } 95 var azf azure.Future 96 azf, err = azure.NewFutureFromResponse(resp) 97 future.FutureAPI = &azf 98 future.Result = future.result 99 return 100} 101 102// DeleteResponder handles the response to the Delete request. The method always 103// closes the http.Response Body. 104func (client VirtualClustersClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { 105 err = autorest.Respond( 106 resp, 107 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), 108 autorest.ByClosing()) 109 result.Response = resp 110 return 111} 112 113// Get gets a virtual cluster. 114// Parameters: 115// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 116// from the Azure Resource Manager API or the portal. 117// virtualClusterName - the name of the virtual cluster. 118func (client VirtualClustersClient) Get(ctx context.Context, resourceGroupName string, virtualClusterName string) (result VirtualCluster, err error) { 119 if tracing.IsEnabled() { 120 ctx = tracing.StartSpan(ctx, fqdn+"/VirtualClustersClient.Get") 121 defer func() { 122 sc := -1 123 if result.Response.Response != nil { 124 sc = result.Response.Response.StatusCode 125 } 126 tracing.EndSpan(ctx, sc, err) 127 }() 128 } 129 req, err := client.GetPreparer(ctx, resourceGroupName, virtualClusterName) 130 if err != nil { 131 err = autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "Get", nil, "Failure preparing request") 132 return 133 } 134 135 resp, err := client.GetSender(req) 136 if err != nil { 137 result.Response = autorest.Response{Response: resp} 138 err = autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "Get", resp, "Failure sending request") 139 return 140 } 141 142 result, err = client.GetResponder(resp) 143 if err != nil { 144 err = autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "Get", resp, "Failure responding to request") 145 return 146 } 147 148 return 149} 150 151// GetPreparer prepares the Get request. 152func (client VirtualClustersClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualClusterName string) (*http.Request, error) { 153 pathParameters := map[string]interface{}{ 154 "resourceGroupName": autorest.Encode("path", resourceGroupName), 155 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 156 "virtualClusterName": autorest.Encode("path", virtualClusterName), 157 } 158 159 const APIVersion = "2015-05-01-preview" 160 queryParameters := map[string]interface{}{ 161 "api-version": APIVersion, 162 } 163 164 preparer := autorest.CreatePreparer( 165 autorest.AsGet(), 166 autorest.WithBaseURL(client.BaseURI), 167 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/virtualClusters/{virtualClusterName}", pathParameters), 168 autorest.WithQueryParameters(queryParameters)) 169 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 170} 171 172// GetSender sends the Get request. The method will close the 173// http.Response Body if it receives an error. 174func (client VirtualClustersClient) GetSender(req *http.Request) (*http.Response, error) { 175 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 176} 177 178// GetResponder handles the response to the Get request. The method always 179// closes the http.Response Body. 180func (client VirtualClustersClient) GetResponder(resp *http.Response) (result VirtualCluster, err error) { 181 err = autorest.Respond( 182 resp, 183 azure.WithErrorUnlessStatusCode(http.StatusOK), 184 autorest.ByUnmarshallingJSON(&result), 185 autorest.ByClosing()) 186 result.Response = autorest.Response{Response: resp} 187 return 188} 189 190// List gets a list of all virtualClusters in the subscription. 191func (client VirtualClustersClient) List(ctx context.Context) (result VirtualClusterListResultPage, err error) { 192 if tracing.IsEnabled() { 193 ctx = tracing.StartSpan(ctx, fqdn+"/VirtualClustersClient.List") 194 defer func() { 195 sc := -1 196 if result.vclr.Response.Response != nil { 197 sc = result.vclr.Response.Response.StatusCode 198 } 199 tracing.EndSpan(ctx, sc, err) 200 }() 201 } 202 result.fn = client.listNextResults 203 req, err := client.ListPreparer(ctx) 204 if err != nil { 205 err = autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "List", nil, "Failure preparing request") 206 return 207 } 208 209 resp, err := client.ListSender(req) 210 if err != nil { 211 result.vclr.Response = autorest.Response{Response: resp} 212 err = autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "List", resp, "Failure sending request") 213 return 214 } 215 216 result.vclr, err = client.ListResponder(resp) 217 if err != nil { 218 err = autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "List", resp, "Failure responding to request") 219 return 220 } 221 if result.vclr.hasNextLink() && result.vclr.IsEmpty() { 222 err = result.NextWithContext(ctx) 223 return 224 } 225 226 return 227} 228 229// ListPreparer prepares the List request. 230func (client VirtualClustersClient) ListPreparer(ctx context.Context) (*http.Request, error) { 231 pathParameters := map[string]interface{}{ 232 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 233 } 234 235 const APIVersion = "2015-05-01-preview" 236 queryParameters := map[string]interface{}{ 237 "api-version": APIVersion, 238 } 239 240 preparer := autorest.CreatePreparer( 241 autorest.AsGet(), 242 autorest.WithBaseURL(client.BaseURI), 243 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Sql/virtualClusters", pathParameters), 244 autorest.WithQueryParameters(queryParameters)) 245 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 246} 247 248// ListSender sends the List request. The method will close the 249// http.Response Body if it receives an error. 250func (client VirtualClustersClient) ListSender(req *http.Request) (*http.Response, error) { 251 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 252} 253 254// ListResponder handles the response to the List request. The method always 255// closes the http.Response Body. 256func (client VirtualClustersClient) ListResponder(resp *http.Response) (result VirtualClusterListResult, err error) { 257 err = autorest.Respond( 258 resp, 259 azure.WithErrorUnlessStatusCode(http.StatusOK), 260 autorest.ByUnmarshallingJSON(&result), 261 autorest.ByClosing()) 262 result.Response = autorest.Response{Response: resp} 263 return 264} 265 266// listNextResults retrieves the next set of results, if any. 267func (client VirtualClustersClient) listNextResults(ctx context.Context, lastResults VirtualClusterListResult) (result VirtualClusterListResult, err error) { 268 req, err := lastResults.virtualClusterListResultPreparer(ctx) 269 if err != nil { 270 return result, autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "listNextResults", nil, "Failure preparing next results request") 271 } 272 if req == nil { 273 return 274 } 275 resp, err := client.ListSender(req) 276 if err != nil { 277 result.Response = autorest.Response{Response: resp} 278 return result, autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "listNextResults", resp, "Failure sending next results request") 279 } 280 result, err = client.ListResponder(resp) 281 if err != nil { 282 err = autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "listNextResults", resp, "Failure responding to next results request") 283 } 284 return 285} 286 287// ListComplete enumerates all values, automatically crossing page boundaries as required. 288func (client VirtualClustersClient) ListComplete(ctx context.Context) (result VirtualClusterListResultIterator, err error) { 289 if tracing.IsEnabled() { 290 ctx = tracing.StartSpan(ctx, fqdn+"/VirtualClustersClient.List") 291 defer func() { 292 sc := -1 293 if result.Response().Response.Response != nil { 294 sc = result.page.Response().Response.Response.StatusCode 295 } 296 tracing.EndSpan(ctx, sc, err) 297 }() 298 } 299 result.page, err = client.List(ctx) 300 return 301} 302 303// ListByResourceGroup gets a list of virtual clusters in a resource group. 304// Parameters: 305// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 306// from the Azure Resource Manager API or the portal. 307func (client VirtualClustersClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result VirtualClusterListResultPage, err error) { 308 if tracing.IsEnabled() { 309 ctx = tracing.StartSpan(ctx, fqdn+"/VirtualClustersClient.ListByResourceGroup") 310 defer func() { 311 sc := -1 312 if result.vclr.Response.Response != nil { 313 sc = result.vclr.Response.Response.StatusCode 314 } 315 tracing.EndSpan(ctx, sc, err) 316 }() 317 } 318 result.fn = client.listByResourceGroupNextResults 319 req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) 320 if err != nil { 321 err = autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "ListByResourceGroup", nil, "Failure preparing request") 322 return 323 } 324 325 resp, err := client.ListByResourceGroupSender(req) 326 if err != nil { 327 result.vclr.Response = autorest.Response{Response: resp} 328 err = autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "ListByResourceGroup", resp, "Failure sending request") 329 return 330 } 331 332 result.vclr, err = client.ListByResourceGroupResponder(resp) 333 if err != nil { 334 err = autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "ListByResourceGroup", resp, "Failure responding to request") 335 return 336 } 337 if result.vclr.hasNextLink() && result.vclr.IsEmpty() { 338 err = result.NextWithContext(ctx) 339 return 340 } 341 342 return 343} 344 345// ListByResourceGroupPreparer prepares the ListByResourceGroup request. 346func (client VirtualClustersClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { 347 pathParameters := map[string]interface{}{ 348 "resourceGroupName": autorest.Encode("path", resourceGroupName), 349 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 350 } 351 352 const APIVersion = "2015-05-01-preview" 353 queryParameters := map[string]interface{}{ 354 "api-version": APIVersion, 355 } 356 357 preparer := autorest.CreatePreparer( 358 autorest.AsGet(), 359 autorest.WithBaseURL(client.BaseURI), 360 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/virtualClusters", pathParameters), 361 autorest.WithQueryParameters(queryParameters)) 362 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 363} 364 365// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the 366// http.Response Body if it receives an error. 367func (client VirtualClustersClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { 368 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 369} 370 371// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always 372// closes the http.Response Body. 373func (client VirtualClustersClient) ListByResourceGroupResponder(resp *http.Response) (result VirtualClusterListResult, err error) { 374 err = autorest.Respond( 375 resp, 376 azure.WithErrorUnlessStatusCode(http.StatusOK), 377 autorest.ByUnmarshallingJSON(&result), 378 autorest.ByClosing()) 379 result.Response = autorest.Response{Response: resp} 380 return 381} 382 383// listByResourceGroupNextResults retrieves the next set of results, if any. 384func (client VirtualClustersClient) listByResourceGroupNextResults(ctx context.Context, lastResults VirtualClusterListResult) (result VirtualClusterListResult, err error) { 385 req, err := lastResults.virtualClusterListResultPreparer(ctx) 386 if err != nil { 387 return result, autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") 388 } 389 if req == nil { 390 return 391 } 392 resp, err := client.ListByResourceGroupSender(req) 393 if err != nil { 394 result.Response = autorest.Response{Response: resp} 395 return result, autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") 396 } 397 result, err = client.ListByResourceGroupResponder(resp) 398 if err != nil { 399 err = autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") 400 } 401 return 402} 403 404// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. 405func (client VirtualClustersClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result VirtualClusterListResultIterator, err error) { 406 if tracing.IsEnabled() { 407 ctx = tracing.StartSpan(ctx, fqdn+"/VirtualClustersClient.ListByResourceGroup") 408 defer func() { 409 sc := -1 410 if result.Response().Response.Response != nil { 411 sc = result.page.Response().Response.Response.StatusCode 412 } 413 tracing.EndSpan(ctx, sc, err) 414 }() 415 } 416 result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) 417 return 418} 419 420// Update updates a virtual cluster. 421// Parameters: 422// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 423// from the Azure Resource Manager API or the portal. 424// virtualClusterName - the name of the virtual cluster. 425// parameters - the requested managed instance resource state. 426func (client VirtualClustersClient) Update(ctx context.Context, resourceGroupName string, virtualClusterName string, parameters VirtualClusterUpdate) (result VirtualClustersUpdateFuture, err error) { 427 if tracing.IsEnabled() { 428 ctx = tracing.StartSpan(ctx, fqdn+"/VirtualClustersClient.Update") 429 defer func() { 430 sc := -1 431 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 432 sc = result.FutureAPI.Response().StatusCode 433 } 434 tracing.EndSpan(ctx, sc, err) 435 }() 436 } 437 req, err := client.UpdatePreparer(ctx, resourceGroupName, virtualClusterName, parameters) 438 if err != nil { 439 err = autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "Update", nil, "Failure preparing request") 440 return 441 } 442 443 result, err = client.UpdateSender(req) 444 if err != nil { 445 err = autorest.NewErrorWithError(err, "sql.VirtualClustersClient", "Update", nil, "Failure sending request") 446 return 447 } 448 449 return 450} 451 452// UpdatePreparer prepares the Update request. 453func (client VirtualClustersClient) UpdatePreparer(ctx context.Context, resourceGroupName string, virtualClusterName string, parameters VirtualClusterUpdate) (*http.Request, error) { 454 pathParameters := map[string]interface{}{ 455 "resourceGroupName": autorest.Encode("path", resourceGroupName), 456 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 457 "virtualClusterName": autorest.Encode("path", virtualClusterName), 458 } 459 460 const APIVersion = "2015-05-01-preview" 461 queryParameters := map[string]interface{}{ 462 "api-version": APIVersion, 463 } 464 465 preparer := autorest.CreatePreparer( 466 autorest.AsContentType("application/json; charset=utf-8"), 467 autorest.AsPatch(), 468 autorest.WithBaseURL(client.BaseURI), 469 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/virtualClusters/{virtualClusterName}", pathParameters), 470 autorest.WithJSON(parameters), 471 autorest.WithQueryParameters(queryParameters)) 472 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 473} 474 475// UpdateSender sends the Update request. The method will close the 476// http.Response Body if it receives an error. 477func (client VirtualClustersClient) UpdateSender(req *http.Request) (future VirtualClustersUpdateFuture, err error) { 478 var resp *http.Response 479 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 480 if err != nil { 481 return 482 } 483 var azf azure.Future 484 azf, err = azure.NewFutureFromResponse(resp) 485 future.FutureAPI = &azf 486 future.Result = future.result 487 return 488} 489 490// UpdateResponder handles the response to the Update request. The method always 491// closes the http.Response Body. 492func (client VirtualClustersClient) UpdateResponder(resp *http.Response) (result VirtualCluster, err error) { 493 err = autorest.Respond( 494 resp, 495 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), 496 autorest.ByUnmarshallingJSON(&result), 497 autorest.ByClosing()) 498 result.Response = autorest.Response{Response: resp} 499 return 500} 501