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