1package insights
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// AutoscaleSettingsClient is the monitor Management Client
19type AutoscaleSettingsClient struct {
20	BaseClient
21}
22
23// NewAutoscaleSettingsClient creates an instance of the AutoscaleSettingsClient client.
24func NewAutoscaleSettingsClient(subscriptionID string) AutoscaleSettingsClient {
25	return NewAutoscaleSettingsClientWithBaseURI(DefaultBaseURI, subscriptionID)
26}
27
28// NewAutoscaleSettingsClientWithBaseURI creates an instance of the AutoscaleSettingsClient client using a custom
29// endpoint.  Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure
30// stack).
31func NewAutoscaleSettingsClientWithBaseURI(baseURI string, subscriptionID string) AutoscaleSettingsClient {
32	return AutoscaleSettingsClient{NewWithBaseURI(baseURI, subscriptionID)}
33}
34
35// CreateOrUpdate creates or updates an autoscale setting.
36// Parameters:
37// resourceGroupName - the name of the resource group. The name is case insensitive.
38// autoscaleSettingName - the autoscale setting name.
39// parameters - parameters supplied to the operation.
40func (client AutoscaleSettingsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, autoscaleSettingName string, parameters AutoscaleSettingResource) (result AutoscaleSettingResource, err error) {
41	if tracing.IsEnabled() {
42		ctx = tracing.StartSpan(ctx, fqdn+"/AutoscaleSettingsClient.CreateOrUpdate")
43		defer func() {
44			sc := -1
45			if result.Response.Response != nil {
46				sc = result.Response.Response.StatusCode
47			}
48			tracing.EndSpan(ctx, sc, err)
49		}()
50	}
51	if err := validation.Validate([]validation.Validation{
52		{TargetValue: resourceGroupName,
53			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
54				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}},
55		{TargetValue: parameters,
56			Constraints: []validation.Constraint{{Target: "parameters.AutoscaleSetting", Name: validation.Null, Rule: true,
57				Chain: []validation.Constraint{{Target: "parameters.AutoscaleSetting.Profiles", Name: validation.Null, Rule: true,
58					Chain: []validation.Constraint{{Target: "parameters.AutoscaleSetting.Profiles", Name: validation.MaxItems, Rule: 20, Chain: nil}}},
59				}}}},
60		{TargetValue: client.SubscriptionID,
61			Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
62		return result, validation.NewError("insights.AutoscaleSettingsClient", "CreateOrUpdate", err.Error())
63	}
64
65	req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, autoscaleSettingName, parameters)
66	if err != nil {
67		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "CreateOrUpdate", nil, "Failure preparing request")
68		return
69	}
70
71	resp, err := client.CreateOrUpdateSender(req)
72	if err != nil {
73		result.Response = autorest.Response{Response: resp}
74		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "CreateOrUpdate", resp, "Failure sending request")
75		return
76	}
77
78	result, err = client.CreateOrUpdateResponder(resp)
79	if err != nil {
80		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "CreateOrUpdate", resp, "Failure responding to request")
81		return
82	}
83
84	return
85}
86
87// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
88func (client AutoscaleSettingsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, autoscaleSettingName string, parameters AutoscaleSettingResource) (*http.Request, error) {
89	pathParameters := map[string]interface{}{
90		"autoscaleSettingName": autorest.Encode("path", autoscaleSettingName),
91		"resourceGroupName":    autorest.Encode("path", resourceGroupName),
92		"subscriptionId":       autorest.Encode("path", client.SubscriptionID),
93	}
94
95	const APIVersion = "2015-04-01"
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.Insights/autoscalesettings/{autoscaleSettingName}", 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 AutoscaleSettingsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
113	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
114}
115
116// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
117// closes the http.Response Body.
118func (client AutoscaleSettingsClient) CreateOrUpdateResponder(resp *http.Response) (result AutoscaleSettingResource, err error) {
119	err = autorest.Respond(
120		resp,
121		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
122		autorest.ByUnmarshallingJSON(&result),
123		autorest.ByClosing())
124	result.Response = autorest.Response{Response: resp}
125	return
126}
127
128// Delete deletes and autoscale setting
129// Parameters:
130// resourceGroupName - the name of the resource group. The name is case insensitive.
131// autoscaleSettingName - the autoscale setting name.
132func (client AutoscaleSettingsClient) Delete(ctx context.Context, resourceGroupName string, autoscaleSettingName string) (result autorest.Response, err error) {
133	if tracing.IsEnabled() {
134		ctx = tracing.StartSpan(ctx, fqdn+"/AutoscaleSettingsClient.Delete")
135		defer func() {
136			sc := -1
137			if result.Response != nil {
138				sc = result.Response.StatusCode
139			}
140			tracing.EndSpan(ctx, sc, err)
141		}()
142	}
143	if err := validation.Validate([]validation.Validation{
144		{TargetValue: resourceGroupName,
145			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
146				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}},
147		{TargetValue: client.SubscriptionID,
148			Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
149		return result, validation.NewError("insights.AutoscaleSettingsClient", "Delete", err.Error())
150	}
151
152	req, err := client.DeletePreparer(ctx, resourceGroupName, autoscaleSettingName)
153	if err != nil {
154		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "Delete", nil, "Failure preparing request")
155		return
156	}
157
158	resp, err := client.DeleteSender(req)
159	if err != nil {
160		result.Response = resp
161		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "Delete", resp, "Failure sending request")
162		return
163	}
164
165	result, err = client.DeleteResponder(resp)
166	if err != nil {
167		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "Delete", resp, "Failure responding to request")
168		return
169	}
170
171	return
172}
173
174// DeletePreparer prepares the Delete request.
175func (client AutoscaleSettingsClient) DeletePreparer(ctx context.Context, resourceGroupName string, autoscaleSettingName string) (*http.Request, error) {
176	pathParameters := map[string]interface{}{
177		"autoscaleSettingName": autorest.Encode("path", autoscaleSettingName),
178		"resourceGroupName":    autorest.Encode("path", resourceGroupName),
179		"subscriptionId":       autorest.Encode("path", client.SubscriptionID),
180	}
181
182	const APIVersion = "2015-04-01"
183	queryParameters := map[string]interface{}{
184		"api-version": APIVersion,
185	}
186
187	preparer := autorest.CreatePreparer(
188		autorest.AsDelete(),
189		autorest.WithBaseURL(client.BaseURI),
190		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Insights/autoscalesettings/{autoscaleSettingName}", pathParameters),
191		autorest.WithQueryParameters(queryParameters))
192	return preparer.Prepare((&http.Request{}).WithContext(ctx))
193}
194
195// DeleteSender sends the Delete request. The method will close the
196// http.Response Body if it receives an error.
197func (client AutoscaleSettingsClient) DeleteSender(req *http.Request) (*http.Response, error) {
198	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
199}
200
201// DeleteResponder handles the response to the Delete request. The method always
202// closes the http.Response Body.
203func (client AutoscaleSettingsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
204	err = autorest.Respond(
205		resp,
206		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent),
207		autorest.ByClosing())
208	result.Response = resp
209	return
210}
211
212// Get gets an autoscale setting
213// Parameters:
214// resourceGroupName - the name of the resource group. The name is case insensitive.
215// autoscaleSettingName - the autoscale setting name.
216func (client AutoscaleSettingsClient) Get(ctx context.Context, resourceGroupName string, autoscaleSettingName string) (result AutoscaleSettingResource, err error) {
217	if tracing.IsEnabled() {
218		ctx = tracing.StartSpan(ctx, fqdn+"/AutoscaleSettingsClient.Get")
219		defer func() {
220			sc := -1
221			if result.Response.Response != nil {
222				sc = result.Response.Response.StatusCode
223			}
224			tracing.EndSpan(ctx, sc, err)
225		}()
226	}
227	if err := validation.Validate([]validation.Validation{
228		{TargetValue: resourceGroupName,
229			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
230				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}},
231		{TargetValue: client.SubscriptionID,
232			Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
233		return result, validation.NewError("insights.AutoscaleSettingsClient", "Get", err.Error())
234	}
235
236	req, err := client.GetPreparer(ctx, resourceGroupName, autoscaleSettingName)
237	if err != nil {
238		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "Get", nil, "Failure preparing request")
239		return
240	}
241
242	resp, err := client.GetSender(req)
243	if err != nil {
244		result.Response = autorest.Response{Response: resp}
245		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "Get", resp, "Failure sending request")
246		return
247	}
248
249	result, err = client.GetResponder(resp)
250	if err != nil {
251		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "Get", resp, "Failure responding to request")
252		return
253	}
254
255	return
256}
257
258// GetPreparer prepares the Get request.
259func (client AutoscaleSettingsClient) GetPreparer(ctx context.Context, resourceGroupName string, autoscaleSettingName string) (*http.Request, error) {
260	pathParameters := map[string]interface{}{
261		"autoscaleSettingName": autorest.Encode("path", autoscaleSettingName),
262		"resourceGroupName":    autorest.Encode("path", resourceGroupName),
263		"subscriptionId":       autorest.Encode("path", client.SubscriptionID),
264	}
265
266	const APIVersion = "2015-04-01"
267	queryParameters := map[string]interface{}{
268		"api-version": APIVersion,
269	}
270
271	preparer := autorest.CreatePreparer(
272		autorest.AsGet(),
273		autorest.WithBaseURL(client.BaseURI),
274		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Insights/autoscalesettings/{autoscaleSettingName}", pathParameters),
275		autorest.WithQueryParameters(queryParameters))
276	return preparer.Prepare((&http.Request{}).WithContext(ctx))
277}
278
279// GetSender sends the Get request. The method will close the
280// http.Response Body if it receives an error.
281func (client AutoscaleSettingsClient) GetSender(req *http.Request) (*http.Response, error) {
282	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
283}
284
285// GetResponder handles the response to the Get request. The method always
286// closes the http.Response Body.
287func (client AutoscaleSettingsClient) GetResponder(resp *http.Response) (result AutoscaleSettingResource, err error) {
288	err = autorest.Respond(
289		resp,
290		azure.WithErrorUnlessStatusCode(http.StatusOK),
291		autorest.ByUnmarshallingJSON(&result),
292		autorest.ByClosing())
293	result.Response = autorest.Response{Response: resp}
294	return
295}
296
297// ListByResourceGroup lists the autoscale settings for a resource group
298// Parameters:
299// resourceGroupName - the name of the resource group. The name is case insensitive.
300func (client AutoscaleSettingsClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result AutoscaleSettingResourceCollectionPage, err error) {
301	if tracing.IsEnabled() {
302		ctx = tracing.StartSpan(ctx, fqdn+"/AutoscaleSettingsClient.ListByResourceGroup")
303		defer func() {
304			sc := -1
305			if result.asrc.Response.Response != nil {
306				sc = result.asrc.Response.Response.StatusCode
307			}
308			tracing.EndSpan(ctx, sc, err)
309		}()
310	}
311	if err := validation.Validate([]validation.Validation{
312		{TargetValue: resourceGroupName,
313			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
314				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}},
315		{TargetValue: client.SubscriptionID,
316			Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
317		return result, validation.NewError("insights.AutoscaleSettingsClient", "ListByResourceGroup", err.Error())
318	}
319
320	result.fn = client.listByResourceGroupNextResults
321	req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName)
322	if err != nil {
323		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "ListByResourceGroup", nil, "Failure preparing request")
324		return
325	}
326
327	resp, err := client.ListByResourceGroupSender(req)
328	if err != nil {
329		result.asrc.Response = autorest.Response{Response: resp}
330		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "ListByResourceGroup", resp, "Failure sending request")
331		return
332	}
333
334	result.asrc, err = client.ListByResourceGroupResponder(resp)
335	if err != nil {
336		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "ListByResourceGroup", resp, "Failure responding to request")
337		return
338	}
339	if result.asrc.hasNextLink() && result.asrc.IsEmpty() {
340		err = result.NextWithContext(ctx)
341		return
342	}
343
344	return
345}
346
347// ListByResourceGroupPreparer prepares the ListByResourceGroup request.
348func (client AutoscaleSettingsClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
349	pathParameters := map[string]interface{}{
350		"resourceGroupName": autorest.Encode("path", resourceGroupName),
351		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
352	}
353
354	const APIVersion = "2015-04-01"
355	queryParameters := map[string]interface{}{
356		"api-version": APIVersion,
357	}
358
359	preparer := autorest.CreatePreparer(
360		autorest.AsGet(),
361		autorest.WithBaseURL(client.BaseURI),
362		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Insights/autoscalesettings", pathParameters),
363		autorest.WithQueryParameters(queryParameters))
364	return preparer.Prepare((&http.Request{}).WithContext(ctx))
365}
366
367// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
368// http.Response Body if it receives an error.
369func (client AutoscaleSettingsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
370	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
371}
372
373// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
374// closes the http.Response Body.
375func (client AutoscaleSettingsClient) ListByResourceGroupResponder(resp *http.Response) (result AutoscaleSettingResourceCollection, err error) {
376	err = autorest.Respond(
377		resp,
378		azure.WithErrorUnlessStatusCode(http.StatusOK),
379		autorest.ByUnmarshallingJSON(&result),
380		autorest.ByClosing())
381	result.Response = autorest.Response{Response: resp}
382	return
383}
384
385// listByResourceGroupNextResults retrieves the next set of results, if any.
386func (client AutoscaleSettingsClient) listByResourceGroupNextResults(ctx context.Context, lastResults AutoscaleSettingResourceCollection) (result AutoscaleSettingResourceCollection, err error) {
387	req, err := lastResults.autoscaleSettingResourceCollectionPreparer(ctx)
388	if err != nil {
389		return result, autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request")
390	}
391	if req == nil {
392		return
393	}
394	resp, err := client.ListByResourceGroupSender(req)
395	if err != nil {
396		result.Response = autorest.Response{Response: resp}
397		return result, autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "listByResourceGroupNextResults", resp, "Failure sending next results request")
398	}
399	result, err = client.ListByResourceGroupResponder(resp)
400	if err != nil {
401		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request")
402	}
403	return
404}
405
406// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required.
407func (client AutoscaleSettingsClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result AutoscaleSettingResourceCollectionIterator, err error) {
408	if tracing.IsEnabled() {
409		ctx = tracing.StartSpan(ctx, fqdn+"/AutoscaleSettingsClient.ListByResourceGroup")
410		defer func() {
411			sc := -1
412			if result.Response().Response.Response != nil {
413				sc = result.page.Response().Response.Response.StatusCode
414			}
415			tracing.EndSpan(ctx, sc, err)
416		}()
417	}
418	result.page, err = client.ListByResourceGroup(ctx, resourceGroupName)
419	return
420}
421
422// ListBySubscription lists the autoscale settings for a subscription
423func (client AutoscaleSettingsClient) ListBySubscription(ctx context.Context) (result AutoscaleSettingResourceCollectionPage, err error) {
424	if tracing.IsEnabled() {
425		ctx = tracing.StartSpan(ctx, fqdn+"/AutoscaleSettingsClient.ListBySubscription")
426		defer func() {
427			sc := -1
428			if result.asrc.Response.Response != nil {
429				sc = result.asrc.Response.Response.StatusCode
430			}
431			tracing.EndSpan(ctx, sc, err)
432		}()
433	}
434	if err := validation.Validate([]validation.Validation{
435		{TargetValue: client.SubscriptionID,
436			Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
437		return result, validation.NewError("insights.AutoscaleSettingsClient", "ListBySubscription", err.Error())
438	}
439
440	result.fn = client.listBySubscriptionNextResults
441	req, err := client.ListBySubscriptionPreparer(ctx)
442	if err != nil {
443		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "ListBySubscription", nil, "Failure preparing request")
444		return
445	}
446
447	resp, err := client.ListBySubscriptionSender(req)
448	if err != nil {
449		result.asrc.Response = autorest.Response{Response: resp}
450		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "ListBySubscription", resp, "Failure sending request")
451		return
452	}
453
454	result.asrc, err = client.ListBySubscriptionResponder(resp)
455	if err != nil {
456		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "ListBySubscription", resp, "Failure responding to request")
457		return
458	}
459	if result.asrc.hasNextLink() && result.asrc.IsEmpty() {
460		err = result.NextWithContext(ctx)
461		return
462	}
463
464	return
465}
466
467// ListBySubscriptionPreparer prepares the ListBySubscription request.
468func (client AutoscaleSettingsClient) ListBySubscriptionPreparer(ctx context.Context) (*http.Request, error) {
469	pathParameters := map[string]interface{}{
470		"subscriptionId": autorest.Encode("path", client.SubscriptionID),
471	}
472
473	const APIVersion = "2015-04-01"
474	queryParameters := map[string]interface{}{
475		"api-version": APIVersion,
476	}
477
478	preparer := autorest.CreatePreparer(
479		autorest.AsGet(),
480		autorest.WithBaseURL(client.BaseURI),
481		autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Insights/autoscalesettings", pathParameters),
482		autorest.WithQueryParameters(queryParameters))
483	return preparer.Prepare((&http.Request{}).WithContext(ctx))
484}
485
486// ListBySubscriptionSender sends the ListBySubscription request. The method will close the
487// http.Response Body if it receives an error.
488func (client AutoscaleSettingsClient) ListBySubscriptionSender(req *http.Request) (*http.Response, error) {
489	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
490}
491
492// ListBySubscriptionResponder handles the response to the ListBySubscription request. The method always
493// closes the http.Response Body.
494func (client AutoscaleSettingsClient) ListBySubscriptionResponder(resp *http.Response) (result AutoscaleSettingResourceCollection, err error) {
495	err = autorest.Respond(
496		resp,
497		azure.WithErrorUnlessStatusCode(http.StatusOK),
498		autorest.ByUnmarshallingJSON(&result),
499		autorest.ByClosing())
500	result.Response = autorest.Response{Response: resp}
501	return
502}
503
504// listBySubscriptionNextResults retrieves the next set of results, if any.
505func (client AutoscaleSettingsClient) listBySubscriptionNextResults(ctx context.Context, lastResults AutoscaleSettingResourceCollection) (result AutoscaleSettingResourceCollection, err error) {
506	req, err := lastResults.autoscaleSettingResourceCollectionPreparer(ctx)
507	if err != nil {
508		return result, autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "listBySubscriptionNextResults", nil, "Failure preparing next results request")
509	}
510	if req == nil {
511		return
512	}
513	resp, err := client.ListBySubscriptionSender(req)
514	if err != nil {
515		result.Response = autorest.Response{Response: resp}
516		return result, autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "listBySubscriptionNextResults", resp, "Failure sending next results request")
517	}
518	result, err = client.ListBySubscriptionResponder(resp)
519	if err != nil {
520		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "listBySubscriptionNextResults", resp, "Failure responding to next results request")
521	}
522	return
523}
524
525// ListBySubscriptionComplete enumerates all values, automatically crossing page boundaries as required.
526func (client AutoscaleSettingsClient) ListBySubscriptionComplete(ctx context.Context) (result AutoscaleSettingResourceCollectionIterator, err error) {
527	if tracing.IsEnabled() {
528		ctx = tracing.StartSpan(ctx, fqdn+"/AutoscaleSettingsClient.ListBySubscription")
529		defer func() {
530			sc := -1
531			if result.Response().Response.Response != nil {
532				sc = result.page.Response().Response.Response.StatusCode
533			}
534			tracing.EndSpan(ctx, sc, err)
535		}()
536	}
537	result.page, err = client.ListBySubscription(ctx)
538	return
539}
540
541// Update updates an existing AutoscaleSettingsResource. To update other fields use the CreateOrUpdate method.
542// Parameters:
543// resourceGroupName - the name of the resource group. The name is case insensitive.
544// autoscaleSettingName - the autoscale setting name.
545// autoscaleSettingResource - parameters supplied to the operation.
546func (client AutoscaleSettingsClient) Update(ctx context.Context, resourceGroupName string, autoscaleSettingName string, autoscaleSettingResource AutoscaleSettingResourcePatch) (result AutoscaleSettingResource, err error) {
547	if tracing.IsEnabled() {
548		ctx = tracing.StartSpan(ctx, fqdn+"/AutoscaleSettingsClient.Update")
549		defer func() {
550			sc := -1
551			if result.Response.Response != nil {
552				sc = result.Response.Response.StatusCode
553			}
554			tracing.EndSpan(ctx, sc, err)
555		}()
556	}
557	if err := validation.Validate([]validation.Validation{
558		{TargetValue: client.SubscriptionID,
559			Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}},
560		{TargetValue: resourceGroupName,
561			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
562				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
563		return result, validation.NewError("insights.AutoscaleSettingsClient", "Update", err.Error())
564	}
565
566	req, err := client.UpdatePreparer(ctx, resourceGroupName, autoscaleSettingName, autoscaleSettingResource)
567	if err != nil {
568		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "Update", nil, "Failure preparing request")
569		return
570	}
571
572	resp, err := client.UpdateSender(req)
573	if err != nil {
574		result.Response = autorest.Response{Response: resp}
575		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "Update", resp, "Failure sending request")
576		return
577	}
578
579	result, err = client.UpdateResponder(resp)
580	if err != nil {
581		err = autorest.NewErrorWithError(err, "insights.AutoscaleSettingsClient", "Update", resp, "Failure responding to request")
582		return
583	}
584
585	return
586}
587
588// UpdatePreparer prepares the Update request.
589func (client AutoscaleSettingsClient) UpdatePreparer(ctx context.Context, resourceGroupName string, autoscaleSettingName string, autoscaleSettingResource AutoscaleSettingResourcePatch) (*http.Request, error) {
590	pathParameters := map[string]interface{}{
591		"autoscaleSettingName": autorest.Encode("path", autoscaleSettingName),
592		"resourceGroupName":    autorest.Encode("path", resourceGroupName),
593		"subscriptionId":       autorest.Encode("path", client.SubscriptionID),
594	}
595
596	const APIVersion = "2015-04-01"
597	queryParameters := map[string]interface{}{
598		"api-version": APIVersion,
599	}
600
601	preparer := autorest.CreatePreparer(
602		autorest.AsContentType("application/json; charset=utf-8"),
603		autorest.AsPatch(),
604		autorest.WithBaseURL(client.BaseURI),
605		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Insights/autoscalesettings/{autoscaleSettingName}", pathParameters),
606		autorest.WithJSON(autoscaleSettingResource),
607		autorest.WithQueryParameters(queryParameters))
608	return preparer.Prepare((&http.Request{}).WithContext(ctx))
609}
610
611// UpdateSender sends the Update request. The method will close the
612// http.Response Body if it receives an error.
613func (client AutoscaleSettingsClient) UpdateSender(req *http.Request) (*http.Response, error) {
614	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
615}
616
617// UpdateResponder handles the response to the Update request. The method always
618// closes the http.Response Body.
619func (client AutoscaleSettingsClient) UpdateResponder(resp *http.Response) (result AutoscaleSettingResource, err error) {
620	err = autorest.Respond(
621		resp,
622		azure.WithErrorUnlessStatusCode(http.StatusOK),
623		autorest.ByUnmarshallingJSON(&result),
624		autorest.ByClosing())
625	result.Response = autorest.Response{Response: resp}
626	return
627}
628