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