1package sql 2 3// Copyright (c) Microsoft and contributors. All rights reserved. 4// 5// Licensed under the Apache License, Version 2.0 (the "License"); 6// you may not use this file except in compliance with the License. 7// You may obtain a copy of the License at 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// 14// See the License for the specific language governing permissions and 15// limitations under the License. 16// 17// Code generated by Microsoft (R) AutoRest Code Generator. 18// Changes may cause incorrect behavior and will be lost if the code is regenerated. 19 20import ( 21 "context" 22 "github.com/Azure/go-autorest/autorest" 23 "github.com/Azure/go-autorest/autorest/azure" 24 "github.com/Azure/go-autorest/autorest/validation" 25 "github.com/Azure/go-autorest/tracing" 26 "net/http" 27) 28 29// ManagedInstancesClient is the the Azure SQL Database management API provides a RESTful set of web services that 30// interact with Azure SQL Database services to manage your databases. The API enables you to create, retrieve, update, 31// and delete databases. 32type ManagedInstancesClient struct { 33 BaseClient 34} 35 36// NewManagedInstancesClient creates an instance of the ManagedInstancesClient client. 37func NewManagedInstancesClient(subscriptionID string) ManagedInstancesClient { 38 return NewManagedInstancesClientWithBaseURI(DefaultBaseURI, subscriptionID) 39} 40 41// NewManagedInstancesClientWithBaseURI creates an instance of the ManagedInstancesClient client using a custom 42// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure 43// stack). 44func NewManagedInstancesClientWithBaseURI(baseURI string, subscriptionID string) ManagedInstancesClient { 45 return ManagedInstancesClient{NewWithBaseURI(baseURI, subscriptionID)} 46} 47 48// CreateOrUpdate creates or updates a managed instance. 49// Parameters: 50// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 51// from the Azure Resource Manager API or the portal. 52// managedInstanceName - the name of the managed instance. 53// parameters - the requested managed instance resource state. 54func (client ManagedInstancesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, managedInstanceName string, parameters ManagedInstance) (result ManagedInstancesCreateOrUpdateFuture, err error) { 55 if tracing.IsEnabled() { 56 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstancesClient.CreateOrUpdate") 57 defer func() { 58 sc := -1 59 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 60 sc = result.FutureAPI.Response().StatusCode 61 } 62 tracing.EndSpan(ctx, sc, err) 63 }() 64 } 65 if err := validation.Validate([]validation.Validation{ 66 {TargetValue: parameters, 67 Constraints: []validation.Constraint{{Target: "parameters.Sku", Name: validation.Null, Rule: false, 68 Chain: []validation.Constraint{{Target: "parameters.Sku.Name", Name: validation.Null, Rule: true, Chain: nil}}}}}}); err != nil { 69 return result, validation.NewError("sql.ManagedInstancesClient", "CreateOrUpdate", err.Error()) 70 } 71 72 req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, managedInstanceName, parameters) 73 if err != nil { 74 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "CreateOrUpdate", nil, "Failure preparing request") 75 return 76 } 77 78 result, err = client.CreateOrUpdateSender(req) 79 if err != nil { 80 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "CreateOrUpdate", nil, "Failure sending request") 81 return 82 } 83 84 return 85} 86 87// CreateOrUpdatePreparer prepares the CreateOrUpdate request. 88func (client ManagedInstancesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, managedInstanceName string, parameters ManagedInstance) (*http.Request, error) { 89 pathParameters := map[string]interface{}{ 90 "managedInstanceName": autorest.Encode("path", managedInstanceName), 91 "resourceGroupName": autorest.Encode("path", resourceGroupName), 92 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 93 } 94 95 const APIVersion = "2020-02-02-preview" 96 queryParameters := map[string]interface{}{ 97 "api-version": APIVersion, 98 } 99 100 preparer := autorest.CreatePreparer( 101 autorest.AsContentType("application/json; charset=utf-8"), 102 autorest.AsPut(), 103 autorest.WithBaseURL(client.BaseURI), 104 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}", pathParameters), 105 autorest.WithJSON(parameters), 106 autorest.WithQueryParameters(queryParameters)) 107 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 108} 109 110// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the 111// http.Response Body if it receives an error. 112func (client ManagedInstancesClient) CreateOrUpdateSender(req *http.Request) (future ManagedInstancesCreateOrUpdateFuture, err error) { 113 var resp *http.Response 114 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 115 if err != nil { 116 return 117 } 118 var azf azure.Future 119 azf, err = azure.NewFutureFromResponse(resp) 120 future.FutureAPI = &azf 121 future.Result = func(client ManagedInstancesClient) (mi ManagedInstance, err error) { 122 var done bool 123 done, err = future.DoneWithContext(context.Background(), client) 124 if err != nil { 125 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") 126 return 127 } 128 if !done { 129 err = azure.NewAsyncOpIncompleteError("sql.ManagedInstancesCreateOrUpdateFuture") 130 return 131 } 132 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 133 mi.Response.Response, err = future.GetResult(sender) 134 if mi.Response.Response == nil && err == nil { 135 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesCreateOrUpdateFuture", "Result", nil, "received nil response and error") 136 } 137 if err == nil && mi.Response.Response.StatusCode != http.StatusNoContent { 138 mi, err = client.CreateOrUpdateResponder(mi.Response.Response) 139 if err != nil { 140 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesCreateOrUpdateFuture", "Result", mi.Response.Response, "Failure responding to request") 141 } 142 } 143 return 144 } 145 return 146} 147 148// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always 149// closes the http.Response Body. 150func (client ManagedInstancesClient) CreateOrUpdateResponder(resp *http.Response) (result ManagedInstance, err error) { 151 err = autorest.Respond( 152 resp, 153 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated, http.StatusAccepted), 154 autorest.ByUnmarshallingJSON(&result), 155 autorest.ByClosing()) 156 result.Response = autorest.Response{Response: resp} 157 return 158} 159 160// Delete deletes a managed instance. 161// Parameters: 162// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 163// from the Azure Resource Manager API or the portal. 164// managedInstanceName - the name of the managed instance. 165func (client ManagedInstancesClient) Delete(ctx context.Context, resourceGroupName string, managedInstanceName string) (result ManagedInstancesDeleteFuture, err error) { 166 if tracing.IsEnabled() { 167 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstancesClient.Delete") 168 defer func() { 169 sc := -1 170 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 171 sc = result.FutureAPI.Response().StatusCode 172 } 173 tracing.EndSpan(ctx, sc, err) 174 }() 175 } 176 req, err := client.DeletePreparer(ctx, resourceGroupName, managedInstanceName) 177 if err != nil { 178 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "Delete", nil, "Failure preparing request") 179 return 180 } 181 182 result, err = client.DeleteSender(req) 183 if err != nil { 184 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "Delete", nil, "Failure sending request") 185 return 186 } 187 188 return 189} 190 191// DeletePreparer prepares the Delete request. 192func (client ManagedInstancesClient) DeletePreparer(ctx context.Context, resourceGroupName string, managedInstanceName string) (*http.Request, error) { 193 pathParameters := map[string]interface{}{ 194 "managedInstanceName": autorest.Encode("path", managedInstanceName), 195 "resourceGroupName": autorest.Encode("path", resourceGroupName), 196 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 197 } 198 199 const APIVersion = "2020-02-02-preview" 200 queryParameters := map[string]interface{}{ 201 "api-version": APIVersion, 202 } 203 204 preparer := autorest.CreatePreparer( 205 autorest.AsDelete(), 206 autorest.WithBaseURL(client.BaseURI), 207 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}", pathParameters), 208 autorest.WithQueryParameters(queryParameters)) 209 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 210} 211 212// DeleteSender sends the Delete request. The method will close the 213// http.Response Body if it receives an error. 214func (client ManagedInstancesClient) DeleteSender(req *http.Request) (future ManagedInstancesDeleteFuture, err error) { 215 var resp *http.Response 216 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 217 if err != nil { 218 return 219 } 220 var azf azure.Future 221 azf, err = azure.NewFutureFromResponse(resp) 222 future.FutureAPI = &azf 223 future.Result = func(client ManagedInstancesClient) (ar autorest.Response, err error) { 224 var done bool 225 done, err = future.DoneWithContext(context.Background(), client) 226 if err != nil { 227 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesDeleteFuture", "Result", future.Response(), "Polling failure") 228 return 229 } 230 if !done { 231 err = azure.NewAsyncOpIncompleteError("sql.ManagedInstancesDeleteFuture") 232 return 233 } 234 ar.Response = future.Response() 235 return 236 } 237 return 238} 239 240// DeleteResponder handles the response to the Delete request. The method always 241// closes the http.Response Body. 242func (client ManagedInstancesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { 243 err = autorest.Respond( 244 resp, 245 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), 246 autorest.ByClosing()) 247 result.Response = resp 248 return 249} 250 251// Failover failovers a managed instance. 252// Parameters: 253// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 254// from the Azure Resource Manager API or the portal. 255// managedInstanceName - the name of the managed instance to failover. 256// replicaType - the type of replica to be failed over. 257func (client ManagedInstancesClient) Failover(ctx context.Context, resourceGroupName string, managedInstanceName string, replicaType ReplicaType) (result ManagedInstancesFailoverFuture, err error) { 258 if tracing.IsEnabled() { 259 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstancesClient.Failover") 260 defer func() { 261 sc := -1 262 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 263 sc = result.FutureAPI.Response().StatusCode 264 } 265 tracing.EndSpan(ctx, sc, err) 266 }() 267 } 268 req, err := client.FailoverPreparer(ctx, resourceGroupName, managedInstanceName, replicaType) 269 if err != nil { 270 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "Failover", nil, "Failure preparing request") 271 return 272 } 273 274 result, err = client.FailoverSender(req) 275 if err != nil { 276 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "Failover", nil, "Failure sending request") 277 return 278 } 279 280 return 281} 282 283// FailoverPreparer prepares the Failover request. 284func (client ManagedInstancesClient) FailoverPreparer(ctx context.Context, resourceGroupName string, managedInstanceName string, replicaType ReplicaType) (*http.Request, error) { 285 pathParameters := map[string]interface{}{ 286 "managedInstanceName": autorest.Encode("path", managedInstanceName), 287 "resourceGroupName": autorest.Encode("path", resourceGroupName), 288 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 289 } 290 291 const APIVersion = "2020-02-02-preview" 292 queryParameters := map[string]interface{}{ 293 "api-version": APIVersion, 294 } 295 if len(string(replicaType)) > 0 { 296 queryParameters["replicaType"] = autorest.Encode("query", replicaType) 297 } 298 299 preparer := autorest.CreatePreparer( 300 autorest.AsPost(), 301 autorest.WithBaseURL(client.BaseURI), 302 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}/failover", pathParameters), 303 autorest.WithQueryParameters(queryParameters)) 304 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 305} 306 307// FailoverSender sends the Failover request. The method will close the 308// http.Response Body if it receives an error. 309func (client ManagedInstancesClient) FailoverSender(req *http.Request) (future ManagedInstancesFailoverFuture, err error) { 310 var resp *http.Response 311 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 312 if err != nil { 313 return 314 } 315 var azf azure.Future 316 azf, err = azure.NewFutureFromResponse(resp) 317 future.FutureAPI = &azf 318 future.Result = func(client ManagedInstancesClient) (ar autorest.Response, err error) { 319 var done bool 320 done, err = future.DoneWithContext(context.Background(), client) 321 if err != nil { 322 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesFailoverFuture", "Result", future.Response(), "Polling failure") 323 return 324 } 325 if !done { 326 err = azure.NewAsyncOpIncompleteError("sql.ManagedInstancesFailoverFuture") 327 return 328 } 329 ar.Response = future.Response() 330 return 331 } 332 return 333} 334 335// FailoverResponder handles the response to the Failover request. The method always 336// closes the http.Response Body. 337func (client ManagedInstancesClient) FailoverResponder(resp *http.Response) (result autorest.Response, err error) { 338 err = autorest.Respond( 339 resp, 340 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), 341 autorest.ByClosing()) 342 result.Response = resp 343 return 344} 345 346// Get gets a managed instance. 347// Parameters: 348// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 349// from the Azure Resource Manager API or the portal. 350// managedInstanceName - the name of the managed instance. 351func (client ManagedInstancesClient) Get(ctx context.Context, resourceGroupName string, managedInstanceName string) (result ManagedInstance, err error) { 352 if tracing.IsEnabled() { 353 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstancesClient.Get") 354 defer func() { 355 sc := -1 356 if result.Response.Response != nil { 357 sc = result.Response.Response.StatusCode 358 } 359 tracing.EndSpan(ctx, sc, err) 360 }() 361 } 362 req, err := client.GetPreparer(ctx, resourceGroupName, managedInstanceName) 363 if err != nil { 364 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "Get", nil, "Failure preparing request") 365 return 366 } 367 368 resp, err := client.GetSender(req) 369 if err != nil { 370 result.Response = autorest.Response{Response: resp} 371 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "Get", resp, "Failure sending request") 372 return 373 } 374 375 result, err = client.GetResponder(resp) 376 if err != nil { 377 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "Get", resp, "Failure responding to request") 378 return 379 } 380 381 return 382} 383 384// GetPreparer prepares the Get request. 385func (client ManagedInstancesClient) GetPreparer(ctx context.Context, resourceGroupName string, managedInstanceName string) (*http.Request, error) { 386 pathParameters := map[string]interface{}{ 387 "managedInstanceName": autorest.Encode("path", managedInstanceName), 388 "resourceGroupName": autorest.Encode("path", resourceGroupName), 389 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 390 } 391 392 const APIVersion = "2020-02-02-preview" 393 queryParameters := map[string]interface{}{ 394 "api-version": APIVersion, 395 } 396 397 preparer := autorest.CreatePreparer( 398 autorest.AsGet(), 399 autorest.WithBaseURL(client.BaseURI), 400 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}", pathParameters), 401 autorest.WithQueryParameters(queryParameters)) 402 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 403} 404 405// GetSender sends the Get request. The method will close the 406// http.Response Body if it receives an error. 407func (client ManagedInstancesClient) GetSender(req *http.Request) (*http.Response, error) { 408 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 409} 410 411// GetResponder handles the response to the Get request. The method always 412// closes the http.Response Body. 413func (client ManagedInstancesClient) GetResponder(resp *http.Response) (result ManagedInstance, err error) { 414 err = autorest.Respond( 415 resp, 416 azure.WithErrorUnlessStatusCode(http.StatusOK), 417 autorest.ByUnmarshallingJSON(&result), 418 autorest.ByClosing()) 419 result.Response = autorest.Response{Response: resp} 420 return 421} 422 423// List gets a list of all managed instances in the subscription. 424func (client ManagedInstancesClient) List(ctx context.Context) (result ManagedInstanceListResultPage, err error) { 425 if tracing.IsEnabled() { 426 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstancesClient.List") 427 defer func() { 428 sc := -1 429 if result.milr.Response.Response != nil { 430 sc = result.milr.Response.Response.StatusCode 431 } 432 tracing.EndSpan(ctx, sc, err) 433 }() 434 } 435 result.fn = client.listNextResults 436 req, err := client.ListPreparer(ctx) 437 if err != nil { 438 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "List", nil, "Failure preparing request") 439 return 440 } 441 442 resp, err := client.ListSender(req) 443 if err != nil { 444 result.milr.Response = autorest.Response{Response: resp} 445 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "List", resp, "Failure sending request") 446 return 447 } 448 449 result.milr, err = client.ListResponder(resp) 450 if err != nil { 451 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "List", resp, "Failure responding to request") 452 return 453 } 454 if result.milr.hasNextLink() && result.milr.IsEmpty() { 455 err = result.NextWithContext(ctx) 456 return 457 } 458 459 return 460} 461 462// ListPreparer prepares the List request. 463func (client ManagedInstancesClient) ListPreparer(ctx context.Context) (*http.Request, error) { 464 pathParameters := map[string]interface{}{ 465 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 466 } 467 468 const APIVersion = "2020-02-02-preview" 469 queryParameters := map[string]interface{}{ 470 "api-version": APIVersion, 471 } 472 473 preparer := autorest.CreatePreparer( 474 autorest.AsGet(), 475 autorest.WithBaseURL(client.BaseURI), 476 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Sql/managedInstances", pathParameters), 477 autorest.WithQueryParameters(queryParameters)) 478 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 479} 480 481// ListSender sends the List request. The method will close the 482// http.Response Body if it receives an error. 483func (client ManagedInstancesClient) ListSender(req *http.Request) (*http.Response, error) { 484 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 485} 486 487// ListResponder handles the response to the List request. The method always 488// closes the http.Response Body. 489func (client ManagedInstancesClient) ListResponder(resp *http.Response) (result ManagedInstanceListResult, err error) { 490 err = autorest.Respond( 491 resp, 492 azure.WithErrorUnlessStatusCode(http.StatusOK), 493 autorest.ByUnmarshallingJSON(&result), 494 autorest.ByClosing()) 495 result.Response = autorest.Response{Response: resp} 496 return 497} 498 499// listNextResults retrieves the next set of results, if any. 500func (client ManagedInstancesClient) listNextResults(ctx context.Context, lastResults ManagedInstanceListResult) (result ManagedInstanceListResult, err error) { 501 req, err := lastResults.managedInstanceListResultPreparer(ctx) 502 if err != nil { 503 return result, autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "listNextResults", nil, "Failure preparing next results request") 504 } 505 if req == nil { 506 return 507 } 508 resp, err := client.ListSender(req) 509 if err != nil { 510 result.Response = autorest.Response{Response: resp} 511 return result, autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "listNextResults", resp, "Failure sending next results request") 512 } 513 result, err = client.ListResponder(resp) 514 if err != nil { 515 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "listNextResults", resp, "Failure responding to next results request") 516 } 517 return 518} 519 520// ListComplete enumerates all values, automatically crossing page boundaries as required. 521func (client ManagedInstancesClient) ListComplete(ctx context.Context) (result ManagedInstanceListResultIterator, err error) { 522 if tracing.IsEnabled() { 523 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstancesClient.List") 524 defer func() { 525 sc := -1 526 if result.Response().Response.Response != nil { 527 sc = result.page.Response().Response.Response.StatusCode 528 } 529 tracing.EndSpan(ctx, sc, err) 530 }() 531 } 532 result.page, err = client.List(ctx) 533 return 534} 535 536// ListByInstancePool gets a list of all managed instances in an instance pool. 537// Parameters: 538// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 539// from the Azure Resource Manager API or the portal. 540// instancePoolName - the instance pool name. 541func (client ManagedInstancesClient) ListByInstancePool(ctx context.Context, resourceGroupName string, instancePoolName string) (result ManagedInstanceListResultPage, err error) { 542 if tracing.IsEnabled() { 543 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstancesClient.ListByInstancePool") 544 defer func() { 545 sc := -1 546 if result.milr.Response.Response != nil { 547 sc = result.milr.Response.Response.StatusCode 548 } 549 tracing.EndSpan(ctx, sc, err) 550 }() 551 } 552 result.fn = client.listByInstancePoolNextResults 553 req, err := client.ListByInstancePoolPreparer(ctx, resourceGroupName, instancePoolName) 554 if err != nil { 555 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "ListByInstancePool", nil, "Failure preparing request") 556 return 557 } 558 559 resp, err := client.ListByInstancePoolSender(req) 560 if err != nil { 561 result.milr.Response = autorest.Response{Response: resp} 562 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "ListByInstancePool", resp, "Failure sending request") 563 return 564 } 565 566 result.milr, err = client.ListByInstancePoolResponder(resp) 567 if err != nil { 568 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "ListByInstancePool", resp, "Failure responding to request") 569 return 570 } 571 if result.milr.hasNextLink() && result.milr.IsEmpty() { 572 err = result.NextWithContext(ctx) 573 return 574 } 575 576 return 577} 578 579// ListByInstancePoolPreparer prepares the ListByInstancePool request. 580func (client ManagedInstancesClient) ListByInstancePoolPreparer(ctx context.Context, resourceGroupName string, instancePoolName string) (*http.Request, error) { 581 pathParameters := map[string]interface{}{ 582 "instancePoolName": autorest.Encode("path", instancePoolName), 583 "resourceGroupName": autorest.Encode("path", resourceGroupName), 584 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 585 } 586 587 const APIVersion = "2020-02-02-preview" 588 queryParameters := map[string]interface{}{ 589 "api-version": APIVersion, 590 } 591 592 preparer := autorest.CreatePreparer( 593 autorest.AsGet(), 594 autorest.WithBaseURL(client.BaseURI), 595 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/instancePools/{instancePoolName}/managedInstances", pathParameters), 596 autorest.WithQueryParameters(queryParameters)) 597 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 598} 599 600// ListByInstancePoolSender sends the ListByInstancePool request. The method will close the 601// http.Response Body if it receives an error. 602func (client ManagedInstancesClient) ListByInstancePoolSender(req *http.Request) (*http.Response, error) { 603 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 604} 605 606// ListByInstancePoolResponder handles the response to the ListByInstancePool request. The method always 607// closes the http.Response Body. 608func (client ManagedInstancesClient) ListByInstancePoolResponder(resp *http.Response) (result ManagedInstanceListResult, err error) { 609 err = autorest.Respond( 610 resp, 611 azure.WithErrorUnlessStatusCode(http.StatusOK), 612 autorest.ByUnmarshallingJSON(&result), 613 autorest.ByClosing()) 614 result.Response = autorest.Response{Response: resp} 615 return 616} 617 618// listByInstancePoolNextResults retrieves the next set of results, if any. 619func (client ManagedInstancesClient) listByInstancePoolNextResults(ctx context.Context, lastResults ManagedInstanceListResult) (result ManagedInstanceListResult, err error) { 620 req, err := lastResults.managedInstanceListResultPreparer(ctx) 621 if err != nil { 622 return result, autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "listByInstancePoolNextResults", nil, "Failure preparing next results request") 623 } 624 if req == nil { 625 return 626 } 627 resp, err := client.ListByInstancePoolSender(req) 628 if err != nil { 629 result.Response = autorest.Response{Response: resp} 630 return result, autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "listByInstancePoolNextResults", resp, "Failure sending next results request") 631 } 632 result, err = client.ListByInstancePoolResponder(resp) 633 if err != nil { 634 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "listByInstancePoolNextResults", resp, "Failure responding to next results request") 635 } 636 return 637} 638 639// ListByInstancePoolComplete enumerates all values, automatically crossing page boundaries as required. 640func (client ManagedInstancesClient) ListByInstancePoolComplete(ctx context.Context, resourceGroupName string, instancePoolName string) (result ManagedInstanceListResultIterator, err error) { 641 if tracing.IsEnabled() { 642 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstancesClient.ListByInstancePool") 643 defer func() { 644 sc := -1 645 if result.Response().Response.Response != nil { 646 sc = result.page.Response().Response.Response.StatusCode 647 } 648 tracing.EndSpan(ctx, sc, err) 649 }() 650 } 651 result.page, err = client.ListByInstancePool(ctx, resourceGroupName, instancePoolName) 652 return 653} 654 655// ListByManagedInstance get top resource consuming queries of a managed instance. 656// Parameters: 657// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 658// from the Azure Resource Manager API or the portal. 659// managedInstanceName - the name of the managed instance. 660// numberOfQueries - how many 'top queries' to return. Default is 5. 661// databases - comma separated list of databases to be included into search. All DB's are included if this 662// parameter is not specified. 663// startTime - start time for observed period. 664// endTime - end time for observed period. 665// interval - the time step to be used to summarize the metric values. Default value is PT1H 666// aggregationFunction - aggregation function to be used, default value is 'sum' 667// observationMetric - metric to be used for ranking top queries. Default is 'cpu' 668func (client ManagedInstancesClient) ListByManagedInstance(ctx context.Context, resourceGroupName string, managedInstanceName string, numberOfQueries *int32, databases string, startTime string, endTime string, interval QueryTimeGrainType, aggregationFunction AggregationFunctionType, observationMetric MetricType) (result TopQueriesListResultPage, err error) { 669 if tracing.IsEnabled() { 670 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstancesClient.ListByManagedInstance") 671 defer func() { 672 sc := -1 673 if result.tqlr.Response.Response != nil { 674 sc = result.tqlr.Response.Response.StatusCode 675 } 676 tracing.EndSpan(ctx, sc, err) 677 }() 678 } 679 result.fn = client.listByManagedInstanceNextResults 680 req, err := client.ListByManagedInstancePreparer(ctx, resourceGroupName, managedInstanceName, numberOfQueries, databases, startTime, endTime, interval, aggregationFunction, observationMetric) 681 if err != nil { 682 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "ListByManagedInstance", nil, "Failure preparing request") 683 return 684 } 685 686 resp, err := client.ListByManagedInstanceSender(req) 687 if err != nil { 688 result.tqlr.Response = autorest.Response{Response: resp} 689 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "ListByManagedInstance", resp, "Failure sending request") 690 return 691 } 692 693 result.tqlr, err = client.ListByManagedInstanceResponder(resp) 694 if err != nil { 695 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "ListByManagedInstance", resp, "Failure responding to request") 696 return 697 } 698 if result.tqlr.hasNextLink() && result.tqlr.IsEmpty() { 699 err = result.NextWithContext(ctx) 700 return 701 } 702 703 return 704} 705 706// ListByManagedInstancePreparer prepares the ListByManagedInstance request. 707func (client ManagedInstancesClient) ListByManagedInstancePreparer(ctx context.Context, resourceGroupName string, managedInstanceName string, numberOfQueries *int32, databases string, startTime string, endTime string, interval QueryTimeGrainType, aggregationFunction AggregationFunctionType, observationMetric MetricType) (*http.Request, error) { 708 pathParameters := map[string]interface{}{ 709 "managedInstanceName": autorest.Encode("path", managedInstanceName), 710 "resourceGroupName": autorest.Encode("path", resourceGroupName), 711 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 712 } 713 714 const APIVersion = "2020-02-02-preview" 715 queryParameters := map[string]interface{}{ 716 "api-version": APIVersion, 717 } 718 if numberOfQueries != nil { 719 queryParameters["numberOfQueries"] = autorest.Encode("query", *numberOfQueries) 720 } 721 if len(databases) > 0 { 722 queryParameters["databases"] = autorest.Encode("query", databases) 723 } 724 if len(startTime) > 0 { 725 queryParameters["startTime"] = autorest.Encode("query", startTime) 726 } 727 if len(endTime) > 0 { 728 queryParameters["endTime"] = autorest.Encode("query", endTime) 729 } 730 if len(string(interval)) > 0 { 731 queryParameters["interval"] = autorest.Encode("query", interval) 732 } 733 if len(string(aggregationFunction)) > 0 { 734 queryParameters["aggregationFunction"] = autorest.Encode("query", aggregationFunction) 735 } 736 if len(string(observationMetric)) > 0 { 737 queryParameters["observationMetric"] = autorest.Encode("query", observationMetric) 738 } 739 740 preparer := autorest.CreatePreparer( 741 autorest.AsGet(), 742 autorest.WithBaseURL(client.BaseURI), 743 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}/topqueries", pathParameters), 744 autorest.WithQueryParameters(queryParameters)) 745 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 746} 747 748// ListByManagedInstanceSender sends the ListByManagedInstance request. The method will close the 749// http.Response Body if it receives an error. 750func (client ManagedInstancesClient) ListByManagedInstanceSender(req *http.Request) (*http.Response, error) { 751 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 752} 753 754// ListByManagedInstanceResponder handles the response to the ListByManagedInstance request. The method always 755// closes the http.Response Body. 756func (client ManagedInstancesClient) ListByManagedInstanceResponder(resp *http.Response) (result TopQueriesListResult, err error) { 757 err = autorest.Respond( 758 resp, 759 azure.WithErrorUnlessStatusCode(http.StatusOK), 760 autorest.ByUnmarshallingJSON(&result), 761 autorest.ByClosing()) 762 result.Response = autorest.Response{Response: resp} 763 return 764} 765 766// listByManagedInstanceNextResults retrieves the next set of results, if any. 767func (client ManagedInstancesClient) listByManagedInstanceNextResults(ctx context.Context, lastResults TopQueriesListResult) (result TopQueriesListResult, err error) { 768 req, err := lastResults.topQueriesListResultPreparer(ctx) 769 if err != nil { 770 return result, autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "listByManagedInstanceNextResults", nil, "Failure preparing next results request") 771 } 772 if req == nil { 773 return 774 } 775 resp, err := client.ListByManagedInstanceSender(req) 776 if err != nil { 777 result.Response = autorest.Response{Response: resp} 778 return result, autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "listByManagedInstanceNextResults", resp, "Failure sending next results request") 779 } 780 result, err = client.ListByManagedInstanceResponder(resp) 781 if err != nil { 782 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "listByManagedInstanceNextResults", resp, "Failure responding to next results request") 783 } 784 return 785} 786 787// ListByManagedInstanceComplete enumerates all values, automatically crossing page boundaries as required. 788func (client ManagedInstancesClient) ListByManagedInstanceComplete(ctx context.Context, resourceGroupName string, managedInstanceName string, numberOfQueries *int32, databases string, startTime string, endTime string, interval QueryTimeGrainType, aggregationFunction AggregationFunctionType, observationMetric MetricType) (result TopQueriesListResultIterator, err error) { 789 if tracing.IsEnabled() { 790 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstancesClient.ListByManagedInstance") 791 defer func() { 792 sc := -1 793 if result.Response().Response.Response != nil { 794 sc = result.page.Response().Response.Response.StatusCode 795 } 796 tracing.EndSpan(ctx, sc, err) 797 }() 798 } 799 result.page, err = client.ListByManagedInstance(ctx, resourceGroupName, managedInstanceName, numberOfQueries, databases, startTime, endTime, interval, aggregationFunction, observationMetric) 800 return 801} 802 803// ListByResourceGroup gets a list of managed instances in a resource group. 804// Parameters: 805// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 806// from the Azure Resource Manager API or the portal. 807func (client ManagedInstancesClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ManagedInstanceListResultPage, err error) { 808 if tracing.IsEnabled() { 809 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstancesClient.ListByResourceGroup") 810 defer func() { 811 sc := -1 812 if result.milr.Response.Response != nil { 813 sc = result.milr.Response.Response.StatusCode 814 } 815 tracing.EndSpan(ctx, sc, err) 816 }() 817 } 818 result.fn = client.listByResourceGroupNextResults 819 req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) 820 if err != nil { 821 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "ListByResourceGroup", nil, "Failure preparing request") 822 return 823 } 824 825 resp, err := client.ListByResourceGroupSender(req) 826 if err != nil { 827 result.milr.Response = autorest.Response{Response: resp} 828 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "ListByResourceGroup", resp, "Failure sending request") 829 return 830 } 831 832 result.milr, err = client.ListByResourceGroupResponder(resp) 833 if err != nil { 834 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "ListByResourceGroup", resp, "Failure responding to request") 835 return 836 } 837 if result.milr.hasNextLink() && result.milr.IsEmpty() { 838 err = result.NextWithContext(ctx) 839 return 840 } 841 842 return 843} 844 845// ListByResourceGroupPreparer prepares the ListByResourceGroup request. 846func (client ManagedInstancesClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { 847 pathParameters := map[string]interface{}{ 848 "resourceGroupName": autorest.Encode("path", resourceGroupName), 849 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 850 } 851 852 const APIVersion = "2020-02-02-preview" 853 queryParameters := map[string]interface{}{ 854 "api-version": APIVersion, 855 } 856 857 preparer := autorest.CreatePreparer( 858 autorest.AsGet(), 859 autorest.WithBaseURL(client.BaseURI), 860 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances", pathParameters), 861 autorest.WithQueryParameters(queryParameters)) 862 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 863} 864 865// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the 866// http.Response Body if it receives an error. 867func (client ManagedInstancesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { 868 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 869} 870 871// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always 872// closes the http.Response Body. 873func (client ManagedInstancesClient) ListByResourceGroupResponder(resp *http.Response) (result ManagedInstanceListResult, err error) { 874 err = autorest.Respond( 875 resp, 876 azure.WithErrorUnlessStatusCode(http.StatusOK), 877 autorest.ByUnmarshallingJSON(&result), 878 autorest.ByClosing()) 879 result.Response = autorest.Response{Response: resp} 880 return 881} 882 883// listByResourceGroupNextResults retrieves the next set of results, if any. 884func (client ManagedInstancesClient) listByResourceGroupNextResults(ctx context.Context, lastResults ManagedInstanceListResult) (result ManagedInstanceListResult, err error) { 885 req, err := lastResults.managedInstanceListResultPreparer(ctx) 886 if err != nil { 887 return result, autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") 888 } 889 if req == nil { 890 return 891 } 892 resp, err := client.ListByResourceGroupSender(req) 893 if err != nil { 894 result.Response = autorest.Response{Response: resp} 895 return result, autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") 896 } 897 result, err = client.ListByResourceGroupResponder(resp) 898 if err != nil { 899 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") 900 } 901 return 902} 903 904// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. 905func (client ManagedInstancesClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result ManagedInstanceListResultIterator, err error) { 906 if tracing.IsEnabled() { 907 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstancesClient.ListByResourceGroup") 908 defer func() { 909 sc := -1 910 if result.Response().Response.Response != nil { 911 sc = result.page.Response().Response.Response.StatusCode 912 } 913 tracing.EndSpan(ctx, sc, err) 914 }() 915 } 916 result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) 917 return 918} 919 920// Update updates a managed instance. 921// Parameters: 922// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 923// from the Azure Resource Manager API or the portal. 924// managedInstanceName - the name of the managed instance. 925// parameters - the requested managed instance resource state. 926func (client ManagedInstancesClient) Update(ctx context.Context, resourceGroupName string, managedInstanceName string, parameters ManagedInstanceUpdate) (result ManagedInstancesUpdateFuture, err error) { 927 if tracing.IsEnabled() { 928 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstancesClient.Update") 929 defer func() { 930 sc := -1 931 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 932 sc = result.FutureAPI.Response().StatusCode 933 } 934 tracing.EndSpan(ctx, sc, err) 935 }() 936 } 937 req, err := client.UpdatePreparer(ctx, resourceGroupName, managedInstanceName, parameters) 938 if err != nil { 939 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "Update", nil, "Failure preparing request") 940 return 941 } 942 943 result, err = client.UpdateSender(req) 944 if err != nil { 945 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesClient", "Update", nil, "Failure sending request") 946 return 947 } 948 949 return 950} 951 952// UpdatePreparer prepares the Update request. 953func (client ManagedInstancesClient) UpdatePreparer(ctx context.Context, resourceGroupName string, managedInstanceName string, parameters ManagedInstanceUpdate) (*http.Request, error) { 954 pathParameters := map[string]interface{}{ 955 "managedInstanceName": autorest.Encode("path", managedInstanceName), 956 "resourceGroupName": autorest.Encode("path", resourceGroupName), 957 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 958 } 959 960 const APIVersion = "2020-02-02-preview" 961 queryParameters := map[string]interface{}{ 962 "api-version": APIVersion, 963 } 964 965 preparer := autorest.CreatePreparer( 966 autorest.AsContentType("application/json; charset=utf-8"), 967 autorest.AsPatch(), 968 autorest.WithBaseURL(client.BaseURI), 969 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}", pathParameters), 970 autorest.WithJSON(parameters), 971 autorest.WithQueryParameters(queryParameters)) 972 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 973} 974 975// UpdateSender sends the Update request. The method will close the 976// http.Response Body if it receives an error. 977func (client ManagedInstancesClient) UpdateSender(req *http.Request) (future ManagedInstancesUpdateFuture, err error) { 978 var resp *http.Response 979 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 980 if err != nil { 981 return 982 } 983 var azf azure.Future 984 azf, err = azure.NewFutureFromResponse(resp) 985 future.FutureAPI = &azf 986 future.Result = func(client ManagedInstancesClient) (mi ManagedInstance, err error) { 987 var done bool 988 done, err = future.DoneWithContext(context.Background(), client) 989 if err != nil { 990 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesUpdateFuture", "Result", future.Response(), "Polling failure") 991 return 992 } 993 if !done { 994 err = azure.NewAsyncOpIncompleteError("sql.ManagedInstancesUpdateFuture") 995 return 996 } 997 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 998 mi.Response.Response, err = future.GetResult(sender) 999 if mi.Response.Response == nil && err == nil { 1000 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesUpdateFuture", "Result", nil, "received nil response and error") 1001 } 1002 if err == nil && mi.Response.Response.StatusCode != http.StatusNoContent { 1003 mi, err = client.UpdateResponder(mi.Response.Response) 1004 if err != nil { 1005 err = autorest.NewErrorWithError(err, "sql.ManagedInstancesUpdateFuture", "Result", mi.Response.Response, "Failure responding to request") 1006 } 1007 } 1008 return 1009 } 1010 return 1011} 1012 1013// UpdateResponder handles the response to the Update request. The method always 1014// closes the http.Response Body. 1015func (client ManagedInstancesClient) UpdateResponder(resp *http.Response) (result ManagedInstance, err error) { 1016 err = autorest.Respond( 1017 resp, 1018 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), 1019 autorest.ByUnmarshallingJSON(&result), 1020 autorest.ByClosing()) 1021 result.Response = autorest.Response{Response: resp} 1022 return 1023} 1024