1package web
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// AppServiceEnvironmentsClient is the webSite Management Client
19type AppServiceEnvironmentsClient struct {
20	BaseClient
21}
22
23// NewAppServiceEnvironmentsClient creates an instance of the AppServiceEnvironmentsClient client.
24func NewAppServiceEnvironmentsClient(subscriptionID string) AppServiceEnvironmentsClient {
25	return NewAppServiceEnvironmentsClientWithBaseURI(DefaultBaseURI, subscriptionID)
26}
27
28// NewAppServiceEnvironmentsClientWithBaseURI creates an instance of the AppServiceEnvironmentsClient client using a
29// custom endpoint.  Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds,
30// Azure stack).
31func NewAppServiceEnvironmentsClientWithBaseURI(baseURI string, subscriptionID string) AppServiceEnvironmentsClient {
32	return AppServiceEnvironmentsClient{NewWithBaseURI(baseURI, subscriptionID)}
33}
34
35// CreateOrUpdate create or update an App Service Environment.
36// Parameters:
37// resourceGroupName - name of the resource group to which the resource belongs.
38// name - name of the App Service Environment.
39// hostingEnvironmentEnvelope - configuration details of the App Service Environment.
40func (client AppServiceEnvironmentsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, name string, hostingEnvironmentEnvelope AppServiceEnvironmentResource) (result AppServiceEnvironmentsCreateOrUpdateFuture, err error) {
41	if tracing.IsEnabled() {
42		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.CreateOrUpdate")
43		defer func() {
44			sc := -1
45			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
46				sc = result.FutureAPI.Response().StatusCode
47			}
48			tracing.EndSpan(ctx, sc, err)
49		}()
50	}
51	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				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}},
56		{TargetValue: hostingEnvironmentEnvelope,
57			Constraints: []validation.Constraint{{Target: "hostingEnvironmentEnvelope.AppServiceEnvironment", Name: validation.Null, Rule: false,
58				Chain: []validation.Constraint{{Target: "hostingEnvironmentEnvelope.AppServiceEnvironment.Name", Name: validation.Null, Rule: true, Chain: nil},
59					{Target: "hostingEnvironmentEnvelope.AppServiceEnvironment.Location", Name: validation.Null, Rule: true, Chain: nil},
60					{Target: "hostingEnvironmentEnvelope.AppServiceEnvironment.VirtualNetwork", Name: validation.Null, Rule: true, Chain: nil},
61					{Target: "hostingEnvironmentEnvelope.AppServiceEnvironment.WorkerPools", Name: validation.Null, Rule: true, Chain: nil},
62				}}}}}); err != nil {
63		return result, validation.NewError("web.AppServiceEnvironmentsClient", "CreateOrUpdate", err.Error())
64	}
65
66	req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, name, hostingEnvironmentEnvelope)
67	if err != nil {
68		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "CreateOrUpdate", nil, "Failure preparing request")
69		return
70	}
71
72	result, err = client.CreateOrUpdateSender(req)
73	if err != nil {
74		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "CreateOrUpdate", nil, "Failure sending request")
75		return
76	}
77
78	return
79}
80
81// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
82func (client AppServiceEnvironmentsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, name string, hostingEnvironmentEnvelope AppServiceEnvironmentResource) (*http.Request, error) {
83	pathParameters := map[string]interface{}{
84		"name":              autorest.Encode("path", name),
85		"resourceGroupName": autorest.Encode("path", resourceGroupName),
86		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
87	}
88
89	const APIVersion = "2016-09-01"
90	queryParameters := map[string]interface{}{
91		"api-version": APIVersion,
92	}
93
94	preparer := autorest.CreatePreparer(
95		autorest.AsContentType("application/json; charset=utf-8"),
96		autorest.AsPut(),
97		autorest.WithBaseURL(client.BaseURI),
98		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}", pathParameters),
99		autorest.WithJSON(hostingEnvironmentEnvelope),
100		autorest.WithQueryParameters(queryParameters))
101	return preparer.Prepare((&http.Request{}).WithContext(ctx))
102}
103
104// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
105// http.Response Body if it receives an error.
106func (client AppServiceEnvironmentsClient) CreateOrUpdateSender(req *http.Request) (future AppServiceEnvironmentsCreateOrUpdateFuture, err error) {
107	var resp *http.Response
108	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
109	if err != nil {
110		return
111	}
112	var azf azure.Future
113	azf, err = azure.NewFutureFromResponse(resp)
114	future.FutureAPI = &azf
115	future.Result = future.result
116	return
117}
118
119// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
120// closes the http.Response Body.
121func (client AppServiceEnvironmentsClient) CreateOrUpdateResponder(resp *http.Response) (result AppServiceEnvironmentResource, err error) {
122	err = autorest.Respond(
123		resp,
124		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusBadRequest, http.StatusNotFound, http.StatusConflict),
125		autorest.ByUnmarshallingJSON(&result),
126		autorest.ByClosing())
127	result.Response = autorest.Response{Response: resp}
128	return
129}
130
131// CreateOrUpdateMultiRolePool create or update a multi-role pool.
132// Parameters:
133// resourceGroupName - name of the resource group to which the resource belongs.
134// name - name of the App Service Environment.
135// multiRolePoolEnvelope - properties of the multi-role pool.
136func (client AppServiceEnvironmentsClient) CreateOrUpdateMultiRolePool(ctx context.Context, resourceGroupName string, name string, multiRolePoolEnvelope WorkerPoolResource) (result AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture, err error) {
137	if tracing.IsEnabled() {
138		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.CreateOrUpdateMultiRolePool")
139		defer func() {
140			sc := -1
141			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
142				sc = result.FutureAPI.Response().StatusCode
143			}
144			tracing.EndSpan(ctx, sc, err)
145		}()
146	}
147	if err := validation.Validate([]validation.Validation{
148		{TargetValue: resourceGroupName,
149			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
150				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
151				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
152		return result, validation.NewError("web.AppServiceEnvironmentsClient", "CreateOrUpdateMultiRolePool", err.Error())
153	}
154
155	req, err := client.CreateOrUpdateMultiRolePoolPreparer(ctx, resourceGroupName, name, multiRolePoolEnvelope)
156	if err != nil {
157		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "CreateOrUpdateMultiRolePool", nil, "Failure preparing request")
158		return
159	}
160
161	result, err = client.CreateOrUpdateMultiRolePoolSender(req)
162	if err != nil {
163		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "CreateOrUpdateMultiRolePool", nil, "Failure sending request")
164		return
165	}
166
167	return
168}
169
170// CreateOrUpdateMultiRolePoolPreparer prepares the CreateOrUpdateMultiRolePool request.
171func (client AppServiceEnvironmentsClient) CreateOrUpdateMultiRolePoolPreparer(ctx context.Context, resourceGroupName string, name string, multiRolePoolEnvelope WorkerPoolResource) (*http.Request, error) {
172	pathParameters := map[string]interface{}{
173		"name":              autorest.Encode("path", name),
174		"resourceGroupName": autorest.Encode("path", resourceGroupName),
175		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
176	}
177
178	const APIVersion = "2016-09-01"
179	queryParameters := map[string]interface{}{
180		"api-version": APIVersion,
181	}
182
183	preparer := autorest.CreatePreparer(
184		autorest.AsContentType("application/json; charset=utf-8"),
185		autorest.AsPut(),
186		autorest.WithBaseURL(client.BaseURI),
187		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default", pathParameters),
188		autorest.WithJSON(multiRolePoolEnvelope),
189		autorest.WithQueryParameters(queryParameters))
190	return preparer.Prepare((&http.Request{}).WithContext(ctx))
191}
192
193// CreateOrUpdateMultiRolePoolSender sends the CreateOrUpdateMultiRolePool request. The method will close the
194// http.Response Body if it receives an error.
195func (client AppServiceEnvironmentsClient) CreateOrUpdateMultiRolePoolSender(req *http.Request) (future AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture, err error) {
196	var resp *http.Response
197	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
198	if err != nil {
199		return
200	}
201	var azf azure.Future
202	azf, err = azure.NewFutureFromResponse(resp)
203	future.FutureAPI = &azf
204	future.Result = future.result
205	return
206}
207
208// CreateOrUpdateMultiRolePoolResponder handles the response to the CreateOrUpdateMultiRolePool request. The method always
209// closes the http.Response Body.
210func (client AppServiceEnvironmentsClient) CreateOrUpdateMultiRolePoolResponder(resp *http.Response) (result WorkerPoolResource, err error) {
211	err = autorest.Respond(
212		resp,
213		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusBadRequest, http.StatusNotFound, http.StatusConflict),
214		autorest.ByUnmarshallingJSON(&result),
215		autorest.ByClosing())
216	result.Response = autorest.Response{Response: resp}
217	return
218}
219
220// CreateOrUpdateWorkerPool create or update a worker pool.
221// Parameters:
222// resourceGroupName - name of the resource group to which the resource belongs.
223// name - name of the App Service Environment.
224// workerPoolName - name of the worker pool.
225// workerPoolEnvelope - properties of the worker pool.
226func (client AppServiceEnvironmentsClient) CreateOrUpdateWorkerPool(ctx context.Context, resourceGroupName string, name string, workerPoolName string, workerPoolEnvelope WorkerPoolResource) (result AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture, err error) {
227	if tracing.IsEnabled() {
228		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.CreateOrUpdateWorkerPool")
229		defer func() {
230			sc := -1
231			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
232				sc = result.FutureAPI.Response().StatusCode
233			}
234			tracing.EndSpan(ctx, sc, err)
235		}()
236	}
237	if err := validation.Validate([]validation.Validation{
238		{TargetValue: resourceGroupName,
239			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
240				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
241				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
242		return result, validation.NewError("web.AppServiceEnvironmentsClient", "CreateOrUpdateWorkerPool", err.Error())
243	}
244
245	req, err := client.CreateOrUpdateWorkerPoolPreparer(ctx, resourceGroupName, name, workerPoolName, workerPoolEnvelope)
246	if err != nil {
247		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "CreateOrUpdateWorkerPool", nil, "Failure preparing request")
248		return
249	}
250
251	result, err = client.CreateOrUpdateWorkerPoolSender(req)
252	if err != nil {
253		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "CreateOrUpdateWorkerPool", nil, "Failure sending request")
254		return
255	}
256
257	return
258}
259
260// CreateOrUpdateWorkerPoolPreparer prepares the CreateOrUpdateWorkerPool request.
261func (client AppServiceEnvironmentsClient) CreateOrUpdateWorkerPoolPreparer(ctx context.Context, resourceGroupName string, name string, workerPoolName string, workerPoolEnvelope WorkerPoolResource) (*http.Request, error) {
262	pathParameters := map[string]interface{}{
263		"name":              autorest.Encode("path", name),
264		"resourceGroupName": autorest.Encode("path", resourceGroupName),
265		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
266		"workerPoolName":    autorest.Encode("path", workerPoolName),
267	}
268
269	const APIVersion = "2016-09-01"
270	queryParameters := map[string]interface{}{
271		"api-version": APIVersion,
272	}
273
274	preparer := autorest.CreatePreparer(
275		autorest.AsContentType("application/json; charset=utf-8"),
276		autorest.AsPut(),
277		autorest.WithBaseURL(client.BaseURI),
278		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}", pathParameters),
279		autorest.WithJSON(workerPoolEnvelope),
280		autorest.WithQueryParameters(queryParameters))
281	return preparer.Prepare((&http.Request{}).WithContext(ctx))
282}
283
284// CreateOrUpdateWorkerPoolSender sends the CreateOrUpdateWorkerPool request. The method will close the
285// http.Response Body if it receives an error.
286func (client AppServiceEnvironmentsClient) CreateOrUpdateWorkerPoolSender(req *http.Request) (future AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture, err error) {
287	var resp *http.Response
288	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
289	if err != nil {
290		return
291	}
292	var azf azure.Future
293	azf, err = azure.NewFutureFromResponse(resp)
294	future.FutureAPI = &azf
295	future.Result = future.result
296	return
297}
298
299// CreateOrUpdateWorkerPoolResponder handles the response to the CreateOrUpdateWorkerPool request. The method always
300// closes the http.Response Body.
301func (client AppServiceEnvironmentsClient) CreateOrUpdateWorkerPoolResponder(resp *http.Response) (result WorkerPoolResource, err error) {
302	err = autorest.Respond(
303		resp,
304		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusBadRequest, http.StatusNotFound, http.StatusConflict),
305		autorest.ByUnmarshallingJSON(&result),
306		autorest.ByClosing())
307	result.Response = autorest.Response{Response: resp}
308	return
309}
310
311// Delete delete an App Service Environment.
312// Parameters:
313// resourceGroupName - name of the resource group to which the resource belongs.
314// name - name of the App Service Environment.
315// forceDelete - specify <code>true</code> to force the deletion even if the App Service Environment contains
316// resources. The default is <code>false</code>.
317func (client AppServiceEnvironmentsClient) Delete(ctx context.Context, resourceGroupName string, name string, forceDelete *bool) (result AppServiceEnvironmentsDeleteFuture, err error) {
318	if tracing.IsEnabled() {
319		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.Delete")
320		defer func() {
321			sc := -1
322			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
323				sc = result.FutureAPI.Response().StatusCode
324			}
325			tracing.EndSpan(ctx, sc, err)
326		}()
327	}
328	if err := validation.Validate([]validation.Validation{
329		{TargetValue: resourceGroupName,
330			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
331				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
332				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
333		return result, validation.NewError("web.AppServiceEnvironmentsClient", "Delete", err.Error())
334	}
335
336	req, err := client.DeletePreparer(ctx, resourceGroupName, name, forceDelete)
337	if err != nil {
338		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "Delete", nil, "Failure preparing request")
339		return
340	}
341
342	result, err = client.DeleteSender(req)
343	if err != nil {
344		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "Delete", nil, "Failure sending request")
345		return
346	}
347
348	return
349}
350
351// DeletePreparer prepares the Delete request.
352func (client AppServiceEnvironmentsClient) DeletePreparer(ctx context.Context, resourceGroupName string, name string, forceDelete *bool) (*http.Request, error) {
353	pathParameters := map[string]interface{}{
354		"name":              autorest.Encode("path", name),
355		"resourceGroupName": autorest.Encode("path", resourceGroupName),
356		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
357	}
358
359	const APIVersion = "2016-09-01"
360	queryParameters := map[string]interface{}{
361		"api-version": APIVersion,
362	}
363	if forceDelete != nil {
364		queryParameters["forceDelete"] = autorest.Encode("query", *forceDelete)
365	}
366
367	preparer := autorest.CreatePreparer(
368		autorest.AsDelete(),
369		autorest.WithBaseURL(client.BaseURI),
370		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}", pathParameters),
371		autorest.WithQueryParameters(queryParameters))
372	return preparer.Prepare((&http.Request{}).WithContext(ctx))
373}
374
375// DeleteSender sends the Delete request. The method will close the
376// http.Response Body if it receives an error.
377func (client AppServiceEnvironmentsClient) DeleteSender(req *http.Request) (future AppServiceEnvironmentsDeleteFuture, err error) {
378	var resp *http.Response
379	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
380	if err != nil {
381		return
382	}
383	var azf azure.Future
384	azf, err = azure.NewFutureFromResponse(resp)
385	future.FutureAPI = &azf
386	future.Result = future.result
387	return
388}
389
390// DeleteResponder handles the response to the Delete request. The method always
391// closes the http.Response Body.
392func (client AppServiceEnvironmentsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
393	err = autorest.Respond(
394		resp,
395		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent, http.StatusBadRequest, http.StatusNotFound, http.StatusConflict),
396		autorest.ByClosing())
397	result.Response = resp
398	return
399}
400
401// Get get the properties of an App Service Environment.
402// Parameters:
403// resourceGroupName - name of the resource group to which the resource belongs.
404// name - name of the App Service Environment.
405func (client AppServiceEnvironmentsClient) Get(ctx context.Context, resourceGroupName string, name string) (result AppServiceEnvironmentResource, err error) {
406	if tracing.IsEnabled() {
407		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.Get")
408		defer func() {
409			sc := -1
410			if result.Response.Response != nil {
411				sc = result.Response.Response.StatusCode
412			}
413			tracing.EndSpan(ctx, sc, err)
414		}()
415	}
416	if err := validation.Validate([]validation.Validation{
417		{TargetValue: resourceGroupName,
418			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
419				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
420				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
421		return result, validation.NewError("web.AppServiceEnvironmentsClient", "Get", err.Error())
422	}
423
424	req, err := client.GetPreparer(ctx, resourceGroupName, name)
425	if err != nil {
426		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "Get", nil, "Failure preparing request")
427		return
428	}
429
430	resp, err := client.GetSender(req)
431	if err != nil {
432		result.Response = autorest.Response{Response: resp}
433		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "Get", resp, "Failure sending request")
434		return
435	}
436
437	result, err = client.GetResponder(resp)
438	if err != nil {
439		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "Get", resp, "Failure responding to request")
440		return
441	}
442
443	return
444}
445
446// GetPreparer prepares the Get request.
447func (client AppServiceEnvironmentsClient) GetPreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
448	pathParameters := map[string]interface{}{
449		"name":              autorest.Encode("path", name),
450		"resourceGroupName": autorest.Encode("path", resourceGroupName),
451		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
452	}
453
454	const APIVersion = "2016-09-01"
455	queryParameters := map[string]interface{}{
456		"api-version": APIVersion,
457	}
458
459	preparer := autorest.CreatePreparer(
460		autorest.AsGet(),
461		autorest.WithBaseURL(client.BaseURI),
462		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}", pathParameters),
463		autorest.WithQueryParameters(queryParameters))
464	return preparer.Prepare((&http.Request{}).WithContext(ctx))
465}
466
467// GetSender sends the Get request. The method will close the
468// http.Response Body if it receives an error.
469func (client AppServiceEnvironmentsClient) GetSender(req *http.Request) (*http.Response, error) {
470	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
471}
472
473// GetResponder handles the response to the Get request. The method always
474// closes the http.Response Body.
475func (client AppServiceEnvironmentsClient) GetResponder(resp *http.Response) (result AppServiceEnvironmentResource, err error) {
476	err = autorest.Respond(
477		resp,
478		azure.WithErrorUnlessStatusCode(http.StatusOK),
479		autorest.ByUnmarshallingJSON(&result),
480		autorest.ByClosing())
481	result.Response = autorest.Response{Response: resp}
482	return
483}
484
485// GetDiagnosticsItem get a diagnostics item for an App Service Environment.
486// Parameters:
487// resourceGroupName - name of the resource group to which the resource belongs.
488// name - name of the App Service Environment.
489// diagnosticsName - name of the diagnostics item.
490func (client AppServiceEnvironmentsClient) GetDiagnosticsItem(ctx context.Context, resourceGroupName string, name string, diagnosticsName string) (result HostingEnvironmentDiagnostics, err error) {
491	if tracing.IsEnabled() {
492		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.GetDiagnosticsItem")
493		defer func() {
494			sc := -1
495			if result.Response.Response != nil {
496				sc = result.Response.Response.StatusCode
497			}
498			tracing.EndSpan(ctx, sc, err)
499		}()
500	}
501	if err := validation.Validate([]validation.Validation{
502		{TargetValue: resourceGroupName,
503			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
504				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
505				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
506		return result, validation.NewError("web.AppServiceEnvironmentsClient", "GetDiagnosticsItem", err.Error())
507	}
508
509	req, err := client.GetDiagnosticsItemPreparer(ctx, resourceGroupName, name, diagnosticsName)
510	if err != nil {
511		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "GetDiagnosticsItem", nil, "Failure preparing request")
512		return
513	}
514
515	resp, err := client.GetDiagnosticsItemSender(req)
516	if err != nil {
517		result.Response = autorest.Response{Response: resp}
518		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "GetDiagnosticsItem", resp, "Failure sending request")
519		return
520	}
521
522	result, err = client.GetDiagnosticsItemResponder(resp)
523	if err != nil {
524		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "GetDiagnosticsItem", resp, "Failure responding to request")
525		return
526	}
527
528	return
529}
530
531// GetDiagnosticsItemPreparer prepares the GetDiagnosticsItem request.
532func (client AppServiceEnvironmentsClient) GetDiagnosticsItemPreparer(ctx context.Context, resourceGroupName string, name string, diagnosticsName string) (*http.Request, error) {
533	pathParameters := map[string]interface{}{
534		"diagnosticsName":   autorest.Encode("path", diagnosticsName),
535		"name":              autorest.Encode("path", name),
536		"resourceGroupName": autorest.Encode("path", resourceGroupName),
537		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
538	}
539
540	const APIVersion = "2016-09-01"
541	queryParameters := map[string]interface{}{
542		"api-version": APIVersion,
543	}
544
545	preparer := autorest.CreatePreparer(
546		autorest.AsGet(),
547		autorest.WithBaseURL(client.BaseURI),
548		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/diagnostics/{diagnosticsName}", pathParameters),
549		autorest.WithQueryParameters(queryParameters))
550	return preparer.Prepare((&http.Request{}).WithContext(ctx))
551}
552
553// GetDiagnosticsItemSender sends the GetDiagnosticsItem request. The method will close the
554// http.Response Body if it receives an error.
555func (client AppServiceEnvironmentsClient) GetDiagnosticsItemSender(req *http.Request) (*http.Response, error) {
556	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
557}
558
559// GetDiagnosticsItemResponder handles the response to the GetDiagnosticsItem request. The method always
560// closes the http.Response Body.
561func (client AppServiceEnvironmentsClient) GetDiagnosticsItemResponder(resp *http.Response) (result HostingEnvironmentDiagnostics, 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// GetMultiRolePool get properties of a multi-role pool.
572// Parameters:
573// resourceGroupName - name of the resource group to which the resource belongs.
574// name - name of the App Service Environment.
575func (client AppServiceEnvironmentsClient) GetMultiRolePool(ctx context.Context, resourceGroupName string, name string) (result WorkerPoolResource, err error) {
576	if tracing.IsEnabled() {
577		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.GetMultiRolePool")
578		defer func() {
579			sc := -1
580			if result.Response.Response != nil {
581				sc = result.Response.Response.StatusCode
582			}
583			tracing.EndSpan(ctx, sc, err)
584		}()
585	}
586	if err := validation.Validate([]validation.Validation{
587		{TargetValue: resourceGroupName,
588			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
589				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
590				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
591		return result, validation.NewError("web.AppServiceEnvironmentsClient", "GetMultiRolePool", err.Error())
592	}
593
594	req, err := client.GetMultiRolePoolPreparer(ctx, resourceGroupName, name)
595	if err != nil {
596		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "GetMultiRolePool", nil, "Failure preparing request")
597		return
598	}
599
600	resp, err := client.GetMultiRolePoolSender(req)
601	if err != nil {
602		result.Response = autorest.Response{Response: resp}
603		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "GetMultiRolePool", resp, "Failure sending request")
604		return
605	}
606
607	result, err = client.GetMultiRolePoolResponder(resp)
608	if err != nil {
609		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "GetMultiRolePool", resp, "Failure responding to request")
610		return
611	}
612
613	return
614}
615
616// GetMultiRolePoolPreparer prepares the GetMultiRolePool request.
617func (client AppServiceEnvironmentsClient) GetMultiRolePoolPreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
618	pathParameters := map[string]interface{}{
619		"name":              autorest.Encode("path", name),
620		"resourceGroupName": autorest.Encode("path", resourceGroupName),
621		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
622	}
623
624	const APIVersion = "2016-09-01"
625	queryParameters := map[string]interface{}{
626		"api-version": APIVersion,
627	}
628
629	preparer := autorest.CreatePreparer(
630		autorest.AsGet(),
631		autorest.WithBaseURL(client.BaseURI),
632		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default", pathParameters),
633		autorest.WithQueryParameters(queryParameters))
634	return preparer.Prepare((&http.Request{}).WithContext(ctx))
635}
636
637// GetMultiRolePoolSender sends the GetMultiRolePool request. The method will close the
638// http.Response Body if it receives an error.
639func (client AppServiceEnvironmentsClient) GetMultiRolePoolSender(req *http.Request) (*http.Response, error) {
640	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
641}
642
643// GetMultiRolePoolResponder handles the response to the GetMultiRolePool request. The method always
644// closes the http.Response Body.
645func (client AppServiceEnvironmentsClient) GetMultiRolePoolResponder(resp *http.Response) (result WorkerPoolResource, err error) {
646	err = autorest.Respond(
647		resp,
648		azure.WithErrorUnlessStatusCode(http.StatusOK),
649		autorest.ByUnmarshallingJSON(&result),
650		autorest.ByClosing())
651	result.Response = autorest.Response{Response: resp}
652	return
653}
654
655// GetWorkerPool get properties of a worker pool.
656// Parameters:
657// resourceGroupName - name of the resource group to which the resource belongs.
658// name - name of the App Service Environment.
659// workerPoolName - name of the worker pool.
660func (client AppServiceEnvironmentsClient) GetWorkerPool(ctx context.Context, resourceGroupName string, name string, workerPoolName string) (result WorkerPoolResource, err error) {
661	if tracing.IsEnabled() {
662		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.GetWorkerPool")
663		defer func() {
664			sc := -1
665			if result.Response.Response != nil {
666				sc = result.Response.Response.StatusCode
667			}
668			tracing.EndSpan(ctx, sc, err)
669		}()
670	}
671	if err := validation.Validate([]validation.Validation{
672		{TargetValue: resourceGroupName,
673			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
674				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
675				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
676		return result, validation.NewError("web.AppServiceEnvironmentsClient", "GetWorkerPool", err.Error())
677	}
678
679	req, err := client.GetWorkerPoolPreparer(ctx, resourceGroupName, name, workerPoolName)
680	if err != nil {
681		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "GetWorkerPool", nil, "Failure preparing request")
682		return
683	}
684
685	resp, err := client.GetWorkerPoolSender(req)
686	if err != nil {
687		result.Response = autorest.Response{Response: resp}
688		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "GetWorkerPool", resp, "Failure sending request")
689		return
690	}
691
692	result, err = client.GetWorkerPoolResponder(resp)
693	if err != nil {
694		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "GetWorkerPool", resp, "Failure responding to request")
695		return
696	}
697
698	return
699}
700
701// GetWorkerPoolPreparer prepares the GetWorkerPool request.
702func (client AppServiceEnvironmentsClient) GetWorkerPoolPreparer(ctx context.Context, resourceGroupName string, name string, workerPoolName string) (*http.Request, error) {
703	pathParameters := map[string]interface{}{
704		"name":              autorest.Encode("path", name),
705		"resourceGroupName": autorest.Encode("path", resourceGroupName),
706		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
707		"workerPoolName":    autorest.Encode("path", workerPoolName),
708	}
709
710	const APIVersion = "2016-09-01"
711	queryParameters := map[string]interface{}{
712		"api-version": APIVersion,
713	}
714
715	preparer := autorest.CreatePreparer(
716		autorest.AsGet(),
717		autorest.WithBaseURL(client.BaseURI),
718		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}", pathParameters),
719		autorest.WithQueryParameters(queryParameters))
720	return preparer.Prepare((&http.Request{}).WithContext(ctx))
721}
722
723// GetWorkerPoolSender sends the GetWorkerPool request. The method will close the
724// http.Response Body if it receives an error.
725func (client AppServiceEnvironmentsClient) GetWorkerPoolSender(req *http.Request) (*http.Response, error) {
726	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
727}
728
729// GetWorkerPoolResponder handles the response to the GetWorkerPool request. The method always
730// closes the http.Response Body.
731func (client AppServiceEnvironmentsClient) GetWorkerPoolResponder(resp *http.Response) (result WorkerPoolResource, err error) {
732	err = autorest.Respond(
733		resp,
734		azure.WithErrorUnlessStatusCode(http.StatusOK),
735		autorest.ByUnmarshallingJSON(&result),
736		autorest.ByClosing())
737	result.Response = autorest.Response{Response: resp}
738	return
739}
740
741// List get all App Service Environments for a subscription.
742func (client AppServiceEnvironmentsClient) List(ctx context.Context) (result AppServiceEnvironmentCollectionPage, err error) {
743	if tracing.IsEnabled() {
744		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.List")
745		defer func() {
746			sc := -1
747			if result.asec.Response.Response != nil {
748				sc = result.asec.Response.Response.StatusCode
749			}
750			tracing.EndSpan(ctx, sc, err)
751		}()
752	}
753	result.fn = client.listNextResults
754	req, err := client.ListPreparer(ctx)
755	if err != nil {
756		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "List", nil, "Failure preparing request")
757		return
758	}
759
760	resp, err := client.ListSender(req)
761	if err != nil {
762		result.asec.Response = autorest.Response{Response: resp}
763		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "List", resp, "Failure sending request")
764		return
765	}
766
767	result.asec, err = client.ListResponder(resp)
768	if err != nil {
769		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "List", resp, "Failure responding to request")
770		return
771	}
772	if result.asec.hasNextLink() && result.asec.IsEmpty() {
773		err = result.NextWithContext(ctx)
774		return
775	}
776
777	return
778}
779
780// ListPreparer prepares the List request.
781func (client AppServiceEnvironmentsClient) ListPreparer(ctx context.Context) (*http.Request, error) {
782	pathParameters := map[string]interface{}{
783		"subscriptionId": autorest.Encode("path", client.SubscriptionID),
784	}
785
786	const APIVersion = "2016-09-01"
787	queryParameters := map[string]interface{}{
788		"api-version": APIVersion,
789	}
790
791	preparer := autorest.CreatePreparer(
792		autorest.AsGet(),
793		autorest.WithBaseURL(client.BaseURI),
794		autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Web/hostingEnvironments", pathParameters),
795		autorest.WithQueryParameters(queryParameters))
796	return preparer.Prepare((&http.Request{}).WithContext(ctx))
797}
798
799// ListSender sends the List request. The method will close the
800// http.Response Body if it receives an error.
801func (client AppServiceEnvironmentsClient) ListSender(req *http.Request) (*http.Response, error) {
802	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
803}
804
805// ListResponder handles the response to the List request. The method always
806// closes the http.Response Body.
807func (client AppServiceEnvironmentsClient) ListResponder(resp *http.Response) (result AppServiceEnvironmentCollection, err error) {
808	err = autorest.Respond(
809		resp,
810		azure.WithErrorUnlessStatusCode(http.StatusOK),
811		autorest.ByUnmarshallingJSON(&result),
812		autorest.ByClosing())
813	result.Response = autorest.Response{Response: resp}
814	return
815}
816
817// listNextResults retrieves the next set of results, if any.
818func (client AppServiceEnvironmentsClient) listNextResults(ctx context.Context, lastResults AppServiceEnvironmentCollection) (result AppServiceEnvironmentCollection, err error) {
819	req, err := lastResults.appServiceEnvironmentCollectionPreparer(ctx)
820	if err != nil {
821		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listNextResults", nil, "Failure preparing next results request")
822	}
823	if req == nil {
824		return
825	}
826	resp, err := client.ListSender(req)
827	if err != nil {
828		result.Response = autorest.Response{Response: resp}
829		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listNextResults", resp, "Failure sending next results request")
830	}
831	result, err = client.ListResponder(resp)
832	if err != nil {
833		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listNextResults", resp, "Failure responding to next results request")
834	}
835	return
836}
837
838// ListComplete enumerates all values, automatically crossing page boundaries as required.
839func (client AppServiceEnvironmentsClient) ListComplete(ctx context.Context) (result AppServiceEnvironmentCollectionIterator, err error) {
840	if tracing.IsEnabled() {
841		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.List")
842		defer func() {
843			sc := -1
844			if result.Response().Response.Response != nil {
845				sc = result.page.Response().Response.Response.StatusCode
846			}
847			tracing.EndSpan(ctx, sc, err)
848		}()
849	}
850	result.page, err = client.List(ctx)
851	return
852}
853
854// ListAppServicePlans get all App Service plans in an App Service Environment.
855// Parameters:
856// resourceGroupName - name of the resource group to which the resource belongs.
857// name - name of the App Service Environment.
858func (client AppServiceEnvironmentsClient) ListAppServicePlans(ctx context.Context, resourceGroupName string, name string) (result AppServicePlanCollectionPage, err error) {
859	if tracing.IsEnabled() {
860		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListAppServicePlans")
861		defer func() {
862			sc := -1
863			if result.aspc.Response.Response != nil {
864				sc = result.aspc.Response.Response.StatusCode
865			}
866			tracing.EndSpan(ctx, sc, err)
867		}()
868	}
869	if err := validation.Validate([]validation.Validation{
870		{TargetValue: resourceGroupName,
871			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
872				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
873				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
874		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListAppServicePlans", err.Error())
875	}
876
877	result.fn = client.listAppServicePlansNextResults
878	req, err := client.ListAppServicePlansPreparer(ctx, resourceGroupName, name)
879	if err != nil {
880		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListAppServicePlans", nil, "Failure preparing request")
881		return
882	}
883
884	resp, err := client.ListAppServicePlansSender(req)
885	if err != nil {
886		result.aspc.Response = autorest.Response{Response: resp}
887		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListAppServicePlans", resp, "Failure sending request")
888		return
889	}
890
891	result.aspc, err = client.ListAppServicePlansResponder(resp)
892	if err != nil {
893		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListAppServicePlans", resp, "Failure responding to request")
894		return
895	}
896	if result.aspc.hasNextLink() && result.aspc.IsEmpty() {
897		err = result.NextWithContext(ctx)
898		return
899	}
900
901	return
902}
903
904// ListAppServicePlansPreparer prepares the ListAppServicePlans request.
905func (client AppServiceEnvironmentsClient) ListAppServicePlansPreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
906	pathParameters := map[string]interface{}{
907		"name":              autorest.Encode("path", name),
908		"resourceGroupName": autorest.Encode("path", resourceGroupName),
909		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
910	}
911
912	const APIVersion = "2016-09-01"
913	queryParameters := map[string]interface{}{
914		"api-version": APIVersion,
915	}
916
917	preparer := autorest.CreatePreparer(
918		autorest.AsGet(),
919		autorest.WithBaseURL(client.BaseURI),
920		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/serverfarms", pathParameters),
921		autorest.WithQueryParameters(queryParameters))
922	return preparer.Prepare((&http.Request{}).WithContext(ctx))
923}
924
925// ListAppServicePlansSender sends the ListAppServicePlans request. The method will close the
926// http.Response Body if it receives an error.
927func (client AppServiceEnvironmentsClient) ListAppServicePlansSender(req *http.Request) (*http.Response, error) {
928	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
929}
930
931// ListAppServicePlansResponder handles the response to the ListAppServicePlans request. The method always
932// closes the http.Response Body.
933func (client AppServiceEnvironmentsClient) ListAppServicePlansResponder(resp *http.Response) (result AppServicePlanCollection, err error) {
934	err = autorest.Respond(
935		resp,
936		azure.WithErrorUnlessStatusCode(http.StatusOK),
937		autorest.ByUnmarshallingJSON(&result),
938		autorest.ByClosing())
939	result.Response = autorest.Response{Response: resp}
940	return
941}
942
943// listAppServicePlansNextResults retrieves the next set of results, if any.
944func (client AppServiceEnvironmentsClient) listAppServicePlansNextResults(ctx context.Context, lastResults AppServicePlanCollection) (result AppServicePlanCollection, err error) {
945	req, err := lastResults.appServicePlanCollectionPreparer(ctx)
946	if err != nil {
947		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listAppServicePlansNextResults", nil, "Failure preparing next results request")
948	}
949	if req == nil {
950		return
951	}
952	resp, err := client.ListAppServicePlansSender(req)
953	if err != nil {
954		result.Response = autorest.Response{Response: resp}
955		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listAppServicePlansNextResults", resp, "Failure sending next results request")
956	}
957	result, err = client.ListAppServicePlansResponder(resp)
958	if err != nil {
959		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listAppServicePlansNextResults", resp, "Failure responding to next results request")
960	}
961	return
962}
963
964// ListAppServicePlansComplete enumerates all values, automatically crossing page boundaries as required.
965func (client AppServiceEnvironmentsClient) ListAppServicePlansComplete(ctx context.Context, resourceGroupName string, name string) (result AppServicePlanCollectionIterator, err error) {
966	if tracing.IsEnabled() {
967		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListAppServicePlans")
968		defer func() {
969			sc := -1
970			if result.Response().Response.Response != nil {
971				sc = result.page.Response().Response.Response.StatusCode
972			}
973			tracing.EndSpan(ctx, sc, err)
974		}()
975	}
976	result.page, err = client.ListAppServicePlans(ctx, resourceGroupName, name)
977	return
978}
979
980// ListByResourceGroup get all App Service Environments in a resource group.
981// Parameters:
982// resourceGroupName - name of the resource group to which the resource belongs.
983func (client AppServiceEnvironmentsClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result AppServiceEnvironmentCollectionPage, err error) {
984	if tracing.IsEnabled() {
985		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListByResourceGroup")
986		defer func() {
987			sc := -1
988			if result.asec.Response.Response != nil {
989				sc = result.asec.Response.Response.StatusCode
990			}
991			tracing.EndSpan(ctx, sc, err)
992		}()
993	}
994	if err := validation.Validate([]validation.Validation{
995		{TargetValue: resourceGroupName,
996			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
997				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
998				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
999		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListByResourceGroup", err.Error())
1000	}
1001
1002	result.fn = client.listByResourceGroupNextResults
1003	req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName)
1004	if err != nil {
1005		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListByResourceGroup", nil, "Failure preparing request")
1006		return
1007	}
1008
1009	resp, err := client.ListByResourceGroupSender(req)
1010	if err != nil {
1011		result.asec.Response = autorest.Response{Response: resp}
1012		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListByResourceGroup", resp, "Failure sending request")
1013		return
1014	}
1015
1016	result.asec, err = client.ListByResourceGroupResponder(resp)
1017	if err != nil {
1018		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListByResourceGroup", resp, "Failure responding to request")
1019		return
1020	}
1021	if result.asec.hasNextLink() && result.asec.IsEmpty() {
1022		err = result.NextWithContext(ctx)
1023		return
1024	}
1025
1026	return
1027}
1028
1029// ListByResourceGroupPreparer prepares the ListByResourceGroup request.
1030func (client AppServiceEnvironmentsClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
1031	pathParameters := map[string]interface{}{
1032		"resourceGroupName": autorest.Encode("path", resourceGroupName),
1033		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
1034	}
1035
1036	const APIVersion = "2016-09-01"
1037	queryParameters := map[string]interface{}{
1038		"api-version": APIVersion,
1039	}
1040
1041	preparer := autorest.CreatePreparer(
1042		autorest.AsGet(),
1043		autorest.WithBaseURL(client.BaseURI),
1044		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments", pathParameters),
1045		autorest.WithQueryParameters(queryParameters))
1046	return preparer.Prepare((&http.Request{}).WithContext(ctx))
1047}
1048
1049// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
1050// http.Response Body if it receives an error.
1051func (client AppServiceEnvironmentsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
1052	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
1053}
1054
1055// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
1056// closes the http.Response Body.
1057func (client AppServiceEnvironmentsClient) ListByResourceGroupResponder(resp *http.Response) (result AppServiceEnvironmentCollection, err error) {
1058	err = autorest.Respond(
1059		resp,
1060		azure.WithErrorUnlessStatusCode(http.StatusOK),
1061		autorest.ByUnmarshallingJSON(&result),
1062		autorest.ByClosing())
1063	result.Response = autorest.Response{Response: resp}
1064	return
1065}
1066
1067// listByResourceGroupNextResults retrieves the next set of results, if any.
1068func (client AppServiceEnvironmentsClient) listByResourceGroupNextResults(ctx context.Context, lastResults AppServiceEnvironmentCollection) (result AppServiceEnvironmentCollection, err error) {
1069	req, err := lastResults.appServiceEnvironmentCollectionPreparer(ctx)
1070	if err != nil {
1071		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request")
1072	}
1073	if req == nil {
1074		return
1075	}
1076	resp, err := client.ListByResourceGroupSender(req)
1077	if err != nil {
1078		result.Response = autorest.Response{Response: resp}
1079		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listByResourceGroupNextResults", resp, "Failure sending next results request")
1080	}
1081	result, err = client.ListByResourceGroupResponder(resp)
1082	if err != nil {
1083		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request")
1084	}
1085	return
1086}
1087
1088// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required.
1089func (client AppServiceEnvironmentsClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result AppServiceEnvironmentCollectionIterator, err error) {
1090	if tracing.IsEnabled() {
1091		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListByResourceGroup")
1092		defer func() {
1093			sc := -1
1094			if result.Response().Response.Response != nil {
1095				sc = result.page.Response().Response.Response.StatusCode
1096			}
1097			tracing.EndSpan(ctx, sc, err)
1098		}()
1099	}
1100	result.page, err = client.ListByResourceGroup(ctx, resourceGroupName)
1101	return
1102}
1103
1104// ListCapacities get the used, available, and total worker capacity an App Service Environment.
1105// Parameters:
1106// resourceGroupName - name of the resource group to which the resource belongs.
1107// name - name of the App Service Environment.
1108func (client AppServiceEnvironmentsClient) ListCapacities(ctx context.Context, resourceGroupName string, name string) (result StampCapacityCollectionPage, err error) {
1109	if tracing.IsEnabled() {
1110		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListCapacities")
1111		defer func() {
1112			sc := -1
1113			if result.scc.Response.Response != nil {
1114				sc = result.scc.Response.Response.StatusCode
1115			}
1116			tracing.EndSpan(ctx, sc, err)
1117		}()
1118	}
1119	if err := validation.Validate([]validation.Validation{
1120		{TargetValue: resourceGroupName,
1121			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
1122				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
1123				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
1124		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListCapacities", err.Error())
1125	}
1126
1127	result.fn = client.listCapacitiesNextResults
1128	req, err := client.ListCapacitiesPreparer(ctx, resourceGroupName, name)
1129	if err != nil {
1130		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListCapacities", nil, "Failure preparing request")
1131		return
1132	}
1133
1134	resp, err := client.ListCapacitiesSender(req)
1135	if err != nil {
1136		result.scc.Response = autorest.Response{Response: resp}
1137		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListCapacities", resp, "Failure sending request")
1138		return
1139	}
1140
1141	result.scc, err = client.ListCapacitiesResponder(resp)
1142	if err != nil {
1143		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListCapacities", resp, "Failure responding to request")
1144		return
1145	}
1146	if result.scc.hasNextLink() && result.scc.IsEmpty() {
1147		err = result.NextWithContext(ctx)
1148		return
1149	}
1150
1151	return
1152}
1153
1154// ListCapacitiesPreparer prepares the ListCapacities request.
1155func (client AppServiceEnvironmentsClient) ListCapacitiesPreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
1156	pathParameters := map[string]interface{}{
1157		"name":              autorest.Encode("path", name),
1158		"resourceGroupName": autorest.Encode("path", resourceGroupName),
1159		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
1160	}
1161
1162	const APIVersion = "2016-09-01"
1163	queryParameters := map[string]interface{}{
1164		"api-version": APIVersion,
1165	}
1166
1167	preparer := autorest.CreatePreparer(
1168		autorest.AsGet(),
1169		autorest.WithBaseURL(client.BaseURI),
1170		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/capacities/compute", pathParameters),
1171		autorest.WithQueryParameters(queryParameters))
1172	return preparer.Prepare((&http.Request{}).WithContext(ctx))
1173}
1174
1175// ListCapacitiesSender sends the ListCapacities request. The method will close the
1176// http.Response Body if it receives an error.
1177func (client AppServiceEnvironmentsClient) ListCapacitiesSender(req *http.Request) (*http.Response, error) {
1178	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
1179}
1180
1181// ListCapacitiesResponder handles the response to the ListCapacities request. The method always
1182// closes the http.Response Body.
1183func (client AppServiceEnvironmentsClient) ListCapacitiesResponder(resp *http.Response) (result StampCapacityCollection, err error) {
1184	err = autorest.Respond(
1185		resp,
1186		azure.WithErrorUnlessStatusCode(http.StatusOK),
1187		autorest.ByUnmarshallingJSON(&result),
1188		autorest.ByClosing())
1189	result.Response = autorest.Response{Response: resp}
1190	return
1191}
1192
1193// listCapacitiesNextResults retrieves the next set of results, if any.
1194func (client AppServiceEnvironmentsClient) listCapacitiesNextResults(ctx context.Context, lastResults StampCapacityCollection) (result StampCapacityCollection, err error) {
1195	req, err := lastResults.stampCapacityCollectionPreparer(ctx)
1196	if err != nil {
1197		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listCapacitiesNextResults", nil, "Failure preparing next results request")
1198	}
1199	if req == nil {
1200		return
1201	}
1202	resp, err := client.ListCapacitiesSender(req)
1203	if err != nil {
1204		result.Response = autorest.Response{Response: resp}
1205		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listCapacitiesNextResults", resp, "Failure sending next results request")
1206	}
1207	result, err = client.ListCapacitiesResponder(resp)
1208	if err != nil {
1209		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listCapacitiesNextResults", resp, "Failure responding to next results request")
1210	}
1211	return
1212}
1213
1214// ListCapacitiesComplete enumerates all values, automatically crossing page boundaries as required.
1215func (client AppServiceEnvironmentsClient) ListCapacitiesComplete(ctx context.Context, resourceGroupName string, name string) (result StampCapacityCollectionIterator, err error) {
1216	if tracing.IsEnabled() {
1217		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListCapacities")
1218		defer func() {
1219			sc := -1
1220			if result.Response().Response.Response != nil {
1221				sc = result.page.Response().Response.Response.StatusCode
1222			}
1223			tracing.EndSpan(ctx, sc, err)
1224		}()
1225	}
1226	result.page, err = client.ListCapacities(ctx, resourceGroupName, name)
1227	return
1228}
1229
1230// ListDiagnostics get diagnostic information for an App Service Environment.
1231// Parameters:
1232// resourceGroupName - name of the resource group to which the resource belongs.
1233// name - name of the App Service Environment.
1234func (client AppServiceEnvironmentsClient) ListDiagnostics(ctx context.Context, resourceGroupName string, name string) (result ListHostingEnvironmentDiagnostics, err error) {
1235	if tracing.IsEnabled() {
1236		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListDiagnostics")
1237		defer func() {
1238			sc := -1
1239			if result.Response.Response != nil {
1240				sc = result.Response.Response.StatusCode
1241			}
1242			tracing.EndSpan(ctx, sc, err)
1243		}()
1244	}
1245	if err := validation.Validate([]validation.Validation{
1246		{TargetValue: resourceGroupName,
1247			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
1248				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
1249				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
1250		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListDiagnostics", err.Error())
1251	}
1252
1253	req, err := client.ListDiagnosticsPreparer(ctx, resourceGroupName, name)
1254	if err != nil {
1255		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListDiagnostics", nil, "Failure preparing request")
1256		return
1257	}
1258
1259	resp, err := client.ListDiagnosticsSender(req)
1260	if err != nil {
1261		result.Response = autorest.Response{Response: resp}
1262		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListDiagnostics", resp, "Failure sending request")
1263		return
1264	}
1265
1266	result, err = client.ListDiagnosticsResponder(resp)
1267	if err != nil {
1268		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListDiagnostics", resp, "Failure responding to request")
1269		return
1270	}
1271
1272	return
1273}
1274
1275// ListDiagnosticsPreparer prepares the ListDiagnostics request.
1276func (client AppServiceEnvironmentsClient) ListDiagnosticsPreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
1277	pathParameters := map[string]interface{}{
1278		"name":              autorest.Encode("path", name),
1279		"resourceGroupName": autorest.Encode("path", resourceGroupName),
1280		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
1281	}
1282
1283	const APIVersion = "2016-09-01"
1284	queryParameters := map[string]interface{}{
1285		"api-version": APIVersion,
1286	}
1287
1288	preparer := autorest.CreatePreparer(
1289		autorest.AsGet(),
1290		autorest.WithBaseURL(client.BaseURI),
1291		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/diagnostics", pathParameters),
1292		autorest.WithQueryParameters(queryParameters))
1293	return preparer.Prepare((&http.Request{}).WithContext(ctx))
1294}
1295
1296// ListDiagnosticsSender sends the ListDiagnostics request. The method will close the
1297// http.Response Body if it receives an error.
1298func (client AppServiceEnvironmentsClient) ListDiagnosticsSender(req *http.Request) (*http.Response, error) {
1299	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
1300}
1301
1302// ListDiagnosticsResponder handles the response to the ListDiagnostics request. The method always
1303// closes the http.Response Body.
1304func (client AppServiceEnvironmentsClient) ListDiagnosticsResponder(resp *http.Response) (result ListHostingEnvironmentDiagnostics, err error) {
1305	err = autorest.Respond(
1306		resp,
1307		azure.WithErrorUnlessStatusCode(http.StatusOK),
1308		autorest.ByUnmarshallingJSON(&result.Value),
1309		autorest.ByClosing())
1310	result.Response = autorest.Response{Response: resp}
1311	return
1312}
1313
1314// ListMetricDefinitions get global metric definitions of an App Service Environment.
1315// Parameters:
1316// resourceGroupName - name of the resource group to which the resource belongs.
1317// name - name of the App Service Environment.
1318func (client AppServiceEnvironmentsClient) ListMetricDefinitions(ctx context.Context, resourceGroupName string, name string) (result MetricDefinition, err error) {
1319	if tracing.IsEnabled() {
1320		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMetricDefinitions")
1321		defer func() {
1322			sc := -1
1323			if result.Response.Response != nil {
1324				sc = result.Response.Response.StatusCode
1325			}
1326			tracing.EndSpan(ctx, sc, err)
1327		}()
1328	}
1329	if err := validation.Validate([]validation.Validation{
1330		{TargetValue: resourceGroupName,
1331			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
1332				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
1333				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
1334		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListMetricDefinitions", err.Error())
1335	}
1336
1337	req, err := client.ListMetricDefinitionsPreparer(ctx, resourceGroupName, name)
1338	if err != nil {
1339		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMetricDefinitions", nil, "Failure preparing request")
1340		return
1341	}
1342
1343	resp, err := client.ListMetricDefinitionsSender(req)
1344	if err != nil {
1345		result.Response = autorest.Response{Response: resp}
1346		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMetricDefinitions", resp, "Failure sending request")
1347		return
1348	}
1349
1350	result, err = client.ListMetricDefinitionsResponder(resp)
1351	if err != nil {
1352		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMetricDefinitions", resp, "Failure responding to request")
1353		return
1354	}
1355
1356	return
1357}
1358
1359// ListMetricDefinitionsPreparer prepares the ListMetricDefinitions request.
1360func (client AppServiceEnvironmentsClient) ListMetricDefinitionsPreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
1361	pathParameters := map[string]interface{}{
1362		"name":              autorest.Encode("path", name),
1363		"resourceGroupName": autorest.Encode("path", resourceGroupName),
1364		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
1365	}
1366
1367	const APIVersion = "2016-09-01"
1368	queryParameters := map[string]interface{}{
1369		"api-version": APIVersion,
1370	}
1371
1372	preparer := autorest.CreatePreparer(
1373		autorest.AsGet(),
1374		autorest.WithBaseURL(client.BaseURI),
1375		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/metricdefinitions", pathParameters),
1376		autorest.WithQueryParameters(queryParameters))
1377	return preparer.Prepare((&http.Request{}).WithContext(ctx))
1378}
1379
1380// ListMetricDefinitionsSender sends the ListMetricDefinitions request. The method will close the
1381// http.Response Body if it receives an error.
1382func (client AppServiceEnvironmentsClient) ListMetricDefinitionsSender(req *http.Request) (*http.Response, error) {
1383	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
1384}
1385
1386// ListMetricDefinitionsResponder handles the response to the ListMetricDefinitions request. The method always
1387// closes the http.Response Body.
1388func (client AppServiceEnvironmentsClient) ListMetricDefinitionsResponder(resp *http.Response) (result MetricDefinition, err error) {
1389	err = autorest.Respond(
1390		resp,
1391		azure.WithErrorUnlessStatusCode(http.StatusOK),
1392		autorest.ByUnmarshallingJSON(&result),
1393		autorest.ByClosing())
1394	result.Response = autorest.Response{Response: resp}
1395	return
1396}
1397
1398// ListMetrics get global metrics of an App Service Environment.
1399// Parameters:
1400// resourceGroupName - name of the resource group to which the resource belongs.
1401// name - name of the App Service Environment.
1402// details - specify <code>true</code> to include instance details. The default is <code>false</code>.
1403// filter - return only usages/metrics specified in the filter. Filter conforms to odata syntax. Example:
1404// $filter=(name.value eq 'Metric1' or name.value eq 'Metric2') and startTime eq '2014-01-01T00:00:00Z' and
1405// endTime eq '2014-12-31T23:59:59Z' and timeGrain eq duration'[Hour|Minute|Day]'.
1406func (client AppServiceEnvironmentsClient) ListMetrics(ctx context.Context, resourceGroupName string, name string, details *bool, filter string) (result ResourceMetricCollectionPage, err error) {
1407	if tracing.IsEnabled() {
1408		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMetrics")
1409		defer func() {
1410			sc := -1
1411			if result.rmc.Response.Response != nil {
1412				sc = result.rmc.Response.Response.StatusCode
1413			}
1414			tracing.EndSpan(ctx, sc, err)
1415		}()
1416	}
1417	if err := validation.Validate([]validation.Validation{
1418		{TargetValue: resourceGroupName,
1419			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
1420				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
1421				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
1422		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListMetrics", err.Error())
1423	}
1424
1425	result.fn = client.listMetricsNextResults
1426	req, err := client.ListMetricsPreparer(ctx, resourceGroupName, name, details, filter)
1427	if err != nil {
1428		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMetrics", nil, "Failure preparing request")
1429		return
1430	}
1431
1432	resp, err := client.ListMetricsSender(req)
1433	if err != nil {
1434		result.rmc.Response = autorest.Response{Response: resp}
1435		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMetrics", resp, "Failure sending request")
1436		return
1437	}
1438
1439	result.rmc, err = client.ListMetricsResponder(resp)
1440	if err != nil {
1441		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMetrics", resp, "Failure responding to request")
1442		return
1443	}
1444	if result.rmc.hasNextLink() && result.rmc.IsEmpty() {
1445		err = result.NextWithContext(ctx)
1446		return
1447	}
1448
1449	return
1450}
1451
1452// ListMetricsPreparer prepares the ListMetrics request.
1453func (client AppServiceEnvironmentsClient) ListMetricsPreparer(ctx context.Context, resourceGroupName string, name string, details *bool, filter string) (*http.Request, error) {
1454	pathParameters := map[string]interface{}{
1455		"name":              autorest.Encode("path", name),
1456		"resourceGroupName": autorest.Encode("path", resourceGroupName),
1457		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
1458	}
1459
1460	const APIVersion = "2016-09-01"
1461	queryParameters := map[string]interface{}{
1462		"api-version": APIVersion,
1463	}
1464	if details != nil {
1465		queryParameters["details"] = autorest.Encode("query", *details)
1466	}
1467	if len(filter) > 0 {
1468		queryParameters["$filter"] = filter
1469	}
1470
1471	preparer := autorest.CreatePreparer(
1472		autorest.AsGet(),
1473		autorest.WithBaseURL(client.BaseURI),
1474		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/metrics", pathParameters),
1475		autorest.WithQueryParameters(queryParameters))
1476	return preparer.Prepare((&http.Request{}).WithContext(ctx))
1477}
1478
1479// ListMetricsSender sends the ListMetrics request. The method will close the
1480// http.Response Body if it receives an error.
1481func (client AppServiceEnvironmentsClient) ListMetricsSender(req *http.Request) (*http.Response, error) {
1482	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
1483}
1484
1485// ListMetricsResponder handles the response to the ListMetrics request. The method always
1486// closes the http.Response Body.
1487func (client AppServiceEnvironmentsClient) ListMetricsResponder(resp *http.Response) (result ResourceMetricCollection, err error) {
1488	err = autorest.Respond(
1489		resp,
1490		azure.WithErrorUnlessStatusCode(http.StatusOK),
1491		autorest.ByUnmarshallingJSON(&result),
1492		autorest.ByClosing())
1493	result.Response = autorest.Response{Response: resp}
1494	return
1495}
1496
1497// listMetricsNextResults retrieves the next set of results, if any.
1498func (client AppServiceEnvironmentsClient) listMetricsNextResults(ctx context.Context, lastResults ResourceMetricCollection) (result ResourceMetricCollection, err error) {
1499	req, err := lastResults.resourceMetricCollectionPreparer(ctx)
1500	if err != nil {
1501		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMetricsNextResults", nil, "Failure preparing next results request")
1502	}
1503	if req == nil {
1504		return
1505	}
1506	resp, err := client.ListMetricsSender(req)
1507	if err != nil {
1508		result.Response = autorest.Response{Response: resp}
1509		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMetricsNextResults", resp, "Failure sending next results request")
1510	}
1511	result, err = client.ListMetricsResponder(resp)
1512	if err != nil {
1513		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMetricsNextResults", resp, "Failure responding to next results request")
1514	}
1515	return
1516}
1517
1518// ListMetricsComplete enumerates all values, automatically crossing page boundaries as required.
1519func (client AppServiceEnvironmentsClient) ListMetricsComplete(ctx context.Context, resourceGroupName string, name string, details *bool, filter string) (result ResourceMetricCollectionIterator, err error) {
1520	if tracing.IsEnabled() {
1521		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMetrics")
1522		defer func() {
1523			sc := -1
1524			if result.Response().Response.Response != nil {
1525				sc = result.page.Response().Response.Response.StatusCode
1526			}
1527			tracing.EndSpan(ctx, sc, err)
1528		}()
1529	}
1530	result.page, err = client.ListMetrics(ctx, resourceGroupName, name, details, filter)
1531	return
1532}
1533
1534// ListMultiRoleMetricDefinitions get metric definitions for a multi-role pool of an App Service Environment.
1535// Parameters:
1536// resourceGroupName - name of the resource group to which the resource belongs.
1537// name - name of the App Service Environment.
1538func (client AppServiceEnvironmentsClient) ListMultiRoleMetricDefinitions(ctx context.Context, resourceGroupName string, name string) (result ResourceMetricDefinitionCollectionPage, err error) {
1539	if tracing.IsEnabled() {
1540		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMultiRoleMetricDefinitions")
1541		defer func() {
1542			sc := -1
1543			if result.rmdc.Response.Response != nil {
1544				sc = result.rmdc.Response.Response.StatusCode
1545			}
1546			tracing.EndSpan(ctx, sc, err)
1547		}()
1548	}
1549	if err := validation.Validate([]validation.Validation{
1550		{TargetValue: resourceGroupName,
1551			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
1552				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
1553				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
1554		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListMultiRoleMetricDefinitions", err.Error())
1555	}
1556
1557	result.fn = client.listMultiRoleMetricDefinitionsNextResults
1558	req, err := client.ListMultiRoleMetricDefinitionsPreparer(ctx, resourceGroupName, name)
1559	if err != nil {
1560		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRoleMetricDefinitions", nil, "Failure preparing request")
1561		return
1562	}
1563
1564	resp, err := client.ListMultiRoleMetricDefinitionsSender(req)
1565	if err != nil {
1566		result.rmdc.Response = autorest.Response{Response: resp}
1567		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRoleMetricDefinitions", resp, "Failure sending request")
1568		return
1569	}
1570
1571	result.rmdc, err = client.ListMultiRoleMetricDefinitionsResponder(resp)
1572	if err != nil {
1573		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRoleMetricDefinitions", resp, "Failure responding to request")
1574		return
1575	}
1576	if result.rmdc.hasNextLink() && result.rmdc.IsEmpty() {
1577		err = result.NextWithContext(ctx)
1578		return
1579	}
1580
1581	return
1582}
1583
1584// ListMultiRoleMetricDefinitionsPreparer prepares the ListMultiRoleMetricDefinitions request.
1585func (client AppServiceEnvironmentsClient) ListMultiRoleMetricDefinitionsPreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
1586	pathParameters := map[string]interface{}{
1587		"name":              autorest.Encode("path", name),
1588		"resourceGroupName": autorest.Encode("path", resourceGroupName),
1589		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
1590	}
1591
1592	const APIVersion = "2016-09-01"
1593	queryParameters := map[string]interface{}{
1594		"api-version": APIVersion,
1595	}
1596
1597	preparer := autorest.CreatePreparer(
1598		autorest.AsGet(),
1599		autorest.WithBaseURL(client.BaseURI),
1600		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default/metricdefinitions", pathParameters),
1601		autorest.WithQueryParameters(queryParameters))
1602	return preparer.Prepare((&http.Request{}).WithContext(ctx))
1603}
1604
1605// ListMultiRoleMetricDefinitionsSender sends the ListMultiRoleMetricDefinitions request. The method will close the
1606// http.Response Body if it receives an error.
1607func (client AppServiceEnvironmentsClient) ListMultiRoleMetricDefinitionsSender(req *http.Request) (*http.Response, error) {
1608	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
1609}
1610
1611// ListMultiRoleMetricDefinitionsResponder handles the response to the ListMultiRoleMetricDefinitions request. The method always
1612// closes the http.Response Body.
1613func (client AppServiceEnvironmentsClient) ListMultiRoleMetricDefinitionsResponder(resp *http.Response) (result ResourceMetricDefinitionCollection, err error) {
1614	err = autorest.Respond(
1615		resp,
1616		azure.WithErrorUnlessStatusCode(http.StatusOK),
1617		autorest.ByUnmarshallingJSON(&result),
1618		autorest.ByClosing())
1619	result.Response = autorest.Response{Response: resp}
1620	return
1621}
1622
1623// listMultiRoleMetricDefinitionsNextResults retrieves the next set of results, if any.
1624func (client AppServiceEnvironmentsClient) listMultiRoleMetricDefinitionsNextResults(ctx context.Context, lastResults ResourceMetricDefinitionCollection) (result ResourceMetricDefinitionCollection, err error) {
1625	req, err := lastResults.resourceMetricDefinitionCollectionPreparer(ctx)
1626	if err != nil {
1627		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRoleMetricDefinitionsNextResults", nil, "Failure preparing next results request")
1628	}
1629	if req == nil {
1630		return
1631	}
1632	resp, err := client.ListMultiRoleMetricDefinitionsSender(req)
1633	if err != nil {
1634		result.Response = autorest.Response{Response: resp}
1635		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRoleMetricDefinitionsNextResults", resp, "Failure sending next results request")
1636	}
1637	result, err = client.ListMultiRoleMetricDefinitionsResponder(resp)
1638	if err != nil {
1639		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRoleMetricDefinitionsNextResults", resp, "Failure responding to next results request")
1640	}
1641	return
1642}
1643
1644// ListMultiRoleMetricDefinitionsComplete enumerates all values, automatically crossing page boundaries as required.
1645func (client AppServiceEnvironmentsClient) ListMultiRoleMetricDefinitionsComplete(ctx context.Context, resourceGroupName string, name string) (result ResourceMetricDefinitionCollectionIterator, err error) {
1646	if tracing.IsEnabled() {
1647		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMultiRoleMetricDefinitions")
1648		defer func() {
1649			sc := -1
1650			if result.Response().Response.Response != nil {
1651				sc = result.page.Response().Response.Response.StatusCode
1652			}
1653			tracing.EndSpan(ctx, sc, err)
1654		}()
1655	}
1656	result.page, err = client.ListMultiRoleMetricDefinitions(ctx, resourceGroupName, name)
1657	return
1658}
1659
1660// ListMultiRoleMetrics get metrics for a multi-role pool of an App Service Environment.
1661// Parameters:
1662// resourceGroupName - name of the resource group to which the resource belongs.
1663// name - name of the App Service Environment.
1664// startTime - beginning time of the metrics query.
1665// endTime - end time of the metrics query.
1666// timeGrain - time granularity of the metrics query.
1667// details - specify <code>true</code> to include instance details. The default is <code>false</code>.
1668// filter - return only usages/metrics specified in the filter. Filter conforms to odata syntax. Example:
1669// $filter=(name.value eq 'Metric1' or name.value eq 'Metric2') and startTime eq '2014-01-01T00:00:00Z' and
1670// endTime eq '2014-12-31T23:59:59Z' and timeGrain eq duration'[Hour|Minute|Day]'.
1671func (client AppServiceEnvironmentsClient) ListMultiRoleMetrics(ctx context.Context, resourceGroupName string, name string, startTime string, endTime string, timeGrain string, details *bool, filter string) (result ResourceMetricCollectionPage, err error) {
1672	if tracing.IsEnabled() {
1673		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMultiRoleMetrics")
1674		defer func() {
1675			sc := -1
1676			if result.rmc.Response.Response != nil {
1677				sc = result.rmc.Response.Response.StatusCode
1678			}
1679			tracing.EndSpan(ctx, sc, err)
1680		}()
1681	}
1682	if err := validation.Validate([]validation.Validation{
1683		{TargetValue: resourceGroupName,
1684			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
1685				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
1686				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
1687		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListMultiRoleMetrics", err.Error())
1688	}
1689
1690	result.fn = client.listMultiRoleMetricsNextResults
1691	req, err := client.ListMultiRoleMetricsPreparer(ctx, resourceGroupName, name, startTime, endTime, timeGrain, details, filter)
1692	if err != nil {
1693		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRoleMetrics", nil, "Failure preparing request")
1694		return
1695	}
1696
1697	resp, err := client.ListMultiRoleMetricsSender(req)
1698	if err != nil {
1699		result.rmc.Response = autorest.Response{Response: resp}
1700		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRoleMetrics", resp, "Failure sending request")
1701		return
1702	}
1703
1704	result.rmc, err = client.ListMultiRoleMetricsResponder(resp)
1705	if err != nil {
1706		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRoleMetrics", resp, "Failure responding to request")
1707		return
1708	}
1709	if result.rmc.hasNextLink() && result.rmc.IsEmpty() {
1710		err = result.NextWithContext(ctx)
1711		return
1712	}
1713
1714	return
1715}
1716
1717// ListMultiRoleMetricsPreparer prepares the ListMultiRoleMetrics request.
1718func (client AppServiceEnvironmentsClient) ListMultiRoleMetricsPreparer(ctx context.Context, resourceGroupName string, name string, startTime string, endTime string, timeGrain string, details *bool, filter string) (*http.Request, error) {
1719	pathParameters := map[string]interface{}{
1720		"name":              autorest.Encode("path", name),
1721		"resourceGroupName": autorest.Encode("path", resourceGroupName),
1722		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
1723	}
1724
1725	const APIVersion = "2016-09-01"
1726	queryParameters := map[string]interface{}{
1727		"api-version": APIVersion,
1728	}
1729	if len(startTime) > 0 {
1730		queryParameters["startTime"] = autorest.Encode("query", startTime)
1731	}
1732	if len(endTime) > 0 {
1733		queryParameters["endTime"] = autorest.Encode("query", endTime)
1734	}
1735	if len(timeGrain) > 0 {
1736		queryParameters["timeGrain"] = autorest.Encode("query", timeGrain)
1737	}
1738	if details != nil {
1739		queryParameters["details"] = autorest.Encode("query", *details)
1740	}
1741	if len(filter) > 0 {
1742		queryParameters["$filter"] = filter
1743	}
1744
1745	preparer := autorest.CreatePreparer(
1746		autorest.AsGet(),
1747		autorest.WithBaseURL(client.BaseURI),
1748		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default/metrics", pathParameters),
1749		autorest.WithQueryParameters(queryParameters))
1750	return preparer.Prepare((&http.Request{}).WithContext(ctx))
1751}
1752
1753// ListMultiRoleMetricsSender sends the ListMultiRoleMetrics request. The method will close the
1754// http.Response Body if it receives an error.
1755func (client AppServiceEnvironmentsClient) ListMultiRoleMetricsSender(req *http.Request) (*http.Response, error) {
1756	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
1757}
1758
1759// ListMultiRoleMetricsResponder handles the response to the ListMultiRoleMetrics request. The method always
1760// closes the http.Response Body.
1761func (client AppServiceEnvironmentsClient) ListMultiRoleMetricsResponder(resp *http.Response) (result ResourceMetricCollection, err error) {
1762	err = autorest.Respond(
1763		resp,
1764		azure.WithErrorUnlessStatusCode(http.StatusOK),
1765		autorest.ByUnmarshallingJSON(&result),
1766		autorest.ByClosing())
1767	result.Response = autorest.Response{Response: resp}
1768	return
1769}
1770
1771// listMultiRoleMetricsNextResults retrieves the next set of results, if any.
1772func (client AppServiceEnvironmentsClient) listMultiRoleMetricsNextResults(ctx context.Context, lastResults ResourceMetricCollection) (result ResourceMetricCollection, err error) {
1773	req, err := lastResults.resourceMetricCollectionPreparer(ctx)
1774	if err != nil {
1775		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRoleMetricsNextResults", nil, "Failure preparing next results request")
1776	}
1777	if req == nil {
1778		return
1779	}
1780	resp, err := client.ListMultiRoleMetricsSender(req)
1781	if err != nil {
1782		result.Response = autorest.Response{Response: resp}
1783		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRoleMetricsNextResults", resp, "Failure sending next results request")
1784	}
1785	result, err = client.ListMultiRoleMetricsResponder(resp)
1786	if err != nil {
1787		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRoleMetricsNextResults", resp, "Failure responding to next results request")
1788	}
1789	return
1790}
1791
1792// ListMultiRoleMetricsComplete enumerates all values, automatically crossing page boundaries as required.
1793func (client AppServiceEnvironmentsClient) ListMultiRoleMetricsComplete(ctx context.Context, resourceGroupName string, name string, startTime string, endTime string, timeGrain string, details *bool, filter string) (result ResourceMetricCollectionIterator, err error) {
1794	if tracing.IsEnabled() {
1795		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMultiRoleMetrics")
1796		defer func() {
1797			sc := -1
1798			if result.Response().Response.Response != nil {
1799				sc = result.page.Response().Response.Response.StatusCode
1800			}
1801			tracing.EndSpan(ctx, sc, err)
1802		}()
1803	}
1804	result.page, err = client.ListMultiRoleMetrics(ctx, resourceGroupName, name, startTime, endTime, timeGrain, details, filter)
1805	return
1806}
1807
1808// ListMultiRolePoolInstanceMetricDefinitions get metric definitions for a specific instance of a multi-role pool of an
1809// App Service Environment.
1810// Parameters:
1811// resourceGroupName - name of the resource group to which the resource belongs.
1812// name - name of the App Service Environment.
1813// instance - name of the instance in the multi-role pool.
1814func (client AppServiceEnvironmentsClient) ListMultiRolePoolInstanceMetricDefinitions(ctx context.Context, resourceGroupName string, name string, instance string) (result ResourceMetricDefinitionCollectionPage, err error) {
1815	if tracing.IsEnabled() {
1816		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMultiRolePoolInstanceMetricDefinitions")
1817		defer func() {
1818			sc := -1
1819			if result.rmdc.Response.Response != nil {
1820				sc = result.rmdc.Response.Response.StatusCode
1821			}
1822			tracing.EndSpan(ctx, sc, err)
1823		}()
1824	}
1825	if err := validation.Validate([]validation.Validation{
1826		{TargetValue: resourceGroupName,
1827			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
1828				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
1829				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
1830		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListMultiRolePoolInstanceMetricDefinitions", err.Error())
1831	}
1832
1833	result.fn = client.listMultiRolePoolInstanceMetricDefinitionsNextResults
1834	req, err := client.ListMultiRolePoolInstanceMetricDefinitionsPreparer(ctx, resourceGroupName, name, instance)
1835	if err != nil {
1836		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRolePoolInstanceMetricDefinitions", nil, "Failure preparing request")
1837		return
1838	}
1839
1840	resp, err := client.ListMultiRolePoolInstanceMetricDefinitionsSender(req)
1841	if err != nil {
1842		result.rmdc.Response = autorest.Response{Response: resp}
1843		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRolePoolInstanceMetricDefinitions", resp, "Failure sending request")
1844		return
1845	}
1846
1847	result.rmdc, err = client.ListMultiRolePoolInstanceMetricDefinitionsResponder(resp)
1848	if err != nil {
1849		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRolePoolInstanceMetricDefinitions", resp, "Failure responding to request")
1850		return
1851	}
1852	if result.rmdc.hasNextLink() && result.rmdc.IsEmpty() {
1853		err = result.NextWithContext(ctx)
1854		return
1855	}
1856
1857	return
1858}
1859
1860// ListMultiRolePoolInstanceMetricDefinitionsPreparer prepares the ListMultiRolePoolInstanceMetricDefinitions request.
1861func (client AppServiceEnvironmentsClient) ListMultiRolePoolInstanceMetricDefinitionsPreparer(ctx context.Context, resourceGroupName string, name string, instance string) (*http.Request, error) {
1862	pathParameters := map[string]interface{}{
1863		"instance":          autorest.Encode("path", instance),
1864		"name":              autorest.Encode("path", name),
1865		"resourceGroupName": autorest.Encode("path", resourceGroupName),
1866		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
1867	}
1868
1869	const APIVersion = "2016-09-01"
1870	queryParameters := map[string]interface{}{
1871		"api-version": APIVersion,
1872	}
1873
1874	preparer := autorest.CreatePreparer(
1875		autorest.AsGet(),
1876		autorest.WithBaseURL(client.BaseURI),
1877		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default/instances/{instance}/metricdefinitions", pathParameters),
1878		autorest.WithQueryParameters(queryParameters))
1879	return preparer.Prepare((&http.Request{}).WithContext(ctx))
1880}
1881
1882// ListMultiRolePoolInstanceMetricDefinitionsSender sends the ListMultiRolePoolInstanceMetricDefinitions request. The method will close the
1883// http.Response Body if it receives an error.
1884func (client AppServiceEnvironmentsClient) ListMultiRolePoolInstanceMetricDefinitionsSender(req *http.Request) (*http.Response, error) {
1885	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
1886}
1887
1888// ListMultiRolePoolInstanceMetricDefinitionsResponder handles the response to the ListMultiRolePoolInstanceMetricDefinitions request. The method always
1889// closes the http.Response Body.
1890func (client AppServiceEnvironmentsClient) ListMultiRolePoolInstanceMetricDefinitionsResponder(resp *http.Response) (result ResourceMetricDefinitionCollection, err error) {
1891	err = autorest.Respond(
1892		resp,
1893		azure.WithErrorUnlessStatusCode(http.StatusOK),
1894		autorest.ByUnmarshallingJSON(&result),
1895		autorest.ByClosing())
1896	result.Response = autorest.Response{Response: resp}
1897	return
1898}
1899
1900// listMultiRolePoolInstanceMetricDefinitionsNextResults retrieves the next set of results, if any.
1901func (client AppServiceEnvironmentsClient) listMultiRolePoolInstanceMetricDefinitionsNextResults(ctx context.Context, lastResults ResourceMetricDefinitionCollection) (result ResourceMetricDefinitionCollection, err error) {
1902	req, err := lastResults.resourceMetricDefinitionCollectionPreparer(ctx)
1903	if err != nil {
1904		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRolePoolInstanceMetricDefinitionsNextResults", nil, "Failure preparing next results request")
1905	}
1906	if req == nil {
1907		return
1908	}
1909	resp, err := client.ListMultiRolePoolInstanceMetricDefinitionsSender(req)
1910	if err != nil {
1911		result.Response = autorest.Response{Response: resp}
1912		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRolePoolInstanceMetricDefinitionsNextResults", resp, "Failure sending next results request")
1913	}
1914	result, err = client.ListMultiRolePoolInstanceMetricDefinitionsResponder(resp)
1915	if err != nil {
1916		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRolePoolInstanceMetricDefinitionsNextResults", resp, "Failure responding to next results request")
1917	}
1918	return
1919}
1920
1921// ListMultiRolePoolInstanceMetricDefinitionsComplete enumerates all values, automatically crossing page boundaries as required.
1922func (client AppServiceEnvironmentsClient) ListMultiRolePoolInstanceMetricDefinitionsComplete(ctx context.Context, resourceGroupName string, name string, instance string) (result ResourceMetricDefinitionCollectionIterator, err error) {
1923	if tracing.IsEnabled() {
1924		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMultiRolePoolInstanceMetricDefinitions")
1925		defer func() {
1926			sc := -1
1927			if result.Response().Response.Response != nil {
1928				sc = result.page.Response().Response.Response.StatusCode
1929			}
1930			tracing.EndSpan(ctx, sc, err)
1931		}()
1932	}
1933	result.page, err = client.ListMultiRolePoolInstanceMetricDefinitions(ctx, resourceGroupName, name, instance)
1934	return
1935}
1936
1937// ListMultiRolePoolInstanceMetrics get metrics for a specific instance of a multi-role pool of an App Service
1938// Environment.
1939// Parameters:
1940// resourceGroupName - name of the resource group to which the resource belongs.
1941// name - name of the App Service Environment.
1942// instance - name of the instance in the multi-role pool.
1943// details - specify <code>true</code> to include instance details. The default is <code>false</code>.
1944func (client AppServiceEnvironmentsClient) ListMultiRolePoolInstanceMetrics(ctx context.Context, resourceGroupName string, name string, instance string, details *bool) (result ResourceMetricCollectionPage, err error) {
1945	if tracing.IsEnabled() {
1946		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMultiRolePoolInstanceMetrics")
1947		defer func() {
1948			sc := -1
1949			if result.rmc.Response.Response != nil {
1950				sc = result.rmc.Response.Response.StatusCode
1951			}
1952			tracing.EndSpan(ctx, sc, err)
1953		}()
1954	}
1955	if err := validation.Validate([]validation.Validation{
1956		{TargetValue: resourceGroupName,
1957			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
1958				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
1959				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
1960		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListMultiRolePoolInstanceMetrics", err.Error())
1961	}
1962
1963	result.fn = client.listMultiRolePoolInstanceMetricsNextResults
1964	req, err := client.ListMultiRolePoolInstanceMetricsPreparer(ctx, resourceGroupName, name, instance, details)
1965	if err != nil {
1966		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRolePoolInstanceMetrics", nil, "Failure preparing request")
1967		return
1968	}
1969
1970	resp, err := client.ListMultiRolePoolInstanceMetricsSender(req)
1971	if err != nil {
1972		result.rmc.Response = autorest.Response{Response: resp}
1973		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRolePoolInstanceMetrics", resp, "Failure sending request")
1974		return
1975	}
1976
1977	result.rmc, err = client.ListMultiRolePoolInstanceMetricsResponder(resp)
1978	if err != nil {
1979		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRolePoolInstanceMetrics", resp, "Failure responding to request")
1980		return
1981	}
1982	if result.rmc.hasNextLink() && result.rmc.IsEmpty() {
1983		err = result.NextWithContext(ctx)
1984		return
1985	}
1986
1987	return
1988}
1989
1990// ListMultiRolePoolInstanceMetricsPreparer prepares the ListMultiRolePoolInstanceMetrics request.
1991func (client AppServiceEnvironmentsClient) ListMultiRolePoolInstanceMetricsPreparer(ctx context.Context, resourceGroupName string, name string, instance string, details *bool) (*http.Request, error) {
1992	pathParameters := map[string]interface{}{
1993		"instance":          autorest.Encode("path", instance),
1994		"name":              autorest.Encode("path", name),
1995		"resourceGroupName": autorest.Encode("path", resourceGroupName),
1996		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
1997	}
1998
1999	const APIVersion = "2016-09-01"
2000	queryParameters := map[string]interface{}{
2001		"api-version": APIVersion,
2002	}
2003	if details != nil {
2004		queryParameters["details"] = autorest.Encode("query", *details)
2005	}
2006
2007	preparer := autorest.CreatePreparer(
2008		autorest.AsGet(),
2009		autorest.WithBaseURL(client.BaseURI),
2010		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default/instances/{instance}/metrics", pathParameters),
2011		autorest.WithQueryParameters(queryParameters))
2012	return preparer.Prepare((&http.Request{}).WithContext(ctx))
2013}
2014
2015// ListMultiRolePoolInstanceMetricsSender sends the ListMultiRolePoolInstanceMetrics request. The method will close the
2016// http.Response Body if it receives an error.
2017func (client AppServiceEnvironmentsClient) ListMultiRolePoolInstanceMetricsSender(req *http.Request) (*http.Response, error) {
2018	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
2019}
2020
2021// ListMultiRolePoolInstanceMetricsResponder handles the response to the ListMultiRolePoolInstanceMetrics request. The method always
2022// closes the http.Response Body.
2023func (client AppServiceEnvironmentsClient) ListMultiRolePoolInstanceMetricsResponder(resp *http.Response) (result ResourceMetricCollection, err error) {
2024	err = autorest.Respond(
2025		resp,
2026		azure.WithErrorUnlessStatusCode(http.StatusOK),
2027		autorest.ByUnmarshallingJSON(&result),
2028		autorest.ByClosing())
2029	result.Response = autorest.Response{Response: resp}
2030	return
2031}
2032
2033// listMultiRolePoolInstanceMetricsNextResults retrieves the next set of results, if any.
2034func (client AppServiceEnvironmentsClient) listMultiRolePoolInstanceMetricsNextResults(ctx context.Context, lastResults ResourceMetricCollection) (result ResourceMetricCollection, err error) {
2035	req, err := lastResults.resourceMetricCollectionPreparer(ctx)
2036	if err != nil {
2037		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRolePoolInstanceMetricsNextResults", nil, "Failure preparing next results request")
2038	}
2039	if req == nil {
2040		return
2041	}
2042	resp, err := client.ListMultiRolePoolInstanceMetricsSender(req)
2043	if err != nil {
2044		result.Response = autorest.Response{Response: resp}
2045		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRolePoolInstanceMetricsNextResults", resp, "Failure sending next results request")
2046	}
2047	result, err = client.ListMultiRolePoolInstanceMetricsResponder(resp)
2048	if err != nil {
2049		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRolePoolInstanceMetricsNextResults", resp, "Failure responding to next results request")
2050	}
2051	return
2052}
2053
2054// ListMultiRolePoolInstanceMetricsComplete enumerates all values, automatically crossing page boundaries as required.
2055func (client AppServiceEnvironmentsClient) ListMultiRolePoolInstanceMetricsComplete(ctx context.Context, resourceGroupName string, name string, instance string, details *bool) (result ResourceMetricCollectionIterator, err error) {
2056	if tracing.IsEnabled() {
2057		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMultiRolePoolInstanceMetrics")
2058		defer func() {
2059			sc := -1
2060			if result.Response().Response.Response != nil {
2061				sc = result.page.Response().Response.Response.StatusCode
2062			}
2063			tracing.EndSpan(ctx, sc, err)
2064		}()
2065	}
2066	result.page, err = client.ListMultiRolePoolInstanceMetrics(ctx, resourceGroupName, name, instance, details)
2067	return
2068}
2069
2070// ListMultiRolePools get all multi-role pools.
2071// Parameters:
2072// resourceGroupName - name of the resource group to which the resource belongs.
2073// name - name of the App Service Environment.
2074func (client AppServiceEnvironmentsClient) ListMultiRolePools(ctx context.Context, resourceGroupName string, name string) (result WorkerPoolCollectionPage, err error) {
2075	if tracing.IsEnabled() {
2076		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMultiRolePools")
2077		defer func() {
2078			sc := -1
2079			if result.wpc.Response.Response != nil {
2080				sc = result.wpc.Response.Response.StatusCode
2081			}
2082			tracing.EndSpan(ctx, sc, err)
2083		}()
2084	}
2085	if err := validation.Validate([]validation.Validation{
2086		{TargetValue: resourceGroupName,
2087			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
2088				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
2089				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
2090		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListMultiRolePools", err.Error())
2091	}
2092
2093	result.fn = client.listMultiRolePoolsNextResults
2094	req, err := client.ListMultiRolePoolsPreparer(ctx, resourceGroupName, name)
2095	if err != nil {
2096		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRolePools", nil, "Failure preparing request")
2097		return
2098	}
2099
2100	resp, err := client.ListMultiRolePoolsSender(req)
2101	if err != nil {
2102		result.wpc.Response = autorest.Response{Response: resp}
2103		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRolePools", resp, "Failure sending request")
2104		return
2105	}
2106
2107	result.wpc, err = client.ListMultiRolePoolsResponder(resp)
2108	if err != nil {
2109		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRolePools", resp, "Failure responding to request")
2110		return
2111	}
2112	if result.wpc.hasNextLink() && result.wpc.IsEmpty() {
2113		err = result.NextWithContext(ctx)
2114		return
2115	}
2116
2117	return
2118}
2119
2120// ListMultiRolePoolsPreparer prepares the ListMultiRolePools request.
2121func (client AppServiceEnvironmentsClient) ListMultiRolePoolsPreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
2122	pathParameters := map[string]interface{}{
2123		"name":              autorest.Encode("path", name),
2124		"resourceGroupName": autorest.Encode("path", resourceGroupName),
2125		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
2126	}
2127
2128	const APIVersion = "2016-09-01"
2129	queryParameters := map[string]interface{}{
2130		"api-version": APIVersion,
2131	}
2132
2133	preparer := autorest.CreatePreparer(
2134		autorest.AsGet(),
2135		autorest.WithBaseURL(client.BaseURI),
2136		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools", pathParameters),
2137		autorest.WithQueryParameters(queryParameters))
2138	return preparer.Prepare((&http.Request{}).WithContext(ctx))
2139}
2140
2141// ListMultiRolePoolsSender sends the ListMultiRolePools request. The method will close the
2142// http.Response Body if it receives an error.
2143func (client AppServiceEnvironmentsClient) ListMultiRolePoolsSender(req *http.Request) (*http.Response, error) {
2144	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
2145}
2146
2147// ListMultiRolePoolsResponder handles the response to the ListMultiRolePools request. The method always
2148// closes the http.Response Body.
2149func (client AppServiceEnvironmentsClient) ListMultiRolePoolsResponder(resp *http.Response) (result WorkerPoolCollection, err error) {
2150	err = autorest.Respond(
2151		resp,
2152		azure.WithErrorUnlessStatusCode(http.StatusOK),
2153		autorest.ByUnmarshallingJSON(&result),
2154		autorest.ByClosing())
2155	result.Response = autorest.Response{Response: resp}
2156	return
2157}
2158
2159// listMultiRolePoolsNextResults retrieves the next set of results, if any.
2160func (client AppServiceEnvironmentsClient) listMultiRolePoolsNextResults(ctx context.Context, lastResults WorkerPoolCollection) (result WorkerPoolCollection, err error) {
2161	req, err := lastResults.workerPoolCollectionPreparer(ctx)
2162	if err != nil {
2163		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRolePoolsNextResults", nil, "Failure preparing next results request")
2164	}
2165	if req == nil {
2166		return
2167	}
2168	resp, err := client.ListMultiRolePoolsSender(req)
2169	if err != nil {
2170		result.Response = autorest.Response{Response: resp}
2171		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRolePoolsNextResults", resp, "Failure sending next results request")
2172	}
2173	result, err = client.ListMultiRolePoolsResponder(resp)
2174	if err != nil {
2175		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRolePoolsNextResults", resp, "Failure responding to next results request")
2176	}
2177	return
2178}
2179
2180// ListMultiRolePoolsComplete enumerates all values, automatically crossing page boundaries as required.
2181func (client AppServiceEnvironmentsClient) ListMultiRolePoolsComplete(ctx context.Context, resourceGroupName string, name string) (result WorkerPoolCollectionIterator, err error) {
2182	if tracing.IsEnabled() {
2183		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMultiRolePools")
2184		defer func() {
2185			sc := -1
2186			if result.Response().Response.Response != nil {
2187				sc = result.page.Response().Response.Response.StatusCode
2188			}
2189			tracing.EndSpan(ctx, sc, err)
2190		}()
2191	}
2192	result.page, err = client.ListMultiRolePools(ctx, resourceGroupName, name)
2193	return
2194}
2195
2196// ListMultiRolePoolSkus get available SKUs for scaling a multi-role pool.
2197// Parameters:
2198// resourceGroupName - name of the resource group to which the resource belongs.
2199// name - name of the App Service Environment.
2200func (client AppServiceEnvironmentsClient) ListMultiRolePoolSkus(ctx context.Context, resourceGroupName string, name string) (result SkuInfoCollectionPage, err error) {
2201	if tracing.IsEnabled() {
2202		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMultiRolePoolSkus")
2203		defer func() {
2204			sc := -1
2205			if result.sic.Response.Response != nil {
2206				sc = result.sic.Response.Response.StatusCode
2207			}
2208			tracing.EndSpan(ctx, sc, err)
2209		}()
2210	}
2211	if err := validation.Validate([]validation.Validation{
2212		{TargetValue: resourceGroupName,
2213			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
2214				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
2215				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
2216		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListMultiRolePoolSkus", err.Error())
2217	}
2218
2219	result.fn = client.listMultiRolePoolSkusNextResults
2220	req, err := client.ListMultiRolePoolSkusPreparer(ctx, resourceGroupName, name)
2221	if err != nil {
2222		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRolePoolSkus", nil, "Failure preparing request")
2223		return
2224	}
2225
2226	resp, err := client.ListMultiRolePoolSkusSender(req)
2227	if err != nil {
2228		result.sic.Response = autorest.Response{Response: resp}
2229		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRolePoolSkus", resp, "Failure sending request")
2230		return
2231	}
2232
2233	result.sic, err = client.ListMultiRolePoolSkusResponder(resp)
2234	if err != nil {
2235		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRolePoolSkus", resp, "Failure responding to request")
2236		return
2237	}
2238	if result.sic.hasNextLink() && result.sic.IsEmpty() {
2239		err = result.NextWithContext(ctx)
2240		return
2241	}
2242
2243	return
2244}
2245
2246// ListMultiRolePoolSkusPreparer prepares the ListMultiRolePoolSkus request.
2247func (client AppServiceEnvironmentsClient) ListMultiRolePoolSkusPreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
2248	pathParameters := map[string]interface{}{
2249		"name":              autorest.Encode("path", name),
2250		"resourceGroupName": autorest.Encode("path", resourceGroupName),
2251		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
2252	}
2253
2254	const APIVersion = "2016-09-01"
2255	queryParameters := map[string]interface{}{
2256		"api-version": APIVersion,
2257	}
2258
2259	preparer := autorest.CreatePreparer(
2260		autorest.AsGet(),
2261		autorest.WithBaseURL(client.BaseURI),
2262		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default/skus", pathParameters),
2263		autorest.WithQueryParameters(queryParameters))
2264	return preparer.Prepare((&http.Request{}).WithContext(ctx))
2265}
2266
2267// ListMultiRolePoolSkusSender sends the ListMultiRolePoolSkus request. The method will close the
2268// http.Response Body if it receives an error.
2269func (client AppServiceEnvironmentsClient) ListMultiRolePoolSkusSender(req *http.Request) (*http.Response, error) {
2270	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
2271}
2272
2273// ListMultiRolePoolSkusResponder handles the response to the ListMultiRolePoolSkus request. The method always
2274// closes the http.Response Body.
2275func (client AppServiceEnvironmentsClient) ListMultiRolePoolSkusResponder(resp *http.Response) (result SkuInfoCollection, err error) {
2276	err = autorest.Respond(
2277		resp,
2278		azure.WithErrorUnlessStatusCode(http.StatusOK),
2279		autorest.ByUnmarshallingJSON(&result),
2280		autorest.ByClosing())
2281	result.Response = autorest.Response{Response: resp}
2282	return
2283}
2284
2285// listMultiRolePoolSkusNextResults retrieves the next set of results, if any.
2286func (client AppServiceEnvironmentsClient) listMultiRolePoolSkusNextResults(ctx context.Context, lastResults SkuInfoCollection) (result SkuInfoCollection, err error) {
2287	req, err := lastResults.skuInfoCollectionPreparer(ctx)
2288	if err != nil {
2289		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRolePoolSkusNextResults", nil, "Failure preparing next results request")
2290	}
2291	if req == nil {
2292		return
2293	}
2294	resp, err := client.ListMultiRolePoolSkusSender(req)
2295	if err != nil {
2296		result.Response = autorest.Response{Response: resp}
2297		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRolePoolSkusNextResults", resp, "Failure sending next results request")
2298	}
2299	result, err = client.ListMultiRolePoolSkusResponder(resp)
2300	if err != nil {
2301		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRolePoolSkusNextResults", resp, "Failure responding to next results request")
2302	}
2303	return
2304}
2305
2306// ListMultiRolePoolSkusComplete enumerates all values, automatically crossing page boundaries as required.
2307func (client AppServiceEnvironmentsClient) ListMultiRolePoolSkusComplete(ctx context.Context, resourceGroupName string, name string) (result SkuInfoCollectionIterator, err error) {
2308	if tracing.IsEnabled() {
2309		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMultiRolePoolSkus")
2310		defer func() {
2311			sc := -1
2312			if result.Response().Response.Response != nil {
2313				sc = result.page.Response().Response.Response.StatusCode
2314			}
2315			tracing.EndSpan(ctx, sc, err)
2316		}()
2317	}
2318	result.page, err = client.ListMultiRolePoolSkus(ctx, resourceGroupName, name)
2319	return
2320}
2321
2322// ListMultiRoleUsages get usage metrics for a multi-role pool of an App Service Environment.
2323// Parameters:
2324// resourceGroupName - name of the resource group to which the resource belongs.
2325// name - name of the App Service Environment.
2326func (client AppServiceEnvironmentsClient) ListMultiRoleUsages(ctx context.Context, resourceGroupName string, name string) (result UsageCollectionPage, err error) {
2327	if tracing.IsEnabled() {
2328		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMultiRoleUsages")
2329		defer func() {
2330			sc := -1
2331			if result.uc.Response.Response != nil {
2332				sc = result.uc.Response.Response.StatusCode
2333			}
2334			tracing.EndSpan(ctx, sc, err)
2335		}()
2336	}
2337	if err := validation.Validate([]validation.Validation{
2338		{TargetValue: resourceGroupName,
2339			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
2340				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
2341				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
2342		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListMultiRoleUsages", err.Error())
2343	}
2344
2345	result.fn = client.listMultiRoleUsagesNextResults
2346	req, err := client.ListMultiRoleUsagesPreparer(ctx, resourceGroupName, name)
2347	if err != nil {
2348		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRoleUsages", nil, "Failure preparing request")
2349		return
2350	}
2351
2352	resp, err := client.ListMultiRoleUsagesSender(req)
2353	if err != nil {
2354		result.uc.Response = autorest.Response{Response: resp}
2355		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRoleUsages", resp, "Failure sending request")
2356		return
2357	}
2358
2359	result.uc, err = client.ListMultiRoleUsagesResponder(resp)
2360	if err != nil {
2361		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListMultiRoleUsages", resp, "Failure responding to request")
2362		return
2363	}
2364	if result.uc.hasNextLink() && result.uc.IsEmpty() {
2365		err = result.NextWithContext(ctx)
2366		return
2367	}
2368
2369	return
2370}
2371
2372// ListMultiRoleUsagesPreparer prepares the ListMultiRoleUsages request.
2373func (client AppServiceEnvironmentsClient) ListMultiRoleUsagesPreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
2374	pathParameters := map[string]interface{}{
2375		"name":              autorest.Encode("path", name),
2376		"resourceGroupName": autorest.Encode("path", resourceGroupName),
2377		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
2378	}
2379
2380	const APIVersion = "2016-09-01"
2381	queryParameters := map[string]interface{}{
2382		"api-version": APIVersion,
2383	}
2384
2385	preparer := autorest.CreatePreparer(
2386		autorest.AsGet(),
2387		autorest.WithBaseURL(client.BaseURI),
2388		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default/usages", pathParameters),
2389		autorest.WithQueryParameters(queryParameters))
2390	return preparer.Prepare((&http.Request{}).WithContext(ctx))
2391}
2392
2393// ListMultiRoleUsagesSender sends the ListMultiRoleUsages request. The method will close the
2394// http.Response Body if it receives an error.
2395func (client AppServiceEnvironmentsClient) ListMultiRoleUsagesSender(req *http.Request) (*http.Response, error) {
2396	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
2397}
2398
2399// ListMultiRoleUsagesResponder handles the response to the ListMultiRoleUsages request. The method always
2400// closes the http.Response Body.
2401func (client AppServiceEnvironmentsClient) ListMultiRoleUsagesResponder(resp *http.Response) (result UsageCollection, err error) {
2402	err = autorest.Respond(
2403		resp,
2404		azure.WithErrorUnlessStatusCode(http.StatusOK),
2405		autorest.ByUnmarshallingJSON(&result),
2406		autorest.ByClosing())
2407	result.Response = autorest.Response{Response: resp}
2408	return
2409}
2410
2411// listMultiRoleUsagesNextResults retrieves the next set of results, if any.
2412func (client AppServiceEnvironmentsClient) listMultiRoleUsagesNextResults(ctx context.Context, lastResults UsageCollection) (result UsageCollection, err error) {
2413	req, err := lastResults.usageCollectionPreparer(ctx)
2414	if err != nil {
2415		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRoleUsagesNextResults", nil, "Failure preparing next results request")
2416	}
2417	if req == nil {
2418		return
2419	}
2420	resp, err := client.ListMultiRoleUsagesSender(req)
2421	if err != nil {
2422		result.Response = autorest.Response{Response: resp}
2423		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRoleUsagesNextResults", resp, "Failure sending next results request")
2424	}
2425	result, err = client.ListMultiRoleUsagesResponder(resp)
2426	if err != nil {
2427		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listMultiRoleUsagesNextResults", resp, "Failure responding to next results request")
2428	}
2429	return
2430}
2431
2432// ListMultiRoleUsagesComplete enumerates all values, automatically crossing page boundaries as required.
2433func (client AppServiceEnvironmentsClient) ListMultiRoleUsagesComplete(ctx context.Context, resourceGroupName string, name string) (result UsageCollectionIterator, err error) {
2434	if tracing.IsEnabled() {
2435		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListMultiRoleUsages")
2436		defer func() {
2437			sc := -1
2438			if result.Response().Response.Response != nil {
2439				sc = result.page.Response().Response.Response.StatusCode
2440			}
2441			tracing.EndSpan(ctx, sc, err)
2442		}()
2443	}
2444	result.page, err = client.ListMultiRoleUsages(ctx, resourceGroupName, name)
2445	return
2446}
2447
2448// ListOperations list all currently running operations on the App Service Environment.
2449// Parameters:
2450// resourceGroupName - name of the resource group to which the resource belongs.
2451// name - name of the App Service Environment.
2452func (client AppServiceEnvironmentsClient) ListOperations(ctx context.Context, resourceGroupName string, name string) (result ListOperation, err error) {
2453	if tracing.IsEnabled() {
2454		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListOperations")
2455		defer func() {
2456			sc := -1
2457			if result.Response.Response != nil {
2458				sc = result.Response.Response.StatusCode
2459			}
2460			tracing.EndSpan(ctx, sc, err)
2461		}()
2462	}
2463	if err := validation.Validate([]validation.Validation{
2464		{TargetValue: resourceGroupName,
2465			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
2466				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
2467				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
2468		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListOperations", err.Error())
2469	}
2470
2471	req, err := client.ListOperationsPreparer(ctx, resourceGroupName, name)
2472	if err != nil {
2473		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListOperations", nil, "Failure preparing request")
2474		return
2475	}
2476
2477	resp, err := client.ListOperationsSender(req)
2478	if err != nil {
2479		result.Response = autorest.Response{Response: resp}
2480		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListOperations", resp, "Failure sending request")
2481		return
2482	}
2483
2484	result, err = client.ListOperationsResponder(resp)
2485	if err != nil {
2486		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListOperations", resp, "Failure responding to request")
2487		return
2488	}
2489
2490	return
2491}
2492
2493// ListOperationsPreparer prepares the ListOperations request.
2494func (client AppServiceEnvironmentsClient) ListOperationsPreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
2495	pathParameters := map[string]interface{}{
2496		"name":              autorest.Encode("path", name),
2497		"resourceGroupName": autorest.Encode("path", resourceGroupName),
2498		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
2499	}
2500
2501	const APIVersion = "2016-09-01"
2502	queryParameters := map[string]interface{}{
2503		"api-version": APIVersion,
2504	}
2505
2506	preparer := autorest.CreatePreparer(
2507		autorest.AsGet(),
2508		autorest.WithBaseURL(client.BaseURI),
2509		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/operations", pathParameters),
2510		autorest.WithQueryParameters(queryParameters))
2511	return preparer.Prepare((&http.Request{}).WithContext(ctx))
2512}
2513
2514// ListOperationsSender sends the ListOperations request. The method will close the
2515// http.Response Body if it receives an error.
2516func (client AppServiceEnvironmentsClient) ListOperationsSender(req *http.Request) (*http.Response, error) {
2517	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
2518}
2519
2520// ListOperationsResponder handles the response to the ListOperations request. The method always
2521// closes the http.Response Body.
2522func (client AppServiceEnvironmentsClient) ListOperationsResponder(resp *http.Response) (result ListOperation, err error) {
2523	err = autorest.Respond(
2524		resp,
2525		azure.WithErrorUnlessStatusCode(http.StatusOK),
2526		autorest.ByUnmarshallingJSON(&result.Value),
2527		autorest.ByClosing())
2528	result.Response = autorest.Response{Response: resp}
2529	return
2530}
2531
2532// ListUsages get global usage metrics of an App Service Environment.
2533// Parameters:
2534// resourceGroupName - name of the resource group to which the resource belongs.
2535// name - name of the App Service Environment.
2536// filter - return only usages/metrics specified in the filter. Filter conforms to odata syntax. Example:
2537// $filter=(name.value eq 'Metric1' or name.value eq 'Metric2') and startTime eq '2014-01-01T00:00:00Z' and
2538// endTime eq '2014-12-31T23:59:59Z' and timeGrain eq duration'[Hour|Minute|Day]'.
2539func (client AppServiceEnvironmentsClient) ListUsages(ctx context.Context, resourceGroupName string, name string, filter string) (result CsmUsageQuotaCollectionPage, err error) {
2540	if tracing.IsEnabled() {
2541		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListUsages")
2542		defer func() {
2543			sc := -1
2544			if result.cuqc.Response.Response != nil {
2545				sc = result.cuqc.Response.Response.StatusCode
2546			}
2547			tracing.EndSpan(ctx, sc, err)
2548		}()
2549	}
2550	if err := validation.Validate([]validation.Validation{
2551		{TargetValue: resourceGroupName,
2552			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
2553				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
2554				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
2555		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListUsages", err.Error())
2556	}
2557
2558	result.fn = client.listUsagesNextResults
2559	req, err := client.ListUsagesPreparer(ctx, resourceGroupName, name, filter)
2560	if err != nil {
2561		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListUsages", nil, "Failure preparing request")
2562		return
2563	}
2564
2565	resp, err := client.ListUsagesSender(req)
2566	if err != nil {
2567		result.cuqc.Response = autorest.Response{Response: resp}
2568		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListUsages", resp, "Failure sending request")
2569		return
2570	}
2571
2572	result.cuqc, err = client.ListUsagesResponder(resp)
2573	if err != nil {
2574		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListUsages", resp, "Failure responding to request")
2575		return
2576	}
2577	if result.cuqc.hasNextLink() && result.cuqc.IsEmpty() {
2578		err = result.NextWithContext(ctx)
2579		return
2580	}
2581
2582	return
2583}
2584
2585// ListUsagesPreparer prepares the ListUsages request.
2586func (client AppServiceEnvironmentsClient) ListUsagesPreparer(ctx context.Context, resourceGroupName string, name string, filter string) (*http.Request, error) {
2587	pathParameters := map[string]interface{}{
2588		"name":              autorest.Encode("path", name),
2589		"resourceGroupName": autorest.Encode("path", resourceGroupName),
2590		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
2591	}
2592
2593	const APIVersion = "2016-09-01"
2594	queryParameters := map[string]interface{}{
2595		"api-version": APIVersion,
2596	}
2597	if len(filter) > 0 {
2598		queryParameters["$filter"] = filter
2599	}
2600
2601	preparer := autorest.CreatePreparer(
2602		autorest.AsGet(),
2603		autorest.WithBaseURL(client.BaseURI),
2604		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/usages", pathParameters),
2605		autorest.WithQueryParameters(queryParameters))
2606	return preparer.Prepare((&http.Request{}).WithContext(ctx))
2607}
2608
2609// ListUsagesSender sends the ListUsages request. The method will close the
2610// http.Response Body if it receives an error.
2611func (client AppServiceEnvironmentsClient) ListUsagesSender(req *http.Request) (*http.Response, error) {
2612	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
2613}
2614
2615// ListUsagesResponder handles the response to the ListUsages request. The method always
2616// closes the http.Response Body.
2617func (client AppServiceEnvironmentsClient) ListUsagesResponder(resp *http.Response) (result CsmUsageQuotaCollection, err error) {
2618	err = autorest.Respond(
2619		resp,
2620		azure.WithErrorUnlessStatusCode(http.StatusOK),
2621		autorest.ByUnmarshallingJSON(&result),
2622		autorest.ByClosing())
2623	result.Response = autorest.Response{Response: resp}
2624	return
2625}
2626
2627// listUsagesNextResults retrieves the next set of results, if any.
2628func (client AppServiceEnvironmentsClient) listUsagesNextResults(ctx context.Context, lastResults CsmUsageQuotaCollection) (result CsmUsageQuotaCollection, err error) {
2629	req, err := lastResults.csmUsageQuotaCollectionPreparer(ctx)
2630	if err != nil {
2631		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listUsagesNextResults", nil, "Failure preparing next results request")
2632	}
2633	if req == nil {
2634		return
2635	}
2636	resp, err := client.ListUsagesSender(req)
2637	if err != nil {
2638		result.Response = autorest.Response{Response: resp}
2639		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listUsagesNextResults", resp, "Failure sending next results request")
2640	}
2641	result, err = client.ListUsagesResponder(resp)
2642	if err != nil {
2643		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listUsagesNextResults", resp, "Failure responding to next results request")
2644	}
2645	return
2646}
2647
2648// ListUsagesComplete enumerates all values, automatically crossing page boundaries as required.
2649func (client AppServiceEnvironmentsClient) ListUsagesComplete(ctx context.Context, resourceGroupName string, name string, filter string) (result CsmUsageQuotaCollectionIterator, err error) {
2650	if tracing.IsEnabled() {
2651		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListUsages")
2652		defer func() {
2653			sc := -1
2654			if result.Response().Response.Response != nil {
2655				sc = result.page.Response().Response.Response.StatusCode
2656			}
2657			tracing.EndSpan(ctx, sc, err)
2658		}()
2659	}
2660	result.page, err = client.ListUsages(ctx, resourceGroupName, name, filter)
2661	return
2662}
2663
2664// ListVips get IP addresses assigned to an App Service Environment.
2665// Parameters:
2666// resourceGroupName - name of the resource group to which the resource belongs.
2667// name - name of the App Service Environment.
2668func (client AppServiceEnvironmentsClient) ListVips(ctx context.Context, resourceGroupName string, name string) (result AddressResponse, err error) {
2669	if tracing.IsEnabled() {
2670		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListVips")
2671		defer func() {
2672			sc := -1
2673			if result.Response.Response != nil {
2674				sc = result.Response.Response.StatusCode
2675			}
2676			tracing.EndSpan(ctx, sc, err)
2677		}()
2678	}
2679	if err := validation.Validate([]validation.Validation{
2680		{TargetValue: resourceGroupName,
2681			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
2682				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
2683				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
2684		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListVips", err.Error())
2685	}
2686
2687	req, err := client.ListVipsPreparer(ctx, resourceGroupName, name)
2688	if err != nil {
2689		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListVips", nil, "Failure preparing request")
2690		return
2691	}
2692
2693	resp, err := client.ListVipsSender(req)
2694	if err != nil {
2695		result.Response = autorest.Response{Response: resp}
2696		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListVips", resp, "Failure sending request")
2697		return
2698	}
2699
2700	result, err = client.ListVipsResponder(resp)
2701	if err != nil {
2702		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListVips", resp, "Failure responding to request")
2703		return
2704	}
2705
2706	return
2707}
2708
2709// ListVipsPreparer prepares the ListVips request.
2710func (client AppServiceEnvironmentsClient) ListVipsPreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
2711	pathParameters := map[string]interface{}{
2712		"name":              autorest.Encode("path", name),
2713		"resourceGroupName": autorest.Encode("path", resourceGroupName),
2714		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
2715	}
2716
2717	const APIVersion = "2016-09-01"
2718	queryParameters := map[string]interface{}{
2719		"api-version": APIVersion,
2720	}
2721
2722	preparer := autorest.CreatePreparer(
2723		autorest.AsGet(),
2724		autorest.WithBaseURL(client.BaseURI),
2725		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/capacities/virtualip", pathParameters),
2726		autorest.WithQueryParameters(queryParameters))
2727	return preparer.Prepare((&http.Request{}).WithContext(ctx))
2728}
2729
2730// ListVipsSender sends the ListVips request. The method will close the
2731// http.Response Body if it receives an error.
2732func (client AppServiceEnvironmentsClient) ListVipsSender(req *http.Request) (*http.Response, error) {
2733	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
2734}
2735
2736// ListVipsResponder handles the response to the ListVips request. The method always
2737// closes the http.Response Body.
2738func (client AppServiceEnvironmentsClient) ListVipsResponder(resp *http.Response) (result AddressResponse, err error) {
2739	err = autorest.Respond(
2740		resp,
2741		azure.WithErrorUnlessStatusCode(http.StatusOK),
2742		autorest.ByUnmarshallingJSON(&result),
2743		autorest.ByClosing())
2744	result.Response = autorest.Response{Response: resp}
2745	return
2746}
2747
2748// ListWebApps get all apps in an App Service Environment.
2749// Parameters:
2750// resourceGroupName - name of the resource group to which the resource belongs.
2751// name - name of the App Service Environment.
2752// propertiesToInclude - comma separated list of app properties to include.
2753func (client AppServiceEnvironmentsClient) ListWebApps(ctx context.Context, resourceGroupName string, name string, propertiesToInclude string) (result AppCollectionPage, err error) {
2754	if tracing.IsEnabled() {
2755		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWebApps")
2756		defer func() {
2757			sc := -1
2758			if result.ac.Response.Response != nil {
2759				sc = result.ac.Response.Response.StatusCode
2760			}
2761			tracing.EndSpan(ctx, sc, err)
2762		}()
2763	}
2764	if err := validation.Validate([]validation.Validation{
2765		{TargetValue: resourceGroupName,
2766			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
2767				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
2768				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
2769		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListWebApps", err.Error())
2770	}
2771
2772	result.fn = client.listWebAppsNextResults
2773	req, err := client.ListWebAppsPreparer(ctx, resourceGroupName, name, propertiesToInclude)
2774	if err != nil {
2775		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWebApps", nil, "Failure preparing request")
2776		return
2777	}
2778
2779	resp, err := client.ListWebAppsSender(req)
2780	if err != nil {
2781		result.ac.Response = autorest.Response{Response: resp}
2782		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWebApps", resp, "Failure sending request")
2783		return
2784	}
2785
2786	result.ac, err = client.ListWebAppsResponder(resp)
2787	if err != nil {
2788		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWebApps", resp, "Failure responding to request")
2789		return
2790	}
2791	if result.ac.hasNextLink() && result.ac.IsEmpty() {
2792		err = result.NextWithContext(ctx)
2793		return
2794	}
2795
2796	return
2797}
2798
2799// ListWebAppsPreparer prepares the ListWebApps request.
2800func (client AppServiceEnvironmentsClient) ListWebAppsPreparer(ctx context.Context, resourceGroupName string, name string, propertiesToInclude string) (*http.Request, error) {
2801	pathParameters := map[string]interface{}{
2802		"name":              autorest.Encode("path", name),
2803		"resourceGroupName": autorest.Encode("path", resourceGroupName),
2804		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
2805	}
2806
2807	const APIVersion = "2016-09-01"
2808	queryParameters := map[string]interface{}{
2809		"api-version": APIVersion,
2810	}
2811	if len(propertiesToInclude) > 0 {
2812		queryParameters["propertiesToInclude"] = autorest.Encode("query", propertiesToInclude)
2813	}
2814
2815	preparer := autorest.CreatePreparer(
2816		autorest.AsGet(),
2817		autorest.WithBaseURL(client.BaseURI),
2818		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/sites", pathParameters),
2819		autorest.WithQueryParameters(queryParameters))
2820	return preparer.Prepare((&http.Request{}).WithContext(ctx))
2821}
2822
2823// ListWebAppsSender sends the ListWebApps request. The method will close the
2824// http.Response Body if it receives an error.
2825func (client AppServiceEnvironmentsClient) ListWebAppsSender(req *http.Request) (*http.Response, error) {
2826	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
2827}
2828
2829// ListWebAppsResponder handles the response to the ListWebApps request. The method always
2830// closes the http.Response Body.
2831func (client AppServiceEnvironmentsClient) ListWebAppsResponder(resp *http.Response) (result AppCollection, err error) {
2832	err = autorest.Respond(
2833		resp,
2834		azure.WithErrorUnlessStatusCode(http.StatusOK),
2835		autorest.ByUnmarshallingJSON(&result),
2836		autorest.ByClosing())
2837	result.Response = autorest.Response{Response: resp}
2838	return
2839}
2840
2841// listWebAppsNextResults retrieves the next set of results, if any.
2842func (client AppServiceEnvironmentsClient) listWebAppsNextResults(ctx context.Context, lastResults AppCollection) (result AppCollection, err error) {
2843	req, err := lastResults.appCollectionPreparer(ctx)
2844	if err != nil {
2845		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWebAppsNextResults", nil, "Failure preparing next results request")
2846	}
2847	if req == nil {
2848		return
2849	}
2850	resp, err := client.ListWebAppsSender(req)
2851	if err != nil {
2852		result.Response = autorest.Response{Response: resp}
2853		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWebAppsNextResults", resp, "Failure sending next results request")
2854	}
2855	result, err = client.ListWebAppsResponder(resp)
2856	if err != nil {
2857		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWebAppsNextResults", resp, "Failure responding to next results request")
2858	}
2859	return
2860}
2861
2862// ListWebAppsComplete enumerates all values, automatically crossing page boundaries as required.
2863func (client AppServiceEnvironmentsClient) ListWebAppsComplete(ctx context.Context, resourceGroupName string, name string, propertiesToInclude string) (result AppCollectionIterator, err error) {
2864	if tracing.IsEnabled() {
2865		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWebApps")
2866		defer func() {
2867			sc := -1
2868			if result.Response().Response.Response != nil {
2869				sc = result.page.Response().Response.Response.StatusCode
2870			}
2871			tracing.EndSpan(ctx, sc, err)
2872		}()
2873	}
2874	result.page, err = client.ListWebApps(ctx, resourceGroupName, name, propertiesToInclude)
2875	return
2876}
2877
2878// ListWebWorkerMetricDefinitions get metric definitions for a worker pool of an App Service Environment.
2879// Parameters:
2880// resourceGroupName - name of the resource group to which the resource belongs.
2881// name - name of the App Service Environment.
2882// workerPoolName - name of the worker pool.
2883func (client AppServiceEnvironmentsClient) ListWebWorkerMetricDefinitions(ctx context.Context, resourceGroupName string, name string, workerPoolName string) (result ResourceMetricDefinitionCollectionPage, err error) {
2884	if tracing.IsEnabled() {
2885		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWebWorkerMetricDefinitions")
2886		defer func() {
2887			sc := -1
2888			if result.rmdc.Response.Response != nil {
2889				sc = result.rmdc.Response.Response.StatusCode
2890			}
2891			tracing.EndSpan(ctx, sc, err)
2892		}()
2893	}
2894	if err := validation.Validate([]validation.Validation{
2895		{TargetValue: resourceGroupName,
2896			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
2897				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
2898				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
2899		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListWebWorkerMetricDefinitions", err.Error())
2900	}
2901
2902	result.fn = client.listWebWorkerMetricDefinitionsNextResults
2903	req, err := client.ListWebWorkerMetricDefinitionsPreparer(ctx, resourceGroupName, name, workerPoolName)
2904	if err != nil {
2905		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWebWorkerMetricDefinitions", nil, "Failure preparing request")
2906		return
2907	}
2908
2909	resp, err := client.ListWebWorkerMetricDefinitionsSender(req)
2910	if err != nil {
2911		result.rmdc.Response = autorest.Response{Response: resp}
2912		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWebWorkerMetricDefinitions", resp, "Failure sending request")
2913		return
2914	}
2915
2916	result.rmdc, err = client.ListWebWorkerMetricDefinitionsResponder(resp)
2917	if err != nil {
2918		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWebWorkerMetricDefinitions", resp, "Failure responding to request")
2919		return
2920	}
2921	if result.rmdc.hasNextLink() && result.rmdc.IsEmpty() {
2922		err = result.NextWithContext(ctx)
2923		return
2924	}
2925
2926	return
2927}
2928
2929// ListWebWorkerMetricDefinitionsPreparer prepares the ListWebWorkerMetricDefinitions request.
2930func (client AppServiceEnvironmentsClient) ListWebWorkerMetricDefinitionsPreparer(ctx context.Context, resourceGroupName string, name string, workerPoolName string) (*http.Request, error) {
2931	pathParameters := map[string]interface{}{
2932		"name":              autorest.Encode("path", name),
2933		"resourceGroupName": autorest.Encode("path", resourceGroupName),
2934		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
2935		"workerPoolName":    autorest.Encode("path", workerPoolName),
2936	}
2937
2938	const APIVersion = "2016-09-01"
2939	queryParameters := map[string]interface{}{
2940		"api-version": APIVersion,
2941	}
2942
2943	preparer := autorest.CreatePreparer(
2944		autorest.AsGet(),
2945		autorest.WithBaseURL(client.BaseURI),
2946		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}/metricdefinitions", pathParameters),
2947		autorest.WithQueryParameters(queryParameters))
2948	return preparer.Prepare((&http.Request{}).WithContext(ctx))
2949}
2950
2951// ListWebWorkerMetricDefinitionsSender sends the ListWebWorkerMetricDefinitions request. The method will close the
2952// http.Response Body if it receives an error.
2953func (client AppServiceEnvironmentsClient) ListWebWorkerMetricDefinitionsSender(req *http.Request) (*http.Response, error) {
2954	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
2955}
2956
2957// ListWebWorkerMetricDefinitionsResponder handles the response to the ListWebWorkerMetricDefinitions request. The method always
2958// closes the http.Response Body.
2959func (client AppServiceEnvironmentsClient) ListWebWorkerMetricDefinitionsResponder(resp *http.Response) (result ResourceMetricDefinitionCollection, err error) {
2960	err = autorest.Respond(
2961		resp,
2962		azure.WithErrorUnlessStatusCode(http.StatusOK),
2963		autorest.ByUnmarshallingJSON(&result),
2964		autorest.ByClosing())
2965	result.Response = autorest.Response{Response: resp}
2966	return
2967}
2968
2969// listWebWorkerMetricDefinitionsNextResults retrieves the next set of results, if any.
2970func (client AppServiceEnvironmentsClient) listWebWorkerMetricDefinitionsNextResults(ctx context.Context, lastResults ResourceMetricDefinitionCollection) (result ResourceMetricDefinitionCollection, err error) {
2971	req, err := lastResults.resourceMetricDefinitionCollectionPreparer(ctx)
2972	if err != nil {
2973		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWebWorkerMetricDefinitionsNextResults", nil, "Failure preparing next results request")
2974	}
2975	if req == nil {
2976		return
2977	}
2978	resp, err := client.ListWebWorkerMetricDefinitionsSender(req)
2979	if err != nil {
2980		result.Response = autorest.Response{Response: resp}
2981		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWebWorkerMetricDefinitionsNextResults", resp, "Failure sending next results request")
2982	}
2983	result, err = client.ListWebWorkerMetricDefinitionsResponder(resp)
2984	if err != nil {
2985		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWebWorkerMetricDefinitionsNextResults", resp, "Failure responding to next results request")
2986	}
2987	return
2988}
2989
2990// ListWebWorkerMetricDefinitionsComplete enumerates all values, automatically crossing page boundaries as required.
2991func (client AppServiceEnvironmentsClient) ListWebWorkerMetricDefinitionsComplete(ctx context.Context, resourceGroupName string, name string, workerPoolName string) (result ResourceMetricDefinitionCollectionIterator, err error) {
2992	if tracing.IsEnabled() {
2993		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWebWorkerMetricDefinitions")
2994		defer func() {
2995			sc := -1
2996			if result.Response().Response.Response != nil {
2997				sc = result.page.Response().Response.Response.StatusCode
2998			}
2999			tracing.EndSpan(ctx, sc, err)
3000		}()
3001	}
3002	result.page, err = client.ListWebWorkerMetricDefinitions(ctx, resourceGroupName, name, workerPoolName)
3003	return
3004}
3005
3006// ListWebWorkerMetrics get metrics for a worker pool of a AppServiceEnvironment (App Service Environment).
3007// Parameters:
3008// resourceGroupName - name of the resource group to which the resource belongs.
3009// name - name of the App Service Environment.
3010// workerPoolName - name of worker pool
3011// details - specify <code>true</code> to include instance details. The default is <code>false</code>.
3012// filter - return only usages/metrics specified in the filter. Filter conforms to odata syntax. Example:
3013// $filter=(name.value eq 'Metric1' or name.value eq 'Metric2') and startTime eq '2014-01-01T00:00:00Z' and
3014// endTime eq '2014-12-31T23:59:59Z' and timeGrain eq duration'[Hour|Minute|Day]'.
3015func (client AppServiceEnvironmentsClient) ListWebWorkerMetrics(ctx context.Context, resourceGroupName string, name string, workerPoolName string, details *bool, filter string) (result ResourceMetricCollectionPage, err error) {
3016	if tracing.IsEnabled() {
3017		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWebWorkerMetrics")
3018		defer func() {
3019			sc := -1
3020			if result.rmc.Response.Response != nil {
3021				sc = result.rmc.Response.Response.StatusCode
3022			}
3023			tracing.EndSpan(ctx, sc, err)
3024		}()
3025	}
3026	if err := validation.Validate([]validation.Validation{
3027		{TargetValue: resourceGroupName,
3028			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
3029				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
3030				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
3031		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListWebWorkerMetrics", err.Error())
3032	}
3033
3034	result.fn = client.listWebWorkerMetricsNextResults
3035	req, err := client.ListWebWorkerMetricsPreparer(ctx, resourceGroupName, name, workerPoolName, details, filter)
3036	if err != nil {
3037		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWebWorkerMetrics", nil, "Failure preparing request")
3038		return
3039	}
3040
3041	resp, err := client.ListWebWorkerMetricsSender(req)
3042	if err != nil {
3043		result.rmc.Response = autorest.Response{Response: resp}
3044		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWebWorkerMetrics", resp, "Failure sending request")
3045		return
3046	}
3047
3048	result.rmc, err = client.ListWebWorkerMetricsResponder(resp)
3049	if err != nil {
3050		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWebWorkerMetrics", resp, "Failure responding to request")
3051		return
3052	}
3053	if result.rmc.hasNextLink() && result.rmc.IsEmpty() {
3054		err = result.NextWithContext(ctx)
3055		return
3056	}
3057
3058	return
3059}
3060
3061// ListWebWorkerMetricsPreparer prepares the ListWebWorkerMetrics request.
3062func (client AppServiceEnvironmentsClient) ListWebWorkerMetricsPreparer(ctx context.Context, resourceGroupName string, name string, workerPoolName string, details *bool, filter string) (*http.Request, error) {
3063	pathParameters := map[string]interface{}{
3064		"name":              autorest.Encode("path", name),
3065		"resourceGroupName": autorest.Encode("path", resourceGroupName),
3066		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
3067		"workerPoolName":    autorest.Encode("path", workerPoolName),
3068	}
3069
3070	const APIVersion = "2016-09-01"
3071	queryParameters := map[string]interface{}{
3072		"api-version": APIVersion,
3073	}
3074	if details != nil {
3075		queryParameters["details"] = autorest.Encode("query", *details)
3076	}
3077	if len(filter) > 0 {
3078		queryParameters["$filter"] = filter
3079	}
3080
3081	preparer := autorest.CreatePreparer(
3082		autorest.AsGet(),
3083		autorest.WithBaseURL(client.BaseURI),
3084		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}/metrics", pathParameters),
3085		autorest.WithQueryParameters(queryParameters))
3086	return preparer.Prepare((&http.Request{}).WithContext(ctx))
3087}
3088
3089// ListWebWorkerMetricsSender sends the ListWebWorkerMetrics request. The method will close the
3090// http.Response Body if it receives an error.
3091func (client AppServiceEnvironmentsClient) ListWebWorkerMetricsSender(req *http.Request) (*http.Response, error) {
3092	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
3093}
3094
3095// ListWebWorkerMetricsResponder handles the response to the ListWebWorkerMetrics request. The method always
3096// closes the http.Response Body.
3097func (client AppServiceEnvironmentsClient) ListWebWorkerMetricsResponder(resp *http.Response) (result ResourceMetricCollection, err error) {
3098	err = autorest.Respond(
3099		resp,
3100		azure.WithErrorUnlessStatusCode(http.StatusOK),
3101		autorest.ByUnmarshallingJSON(&result),
3102		autorest.ByClosing())
3103	result.Response = autorest.Response{Response: resp}
3104	return
3105}
3106
3107// listWebWorkerMetricsNextResults retrieves the next set of results, if any.
3108func (client AppServiceEnvironmentsClient) listWebWorkerMetricsNextResults(ctx context.Context, lastResults ResourceMetricCollection) (result ResourceMetricCollection, err error) {
3109	req, err := lastResults.resourceMetricCollectionPreparer(ctx)
3110	if err != nil {
3111		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWebWorkerMetricsNextResults", nil, "Failure preparing next results request")
3112	}
3113	if req == nil {
3114		return
3115	}
3116	resp, err := client.ListWebWorkerMetricsSender(req)
3117	if err != nil {
3118		result.Response = autorest.Response{Response: resp}
3119		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWebWorkerMetricsNextResults", resp, "Failure sending next results request")
3120	}
3121	result, err = client.ListWebWorkerMetricsResponder(resp)
3122	if err != nil {
3123		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWebWorkerMetricsNextResults", resp, "Failure responding to next results request")
3124	}
3125	return
3126}
3127
3128// ListWebWorkerMetricsComplete enumerates all values, automatically crossing page boundaries as required.
3129func (client AppServiceEnvironmentsClient) ListWebWorkerMetricsComplete(ctx context.Context, resourceGroupName string, name string, workerPoolName string, details *bool, filter string) (result ResourceMetricCollectionIterator, err error) {
3130	if tracing.IsEnabled() {
3131		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWebWorkerMetrics")
3132		defer func() {
3133			sc := -1
3134			if result.Response().Response.Response != nil {
3135				sc = result.page.Response().Response.Response.StatusCode
3136			}
3137			tracing.EndSpan(ctx, sc, err)
3138		}()
3139	}
3140	result.page, err = client.ListWebWorkerMetrics(ctx, resourceGroupName, name, workerPoolName, details, filter)
3141	return
3142}
3143
3144// ListWebWorkerUsages get usage metrics for a worker pool of an App Service Environment.
3145// Parameters:
3146// resourceGroupName - name of the resource group to which the resource belongs.
3147// name - name of the App Service Environment.
3148// workerPoolName - name of the worker pool.
3149func (client AppServiceEnvironmentsClient) ListWebWorkerUsages(ctx context.Context, resourceGroupName string, name string, workerPoolName string) (result UsageCollectionPage, err error) {
3150	if tracing.IsEnabled() {
3151		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWebWorkerUsages")
3152		defer func() {
3153			sc := -1
3154			if result.uc.Response.Response != nil {
3155				sc = result.uc.Response.Response.StatusCode
3156			}
3157			tracing.EndSpan(ctx, sc, err)
3158		}()
3159	}
3160	if err := validation.Validate([]validation.Validation{
3161		{TargetValue: resourceGroupName,
3162			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
3163				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
3164				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
3165		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListWebWorkerUsages", err.Error())
3166	}
3167
3168	result.fn = client.listWebWorkerUsagesNextResults
3169	req, err := client.ListWebWorkerUsagesPreparer(ctx, resourceGroupName, name, workerPoolName)
3170	if err != nil {
3171		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWebWorkerUsages", nil, "Failure preparing request")
3172		return
3173	}
3174
3175	resp, err := client.ListWebWorkerUsagesSender(req)
3176	if err != nil {
3177		result.uc.Response = autorest.Response{Response: resp}
3178		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWebWorkerUsages", resp, "Failure sending request")
3179		return
3180	}
3181
3182	result.uc, err = client.ListWebWorkerUsagesResponder(resp)
3183	if err != nil {
3184		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWebWorkerUsages", resp, "Failure responding to request")
3185		return
3186	}
3187	if result.uc.hasNextLink() && result.uc.IsEmpty() {
3188		err = result.NextWithContext(ctx)
3189		return
3190	}
3191
3192	return
3193}
3194
3195// ListWebWorkerUsagesPreparer prepares the ListWebWorkerUsages request.
3196func (client AppServiceEnvironmentsClient) ListWebWorkerUsagesPreparer(ctx context.Context, resourceGroupName string, name string, workerPoolName string) (*http.Request, error) {
3197	pathParameters := map[string]interface{}{
3198		"name":              autorest.Encode("path", name),
3199		"resourceGroupName": autorest.Encode("path", resourceGroupName),
3200		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
3201		"workerPoolName":    autorest.Encode("path", workerPoolName),
3202	}
3203
3204	const APIVersion = "2016-09-01"
3205	queryParameters := map[string]interface{}{
3206		"api-version": APIVersion,
3207	}
3208
3209	preparer := autorest.CreatePreparer(
3210		autorest.AsGet(),
3211		autorest.WithBaseURL(client.BaseURI),
3212		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}/usages", pathParameters),
3213		autorest.WithQueryParameters(queryParameters))
3214	return preparer.Prepare((&http.Request{}).WithContext(ctx))
3215}
3216
3217// ListWebWorkerUsagesSender sends the ListWebWorkerUsages request. The method will close the
3218// http.Response Body if it receives an error.
3219func (client AppServiceEnvironmentsClient) ListWebWorkerUsagesSender(req *http.Request) (*http.Response, error) {
3220	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
3221}
3222
3223// ListWebWorkerUsagesResponder handles the response to the ListWebWorkerUsages request. The method always
3224// closes the http.Response Body.
3225func (client AppServiceEnvironmentsClient) ListWebWorkerUsagesResponder(resp *http.Response) (result UsageCollection, err error) {
3226	err = autorest.Respond(
3227		resp,
3228		azure.WithErrorUnlessStatusCode(http.StatusOK),
3229		autorest.ByUnmarshallingJSON(&result),
3230		autorest.ByClosing())
3231	result.Response = autorest.Response{Response: resp}
3232	return
3233}
3234
3235// listWebWorkerUsagesNextResults retrieves the next set of results, if any.
3236func (client AppServiceEnvironmentsClient) listWebWorkerUsagesNextResults(ctx context.Context, lastResults UsageCollection) (result UsageCollection, err error) {
3237	req, err := lastResults.usageCollectionPreparer(ctx)
3238	if err != nil {
3239		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWebWorkerUsagesNextResults", nil, "Failure preparing next results request")
3240	}
3241	if req == nil {
3242		return
3243	}
3244	resp, err := client.ListWebWorkerUsagesSender(req)
3245	if err != nil {
3246		result.Response = autorest.Response{Response: resp}
3247		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWebWorkerUsagesNextResults", resp, "Failure sending next results request")
3248	}
3249	result, err = client.ListWebWorkerUsagesResponder(resp)
3250	if err != nil {
3251		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWebWorkerUsagesNextResults", resp, "Failure responding to next results request")
3252	}
3253	return
3254}
3255
3256// ListWebWorkerUsagesComplete enumerates all values, automatically crossing page boundaries as required.
3257func (client AppServiceEnvironmentsClient) ListWebWorkerUsagesComplete(ctx context.Context, resourceGroupName string, name string, workerPoolName string) (result UsageCollectionIterator, err error) {
3258	if tracing.IsEnabled() {
3259		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWebWorkerUsages")
3260		defer func() {
3261			sc := -1
3262			if result.Response().Response.Response != nil {
3263				sc = result.page.Response().Response.Response.StatusCode
3264			}
3265			tracing.EndSpan(ctx, sc, err)
3266		}()
3267	}
3268	result.page, err = client.ListWebWorkerUsages(ctx, resourceGroupName, name, workerPoolName)
3269	return
3270}
3271
3272// ListWorkerPoolInstanceMetricDefinitions get metric definitions for a specific instance of a worker pool of an App
3273// Service Environment.
3274// Parameters:
3275// resourceGroupName - name of the resource group to which the resource belongs.
3276// name - name of the App Service Environment.
3277// workerPoolName - name of the worker pool.
3278// instance - name of the instance in the worker pool.
3279func (client AppServiceEnvironmentsClient) ListWorkerPoolInstanceMetricDefinitions(ctx context.Context, resourceGroupName string, name string, workerPoolName string, instance string) (result ResourceMetricDefinitionCollectionPage, err error) {
3280	if tracing.IsEnabled() {
3281		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWorkerPoolInstanceMetricDefinitions")
3282		defer func() {
3283			sc := -1
3284			if result.rmdc.Response.Response != nil {
3285				sc = result.rmdc.Response.Response.StatusCode
3286			}
3287			tracing.EndSpan(ctx, sc, err)
3288		}()
3289	}
3290	if err := validation.Validate([]validation.Validation{
3291		{TargetValue: resourceGroupName,
3292			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
3293				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
3294				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
3295		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListWorkerPoolInstanceMetricDefinitions", err.Error())
3296	}
3297
3298	result.fn = client.listWorkerPoolInstanceMetricDefinitionsNextResults
3299	req, err := client.ListWorkerPoolInstanceMetricDefinitionsPreparer(ctx, resourceGroupName, name, workerPoolName, instance)
3300	if err != nil {
3301		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWorkerPoolInstanceMetricDefinitions", nil, "Failure preparing request")
3302		return
3303	}
3304
3305	resp, err := client.ListWorkerPoolInstanceMetricDefinitionsSender(req)
3306	if err != nil {
3307		result.rmdc.Response = autorest.Response{Response: resp}
3308		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWorkerPoolInstanceMetricDefinitions", resp, "Failure sending request")
3309		return
3310	}
3311
3312	result.rmdc, err = client.ListWorkerPoolInstanceMetricDefinitionsResponder(resp)
3313	if err != nil {
3314		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWorkerPoolInstanceMetricDefinitions", resp, "Failure responding to request")
3315		return
3316	}
3317	if result.rmdc.hasNextLink() && result.rmdc.IsEmpty() {
3318		err = result.NextWithContext(ctx)
3319		return
3320	}
3321
3322	return
3323}
3324
3325// ListWorkerPoolInstanceMetricDefinitionsPreparer prepares the ListWorkerPoolInstanceMetricDefinitions request.
3326func (client AppServiceEnvironmentsClient) ListWorkerPoolInstanceMetricDefinitionsPreparer(ctx context.Context, resourceGroupName string, name string, workerPoolName string, instance string) (*http.Request, error) {
3327	pathParameters := map[string]interface{}{
3328		"instance":          autorest.Encode("path", instance),
3329		"name":              autorest.Encode("path", name),
3330		"resourceGroupName": autorest.Encode("path", resourceGroupName),
3331		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
3332		"workerPoolName":    autorest.Encode("path", workerPoolName),
3333	}
3334
3335	const APIVersion = "2016-09-01"
3336	queryParameters := map[string]interface{}{
3337		"api-version": APIVersion,
3338	}
3339
3340	preparer := autorest.CreatePreparer(
3341		autorest.AsGet(),
3342		autorest.WithBaseURL(client.BaseURI),
3343		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}/instances/{instance}/metricdefinitions", pathParameters),
3344		autorest.WithQueryParameters(queryParameters))
3345	return preparer.Prepare((&http.Request{}).WithContext(ctx))
3346}
3347
3348// ListWorkerPoolInstanceMetricDefinitionsSender sends the ListWorkerPoolInstanceMetricDefinitions request. The method will close the
3349// http.Response Body if it receives an error.
3350func (client AppServiceEnvironmentsClient) ListWorkerPoolInstanceMetricDefinitionsSender(req *http.Request) (*http.Response, error) {
3351	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
3352}
3353
3354// ListWorkerPoolInstanceMetricDefinitionsResponder handles the response to the ListWorkerPoolInstanceMetricDefinitions request. The method always
3355// closes the http.Response Body.
3356func (client AppServiceEnvironmentsClient) ListWorkerPoolInstanceMetricDefinitionsResponder(resp *http.Response) (result ResourceMetricDefinitionCollection, err error) {
3357	err = autorest.Respond(
3358		resp,
3359		azure.WithErrorUnlessStatusCode(http.StatusOK),
3360		autorest.ByUnmarshallingJSON(&result),
3361		autorest.ByClosing())
3362	result.Response = autorest.Response{Response: resp}
3363	return
3364}
3365
3366// listWorkerPoolInstanceMetricDefinitionsNextResults retrieves the next set of results, if any.
3367func (client AppServiceEnvironmentsClient) listWorkerPoolInstanceMetricDefinitionsNextResults(ctx context.Context, lastResults ResourceMetricDefinitionCollection) (result ResourceMetricDefinitionCollection, err error) {
3368	req, err := lastResults.resourceMetricDefinitionCollectionPreparer(ctx)
3369	if err != nil {
3370		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWorkerPoolInstanceMetricDefinitionsNextResults", nil, "Failure preparing next results request")
3371	}
3372	if req == nil {
3373		return
3374	}
3375	resp, err := client.ListWorkerPoolInstanceMetricDefinitionsSender(req)
3376	if err != nil {
3377		result.Response = autorest.Response{Response: resp}
3378		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWorkerPoolInstanceMetricDefinitionsNextResults", resp, "Failure sending next results request")
3379	}
3380	result, err = client.ListWorkerPoolInstanceMetricDefinitionsResponder(resp)
3381	if err != nil {
3382		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWorkerPoolInstanceMetricDefinitionsNextResults", resp, "Failure responding to next results request")
3383	}
3384	return
3385}
3386
3387// ListWorkerPoolInstanceMetricDefinitionsComplete enumerates all values, automatically crossing page boundaries as required.
3388func (client AppServiceEnvironmentsClient) ListWorkerPoolInstanceMetricDefinitionsComplete(ctx context.Context, resourceGroupName string, name string, workerPoolName string, instance string) (result ResourceMetricDefinitionCollectionIterator, err error) {
3389	if tracing.IsEnabled() {
3390		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWorkerPoolInstanceMetricDefinitions")
3391		defer func() {
3392			sc := -1
3393			if result.Response().Response.Response != nil {
3394				sc = result.page.Response().Response.Response.StatusCode
3395			}
3396			tracing.EndSpan(ctx, sc, err)
3397		}()
3398	}
3399	result.page, err = client.ListWorkerPoolInstanceMetricDefinitions(ctx, resourceGroupName, name, workerPoolName, instance)
3400	return
3401}
3402
3403// ListWorkerPoolInstanceMetrics get metrics for a specific instance of a worker pool of an App Service Environment.
3404// Parameters:
3405// resourceGroupName - name of the resource group to which the resource belongs.
3406// name - name of the App Service Environment.
3407// workerPoolName - name of the worker pool.
3408// instance - name of the instance in the worker pool.
3409// details - specify <code>true</code> to include instance details. The default is <code>false</code>.
3410// filter - return only usages/metrics specified in the filter. Filter conforms to odata syntax. Example:
3411// $filter=(name.value eq 'Metric1' or name.value eq 'Metric2') and startTime eq '2014-01-01T00:00:00Z' and
3412// endTime eq '2014-12-31T23:59:59Z' and timeGrain eq duration'[Hour|Minute|Day]'.
3413func (client AppServiceEnvironmentsClient) ListWorkerPoolInstanceMetrics(ctx context.Context, resourceGroupName string, name string, workerPoolName string, instance string, details *bool, filter string) (result ResourceMetricCollectionPage, err error) {
3414	if tracing.IsEnabled() {
3415		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWorkerPoolInstanceMetrics")
3416		defer func() {
3417			sc := -1
3418			if result.rmc.Response.Response != nil {
3419				sc = result.rmc.Response.Response.StatusCode
3420			}
3421			tracing.EndSpan(ctx, sc, err)
3422		}()
3423	}
3424	if err := validation.Validate([]validation.Validation{
3425		{TargetValue: resourceGroupName,
3426			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
3427				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
3428				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
3429		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListWorkerPoolInstanceMetrics", err.Error())
3430	}
3431
3432	result.fn = client.listWorkerPoolInstanceMetricsNextResults
3433	req, err := client.ListWorkerPoolInstanceMetricsPreparer(ctx, resourceGroupName, name, workerPoolName, instance, details, filter)
3434	if err != nil {
3435		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWorkerPoolInstanceMetrics", nil, "Failure preparing request")
3436		return
3437	}
3438
3439	resp, err := client.ListWorkerPoolInstanceMetricsSender(req)
3440	if err != nil {
3441		result.rmc.Response = autorest.Response{Response: resp}
3442		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWorkerPoolInstanceMetrics", resp, "Failure sending request")
3443		return
3444	}
3445
3446	result.rmc, err = client.ListWorkerPoolInstanceMetricsResponder(resp)
3447	if err != nil {
3448		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWorkerPoolInstanceMetrics", resp, "Failure responding to request")
3449		return
3450	}
3451	if result.rmc.hasNextLink() && result.rmc.IsEmpty() {
3452		err = result.NextWithContext(ctx)
3453		return
3454	}
3455
3456	return
3457}
3458
3459// ListWorkerPoolInstanceMetricsPreparer prepares the ListWorkerPoolInstanceMetrics request.
3460func (client AppServiceEnvironmentsClient) ListWorkerPoolInstanceMetricsPreparer(ctx context.Context, resourceGroupName string, name string, workerPoolName string, instance string, details *bool, filter string) (*http.Request, error) {
3461	pathParameters := map[string]interface{}{
3462		"instance":          autorest.Encode("path", instance),
3463		"name":              autorest.Encode("path", name),
3464		"resourceGroupName": autorest.Encode("path", resourceGroupName),
3465		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
3466		"workerPoolName":    autorest.Encode("path", workerPoolName),
3467	}
3468
3469	const APIVersion = "2016-09-01"
3470	queryParameters := map[string]interface{}{
3471		"api-version": APIVersion,
3472	}
3473	if details != nil {
3474		queryParameters["details"] = autorest.Encode("query", *details)
3475	}
3476	if len(filter) > 0 {
3477		queryParameters["$filter"] = filter
3478	}
3479
3480	preparer := autorest.CreatePreparer(
3481		autorest.AsGet(),
3482		autorest.WithBaseURL(client.BaseURI),
3483		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}/instances/{instance}/metrics", pathParameters),
3484		autorest.WithQueryParameters(queryParameters))
3485	return preparer.Prepare((&http.Request{}).WithContext(ctx))
3486}
3487
3488// ListWorkerPoolInstanceMetricsSender sends the ListWorkerPoolInstanceMetrics request. The method will close the
3489// http.Response Body if it receives an error.
3490func (client AppServiceEnvironmentsClient) ListWorkerPoolInstanceMetricsSender(req *http.Request) (*http.Response, error) {
3491	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
3492}
3493
3494// ListWorkerPoolInstanceMetricsResponder handles the response to the ListWorkerPoolInstanceMetrics request. The method always
3495// closes the http.Response Body.
3496func (client AppServiceEnvironmentsClient) ListWorkerPoolInstanceMetricsResponder(resp *http.Response) (result ResourceMetricCollection, err error) {
3497	err = autorest.Respond(
3498		resp,
3499		azure.WithErrorUnlessStatusCode(http.StatusOK),
3500		autorest.ByUnmarshallingJSON(&result),
3501		autorest.ByClosing())
3502	result.Response = autorest.Response{Response: resp}
3503	return
3504}
3505
3506// listWorkerPoolInstanceMetricsNextResults retrieves the next set of results, if any.
3507func (client AppServiceEnvironmentsClient) listWorkerPoolInstanceMetricsNextResults(ctx context.Context, lastResults ResourceMetricCollection) (result ResourceMetricCollection, err error) {
3508	req, err := lastResults.resourceMetricCollectionPreparer(ctx)
3509	if err != nil {
3510		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWorkerPoolInstanceMetricsNextResults", nil, "Failure preparing next results request")
3511	}
3512	if req == nil {
3513		return
3514	}
3515	resp, err := client.ListWorkerPoolInstanceMetricsSender(req)
3516	if err != nil {
3517		result.Response = autorest.Response{Response: resp}
3518		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWorkerPoolInstanceMetricsNextResults", resp, "Failure sending next results request")
3519	}
3520	result, err = client.ListWorkerPoolInstanceMetricsResponder(resp)
3521	if err != nil {
3522		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWorkerPoolInstanceMetricsNextResults", resp, "Failure responding to next results request")
3523	}
3524	return
3525}
3526
3527// ListWorkerPoolInstanceMetricsComplete enumerates all values, automatically crossing page boundaries as required.
3528func (client AppServiceEnvironmentsClient) ListWorkerPoolInstanceMetricsComplete(ctx context.Context, resourceGroupName string, name string, workerPoolName string, instance string, details *bool, filter string) (result ResourceMetricCollectionIterator, err error) {
3529	if tracing.IsEnabled() {
3530		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWorkerPoolInstanceMetrics")
3531		defer func() {
3532			sc := -1
3533			if result.Response().Response.Response != nil {
3534				sc = result.page.Response().Response.Response.StatusCode
3535			}
3536			tracing.EndSpan(ctx, sc, err)
3537		}()
3538	}
3539	result.page, err = client.ListWorkerPoolInstanceMetrics(ctx, resourceGroupName, name, workerPoolName, instance, details, filter)
3540	return
3541}
3542
3543// ListWorkerPools get all worker pools of an App Service Environment.
3544// Parameters:
3545// resourceGroupName - name of the resource group to which the resource belongs.
3546// name - name of the App Service Environment.
3547func (client AppServiceEnvironmentsClient) ListWorkerPools(ctx context.Context, resourceGroupName string, name string) (result WorkerPoolCollectionPage, err error) {
3548	if tracing.IsEnabled() {
3549		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWorkerPools")
3550		defer func() {
3551			sc := -1
3552			if result.wpc.Response.Response != nil {
3553				sc = result.wpc.Response.Response.StatusCode
3554			}
3555			tracing.EndSpan(ctx, sc, err)
3556		}()
3557	}
3558	if err := validation.Validate([]validation.Validation{
3559		{TargetValue: resourceGroupName,
3560			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
3561				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
3562				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
3563		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListWorkerPools", err.Error())
3564	}
3565
3566	result.fn = client.listWorkerPoolsNextResults
3567	req, err := client.ListWorkerPoolsPreparer(ctx, resourceGroupName, name)
3568	if err != nil {
3569		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWorkerPools", nil, "Failure preparing request")
3570		return
3571	}
3572
3573	resp, err := client.ListWorkerPoolsSender(req)
3574	if err != nil {
3575		result.wpc.Response = autorest.Response{Response: resp}
3576		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWorkerPools", resp, "Failure sending request")
3577		return
3578	}
3579
3580	result.wpc, err = client.ListWorkerPoolsResponder(resp)
3581	if err != nil {
3582		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWorkerPools", resp, "Failure responding to request")
3583		return
3584	}
3585	if result.wpc.hasNextLink() && result.wpc.IsEmpty() {
3586		err = result.NextWithContext(ctx)
3587		return
3588	}
3589
3590	return
3591}
3592
3593// ListWorkerPoolsPreparer prepares the ListWorkerPools request.
3594func (client AppServiceEnvironmentsClient) ListWorkerPoolsPreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
3595	pathParameters := map[string]interface{}{
3596		"name":              autorest.Encode("path", name),
3597		"resourceGroupName": autorest.Encode("path", resourceGroupName),
3598		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
3599	}
3600
3601	const APIVersion = "2016-09-01"
3602	queryParameters := map[string]interface{}{
3603		"api-version": APIVersion,
3604	}
3605
3606	preparer := autorest.CreatePreparer(
3607		autorest.AsGet(),
3608		autorest.WithBaseURL(client.BaseURI),
3609		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools", pathParameters),
3610		autorest.WithQueryParameters(queryParameters))
3611	return preparer.Prepare((&http.Request{}).WithContext(ctx))
3612}
3613
3614// ListWorkerPoolsSender sends the ListWorkerPools request. The method will close the
3615// http.Response Body if it receives an error.
3616func (client AppServiceEnvironmentsClient) ListWorkerPoolsSender(req *http.Request) (*http.Response, error) {
3617	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
3618}
3619
3620// ListWorkerPoolsResponder handles the response to the ListWorkerPools request. The method always
3621// closes the http.Response Body.
3622func (client AppServiceEnvironmentsClient) ListWorkerPoolsResponder(resp *http.Response) (result WorkerPoolCollection, err error) {
3623	err = autorest.Respond(
3624		resp,
3625		azure.WithErrorUnlessStatusCode(http.StatusOK),
3626		autorest.ByUnmarshallingJSON(&result),
3627		autorest.ByClosing())
3628	result.Response = autorest.Response{Response: resp}
3629	return
3630}
3631
3632// listWorkerPoolsNextResults retrieves the next set of results, if any.
3633func (client AppServiceEnvironmentsClient) listWorkerPoolsNextResults(ctx context.Context, lastResults WorkerPoolCollection) (result WorkerPoolCollection, err error) {
3634	req, err := lastResults.workerPoolCollectionPreparer(ctx)
3635	if err != nil {
3636		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWorkerPoolsNextResults", nil, "Failure preparing next results request")
3637	}
3638	if req == nil {
3639		return
3640	}
3641	resp, err := client.ListWorkerPoolsSender(req)
3642	if err != nil {
3643		result.Response = autorest.Response{Response: resp}
3644		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWorkerPoolsNextResults", resp, "Failure sending next results request")
3645	}
3646	result, err = client.ListWorkerPoolsResponder(resp)
3647	if err != nil {
3648		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWorkerPoolsNextResults", resp, "Failure responding to next results request")
3649	}
3650	return
3651}
3652
3653// ListWorkerPoolsComplete enumerates all values, automatically crossing page boundaries as required.
3654func (client AppServiceEnvironmentsClient) ListWorkerPoolsComplete(ctx context.Context, resourceGroupName string, name string) (result WorkerPoolCollectionIterator, err error) {
3655	if tracing.IsEnabled() {
3656		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWorkerPools")
3657		defer func() {
3658			sc := -1
3659			if result.Response().Response.Response != nil {
3660				sc = result.page.Response().Response.Response.StatusCode
3661			}
3662			tracing.EndSpan(ctx, sc, err)
3663		}()
3664	}
3665	result.page, err = client.ListWorkerPools(ctx, resourceGroupName, name)
3666	return
3667}
3668
3669// ListWorkerPoolSkus get available SKUs for scaling a worker pool.
3670// Parameters:
3671// resourceGroupName - name of the resource group to which the resource belongs.
3672// name - name of the App Service Environment.
3673// workerPoolName - name of the worker pool.
3674func (client AppServiceEnvironmentsClient) ListWorkerPoolSkus(ctx context.Context, resourceGroupName string, name string, workerPoolName string) (result SkuInfoCollectionPage, err error) {
3675	if tracing.IsEnabled() {
3676		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWorkerPoolSkus")
3677		defer func() {
3678			sc := -1
3679			if result.sic.Response.Response != nil {
3680				sc = result.sic.Response.Response.StatusCode
3681			}
3682			tracing.EndSpan(ctx, sc, err)
3683		}()
3684	}
3685	if err := validation.Validate([]validation.Validation{
3686		{TargetValue: resourceGroupName,
3687			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
3688				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
3689				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
3690		return result, validation.NewError("web.AppServiceEnvironmentsClient", "ListWorkerPoolSkus", err.Error())
3691	}
3692
3693	result.fn = client.listWorkerPoolSkusNextResults
3694	req, err := client.ListWorkerPoolSkusPreparer(ctx, resourceGroupName, name, workerPoolName)
3695	if err != nil {
3696		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWorkerPoolSkus", nil, "Failure preparing request")
3697		return
3698	}
3699
3700	resp, err := client.ListWorkerPoolSkusSender(req)
3701	if err != nil {
3702		result.sic.Response = autorest.Response{Response: resp}
3703		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWorkerPoolSkus", resp, "Failure sending request")
3704		return
3705	}
3706
3707	result.sic, err = client.ListWorkerPoolSkusResponder(resp)
3708	if err != nil {
3709		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "ListWorkerPoolSkus", resp, "Failure responding to request")
3710		return
3711	}
3712	if result.sic.hasNextLink() && result.sic.IsEmpty() {
3713		err = result.NextWithContext(ctx)
3714		return
3715	}
3716
3717	return
3718}
3719
3720// ListWorkerPoolSkusPreparer prepares the ListWorkerPoolSkus request.
3721func (client AppServiceEnvironmentsClient) ListWorkerPoolSkusPreparer(ctx context.Context, resourceGroupName string, name string, workerPoolName string) (*http.Request, error) {
3722	pathParameters := map[string]interface{}{
3723		"name":              autorest.Encode("path", name),
3724		"resourceGroupName": autorest.Encode("path", resourceGroupName),
3725		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
3726		"workerPoolName":    autorest.Encode("path", workerPoolName),
3727	}
3728
3729	const APIVersion = "2016-09-01"
3730	queryParameters := map[string]interface{}{
3731		"api-version": APIVersion,
3732	}
3733
3734	preparer := autorest.CreatePreparer(
3735		autorest.AsGet(),
3736		autorest.WithBaseURL(client.BaseURI),
3737		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}/skus", pathParameters),
3738		autorest.WithQueryParameters(queryParameters))
3739	return preparer.Prepare((&http.Request{}).WithContext(ctx))
3740}
3741
3742// ListWorkerPoolSkusSender sends the ListWorkerPoolSkus request. The method will close the
3743// http.Response Body if it receives an error.
3744func (client AppServiceEnvironmentsClient) ListWorkerPoolSkusSender(req *http.Request) (*http.Response, error) {
3745	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
3746}
3747
3748// ListWorkerPoolSkusResponder handles the response to the ListWorkerPoolSkus request. The method always
3749// closes the http.Response Body.
3750func (client AppServiceEnvironmentsClient) ListWorkerPoolSkusResponder(resp *http.Response) (result SkuInfoCollection, err error) {
3751	err = autorest.Respond(
3752		resp,
3753		azure.WithErrorUnlessStatusCode(http.StatusOK),
3754		autorest.ByUnmarshallingJSON(&result),
3755		autorest.ByClosing())
3756	result.Response = autorest.Response{Response: resp}
3757	return
3758}
3759
3760// listWorkerPoolSkusNextResults retrieves the next set of results, if any.
3761func (client AppServiceEnvironmentsClient) listWorkerPoolSkusNextResults(ctx context.Context, lastResults SkuInfoCollection) (result SkuInfoCollection, err error) {
3762	req, err := lastResults.skuInfoCollectionPreparer(ctx)
3763	if err != nil {
3764		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWorkerPoolSkusNextResults", nil, "Failure preparing next results request")
3765	}
3766	if req == nil {
3767		return
3768	}
3769	resp, err := client.ListWorkerPoolSkusSender(req)
3770	if err != nil {
3771		result.Response = autorest.Response{Response: resp}
3772		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWorkerPoolSkusNextResults", resp, "Failure sending next results request")
3773	}
3774	result, err = client.ListWorkerPoolSkusResponder(resp)
3775	if err != nil {
3776		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "listWorkerPoolSkusNextResults", resp, "Failure responding to next results request")
3777	}
3778	return
3779}
3780
3781// ListWorkerPoolSkusComplete enumerates all values, automatically crossing page boundaries as required.
3782func (client AppServiceEnvironmentsClient) ListWorkerPoolSkusComplete(ctx context.Context, resourceGroupName string, name string, workerPoolName string) (result SkuInfoCollectionIterator, err error) {
3783	if tracing.IsEnabled() {
3784		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.ListWorkerPoolSkus")
3785		defer func() {
3786			sc := -1
3787			if result.Response().Response.Response != nil {
3788				sc = result.page.Response().Response.Response.StatusCode
3789			}
3790			tracing.EndSpan(ctx, sc, err)
3791		}()
3792	}
3793	result.page, err = client.ListWorkerPoolSkus(ctx, resourceGroupName, name, workerPoolName)
3794	return
3795}
3796
3797// Reboot reboot all machines in an App Service Environment.
3798// Parameters:
3799// resourceGroupName - name of the resource group to which the resource belongs.
3800// name - name of the App Service Environment.
3801func (client AppServiceEnvironmentsClient) Reboot(ctx context.Context, resourceGroupName string, name string) (result autorest.Response, err error) {
3802	if tracing.IsEnabled() {
3803		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.Reboot")
3804		defer func() {
3805			sc := -1
3806			if result.Response != nil {
3807				sc = result.Response.StatusCode
3808			}
3809			tracing.EndSpan(ctx, sc, err)
3810		}()
3811	}
3812	if err := validation.Validate([]validation.Validation{
3813		{TargetValue: resourceGroupName,
3814			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
3815				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
3816				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
3817		return result, validation.NewError("web.AppServiceEnvironmentsClient", "Reboot", err.Error())
3818	}
3819
3820	req, err := client.RebootPreparer(ctx, resourceGroupName, name)
3821	if err != nil {
3822		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "Reboot", nil, "Failure preparing request")
3823		return
3824	}
3825
3826	resp, err := client.RebootSender(req)
3827	if err != nil {
3828		result.Response = resp
3829		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "Reboot", resp, "Failure sending request")
3830		return
3831	}
3832
3833	result, err = client.RebootResponder(resp)
3834	if err != nil {
3835		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "Reboot", resp, "Failure responding to request")
3836		return
3837	}
3838
3839	return
3840}
3841
3842// RebootPreparer prepares the Reboot request.
3843func (client AppServiceEnvironmentsClient) RebootPreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
3844	pathParameters := map[string]interface{}{
3845		"name":              autorest.Encode("path", name),
3846		"resourceGroupName": autorest.Encode("path", resourceGroupName),
3847		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
3848	}
3849
3850	const APIVersion = "2016-09-01"
3851	queryParameters := map[string]interface{}{
3852		"api-version": APIVersion,
3853	}
3854
3855	preparer := autorest.CreatePreparer(
3856		autorest.AsPost(),
3857		autorest.WithBaseURL(client.BaseURI),
3858		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/reboot", pathParameters),
3859		autorest.WithQueryParameters(queryParameters))
3860	return preparer.Prepare((&http.Request{}).WithContext(ctx))
3861}
3862
3863// RebootSender sends the Reboot request. The method will close the
3864// http.Response Body if it receives an error.
3865func (client AppServiceEnvironmentsClient) RebootSender(req *http.Request) (*http.Response, error) {
3866	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
3867}
3868
3869// RebootResponder handles the response to the Reboot request. The method always
3870// closes the http.Response Body.
3871func (client AppServiceEnvironmentsClient) RebootResponder(resp *http.Response) (result autorest.Response, err error) {
3872	err = autorest.Respond(
3873		resp,
3874		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusBadRequest, http.StatusNotFound, http.StatusConflict),
3875		autorest.ByClosing())
3876	result.Response = resp
3877	return
3878}
3879
3880// Resume resume an App Service Environment.
3881// Parameters:
3882// resourceGroupName - name of the resource group to which the resource belongs.
3883// name - name of the App Service Environment.
3884func (client AppServiceEnvironmentsClient) Resume(ctx context.Context, resourceGroupName string, name string) (result AppServiceEnvironmentsResumeFuture, err error) {
3885	if tracing.IsEnabled() {
3886		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.Resume")
3887		defer func() {
3888			sc := -1
3889			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
3890				sc = result.FutureAPI.Response().StatusCode
3891			}
3892			tracing.EndSpan(ctx, sc, err)
3893		}()
3894	}
3895	if err := validation.Validate([]validation.Validation{
3896		{TargetValue: resourceGroupName,
3897			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
3898				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
3899				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
3900		return result, validation.NewError("web.AppServiceEnvironmentsClient", "Resume", err.Error())
3901	}
3902
3903	req, err := client.ResumePreparer(ctx, resourceGroupName, name)
3904	if err != nil {
3905		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "Resume", nil, "Failure preparing request")
3906		return
3907	}
3908
3909	result, err = client.ResumeSender(req)
3910	if err != nil {
3911		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "Resume", nil, "Failure sending request")
3912		return
3913	}
3914
3915	return
3916}
3917
3918// ResumePreparer prepares the Resume request.
3919func (client AppServiceEnvironmentsClient) ResumePreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
3920	pathParameters := map[string]interface{}{
3921		"name":              autorest.Encode("path", name),
3922		"resourceGroupName": autorest.Encode("path", resourceGroupName),
3923		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
3924	}
3925
3926	const APIVersion = "2016-09-01"
3927	queryParameters := map[string]interface{}{
3928		"api-version": APIVersion,
3929	}
3930
3931	preparer := autorest.CreatePreparer(
3932		autorest.AsPost(),
3933		autorest.WithBaseURL(client.BaseURI),
3934		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/resume", pathParameters),
3935		autorest.WithQueryParameters(queryParameters))
3936	return preparer.Prepare((&http.Request{}).WithContext(ctx))
3937}
3938
3939// ResumeSender sends the Resume request. The method will close the
3940// http.Response Body if it receives an error.
3941func (client AppServiceEnvironmentsClient) ResumeSender(req *http.Request) (future AppServiceEnvironmentsResumeFuture, err error) {
3942	var resp *http.Response
3943	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
3944	if err != nil {
3945		return
3946	}
3947	var azf azure.Future
3948	azf, err = azure.NewFutureFromResponse(resp)
3949	future.FutureAPI = &azf
3950	future.Result = future.result
3951	return
3952}
3953
3954// ResumeResponder handles the response to the Resume request. The method always
3955// closes the http.Response Body.
3956func (client AppServiceEnvironmentsClient) ResumeResponder(resp *http.Response) (result AppCollectionPage, err error) {
3957	result.ac, err = client.resumeResponder(resp)
3958	result.fn = client.resumeNextResults
3959	return
3960}
3961
3962func (client AppServiceEnvironmentsClient) resumeResponder(resp *http.Response) (result AppCollection, err error) {
3963	err = autorest.Respond(
3964		resp,
3965		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
3966		autorest.ByUnmarshallingJSON(&result),
3967		autorest.ByClosing())
3968	result.Response = autorest.Response{Response: resp}
3969	return
3970}
3971
3972// resumeNextResults retrieves the next set of results, if any.
3973func (client AppServiceEnvironmentsClient) resumeNextResults(ctx context.Context, lastResults AppCollection) (result AppCollection, err error) {
3974	req, err := lastResults.appCollectionPreparer(ctx)
3975	if err != nil {
3976		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "resumeNextResults", nil, "Failure preparing next results request")
3977	}
3978	if req == nil {
3979		return
3980	}
3981	var resp *http.Response
3982	resp, err = client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3983	if err != nil {
3984		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "resumeNextResults", resp, "Failure sending next results request")
3985	}
3986	return client.resumeResponder(resp)
3987}
3988
3989// ResumeComplete enumerates all values, automatically crossing page boundaries as required.
3990func (client AppServiceEnvironmentsClient) ResumeComplete(ctx context.Context, resourceGroupName string, name string) (result AppServiceEnvironmentsResumeAllFuture, err error) {
3991	if tracing.IsEnabled() {
3992		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.Resume")
3993		defer func() {
3994			sc := -1
3995			if result.Response() != nil {
3996				sc = result.Response().StatusCode
3997			}
3998			tracing.EndSpan(ctx, sc, err)
3999		}()
4000	}
4001	var future AppServiceEnvironmentsResumeFuture
4002	future, err = client.Resume(ctx, resourceGroupName, name)
4003	result.FutureAPI = future.FutureAPI
4004	return
4005}
4006
4007// Suspend suspend an App Service Environment.
4008// Parameters:
4009// resourceGroupName - name of the resource group to which the resource belongs.
4010// name - name of the App Service Environment.
4011func (client AppServiceEnvironmentsClient) Suspend(ctx context.Context, resourceGroupName string, name string) (result AppServiceEnvironmentsSuspendFuture, err error) {
4012	if tracing.IsEnabled() {
4013		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.Suspend")
4014		defer func() {
4015			sc := -1
4016			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
4017				sc = result.FutureAPI.Response().StatusCode
4018			}
4019			tracing.EndSpan(ctx, sc, err)
4020		}()
4021	}
4022	if err := validation.Validate([]validation.Validation{
4023		{TargetValue: resourceGroupName,
4024			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
4025				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
4026				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
4027		return result, validation.NewError("web.AppServiceEnvironmentsClient", "Suspend", err.Error())
4028	}
4029
4030	req, err := client.SuspendPreparer(ctx, resourceGroupName, name)
4031	if err != nil {
4032		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "Suspend", nil, "Failure preparing request")
4033		return
4034	}
4035
4036	result, err = client.SuspendSender(req)
4037	if err != nil {
4038		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "Suspend", nil, "Failure sending request")
4039		return
4040	}
4041
4042	return
4043}
4044
4045// SuspendPreparer prepares the Suspend request.
4046func (client AppServiceEnvironmentsClient) SuspendPreparer(ctx context.Context, resourceGroupName string, name string) (*http.Request, error) {
4047	pathParameters := map[string]interface{}{
4048		"name":              autorest.Encode("path", name),
4049		"resourceGroupName": autorest.Encode("path", resourceGroupName),
4050		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
4051	}
4052
4053	const APIVersion = "2016-09-01"
4054	queryParameters := map[string]interface{}{
4055		"api-version": APIVersion,
4056	}
4057
4058	preparer := autorest.CreatePreparer(
4059		autorest.AsPost(),
4060		autorest.WithBaseURL(client.BaseURI),
4061		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/suspend", pathParameters),
4062		autorest.WithQueryParameters(queryParameters))
4063	return preparer.Prepare((&http.Request{}).WithContext(ctx))
4064}
4065
4066// SuspendSender sends the Suspend request. The method will close the
4067// http.Response Body if it receives an error.
4068func (client AppServiceEnvironmentsClient) SuspendSender(req *http.Request) (future AppServiceEnvironmentsSuspendFuture, err error) {
4069	var resp *http.Response
4070	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
4071	if err != nil {
4072		return
4073	}
4074	var azf azure.Future
4075	azf, err = azure.NewFutureFromResponse(resp)
4076	future.FutureAPI = &azf
4077	future.Result = future.result
4078	return
4079}
4080
4081// SuspendResponder handles the response to the Suspend request. The method always
4082// closes the http.Response Body.
4083func (client AppServiceEnvironmentsClient) SuspendResponder(resp *http.Response) (result AppCollectionPage, err error) {
4084	result.ac, err = client.suspendResponder(resp)
4085	result.fn = client.suspendNextResults
4086	return
4087}
4088
4089func (client AppServiceEnvironmentsClient) suspendResponder(resp *http.Response) (result AppCollection, err error) {
4090	err = autorest.Respond(
4091		resp,
4092		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
4093		autorest.ByUnmarshallingJSON(&result),
4094		autorest.ByClosing())
4095	result.Response = autorest.Response{Response: resp}
4096	return
4097}
4098
4099// suspendNextResults retrieves the next set of results, if any.
4100func (client AppServiceEnvironmentsClient) suspendNextResults(ctx context.Context, lastResults AppCollection) (result AppCollection, err error) {
4101	req, err := lastResults.appCollectionPreparer(ctx)
4102	if err != nil {
4103		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "suspendNextResults", nil, "Failure preparing next results request")
4104	}
4105	if req == nil {
4106		return
4107	}
4108	var resp *http.Response
4109	resp, err = client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4110	if err != nil {
4111		return result, autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "suspendNextResults", resp, "Failure sending next results request")
4112	}
4113	return client.suspendResponder(resp)
4114}
4115
4116// SuspendComplete enumerates all values, automatically crossing page boundaries as required.
4117func (client AppServiceEnvironmentsClient) SuspendComplete(ctx context.Context, resourceGroupName string, name string) (result AppServiceEnvironmentsSuspendAllFuture, err error) {
4118	if tracing.IsEnabled() {
4119		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.Suspend")
4120		defer func() {
4121			sc := -1
4122			if result.Response() != nil {
4123				sc = result.Response().StatusCode
4124			}
4125			tracing.EndSpan(ctx, sc, err)
4126		}()
4127	}
4128	var future AppServiceEnvironmentsSuspendFuture
4129	future, err = client.Suspend(ctx, resourceGroupName, name)
4130	result.FutureAPI = future.FutureAPI
4131	return
4132}
4133
4134// Update create or update an App Service Environment.
4135// Parameters:
4136// resourceGroupName - name of the resource group to which the resource belongs.
4137// name - name of the App Service Environment.
4138// hostingEnvironmentEnvelope - configuration details of the App Service Environment.
4139func (client AppServiceEnvironmentsClient) Update(ctx context.Context, resourceGroupName string, name string, hostingEnvironmentEnvelope AppServiceEnvironmentPatchResource) (result AppServiceEnvironmentResource, err error) {
4140	if tracing.IsEnabled() {
4141		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.Update")
4142		defer func() {
4143			sc := -1
4144			if result.Response.Response != nil {
4145				sc = result.Response.Response.StatusCode
4146			}
4147			tracing.EndSpan(ctx, sc, err)
4148		}()
4149	}
4150	if err := validation.Validate([]validation.Validation{
4151		{TargetValue: resourceGroupName,
4152			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
4153				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
4154				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
4155		return result, validation.NewError("web.AppServiceEnvironmentsClient", "Update", err.Error())
4156	}
4157
4158	req, err := client.UpdatePreparer(ctx, resourceGroupName, name, hostingEnvironmentEnvelope)
4159	if err != nil {
4160		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "Update", nil, "Failure preparing request")
4161		return
4162	}
4163
4164	resp, err := client.UpdateSender(req)
4165	if err != nil {
4166		result.Response = autorest.Response{Response: resp}
4167		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "Update", resp, "Failure sending request")
4168		return
4169	}
4170
4171	result, err = client.UpdateResponder(resp)
4172	if err != nil {
4173		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "Update", resp, "Failure responding to request")
4174		return
4175	}
4176
4177	return
4178}
4179
4180// UpdatePreparer prepares the Update request.
4181func (client AppServiceEnvironmentsClient) UpdatePreparer(ctx context.Context, resourceGroupName string, name string, hostingEnvironmentEnvelope AppServiceEnvironmentPatchResource) (*http.Request, error) {
4182	pathParameters := map[string]interface{}{
4183		"name":              autorest.Encode("path", name),
4184		"resourceGroupName": autorest.Encode("path", resourceGroupName),
4185		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
4186	}
4187
4188	const APIVersion = "2016-09-01"
4189	queryParameters := map[string]interface{}{
4190		"api-version": APIVersion,
4191	}
4192
4193	preparer := autorest.CreatePreparer(
4194		autorest.AsContentType("application/json; charset=utf-8"),
4195		autorest.AsPatch(),
4196		autorest.WithBaseURL(client.BaseURI),
4197		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}", pathParameters),
4198		autorest.WithJSON(hostingEnvironmentEnvelope),
4199		autorest.WithQueryParameters(queryParameters))
4200	return preparer.Prepare((&http.Request{}).WithContext(ctx))
4201}
4202
4203// UpdateSender sends the Update request. The method will close the
4204// http.Response Body if it receives an error.
4205func (client AppServiceEnvironmentsClient) UpdateSender(req *http.Request) (*http.Response, error) {
4206	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
4207}
4208
4209// UpdateResponder handles the response to the Update request. The method always
4210// closes the http.Response Body.
4211func (client AppServiceEnvironmentsClient) UpdateResponder(resp *http.Response) (result AppServiceEnvironmentResource, err error) {
4212	err = autorest.Respond(
4213		resp,
4214		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusBadRequest, http.StatusNotFound, http.StatusConflict),
4215		autorest.ByUnmarshallingJSON(&result),
4216		autorest.ByClosing())
4217	result.Response = autorest.Response{Response: resp}
4218	return
4219}
4220
4221// UpdateMultiRolePool create or update a multi-role pool.
4222// Parameters:
4223// resourceGroupName - name of the resource group to which the resource belongs.
4224// name - name of the App Service Environment.
4225// multiRolePoolEnvelope - properties of the multi-role pool.
4226func (client AppServiceEnvironmentsClient) UpdateMultiRolePool(ctx context.Context, resourceGroupName string, name string, multiRolePoolEnvelope WorkerPoolResource) (result WorkerPoolResource, err error) {
4227	if tracing.IsEnabled() {
4228		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.UpdateMultiRolePool")
4229		defer func() {
4230			sc := -1
4231			if result.Response.Response != nil {
4232				sc = result.Response.Response.StatusCode
4233			}
4234			tracing.EndSpan(ctx, sc, err)
4235		}()
4236	}
4237	if err := validation.Validate([]validation.Validation{
4238		{TargetValue: resourceGroupName,
4239			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
4240				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
4241				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
4242		return result, validation.NewError("web.AppServiceEnvironmentsClient", "UpdateMultiRolePool", err.Error())
4243	}
4244
4245	req, err := client.UpdateMultiRolePoolPreparer(ctx, resourceGroupName, name, multiRolePoolEnvelope)
4246	if err != nil {
4247		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "UpdateMultiRolePool", nil, "Failure preparing request")
4248		return
4249	}
4250
4251	resp, err := client.UpdateMultiRolePoolSender(req)
4252	if err != nil {
4253		result.Response = autorest.Response{Response: resp}
4254		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "UpdateMultiRolePool", resp, "Failure sending request")
4255		return
4256	}
4257
4258	result, err = client.UpdateMultiRolePoolResponder(resp)
4259	if err != nil {
4260		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "UpdateMultiRolePool", resp, "Failure responding to request")
4261		return
4262	}
4263
4264	return
4265}
4266
4267// UpdateMultiRolePoolPreparer prepares the UpdateMultiRolePool request.
4268func (client AppServiceEnvironmentsClient) UpdateMultiRolePoolPreparer(ctx context.Context, resourceGroupName string, name string, multiRolePoolEnvelope WorkerPoolResource) (*http.Request, error) {
4269	pathParameters := map[string]interface{}{
4270		"name":              autorest.Encode("path", name),
4271		"resourceGroupName": autorest.Encode("path", resourceGroupName),
4272		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
4273	}
4274
4275	const APIVersion = "2016-09-01"
4276	queryParameters := map[string]interface{}{
4277		"api-version": APIVersion,
4278	}
4279
4280	preparer := autorest.CreatePreparer(
4281		autorest.AsContentType("application/json; charset=utf-8"),
4282		autorest.AsPatch(),
4283		autorest.WithBaseURL(client.BaseURI),
4284		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default", pathParameters),
4285		autorest.WithJSON(multiRolePoolEnvelope),
4286		autorest.WithQueryParameters(queryParameters))
4287	return preparer.Prepare((&http.Request{}).WithContext(ctx))
4288}
4289
4290// UpdateMultiRolePoolSender sends the UpdateMultiRolePool request. The method will close the
4291// http.Response Body if it receives an error.
4292func (client AppServiceEnvironmentsClient) UpdateMultiRolePoolSender(req *http.Request) (*http.Response, error) {
4293	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
4294}
4295
4296// UpdateMultiRolePoolResponder handles the response to the UpdateMultiRolePool request. The method always
4297// closes the http.Response Body.
4298func (client AppServiceEnvironmentsClient) UpdateMultiRolePoolResponder(resp *http.Response) (result WorkerPoolResource, err error) {
4299	err = autorest.Respond(
4300		resp,
4301		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusBadRequest, http.StatusNotFound, http.StatusConflict),
4302		autorest.ByUnmarshallingJSON(&result),
4303		autorest.ByClosing())
4304	result.Response = autorest.Response{Response: resp}
4305	return
4306}
4307
4308// UpdateWorkerPool create or update a worker pool.
4309// Parameters:
4310// resourceGroupName - name of the resource group to which the resource belongs.
4311// name - name of the App Service Environment.
4312// workerPoolName - name of the worker pool.
4313// workerPoolEnvelope - properties of the worker pool.
4314func (client AppServiceEnvironmentsClient) UpdateWorkerPool(ctx context.Context, resourceGroupName string, name string, workerPoolName string, workerPoolEnvelope WorkerPoolResource) (result WorkerPoolResource, err error) {
4315	if tracing.IsEnabled() {
4316		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentsClient.UpdateWorkerPool")
4317		defer func() {
4318			sc := -1
4319			if result.Response.Response != nil {
4320				sc = result.Response.Response.StatusCode
4321			}
4322			tracing.EndSpan(ctx, sc, err)
4323		}()
4324	}
4325	if err := validation.Validate([]validation.Validation{
4326		{TargetValue: resourceGroupName,
4327			Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
4328				{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
4329				{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+[^\.]$`, Chain: nil}}}}); err != nil {
4330		return result, validation.NewError("web.AppServiceEnvironmentsClient", "UpdateWorkerPool", err.Error())
4331	}
4332
4333	req, err := client.UpdateWorkerPoolPreparer(ctx, resourceGroupName, name, workerPoolName, workerPoolEnvelope)
4334	if err != nil {
4335		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "UpdateWorkerPool", nil, "Failure preparing request")
4336		return
4337	}
4338
4339	resp, err := client.UpdateWorkerPoolSender(req)
4340	if err != nil {
4341		result.Response = autorest.Response{Response: resp}
4342		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "UpdateWorkerPool", resp, "Failure sending request")
4343		return
4344	}
4345
4346	result, err = client.UpdateWorkerPoolResponder(resp)
4347	if err != nil {
4348		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsClient", "UpdateWorkerPool", resp, "Failure responding to request")
4349		return
4350	}
4351
4352	return
4353}
4354
4355// UpdateWorkerPoolPreparer prepares the UpdateWorkerPool request.
4356func (client AppServiceEnvironmentsClient) UpdateWorkerPoolPreparer(ctx context.Context, resourceGroupName string, name string, workerPoolName string, workerPoolEnvelope WorkerPoolResource) (*http.Request, error) {
4357	pathParameters := map[string]interface{}{
4358		"name":              autorest.Encode("path", name),
4359		"resourceGroupName": autorest.Encode("path", resourceGroupName),
4360		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
4361		"workerPoolName":    autorest.Encode("path", workerPoolName),
4362	}
4363
4364	const APIVersion = "2016-09-01"
4365	queryParameters := map[string]interface{}{
4366		"api-version": APIVersion,
4367	}
4368
4369	preparer := autorest.CreatePreparer(
4370		autorest.AsContentType("application/json; charset=utf-8"),
4371		autorest.AsPatch(),
4372		autorest.WithBaseURL(client.BaseURI),
4373		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}", pathParameters),
4374		autorest.WithJSON(workerPoolEnvelope),
4375		autorest.WithQueryParameters(queryParameters))
4376	return preparer.Prepare((&http.Request{}).WithContext(ctx))
4377}
4378
4379// UpdateWorkerPoolSender sends the UpdateWorkerPool request. The method will close the
4380// http.Response Body if it receives an error.
4381func (client AppServiceEnvironmentsClient) UpdateWorkerPoolSender(req *http.Request) (*http.Response, error) {
4382	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
4383}
4384
4385// UpdateWorkerPoolResponder handles the response to the UpdateWorkerPool request. The method always
4386// closes the http.Response Body.
4387func (client AppServiceEnvironmentsClient) UpdateWorkerPoolResponder(resp *http.Response) (result WorkerPoolResource, err error) {
4388	err = autorest.Respond(
4389		resp,
4390		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusBadRequest, http.StatusNotFound, http.StatusConflict),
4391		autorest.ByUnmarshallingJSON(&result),
4392		autorest.ByClosing())
4393	result.Response = autorest.Response{Response: resp}
4394	return
4395}
4396