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