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