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