@@ -483,6 +483,8 @@ private RestAzureNS.AzureOperationResponse<ProtectionPolicyResource> CreateorMod
483
483
ProviderData . ContainsKey ( PolicyParams . ProtectionPolicy ) ?
484
484
( PolicyBase ) ProviderData [ PolicyParams . ProtectionPolicy ] :
485
485
null ;
486
+ bool fixForInconsistentItems = ProviderData . ContainsKey ( PolicyParams . FixForInconsistentItems ) ?
487
+ ( bool ) ProviderData [ PolicyParams . FixForInconsistentItems ] : false ;
486
488
ProtectionPolicyResource serviceClientRequest = new ProtectionPolicyResource ( ) ;
487
489
488
490
if ( policy != null )
@@ -494,44 +496,58 @@ private RestAzureNS.AzureOperationResponse<ProtectionPolicyResource> CreateorMod
494
496
// RetentionPolicy and SchedulePolicy both should not be empty
495
497
if ( retentionPolicy == null && schedulePolicy == null )
496
498
{
497
- throw new ArgumentException ( Resources . BothRetentionAndSchedulePoliciesEmpty ) ;
498
- }
499
-
500
- // validate RetentionPolicy and SchedulePolicy
501
- if ( schedulePolicy != null )
502
- {
503
- AzureWorkloadProviderHelper . ValidateSQLSchedulePolicy ( schedulePolicy ) ;
504
- AzureWorkloadProviderHelper . GetUpdatedSchedulePolicy ( policy , ( SQLSchedulePolicy ) schedulePolicy ) ;
505
- Logger . Instance . WriteDebug ( "Validation of Schedule policy is successful" ) ;
499
+ if ( fixForInconsistentItems == false )
500
+ {
501
+ throw new ArgumentException ( Resources . BothRetentionAndSchedulePoliciesEmpty ) ;
502
+ }
503
+ AzureVmWorkloadProtectionPolicy azureVmWorkloadModifyPolicy = new AzureVmWorkloadProtectionPolicy ( ) ;
504
+ azureVmWorkloadModifyPolicy . Settings = new Settings ( "UTC" ,
505
+ ( ( AzureVmWorkloadPolicy ) policy ) . IsCompression ,
506
+ ( ( AzureVmWorkloadPolicy ) policy ) . IsCompression ) ;
507
+ azureVmWorkloadModifyPolicy . WorkLoadType = ConversionUtils . GetServiceClientWorkloadType ( policy . WorkloadType . ToString ( ) ) ;
508
+ azureVmWorkloadModifyPolicy . SubProtectionPolicy = new List < SubProtectionPolicy > ( ) ;
509
+ azureVmWorkloadModifyPolicy . SubProtectionPolicy = PolicyHelpers . GetServiceClientSubProtectionPolicy ( ( AzureVmWorkloadPolicy ) policy ) ;
510
+ azureVmWorkloadModifyPolicy . MakePolicyConsistent = true ;
511
+ serviceClientRequest . Properties = azureVmWorkloadModifyPolicy ;
506
512
}
507
- if ( retentionPolicy != null )
513
+ else
508
514
{
509
- AzureWorkloadProviderHelper . ValidateSQLRetentionPolicy ( retentionPolicy ) ;
510
- AzureWorkloadProviderHelper . GetUpdatedRetentionPolicy ( policy , ( SQLRetentionPolicy ) retentionPolicy ) ;
511
- Logger . Instance . WriteDebug ( "Validation of Retention policy is successful" ) ;
512
- }
513
-
514
- // copy the backupSchedule time to retentionPolicy after converting to UTC
515
- AzureWorkloadProviderHelper . CopyScheduleTimeToRetentionTimes (
516
- ( CmdletModel . LongTermRetentionPolicy ) ( ( AzureVmWorkloadPolicy ) policy ) . FullBackupRetentionPolicy ,
517
- ( CmdletModel . SimpleSchedulePolicy ) ( ( AzureVmWorkloadPolicy ) policy ) . FullBackupSchedulePolicy ) ;
518
- Logger . Instance . WriteDebug ( "Copy of RetentionTime from with SchedulePolicy to RetentionPolicy is successful" ) ;
519
-
520
- // Now validate both RetentionPolicy and SchedulePolicy matches or not
521
- PolicyHelpers . ValidateLongTermRetentionPolicyWithSimpleRetentionPolicy (
522
- ( CmdletModel . LongTermRetentionPolicy ) ( ( AzureVmWorkloadPolicy ) policy ) . FullBackupRetentionPolicy ,
523
- ( CmdletModel . SimpleSchedulePolicy ) ( ( AzureVmWorkloadPolicy ) policy ) . FullBackupSchedulePolicy ) ;
524
- Logger . Instance . WriteDebug ( "Validation of Retention policy with Schedule policy is successful" ) ;
515
+ // validate RetentionPolicy and SchedulePolicy
516
+ if ( schedulePolicy != null )
517
+ {
518
+ AzureWorkloadProviderHelper . ValidateSQLSchedulePolicy ( schedulePolicy ) ;
519
+ AzureWorkloadProviderHelper . GetUpdatedSchedulePolicy ( policy , ( SQLSchedulePolicy ) schedulePolicy ) ;
520
+ Logger . Instance . WriteDebug ( "Validation of Schedule policy is successful" ) ;
521
+ }
522
+ if ( retentionPolicy != null )
523
+ {
524
+ AzureWorkloadProviderHelper . ValidateSQLRetentionPolicy ( retentionPolicy ) ;
525
+ AzureWorkloadProviderHelper . GetUpdatedRetentionPolicy ( policy , ( SQLRetentionPolicy ) retentionPolicy ) ;
526
+ Logger . Instance . WriteDebug ( "Validation of Retention policy is successful" ) ;
527
+ }
525
528
526
- // construct Service Client policy request
527
- AzureVmWorkloadProtectionPolicy azureVmWorkloadProtectionPolicy = new AzureVmWorkloadProtectionPolicy ( ) ;
528
- azureVmWorkloadProtectionPolicy . Settings = new Settings ( "UTC" ,
529
- ( ( AzureVmWorkloadPolicy ) policy ) . IsCompression ,
530
- ( ( AzureVmWorkloadPolicy ) policy ) . IsCompression ) ;
531
- azureVmWorkloadProtectionPolicy . WorkLoadType = ConversionUtils . GetServiceClientWorkloadType ( policy . WorkloadType . ToString ( ) ) ;
532
- azureVmWorkloadProtectionPolicy . SubProtectionPolicy = new List < SubProtectionPolicy > ( ) ;
533
- azureVmWorkloadProtectionPolicy . SubProtectionPolicy = PolicyHelpers . GetServiceClientSubProtectionPolicy ( ( AzureVmWorkloadPolicy ) policy ) ;
534
- serviceClientRequest . Properties = azureVmWorkloadProtectionPolicy ;
529
+ // copy the backupSchedule time to retentionPolicy after converting to UTC
530
+ AzureWorkloadProviderHelper . CopyScheduleTimeToRetentionTimes (
531
+ ( CmdletModel . LongTermRetentionPolicy ) ( ( AzureVmWorkloadPolicy ) policy ) . FullBackupRetentionPolicy ,
532
+ ( CmdletModel . SimpleSchedulePolicy ) ( ( AzureVmWorkloadPolicy ) policy ) . FullBackupSchedulePolicy ) ;
533
+ Logger . Instance . WriteDebug ( "Copy of RetentionTime from with SchedulePolicy to RetentionPolicy is successful" ) ;
534
+
535
+ // Now validate both RetentionPolicy and SchedulePolicy matches or not
536
+ PolicyHelpers . ValidateLongTermRetentionPolicyWithSimpleRetentionPolicy (
537
+ ( CmdletModel . LongTermRetentionPolicy ) ( ( AzureVmWorkloadPolicy ) policy ) . FullBackupRetentionPolicy ,
538
+ ( CmdletModel . SimpleSchedulePolicy ) ( ( AzureVmWorkloadPolicy ) policy ) . FullBackupSchedulePolicy ) ;
539
+ Logger . Instance . WriteDebug ( "Validation of Retention policy with Schedule policy is successful" ) ;
540
+
541
+ // construct Service Client policy request
542
+ AzureVmWorkloadProtectionPolicy azureVmWorkloadProtectionPolicy = new AzureVmWorkloadProtectionPolicy ( ) ;
543
+ azureVmWorkloadProtectionPolicy . Settings = new Settings ( "UTC" ,
544
+ ( ( AzureVmWorkloadPolicy ) policy ) . IsCompression ,
545
+ ( ( AzureVmWorkloadPolicy ) policy ) . IsCompression ) ;
546
+ azureVmWorkloadProtectionPolicy . WorkLoadType = ConversionUtils . GetServiceClientWorkloadType ( policy . WorkloadType . ToString ( ) ) ;
547
+ azureVmWorkloadProtectionPolicy . SubProtectionPolicy = new List < SubProtectionPolicy > ( ) ;
548
+ azureVmWorkloadProtectionPolicy . SubProtectionPolicy = PolicyHelpers . GetServiceClientSubProtectionPolicy ( ( AzureVmWorkloadPolicy ) policy ) ;
549
+ serviceClientRequest . Properties = azureVmWorkloadProtectionPolicy ;
550
+ }
535
551
}
536
552
else
537
553
{
0 commit comments