@@ -307,15 +307,22 @@ private AzureOperationResponse<VirtualMachine> UpdateVmEncryptionSettings(DiskEn
307
307
Tags = vmParameters . Tags
308
308
} ;
309
309
310
- AzureOperationResponse < VirtualMachine > updateResult ;
310
+ AzureOperationResponse < VirtualMachine > updateResult = null ;
311
311
312
312
// The 2nd pass. If something goes wrong here, try to revert to encryptionSettingsBackup.
313
313
if ( encryptionSettingsBackup . Enabled != true )
314
314
{
315
- updateResult = this . ComputeClient . ComputeManagementClient . VirtualMachines . CreateOrUpdateWithHttpMessagesAsync (
316
- this . ResourceGroupName ,
317
- vmParameters . Name ,
318
- parameters ) . GetAwaiter ( ) . GetResult ( ) ;
315
+ try
316
+ {
317
+ updateResult = this . ComputeClient . ComputeManagementClient . VirtualMachines . CreateOrUpdateWithHttpMessagesAsync (
318
+ this . ResourceGroupName ,
319
+ vmParameters . Name ,
320
+ parameters ) . GetAwaiter ( ) . GetResult ( ) ;
321
+ } catch ( Exception e )
322
+ {
323
+ revertVm ( encryptionSettingsBackup ) ;
324
+ throw e ;
325
+ }
319
326
320
327
if ( ! updateResult . Response . IsSuccessStatusCode )
321
328
{
@@ -324,6 +331,7 @@ private AzureOperationResponse<VirtualMachine> UpdateVmEncryptionSettings(DiskEn
324
331
}
325
332
else
326
333
{
334
+
327
335
// For premium storage VMs, stop-update-start
328
336
// stop vm
329
337
this . ComputeClient . ComputeManagementClient . VirtualMachines
@@ -346,14 +354,28 @@ private AzureOperationResponse<VirtualMachine> UpdateVmEncryptionSettings(DiskEn
346
354
Location = vmParameters . Location ,
347
355
Tags = vmParameters . Tags
348
356
} ;
349
- updateResult = this . ComputeClient . ComputeManagementClient . VirtualMachines . CreateOrUpdateWithHttpMessagesAsync (
350
- this . ResourceGroupName ,
351
- vmParameters . Name ,
352
- parameters ) . GetAwaiter ( ) . GetResult ( ) ;
357
+ AzureOperationResponse < Azure . Management . Compute . Models . OperationStatusResponse > startOp = null ;
358
+ try
359
+ {
360
+ updateResult = this . ComputeClient . ComputeManagementClient . VirtualMachines . CreateOrUpdateWithHttpMessagesAsync (
361
+ this . ResourceGroupName ,
362
+ vmParameters . Name ,
363
+ parameters ) . GetAwaiter ( ) . GetResult ( ) ;
353
364
354
- // start vm
355
- var startOp = this . ComputeClient . ComputeManagementClient . VirtualMachines
356
- . StartWithHttpMessagesAsync ( this . ResourceGroupName , this . VMName ) . GetAwaiter ( ) . GetResult ( ) ;
365
+ // start vm
366
+ startOp = this . ComputeClient . ComputeManagementClient . VirtualMachines
367
+ . StartWithHttpMessagesAsync ( ResourceGroupName , this . VMName ) . GetAwaiter ( ) . GetResult ( ) ;
368
+ } catch ( Exception e )
369
+ {
370
+ // in case of error: stop-revert-start
371
+ this . ComputeClient . ComputeManagementClient . VirtualMachines
372
+ . DeallocateWithHttpMessagesAsync ( this . ResourceGroupName , this . VMName ) . GetAwaiter ( )
373
+ . GetResult ( ) ;
374
+ revertVm ( encryptionSettingsBackup ) ;
375
+ this . ComputeClient . ComputeManagementClient . VirtualMachines
376
+ . StartWithHttpMessagesAsync ( this . ResourceGroupName , this . VMName ) . GetAwaiter ( ) . GetResult ( ) ;
377
+ throw e ;
378
+ }
357
379
if ( ! updateResult . Response . IsSuccessStatusCode || ! startOp . Response . IsSuccessStatusCode )
358
380
{
359
381
// in case of error: stop-revert-start
0 commit comments