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