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