1package network
2
3// Copyright (c) Microsoft Corporation. All rights reserved.
4// Licensed under the MIT License. See License.txt in the project root for license information.
5//
6// Code generated by Microsoft (R) AutoRest Code Generator.
7// Changes may cause incorrect behavior and will be lost if the code is regenerated.
8
9import (
10	"context"
11	"github.com/Azure/go-autorest/autorest"
12	"github.com/Azure/go-autorest/autorest/azure"
13	"github.com/Azure/go-autorest/tracing"
14	"net/http"
15)
16
17// HubVirtualNetworkConnectionsClient is the network Client
18type HubVirtualNetworkConnectionsClient struct {
19	BaseClient
20}
21
22// NewHubVirtualNetworkConnectionsClient creates an instance of the HubVirtualNetworkConnectionsClient client.
23func NewHubVirtualNetworkConnectionsClient(subscriptionID string) HubVirtualNetworkConnectionsClient {
24	return NewHubVirtualNetworkConnectionsClientWithBaseURI(DefaultBaseURI, subscriptionID)
25}
26
27// NewHubVirtualNetworkConnectionsClientWithBaseURI creates an instance of the HubVirtualNetworkConnectionsClient
28// client using a custom endpoint.  Use this when interacting with an Azure cloud that uses a non-standard base URI
29// (sovereign clouds, Azure stack).
30func NewHubVirtualNetworkConnectionsClientWithBaseURI(baseURI string, subscriptionID string) HubVirtualNetworkConnectionsClient {
31	return HubVirtualNetworkConnectionsClient{NewWithBaseURI(baseURI, subscriptionID)}
32}
33
34// CreateOrUpdate creates a hub virtual network connection if it doesn't exist else updates the existing one.
35// Parameters:
36// resourceGroupName - the resource group name of the HubVirtualNetworkConnection.
37// virtualHubName - the name of the VirtualHub.
38// connectionName - the name of the HubVirtualNetworkConnection.
39// hubVirtualNetworkConnectionParameters - parameters supplied to create or update a hub virtual network
40// connection.
41func (client HubVirtualNetworkConnectionsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualHubName string, connectionName string, hubVirtualNetworkConnectionParameters HubVirtualNetworkConnection) (result HubVirtualNetworkConnectionsCreateOrUpdateFuture, err error) {
42	if tracing.IsEnabled() {
43		ctx = tracing.StartSpan(ctx, fqdn+"/HubVirtualNetworkConnectionsClient.CreateOrUpdate")
44		defer func() {
45			sc := -1
46			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
47				sc = result.FutureAPI.Response().StatusCode
48			}
49			tracing.EndSpan(ctx, sc, err)
50		}()
51	}
52	req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualHubName, connectionName, hubVirtualNetworkConnectionParameters)
53	if err != nil {
54		err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "CreateOrUpdate", nil, "Failure preparing request")
55		return
56	}
57
58	result, err = client.CreateOrUpdateSender(req)
59	if err != nil {
60		err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "CreateOrUpdate", nil, "Failure sending request")
61		return
62	}
63
64	return
65}
66
67// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
68func (client HubVirtualNetworkConnectionsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualHubName string, connectionName string, hubVirtualNetworkConnectionParameters HubVirtualNetworkConnection) (*http.Request, error) {
69	pathParameters := map[string]interface{}{
70		"connectionName":    autorest.Encode("path", connectionName),
71		"resourceGroupName": autorest.Encode("path", resourceGroupName),
72		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
73		"virtualHubName":    autorest.Encode("path", virtualHubName),
74	}
75
76	const APIVersion = "2021-03-01"
77	queryParameters := map[string]interface{}{
78		"api-version": APIVersion,
79	}
80
81	hubVirtualNetworkConnectionParameters.Etag = nil
82	preparer := autorest.CreatePreparer(
83		autorest.AsContentType("application/json; charset=utf-8"),
84		autorest.AsPut(),
85		autorest.WithBaseURL(client.BaseURI),
86		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}", pathParameters),
87		autorest.WithJSON(hubVirtualNetworkConnectionParameters),
88		autorest.WithQueryParameters(queryParameters))
89	return preparer.Prepare((&http.Request{}).WithContext(ctx))
90}
91
92// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
93// http.Response Body if it receives an error.
94func (client HubVirtualNetworkConnectionsClient) CreateOrUpdateSender(req *http.Request) (future HubVirtualNetworkConnectionsCreateOrUpdateFuture, err error) {
95	var resp *http.Response
96	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
97	if err != nil {
98		return
99	}
100	var azf azure.Future
101	azf, err = azure.NewFutureFromResponse(resp)
102	future.FutureAPI = &azf
103	future.Result = future.result
104	return
105}
106
107// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
108// closes the http.Response Body.
109func (client HubVirtualNetworkConnectionsClient) CreateOrUpdateResponder(resp *http.Response) (result HubVirtualNetworkConnection, err error) {
110	err = autorest.Respond(
111		resp,
112		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
113		autorest.ByUnmarshallingJSON(&result),
114		autorest.ByClosing())
115	result.Response = autorest.Response{Response: resp}
116	return
117}
118
119// Delete deletes a HubVirtualNetworkConnection.
120// Parameters:
121// resourceGroupName - the resource group name of the VirtualHub.
122// virtualHubName - the name of the VirtualHub.
123// connectionName - the name of the HubVirtualNetworkConnection.
124func (client HubVirtualNetworkConnectionsClient) Delete(ctx context.Context, resourceGroupName string, virtualHubName string, connectionName string) (result HubVirtualNetworkConnectionsDeleteFuture, err error) {
125	if tracing.IsEnabled() {
126		ctx = tracing.StartSpan(ctx, fqdn+"/HubVirtualNetworkConnectionsClient.Delete")
127		defer func() {
128			sc := -1
129			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
130				sc = result.FutureAPI.Response().StatusCode
131			}
132			tracing.EndSpan(ctx, sc, err)
133		}()
134	}
135	req, err := client.DeletePreparer(ctx, resourceGroupName, virtualHubName, connectionName)
136	if err != nil {
137		err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "Delete", nil, "Failure preparing request")
138		return
139	}
140
141	result, err = client.DeleteSender(req)
142	if err != nil {
143		err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "Delete", nil, "Failure sending request")
144		return
145	}
146
147	return
148}
149
150// DeletePreparer prepares the Delete request.
151func (client HubVirtualNetworkConnectionsClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualHubName string, connectionName string) (*http.Request, error) {
152	pathParameters := map[string]interface{}{
153		"connectionName":    autorest.Encode("path", connectionName),
154		"resourceGroupName": autorest.Encode("path", resourceGroupName),
155		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
156		"virtualHubName":    autorest.Encode("path", virtualHubName),
157	}
158
159	const APIVersion = "2021-03-01"
160	queryParameters := map[string]interface{}{
161		"api-version": APIVersion,
162	}
163
164	preparer := autorest.CreatePreparer(
165		autorest.AsDelete(),
166		autorest.WithBaseURL(client.BaseURI),
167		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}", pathParameters),
168		autorest.WithQueryParameters(queryParameters))
169	return preparer.Prepare((&http.Request{}).WithContext(ctx))
170}
171
172// DeleteSender sends the Delete request. The method will close the
173// http.Response Body if it receives an error.
174func (client HubVirtualNetworkConnectionsClient) DeleteSender(req *http.Request) (future HubVirtualNetworkConnectionsDeleteFuture, err error) {
175	var resp *http.Response
176	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
177	if err != nil {
178		return
179	}
180	var azf azure.Future
181	azf, err = azure.NewFutureFromResponse(resp)
182	future.FutureAPI = &azf
183	future.Result = future.result
184	return
185}
186
187// DeleteResponder handles the response to the Delete request. The method always
188// closes the http.Response Body.
189func (client HubVirtualNetworkConnectionsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
190	err = autorest.Respond(
191		resp,
192		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
193		autorest.ByClosing())
194	result.Response = resp
195	return
196}
197
198// Get retrieves the details of a HubVirtualNetworkConnection.
199// Parameters:
200// resourceGroupName - the resource group name of the VirtualHub.
201// virtualHubName - the name of the VirtualHub.
202// connectionName - the name of the vpn connection.
203func (client HubVirtualNetworkConnectionsClient) Get(ctx context.Context, resourceGroupName string, virtualHubName string, connectionName string) (result HubVirtualNetworkConnection, err error) {
204	if tracing.IsEnabled() {
205		ctx = tracing.StartSpan(ctx, fqdn+"/HubVirtualNetworkConnectionsClient.Get")
206		defer func() {
207			sc := -1
208			if result.Response.Response != nil {
209				sc = result.Response.Response.StatusCode
210			}
211			tracing.EndSpan(ctx, sc, err)
212		}()
213	}
214	req, err := client.GetPreparer(ctx, resourceGroupName, virtualHubName, connectionName)
215	if err != nil {
216		err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "Get", nil, "Failure preparing request")
217		return
218	}
219
220	resp, err := client.GetSender(req)
221	if err != nil {
222		result.Response = autorest.Response{Response: resp}
223		err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "Get", resp, "Failure sending request")
224		return
225	}
226
227	result, err = client.GetResponder(resp)
228	if err != nil {
229		err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "Get", resp, "Failure responding to request")
230		return
231	}
232
233	return
234}
235
236// GetPreparer prepares the Get request.
237func (client HubVirtualNetworkConnectionsClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualHubName string, connectionName string) (*http.Request, error) {
238	pathParameters := map[string]interface{}{
239		"connectionName":    autorest.Encode("path", connectionName),
240		"resourceGroupName": autorest.Encode("path", resourceGroupName),
241		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
242		"virtualHubName":    autorest.Encode("path", virtualHubName),
243	}
244
245	const APIVersion = "2021-03-01"
246	queryParameters := map[string]interface{}{
247		"api-version": APIVersion,
248	}
249
250	preparer := autorest.CreatePreparer(
251		autorest.AsGet(),
252		autorest.WithBaseURL(client.BaseURI),
253		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}", pathParameters),
254		autorest.WithQueryParameters(queryParameters))
255	return preparer.Prepare((&http.Request{}).WithContext(ctx))
256}
257
258// GetSender sends the Get request. The method will close the
259// http.Response Body if it receives an error.
260func (client HubVirtualNetworkConnectionsClient) GetSender(req *http.Request) (*http.Response, error) {
261	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
262}
263
264// GetResponder handles the response to the Get request. The method always
265// closes the http.Response Body.
266func (client HubVirtualNetworkConnectionsClient) GetResponder(resp *http.Response) (result HubVirtualNetworkConnection, err error) {
267	err = autorest.Respond(
268		resp,
269		azure.WithErrorUnlessStatusCode(http.StatusOK),
270		autorest.ByUnmarshallingJSON(&result),
271		autorest.ByClosing())
272	result.Response = autorest.Response{Response: resp}
273	return
274}
275
276// List retrieves the details of all HubVirtualNetworkConnections.
277// Parameters:
278// resourceGroupName - the resource group name of the VirtualHub.
279// virtualHubName - the name of the VirtualHub.
280func (client HubVirtualNetworkConnectionsClient) List(ctx context.Context, resourceGroupName string, virtualHubName string) (result ListHubVirtualNetworkConnectionsResultPage, err error) {
281	if tracing.IsEnabled() {
282		ctx = tracing.StartSpan(ctx, fqdn+"/HubVirtualNetworkConnectionsClient.List")
283		defer func() {
284			sc := -1
285			if result.lhvncr.Response.Response != nil {
286				sc = result.lhvncr.Response.Response.StatusCode
287			}
288			tracing.EndSpan(ctx, sc, err)
289		}()
290	}
291	result.fn = client.listNextResults
292	req, err := client.ListPreparer(ctx, resourceGroupName, virtualHubName)
293	if err != nil {
294		err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "List", nil, "Failure preparing request")
295		return
296	}
297
298	resp, err := client.ListSender(req)
299	if err != nil {
300		result.lhvncr.Response = autorest.Response{Response: resp}
301		err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "List", resp, "Failure sending request")
302		return
303	}
304
305	result.lhvncr, err = client.ListResponder(resp)
306	if err != nil {
307		err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "List", resp, "Failure responding to request")
308		return
309	}
310	if result.lhvncr.hasNextLink() && result.lhvncr.IsEmpty() {
311		err = result.NextWithContext(ctx)
312		return
313	}
314
315	return
316}
317
318// ListPreparer prepares the List request.
319func (client HubVirtualNetworkConnectionsClient) ListPreparer(ctx context.Context, resourceGroupName string, virtualHubName string) (*http.Request, error) {
320	pathParameters := map[string]interface{}{
321		"resourceGroupName": autorest.Encode("path", resourceGroupName),
322		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
323		"virtualHubName":    autorest.Encode("path", virtualHubName),
324	}
325
326	const APIVersion = "2021-03-01"
327	queryParameters := map[string]interface{}{
328		"api-version": APIVersion,
329	}
330
331	preparer := autorest.CreatePreparer(
332		autorest.AsGet(),
333		autorest.WithBaseURL(client.BaseURI),
334		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections", pathParameters),
335		autorest.WithQueryParameters(queryParameters))
336	return preparer.Prepare((&http.Request{}).WithContext(ctx))
337}
338
339// ListSender sends the List request. The method will close the
340// http.Response Body if it receives an error.
341func (client HubVirtualNetworkConnectionsClient) ListSender(req *http.Request) (*http.Response, error) {
342	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
343}
344
345// ListResponder handles the response to the List request. The method always
346// closes the http.Response Body.
347func (client HubVirtualNetworkConnectionsClient) ListResponder(resp *http.Response) (result ListHubVirtualNetworkConnectionsResult, err error) {
348	err = autorest.Respond(
349		resp,
350		azure.WithErrorUnlessStatusCode(http.StatusOK),
351		autorest.ByUnmarshallingJSON(&result),
352		autorest.ByClosing())
353	result.Response = autorest.Response{Response: resp}
354	return
355}
356
357// listNextResults retrieves the next set of results, if any.
358func (client HubVirtualNetworkConnectionsClient) listNextResults(ctx context.Context, lastResults ListHubVirtualNetworkConnectionsResult) (result ListHubVirtualNetworkConnectionsResult, err error) {
359	req, err := lastResults.listHubVirtualNetworkConnectionsResultPreparer(ctx)
360	if err != nil {
361		return result, autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "listNextResults", nil, "Failure preparing next results request")
362	}
363	if req == nil {
364		return
365	}
366	resp, err := client.ListSender(req)
367	if err != nil {
368		result.Response = autorest.Response{Response: resp}
369		return result, autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "listNextResults", resp, "Failure sending next results request")
370	}
371	result, err = client.ListResponder(resp)
372	if err != nil {
373		err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "listNextResults", resp, "Failure responding to next results request")
374	}
375	return
376}
377
378// ListComplete enumerates all values, automatically crossing page boundaries as required.
379func (client HubVirtualNetworkConnectionsClient) ListComplete(ctx context.Context, resourceGroupName string, virtualHubName string) (result ListHubVirtualNetworkConnectionsResultIterator, err error) {
380	if tracing.IsEnabled() {
381		ctx = tracing.StartSpan(ctx, fqdn+"/HubVirtualNetworkConnectionsClient.List")
382		defer func() {
383			sc := -1
384			if result.Response().Response.Response != nil {
385				sc = result.page.Response().Response.Response.StatusCode
386			}
387			tracing.EndSpan(ctx, sc, err)
388		}()
389	}
390	result.page, err = client.List(ctx, resourceGroupName, virtualHubName)
391	return
392}
393