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// InterfaceTapConfigurationsClient is the network Client
19type InterfaceTapConfigurationsClient struct {
20	BaseClient
21}
22
23// NewInterfaceTapConfigurationsClient creates an instance of the InterfaceTapConfigurationsClient client.
24func NewInterfaceTapConfigurationsClient(subscriptionID string) InterfaceTapConfigurationsClient {
25	return NewInterfaceTapConfigurationsClientWithBaseURI(DefaultBaseURI, subscriptionID)
26}
27
28// NewInterfaceTapConfigurationsClientWithBaseURI creates an instance of the InterfaceTapConfigurationsClient client
29// using a custom endpoint.  Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign
30// clouds, Azure stack).
31func NewInterfaceTapConfigurationsClientWithBaseURI(baseURI string, subscriptionID string) InterfaceTapConfigurationsClient {
32	return InterfaceTapConfigurationsClient{NewWithBaseURI(baseURI, subscriptionID)}
33}
34
35// CreateOrUpdate creates or updates a Tap configuration in the specified NetworkInterface.
36// Parameters:
37// resourceGroupName - the name of the resource group.
38// networkInterfaceName - the name of the network interface.
39// tapConfigurationName - the name of the tap configuration.
40// tapConfigurationParameters - parameters supplied to the create or update tap configuration operation.
41func (client InterfaceTapConfigurationsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, networkInterfaceName string, tapConfigurationName string, tapConfigurationParameters InterfaceTapConfiguration) (result InterfaceTapConfigurationsCreateOrUpdateFuture, err error) {
42	if tracing.IsEnabled() {
43		ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceTapConfigurationsClient.CreateOrUpdate")
44		defer func() {
45			sc := -1
46			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
47				sc = result.FutureAPI.Response().StatusCode
48			}
49			tracing.EndSpan(ctx, sc, err)
50		}()
51	}
52	if err := validation.Validate([]validation.Validation{
53		{TargetValue: tapConfigurationParameters,
54			Constraints: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat", Name: validation.Null, Rule: false,
55				Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap", Name: validation.Null, Rule: false,
56					Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat", Name: validation.Null, Rule: false,
57						Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration", Name: validation.Null, Rule: false,
58							Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat", Name: validation.Null, Rule: false,
59								Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false,
60									Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat", Name: validation.Null, Rule: false,
61										Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration", Name: validation.Null, Rule: false,
62											Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat", Name: validation.Null, Rule: false,
63												Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false, Chain: nil}}},
64											}},
65										}},
66									}},
67								}},
68							}},
69							{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration", Name: validation.Null, Rule: false,
70								Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat", Name: validation.Null, Rule: false,
71									Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false,
72										Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat", Name: validation.Null, Rule: false,
73											Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration", Name: validation.Null, Rule: false,
74												Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat", Name: validation.Null, Rule: false,
75													Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false, Chain: nil}}},
76												}},
77											}},
78										}},
79									}},
80								}},
81						}},
82					}},
83				}}}}}); err != nil {
84		return result, validation.NewError("network.InterfaceTapConfigurationsClient", "CreateOrUpdate", err.Error())
85	}
86
87	req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, networkInterfaceName, tapConfigurationName, tapConfigurationParameters)
88	if err != nil {
89		err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "CreateOrUpdate", nil, "Failure preparing request")
90		return
91	}
92
93	result, err = client.CreateOrUpdateSender(req)
94	if err != nil {
95		err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "CreateOrUpdate", nil, "Failure sending request")
96		return
97	}
98
99	return
100}
101
102// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
103func (client InterfaceTapConfigurationsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string, tapConfigurationName string, tapConfigurationParameters InterfaceTapConfiguration) (*http.Request, error) {
104	pathParameters := map[string]interface{}{
105		"networkInterfaceName": autorest.Encode("path", networkInterfaceName),
106		"resourceGroupName":    autorest.Encode("path", resourceGroupName),
107		"subscriptionId":       autorest.Encode("path", client.SubscriptionID),
108		"tapConfigurationName": autorest.Encode("path", tapConfigurationName),
109	}
110
111	const APIVersion = "2018-08-01"
112	queryParameters := map[string]interface{}{
113		"api-version": APIVersion,
114	}
115
116	tapConfigurationParameters.Type = nil
117	preparer := autorest.CreatePreparer(
118		autorest.AsContentType("application/json; charset=utf-8"),
119		autorest.AsPut(),
120		autorest.WithBaseURL(client.BaseURI),
121		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}", pathParameters),
122		autorest.WithJSON(tapConfigurationParameters),
123		autorest.WithQueryParameters(queryParameters))
124	return preparer.Prepare((&http.Request{}).WithContext(ctx))
125}
126
127// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
128// http.Response Body if it receives an error.
129func (client InterfaceTapConfigurationsClient) CreateOrUpdateSender(req *http.Request) (future InterfaceTapConfigurationsCreateOrUpdateFuture, err error) {
130	var resp *http.Response
131	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
132	if err != nil {
133		return
134	}
135	var azf azure.Future
136	azf, err = azure.NewFutureFromResponse(resp)
137	future.FutureAPI = &azf
138	future.Result = future.result
139	return
140}
141
142// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
143// closes the http.Response Body.
144func (client InterfaceTapConfigurationsClient) CreateOrUpdateResponder(resp *http.Response) (result InterfaceTapConfiguration, err error) {
145	err = autorest.Respond(
146		resp,
147		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
148		autorest.ByUnmarshallingJSON(&result),
149		autorest.ByClosing())
150	result.Response = autorest.Response{Response: resp}
151	return
152}
153
154// Delete deletes the specified tap configuration from the NetworkInterface.
155// Parameters:
156// resourceGroupName - the name of the resource group.
157// networkInterfaceName - the name of the network interface.
158// tapConfigurationName - the name of the tap configuration.
159func (client InterfaceTapConfigurationsClient) Delete(ctx context.Context, resourceGroupName string, networkInterfaceName string, tapConfigurationName string) (result InterfaceTapConfigurationsDeleteFuture, err error) {
160	if tracing.IsEnabled() {
161		ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceTapConfigurationsClient.Delete")
162		defer func() {
163			sc := -1
164			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
165				sc = result.FutureAPI.Response().StatusCode
166			}
167			tracing.EndSpan(ctx, sc, err)
168		}()
169	}
170	req, err := client.DeletePreparer(ctx, resourceGroupName, networkInterfaceName, tapConfigurationName)
171	if err != nil {
172		err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "Delete", nil, "Failure preparing request")
173		return
174	}
175
176	result, err = client.DeleteSender(req)
177	if err != nil {
178		err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "Delete", nil, "Failure sending request")
179		return
180	}
181
182	return
183}
184
185// DeletePreparer prepares the Delete request.
186func (client InterfaceTapConfigurationsClient) DeletePreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string, tapConfigurationName string) (*http.Request, error) {
187	pathParameters := map[string]interface{}{
188		"networkInterfaceName": autorest.Encode("path", networkInterfaceName),
189		"resourceGroupName":    autorest.Encode("path", resourceGroupName),
190		"subscriptionId":       autorest.Encode("path", client.SubscriptionID),
191		"tapConfigurationName": autorest.Encode("path", tapConfigurationName),
192	}
193
194	const APIVersion = "2018-08-01"
195	queryParameters := map[string]interface{}{
196		"api-version": APIVersion,
197	}
198
199	preparer := autorest.CreatePreparer(
200		autorest.AsDelete(),
201		autorest.WithBaseURL(client.BaseURI),
202		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}", pathParameters),
203		autorest.WithQueryParameters(queryParameters))
204	return preparer.Prepare((&http.Request{}).WithContext(ctx))
205}
206
207// DeleteSender sends the Delete request. The method will close the
208// http.Response Body if it receives an error.
209func (client InterfaceTapConfigurationsClient) DeleteSender(req *http.Request) (future InterfaceTapConfigurationsDeleteFuture, err error) {
210	var resp *http.Response
211	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
212	if err != nil {
213		return
214	}
215	var azf azure.Future
216	azf, err = azure.NewFutureFromResponse(resp)
217	future.FutureAPI = &azf
218	future.Result = future.result
219	return
220}
221
222// DeleteResponder handles the response to the Delete request. The method always
223// closes the http.Response Body.
224func (client InterfaceTapConfigurationsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
225	err = autorest.Respond(
226		resp,
227		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
228		autorest.ByClosing())
229	result.Response = resp
230	return
231}
232
233// Get get the specified tap configuration on a network interface.
234// Parameters:
235// resourceGroupName - the name of the resource group.
236// networkInterfaceName - the name of the network interface.
237// tapConfigurationName - the name of the tap configuration.
238func (client InterfaceTapConfigurationsClient) Get(ctx context.Context, resourceGroupName string, networkInterfaceName string, tapConfigurationName string) (result InterfaceTapConfiguration, err error) {
239	if tracing.IsEnabled() {
240		ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceTapConfigurationsClient.Get")
241		defer func() {
242			sc := -1
243			if result.Response.Response != nil {
244				sc = result.Response.Response.StatusCode
245			}
246			tracing.EndSpan(ctx, sc, err)
247		}()
248	}
249	req, err := client.GetPreparer(ctx, resourceGroupName, networkInterfaceName, tapConfigurationName)
250	if err != nil {
251		err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "Get", nil, "Failure preparing request")
252		return
253	}
254
255	resp, err := client.GetSender(req)
256	if err != nil {
257		result.Response = autorest.Response{Response: resp}
258		err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "Get", resp, "Failure sending request")
259		return
260	}
261
262	result, err = client.GetResponder(resp)
263	if err != nil {
264		err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "Get", resp, "Failure responding to request")
265		return
266	}
267
268	return
269}
270
271// GetPreparer prepares the Get request.
272func (client InterfaceTapConfigurationsClient) GetPreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string, tapConfigurationName string) (*http.Request, error) {
273	pathParameters := map[string]interface{}{
274		"networkInterfaceName": autorest.Encode("path", networkInterfaceName),
275		"resourceGroupName":    autorest.Encode("path", resourceGroupName),
276		"subscriptionId":       autorest.Encode("path", client.SubscriptionID),
277		"tapConfigurationName": autorest.Encode("path", tapConfigurationName),
278	}
279
280	const APIVersion = "2018-08-01"
281	queryParameters := map[string]interface{}{
282		"api-version": APIVersion,
283	}
284
285	preparer := autorest.CreatePreparer(
286		autorest.AsGet(),
287		autorest.WithBaseURL(client.BaseURI),
288		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}", pathParameters),
289		autorest.WithQueryParameters(queryParameters))
290	return preparer.Prepare((&http.Request{}).WithContext(ctx))
291}
292
293// GetSender sends the Get request. The method will close the
294// http.Response Body if it receives an error.
295func (client InterfaceTapConfigurationsClient) GetSender(req *http.Request) (*http.Response, error) {
296	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
297}
298
299// GetResponder handles the response to the Get request. The method always
300// closes the http.Response Body.
301func (client InterfaceTapConfigurationsClient) GetResponder(resp *http.Response) (result InterfaceTapConfiguration, err error) {
302	err = autorest.Respond(
303		resp,
304		azure.WithErrorUnlessStatusCode(http.StatusOK),
305		autorest.ByUnmarshallingJSON(&result),
306		autorest.ByClosing())
307	result.Response = autorest.Response{Response: resp}
308	return
309}
310
311// List get all Tap configurations in a network interface
312// Parameters:
313// resourceGroupName - the name of the resource group.
314// networkInterfaceName - the name of the network interface.
315func (client InterfaceTapConfigurationsClient) List(ctx context.Context, resourceGroupName string, networkInterfaceName string) (result InterfaceTapConfigurationListResultPage, err error) {
316	if tracing.IsEnabled() {
317		ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceTapConfigurationsClient.List")
318		defer func() {
319			sc := -1
320			if result.itclr.Response.Response != nil {
321				sc = result.itclr.Response.Response.StatusCode
322			}
323			tracing.EndSpan(ctx, sc, err)
324		}()
325	}
326	result.fn = client.listNextResults
327	req, err := client.ListPreparer(ctx, resourceGroupName, networkInterfaceName)
328	if err != nil {
329		err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "List", nil, "Failure preparing request")
330		return
331	}
332
333	resp, err := client.ListSender(req)
334	if err != nil {
335		result.itclr.Response = autorest.Response{Response: resp}
336		err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "List", resp, "Failure sending request")
337		return
338	}
339
340	result.itclr, err = client.ListResponder(resp)
341	if err != nil {
342		err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "List", resp, "Failure responding to request")
343		return
344	}
345	if result.itclr.hasNextLink() && result.itclr.IsEmpty() {
346		err = result.NextWithContext(ctx)
347		return
348	}
349
350	return
351}
352
353// ListPreparer prepares the List request.
354func (client InterfaceTapConfigurationsClient) ListPreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string) (*http.Request, error) {
355	pathParameters := map[string]interface{}{
356		"networkInterfaceName": autorest.Encode("path", networkInterfaceName),
357		"resourceGroupName":    autorest.Encode("path", resourceGroupName),
358		"subscriptionId":       autorest.Encode("path", client.SubscriptionID),
359	}
360
361	const APIVersion = "2018-08-01"
362	queryParameters := map[string]interface{}{
363		"api-version": APIVersion,
364	}
365
366	preparer := autorest.CreatePreparer(
367		autorest.AsGet(),
368		autorest.WithBaseURL(client.BaseURI),
369		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations", pathParameters),
370		autorest.WithQueryParameters(queryParameters))
371	return preparer.Prepare((&http.Request{}).WithContext(ctx))
372}
373
374// ListSender sends the List request. The method will close the
375// http.Response Body if it receives an error.
376func (client InterfaceTapConfigurationsClient) ListSender(req *http.Request) (*http.Response, error) {
377	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
378}
379
380// ListResponder handles the response to the List request. The method always
381// closes the http.Response Body.
382func (client InterfaceTapConfigurationsClient) ListResponder(resp *http.Response) (result InterfaceTapConfigurationListResult, err error) {
383	err = autorest.Respond(
384		resp,
385		azure.WithErrorUnlessStatusCode(http.StatusOK),
386		autorest.ByUnmarshallingJSON(&result),
387		autorest.ByClosing())
388	result.Response = autorest.Response{Response: resp}
389	return
390}
391
392// listNextResults retrieves the next set of results, if any.
393func (client InterfaceTapConfigurationsClient) listNextResults(ctx context.Context, lastResults InterfaceTapConfigurationListResult) (result InterfaceTapConfigurationListResult, err error) {
394	req, err := lastResults.interfaceTapConfigurationListResultPreparer(ctx)
395	if err != nil {
396		return result, autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "listNextResults", nil, "Failure preparing next results request")
397	}
398	if req == nil {
399		return
400	}
401	resp, err := client.ListSender(req)
402	if err != nil {
403		result.Response = autorest.Response{Response: resp}
404		return result, autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "listNextResults", resp, "Failure sending next results request")
405	}
406	result, err = client.ListResponder(resp)
407	if err != nil {
408		err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "listNextResults", resp, "Failure responding to next results request")
409	}
410	return
411}
412
413// ListComplete enumerates all values, automatically crossing page boundaries as required.
414func (client InterfaceTapConfigurationsClient) ListComplete(ctx context.Context, resourceGroupName string, networkInterfaceName string) (result InterfaceTapConfigurationListResultIterator, err error) {
415	if tracing.IsEnabled() {
416		ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceTapConfigurationsClient.List")
417		defer func() {
418			sc := -1
419			if result.Response().Response.Response != nil {
420				sc = result.page.Response().Response.Response.StatusCode
421			}
422			tracing.EndSpan(ctx, sc, err)
423		}()
424	}
425	result.page, err = client.List(ctx, resourceGroupName, networkInterfaceName)
426	return
427}
428