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