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	"net/http"
25)
26
27// VirtualNetworksClient is the network Client
28type VirtualNetworksClient struct {
29	BaseClient
30}
31
32// NewVirtualNetworksClient creates an instance of the VirtualNetworksClient client.
33func NewVirtualNetworksClient(subscriptionID string) VirtualNetworksClient {
34	return NewVirtualNetworksClientWithBaseURI(DefaultBaseURI, subscriptionID)
35}
36
37// NewVirtualNetworksClientWithBaseURI creates an instance of the VirtualNetworksClient client.
38func NewVirtualNetworksClientWithBaseURI(baseURI string, subscriptionID string) VirtualNetworksClient {
39	return VirtualNetworksClient{NewWithBaseURI(baseURI, subscriptionID)}
40}
41
42// CheckIPAddressAvailability checks whether a private IP address is available for use.
43// Parameters:
44// resourceGroupName - the name of the resource group.
45// virtualNetworkName - the name of the virtual network.
46// IPAddress - the private IP address to be verified.
47func (client VirtualNetworksClient) CheckIPAddressAvailability(ctx context.Context, resourceGroupName string, virtualNetworkName string, IPAddress string) (result IPAddressAvailabilityResult, err error) {
48	req, err := client.CheckIPAddressAvailabilityPreparer(ctx, resourceGroupName, virtualNetworkName, IPAddress)
49	if err != nil {
50		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "CheckIPAddressAvailability", nil, "Failure preparing request")
51		return
52	}
53
54	resp, err := client.CheckIPAddressAvailabilitySender(req)
55	if err != nil {
56		result.Response = autorest.Response{Response: resp}
57		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "CheckIPAddressAvailability", resp, "Failure sending request")
58		return
59	}
60
61	result, err = client.CheckIPAddressAvailabilityResponder(resp)
62	if err != nil {
63		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "CheckIPAddressAvailability", resp, "Failure responding to request")
64	}
65
66	return
67}
68
69// CheckIPAddressAvailabilityPreparer prepares the CheckIPAddressAvailability request.
70func (client VirtualNetworksClient) CheckIPAddressAvailabilityPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, IPAddress string) (*http.Request, error) {
71	pathParameters := map[string]interface{}{
72		"resourceGroupName":  autorest.Encode("path", resourceGroupName),
73		"subscriptionId":     autorest.Encode("path", client.SubscriptionID),
74		"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
75	}
76
77	const APIVersion = "2017-08-01"
78	queryParameters := map[string]interface{}{
79		"api-version": APIVersion,
80	}
81	if len(IPAddress) > 0 {
82		queryParameters["ipAddress"] = autorest.Encode("query", IPAddress)
83	}
84
85	preparer := autorest.CreatePreparer(
86		autorest.AsGet(),
87		autorest.WithBaseURL(client.BaseURI),
88		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/CheckIPAddressAvailability", pathParameters),
89		autorest.WithQueryParameters(queryParameters))
90	return preparer.Prepare((&http.Request{}).WithContext(ctx))
91}
92
93// CheckIPAddressAvailabilitySender sends the CheckIPAddressAvailability request. The method will close the
94// http.Response Body if it receives an error.
95func (client VirtualNetworksClient) CheckIPAddressAvailabilitySender(req *http.Request) (*http.Response, error) {
96	return autorest.SendWithSender(client, req,
97		azure.DoRetryWithRegistration(client.Client))
98}
99
100// CheckIPAddressAvailabilityResponder handles the response to the CheckIPAddressAvailability request. The method always
101// closes the http.Response Body.
102func (client VirtualNetworksClient) CheckIPAddressAvailabilityResponder(resp *http.Response) (result IPAddressAvailabilityResult, err error) {
103	err = autorest.Respond(
104		resp,
105		client.ByInspecting(),
106		azure.WithErrorUnlessStatusCode(http.StatusOK),
107		autorest.ByUnmarshallingJSON(&result),
108		autorest.ByClosing())
109	result.Response = autorest.Response{Response: resp}
110	return
111}
112
113// CreateOrUpdate creates or updates a virtual network in the specified resource group.
114// Parameters:
115// resourceGroupName - the name of the resource group.
116// virtualNetworkName - the name of the virtual network.
117// parameters - parameters supplied to the create or update virtual network operation
118func (client VirtualNetworksClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters VirtualNetwork) (result VirtualNetworksCreateOrUpdateFuture, err error) {
119	req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualNetworkName, parameters)
120	if err != nil {
121		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "CreateOrUpdate", nil, "Failure preparing request")
122		return
123	}
124
125	result, err = client.CreateOrUpdateSender(req)
126	if err != nil {
127		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "CreateOrUpdate", result.Response(), "Failure sending request")
128		return
129	}
130
131	return
132}
133
134// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
135func (client VirtualNetworksClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters VirtualNetwork) (*http.Request, error) {
136	pathParameters := map[string]interface{}{
137		"resourceGroupName":  autorest.Encode("path", resourceGroupName),
138		"subscriptionId":     autorest.Encode("path", client.SubscriptionID),
139		"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
140	}
141
142	const APIVersion = "2017-08-01"
143	queryParameters := map[string]interface{}{
144		"api-version": APIVersion,
145	}
146
147	preparer := autorest.CreatePreparer(
148		autorest.AsContentType("application/json; charset=utf-8"),
149		autorest.AsPut(),
150		autorest.WithBaseURL(client.BaseURI),
151		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", pathParameters),
152		autorest.WithJSON(parameters),
153		autorest.WithQueryParameters(queryParameters))
154	return preparer.Prepare((&http.Request{}).WithContext(ctx))
155}
156
157// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
158// http.Response Body if it receives an error.
159func (client VirtualNetworksClient) CreateOrUpdateSender(req *http.Request) (future VirtualNetworksCreateOrUpdateFuture, err error) {
160	var resp *http.Response
161	resp, err = autorest.SendWithSender(client, req,
162		azure.DoRetryWithRegistration(client.Client))
163	if err != nil {
164		return
165	}
166	err = autorest.Respond(resp, azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
167	if err != nil {
168		return
169	}
170	future.Future, err = azure.NewFutureFromResponse(resp)
171	return
172}
173
174// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
175// closes the http.Response Body.
176func (client VirtualNetworksClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualNetwork, err error) {
177	err = autorest.Respond(
178		resp,
179		client.ByInspecting(),
180		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
181		autorest.ByUnmarshallingJSON(&result),
182		autorest.ByClosing())
183	result.Response = autorest.Response{Response: resp}
184	return
185}
186
187// Delete deletes the specified virtual network.
188// Parameters:
189// resourceGroupName - the name of the resource group.
190// virtualNetworkName - the name of the virtual network.
191func (client VirtualNetworksClient) Delete(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result VirtualNetworksDeleteFuture, err error) {
192	req, err := client.DeletePreparer(ctx, resourceGroupName, virtualNetworkName)
193	if err != nil {
194		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Delete", nil, "Failure preparing request")
195		return
196	}
197
198	result, err = client.DeleteSender(req)
199	if err != nil {
200		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Delete", result.Response(), "Failure sending request")
201		return
202	}
203
204	return
205}
206
207// DeletePreparer prepares the Delete request.
208func (client VirtualNetworksClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string) (*http.Request, error) {
209	pathParameters := map[string]interface{}{
210		"resourceGroupName":  autorest.Encode("path", resourceGroupName),
211		"subscriptionId":     autorest.Encode("path", client.SubscriptionID),
212		"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
213	}
214
215	const APIVersion = "2017-08-01"
216	queryParameters := map[string]interface{}{
217		"api-version": APIVersion,
218	}
219
220	preparer := autorest.CreatePreparer(
221		autorest.AsDelete(),
222		autorest.WithBaseURL(client.BaseURI),
223		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", pathParameters),
224		autorest.WithQueryParameters(queryParameters))
225	return preparer.Prepare((&http.Request{}).WithContext(ctx))
226}
227
228// DeleteSender sends the Delete request. The method will close the
229// http.Response Body if it receives an error.
230func (client VirtualNetworksClient) DeleteSender(req *http.Request) (future VirtualNetworksDeleteFuture, err error) {
231	var resp *http.Response
232	resp, err = autorest.SendWithSender(client, req,
233		azure.DoRetryWithRegistration(client.Client))
234	if err != nil {
235		return
236	}
237	err = autorest.Respond(resp, azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
238	if err != nil {
239		return
240	}
241	future.Future, err = azure.NewFutureFromResponse(resp)
242	return
243}
244
245// DeleteResponder handles the response to the Delete request. The method always
246// closes the http.Response Body.
247func (client VirtualNetworksClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
248	err = autorest.Respond(
249		resp,
250		client.ByInspecting(),
251		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
252		autorest.ByClosing())
253	result.Response = resp
254	return
255}
256
257// Get gets the specified virtual network by resource group.
258// Parameters:
259// resourceGroupName - the name of the resource group.
260// virtualNetworkName - the name of the virtual network.
261// expand - expands referenced resources.
262func (client VirtualNetworksClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkName string, expand string) (result VirtualNetwork, err error) {
263	req, err := client.GetPreparer(ctx, resourceGroupName, virtualNetworkName, expand)
264	if err != nil {
265		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Get", nil, "Failure preparing request")
266		return
267	}
268
269	resp, err := client.GetSender(req)
270	if err != nil {
271		result.Response = autorest.Response{Response: resp}
272		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Get", resp, "Failure sending request")
273		return
274	}
275
276	result, err = client.GetResponder(resp)
277	if err != nil {
278		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Get", resp, "Failure responding to request")
279	}
280
281	return
282}
283
284// GetPreparer prepares the Get request.
285func (client VirtualNetworksClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, expand string) (*http.Request, error) {
286	pathParameters := map[string]interface{}{
287		"resourceGroupName":  autorest.Encode("path", resourceGroupName),
288		"subscriptionId":     autorest.Encode("path", client.SubscriptionID),
289		"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
290	}
291
292	const APIVersion = "2017-08-01"
293	queryParameters := map[string]interface{}{
294		"api-version": APIVersion,
295	}
296	if len(expand) > 0 {
297		queryParameters["$expand"] = autorest.Encode("query", expand)
298	}
299
300	preparer := autorest.CreatePreparer(
301		autorest.AsGet(),
302		autorest.WithBaseURL(client.BaseURI),
303		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", pathParameters),
304		autorest.WithQueryParameters(queryParameters))
305	return preparer.Prepare((&http.Request{}).WithContext(ctx))
306}
307
308// GetSender sends the Get request. The method will close the
309// http.Response Body if it receives an error.
310func (client VirtualNetworksClient) GetSender(req *http.Request) (*http.Response, error) {
311	return autorest.SendWithSender(client, req,
312		azure.DoRetryWithRegistration(client.Client))
313}
314
315// GetResponder handles the response to the Get request. The method always
316// closes the http.Response Body.
317func (client VirtualNetworksClient) GetResponder(resp *http.Response) (result VirtualNetwork, err error) {
318	err = autorest.Respond(
319		resp,
320		client.ByInspecting(),
321		azure.WithErrorUnlessStatusCode(http.StatusOK),
322		autorest.ByUnmarshallingJSON(&result),
323		autorest.ByClosing())
324	result.Response = autorest.Response{Response: resp}
325	return
326}
327
328// List gets all virtual networks in a resource group.
329// Parameters:
330// resourceGroupName - the name of the resource group.
331func (client VirtualNetworksClient) List(ctx context.Context, resourceGroupName string) (result VirtualNetworkListResultPage, err error) {
332	result.fn = client.listNextResults
333	req, err := client.ListPreparer(ctx, resourceGroupName)
334	if err != nil {
335		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", nil, "Failure preparing request")
336		return
337	}
338
339	resp, err := client.ListSender(req)
340	if err != nil {
341		result.vnlr.Response = autorest.Response{Response: resp}
342		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", resp, "Failure sending request")
343		return
344	}
345
346	result.vnlr, err = client.ListResponder(resp)
347	if err != nil {
348		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", resp, "Failure responding to request")
349	}
350
351	return
352}
353
354// ListPreparer prepares the List request.
355func (client VirtualNetworksClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
356	pathParameters := map[string]interface{}{
357		"resourceGroupName": autorest.Encode("path", resourceGroupName),
358		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
359	}
360
361	const APIVersion = "2017-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/virtualNetworks", 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 VirtualNetworksClient) ListSender(req *http.Request) (*http.Response, error) {
377	return autorest.SendWithSender(client, req,
378		azure.DoRetryWithRegistration(client.Client))
379}
380
381// ListResponder handles the response to the List request. The method always
382// closes the http.Response Body.
383func (client VirtualNetworksClient) ListResponder(resp *http.Response) (result VirtualNetworkListResult, err error) {
384	err = autorest.Respond(
385		resp,
386		client.ByInspecting(),
387		azure.WithErrorUnlessStatusCode(http.StatusOK),
388		autorest.ByUnmarshallingJSON(&result),
389		autorest.ByClosing())
390	result.Response = autorest.Response{Response: resp}
391	return
392}
393
394// listNextResults retrieves the next set of results, if any.
395func (client VirtualNetworksClient) listNextResults(lastResults VirtualNetworkListResult) (result VirtualNetworkListResult, err error) {
396	req, err := lastResults.virtualNetworkListResultPreparer()
397	if err != nil {
398		return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listNextResults", nil, "Failure preparing next results request")
399	}
400	if req == nil {
401		return
402	}
403	resp, err := client.ListSender(req)
404	if err != nil {
405		result.Response = autorest.Response{Response: resp}
406		return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listNextResults", resp, "Failure sending next results request")
407	}
408	result, err = client.ListResponder(resp)
409	if err != nil {
410		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listNextResults", resp, "Failure responding to next results request")
411	}
412	return
413}
414
415// ListComplete enumerates all values, automatically crossing page boundaries as required.
416func (client VirtualNetworksClient) ListComplete(ctx context.Context, resourceGroupName string) (result VirtualNetworkListResultIterator, err error) {
417	result.page, err = client.List(ctx, resourceGroupName)
418	return
419}
420
421// ListAll gets all virtual networks in a subscription.
422func (client VirtualNetworksClient) ListAll(ctx context.Context) (result VirtualNetworkListResultPage, err error) {
423	result.fn = client.listAllNextResults
424	req, err := client.ListAllPreparer(ctx)
425	if err != nil {
426		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", nil, "Failure preparing request")
427		return
428	}
429
430	resp, err := client.ListAllSender(req)
431	if err != nil {
432		result.vnlr.Response = autorest.Response{Response: resp}
433		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", resp, "Failure sending request")
434		return
435	}
436
437	result.vnlr, err = client.ListAllResponder(resp)
438	if err != nil {
439		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", resp, "Failure responding to request")
440	}
441
442	return
443}
444
445// ListAllPreparer prepares the ListAll request.
446func (client VirtualNetworksClient) ListAllPreparer(ctx context.Context) (*http.Request, error) {
447	pathParameters := map[string]interface{}{
448		"subscriptionId": autorest.Encode("path", client.SubscriptionID),
449	}
450
451	const APIVersion = "2017-08-01"
452	queryParameters := map[string]interface{}{
453		"api-version": APIVersion,
454	}
455
456	preparer := autorest.CreatePreparer(
457		autorest.AsGet(),
458		autorest.WithBaseURL(client.BaseURI),
459		autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualNetworks", pathParameters),
460		autorest.WithQueryParameters(queryParameters))
461	return preparer.Prepare((&http.Request{}).WithContext(ctx))
462}
463
464// ListAllSender sends the ListAll request. The method will close the
465// http.Response Body if it receives an error.
466func (client VirtualNetworksClient) ListAllSender(req *http.Request) (*http.Response, error) {
467	return autorest.SendWithSender(client, req,
468		azure.DoRetryWithRegistration(client.Client))
469}
470
471// ListAllResponder handles the response to the ListAll request. The method always
472// closes the http.Response Body.
473func (client VirtualNetworksClient) ListAllResponder(resp *http.Response) (result VirtualNetworkListResult, err error) {
474	err = autorest.Respond(
475		resp,
476		client.ByInspecting(),
477		azure.WithErrorUnlessStatusCode(http.StatusOK),
478		autorest.ByUnmarshallingJSON(&result),
479		autorest.ByClosing())
480	result.Response = autorest.Response{Response: resp}
481	return
482}
483
484// listAllNextResults retrieves the next set of results, if any.
485func (client VirtualNetworksClient) listAllNextResults(lastResults VirtualNetworkListResult) (result VirtualNetworkListResult, err error) {
486	req, err := lastResults.virtualNetworkListResultPreparer()
487	if err != nil {
488		return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listAllNextResults", nil, "Failure preparing next results request")
489	}
490	if req == nil {
491		return
492	}
493	resp, err := client.ListAllSender(req)
494	if err != nil {
495		result.Response = autorest.Response{Response: resp}
496		return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listAllNextResults", resp, "Failure sending next results request")
497	}
498	result, err = client.ListAllResponder(resp)
499	if err != nil {
500		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listAllNextResults", resp, "Failure responding to next results request")
501	}
502	return
503}
504
505// ListAllComplete enumerates all values, automatically crossing page boundaries as required.
506func (client VirtualNetworksClient) ListAllComplete(ctx context.Context) (result VirtualNetworkListResultIterator, err error) {
507	result.page, err = client.ListAll(ctx)
508	return
509}
510
511// ListUsage lists usage stats.
512// Parameters:
513// resourceGroupName - the name of the resource group.
514// virtualNetworkName - the name of the virtual network.
515func (client VirtualNetworksClient) ListUsage(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result VirtualNetworkListUsageResultPage, err error) {
516	result.fn = client.listUsageNextResults
517	req, err := client.ListUsagePreparer(ctx, resourceGroupName, virtualNetworkName)
518	if err != nil {
519		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListUsage", nil, "Failure preparing request")
520		return
521	}
522
523	resp, err := client.ListUsageSender(req)
524	if err != nil {
525		result.vnlur.Response = autorest.Response{Response: resp}
526		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListUsage", resp, "Failure sending request")
527		return
528	}
529
530	result.vnlur, err = client.ListUsageResponder(resp)
531	if err != nil {
532		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListUsage", resp, "Failure responding to request")
533	}
534
535	return
536}
537
538// ListUsagePreparer prepares the ListUsage request.
539func (client VirtualNetworksClient) ListUsagePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string) (*http.Request, error) {
540	pathParameters := map[string]interface{}{
541		"resourceGroupName":  autorest.Encode("path", resourceGroupName),
542		"subscriptionId":     autorest.Encode("path", client.SubscriptionID),
543		"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
544	}
545
546	const APIVersion = "2017-08-01"
547	queryParameters := map[string]interface{}{
548		"api-version": APIVersion,
549	}
550
551	preparer := autorest.CreatePreparer(
552		autorest.AsGet(),
553		autorest.WithBaseURL(client.BaseURI),
554		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/usages", pathParameters),
555		autorest.WithQueryParameters(queryParameters))
556	return preparer.Prepare((&http.Request{}).WithContext(ctx))
557}
558
559// ListUsageSender sends the ListUsage request. The method will close the
560// http.Response Body if it receives an error.
561func (client VirtualNetworksClient) ListUsageSender(req *http.Request) (*http.Response, error) {
562	return autorest.SendWithSender(client, req,
563		azure.DoRetryWithRegistration(client.Client))
564}
565
566// ListUsageResponder handles the response to the ListUsage request. The method always
567// closes the http.Response Body.
568func (client VirtualNetworksClient) ListUsageResponder(resp *http.Response) (result VirtualNetworkListUsageResult, err error) {
569	err = autorest.Respond(
570		resp,
571		client.ByInspecting(),
572		azure.WithErrorUnlessStatusCode(http.StatusOK),
573		autorest.ByUnmarshallingJSON(&result),
574		autorest.ByClosing())
575	result.Response = autorest.Response{Response: resp}
576	return
577}
578
579// listUsageNextResults retrieves the next set of results, if any.
580func (client VirtualNetworksClient) listUsageNextResults(lastResults VirtualNetworkListUsageResult) (result VirtualNetworkListUsageResult, err error) {
581	req, err := lastResults.virtualNetworkListUsageResultPreparer()
582	if err != nil {
583		return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listUsageNextResults", nil, "Failure preparing next results request")
584	}
585	if req == nil {
586		return
587	}
588	resp, err := client.ListUsageSender(req)
589	if err != nil {
590		result.Response = autorest.Response{Response: resp}
591		return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listUsageNextResults", resp, "Failure sending next results request")
592	}
593	result, err = client.ListUsageResponder(resp)
594	if err != nil {
595		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listUsageNextResults", resp, "Failure responding to next results request")
596	}
597	return
598}
599
600// ListUsageComplete enumerates all values, automatically crossing page boundaries as required.
601func (client VirtualNetworksClient) ListUsageComplete(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result VirtualNetworkListUsageResultIterator, err error) {
602	result.page, err = client.ListUsage(ctx, resourceGroupName, virtualNetworkName)
603	return
604}
605