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