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-11-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-11-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	sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
161	future.Future = azure.NewFuture(req)
162	future.req = req
163	_, err = future.Done(sender)
164	if err != nil {
165		return
166	}
167	err = autorest.Respond(future.Response(),
168		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
169	return
170}
171
172// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
173// closes the http.Response Body.
174func (client VirtualNetworksClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualNetwork, err error) {
175	err = autorest.Respond(
176		resp,
177		client.ByInspecting(),
178		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
179		autorest.ByUnmarshallingJSON(&result),
180		autorest.ByClosing())
181	result.Response = autorest.Response{Response: resp}
182	return
183}
184
185// Delete deletes the specified virtual network.
186// Parameters:
187// resourceGroupName - the name of the resource group.
188// virtualNetworkName - the name of the virtual network.
189func (client VirtualNetworksClient) Delete(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result VirtualNetworksDeleteFuture, err error) {
190	req, err := client.DeletePreparer(ctx, resourceGroupName, virtualNetworkName)
191	if err != nil {
192		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Delete", nil, "Failure preparing request")
193		return
194	}
195
196	result, err = client.DeleteSender(req)
197	if err != nil {
198		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Delete", result.Response(), "Failure sending request")
199		return
200	}
201
202	return
203}
204
205// DeletePreparer prepares the Delete request.
206func (client VirtualNetworksClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string) (*http.Request, error) {
207	pathParameters := map[string]interface{}{
208		"resourceGroupName":  autorest.Encode("path", resourceGroupName),
209		"subscriptionId":     autorest.Encode("path", client.SubscriptionID),
210		"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
211	}
212
213	const APIVersion = "2017-11-01"
214	queryParameters := map[string]interface{}{
215		"api-version": APIVersion,
216	}
217
218	preparer := autorest.CreatePreparer(
219		autorest.AsDelete(),
220		autorest.WithBaseURL(client.BaseURI),
221		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", pathParameters),
222		autorest.WithQueryParameters(queryParameters))
223	return preparer.Prepare((&http.Request{}).WithContext(ctx))
224}
225
226// DeleteSender sends the Delete request. The method will close the
227// http.Response Body if it receives an error.
228func (client VirtualNetworksClient) DeleteSender(req *http.Request) (future VirtualNetworksDeleteFuture, err error) {
229	sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
230	future.Future = azure.NewFuture(req)
231	future.req = req
232	_, err = future.Done(sender)
233	if err != nil {
234		return
235	}
236	err = autorest.Respond(future.Response(),
237		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
238	return
239}
240
241// DeleteResponder handles the response to the Delete request. The method always
242// closes the http.Response Body.
243func (client VirtualNetworksClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
244	err = autorest.Respond(
245		resp,
246		client.ByInspecting(),
247		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
248		autorest.ByClosing())
249	result.Response = resp
250	return
251}
252
253// Get gets the specified virtual network by resource group.
254// Parameters:
255// resourceGroupName - the name of the resource group.
256// virtualNetworkName - the name of the virtual network.
257// expand - expands referenced resources.
258func (client VirtualNetworksClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkName string, expand string) (result VirtualNetwork, err error) {
259	req, err := client.GetPreparer(ctx, resourceGroupName, virtualNetworkName, expand)
260	if err != nil {
261		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Get", nil, "Failure preparing request")
262		return
263	}
264
265	resp, err := client.GetSender(req)
266	if err != nil {
267		result.Response = autorest.Response{Response: resp}
268		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Get", resp, "Failure sending request")
269		return
270	}
271
272	result, err = client.GetResponder(resp)
273	if err != nil {
274		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Get", resp, "Failure responding to request")
275	}
276
277	return
278}
279
280// GetPreparer prepares the Get request.
281func (client VirtualNetworksClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, expand string) (*http.Request, error) {
282	pathParameters := map[string]interface{}{
283		"resourceGroupName":  autorest.Encode("path", resourceGroupName),
284		"subscriptionId":     autorest.Encode("path", client.SubscriptionID),
285		"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
286	}
287
288	const APIVersion = "2017-11-01"
289	queryParameters := map[string]interface{}{
290		"api-version": APIVersion,
291	}
292	if len(expand) > 0 {
293		queryParameters["$expand"] = autorest.Encode("query", expand)
294	}
295
296	preparer := autorest.CreatePreparer(
297		autorest.AsGet(),
298		autorest.WithBaseURL(client.BaseURI),
299		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", pathParameters),
300		autorest.WithQueryParameters(queryParameters))
301	return preparer.Prepare((&http.Request{}).WithContext(ctx))
302}
303
304// GetSender sends the Get request. The method will close the
305// http.Response Body if it receives an error.
306func (client VirtualNetworksClient) GetSender(req *http.Request) (*http.Response, error) {
307	return autorest.SendWithSender(client, req,
308		azure.DoRetryWithRegistration(client.Client))
309}
310
311// GetResponder handles the response to the Get request. The method always
312// closes the http.Response Body.
313func (client VirtualNetworksClient) GetResponder(resp *http.Response) (result VirtualNetwork, err error) {
314	err = autorest.Respond(
315		resp,
316		client.ByInspecting(),
317		azure.WithErrorUnlessStatusCode(http.StatusOK),
318		autorest.ByUnmarshallingJSON(&result),
319		autorest.ByClosing())
320	result.Response = autorest.Response{Response: resp}
321	return
322}
323
324// List gets all virtual networks in a resource group.
325// Parameters:
326// resourceGroupName - the name of the resource group.
327func (client VirtualNetworksClient) List(ctx context.Context, resourceGroupName string) (result VirtualNetworkListResultPage, err error) {
328	result.fn = client.listNextResults
329	req, err := client.ListPreparer(ctx, resourceGroupName)
330	if err != nil {
331		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", nil, "Failure preparing request")
332		return
333	}
334
335	resp, err := client.ListSender(req)
336	if err != nil {
337		result.vnlr.Response = autorest.Response{Response: resp}
338		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", resp, "Failure sending request")
339		return
340	}
341
342	result.vnlr, err = client.ListResponder(resp)
343	if err != nil {
344		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", resp, "Failure responding to request")
345	}
346
347	return
348}
349
350// ListPreparer prepares the List request.
351func (client VirtualNetworksClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
352	pathParameters := map[string]interface{}{
353		"resourceGroupName": autorest.Encode("path", resourceGroupName),
354		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
355	}
356
357	const APIVersion = "2017-11-01"
358	queryParameters := map[string]interface{}{
359		"api-version": APIVersion,
360	}
361
362	preparer := autorest.CreatePreparer(
363		autorest.AsGet(),
364		autorest.WithBaseURL(client.BaseURI),
365		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks", pathParameters),
366		autorest.WithQueryParameters(queryParameters))
367	return preparer.Prepare((&http.Request{}).WithContext(ctx))
368}
369
370// ListSender sends the List request. The method will close the
371// http.Response Body if it receives an error.
372func (client VirtualNetworksClient) ListSender(req *http.Request) (*http.Response, error) {
373	return autorest.SendWithSender(client, req,
374		azure.DoRetryWithRegistration(client.Client))
375}
376
377// ListResponder handles the response to the List request. The method always
378// closes the http.Response Body.
379func (client VirtualNetworksClient) ListResponder(resp *http.Response) (result VirtualNetworkListResult, err error) {
380	err = autorest.Respond(
381		resp,
382		client.ByInspecting(),
383		azure.WithErrorUnlessStatusCode(http.StatusOK),
384		autorest.ByUnmarshallingJSON(&result),
385		autorest.ByClosing())
386	result.Response = autorest.Response{Response: resp}
387	return
388}
389
390// listNextResults retrieves the next set of results, if any.
391func (client VirtualNetworksClient) listNextResults(lastResults VirtualNetworkListResult) (result VirtualNetworkListResult, err error) {
392	req, err := lastResults.virtualNetworkListResultPreparer()
393	if err != nil {
394		return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listNextResults", nil, "Failure preparing next results request")
395	}
396	if req == nil {
397		return
398	}
399	resp, err := client.ListSender(req)
400	if err != nil {
401		result.Response = autorest.Response{Response: resp}
402		return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listNextResults", resp, "Failure sending next results request")
403	}
404	result, err = client.ListResponder(resp)
405	if err != nil {
406		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listNextResults", resp, "Failure responding to next results request")
407	}
408	return
409}
410
411// ListComplete enumerates all values, automatically crossing page boundaries as required.
412func (client VirtualNetworksClient) ListComplete(ctx context.Context, resourceGroupName string) (result VirtualNetworkListResultIterator, err error) {
413	result.page, err = client.List(ctx, resourceGroupName)
414	return
415}
416
417// ListAll gets all virtual networks in a subscription.
418func (client VirtualNetworksClient) ListAll(ctx context.Context) (result VirtualNetworkListResultPage, err error) {
419	result.fn = client.listAllNextResults
420	req, err := client.ListAllPreparer(ctx)
421	if err != nil {
422		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", nil, "Failure preparing request")
423		return
424	}
425
426	resp, err := client.ListAllSender(req)
427	if err != nil {
428		result.vnlr.Response = autorest.Response{Response: resp}
429		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", resp, "Failure sending request")
430		return
431	}
432
433	result.vnlr, err = client.ListAllResponder(resp)
434	if err != nil {
435		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", resp, "Failure responding to request")
436	}
437
438	return
439}
440
441// ListAllPreparer prepares the ListAll request.
442func (client VirtualNetworksClient) ListAllPreparer(ctx context.Context) (*http.Request, error) {
443	pathParameters := map[string]interface{}{
444		"subscriptionId": autorest.Encode("path", client.SubscriptionID),
445	}
446
447	const APIVersion = "2017-11-01"
448	queryParameters := map[string]interface{}{
449		"api-version": APIVersion,
450	}
451
452	preparer := autorest.CreatePreparer(
453		autorest.AsGet(),
454		autorest.WithBaseURL(client.BaseURI),
455		autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualNetworks", pathParameters),
456		autorest.WithQueryParameters(queryParameters))
457	return preparer.Prepare((&http.Request{}).WithContext(ctx))
458}
459
460// ListAllSender sends the ListAll request. The method will close the
461// http.Response Body if it receives an error.
462func (client VirtualNetworksClient) ListAllSender(req *http.Request) (*http.Response, error) {
463	return autorest.SendWithSender(client, req,
464		azure.DoRetryWithRegistration(client.Client))
465}
466
467// ListAllResponder handles the response to the ListAll request. The method always
468// closes the http.Response Body.
469func (client VirtualNetworksClient) ListAllResponder(resp *http.Response) (result VirtualNetworkListResult, err error) {
470	err = autorest.Respond(
471		resp,
472		client.ByInspecting(),
473		azure.WithErrorUnlessStatusCode(http.StatusOK),
474		autorest.ByUnmarshallingJSON(&result),
475		autorest.ByClosing())
476	result.Response = autorest.Response{Response: resp}
477	return
478}
479
480// listAllNextResults retrieves the next set of results, if any.
481func (client VirtualNetworksClient) listAllNextResults(lastResults VirtualNetworkListResult) (result VirtualNetworkListResult, err error) {
482	req, err := lastResults.virtualNetworkListResultPreparer()
483	if err != nil {
484		return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listAllNextResults", nil, "Failure preparing next results request")
485	}
486	if req == nil {
487		return
488	}
489	resp, err := client.ListAllSender(req)
490	if err != nil {
491		result.Response = autorest.Response{Response: resp}
492		return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listAllNextResults", resp, "Failure sending next results request")
493	}
494	result, err = client.ListAllResponder(resp)
495	if err != nil {
496		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listAllNextResults", resp, "Failure responding to next results request")
497	}
498	return
499}
500
501// ListAllComplete enumerates all values, automatically crossing page boundaries as required.
502func (client VirtualNetworksClient) ListAllComplete(ctx context.Context) (result VirtualNetworkListResultIterator, err error) {
503	result.page, err = client.ListAll(ctx)
504	return
505}
506
507// ListUsage lists usage stats.
508// Parameters:
509// resourceGroupName - the name of the resource group.
510// virtualNetworkName - the name of the virtual network.
511func (client VirtualNetworksClient) ListUsage(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result VirtualNetworkListUsageResultPage, err error) {
512	result.fn = client.listUsageNextResults
513	req, err := client.ListUsagePreparer(ctx, resourceGroupName, virtualNetworkName)
514	if err != nil {
515		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListUsage", nil, "Failure preparing request")
516		return
517	}
518
519	resp, err := client.ListUsageSender(req)
520	if err != nil {
521		result.vnlur.Response = autorest.Response{Response: resp}
522		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListUsage", resp, "Failure sending request")
523		return
524	}
525
526	result.vnlur, err = client.ListUsageResponder(resp)
527	if err != nil {
528		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListUsage", resp, "Failure responding to request")
529	}
530
531	return
532}
533
534// ListUsagePreparer prepares the ListUsage request.
535func (client VirtualNetworksClient) ListUsagePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string) (*http.Request, error) {
536	pathParameters := map[string]interface{}{
537		"resourceGroupName":  autorest.Encode("path", resourceGroupName),
538		"subscriptionId":     autorest.Encode("path", client.SubscriptionID),
539		"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
540	}
541
542	const APIVersion = "2017-11-01"
543	queryParameters := map[string]interface{}{
544		"api-version": APIVersion,
545	}
546
547	preparer := autorest.CreatePreparer(
548		autorest.AsGet(),
549		autorest.WithBaseURL(client.BaseURI),
550		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/usages", pathParameters),
551		autorest.WithQueryParameters(queryParameters))
552	return preparer.Prepare((&http.Request{}).WithContext(ctx))
553}
554
555// ListUsageSender sends the ListUsage request. The method will close the
556// http.Response Body if it receives an error.
557func (client VirtualNetworksClient) ListUsageSender(req *http.Request) (*http.Response, error) {
558	return autorest.SendWithSender(client, req,
559		azure.DoRetryWithRegistration(client.Client))
560}
561
562// ListUsageResponder handles the response to the ListUsage request. The method always
563// closes the http.Response Body.
564func (client VirtualNetworksClient) ListUsageResponder(resp *http.Response) (result VirtualNetworkListUsageResult, err error) {
565	err = autorest.Respond(
566		resp,
567		client.ByInspecting(),
568		azure.WithErrorUnlessStatusCode(http.StatusOK),
569		autorest.ByUnmarshallingJSON(&result),
570		autorest.ByClosing())
571	result.Response = autorest.Response{Response: resp}
572	return
573}
574
575// listUsageNextResults retrieves the next set of results, if any.
576func (client VirtualNetworksClient) listUsageNextResults(lastResults VirtualNetworkListUsageResult) (result VirtualNetworkListUsageResult, err error) {
577	req, err := lastResults.virtualNetworkListUsageResultPreparer()
578	if err != nil {
579		return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listUsageNextResults", nil, "Failure preparing next results request")
580	}
581	if req == nil {
582		return
583	}
584	resp, err := client.ListUsageSender(req)
585	if err != nil {
586		result.Response = autorest.Response{Response: resp}
587		return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listUsageNextResults", resp, "Failure sending next results request")
588	}
589	result, err = client.ListUsageResponder(resp)
590	if err != nil {
591		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listUsageNextResults", resp, "Failure responding to next results request")
592	}
593	return
594}
595
596// ListUsageComplete enumerates all values, automatically crossing page boundaries as required.
597func (client VirtualNetworksClient) ListUsageComplete(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result VirtualNetworkListUsageResultIterator, err error) {
598	result.page, err = client.ListUsage(ctx, resourceGroupName, virtualNetworkName)
599	return
600}
601
602// UpdateTags updates a virtual network tags.
603// Parameters:
604// resourceGroupName - the name of the resource group.
605// virtualNetworkName - the name of the virtual network.
606// parameters - parameters supplied to update virtual network tags.
607func (client VirtualNetworksClient) UpdateTags(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters TagsObject) (result VirtualNetworksUpdateTagsFuture, err error) {
608	req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, virtualNetworkName, parameters)
609	if err != nil {
610		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "UpdateTags", nil, "Failure preparing request")
611		return
612	}
613
614	result, err = client.UpdateTagsSender(req)
615	if err != nil {
616		err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "UpdateTags", result.Response(), "Failure sending request")
617		return
618	}
619
620	return
621}
622
623// UpdateTagsPreparer prepares the UpdateTags request.
624func (client VirtualNetworksClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters TagsObject) (*http.Request, error) {
625	pathParameters := map[string]interface{}{
626		"resourceGroupName":  autorest.Encode("path", resourceGroupName),
627		"subscriptionId":     autorest.Encode("path", client.SubscriptionID),
628		"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
629	}
630
631	const APIVersion = "2017-11-01"
632	queryParameters := map[string]interface{}{
633		"api-version": APIVersion,
634	}
635
636	preparer := autorest.CreatePreparer(
637		autorest.AsContentType("application/json; charset=utf-8"),
638		autorest.AsPatch(),
639		autorest.WithBaseURL(client.BaseURI),
640		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", pathParameters),
641		autorest.WithJSON(parameters),
642		autorest.WithQueryParameters(queryParameters))
643	return preparer.Prepare((&http.Request{}).WithContext(ctx))
644}
645
646// UpdateTagsSender sends the UpdateTags request. The method will close the
647// http.Response Body if it receives an error.
648func (client VirtualNetworksClient) UpdateTagsSender(req *http.Request) (future VirtualNetworksUpdateTagsFuture, err error) {
649	sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
650	future.Future = azure.NewFuture(req)
651	future.req = req
652	_, err = future.Done(sender)
653	if err != nil {
654		return
655	}
656	err = autorest.Respond(future.Response(),
657		azure.WithErrorUnlessStatusCode(http.StatusOK))
658	return
659}
660
661// UpdateTagsResponder handles the response to the UpdateTags request. The method always
662// closes the http.Response Body.
663func (client VirtualNetworksClient) UpdateTagsResponder(resp *http.Response) (result VirtualNetwork, err error) {
664	err = autorest.Respond(
665		resp,
666		client.ByInspecting(),
667		azure.WithErrorUnlessStatusCode(http.StatusOK),
668		autorest.ByUnmarshallingJSON(&result),
669		autorest.ByClosing())
670	result.Response = autorest.Response{Response: resp}
671	return
672}
673