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