1// +build go1.13 2 3// Copyright (c) Microsoft Corporation. All rights reserved. 4// Licensed under the MIT License. See License.txt in the project root for license information. 5// Code generated by Microsoft (R) AutoRest Code Generator. 6// Changes may cause incorrect behavior and will be lost if the code is regenerated. 7 8package armcompute 9 10import ( 11 "context" 12 "errors" 13 "github.com/Azure/azure-sdk-for-go/sdk/armcore" 14 "github.com/Azure/azure-sdk-for-go/sdk/azcore" 15 "net/http" 16 "net/url" 17 "strings" 18 "time" 19) 20 21// VirtualMachineScaleSetExtensionsClient contains the methods for the VirtualMachineScaleSetExtensions group. 22// Don't use this type directly, use NewVirtualMachineScaleSetExtensionsClient() instead. 23type VirtualMachineScaleSetExtensionsClient struct { 24 con *armcore.Connection 25 subscriptionID string 26} 27 28// NewVirtualMachineScaleSetExtensionsClient creates a new instance of VirtualMachineScaleSetExtensionsClient with the specified values. 29func NewVirtualMachineScaleSetExtensionsClient(con *armcore.Connection, subscriptionID string) *VirtualMachineScaleSetExtensionsClient { 30 return &VirtualMachineScaleSetExtensionsClient{con: con, subscriptionID: subscriptionID} 31} 32 33// BeginCreateOrUpdate - The operation to create or update an extension. 34// If the operation fails it returns a generic error. 35func (client *VirtualMachineScaleSetExtensionsClient) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, vmScaleSetName string, vmssExtensionName string, extensionParameters VirtualMachineScaleSetExtension, options *VirtualMachineScaleSetExtensionsBeginCreateOrUpdateOptions) (VirtualMachineScaleSetExtensionPollerResponse, error) { 36 resp, err := client.createOrUpdate(ctx, resourceGroupName, vmScaleSetName, vmssExtensionName, extensionParameters, options) 37 if err != nil { 38 return VirtualMachineScaleSetExtensionPollerResponse{}, err 39 } 40 result := VirtualMachineScaleSetExtensionPollerResponse{ 41 RawResponse: resp.Response, 42 } 43 pt, err := armcore.NewLROPoller("VirtualMachineScaleSetExtensionsClient.CreateOrUpdate", "", resp, client.con.Pipeline(), client.createOrUpdateHandleError) 44 if err != nil { 45 return VirtualMachineScaleSetExtensionPollerResponse{}, err 46 } 47 poller := &virtualMachineScaleSetExtensionPoller{ 48 pt: pt, 49 } 50 result.Poller = poller 51 result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (VirtualMachineScaleSetExtensionResponse, error) { 52 return poller.pollUntilDone(ctx, frequency) 53 } 54 return result, nil 55} 56 57// ResumeCreateOrUpdate creates a new VirtualMachineScaleSetExtensionPoller from the specified resume token. 58// token - The value must come from a previous call to VirtualMachineScaleSetExtensionPoller.ResumeToken(). 59func (client *VirtualMachineScaleSetExtensionsClient) ResumeCreateOrUpdate(ctx context.Context, token string) (VirtualMachineScaleSetExtensionPollerResponse, error) { 60 pt, err := armcore.NewLROPollerFromResumeToken("VirtualMachineScaleSetExtensionsClient.CreateOrUpdate", token, client.con.Pipeline(), client.createOrUpdateHandleError) 61 if err != nil { 62 return VirtualMachineScaleSetExtensionPollerResponse{}, err 63 } 64 poller := &virtualMachineScaleSetExtensionPoller{ 65 pt: pt, 66 } 67 resp, err := poller.Poll(ctx) 68 if err != nil { 69 return VirtualMachineScaleSetExtensionPollerResponse{}, err 70 } 71 result := VirtualMachineScaleSetExtensionPollerResponse{ 72 RawResponse: resp, 73 } 74 result.Poller = poller 75 result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (VirtualMachineScaleSetExtensionResponse, error) { 76 return poller.pollUntilDone(ctx, frequency) 77 } 78 return result, nil 79} 80 81// CreateOrUpdate - The operation to create or update an extension. 82// If the operation fails it returns a generic error. 83func (client *VirtualMachineScaleSetExtensionsClient) createOrUpdate(ctx context.Context, resourceGroupName string, vmScaleSetName string, vmssExtensionName string, extensionParameters VirtualMachineScaleSetExtension, options *VirtualMachineScaleSetExtensionsBeginCreateOrUpdateOptions) (*azcore.Response, error) { 84 req, err := client.createOrUpdateCreateRequest(ctx, resourceGroupName, vmScaleSetName, vmssExtensionName, extensionParameters, options) 85 if err != nil { 86 return nil, err 87 } 88 resp, err := client.con.Pipeline().Do(req) 89 if err != nil { 90 return nil, err 91 } 92 if !resp.HasStatusCode(http.StatusOK, http.StatusCreated) { 93 return nil, client.createOrUpdateHandleError(resp) 94 } 95 return resp, nil 96} 97 98// createOrUpdateCreateRequest creates the CreateOrUpdate request. 99func (client *VirtualMachineScaleSetExtensionsClient) createOrUpdateCreateRequest(ctx context.Context, resourceGroupName string, vmScaleSetName string, vmssExtensionName string, extensionParameters VirtualMachineScaleSetExtension, options *VirtualMachineScaleSetExtensionsBeginCreateOrUpdateOptions) (*azcore.Request, error) { 100 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/extensions/{vmssExtensionName}" 101 if resourceGroupName == "" { 102 return nil, errors.New("parameter resourceGroupName cannot be empty") 103 } 104 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 105 if vmScaleSetName == "" { 106 return nil, errors.New("parameter vmScaleSetName cannot be empty") 107 } 108 urlPath = strings.ReplaceAll(urlPath, "{vmScaleSetName}", url.PathEscape(vmScaleSetName)) 109 if vmssExtensionName == "" { 110 return nil, errors.New("parameter vmssExtensionName cannot be empty") 111 } 112 urlPath = strings.ReplaceAll(urlPath, "{vmssExtensionName}", url.PathEscape(vmssExtensionName)) 113 if client.subscriptionID == "" { 114 return nil, errors.New("parameter client.subscriptionID cannot be empty") 115 } 116 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 117 req, err := azcore.NewRequest(ctx, http.MethodPut, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 118 if err != nil { 119 return nil, err 120 } 121 req.Telemetry(telemetryInfo) 122 reqQP := req.URL.Query() 123 reqQP.Set("api-version", "2021-03-01") 124 req.URL.RawQuery = reqQP.Encode() 125 req.Header.Set("Accept", "application/json") 126 return req, req.MarshalAsJSON(extensionParameters) 127} 128 129// createOrUpdateHandleError handles the CreateOrUpdate error response. 130func (client *VirtualMachineScaleSetExtensionsClient) createOrUpdateHandleError(resp *azcore.Response) error { 131 body, err := resp.Payload() 132 if err != nil { 133 return azcore.NewResponseError(err, resp.Response) 134 } 135 if len(body) == 0 { 136 return azcore.NewResponseError(errors.New(resp.Status), resp.Response) 137 } 138 return azcore.NewResponseError(errors.New(string(body)), resp.Response) 139} 140 141// BeginDelete - The operation to delete the extension. 142// If the operation fails it returns a generic error. 143func (client *VirtualMachineScaleSetExtensionsClient) BeginDelete(ctx context.Context, resourceGroupName string, vmScaleSetName string, vmssExtensionName string, options *VirtualMachineScaleSetExtensionsBeginDeleteOptions) (HTTPPollerResponse, error) { 144 resp, err := client.deleteOperation(ctx, resourceGroupName, vmScaleSetName, vmssExtensionName, options) 145 if err != nil { 146 return HTTPPollerResponse{}, err 147 } 148 result := HTTPPollerResponse{ 149 RawResponse: resp.Response, 150 } 151 pt, err := armcore.NewLROPoller("VirtualMachineScaleSetExtensionsClient.Delete", "", resp, client.con.Pipeline(), client.deleteHandleError) 152 if err != nil { 153 return HTTPPollerResponse{}, err 154 } 155 poller := &httpPoller{ 156 pt: pt, 157 } 158 result.Poller = poller 159 result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (*http.Response, error) { 160 return poller.pollUntilDone(ctx, frequency) 161 } 162 return result, nil 163} 164 165// ResumeDelete creates a new HTTPPoller from the specified resume token. 166// token - The value must come from a previous call to HTTPPoller.ResumeToken(). 167func (client *VirtualMachineScaleSetExtensionsClient) ResumeDelete(ctx context.Context, token string) (HTTPPollerResponse, error) { 168 pt, err := armcore.NewLROPollerFromResumeToken("VirtualMachineScaleSetExtensionsClient.Delete", token, client.con.Pipeline(), client.deleteHandleError) 169 if err != nil { 170 return HTTPPollerResponse{}, err 171 } 172 poller := &httpPoller{ 173 pt: pt, 174 } 175 resp, err := poller.Poll(ctx) 176 if err != nil { 177 return HTTPPollerResponse{}, err 178 } 179 result := HTTPPollerResponse{ 180 RawResponse: resp, 181 } 182 result.Poller = poller 183 result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (*http.Response, error) { 184 return poller.pollUntilDone(ctx, frequency) 185 } 186 return result, nil 187} 188 189// Delete - The operation to delete the extension. 190// If the operation fails it returns a generic error. 191func (client *VirtualMachineScaleSetExtensionsClient) deleteOperation(ctx context.Context, resourceGroupName string, vmScaleSetName string, vmssExtensionName string, options *VirtualMachineScaleSetExtensionsBeginDeleteOptions) (*azcore.Response, error) { 192 req, err := client.deleteCreateRequest(ctx, resourceGroupName, vmScaleSetName, vmssExtensionName, options) 193 if err != nil { 194 return nil, err 195 } 196 resp, err := client.con.Pipeline().Do(req) 197 if err != nil { 198 return nil, err 199 } 200 if !resp.HasStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent) { 201 return nil, client.deleteHandleError(resp) 202 } 203 return resp, nil 204} 205 206// deleteCreateRequest creates the Delete request. 207func (client *VirtualMachineScaleSetExtensionsClient) deleteCreateRequest(ctx context.Context, resourceGroupName string, vmScaleSetName string, vmssExtensionName string, options *VirtualMachineScaleSetExtensionsBeginDeleteOptions) (*azcore.Request, error) { 208 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/extensions/{vmssExtensionName}" 209 if resourceGroupName == "" { 210 return nil, errors.New("parameter resourceGroupName cannot be empty") 211 } 212 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 213 if vmScaleSetName == "" { 214 return nil, errors.New("parameter vmScaleSetName cannot be empty") 215 } 216 urlPath = strings.ReplaceAll(urlPath, "{vmScaleSetName}", url.PathEscape(vmScaleSetName)) 217 if vmssExtensionName == "" { 218 return nil, errors.New("parameter vmssExtensionName cannot be empty") 219 } 220 urlPath = strings.ReplaceAll(urlPath, "{vmssExtensionName}", url.PathEscape(vmssExtensionName)) 221 if client.subscriptionID == "" { 222 return nil, errors.New("parameter client.subscriptionID cannot be empty") 223 } 224 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 225 req, err := azcore.NewRequest(ctx, http.MethodDelete, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 226 if err != nil { 227 return nil, err 228 } 229 req.Telemetry(telemetryInfo) 230 reqQP := req.URL.Query() 231 reqQP.Set("api-version", "2021-03-01") 232 req.URL.RawQuery = reqQP.Encode() 233 return req, nil 234} 235 236// deleteHandleError handles the Delete error response. 237func (client *VirtualMachineScaleSetExtensionsClient) deleteHandleError(resp *azcore.Response) error { 238 body, err := resp.Payload() 239 if err != nil { 240 return azcore.NewResponseError(err, resp.Response) 241 } 242 if len(body) == 0 { 243 return azcore.NewResponseError(errors.New(resp.Status), resp.Response) 244 } 245 return azcore.NewResponseError(errors.New(string(body)), resp.Response) 246} 247 248// Get - The operation to get the extension. 249// If the operation fails it returns a generic error. 250func (client *VirtualMachineScaleSetExtensionsClient) Get(ctx context.Context, resourceGroupName string, vmScaleSetName string, vmssExtensionName string, options *VirtualMachineScaleSetExtensionsGetOptions) (VirtualMachineScaleSetExtensionResponse, error) { 251 req, err := client.getCreateRequest(ctx, resourceGroupName, vmScaleSetName, vmssExtensionName, options) 252 if err != nil { 253 return VirtualMachineScaleSetExtensionResponse{}, err 254 } 255 resp, err := client.con.Pipeline().Do(req) 256 if err != nil { 257 return VirtualMachineScaleSetExtensionResponse{}, err 258 } 259 if !resp.HasStatusCode(http.StatusOK) { 260 return VirtualMachineScaleSetExtensionResponse{}, client.getHandleError(resp) 261 } 262 return client.getHandleResponse(resp) 263} 264 265// getCreateRequest creates the Get request. 266func (client *VirtualMachineScaleSetExtensionsClient) getCreateRequest(ctx context.Context, resourceGroupName string, vmScaleSetName string, vmssExtensionName string, options *VirtualMachineScaleSetExtensionsGetOptions) (*azcore.Request, error) { 267 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/extensions/{vmssExtensionName}" 268 if resourceGroupName == "" { 269 return nil, errors.New("parameter resourceGroupName cannot be empty") 270 } 271 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 272 if vmScaleSetName == "" { 273 return nil, errors.New("parameter vmScaleSetName cannot be empty") 274 } 275 urlPath = strings.ReplaceAll(urlPath, "{vmScaleSetName}", url.PathEscape(vmScaleSetName)) 276 if vmssExtensionName == "" { 277 return nil, errors.New("parameter vmssExtensionName cannot be empty") 278 } 279 urlPath = strings.ReplaceAll(urlPath, "{vmssExtensionName}", url.PathEscape(vmssExtensionName)) 280 if client.subscriptionID == "" { 281 return nil, errors.New("parameter client.subscriptionID cannot be empty") 282 } 283 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 284 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 285 if err != nil { 286 return nil, err 287 } 288 req.Telemetry(telemetryInfo) 289 reqQP := req.URL.Query() 290 if options != nil && options.Expand != nil { 291 reqQP.Set("$expand", *options.Expand) 292 } 293 reqQP.Set("api-version", "2021-03-01") 294 req.URL.RawQuery = reqQP.Encode() 295 req.Header.Set("Accept", "application/json") 296 return req, nil 297} 298 299// getHandleResponse handles the Get response. 300func (client *VirtualMachineScaleSetExtensionsClient) getHandleResponse(resp *azcore.Response) (VirtualMachineScaleSetExtensionResponse, error) { 301 var val *VirtualMachineScaleSetExtension 302 if err := resp.UnmarshalAsJSON(&val); err != nil { 303 return VirtualMachineScaleSetExtensionResponse{}, err 304 } 305 return VirtualMachineScaleSetExtensionResponse{RawResponse: resp.Response, VirtualMachineScaleSetExtension: val}, nil 306} 307 308// getHandleError handles the Get error response. 309func (client *VirtualMachineScaleSetExtensionsClient) getHandleError(resp *azcore.Response) error { 310 body, err := resp.Payload() 311 if err != nil { 312 return azcore.NewResponseError(err, resp.Response) 313 } 314 if len(body) == 0 { 315 return azcore.NewResponseError(errors.New(resp.Status), resp.Response) 316 } 317 return azcore.NewResponseError(errors.New(string(body)), resp.Response) 318} 319 320// List - Gets a list of all extensions in a VM scale set. 321// If the operation fails it returns a generic error. 322func (client *VirtualMachineScaleSetExtensionsClient) List(resourceGroupName string, vmScaleSetName string, options *VirtualMachineScaleSetExtensionsListOptions) VirtualMachineScaleSetExtensionListResultPager { 323 return &virtualMachineScaleSetExtensionListResultPager{ 324 pipeline: client.con.Pipeline(), 325 requester: func(ctx context.Context) (*azcore.Request, error) { 326 return client.listCreateRequest(ctx, resourceGroupName, vmScaleSetName, options) 327 }, 328 responder: client.listHandleResponse, 329 errorer: client.listHandleError, 330 advancer: func(ctx context.Context, resp VirtualMachineScaleSetExtensionListResultResponse) (*azcore.Request, error) { 331 return azcore.NewRequest(ctx, http.MethodGet, *resp.VirtualMachineScaleSetExtensionListResult.NextLink) 332 }, 333 statusCodes: []int{http.StatusOK}, 334 } 335} 336 337// listCreateRequest creates the List request. 338func (client *VirtualMachineScaleSetExtensionsClient) listCreateRequest(ctx context.Context, resourceGroupName string, vmScaleSetName string, options *VirtualMachineScaleSetExtensionsListOptions) (*azcore.Request, error) { 339 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/extensions" 340 if resourceGroupName == "" { 341 return nil, errors.New("parameter resourceGroupName cannot be empty") 342 } 343 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 344 if vmScaleSetName == "" { 345 return nil, errors.New("parameter vmScaleSetName cannot be empty") 346 } 347 urlPath = strings.ReplaceAll(urlPath, "{vmScaleSetName}", url.PathEscape(vmScaleSetName)) 348 if client.subscriptionID == "" { 349 return nil, errors.New("parameter client.subscriptionID cannot be empty") 350 } 351 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 352 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 353 if err != nil { 354 return nil, err 355 } 356 req.Telemetry(telemetryInfo) 357 reqQP := req.URL.Query() 358 reqQP.Set("api-version", "2021-03-01") 359 req.URL.RawQuery = reqQP.Encode() 360 req.Header.Set("Accept", "application/json") 361 return req, nil 362} 363 364// listHandleResponse handles the List response. 365func (client *VirtualMachineScaleSetExtensionsClient) listHandleResponse(resp *azcore.Response) (VirtualMachineScaleSetExtensionListResultResponse, error) { 366 var val *VirtualMachineScaleSetExtensionListResult 367 if err := resp.UnmarshalAsJSON(&val); err != nil { 368 return VirtualMachineScaleSetExtensionListResultResponse{}, err 369 } 370 return VirtualMachineScaleSetExtensionListResultResponse{RawResponse: resp.Response, VirtualMachineScaleSetExtensionListResult: val}, nil 371} 372 373// listHandleError handles the List error response. 374func (client *VirtualMachineScaleSetExtensionsClient) listHandleError(resp *azcore.Response) error { 375 body, err := resp.Payload() 376 if err != nil { 377 return azcore.NewResponseError(err, resp.Response) 378 } 379 if len(body) == 0 { 380 return azcore.NewResponseError(errors.New(resp.Status), resp.Response) 381 } 382 return azcore.NewResponseError(errors.New(string(body)), resp.Response) 383} 384 385// BeginUpdate - The operation to update an extension. 386// If the operation fails it returns a generic error. 387func (client *VirtualMachineScaleSetExtensionsClient) BeginUpdate(ctx context.Context, resourceGroupName string, vmScaleSetName string, vmssExtensionName string, extensionParameters VirtualMachineScaleSetExtensionUpdate, options *VirtualMachineScaleSetExtensionsBeginUpdateOptions) (VirtualMachineScaleSetExtensionPollerResponse, error) { 388 resp, err := client.update(ctx, resourceGroupName, vmScaleSetName, vmssExtensionName, extensionParameters, options) 389 if err != nil { 390 return VirtualMachineScaleSetExtensionPollerResponse{}, err 391 } 392 result := VirtualMachineScaleSetExtensionPollerResponse{ 393 RawResponse: resp.Response, 394 } 395 pt, err := armcore.NewLROPoller("VirtualMachineScaleSetExtensionsClient.Update", "", resp, client.con.Pipeline(), client.updateHandleError) 396 if err != nil { 397 return VirtualMachineScaleSetExtensionPollerResponse{}, err 398 } 399 poller := &virtualMachineScaleSetExtensionPoller{ 400 pt: pt, 401 } 402 result.Poller = poller 403 result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (VirtualMachineScaleSetExtensionResponse, error) { 404 return poller.pollUntilDone(ctx, frequency) 405 } 406 return result, nil 407} 408 409// ResumeUpdate creates a new VirtualMachineScaleSetExtensionPoller from the specified resume token. 410// token - The value must come from a previous call to VirtualMachineScaleSetExtensionPoller.ResumeToken(). 411func (client *VirtualMachineScaleSetExtensionsClient) ResumeUpdate(ctx context.Context, token string) (VirtualMachineScaleSetExtensionPollerResponse, error) { 412 pt, err := armcore.NewLROPollerFromResumeToken("VirtualMachineScaleSetExtensionsClient.Update", token, client.con.Pipeline(), client.updateHandleError) 413 if err != nil { 414 return VirtualMachineScaleSetExtensionPollerResponse{}, err 415 } 416 poller := &virtualMachineScaleSetExtensionPoller{ 417 pt: pt, 418 } 419 resp, err := poller.Poll(ctx) 420 if err != nil { 421 return VirtualMachineScaleSetExtensionPollerResponse{}, err 422 } 423 result := VirtualMachineScaleSetExtensionPollerResponse{ 424 RawResponse: resp, 425 } 426 result.Poller = poller 427 result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (VirtualMachineScaleSetExtensionResponse, error) { 428 return poller.pollUntilDone(ctx, frequency) 429 } 430 return result, nil 431} 432 433// Update - The operation to update an extension. 434// If the operation fails it returns a generic error. 435func (client *VirtualMachineScaleSetExtensionsClient) update(ctx context.Context, resourceGroupName string, vmScaleSetName string, vmssExtensionName string, extensionParameters VirtualMachineScaleSetExtensionUpdate, options *VirtualMachineScaleSetExtensionsBeginUpdateOptions) (*azcore.Response, error) { 436 req, err := client.updateCreateRequest(ctx, resourceGroupName, vmScaleSetName, vmssExtensionName, extensionParameters, options) 437 if err != nil { 438 return nil, err 439 } 440 resp, err := client.con.Pipeline().Do(req) 441 if err != nil { 442 return nil, err 443 } 444 if !resp.HasStatusCode(http.StatusOK, http.StatusCreated) { 445 return nil, client.updateHandleError(resp) 446 } 447 return resp, nil 448} 449 450// updateCreateRequest creates the Update request. 451func (client *VirtualMachineScaleSetExtensionsClient) updateCreateRequest(ctx context.Context, resourceGroupName string, vmScaleSetName string, vmssExtensionName string, extensionParameters VirtualMachineScaleSetExtensionUpdate, options *VirtualMachineScaleSetExtensionsBeginUpdateOptions) (*azcore.Request, error) { 452 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/extensions/{vmssExtensionName}" 453 if resourceGroupName == "" { 454 return nil, errors.New("parameter resourceGroupName cannot be empty") 455 } 456 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 457 if vmScaleSetName == "" { 458 return nil, errors.New("parameter vmScaleSetName cannot be empty") 459 } 460 urlPath = strings.ReplaceAll(urlPath, "{vmScaleSetName}", url.PathEscape(vmScaleSetName)) 461 if vmssExtensionName == "" { 462 return nil, errors.New("parameter vmssExtensionName cannot be empty") 463 } 464 urlPath = strings.ReplaceAll(urlPath, "{vmssExtensionName}", url.PathEscape(vmssExtensionName)) 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 req, err := azcore.NewRequest(ctx, http.MethodPatch, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 470 if err != nil { 471 return nil, err 472 } 473 req.Telemetry(telemetryInfo) 474 reqQP := req.URL.Query() 475 reqQP.Set("api-version", "2021-03-01") 476 req.URL.RawQuery = reqQP.Encode() 477 req.Header.Set("Accept", "application/json") 478 return req, req.MarshalAsJSON(extensionParameters) 479} 480 481// updateHandleError handles the Update error response. 482func (client *VirtualMachineScaleSetExtensionsClient) updateHandleError(resp *azcore.Response) error { 483 body, err := resp.Payload() 484 if err != nil { 485 return azcore.NewResponseError(err, resp.Response) 486 } 487 if len(body) == 0 { 488 return azcore.NewResponseError(errors.New(resp.Status), resp.Response) 489 } 490 return azcore.NewResponseError(errors.New(string(body)), resp.Response) 491} 492