github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6@v6.2.0/virtualnetworkgatewaynatrules_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 // VirtualNetworkGatewayNatRulesClient contains the methods for the VirtualNetworkGatewayNatRules group. 24 // Don't use this type directly, use NewVirtualNetworkGatewayNatRulesClient() instead. 25 type VirtualNetworkGatewayNatRulesClient struct { 26 internal *arm.Client 27 subscriptionID string 28 } 29 30 // NewVirtualNetworkGatewayNatRulesClient creates a new instance of VirtualNetworkGatewayNatRulesClient 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 NewVirtualNetworkGatewayNatRulesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*VirtualNetworkGatewayNatRulesClient, error) { 36 cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) 37 if err != nil { 38 return nil, err 39 } 40 client := &VirtualNetworkGatewayNatRulesClient{ 41 subscriptionID: subscriptionID, 42 internal: cl, 43 } 44 return client, nil 45 } 46 47 // BeginCreateOrUpdate - Creates a nat rule to a scalable virtual network gateway if it doesn't exist else updates the existing 48 // nat rules. 49 // If the operation fails it returns an *azcore.ResponseError type. 50 // 51 // Generated from API version 2024-05-01 52 // - resourceGroupName - The resource group name of the Virtual Network Gateway. 53 // - virtualNetworkGatewayName - The name of the gateway. 54 // - natRuleName - The name of the nat rule. 55 // - natRuleParameters - Parameters supplied to create or Update a Nat Rule. 56 // - options - VirtualNetworkGatewayNatRulesClientBeginCreateOrUpdateOptions contains the optional parameters for the VirtualNetworkGatewayNatRulesClient.BeginCreateOrUpdate 57 // method. 58 func (client *VirtualNetworkGatewayNatRulesClient) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, natRuleName string, natRuleParameters VirtualNetworkGatewayNatRule, options *VirtualNetworkGatewayNatRulesClientBeginCreateOrUpdateOptions) (*runtime.Poller[VirtualNetworkGatewayNatRulesClientCreateOrUpdateResponse], error) { 59 if options == nil || options.ResumeToken == "" { 60 resp, err := client.createOrUpdate(ctx, resourceGroupName, virtualNetworkGatewayName, natRuleName, natRuleParameters, options) 61 if err != nil { 62 return nil, err 63 } 64 poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualNetworkGatewayNatRulesClientCreateOrUpdateResponse]{ 65 FinalStateVia: runtime.FinalStateViaAzureAsyncOp, 66 Tracer: client.internal.Tracer(), 67 }) 68 return poller, err 69 } else { 70 return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualNetworkGatewayNatRulesClientCreateOrUpdateResponse]{ 71 Tracer: client.internal.Tracer(), 72 }) 73 } 74 } 75 76 // CreateOrUpdate - Creates a nat rule to a scalable virtual network gateway if it doesn't exist else updates the existing 77 // nat rules. 78 // If the operation fails it returns an *azcore.ResponseError type. 79 // 80 // Generated from API version 2024-05-01 81 func (client *VirtualNetworkGatewayNatRulesClient) createOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, natRuleName string, natRuleParameters VirtualNetworkGatewayNatRule, options *VirtualNetworkGatewayNatRulesClientBeginCreateOrUpdateOptions) (*http.Response, error) { 82 var err error 83 const operationName = "VirtualNetworkGatewayNatRulesClient.BeginCreateOrUpdate" 84 ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) 85 ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) 86 defer func() { endSpan(err) }() 87 req, err := client.createOrUpdateCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayName, natRuleName, natRuleParameters, options) 88 if err != nil { 89 return nil, err 90 } 91 httpResp, err := client.internal.Pipeline().Do(req) 92 if err != nil { 93 return nil, err 94 } 95 if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { 96 err = runtime.NewResponseError(httpResp) 97 return nil, err 98 } 99 return httpResp, nil 100 } 101 102 // createOrUpdateCreateRequest creates the CreateOrUpdate request. 103 func (client *VirtualNetworkGatewayNatRulesClient) createOrUpdateCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, natRuleName string, natRuleParameters VirtualNetworkGatewayNatRule, options *VirtualNetworkGatewayNatRulesClientBeginCreateOrUpdateOptions) (*policy.Request, error) { 104 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}" 105 if client.subscriptionID == "" { 106 return nil, errors.New("parameter client.subscriptionID cannot be empty") 107 } 108 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 109 if resourceGroupName == "" { 110 return nil, errors.New("parameter resourceGroupName cannot be empty") 111 } 112 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 113 if virtualNetworkGatewayName == "" { 114 return nil, errors.New("parameter virtualNetworkGatewayName cannot be empty") 115 } 116 urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayName}", url.PathEscape(virtualNetworkGatewayName)) 117 if natRuleName == "" { 118 return nil, errors.New("parameter natRuleName cannot be empty") 119 } 120 urlPath = strings.ReplaceAll(urlPath, "{natRuleName}", url.PathEscape(natRuleName)) 121 req, err := runtime.NewRequest(ctx, http.MethodPut, runtime.JoinPaths(client.internal.Endpoint(), urlPath)) 122 if err != nil { 123 return nil, err 124 } 125 reqQP := req.Raw().URL.Query() 126 reqQP.Set("api-version", "2024-05-01") 127 req.Raw().URL.RawQuery = reqQP.Encode() 128 req.Raw().Header["Accept"] = []string{"application/json"} 129 if err := runtime.MarshalAsJSON(req, natRuleParameters); err != nil { 130 return nil, err 131 } 132 return req, nil 133 } 134 135 // BeginDelete - Deletes a nat rule. 136 // If the operation fails it returns an *azcore.ResponseError type. 137 // 138 // Generated from API version 2024-05-01 139 // - resourceGroupName - The resource group name of the Virtual Network Gateway. 140 // - virtualNetworkGatewayName - The name of the gateway. 141 // - natRuleName - The name of the nat rule. 142 // - options - VirtualNetworkGatewayNatRulesClientBeginDeleteOptions contains the optional parameters for the VirtualNetworkGatewayNatRulesClient.BeginDelete 143 // method. 144 func (client *VirtualNetworkGatewayNatRulesClient) BeginDelete(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, natRuleName string, options *VirtualNetworkGatewayNatRulesClientBeginDeleteOptions) (*runtime.Poller[VirtualNetworkGatewayNatRulesClientDeleteResponse], error) { 145 if options == nil || options.ResumeToken == "" { 146 resp, err := client.deleteOperation(ctx, resourceGroupName, virtualNetworkGatewayName, natRuleName, options) 147 if err != nil { 148 return nil, err 149 } 150 poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualNetworkGatewayNatRulesClientDeleteResponse]{ 151 FinalStateVia: runtime.FinalStateViaLocation, 152 Tracer: client.internal.Tracer(), 153 }) 154 return poller, err 155 } else { 156 return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualNetworkGatewayNatRulesClientDeleteResponse]{ 157 Tracer: client.internal.Tracer(), 158 }) 159 } 160 } 161 162 // Delete - Deletes a nat rule. 163 // If the operation fails it returns an *azcore.ResponseError type. 164 // 165 // Generated from API version 2024-05-01 166 func (client *VirtualNetworkGatewayNatRulesClient) deleteOperation(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, natRuleName string, options *VirtualNetworkGatewayNatRulesClientBeginDeleteOptions) (*http.Response, error) { 167 var err error 168 const operationName = "VirtualNetworkGatewayNatRulesClient.BeginDelete" 169 ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) 170 ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) 171 defer func() { endSpan(err) }() 172 req, err := client.deleteCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayName, natRuleName, options) 173 if err != nil { 174 return nil, err 175 } 176 httpResp, err := client.internal.Pipeline().Do(req) 177 if err != nil { 178 return nil, err 179 } 180 if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { 181 err = runtime.NewResponseError(httpResp) 182 return nil, err 183 } 184 return httpResp, nil 185 } 186 187 // deleteCreateRequest creates the Delete request. 188 func (client *VirtualNetworkGatewayNatRulesClient) deleteCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, natRuleName string, options *VirtualNetworkGatewayNatRulesClientBeginDeleteOptions) (*policy.Request, error) { 189 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}" 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 if resourceGroupName == "" { 195 return nil, errors.New("parameter resourceGroupName cannot be empty") 196 } 197 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 198 if virtualNetworkGatewayName == "" { 199 return nil, errors.New("parameter virtualNetworkGatewayName cannot be empty") 200 } 201 urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayName}", url.PathEscape(virtualNetworkGatewayName)) 202 if natRuleName == "" { 203 return nil, errors.New("parameter natRuleName cannot be empty") 204 } 205 urlPath = strings.ReplaceAll(urlPath, "{natRuleName}", url.PathEscape(natRuleName)) 206 req, err := runtime.NewRequest(ctx, http.MethodDelete, runtime.JoinPaths(client.internal.Endpoint(), urlPath)) 207 if err != nil { 208 return nil, err 209 } 210 reqQP := req.Raw().URL.Query() 211 reqQP.Set("api-version", "2024-05-01") 212 req.Raw().URL.RawQuery = reqQP.Encode() 213 req.Raw().Header["Accept"] = []string{"application/json"} 214 return req, nil 215 } 216 217 // Get - Retrieves the details of a nat rule. 218 // If the operation fails it returns an *azcore.ResponseError type. 219 // 220 // Generated from API version 2024-05-01 221 // - resourceGroupName - The resource group name of the Virtual Network Gateway. 222 // - virtualNetworkGatewayName - The name of the gateway. 223 // - natRuleName - The name of the nat rule. 224 // - options - VirtualNetworkGatewayNatRulesClientGetOptions contains the optional parameters for the VirtualNetworkGatewayNatRulesClient.Get 225 // method. 226 func (client *VirtualNetworkGatewayNatRulesClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, natRuleName string, options *VirtualNetworkGatewayNatRulesClientGetOptions) (VirtualNetworkGatewayNatRulesClientGetResponse, error) { 227 var err error 228 const operationName = "VirtualNetworkGatewayNatRulesClient.Get" 229 ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) 230 ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) 231 defer func() { endSpan(err) }() 232 req, err := client.getCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayName, natRuleName, options) 233 if err != nil { 234 return VirtualNetworkGatewayNatRulesClientGetResponse{}, err 235 } 236 httpResp, err := client.internal.Pipeline().Do(req) 237 if err != nil { 238 return VirtualNetworkGatewayNatRulesClientGetResponse{}, err 239 } 240 if !runtime.HasStatusCode(httpResp, http.StatusOK) { 241 err = runtime.NewResponseError(httpResp) 242 return VirtualNetworkGatewayNatRulesClientGetResponse{}, err 243 } 244 resp, err := client.getHandleResponse(httpResp) 245 return resp, err 246 } 247 248 // getCreateRequest creates the Get request. 249 func (client *VirtualNetworkGatewayNatRulesClient) getCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, natRuleName string, options *VirtualNetworkGatewayNatRulesClientGetOptions) (*policy.Request, error) { 250 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules/{natRuleName}" 251 if client.subscriptionID == "" { 252 return nil, errors.New("parameter client.subscriptionID cannot be empty") 253 } 254 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 255 if resourceGroupName == "" { 256 return nil, errors.New("parameter resourceGroupName cannot be empty") 257 } 258 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 259 if virtualNetworkGatewayName == "" { 260 return nil, errors.New("parameter virtualNetworkGatewayName cannot be empty") 261 } 262 urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayName}", url.PathEscape(virtualNetworkGatewayName)) 263 if natRuleName == "" { 264 return nil, errors.New("parameter natRuleName cannot be empty") 265 } 266 urlPath = strings.ReplaceAll(urlPath, "{natRuleName}", url.PathEscape(natRuleName)) 267 req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath)) 268 if err != nil { 269 return nil, err 270 } 271 reqQP := req.Raw().URL.Query() 272 reqQP.Set("api-version", "2024-05-01") 273 req.Raw().URL.RawQuery = reqQP.Encode() 274 req.Raw().Header["Accept"] = []string{"application/json"} 275 return req, nil 276 } 277 278 // getHandleResponse handles the Get response. 279 func (client *VirtualNetworkGatewayNatRulesClient) getHandleResponse(resp *http.Response) (VirtualNetworkGatewayNatRulesClientGetResponse, error) { 280 result := VirtualNetworkGatewayNatRulesClientGetResponse{} 281 if err := runtime.UnmarshalAsJSON(resp, &result.VirtualNetworkGatewayNatRule); err != nil { 282 return VirtualNetworkGatewayNatRulesClientGetResponse{}, err 283 } 284 return result, nil 285 } 286 287 // NewListByVirtualNetworkGatewayPager - Retrieves all nat rules for a particular virtual network gateway. 288 // 289 // Generated from API version 2024-05-01 290 // - resourceGroupName - The resource group name of the virtual network gateway. 291 // - virtualNetworkGatewayName - The name of the gateway. 292 // - options - VirtualNetworkGatewayNatRulesClientListByVirtualNetworkGatewayOptions contains the optional parameters for the 293 // VirtualNetworkGatewayNatRulesClient.NewListByVirtualNetworkGatewayPager method. 294 func (client *VirtualNetworkGatewayNatRulesClient) NewListByVirtualNetworkGatewayPager(resourceGroupName string, virtualNetworkGatewayName string, options *VirtualNetworkGatewayNatRulesClientListByVirtualNetworkGatewayOptions) *runtime.Pager[VirtualNetworkGatewayNatRulesClientListByVirtualNetworkGatewayResponse] { 295 return runtime.NewPager(runtime.PagingHandler[VirtualNetworkGatewayNatRulesClientListByVirtualNetworkGatewayResponse]{ 296 More: func(page VirtualNetworkGatewayNatRulesClientListByVirtualNetworkGatewayResponse) bool { 297 return page.NextLink != nil && len(*page.NextLink) > 0 298 }, 299 Fetcher: func(ctx context.Context, page *VirtualNetworkGatewayNatRulesClientListByVirtualNetworkGatewayResponse) (VirtualNetworkGatewayNatRulesClientListByVirtualNetworkGatewayResponse, error) { 300 ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "VirtualNetworkGatewayNatRulesClient.NewListByVirtualNetworkGatewayPager") 301 nextLink := "" 302 if page != nil { 303 nextLink = *page.NextLink 304 } 305 resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { 306 return client.listByVirtualNetworkGatewayCreateRequest(ctx, resourceGroupName, virtualNetworkGatewayName, options) 307 }, nil) 308 if err != nil { 309 return VirtualNetworkGatewayNatRulesClientListByVirtualNetworkGatewayResponse{}, err 310 } 311 return client.listByVirtualNetworkGatewayHandleResponse(resp) 312 }, 313 Tracer: client.internal.Tracer(), 314 }) 315 } 316 317 // listByVirtualNetworkGatewayCreateRequest creates the ListByVirtualNetworkGateway request. 318 func (client *VirtualNetworkGatewayNatRulesClient) listByVirtualNetworkGatewayCreateRequest(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, options *VirtualNetworkGatewayNatRulesClientListByVirtualNetworkGatewayOptions) (*policy.Request, error) { 319 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/natRules" 320 if client.subscriptionID == "" { 321 return nil, errors.New("parameter client.subscriptionID cannot be empty") 322 } 323 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 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 virtualNetworkGatewayName == "" { 329 return nil, errors.New("parameter virtualNetworkGatewayName cannot be empty") 330 } 331 urlPath = strings.ReplaceAll(urlPath, "{virtualNetworkGatewayName}", url.PathEscape(virtualNetworkGatewayName)) 332 req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath)) 333 if err != nil { 334 return nil, err 335 } 336 reqQP := req.Raw().URL.Query() 337 reqQP.Set("api-version", "2024-05-01") 338 req.Raw().URL.RawQuery = reqQP.Encode() 339 req.Raw().Header["Accept"] = []string{"application/json"} 340 return req, nil 341 } 342 343 // listByVirtualNetworkGatewayHandleResponse handles the ListByVirtualNetworkGateway response. 344 func (client *VirtualNetworkGatewayNatRulesClient) listByVirtualNetworkGatewayHandleResponse(resp *http.Response) (VirtualNetworkGatewayNatRulesClientListByVirtualNetworkGatewayResponse, error) { 345 result := VirtualNetworkGatewayNatRulesClientListByVirtualNetworkGatewayResponse{} 346 if err := runtime.UnmarshalAsJSON(resp, &result.ListVirtualNetworkGatewayNatRulesResult); err != nil { 347 return VirtualNetworkGatewayNatRulesClientListByVirtualNetworkGatewayResponse{}, err 348 } 349 return result, nil 350 }