github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6@v6.2.0/ipampools_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 "strconv" 21 "strings" 22 ) 23 24 // IpamPoolsClient contains the methods for the IpamPools group. 25 // Don't use this type directly, use NewIpamPoolsClient() instead. 26 type IpamPoolsClient struct { 27 internal *arm.Client 28 subscriptionID string 29 } 30 31 // NewIpamPoolsClient creates a new instance of IpamPoolsClient with the specified values. 32 // - subscriptionID - The subscription credentials which uniquely identify the Microsoft Azure subscription. The subscription 33 // ID forms part of the URI for every service call. 34 // - credential - used to authorize requests. Usually a credential from azidentity. 35 // - options - pass nil to accept the default values. 36 func NewIpamPoolsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*IpamPoolsClient, error) { 37 cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) 38 if err != nil { 39 return nil, err 40 } 41 client := &IpamPoolsClient{ 42 subscriptionID: subscriptionID, 43 internal: cl, 44 } 45 return client, nil 46 } 47 48 // BeginCreate - Creates/Updates the Pool resource. 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 // - networkManagerName - The name of the network manager. 54 // - poolName - IP Address Manager Pool resource name. 55 // - body - Pool resource object to create/update. 56 // - options - IpamPoolsClientBeginCreateOptions contains the optional parameters for the IpamPoolsClient.BeginCreate method. 57 func (client *IpamPoolsClient) BeginCreate(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, body IpamPool, options *IpamPoolsClientBeginCreateOptions) (*runtime.Poller[IpamPoolsClientCreateResponse], error) { 58 if options == nil || options.ResumeToken == "" { 59 resp, err := client.create(ctx, resourceGroupName, networkManagerName, poolName, body, options) 60 if err != nil { 61 return nil, err 62 } 63 poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[IpamPoolsClientCreateResponse]{ 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[IpamPoolsClientCreateResponse]{ 70 Tracer: client.internal.Tracer(), 71 }) 72 } 73 } 74 75 // Create - Creates/Updates the Pool resource. 76 // If the operation fails it returns an *azcore.ResponseError type. 77 // 78 // Generated from API version 2024-05-01 79 func (client *IpamPoolsClient) create(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, body IpamPool, options *IpamPoolsClientBeginCreateOptions) (*http.Response, error) { 80 var err error 81 const operationName = "IpamPoolsClient.BeginCreate" 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.createCreateRequest(ctx, resourceGroupName, networkManagerName, poolName, body, 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 // createCreateRequest creates the Create request. 101 func (client *IpamPoolsClient) createCreateRequest(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, body IpamPool, options *IpamPoolsClientBeginCreateOptions) (*policy.Request, error) { 102 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/ipamPools/{poolName}" 103 if client.subscriptionID == "" { 104 return nil, errors.New("parameter client.subscriptionID cannot be empty") 105 } 106 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 107 if resourceGroupName == "" { 108 return nil, errors.New("parameter resourceGroupName cannot be empty") 109 } 110 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 111 if networkManagerName == "" { 112 return nil, errors.New("parameter networkManagerName cannot be empty") 113 } 114 urlPath = strings.ReplaceAll(urlPath, "{networkManagerName}", url.PathEscape(networkManagerName)) 115 if poolName == "" { 116 return nil, errors.New("parameter poolName cannot be empty") 117 } 118 urlPath = strings.ReplaceAll(urlPath, "{poolName}", url.PathEscape(poolName)) 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 req.Raw().URL.RawQuery = reqQP.Encode() 126 req.Raw().Header["Accept"] = []string{"application/json"} 127 if err := runtime.MarshalAsJSON(req, body); err != nil { 128 return nil, err 129 } 130 return req, nil 131 } 132 133 // BeginDelete - Delete the Pool resource. 134 // If the operation fails it returns an *azcore.ResponseError type. 135 // 136 // Generated from API version 2024-05-01 137 // - resourceGroupName - The name of the resource group. 138 // - networkManagerName - The name of the network manager. 139 // - poolName - Pool resource name. 140 // - options - IpamPoolsClientBeginDeleteOptions contains the optional parameters for the IpamPoolsClient.BeginDelete method. 141 func (client *IpamPoolsClient) BeginDelete(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, options *IpamPoolsClientBeginDeleteOptions) (*runtime.Poller[IpamPoolsClientDeleteResponse], error) { 142 if options == nil || options.ResumeToken == "" { 143 resp, err := client.deleteOperation(ctx, resourceGroupName, networkManagerName, poolName, options) 144 if err != nil { 145 return nil, err 146 } 147 poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[IpamPoolsClientDeleteResponse]{ 148 FinalStateVia: runtime.FinalStateViaLocation, 149 Tracer: client.internal.Tracer(), 150 }) 151 return poller, err 152 } else { 153 return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[IpamPoolsClientDeleteResponse]{ 154 Tracer: client.internal.Tracer(), 155 }) 156 } 157 } 158 159 // Delete - Delete the Pool resource. 160 // If the operation fails it returns an *azcore.ResponseError type. 161 // 162 // Generated from API version 2024-05-01 163 func (client *IpamPoolsClient) deleteOperation(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, options *IpamPoolsClientBeginDeleteOptions) (*http.Response, error) { 164 var err error 165 const operationName = "IpamPoolsClient.BeginDelete" 166 ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) 167 ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) 168 defer func() { endSpan(err) }() 169 req, err := client.deleteCreateRequest(ctx, resourceGroupName, networkManagerName, poolName, options) 170 if err != nil { 171 return nil, err 172 } 173 httpResp, err := client.internal.Pipeline().Do(req) 174 if err != nil { 175 return nil, err 176 } 177 if !runtime.HasStatusCode(httpResp, http.StatusAccepted, http.StatusNoContent) { 178 err = runtime.NewResponseError(httpResp) 179 return nil, err 180 } 181 return httpResp, nil 182 } 183 184 // deleteCreateRequest creates the Delete request. 185 func (client *IpamPoolsClient) deleteCreateRequest(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, options *IpamPoolsClientBeginDeleteOptions) (*policy.Request, error) { 186 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/ipamPools/{poolName}" 187 if client.subscriptionID == "" { 188 return nil, errors.New("parameter client.subscriptionID cannot be empty") 189 } 190 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 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 networkManagerName == "" { 196 return nil, errors.New("parameter networkManagerName cannot be empty") 197 } 198 urlPath = strings.ReplaceAll(urlPath, "{networkManagerName}", url.PathEscape(networkManagerName)) 199 if poolName == "" { 200 return nil, errors.New("parameter poolName cannot be empty") 201 } 202 urlPath = strings.ReplaceAll(urlPath, "{poolName}", url.PathEscape(poolName)) 203 req, err := runtime.NewRequest(ctx, http.MethodDelete, runtime.JoinPaths(client.internal.Endpoint(), urlPath)) 204 if err != nil { 205 return nil, err 206 } 207 reqQP := req.Raw().URL.Query() 208 reqQP.Set("api-version", "2024-05-01") 209 req.Raw().URL.RawQuery = reqQP.Encode() 210 req.Raw().Header["Accept"] = []string{"application/json"} 211 return req, nil 212 } 213 214 // Get - Gets the specific Pool resource. 215 // If the operation fails it returns an *azcore.ResponseError type. 216 // 217 // Generated from API version 2024-05-01 218 // - resourceGroupName - The name of the resource group. 219 // - networkManagerName - The name of the network manager. 220 // - poolName - Pool resource name. 221 // - options - IpamPoolsClientGetOptions contains the optional parameters for the IpamPoolsClient.Get method. 222 func (client *IpamPoolsClient) Get(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, options *IpamPoolsClientGetOptions) (IpamPoolsClientGetResponse, error) { 223 var err error 224 const operationName = "IpamPoolsClient.Get" 225 ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) 226 ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) 227 defer func() { endSpan(err) }() 228 req, err := client.getCreateRequest(ctx, resourceGroupName, networkManagerName, poolName, options) 229 if err != nil { 230 return IpamPoolsClientGetResponse{}, err 231 } 232 httpResp, err := client.internal.Pipeline().Do(req) 233 if err != nil { 234 return IpamPoolsClientGetResponse{}, err 235 } 236 if !runtime.HasStatusCode(httpResp, http.StatusOK) { 237 err = runtime.NewResponseError(httpResp) 238 return IpamPoolsClientGetResponse{}, err 239 } 240 resp, err := client.getHandleResponse(httpResp) 241 return resp, err 242 } 243 244 // getCreateRequest creates the Get request. 245 func (client *IpamPoolsClient) getCreateRequest(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, options *IpamPoolsClientGetOptions) (*policy.Request, error) { 246 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/ipamPools/{poolName}" 247 if client.subscriptionID == "" { 248 return nil, errors.New("parameter client.subscriptionID cannot be empty") 249 } 250 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 251 if resourceGroupName == "" { 252 return nil, errors.New("parameter resourceGroupName cannot be empty") 253 } 254 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 255 if networkManagerName == "" { 256 return nil, errors.New("parameter networkManagerName cannot be empty") 257 } 258 urlPath = strings.ReplaceAll(urlPath, "{networkManagerName}", url.PathEscape(networkManagerName)) 259 if poolName == "" { 260 return nil, errors.New("parameter poolName cannot be empty") 261 } 262 urlPath = strings.ReplaceAll(urlPath, "{poolName}", url.PathEscape(poolName)) 263 req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath)) 264 if err != nil { 265 return nil, err 266 } 267 reqQP := req.Raw().URL.Query() 268 reqQP.Set("api-version", "2024-05-01") 269 req.Raw().URL.RawQuery = reqQP.Encode() 270 req.Raw().Header["Accept"] = []string{"application/json"} 271 return req, nil 272 } 273 274 // getHandleResponse handles the Get response. 275 func (client *IpamPoolsClient) getHandleResponse(resp *http.Response) (IpamPoolsClientGetResponse, error) { 276 result := IpamPoolsClientGetResponse{} 277 if err := runtime.UnmarshalAsJSON(resp, &result.IpamPool); err != nil { 278 return IpamPoolsClientGetResponse{}, err 279 } 280 return result, nil 281 } 282 283 // GetPoolUsage - Get the Pool Usage. 284 // If the operation fails it returns an *azcore.ResponseError type. 285 // 286 // Generated from API version 2024-05-01 287 // - resourceGroupName - The name of the resource group. 288 // - networkManagerName - The name of the network manager. 289 // - poolName - Pool resource name. 290 // - options - IpamPoolsClientGetPoolUsageOptions contains the optional parameters for the IpamPoolsClient.GetPoolUsage method. 291 func (client *IpamPoolsClient) GetPoolUsage(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, options *IpamPoolsClientGetPoolUsageOptions) (IpamPoolsClientGetPoolUsageResponse, error) { 292 var err error 293 const operationName = "IpamPoolsClient.GetPoolUsage" 294 ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) 295 ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) 296 defer func() { endSpan(err) }() 297 req, err := client.getPoolUsageCreateRequest(ctx, resourceGroupName, networkManagerName, poolName, options) 298 if err != nil { 299 return IpamPoolsClientGetPoolUsageResponse{}, err 300 } 301 httpResp, err := client.internal.Pipeline().Do(req) 302 if err != nil { 303 return IpamPoolsClientGetPoolUsageResponse{}, err 304 } 305 if !runtime.HasStatusCode(httpResp, http.StatusOK) { 306 err = runtime.NewResponseError(httpResp) 307 return IpamPoolsClientGetPoolUsageResponse{}, err 308 } 309 resp, err := client.getPoolUsageHandleResponse(httpResp) 310 return resp, err 311 } 312 313 // getPoolUsageCreateRequest creates the GetPoolUsage request. 314 func (client *IpamPoolsClient) getPoolUsageCreateRequest(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, options *IpamPoolsClientGetPoolUsageOptions) (*policy.Request, error) { 315 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/ipamPools/{poolName}/getPoolUsage" 316 if client.subscriptionID == "" { 317 return nil, errors.New("parameter client.subscriptionID cannot be empty") 318 } 319 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 320 if resourceGroupName == "" { 321 return nil, errors.New("parameter resourceGroupName cannot be empty") 322 } 323 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 324 if networkManagerName == "" { 325 return nil, errors.New("parameter networkManagerName cannot be empty") 326 } 327 urlPath = strings.ReplaceAll(urlPath, "{networkManagerName}", url.PathEscape(networkManagerName)) 328 if poolName == "" { 329 return nil, errors.New("parameter poolName cannot be empty") 330 } 331 urlPath = strings.ReplaceAll(urlPath, "{poolName}", url.PathEscape(poolName)) 332 req, err := runtime.NewRequest(ctx, http.MethodPost, 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 // getPoolUsageHandleResponse handles the GetPoolUsage response. 344 func (client *IpamPoolsClient) getPoolUsageHandleResponse(resp *http.Response) (IpamPoolsClientGetPoolUsageResponse, error) { 345 result := IpamPoolsClientGetPoolUsageResponse{} 346 if err := runtime.UnmarshalAsJSON(resp, &result.PoolUsage); err != nil { 347 return IpamPoolsClientGetPoolUsageResponse{}, err 348 } 349 return result, nil 350 } 351 352 // NewListPager - Gets list of Pool resources at Network Manager level. 353 // 354 // Generated from API version 2024-05-01 355 // - resourceGroupName - The name of the resource group. 356 // - networkManagerName - The name of the network manager. 357 // - options - IpamPoolsClientListOptions contains the optional parameters for the IpamPoolsClient.NewListPager method. 358 func (client *IpamPoolsClient) NewListPager(resourceGroupName string, networkManagerName string, options *IpamPoolsClientListOptions) *runtime.Pager[IpamPoolsClientListResponse] { 359 return runtime.NewPager(runtime.PagingHandler[IpamPoolsClientListResponse]{ 360 More: func(page IpamPoolsClientListResponse) bool { 361 return page.NextLink != nil && len(*page.NextLink) > 0 362 }, 363 Fetcher: func(ctx context.Context, page *IpamPoolsClientListResponse) (IpamPoolsClientListResponse, error) { 364 ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "IpamPoolsClient.NewListPager") 365 nextLink := "" 366 if page != nil { 367 nextLink = *page.NextLink 368 } 369 resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { 370 return client.listCreateRequest(ctx, resourceGroupName, networkManagerName, options) 371 }, nil) 372 if err != nil { 373 return IpamPoolsClientListResponse{}, err 374 } 375 return client.listHandleResponse(resp) 376 }, 377 Tracer: client.internal.Tracer(), 378 }) 379 } 380 381 // listCreateRequest creates the List request. 382 func (client *IpamPoolsClient) listCreateRequest(ctx context.Context, resourceGroupName string, networkManagerName string, options *IpamPoolsClientListOptions) (*policy.Request, error) { 383 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/ipamPools" 384 if client.subscriptionID == "" { 385 return nil, errors.New("parameter client.subscriptionID cannot be empty") 386 } 387 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 388 if resourceGroupName == "" { 389 return nil, errors.New("parameter resourceGroupName cannot be empty") 390 } 391 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 392 if networkManagerName == "" { 393 return nil, errors.New("parameter networkManagerName cannot be empty") 394 } 395 urlPath = strings.ReplaceAll(urlPath, "{networkManagerName}", url.PathEscape(networkManagerName)) 396 req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath)) 397 if err != nil { 398 return nil, err 399 } 400 reqQP := req.Raw().URL.Query() 401 reqQP.Set("api-version", "2024-05-01") 402 if options != nil && options.Skip != nil { 403 reqQP.Set("skip", strconv.FormatInt(int64(*options.Skip), 10)) 404 } 405 if options != nil && options.SkipToken != nil { 406 reqQP.Set("skipToken", *options.SkipToken) 407 } 408 if options != nil && options.SortKey != nil { 409 reqQP.Set("sortKey", *options.SortKey) 410 } 411 if options != nil && options.SortValue != nil { 412 reqQP.Set("sortValue", *options.SortValue) 413 } 414 if options != nil && options.Top != nil { 415 reqQP.Set("top", strconv.FormatInt(int64(*options.Top), 10)) 416 } 417 req.Raw().URL.RawQuery = reqQP.Encode() 418 req.Raw().Header["Accept"] = []string{"application/json"} 419 return req, nil 420 } 421 422 // listHandleResponse handles the List response. 423 func (client *IpamPoolsClient) listHandleResponse(resp *http.Response) (IpamPoolsClientListResponse, error) { 424 result := IpamPoolsClientListResponse{} 425 if err := runtime.UnmarshalAsJSON(resp, &result.IpamPoolList); err != nil { 426 return IpamPoolsClientListResponse{}, err 427 } 428 return result, nil 429 } 430 431 // NewListAssociatedResourcesPager - List Associated Resource in the Pool. 432 // 433 // Generated from API version 2024-05-01 434 // - resourceGroupName - The name of the resource group. 435 // - networkManagerName - The name of the network manager. 436 // - poolName - Pool resource name. 437 // - options - IpamPoolsClientListAssociatedResourcesOptions contains the optional parameters for the IpamPoolsClient.NewListAssociatedResourcesPager 438 // method. 439 func (client *IpamPoolsClient) NewListAssociatedResourcesPager(resourceGroupName string, networkManagerName string, poolName string, options *IpamPoolsClientListAssociatedResourcesOptions) *runtime.Pager[IpamPoolsClientListAssociatedResourcesResponse] { 440 return runtime.NewPager(runtime.PagingHandler[IpamPoolsClientListAssociatedResourcesResponse]{ 441 More: func(page IpamPoolsClientListAssociatedResourcesResponse) bool { 442 return page.NextLink != nil && len(*page.NextLink) > 0 443 }, 444 Fetcher: func(ctx context.Context, page *IpamPoolsClientListAssociatedResourcesResponse) (IpamPoolsClientListAssociatedResourcesResponse, error) { 445 ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "IpamPoolsClient.NewListAssociatedResourcesPager") 446 nextLink := "" 447 if page != nil { 448 nextLink = *page.NextLink 449 } 450 resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { 451 return client.listAssociatedResourcesCreateRequest(ctx, resourceGroupName, networkManagerName, poolName, options) 452 }, nil) 453 if err != nil { 454 return IpamPoolsClientListAssociatedResourcesResponse{}, err 455 } 456 return client.listAssociatedResourcesHandleResponse(resp) 457 }, 458 Tracer: client.internal.Tracer(), 459 }) 460 } 461 462 // listAssociatedResourcesCreateRequest creates the ListAssociatedResources request. 463 func (client *IpamPoolsClient) listAssociatedResourcesCreateRequest(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, options *IpamPoolsClientListAssociatedResourcesOptions) (*policy.Request, error) { 464 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/ipamPools/{poolName}/listAssociatedResources" 465 if client.subscriptionID == "" { 466 return nil, errors.New("parameter client.subscriptionID cannot be empty") 467 } 468 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 469 if resourceGroupName == "" { 470 return nil, errors.New("parameter resourceGroupName cannot be empty") 471 } 472 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 473 if networkManagerName == "" { 474 return nil, errors.New("parameter networkManagerName cannot be empty") 475 } 476 urlPath = strings.ReplaceAll(urlPath, "{networkManagerName}", url.PathEscape(networkManagerName)) 477 if poolName == "" { 478 return nil, errors.New("parameter poolName cannot be empty") 479 } 480 urlPath = strings.ReplaceAll(urlPath, "{poolName}", url.PathEscape(poolName)) 481 req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.internal.Endpoint(), urlPath)) 482 if err != nil { 483 return nil, err 484 } 485 reqQP := req.Raw().URL.Query() 486 reqQP.Set("api-version", "2024-05-01") 487 req.Raw().URL.RawQuery = reqQP.Encode() 488 req.Raw().Header["Accept"] = []string{"application/json"} 489 return req, nil 490 } 491 492 // listAssociatedResourcesHandleResponse handles the ListAssociatedResources response. 493 func (client *IpamPoolsClient) listAssociatedResourcesHandleResponse(resp *http.Response) (IpamPoolsClientListAssociatedResourcesResponse, error) { 494 result := IpamPoolsClientListAssociatedResourcesResponse{} 495 if err := runtime.UnmarshalAsJSON(resp, &result.PoolAssociationList); err != nil { 496 return IpamPoolsClientListAssociatedResourcesResponse{}, err 497 } 498 return result, nil 499 } 500 501 // Update - Updates the specific Pool resource. 502 // If the operation fails it returns an *azcore.ResponseError type. 503 // 504 // Generated from API version 2024-05-01 505 // - resourceGroupName - The name of the resource group. 506 // - networkManagerName - The name of the network manager. 507 // - poolName - IP Address Manager Pool resource name. 508 // - options - IpamPoolsClientUpdateOptions contains the optional parameters for the IpamPoolsClient.Update method. 509 func (client *IpamPoolsClient) Update(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, options *IpamPoolsClientUpdateOptions) (IpamPoolsClientUpdateResponse, error) { 510 var err error 511 const operationName = "IpamPoolsClient.Update" 512 ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) 513 ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) 514 defer func() { endSpan(err) }() 515 req, err := client.updateCreateRequest(ctx, resourceGroupName, networkManagerName, poolName, options) 516 if err != nil { 517 return IpamPoolsClientUpdateResponse{}, err 518 } 519 httpResp, err := client.internal.Pipeline().Do(req) 520 if err != nil { 521 return IpamPoolsClientUpdateResponse{}, err 522 } 523 if !runtime.HasStatusCode(httpResp, http.StatusOK) { 524 err = runtime.NewResponseError(httpResp) 525 return IpamPoolsClientUpdateResponse{}, err 526 } 527 resp, err := client.updateHandleResponse(httpResp) 528 return resp, err 529 } 530 531 // updateCreateRequest creates the Update request. 532 func (client *IpamPoolsClient) updateCreateRequest(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, options *IpamPoolsClientUpdateOptions) (*policy.Request, error) { 533 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkManagers/{networkManagerName}/ipamPools/{poolName}" 534 if client.subscriptionID == "" { 535 return nil, errors.New("parameter client.subscriptionID cannot be empty") 536 } 537 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 538 if resourceGroupName == "" { 539 return nil, errors.New("parameter resourceGroupName cannot be empty") 540 } 541 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 542 if networkManagerName == "" { 543 return nil, errors.New("parameter networkManagerName cannot be empty") 544 } 545 urlPath = strings.ReplaceAll(urlPath, "{networkManagerName}", url.PathEscape(networkManagerName)) 546 if poolName == "" { 547 return nil, errors.New("parameter poolName cannot be empty") 548 } 549 urlPath = strings.ReplaceAll(urlPath, "{poolName}", url.PathEscape(poolName)) 550 req, err := runtime.NewRequest(ctx, http.MethodPatch, runtime.JoinPaths(client.internal.Endpoint(), urlPath)) 551 if err != nil { 552 return nil, err 553 } 554 reqQP := req.Raw().URL.Query() 555 reqQP.Set("api-version", "2024-05-01") 556 req.Raw().URL.RawQuery = reqQP.Encode() 557 req.Raw().Header["Accept"] = []string{"application/json"} 558 if options != nil && options.Body != nil { 559 if err := runtime.MarshalAsJSON(req, *options.Body); err != nil { 560 return nil, err 561 } 562 return req, nil 563 } 564 return req, nil 565 } 566 567 // updateHandleResponse handles the Update response. 568 func (client *IpamPoolsClient) updateHandleResponse(resp *http.Response) (IpamPoolsClientUpdateResponse, error) { 569 result := IpamPoolsClientUpdateResponse{} 570 if err := runtime.UnmarshalAsJSON(resp, &result.IpamPool); err != nil { 571 return IpamPoolsClientUpdateResponse{}, err 572 } 573 return result, nil 574 }