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/tracing"
14	"net/http"
15)
16
17// InterfacesClient is the network Client
18type InterfacesClient struct {
19	BaseClient
20}
21
22// NewInterfacesClient creates an instance of the InterfacesClient client.
23func NewInterfacesClient(subscriptionID string) InterfacesClient {
24	return NewInterfacesClientWithBaseURI(DefaultBaseURI, subscriptionID)
25}
26
27// NewInterfacesClientWithBaseURI creates an instance of the InterfacesClient client using a custom endpoint.  Use this
28// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
29func NewInterfacesClientWithBaseURI(baseURI string, subscriptionID string) InterfacesClient {
30	return InterfacesClient{NewWithBaseURI(baseURI, subscriptionID)}
31}
32
33// CreateOrUpdate creates or updates a network interface.
34// Parameters:
35// resourceGroupName - the name of the resource group.
36// networkInterfaceName - the name of the network interface.
37// parameters - parameters supplied to the create or update network interface operation.
38func (client InterfacesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, networkInterfaceName string, parameters Interface) (result InterfacesCreateOrUpdateFuture, err error) {
39	if tracing.IsEnabled() {
40		ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.CreateOrUpdate")
41		defer func() {
42			sc := -1
43			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
44				sc = result.FutureAPI.Response().StatusCode
45			}
46			tracing.EndSpan(ctx, sc, err)
47		}()
48	}
49	req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, networkInterfaceName, parameters)
50	if err != nil {
51		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "CreateOrUpdate", nil, "Failure preparing request")
52		return
53	}
54
55	result, err = client.CreateOrUpdateSender(req)
56	if err != nil {
57		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "CreateOrUpdate", nil, "Failure sending request")
58		return
59	}
60
61	return
62}
63
64// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
65func (client InterfacesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string, parameters Interface) (*http.Request, error) {
66	pathParameters := map[string]interface{}{
67		"networkInterfaceName": autorest.Encode("path", networkInterfaceName),
68		"resourceGroupName":    autorest.Encode("path", resourceGroupName),
69		"subscriptionId":       autorest.Encode("path", client.SubscriptionID),
70	}
71
72	const APIVersion = "2015-06-15"
73	queryParameters := map[string]interface{}{
74		"api-version": APIVersion,
75	}
76
77	preparer := autorest.CreatePreparer(
78		autorest.AsContentType("application/json; charset=utf-8"),
79		autorest.AsPut(),
80		autorest.WithBaseURL(client.BaseURI),
81		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}", pathParameters),
82		autorest.WithJSON(parameters),
83		autorest.WithQueryParameters(queryParameters))
84	return preparer.Prepare((&http.Request{}).WithContext(ctx))
85}
86
87// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
88// http.Response Body if it receives an error.
89func (client InterfacesClient) CreateOrUpdateSender(req *http.Request) (future InterfacesCreateOrUpdateFuture, err error) {
90	var resp *http.Response
91	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
92	if err != nil {
93		return
94	}
95	var azf azure.Future
96	azf, err = azure.NewFutureFromResponse(resp)
97	future.FutureAPI = &azf
98	future.Result = future.result
99	return
100}
101
102// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
103// closes the http.Response Body.
104func (client InterfacesClient) CreateOrUpdateResponder(resp *http.Response) (result Interface, err error) {
105	err = autorest.Respond(
106		resp,
107		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
108		autorest.ByUnmarshallingJSON(&result),
109		autorest.ByClosing())
110	result.Response = autorest.Response{Response: resp}
111	return
112}
113
114// Delete deletes the specified network interface.
115// Parameters:
116// resourceGroupName - the name of the resource group.
117// networkInterfaceName - the name of the network interface.
118func (client InterfacesClient) Delete(ctx context.Context, resourceGroupName string, networkInterfaceName string) (result InterfacesDeleteFuture, err error) {
119	if tracing.IsEnabled() {
120		ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.Delete")
121		defer func() {
122			sc := -1
123			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
124				sc = result.FutureAPI.Response().StatusCode
125			}
126			tracing.EndSpan(ctx, sc, err)
127		}()
128	}
129	req, err := client.DeletePreparer(ctx, resourceGroupName, networkInterfaceName)
130	if err != nil {
131		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Delete", nil, "Failure preparing request")
132		return
133	}
134
135	result, err = client.DeleteSender(req)
136	if err != nil {
137		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Delete", nil, "Failure sending request")
138		return
139	}
140
141	return
142}
143
144// DeletePreparer prepares the Delete request.
145func (client InterfacesClient) DeletePreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string) (*http.Request, error) {
146	pathParameters := map[string]interface{}{
147		"networkInterfaceName": autorest.Encode("path", networkInterfaceName),
148		"resourceGroupName":    autorest.Encode("path", resourceGroupName),
149		"subscriptionId":       autorest.Encode("path", client.SubscriptionID),
150	}
151
152	const APIVersion = "2015-06-15"
153	queryParameters := map[string]interface{}{
154		"api-version": APIVersion,
155	}
156
157	preparer := autorest.CreatePreparer(
158		autorest.AsDelete(),
159		autorest.WithBaseURL(client.BaseURI),
160		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}", pathParameters),
161		autorest.WithQueryParameters(queryParameters))
162	return preparer.Prepare((&http.Request{}).WithContext(ctx))
163}
164
165// DeleteSender sends the Delete request. The method will close the
166// http.Response Body if it receives an error.
167func (client InterfacesClient) DeleteSender(req *http.Request) (future InterfacesDeleteFuture, err error) {
168	var resp *http.Response
169	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
170	if err != nil {
171		return
172	}
173	var azf azure.Future
174	azf, err = azure.NewFutureFromResponse(resp)
175	future.FutureAPI = &azf
176	future.Result = future.result
177	return
178}
179
180// DeleteResponder handles the response to the Delete request. The method always
181// closes the http.Response Body.
182func (client InterfacesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
183	err = autorest.Respond(
184		resp,
185		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
186		autorest.ByClosing())
187	result.Response = resp
188	return
189}
190
191// Get gets information about the specified network interface.
192// Parameters:
193// resourceGroupName - the name of the resource group.
194// networkInterfaceName - the name of the network interface.
195// expand - expands referenced resources.
196func (client InterfacesClient) Get(ctx context.Context, resourceGroupName string, networkInterfaceName string, expand string) (result Interface, err error) {
197	if tracing.IsEnabled() {
198		ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.Get")
199		defer func() {
200			sc := -1
201			if result.Response.Response != nil {
202				sc = result.Response.Response.StatusCode
203			}
204			tracing.EndSpan(ctx, sc, err)
205		}()
206	}
207	req, err := client.GetPreparer(ctx, resourceGroupName, networkInterfaceName, expand)
208	if err != nil {
209		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Get", nil, "Failure preparing request")
210		return
211	}
212
213	resp, err := client.GetSender(req)
214	if err != nil {
215		result.Response = autorest.Response{Response: resp}
216		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Get", resp, "Failure sending request")
217		return
218	}
219
220	result, err = client.GetResponder(resp)
221	if err != nil {
222		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Get", resp, "Failure responding to request")
223		return
224	}
225
226	return
227}
228
229// GetPreparer prepares the Get request.
230func (client InterfacesClient) GetPreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string, expand string) (*http.Request, error) {
231	pathParameters := map[string]interface{}{
232		"networkInterfaceName": autorest.Encode("path", networkInterfaceName),
233		"resourceGroupName":    autorest.Encode("path", resourceGroupName),
234		"subscriptionId":       autorest.Encode("path", client.SubscriptionID),
235	}
236
237	const APIVersion = "2015-06-15"
238	queryParameters := map[string]interface{}{
239		"api-version": APIVersion,
240	}
241	if len(expand) > 0 {
242		queryParameters["$expand"] = autorest.Encode("query", expand)
243	}
244
245	preparer := autorest.CreatePreparer(
246		autorest.AsGet(),
247		autorest.WithBaseURL(client.BaseURI),
248		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}", pathParameters),
249		autorest.WithQueryParameters(queryParameters))
250	return preparer.Prepare((&http.Request{}).WithContext(ctx))
251}
252
253// GetSender sends the Get request. The method will close the
254// http.Response Body if it receives an error.
255func (client InterfacesClient) GetSender(req *http.Request) (*http.Response, error) {
256	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
257}
258
259// GetResponder handles the response to the Get request. The method always
260// closes the http.Response Body.
261func (client InterfacesClient) GetResponder(resp *http.Response) (result Interface, err error) {
262	err = autorest.Respond(
263		resp,
264		azure.WithErrorUnlessStatusCode(http.StatusOK),
265		autorest.ByUnmarshallingJSON(&result),
266		autorest.ByClosing())
267	result.Response = autorest.Response{Response: resp}
268	return
269}
270
271// GetVirtualMachineScaleSetNetworkInterface get the specified network interface in a virtual machine scale set.
272// Parameters:
273// resourceGroupName - the name of the resource group.
274// virtualMachineScaleSetName - the name of the virtual machine scale set.
275// virtualmachineIndex - the virtual machine index.
276// networkInterfaceName - the name of the network interface.
277// expand - expands referenced resources.
278func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterface(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, expand string) (result Interface, err error) {
279	if tracing.IsEnabled() {
280		ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.GetVirtualMachineScaleSetNetworkInterface")
281		defer func() {
282			sc := -1
283			if result.Response.Response != nil {
284				sc = result.Response.Response.StatusCode
285			}
286			tracing.EndSpan(ctx, sc, err)
287		}()
288	}
289	req, err := client.GetVirtualMachineScaleSetNetworkInterfacePreparer(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, expand)
290	if err != nil {
291		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "GetVirtualMachineScaleSetNetworkInterface", nil, "Failure preparing request")
292		return
293	}
294
295	resp, err := client.GetVirtualMachineScaleSetNetworkInterfaceSender(req)
296	if err != nil {
297		result.Response = autorest.Response{Response: resp}
298		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "GetVirtualMachineScaleSetNetworkInterface", resp, "Failure sending request")
299		return
300	}
301
302	result, err = client.GetVirtualMachineScaleSetNetworkInterfaceResponder(resp)
303	if err != nil {
304		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "GetVirtualMachineScaleSetNetworkInterface", resp, "Failure responding to request")
305		return
306	}
307
308	return
309}
310
311// GetVirtualMachineScaleSetNetworkInterfacePreparer prepares the GetVirtualMachineScaleSetNetworkInterface request.
312func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterfacePreparer(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, expand string) (*http.Request, error) {
313	pathParameters := map[string]interface{}{
314		"networkInterfaceName":       autorest.Encode("path", networkInterfaceName),
315		"resourceGroupName":          autorest.Encode("path", resourceGroupName),
316		"subscriptionId":             autorest.Encode("path", client.SubscriptionID),
317		"virtualmachineIndex":        autorest.Encode("path", virtualmachineIndex),
318		"virtualMachineScaleSetName": autorest.Encode("path", virtualMachineScaleSetName),
319	}
320
321	const APIVersion = "2015-06-15"
322	queryParameters := map[string]interface{}{
323		"api-version": APIVersion,
324	}
325	if len(expand) > 0 {
326		queryParameters["$expand"] = autorest.Encode("query", expand)
327	}
328
329	preparer := autorest.CreatePreparer(
330		autorest.AsGet(),
331		autorest.WithBaseURL(client.BaseURI),
332		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}", pathParameters),
333		autorest.WithQueryParameters(queryParameters))
334	return preparer.Prepare((&http.Request{}).WithContext(ctx))
335}
336
337// GetVirtualMachineScaleSetNetworkInterfaceSender sends the GetVirtualMachineScaleSetNetworkInterface request. The method will close the
338// http.Response Body if it receives an error.
339func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterfaceSender(req *http.Request) (*http.Response, error) {
340	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
341}
342
343// GetVirtualMachineScaleSetNetworkInterfaceResponder handles the response to the GetVirtualMachineScaleSetNetworkInterface request. The method always
344// closes the http.Response Body.
345func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterfaceResponder(resp *http.Response) (result Interface, 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 gets all network interfaces in a resource group.
356// Parameters:
357// resourceGroupName - the name of the resource group.
358func (client InterfacesClient) List(ctx context.Context, resourceGroupName string) (result InterfaceListResultPage, err error) {
359	if tracing.IsEnabled() {
360		ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.List")
361		defer func() {
362			sc := -1
363			if result.ilr.Response.Response != nil {
364				sc = result.ilr.Response.Response.StatusCode
365			}
366			tracing.EndSpan(ctx, sc, err)
367		}()
368	}
369	result.fn = client.listNextResults
370	req, err := client.ListPreparer(ctx, resourceGroupName)
371	if err != nil {
372		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "List", nil, "Failure preparing request")
373		return
374	}
375
376	resp, err := client.ListSender(req)
377	if err != nil {
378		result.ilr.Response = autorest.Response{Response: resp}
379		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "List", resp, "Failure sending request")
380		return
381	}
382
383	result.ilr, err = client.ListResponder(resp)
384	if err != nil {
385		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "List", resp, "Failure responding to request")
386		return
387	}
388	if result.ilr.hasNextLink() && result.ilr.IsEmpty() {
389		err = result.NextWithContext(ctx)
390		return
391	}
392
393	return
394}
395
396// ListPreparer prepares the List request.
397func (client InterfacesClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
398	pathParameters := map[string]interface{}{
399		"resourceGroupName": autorest.Encode("path", resourceGroupName),
400		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
401	}
402
403	const APIVersion = "2015-06-15"
404	queryParameters := map[string]interface{}{
405		"api-version": APIVersion,
406	}
407
408	preparer := autorest.CreatePreparer(
409		autorest.AsGet(),
410		autorest.WithBaseURL(client.BaseURI),
411		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces", pathParameters),
412		autorest.WithQueryParameters(queryParameters))
413	return preparer.Prepare((&http.Request{}).WithContext(ctx))
414}
415
416// ListSender sends the List request. The method will close the
417// http.Response Body if it receives an error.
418func (client InterfacesClient) ListSender(req *http.Request) (*http.Response, error) {
419	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
420}
421
422// ListResponder handles the response to the List request. The method always
423// closes the http.Response Body.
424func (client InterfacesClient) ListResponder(resp *http.Response) (result InterfaceListResult, err error) {
425	err = autorest.Respond(
426		resp,
427		azure.WithErrorUnlessStatusCode(http.StatusOK),
428		autorest.ByUnmarshallingJSON(&result),
429		autorest.ByClosing())
430	result.Response = autorest.Response{Response: resp}
431	return
432}
433
434// listNextResults retrieves the next set of results, if any.
435func (client InterfacesClient) listNextResults(ctx context.Context, lastResults InterfaceListResult) (result InterfaceListResult, err error) {
436	req, err := lastResults.interfaceListResultPreparer(ctx)
437	if err != nil {
438		return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listNextResults", nil, "Failure preparing next results request")
439	}
440	if req == nil {
441		return
442	}
443	resp, err := client.ListSender(req)
444	if err != nil {
445		result.Response = autorest.Response{Response: resp}
446		return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listNextResults", resp, "Failure sending next results request")
447	}
448	result, err = client.ListResponder(resp)
449	if err != nil {
450		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "listNextResults", resp, "Failure responding to next results request")
451	}
452	return
453}
454
455// ListComplete enumerates all values, automatically crossing page boundaries as required.
456func (client InterfacesClient) ListComplete(ctx context.Context, resourceGroupName string) (result InterfaceListResultIterator, err error) {
457	if tracing.IsEnabled() {
458		ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.List")
459		defer func() {
460			sc := -1
461			if result.Response().Response.Response != nil {
462				sc = result.page.Response().Response.Response.StatusCode
463			}
464			tracing.EndSpan(ctx, sc, err)
465		}()
466	}
467	result.page, err = client.List(ctx, resourceGroupName)
468	return
469}
470
471// ListAll gets all network interfaces in a subscription.
472func (client InterfacesClient) ListAll(ctx context.Context) (result InterfaceListResultPage, err error) {
473	if tracing.IsEnabled() {
474		ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.ListAll")
475		defer func() {
476			sc := -1
477			if result.ilr.Response.Response != nil {
478				sc = result.ilr.Response.Response.StatusCode
479			}
480			tracing.EndSpan(ctx, sc, err)
481		}()
482	}
483	result.fn = client.listAllNextResults
484	req, err := client.ListAllPreparer(ctx)
485	if err != nil {
486		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListAll", nil, "Failure preparing request")
487		return
488	}
489
490	resp, err := client.ListAllSender(req)
491	if err != nil {
492		result.ilr.Response = autorest.Response{Response: resp}
493		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListAll", resp, "Failure sending request")
494		return
495	}
496
497	result.ilr, err = client.ListAllResponder(resp)
498	if err != nil {
499		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListAll", resp, "Failure responding to request")
500		return
501	}
502	if result.ilr.hasNextLink() && result.ilr.IsEmpty() {
503		err = result.NextWithContext(ctx)
504		return
505	}
506
507	return
508}
509
510// ListAllPreparer prepares the ListAll request.
511func (client InterfacesClient) ListAllPreparer(ctx context.Context) (*http.Request, error) {
512	pathParameters := map[string]interface{}{
513		"subscriptionId": autorest.Encode("path", client.SubscriptionID),
514	}
515
516	const APIVersion = "2015-06-15"
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}/providers/Microsoft.Network/networkInterfaces", pathParameters),
525		autorest.WithQueryParameters(queryParameters))
526	return preparer.Prepare((&http.Request{}).WithContext(ctx))
527}
528
529// ListAllSender sends the ListAll request. The method will close the
530// http.Response Body if it receives an error.
531func (client InterfacesClient) ListAllSender(req *http.Request) (*http.Response, error) {
532	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
533}
534
535// ListAllResponder handles the response to the ListAll request. The method always
536// closes the http.Response Body.
537func (client InterfacesClient) ListAllResponder(resp *http.Response) (result InterfaceListResult, 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// listAllNextResults retrieves the next set of results, if any.
548func (client InterfacesClient) listAllNextResults(ctx context.Context, lastResults InterfaceListResult) (result InterfaceListResult, err error) {
549	req, err := lastResults.interfaceListResultPreparer(ctx)
550	if err != nil {
551		return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listAllNextResults", nil, "Failure preparing next results request")
552	}
553	if req == nil {
554		return
555	}
556	resp, err := client.ListAllSender(req)
557	if err != nil {
558		result.Response = autorest.Response{Response: resp}
559		return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listAllNextResults", resp, "Failure sending next results request")
560	}
561	result, err = client.ListAllResponder(resp)
562	if err != nil {
563		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "listAllNextResults", resp, "Failure responding to next results request")
564	}
565	return
566}
567
568// ListAllComplete enumerates all values, automatically crossing page boundaries as required.
569func (client InterfacesClient) ListAllComplete(ctx context.Context) (result InterfaceListResultIterator, err error) {
570	if tracing.IsEnabled() {
571		ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.ListAll")
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.ListAll(ctx)
581	return
582}
583
584// ListVirtualMachineScaleSetNetworkInterfaces gets all network interfaces in a virtual machine scale set.
585// Parameters:
586// resourceGroupName - the name of the resource group.
587// virtualMachineScaleSetName - the name of the virtual machine scale set.
588func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfaces(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string) (result InterfaceListResultPage, err error) {
589	if tracing.IsEnabled() {
590		ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.ListVirtualMachineScaleSetNetworkInterfaces")
591		defer func() {
592			sc := -1
593			if result.ilr.Response.Response != nil {
594				sc = result.ilr.Response.Response.StatusCode
595			}
596			tracing.EndSpan(ctx, sc, err)
597		}()
598	}
599	result.fn = client.listVirtualMachineScaleSetNetworkInterfacesNextResults
600	req, err := client.ListVirtualMachineScaleSetNetworkInterfacesPreparer(ctx, resourceGroupName, virtualMachineScaleSetName)
601	if err != nil {
602		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetNetworkInterfaces", nil, "Failure preparing request")
603		return
604	}
605
606	resp, err := client.ListVirtualMachineScaleSetNetworkInterfacesSender(req)
607	if err != nil {
608		result.ilr.Response = autorest.Response{Response: resp}
609		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetNetworkInterfaces", resp, "Failure sending request")
610		return
611	}
612
613	result.ilr, err = client.ListVirtualMachineScaleSetNetworkInterfacesResponder(resp)
614	if err != nil {
615		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetNetworkInterfaces", resp, "Failure responding to request")
616		return
617	}
618	if result.ilr.hasNextLink() && result.ilr.IsEmpty() {
619		err = result.NextWithContext(ctx)
620		return
621	}
622
623	return
624}
625
626// ListVirtualMachineScaleSetNetworkInterfacesPreparer prepares the ListVirtualMachineScaleSetNetworkInterfaces request.
627func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesPreparer(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string) (*http.Request, error) {
628	pathParameters := map[string]interface{}{
629		"resourceGroupName":          autorest.Encode("path", resourceGroupName),
630		"subscriptionId":             autorest.Encode("path", client.SubscriptionID),
631		"virtualMachineScaleSetName": autorest.Encode("path", virtualMachineScaleSetName),
632	}
633
634	const APIVersion = "2015-06-15"
635	queryParameters := map[string]interface{}{
636		"api-version": APIVersion,
637	}
638
639	preparer := autorest.CreatePreparer(
640		autorest.AsGet(),
641		autorest.WithBaseURL(client.BaseURI),
642		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/networkInterfaces", pathParameters),
643		autorest.WithQueryParameters(queryParameters))
644	return preparer.Prepare((&http.Request{}).WithContext(ctx))
645}
646
647// ListVirtualMachineScaleSetNetworkInterfacesSender sends the ListVirtualMachineScaleSetNetworkInterfaces request. The method will close the
648// http.Response Body if it receives an error.
649func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesSender(req *http.Request) (*http.Response, error) {
650	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
651}
652
653// ListVirtualMachineScaleSetNetworkInterfacesResponder handles the response to the ListVirtualMachineScaleSetNetworkInterfaces request. The method always
654// closes the http.Response Body.
655func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesResponder(resp *http.Response) (result InterfaceListResult, err error) {
656	err = autorest.Respond(
657		resp,
658		azure.WithErrorUnlessStatusCode(http.StatusOK),
659		autorest.ByUnmarshallingJSON(&result),
660		autorest.ByClosing())
661	result.Response = autorest.Response{Response: resp}
662	return
663}
664
665// listVirtualMachineScaleSetNetworkInterfacesNextResults retrieves the next set of results, if any.
666func (client InterfacesClient) listVirtualMachineScaleSetNetworkInterfacesNextResults(ctx context.Context, lastResults InterfaceListResult) (result InterfaceListResult, err error) {
667	req, err := lastResults.interfaceListResultPreparer(ctx)
668	if err != nil {
669		return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetNetworkInterfacesNextResults", nil, "Failure preparing next results request")
670	}
671	if req == nil {
672		return
673	}
674	resp, err := client.ListVirtualMachineScaleSetNetworkInterfacesSender(req)
675	if err != nil {
676		result.Response = autorest.Response{Response: resp}
677		return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetNetworkInterfacesNextResults", resp, "Failure sending next results request")
678	}
679	result, err = client.ListVirtualMachineScaleSetNetworkInterfacesResponder(resp)
680	if err != nil {
681		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetNetworkInterfacesNextResults", resp, "Failure responding to next results request")
682	}
683	return
684}
685
686// ListVirtualMachineScaleSetNetworkInterfacesComplete enumerates all values, automatically crossing page boundaries as required.
687func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesComplete(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string) (result InterfaceListResultIterator, err error) {
688	if tracing.IsEnabled() {
689		ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.ListVirtualMachineScaleSetNetworkInterfaces")
690		defer func() {
691			sc := -1
692			if result.Response().Response.Response != nil {
693				sc = result.page.Response().Response.Response.StatusCode
694			}
695			tracing.EndSpan(ctx, sc, err)
696		}()
697	}
698	result.page, err = client.ListVirtualMachineScaleSetNetworkInterfaces(ctx, resourceGroupName, virtualMachineScaleSetName)
699	return
700}
701
702// ListVirtualMachineScaleSetVMNetworkInterfaces gets information about all network interfaces in a virtual machine in
703// a virtual machine scale set.
704// Parameters:
705// resourceGroupName - the name of the resource group.
706// virtualMachineScaleSetName - the name of the virtual machine scale set.
707// virtualmachineIndex - the virtual machine index.
708func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfaces(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string) (result InterfaceListResultPage, err error) {
709	if tracing.IsEnabled() {
710		ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.ListVirtualMachineScaleSetVMNetworkInterfaces")
711		defer func() {
712			sc := -1
713			if result.ilr.Response.Response != nil {
714				sc = result.ilr.Response.Response.StatusCode
715			}
716			tracing.EndSpan(ctx, sc, err)
717		}()
718	}
719	result.fn = client.listVirtualMachineScaleSetVMNetworkInterfacesNextResults
720	req, err := client.ListVirtualMachineScaleSetVMNetworkInterfacesPreparer(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex)
721	if err != nil {
722		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetVMNetworkInterfaces", nil, "Failure preparing request")
723		return
724	}
725
726	resp, err := client.ListVirtualMachineScaleSetVMNetworkInterfacesSender(req)
727	if err != nil {
728		result.ilr.Response = autorest.Response{Response: resp}
729		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetVMNetworkInterfaces", resp, "Failure sending request")
730		return
731	}
732
733	result.ilr, err = client.ListVirtualMachineScaleSetVMNetworkInterfacesResponder(resp)
734	if err != nil {
735		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetVMNetworkInterfaces", resp, "Failure responding to request")
736		return
737	}
738	if result.ilr.hasNextLink() && result.ilr.IsEmpty() {
739		err = result.NextWithContext(ctx)
740		return
741	}
742
743	return
744}
745
746// ListVirtualMachineScaleSetVMNetworkInterfacesPreparer prepares the ListVirtualMachineScaleSetVMNetworkInterfaces request.
747func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesPreparer(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string) (*http.Request, error) {
748	pathParameters := map[string]interface{}{
749		"resourceGroupName":          autorest.Encode("path", resourceGroupName),
750		"subscriptionId":             autorest.Encode("path", client.SubscriptionID),
751		"virtualmachineIndex":        autorest.Encode("path", virtualmachineIndex),
752		"virtualMachineScaleSetName": autorest.Encode("path", virtualMachineScaleSetName),
753	}
754
755	const APIVersion = "2015-06-15"
756	queryParameters := map[string]interface{}{
757		"api-version": APIVersion,
758	}
759
760	preparer := autorest.CreatePreparer(
761		autorest.AsGet(),
762		autorest.WithBaseURL(client.BaseURI),
763		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces", pathParameters),
764		autorest.WithQueryParameters(queryParameters))
765	return preparer.Prepare((&http.Request{}).WithContext(ctx))
766}
767
768// ListVirtualMachineScaleSetVMNetworkInterfacesSender sends the ListVirtualMachineScaleSetVMNetworkInterfaces request. The method will close the
769// http.Response Body if it receives an error.
770func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesSender(req *http.Request) (*http.Response, error) {
771	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
772}
773
774// ListVirtualMachineScaleSetVMNetworkInterfacesResponder handles the response to the ListVirtualMachineScaleSetVMNetworkInterfaces request. The method always
775// closes the http.Response Body.
776func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesResponder(resp *http.Response) (result InterfaceListResult, err error) {
777	err = autorest.Respond(
778		resp,
779		azure.WithErrorUnlessStatusCode(http.StatusOK),
780		autorest.ByUnmarshallingJSON(&result),
781		autorest.ByClosing())
782	result.Response = autorest.Response{Response: resp}
783	return
784}
785
786// listVirtualMachineScaleSetVMNetworkInterfacesNextResults retrieves the next set of results, if any.
787func (client InterfacesClient) listVirtualMachineScaleSetVMNetworkInterfacesNextResults(ctx context.Context, lastResults InterfaceListResult) (result InterfaceListResult, err error) {
788	req, err := lastResults.interfaceListResultPreparer(ctx)
789	if err != nil {
790		return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetVMNetworkInterfacesNextResults", nil, "Failure preparing next results request")
791	}
792	if req == nil {
793		return
794	}
795	resp, err := client.ListVirtualMachineScaleSetVMNetworkInterfacesSender(req)
796	if err != nil {
797		result.Response = autorest.Response{Response: resp}
798		return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetVMNetworkInterfacesNextResults", resp, "Failure sending next results request")
799	}
800	result, err = client.ListVirtualMachineScaleSetVMNetworkInterfacesResponder(resp)
801	if err != nil {
802		err = autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetVMNetworkInterfacesNextResults", resp, "Failure responding to next results request")
803	}
804	return
805}
806
807// ListVirtualMachineScaleSetVMNetworkInterfacesComplete enumerates all values, automatically crossing page boundaries as required.
808func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesComplete(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string) (result InterfaceListResultIterator, err error) {
809	if tracing.IsEnabled() {
810		ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.ListVirtualMachineScaleSetVMNetworkInterfaces")
811		defer func() {
812			sc := -1
813			if result.Response().Response.Response != nil {
814				sc = result.page.Response().Response.Response.StatusCode
815			}
816			tracing.EndSpan(ctx, sc, err)
817		}()
818	}
819	result.page, err = client.ListVirtualMachineScaleSetVMNetworkInterfaces(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex)
820	return
821}
822