github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6@v6.2.0/virtualnetworkgatewayconnections_client.go (about)

     1  //go:build go1.18
     2  // +build go1.18
     3  
     4  // Copyright (c) Microsoft Corporation. All rights reserved.
     5  // Licensed under the MIT License. See License.txt in the project root for license information.
     6  // Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT.
     7  // Changes may cause incorrect behavior and will be lost if the code is regenerated.
     8  
     9  package armnetwork
    10  
    11  import (
    12  	"context"
    13  	"errors"
    14  	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
    15  	"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm"
    16  	"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
    17  	"github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
    18  	"net/http"
    19  	"net/url"
    20  	"strings"
    21  )
    22  
    23  // VirtualNetworkGatewayConnectionsClient contains the methods for the VirtualNetworkGatewayConnections group.
    24  // Don't use this type directly, use NewVirtualNetworkGatewayConnectionsClient() instead.
    25  type VirtualNetworkGatewayConnectionsClient struct {
    26  	internal       *arm.Client
    27  	subscriptionID string
    28  }
    29  
    30  // NewVirtualNetworkGatewayConnectionsClient creates a new instance of VirtualNetworkGatewayConnectionsClient with the specified values.
    31  //   - subscriptionID - The subscription credentials which uniquely identify the Microsoft Azure subscription. The subscription
    32  //     ID forms part of the URI for every service call.
    33  //   - credential - used to authorize requests. Usually a credential from azidentity.
    34  //   - options - pass nil to accept the default values.
    35  func NewVirtualNetworkGatewayConnectionsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*VirtualNetworkGatewayConnectionsClient, error) {
    36  	cl, err := arm.NewClient(moduleName, moduleVersion, credential, options)
    37  	if err != nil {
    38  		return nil, err
    39  	}
    40  	client := &VirtualNetworkGatewayConnectionsClient{
    41  		subscriptionID: subscriptionID,
    42  		internal:       cl,
    43  	}
    44  	return client, nil
    45  }
    46  
    47  // BeginCreateOrUpdate - Creates or updates a virtual network gateway connection in the specified resource group.
    48  // If the operation fails it returns an *azcore.ResponseError type.
    49  //
    50  // Generated from API version 2024-05-01
    51  //   - resourceGroupName - The name of the resource group.
    52  //   - virtualNetworkGatewayConnectionName - The name of the virtual network gateway connection.
    53  //   - parameters - Parameters supplied to the create or update virtual network gateway connection operation.
    54  //   - options - VirtualNetworkGatewayConnectionsClientBeginCreateOrUpdateOptions contains the optional parameters for the VirtualNetworkGatewayConnectionsClient.BeginCreateOrUpdate
    55  //     method.
    56  func (client *VirtualNetworkGatewayConnectionsClient) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VirtualNetworkGatewayConnection, options *VirtualNetworkGatewayConnectionsClientBeginCreateOrUpdateOptions) (*runtime.Poller[VirtualNetworkGatewayConnectionsClientCreateOrUpdateResponse], error) {
    57  	if options == nil || options.ResumeToken == "" {
    58  		resp, err := client.createOrUpdate(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
    59  		if err != nil {
    60  			return nil, err
    61  		}
    62  		poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualNetworkGatewayConnectionsClientCreateOrUpdateResponse]{
    63  			FinalStateVia: runtime.FinalStateViaAzureAsyncOp,
    64  			Tracer:        client.internal.Tracer(),
    65  		})
    66  		return poller, err
    67  	} else {
    68  		return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualNetworkGatewayConnectionsClientCreateOrUpdateResponse]{
    69  			Tracer: client.internal.Tracer(),
    70  		})
    71  	}
    72  }
    73  
    74  // CreateOrUpdate - Creates or updates a virtual network gateway connection in the specified resource group.
    75  // If the operation fails it returns an *azcore.ResponseError type.
    76  //
    77  // Generated from API version 2024-05-01
    78  func (client *VirtualNetworkGatewayConnectionsClient) createOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VirtualNetworkGatewayConnection, options *VirtualNetworkGatewayConnectionsClientBeginCreateOrUpdateOptions) (*http.Response, error) {
    79  	var err error
    80  	const operationName = "VirtualNetworkGatewayConnectionsClient.BeginCreateOrUpdate"
    81  	ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
    82  	ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
    83  	defer func() { endSpan(err) }()
    84  	req, err := client.createOrUpdateCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
    85  	if err != nil {
    86  		return nil, err
    87  	}
    88  	httpResp, err := client.internal.Pipeline().Do(req)
    89  	if err != nil {
    90  		return nil, err
    91  	}
    92  	if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) {
    93  		err = runtime.NewResponseError(httpResp)
    94  		return nil, err
    95  	}
    96  	return httpResp, nil
    97  }
    98  
    99  // createOrUpdateCreateRequest creates the CreateOrUpdate request.
   100  func (client *VirtualNetworkGatewayConnectionsClient) createOrUpdateCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VirtualNetworkGatewayConnection, options *VirtualNetworkGatewayConnectionsClientBeginCreateOrUpdateOptions) (*policy.Request, error) {
   101  	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"
   102  	if resourceGroupName == "" {
   103  		return nil, errors.New("parameter resourceGroupName cannot be empty")
   104  	}
   105  	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
   106  	if virtualNetworkGatewayConnectionName == "" {
   107  		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
   108  	}
   109  	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
   110  	if client.subscriptionID == "" {
   111  		return nil, errors.New("parameter client.subscriptionID cannot be empty")
   112  	}
   113  	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
   114  	req, err := runtime.NewRequest(ctx, http.MethodPut, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
   115  	if err != nil {
   116  		return nil, err
   117  	}
   118  	reqQP := req.Raw().URL.Query()
   119  	reqQP.Set("api-version", "2024-05-01")
   120  	req.Raw().URL.RawQuery = reqQP.Encode()
   121  	req.Raw().Header["Accept"] = []string{"application/json"}
   122  	if err := runtime.MarshalAsJSON(req, parameters); err != nil {
   123  		return nil, err
   124  	}
   125  	return req, nil
   126  }
   127  
   128  // BeginDelete - Deletes the specified virtual network Gateway connection.
   129  // If the operation fails it returns an *azcore.ResponseError type.
   130  //
   131  // Generated from API version 2024-05-01
   132  //   - resourceGroupName - The name of the resource group.
   133  //   - virtualNetworkGatewayConnectionName - The name of the virtual network gateway connection.
   134  //   - options - VirtualNetworkGatewayConnectionsClientBeginDeleteOptions contains the optional parameters for the VirtualNetworkGatewayConnectionsClient.BeginDelete
   135  //     method.
   136  func (client *VirtualNetworkGatewayConnectionsClient) BeginDelete(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientBeginDeleteOptions) (*runtime.Poller[VirtualNetworkGatewayConnectionsClientDeleteResponse], error) {
   137  	if options == nil || options.ResumeToken == "" {
   138  		resp, err := client.deleteOperation(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
   139  		if err != nil {
   140  			return nil, err
   141  		}
   142  		poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualNetworkGatewayConnectionsClientDeleteResponse]{
   143  			FinalStateVia: runtime.FinalStateViaLocation,
   144  			Tracer:        client.internal.Tracer(),
   145  		})
   146  		return poller, err
   147  	} else {
   148  		return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualNetworkGatewayConnectionsClientDeleteResponse]{
   149  			Tracer: client.internal.Tracer(),
   150  		})
   151  	}
   152  }
   153  
   154  // Delete - Deletes the specified virtual network Gateway connection.
   155  // If the operation fails it returns an *azcore.ResponseError type.
   156  //
   157  // Generated from API version 2024-05-01
   158  func (client *VirtualNetworkGatewayConnectionsClient) deleteOperation(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientBeginDeleteOptions) (*http.Response, error) {
   159  	var err error
   160  	const operationName = "VirtualNetworkGatewayConnectionsClient.BeginDelete"
   161  	ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
   162  	ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
   163  	defer func() { endSpan(err) }()
   164  	req, err := client.deleteCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
   165  	if err != nil {
   166  		return nil, err
   167  	}
   168  	httpResp, err := client.internal.Pipeline().Do(req)
   169  	if err != nil {
   170  		return nil, err
   171  	}
   172  	if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) {
   173  		err = runtime.NewResponseError(httpResp)
   174  		return nil, err
   175  	}
   176  	return httpResp, nil
   177  }
   178  
   179  // deleteCreateRequest creates the Delete request.
   180  func (client *VirtualNetworkGatewayConnectionsClient) deleteCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientBeginDeleteOptions) (*policy.Request, error) {
   181  	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"
   182  	if resourceGroupName == "" {
   183  		return nil, errors.New("parameter resourceGroupName cannot be empty")
   184  	}
   185  	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
   186  	if virtualNetworkGatewayConnectionName == "" {
   187  		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
   188  	}
   189  	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
   190  	if client.subscriptionID == "" {
   191  		return nil, errors.New("parameter client.subscriptionID cannot be empty")
   192  	}
   193  	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
   194  	req, err := runtime.NewRequest(ctx, http.MethodDelete, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
   195  	if err != nil {
   196  		return nil, err
   197  	}
   198  	reqQP := req.Raw().URL.Query()
   199  	reqQP.Set("api-version", "2024-05-01")
   200  	req.Raw().URL.RawQuery = reqQP.Encode()
   201  	req.Raw().Header["Accept"] = []string{"application/json"}
   202  	return req, nil
   203  }
   204  
   205  // Get - Gets the specified virtual network gateway connection by resource group.
   206  // If the operation fails it returns an *azcore.ResponseError type.
   207  //
   208  // Generated from API version 2024-05-01
   209  //   - resourceGroupName - The name of the resource group.
   210  //   - virtualNetworkGatewayConnectionName - The name of the virtual network gateway connection.
   211  //   - options - VirtualNetworkGatewayConnectionsClientGetOptions contains the optional parameters for the VirtualNetworkGatewayConnectionsClient.Get
   212  //     method.
   213  func (client *VirtualNetworkGatewayConnectionsClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientGetOptions) (VirtualNetworkGatewayConnectionsClientGetResponse, error) {
   214  	var err error
   215  	const operationName = "VirtualNetworkGatewayConnectionsClient.Get"
   216  	ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
   217  	ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
   218  	defer func() { endSpan(err) }()
   219  	req, err := client.getCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
   220  	if err != nil {
   221  		return VirtualNetworkGatewayConnectionsClientGetResponse{}, err
   222  	}
   223  	httpResp, err := client.internal.Pipeline().Do(req)
   224  	if err != nil {
   225  		return VirtualNetworkGatewayConnectionsClientGetResponse{}, err
   226  	}
   227  	if !runtime.HasStatusCode(httpResp, http.StatusOK) {
   228  		err = runtime.NewResponseError(httpResp)
   229  		return VirtualNetworkGatewayConnectionsClientGetResponse{}, err
   230  	}
   231  	resp, err := client.getHandleResponse(httpResp)
   232  	return resp, err
   233  }
   234  
   235  // getCreateRequest creates the Get request.
   236  func (client *VirtualNetworkGatewayConnectionsClient) getCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientGetOptions) (*policy.Request, error) {
   237  	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"
   238  	if resourceGroupName == "" {
   239  		return nil, errors.New("parameter resourceGroupName cannot be empty")
   240  	}
   241  	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
   242  	if virtualNetworkGatewayConnectionName == "" {
   243  		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
   244  	}
   245  	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
   246  	if client.subscriptionID == "" {
   247  		return nil, errors.New("parameter client.subscriptionID cannot be empty")
   248  	}
   249  	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
   250  	req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
   251  	if err != nil {
   252  		return nil, err
   253  	}
   254  	reqQP := req.Raw().URL.Query()
   255  	reqQP.Set("api-version", "2024-05-01")
   256  	req.Raw().URL.RawQuery = reqQP.Encode()
   257  	req.Raw().Header["Accept"] = []string{"application/json"}
   258  	return req, nil
   259  }
   260  
   261  // getHandleResponse handles the Get response.
   262  func (client *VirtualNetworkGatewayConnectionsClient) getHandleResponse(resp *http.Response) (VirtualNetworkGatewayConnectionsClientGetResponse, error) {
   263  	result := VirtualNetworkGatewayConnectionsClientGetResponse{}
   264  	if err := runtime.UnmarshalAsJSON(resp, &result.VirtualNetworkGatewayConnection); err != nil {
   265  		return VirtualNetworkGatewayConnectionsClientGetResponse{}, err
   266  	}
   267  	return result, nil
   268  }
   269  
   270  // BeginGetIkeSas - Lists IKE Security Associations for the virtual network gateway connection in the specified resource group.
   271  // If the operation fails it returns an *azcore.ResponseError type.
   272  //
   273  // Generated from API version 2024-05-01
   274  //   - resourceGroupName - The name of the resource group.
   275  //   - virtualNetworkGatewayConnectionName - The name of the virtual network gateway Connection.
   276  //   - options - VirtualNetworkGatewayConnectionsClientBeginGetIkeSasOptions contains the optional parameters for the VirtualNetworkGatewayConnectionsClient.BeginGetIkeSas
   277  //     method.
   278  func (client *VirtualNetworkGatewayConnectionsClient) BeginGetIkeSas(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientBeginGetIkeSasOptions) (*runtime.Poller[VirtualNetworkGatewayConnectionsClientGetIkeSasResponse], error) {
   279  	if options == nil || options.ResumeToken == "" {
   280  		resp, err := client.getIkeSas(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
   281  		if err != nil {
   282  			return nil, err
   283  		}
   284  		poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualNetworkGatewayConnectionsClientGetIkeSasResponse]{
   285  			FinalStateVia: runtime.FinalStateViaLocation,
   286  			Tracer:        client.internal.Tracer(),
   287  		})
   288  		return poller, err
   289  	} else {
   290  		return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualNetworkGatewayConnectionsClientGetIkeSasResponse]{
   291  			Tracer: client.internal.Tracer(),
   292  		})
   293  	}
   294  }
   295  
   296  // GetIkeSas - Lists IKE Security Associations for the virtual network gateway connection in the specified resource group.
   297  // If the operation fails it returns an *azcore.ResponseError type.
   298  //
   299  // Generated from API version 2024-05-01
   300  func (client *VirtualNetworkGatewayConnectionsClient) getIkeSas(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientBeginGetIkeSasOptions) (*http.Response, error) {
   301  	var err error
   302  	const operationName = "VirtualNetworkGatewayConnectionsClient.BeginGetIkeSas"
   303  	ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
   304  	ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
   305  	defer func() { endSpan(err) }()
   306  	req, err := client.getIkeSasCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
   307  	if err != nil {
   308  		return nil, err
   309  	}
   310  	httpResp, err := client.internal.Pipeline().Do(req)
   311  	if err != nil {
   312  		return nil, err
   313  	}
   314  	if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) {
   315  		err = runtime.NewResponseError(httpResp)
   316  		return nil, err
   317  	}
   318  	return httpResp, nil
   319  }
   320  
   321  // getIkeSasCreateRequest creates the GetIkeSas request.
   322  func (client *VirtualNetworkGatewayConnectionsClient) getIkeSasCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientBeginGetIkeSasOptions) (*policy.Request, error) {
   323  	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/getikesas"
   324  	if resourceGroupName == "" {
   325  		return nil, errors.New("parameter resourceGroupName cannot be empty")
   326  	}
   327  	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
   328  	if virtualNetworkGatewayConnectionName == "" {
   329  		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
   330  	}
   331  	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
   332  	if client.subscriptionID == "" {
   333  		return nil, errors.New("parameter client.subscriptionID cannot be empty")
   334  	}
   335  	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
   336  	req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
   337  	if err != nil {
   338  		return nil, err
   339  	}
   340  	reqQP := req.Raw().URL.Query()
   341  	reqQP.Set("api-version", "2024-05-01")
   342  	req.Raw().URL.RawQuery = reqQP.Encode()
   343  	req.Raw().Header["Accept"] = []string{"application/json"}
   344  	return req, nil
   345  }
   346  
   347  // GetSharedKey - The Get VirtualNetworkGatewayConnectionSharedKey operation retrieves information about the specified virtual
   348  // network gateway connection shared key through Network resource provider.
   349  // If the operation fails it returns an *azcore.ResponseError type.
   350  //
   351  // Generated from API version 2024-05-01
   352  //   - resourceGroupName - The name of the resource group.
   353  //   - virtualNetworkGatewayConnectionName - The virtual network gateway connection shared key name.
   354  //   - options - VirtualNetworkGatewayConnectionsClientGetSharedKeyOptions contains the optional parameters for the VirtualNetworkGatewayConnectionsClient.GetSharedKey
   355  //     method.
   356  func (client *VirtualNetworkGatewayConnectionsClient) GetSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientGetSharedKeyOptions) (VirtualNetworkGatewayConnectionsClientGetSharedKeyResponse, error) {
   357  	var err error
   358  	const operationName = "VirtualNetworkGatewayConnectionsClient.GetSharedKey"
   359  	ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
   360  	ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
   361  	defer func() { endSpan(err) }()
   362  	req, err := client.getSharedKeyCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
   363  	if err != nil {
   364  		return VirtualNetworkGatewayConnectionsClientGetSharedKeyResponse{}, err
   365  	}
   366  	httpResp, err := client.internal.Pipeline().Do(req)
   367  	if err != nil {
   368  		return VirtualNetworkGatewayConnectionsClientGetSharedKeyResponse{}, err
   369  	}
   370  	if !runtime.HasStatusCode(httpResp, http.StatusOK) {
   371  		err = runtime.NewResponseError(httpResp)
   372  		return VirtualNetworkGatewayConnectionsClientGetSharedKeyResponse{}, err
   373  	}
   374  	resp, err := client.getSharedKeyHandleResponse(httpResp)
   375  	return resp, err
   376  }
   377  
   378  // getSharedKeyCreateRequest creates the GetSharedKey request.
   379  func (client *VirtualNetworkGatewayConnectionsClient) getSharedKeyCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientGetSharedKeyOptions) (*policy.Request, error) {
   380  	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey"
   381  	if resourceGroupName == "" {
   382  		return nil, errors.New("parameter resourceGroupName cannot be empty")
   383  	}
   384  	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
   385  	if virtualNetworkGatewayConnectionName == "" {
   386  		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
   387  	}
   388  	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
   389  	if client.subscriptionID == "" {
   390  		return nil, errors.New("parameter client.subscriptionID cannot be empty")
   391  	}
   392  	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
   393  	req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
   394  	if err != nil {
   395  		return nil, err
   396  	}
   397  	reqQP := req.Raw().URL.Query()
   398  	reqQP.Set("api-version", "2024-05-01")
   399  	req.Raw().URL.RawQuery = reqQP.Encode()
   400  	req.Raw().Header["Accept"] = []string{"application/json"}
   401  	return req, nil
   402  }
   403  
   404  // getSharedKeyHandleResponse handles the GetSharedKey response.
   405  func (client *VirtualNetworkGatewayConnectionsClient) getSharedKeyHandleResponse(resp *http.Response) (VirtualNetworkGatewayConnectionsClientGetSharedKeyResponse, error) {
   406  	result := VirtualNetworkGatewayConnectionsClientGetSharedKeyResponse{}
   407  	if err := runtime.UnmarshalAsJSON(resp, &result.ConnectionSharedKey); err != nil {
   408  		return VirtualNetworkGatewayConnectionsClientGetSharedKeyResponse{}, err
   409  	}
   410  	return result, nil
   411  }
   412  
   413  // NewListPager - The List VirtualNetworkGatewayConnections operation retrieves all the virtual network gateways connections
   414  // created.
   415  //
   416  // Generated from API version 2024-05-01
   417  //   - resourceGroupName - The name of the resource group.
   418  //   - options - VirtualNetworkGatewayConnectionsClientListOptions contains the optional parameters for the VirtualNetworkGatewayConnectionsClient.NewListPager
   419  //     method.
   420  func (client *VirtualNetworkGatewayConnectionsClient) NewListPager(resourceGroupName string, options *VirtualNetworkGatewayConnectionsClientListOptions) *runtime.Pager[VirtualNetworkGatewayConnectionsClientListResponse] {
   421  	return runtime.NewPager(runtime.PagingHandler[VirtualNetworkGatewayConnectionsClientListResponse]{
   422  		More: func(page VirtualNetworkGatewayConnectionsClientListResponse) bool {
   423  			return page.NextLink != nil && len(*page.NextLink) > 0
   424  		},
   425  		Fetcher: func(ctx context.Context, page *VirtualNetworkGatewayConnectionsClientListResponse) (VirtualNetworkGatewayConnectionsClientListResponse, error) {
   426  			ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "VirtualNetworkGatewayConnectionsClient.NewListPager")
   427  			nextLink := ""
   428  			if page != nil {
   429  				nextLink = *page.NextLink
   430  			}
   431  			resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) {
   432  				return client.listCreateRequest(ctx, resourceGroupName, options)
   433  			}, nil)
   434  			if err != nil {
   435  				return VirtualNetworkGatewayConnectionsClientListResponse{}, err
   436  			}
   437  			return client.listHandleResponse(resp)
   438  		},
   439  		Tracer: client.internal.Tracer(),
   440  	})
   441  }
   442  
   443  // listCreateRequest creates the List request.
   444  func (client *VirtualNetworkGatewayConnectionsClient) listCreateRequest(ctx context.Context, resourceGroupName string, options *VirtualNetworkGatewayConnectionsClientListOptions) (*policy.Request, error) {
   445  	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections"
   446  	if resourceGroupName == "" {
   447  		return nil, errors.New("parameter resourceGroupName cannot be empty")
   448  	}
   449  	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
   450  	if client.subscriptionID == "" {
   451  		return nil, errors.New("parameter client.subscriptionID cannot be empty")
   452  	}
   453  	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
   454  	req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
   455  	if err != nil {
   456  		return nil, err
   457  	}
   458  	reqQP := req.Raw().URL.Query()
   459  	reqQP.Set("api-version", "2024-05-01")
   460  	req.Raw().URL.RawQuery = reqQP.Encode()
   461  	req.Raw().Header["Accept"] = []string{"application/json"}
   462  	return req, nil
   463  }
   464  
   465  // listHandleResponse handles the List response.
   466  func (client *VirtualNetworkGatewayConnectionsClient) listHandleResponse(resp *http.Response) (VirtualNetworkGatewayConnectionsClientListResponse, error) {
   467  	result := VirtualNetworkGatewayConnectionsClientListResponse{}
   468  	if err := runtime.UnmarshalAsJSON(resp, &result.VirtualNetworkGatewayConnectionListResult); err != nil {
   469  		return VirtualNetworkGatewayConnectionsClientListResponse{}, err
   470  	}
   471  	return result, nil
   472  }
   473  
   474  // BeginResetConnection - Resets the virtual network gateway connection specified.
   475  // If the operation fails it returns an *azcore.ResponseError type.
   476  //
   477  // Generated from API version 2024-05-01
   478  //   - resourceGroupName - The name of the resource group.
   479  //   - virtualNetworkGatewayConnectionName - The name of the virtual network gateway Connection.
   480  //   - options - VirtualNetworkGatewayConnectionsClientBeginResetConnectionOptions contains the optional parameters for the VirtualNetworkGatewayConnectionsClient.BeginResetConnection
   481  //     method.
   482  func (client *VirtualNetworkGatewayConnectionsClient) BeginResetConnection(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientBeginResetConnectionOptions) (*runtime.Poller[VirtualNetworkGatewayConnectionsClientResetConnectionResponse], error) {
   483  	if options == nil || options.ResumeToken == "" {
   484  		resp, err := client.resetConnection(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
   485  		if err != nil {
   486  			return nil, err
   487  		}
   488  		poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualNetworkGatewayConnectionsClientResetConnectionResponse]{
   489  			FinalStateVia: runtime.FinalStateViaLocation,
   490  			Tracer:        client.internal.Tracer(),
   491  		})
   492  		return poller, err
   493  	} else {
   494  		return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualNetworkGatewayConnectionsClientResetConnectionResponse]{
   495  			Tracer: client.internal.Tracer(),
   496  		})
   497  	}
   498  }
   499  
   500  // ResetConnection - Resets the virtual network gateway connection specified.
   501  // If the operation fails it returns an *azcore.ResponseError type.
   502  //
   503  // Generated from API version 2024-05-01
   504  func (client *VirtualNetworkGatewayConnectionsClient) resetConnection(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientBeginResetConnectionOptions) (*http.Response, error) {
   505  	var err error
   506  	const operationName = "VirtualNetworkGatewayConnectionsClient.BeginResetConnection"
   507  	ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
   508  	ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
   509  	defer func() { endSpan(err) }()
   510  	req, err := client.resetConnectionCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
   511  	if err != nil {
   512  		return nil, err
   513  	}
   514  	httpResp, err := client.internal.Pipeline().Do(req)
   515  	if err != nil {
   516  		return nil, err
   517  	}
   518  	if !runtime.HasStatusCode(httpResp, http.StatusAccepted) {
   519  		err = runtime.NewResponseError(httpResp)
   520  		return nil, err
   521  	}
   522  	return httpResp, nil
   523  }
   524  
   525  // resetConnectionCreateRequest creates the ResetConnection request.
   526  func (client *VirtualNetworkGatewayConnectionsClient) resetConnectionCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientBeginResetConnectionOptions) (*policy.Request, error) {
   527  	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/resetconnection"
   528  	if resourceGroupName == "" {
   529  		return nil, errors.New("parameter resourceGroupName cannot be empty")
   530  	}
   531  	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
   532  	if virtualNetworkGatewayConnectionName == "" {
   533  		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
   534  	}
   535  	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
   536  	if client.subscriptionID == "" {
   537  		return nil, errors.New("parameter client.subscriptionID cannot be empty")
   538  	}
   539  	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
   540  	req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
   541  	if err != nil {
   542  		return nil, err
   543  	}
   544  	reqQP := req.Raw().URL.Query()
   545  	reqQP.Set("api-version", "2024-05-01")
   546  	req.Raw().URL.RawQuery = reqQP.Encode()
   547  	req.Raw().Header["Accept"] = []string{"application/json"}
   548  	return req, nil
   549  }
   550  
   551  // BeginResetSharedKey - The VirtualNetworkGatewayConnectionResetSharedKey operation resets the virtual network gateway connection
   552  // shared key for passed virtual network gateway connection in the specified resource group
   553  // through Network resource provider.
   554  // If the operation fails it returns an *azcore.ResponseError type.
   555  //
   556  // Generated from API version 2024-05-01
   557  //   - resourceGroupName - The name of the resource group.
   558  //   - virtualNetworkGatewayConnectionName - The virtual network gateway connection reset shared key Name.
   559  //   - parameters - Parameters supplied to the begin reset virtual network gateway connection shared key operation through network
   560  //     resource provider.
   561  //   - options - VirtualNetworkGatewayConnectionsClientBeginResetSharedKeyOptions contains the optional parameters for the VirtualNetworkGatewayConnectionsClient.BeginResetSharedKey
   562  //     method.
   563  func (client *VirtualNetworkGatewayConnectionsClient) BeginResetSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionResetSharedKey, options *VirtualNetworkGatewayConnectionsClientBeginResetSharedKeyOptions) (*runtime.Poller[VirtualNetworkGatewayConnectionsClientResetSharedKeyResponse], error) {
   564  	if options == nil || options.ResumeToken == "" {
   565  		resp, err := client.resetSharedKey(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
   566  		if err != nil {
   567  			return nil, err
   568  		}
   569  		poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualNetworkGatewayConnectionsClientResetSharedKeyResponse]{
   570  			FinalStateVia: runtime.FinalStateViaLocation,
   571  			Tracer:        client.internal.Tracer(),
   572  		})
   573  		return poller, err
   574  	} else {
   575  		return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualNetworkGatewayConnectionsClientResetSharedKeyResponse]{
   576  			Tracer: client.internal.Tracer(),
   577  		})
   578  	}
   579  }
   580  
   581  // ResetSharedKey - The VirtualNetworkGatewayConnectionResetSharedKey operation resets the virtual network gateway connection
   582  // shared key for passed virtual network gateway connection in the specified resource group
   583  // through Network resource provider.
   584  // If the operation fails it returns an *azcore.ResponseError type.
   585  //
   586  // Generated from API version 2024-05-01
   587  func (client *VirtualNetworkGatewayConnectionsClient) resetSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionResetSharedKey, options *VirtualNetworkGatewayConnectionsClientBeginResetSharedKeyOptions) (*http.Response, error) {
   588  	var err error
   589  	const operationName = "VirtualNetworkGatewayConnectionsClient.BeginResetSharedKey"
   590  	ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
   591  	ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
   592  	defer func() { endSpan(err) }()
   593  	req, err := client.resetSharedKeyCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
   594  	if err != nil {
   595  		return nil, err
   596  	}
   597  	httpResp, err := client.internal.Pipeline().Do(req)
   598  	if err != nil {
   599  		return nil, err
   600  	}
   601  	if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) {
   602  		err = runtime.NewResponseError(httpResp)
   603  		return nil, err
   604  	}
   605  	return httpResp, nil
   606  }
   607  
   608  // resetSharedKeyCreateRequest creates the ResetSharedKey request.
   609  func (client *VirtualNetworkGatewayConnectionsClient) resetSharedKeyCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionResetSharedKey, options *VirtualNetworkGatewayConnectionsClientBeginResetSharedKeyOptions) (*policy.Request, error) {
   610  	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey/reset"
   611  	if resourceGroupName == "" {
   612  		return nil, errors.New("parameter resourceGroupName cannot be empty")
   613  	}
   614  	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
   615  	if virtualNetworkGatewayConnectionName == "" {
   616  		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
   617  	}
   618  	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
   619  	if client.subscriptionID == "" {
   620  		return nil, errors.New("parameter client.subscriptionID cannot be empty")
   621  	}
   622  	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
   623  	req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
   624  	if err != nil {
   625  		return nil, err
   626  	}
   627  	reqQP := req.Raw().URL.Query()
   628  	reqQP.Set("api-version", "2024-05-01")
   629  	req.Raw().URL.RawQuery = reqQP.Encode()
   630  	req.Raw().Header["Accept"] = []string{"application/json"}
   631  	if err := runtime.MarshalAsJSON(req, parameters); err != nil {
   632  		return nil, err
   633  	}
   634  	return req, nil
   635  }
   636  
   637  // BeginSetSharedKey - The Put VirtualNetworkGatewayConnectionSharedKey operation sets the virtual network gateway connection
   638  // shared key for passed virtual network gateway connection in the specified resource group through
   639  // Network resource provider.
   640  // If the operation fails it returns an *azcore.ResponseError type.
   641  //
   642  // Generated from API version 2024-05-01
   643  //   - resourceGroupName - The name of the resource group.
   644  //   - virtualNetworkGatewayConnectionName - The virtual network gateway connection name.
   645  //   - parameters - Parameters supplied to the Begin Set Virtual Network Gateway connection Shared key operation throughNetwork
   646  //     resource provider.
   647  //   - options - VirtualNetworkGatewayConnectionsClientBeginSetSharedKeyOptions contains the optional parameters for the VirtualNetworkGatewayConnectionsClient.BeginSetSharedKey
   648  //     method.
   649  func (client *VirtualNetworkGatewayConnectionsClient) BeginSetSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionSharedKey, options *VirtualNetworkGatewayConnectionsClientBeginSetSharedKeyOptions) (*runtime.Poller[VirtualNetworkGatewayConnectionsClientSetSharedKeyResponse], error) {
   650  	if options == nil || options.ResumeToken == "" {
   651  		resp, err := client.setSharedKey(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
   652  		if err != nil {
   653  			return nil, err
   654  		}
   655  		poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualNetworkGatewayConnectionsClientSetSharedKeyResponse]{
   656  			FinalStateVia: runtime.FinalStateViaAzureAsyncOp,
   657  			Tracer:        client.internal.Tracer(),
   658  		})
   659  		return poller, err
   660  	} else {
   661  		return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualNetworkGatewayConnectionsClientSetSharedKeyResponse]{
   662  			Tracer: client.internal.Tracer(),
   663  		})
   664  	}
   665  }
   666  
   667  // SetSharedKey - The Put VirtualNetworkGatewayConnectionSharedKey operation sets the virtual network gateway connection shared
   668  // key for passed virtual network gateway connection in the specified resource group through
   669  // Network resource provider.
   670  // If the operation fails it returns an *azcore.ResponseError type.
   671  //
   672  // Generated from API version 2024-05-01
   673  func (client *VirtualNetworkGatewayConnectionsClient) setSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionSharedKey, options *VirtualNetworkGatewayConnectionsClientBeginSetSharedKeyOptions) (*http.Response, error) {
   674  	var err error
   675  	const operationName = "VirtualNetworkGatewayConnectionsClient.BeginSetSharedKey"
   676  	ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
   677  	ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
   678  	defer func() { endSpan(err) }()
   679  	req, err := client.setSharedKeyCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
   680  	if err != nil {
   681  		return nil, err
   682  	}
   683  	httpResp, err := client.internal.Pipeline().Do(req)
   684  	if err != nil {
   685  		return nil, err
   686  	}
   687  	if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) {
   688  		err = runtime.NewResponseError(httpResp)
   689  		return nil, err
   690  	}
   691  	return httpResp, nil
   692  }
   693  
   694  // setSharedKeyCreateRequest creates the SetSharedKey request.
   695  func (client *VirtualNetworkGatewayConnectionsClient) setSharedKeyCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionSharedKey, options *VirtualNetworkGatewayConnectionsClientBeginSetSharedKeyOptions) (*policy.Request, error) {
   696  	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey"
   697  	if resourceGroupName == "" {
   698  		return nil, errors.New("parameter resourceGroupName cannot be empty")
   699  	}
   700  	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
   701  	if virtualNetworkGatewayConnectionName == "" {
   702  		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
   703  	}
   704  	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
   705  	if client.subscriptionID == "" {
   706  		return nil, errors.New("parameter client.subscriptionID cannot be empty")
   707  	}
   708  	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
   709  	req, err := runtime.NewRequest(ctx, http.MethodPut, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
   710  	if err != nil {
   711  		return nil, err
   712  	}
   713  	reqQP := req.Raw().URL.Query()
   714  	reqQP.Set("api-version", "2024-05-01")
   715  	req.Raw().URL.RawQuery = reqQP.Encode()
   716  	req.Raw().Header["Accept"] = []string{"application/json"}
   717  	if err := runtime.MarshalAsJSON(req, parameters); err != nil {
   718  		return nil, err
   719  	}
   720  	return req, nil
   721  }
   722  
   723  // BeginStartPacketCapture - Starts packet capture on virtual network gateway connection in the specified resource group.
   724  // If the operation fails it returns an *azcore.ResponseError type.
   725  //
   726  // Generated from API version 2024-05-01
   727  //   - resourceGroupName - The name of the resource group.
   728  //   - virtualNetworkGatewayConnectionName - The name of the virtual network gateway connection.
   729  //   - options - VirtualNetworkGatewayConnectionsClientBeginStartPacketCaptureOptions contains the optional parameters for the
   730  //     VirtualNetworkGatewayConnectionsClient.BeginStartPacketCapture method.
   731  func (client *VirtualNetworkGatewayConnectionsClient) BeginStartPacketCapture(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientBeginStartPacketCaptureOptions) (*runtime.Poller[VirtualNetworkGatewayConnectionsClientStartPacketCaptureResponse], error) {
   732  	if options == nil || options.ResumeToken == "" {
   733  		resp, err := client.startPacketCapture(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
   734  		if err != nil {
   735  			return nil, err
   736  		}
   737  		poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualNetworkGatewayConnectionsClientStartPacketCaptureResponse]{
   738  			FinalStateVia: runtime.FinalStateViaLocation,
   739  			Tracer:        client.internal.Tracer(),
   740  		})
   741  		return poller, err
   742  	} else {
   743  		return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualNetworkGatewayConnectionsClientStartPacketCaptureResponse]{
   744  			Tracer: client.internal.Tracer(),
   745  		})
   746  	}
   747  }
   748  
   749  // StartPacketCapture - Starts packet capture on virtual network gateway connection in the specified resource group.
   750  // If the operation fails it returns an *azcore.ResponseError type.
   751  //
   752  // Generated from API version 2024-05-01
   753  func (client *VirtualNetworkGatewayConnectionsClient) startPacketCapture(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientBeginStartPacketCaptureOptions) (*http.Response, error) {
   754  	var err error
   755  	const operationName = "VirtualNetworkGatewayConnectionsClient.BeginStartPacketCapture"
   756  	ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
   757  	ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
   758  	defer func() { endSpan(err) }()
   759  	req, err := client.startPacketCaptureCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, options)
   760  	if err != nil {
   761  		return nil, err
   762  	}
   763  	httpResp, err := client.internal.Pipeline().Do(req)
   764  	if err != nil {
   765  		return nil, err
   766  	}
   767  	if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) {
   768  		err = runtime.NewResponseError(httpResp)
   769  		return nil, err
   770  	}
   771  	return httpResp, nil
   772  }
   773  
   774  // startPacketCaptureCreateRequest creates the StartPacketCapture request.
   775  func (client *VirtualNetworkGatewayConnectionsClient) startPacketCaptureCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, options *VirtualNetworkGatewayConnectionsClientBeginStartPacketCaptureOptions) (*policy.Request, error) {
   776  	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/startPacketCapture"
   777  	if resourceGroupName == "" {
   778  		return nil, errors.New("parameter resourceGroupName cannot be empty")
   779  	}
   780  	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
   781  	if virtualNetworkGatewayConnectionName == "" {
   782  		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
   783  	}
   784  	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
   785  	if client.subscriptionID == "" {
   786  		return nil, errors.New("parameter client.subscriptionID cannot be empty")
   787  	}
   788  	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
   789  	req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
   790  	if err != nil {
   791  		return nil, err
   792  	}
   793  	reqQP := req.Raw().URL.Query()
   794  	reqQP.Set("api-version", "2024-05-01")
   795  	req.Raw().URL.RawQuery = reqQP.Encode()
   796  	req.Raw().Header["Accept"] = []string{"application/json"}
   797  	if options != nil && options.Parameters != nil {
   798  		if err := runtime.MarshalAsJSON(req, *options.Parameters); err != nil {
   799  			return nil, err
   800  		}
   801  		return req, nil
   802  	}
   803  	return req, nil
   804  }
   805  
   806  // BeginStopPacketCapture - Stops packet capture on virtual network gateway connection in the specified resource group.
   807  // If the operation fails it returns an *azcore.ResponseError type.
   808  //
   809  // Generated from API version 2024-05-01
   810  //   - resourceGroupName - The name of the resource group.
   811  //   - virtualNetworkGatewayConnectionName - The name of the virtual network gateway Connection.
   812  //   - parameters - Virtual network gateway packet capture parameters supplied to stop packet capture on gateway connection.
   813  //   - options - VirtualNetworkGatewayConnectionsClientBeginStopPacketCaptureOptions contains the optional parameters for the
   814  //     VirtualNetworkGatewayConnectionsClient.BeginStopPacketCapture method.
   815  func (client *VirtualNetworkGatewayConnectionsClient) BeginStopPacketCapture(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VPNPacketCaptureStopParameters, options *VirtualNetworkGatewayConnectionsClientBeginStopPacketCaptureOptions) (*runtime.Poller[VirtualNetworkGatewayConnectionsClientStopPacketCaptureResponse], error) {
   816  	if options == nil || options.ResumeToken == "" {
   817  		resp, err := client.stopPacketCapture(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
   818  		if err != nil {
   819  			return nil, err
   820  		}
   821  		poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualNetworkGatewayConnectionsClientStopPacketCaptureResponse]{
   822  			FinalStateVia: runtime.FinalStateViaLocation,
   823  			Tracer:        client.internal.Tracer(),
   824  		})
   825  		return poller, err
   826  	} else {
   827  		return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualNetworkGatewayConnectionsClientStopPacketCaptureResponse]{
   828  			Tracer: client.internal.Tracer(),
   829  		})
   830  	}
   831  }
   832  
   833  // StopPacketCapture - Stops packet capture on virtual network gateway connection in the specified resource group.
   834  // If the operation fails it returns an *azcore.ResponseError type.
   835  //
   836  // Generated from API version 2024-05-01
   837  func (client *VirtualNetworkGatewayConnectionsClient) stopPacketCapture(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VPNPacketCaptureStopParameters, options *VirtualNetworkGatewayConnectionsClientBeginStopPacketCaptureOptions) (*http.Response, error) {
   838  	var err error
   839  	const operationName = "VirtualNetworkGatewayConnectionsClient.BeginStopPacketCapture"
   840  	ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
   841  	ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
   842  	defer func() { endSpan(err) }()
   843  	req, err := client.stopPacketCaptureCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
   844  	if err != nil {
   845  		return nil, err
   846  	}
   847  	httpResp, err := client.internal.Pipeline().Do(req)
   848  	if err != nil {
   849  		return nil, err
   850  	}
   851  	if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) {
   852  		err = runtime.NewResponseError(httpResp)
   853  		return nil, err
   854  	}
   855  	return httpResp, nil
   856  }
   857  
   858  // stopPacketCaptureCreateRequest creates the StopPacketCapture request.
   859  func (client *VirtualNetworkGatewayConnectionsClient) stopPacketCaptureCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VPNPacketCaptureStopParameters, options *VirtualNetworkGatewayConnectionsClientBeginStopPacketCaptureOptions) (*policy.Request, error) {
   860  	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/stopPacketCapture"
   861  	if resourceGroupName == "" {
   862  		return nil, errors.New("parameter resourceGroupName cannot be empty")
   863  	}
   864  	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
   865  	if virtualNetworkGatewayConnectionName == "" {
   866  		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
   867  	}
   868  	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
   869  	if client.subscriptionID == "" {
   870  		return nil, errors.New("parameter client.subscriptionID cannot be empty")
   871  	}
   872  	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
   873  	req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
   874  	if err != nil {
   875  		return nil, err
   876  	}
   877  	reqQP := req.Raw().URL.Query()
   878  	reqQP.Set("api-version", "2024-05-01")
   879  	req.Raw().URL.RawQuery = reqQP.Encode()
   880  	req.Raw().Header["Accept"] = []string{"application/json"}
   881  	if err := runtime.MarshalAsJSON(req, parameters); err != nil {
   882  		return nil, err
   883  	}
   884  	return req, nil
   885  }
   886  
   887  // BeginUpdateTags - Updates a virtual network gateway connection tags.
   888  // If the operation fails it returns an *azcore.ResponseError type.
   889  //
   890  // Generated from API version 2024-05-01
   891  //   - resourceGroupName - The name of the resource group.
   892  //   - virtualNetworkGatewayConnectionName - The name of the virtual network gateway connection.
   893  //   - parameters - Parameters supplied to update virtual network gateway connection tags.
   894  //   - options - VirtualNetworkGatewayConnectionsClientBeginUpdateTagsOptions contains the optional parameters for the VirtualNetworkGatewayConnectionsClient.BeginUpdateTags
   895  //     method.
   896  func (client *VirtualNetworkGatewayConnectionsClient) BeginUpdateTags(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters TagsObject, options *VirtualNetworkGatewayConnectionsClientBeginUpdateTagsOptions) (*runtime.Poller[VirtualNetworkGatewayConnectionsClientUpdateTagsResponse], error) {
   897  	if options == nil || options.ResumeToken == "" {
   898  		resp, err := client.updateTags(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
   899  		if err != nil {
   900  			return nil, err
   901  		}
   902  		poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualNetworkGatewayConnectionsClientUpdateTagsResponse]{
   903  			FinalStateVia: runtime.FinalStateViaAzureAsyncOp,
   904  			Tracer:        client.internal.Tracer(),
   905  		})
   906  		return poller, err
   907  	} else {
   908  		return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualNetworkGatewayConnectionsClientUpdateTagsResponse]{
   909  			Tracer: client.internal.Tracer(),
   910  		})
   911  	}
   912  }
   913  
   914  // UpdateTags - Updates a virtual network gateway connection tags.
   915  // If the operation fails it returns an *azcore.ResponseError type.
   916  //
   917  // Generated from API version 2024-05-01
   918  func (client *VirtualNetworkGatewayConnectionsClient) updateTags(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters TagsObject, options *VirtualNetworkGatewayConnectionsClientBeginUpdateTagsOptions) (*http.Response, error) {
   919  	var err error
   920  	const operationName = "VirtualNetworkGatewayConnectionsClient.BeginUpdateTags"
   921  	ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
   922  	ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
   923  	defer func() { endSpan(err) }()
   924  	req, err := client.updateTagsCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters, options)
   925  	if err != nil {
   926  		return nil, err
   927  	}
   928  	httpResp, err := client.internal.Pipeline().Do(req)
   929  	if err != nil {
   930  		return nil, err
   931  	}
   932  	if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) {
   933  		err = runtime.NewResponseError(httpResp)
   934  		return nil, err
   935  	}
   936  	return httpResp, nil
   937  }
   938  
   939  // updateTagsCreateRequest creates the UpdateTags request.
   940  func (client *VirtualNetworkGatewayConnectionsClient) updateTagsCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters TagsObject, options *VirtualNetworkGatewayConnectionsClientBeginUpdateTagsOptions) (*policy.Request, error) {
   941  	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"
   942  	if resourceGroupName == "" {
   943  		return nil, errors.New("parameter resourceGroupName cannot be empty")
   944  	}
   945  	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
   946  	if virtualNetworkGatewayConnectionName == "" {
   947  		return nil, errors.New("parameter virtualNetworkGatewayConnectionName cannot be empty")
   948  	}
   949  	urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayConnectionName}", url.PathEscape(virtualNetworkGatewayConnectionName))
   950  	if client.subscriptionID == "" {
   951  		return nil, errors.New("parameter client.subscriptionID cannot be empty")
   952  	}
   953  	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
   954  	req, err := runtime.NewRequest(ctx, http.MethodPatch, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
   955  	if err != nil {
   956  		return nil, err
   957  	}
   958  	reqQP := req.Raw().URL.Query()
   959  	reqQP.Set("api-version", "2024-05-01")
   960  	req.Raw().URL.RawQuery = reqQP.Encode()
   961  	req.Raw().Header["Accept"] = []string{"application/json"}
   962  	if err := runtime.MarshalAsJSON(req, parameters); err != nil {
   963  		return nil, err
   964  	}
   965  	return req, nil
   966  }