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  }