@@ -38,34 +38,26 @@ public class NewAzureBackupProtectionPolicy : AzureBackupVaultCmdletBase
38
38
public string Name { get ; set ; }
39
39
40
40
[ Parameter ( Position = 2 , Mandatory = true , HelpMessage = AzureBackupCmdletHelpMessage . WorkloadType , ValueFromPipelineByPropertyName = true ) ]
41
- [ ValidateSet ( "VM " , IgnoreCase = true ) ]
42
- public string WorkloadType { get ; set ; }
41
+ [ ValidateSet ( "IaasVM " , IgnoreCase = true ) ]
42
+ public string Type { get ; set ; }
43
43
44
- [ Parameter ( Position = 3 , Mandatory = true , HelpMessage = AzureBackupCmdletHelpMessage . BackupType , ValueFromPipelineByPropertyName = true ) ]
45
- [ ValidateSet ( "Full" , IgnoreCase = true ) ]
46
- public string BackupType { get ; set ; }
47
-
48
- [ Parameter ( ParameterSetName = DailyScheduleParamSet , Position = 4 , Mandatory = false , HelpMessage = AzureBackupCmdletHelpMessage . DailyScheduleType ) ]
44
+ [ Parameter ( ParameterSetName = DailyScheduleParamSet , Position = 3 , Mandatory = false , HelpMessage = AzureBackupCmdletHelpMessage . DailyScheduleType ) ]
49
45
public SwitchParameter Daily { get ; set ; }
50
46
51
- [ Parameter ( ParameterSetName = WeeklyScheduleParamSet , Position = 5 , Mandatory = true , HelpMessage = AzureBackupCmdletHelpMessage . WeeklyScheduleType ) ]
47
+ [ Parameter ( ParameterSetName = WeeklyScheduleParamSet , Position = 4 , Mandatory = true , HelpMessage = AzureBackupCmdletHelpMessage . WeeklyScheduleType ) ]
52
48
public SwitchParameter Weekly { get ; set ; }
53
49
54
- [ Parameter ( Position = 6 , Mandatory = true , HelpMessage = AzureBackupCmdletHelpMessage . ScheduleRunTimes , ValueFromPipelineByPropertyName = true ) ]
55
- public DateTime ScheduleRunTimes { get ; set ; }
56
-
57
- [ Parameter ( Position = 7 , Mandatory = true , HelpMessage = AzureBackupCmdletHelpMessage . RetentionType , ValueFromPipelineByPropertyName = true ) ]
58
- [ ValidateSet ( "Days" , "Weeks" , IgnoreCase = true ) ]
59
- public string RetentionType { get ; set ; }
50
+ [ Parameter ( Position = 5 , Mandatory = true , HelpMessage = AzureBackupCmdletHelpMessage . ScheduleRunTimes , ValueFromPipelineByPropertyName = true ) ]
51
+ public DateTime BackupTime { get ; set ; }
60
52
61
- [ Parameter ( Position = 8 , Mandatory = true , HelpMessage = AzureBackupCmdletHelpMessage . RententionDuration , ValueFromPipelineByPropertyName = true ) ]
62
- public int RetentionDuration { get ; set ; }
63
-
64
- [ Parameter ( ParameterSetName = WeeklyScheduleParamSet , Position = 9 , Mandatory = true , HelpMessage = AzureBackupCmdletHelpMessage . ScheduleRunDays , ValueFromPipelineByPropertyName = true ) ]
65
- [ Parameter ( ParameterSetName = NoScheduleParamSet , Position = 9 , Mandatory = false , HelpMessage = AzureBackupCmdletHelpMessage . ScheduleRunDays , ValueFromPipelineByPropertyName = true ) ]
53
+ [ Parameter ( ParameterSetName = WeeklyScheduleParamSet , Position = 7 , Mandatory = true , HelpMessage = AzureBackupCmdletHelpMessage . ScheduleRunDays , ValueFromPipelineByPropertyName = true ) ]
54
+ [ Parameter ( ParameterSetName = NoScheduleParamSet , Position = 7 , Mandatory = false , HelpMessage = AzureBackupCmdletHelpMessage . ScheduleRunDays , ValueFromPipelineByPropertyName = true ) ]
66
55
[ AllowEmptyCollection ]
67
56
[ ValidateSet ( "Monday" , "Tuesday" , "Wednesday" , "Thursday" , "Friday" , "Saturday" , "Sunday" , IgnoreCase = true ) ]
68
- public string [ ] ScheduleRunDays { get ; set ; }
57
+ public string [ ] DaysOfWeek { get ; set ; }
58
+
59
+ [ Parameter ( Position = 6 , Mandatory = true , HelpMessage = AzureBackupCmdletHelpMessage . RetentionPolicyList ) ]
60
+ public AzureBackupRetentionPolicy [ ] RetentionPolicies { get ; set ; }
69
61
70
62
public override void ExecuteCmdlet ( )
71
63
{
@@ -77,24 +69,33 @@ public override void ExecuteCmdlet()
77
69
ProtectionPolicyHelpers . ValidateProtectionPolicyName ( Name ) ;
78
70
AzureBackupClient . CheckProtectionPolicyNameAvailability ( this . Name ) ;
79
71
80
- var ScheduleType = ProtectionPolicyHelpers . GetScheduleType ( ScheduleRunDays , this . ParameterSetName ,
72
+ var ScheduleType = ProtectionPolicyHelpers . GetScheduleType ( DaysOfWeek , this . ParameterSetName ,
81
73
DailyScheduleParamSet , WeeklyScheduleParamSet ) ;
82
74
83
- var backupSchedule = ProtectionPolicyHelpers . FillBackupSchedule ( BackupType , ScheduleType , ScheduleRunTimes ,
84
- RetentionType , RetentionDuration , ScheduleRunDays ) ;
75
+ var backupSchedule = ProtectionPolicyHelpers . FillCSMBackupSchedule ( ScheduleType , BackupTime ,
76
+ DaysOfWeek ) ;
77
+
78
+ ProtectionPolicyHelpers . ValidateRetentionPolicy ( RetentionPolicies , backupSchedule ) ;
85
79
86
- var addProtectionPolicyRequest = new AddProtectionPolicyRequest ( ) ;
87
- addProtectionPolicyRequest . PolicyName = this . Name ;
88
- addProtectionPolicyRequest . Schedule = backupSchedule ;
89
- addProtectionPolicyRequest . WorkloadType = Enum . Parse ( typeof ( WorkloadType ) , this . WorkloadType , true ) . ToString ( ) ;
80
+ AzureBackupProtectionPolicy protectionPolicy = new AzureBackupProtectionPolicy ( ) ;
81
+
82
+ var addCSMProtectionPolicyRequest = new CSMAddProtectionPolicyRequest ( ) ;
83
+ addCSMProtectionPolicyRequest . PolicyName = this . Name ;
84
+ addCSMProtectionPolicyRequest . Properties = new CSMAddProtectionPolicyRequestProperties ( ) ;
85
+ addCSMProtectionPolicyRequest . Properties . PolicyName = this . Name ;
86
+ addCSMProtectionPolicyRequest . Properties . BackupSchedule = backupSchedule ;
87
+ addCSMProtectionPolicyRequest . Properties . WorkloadType = Enum . Parse ( typeof ( WorkloadType ) , this . Type , true ) . ToString ( ) ;
90
88
91
- AzureBackupClient . AddProtectionPolicy ( addProtectionPolicyRequest ) ;
89
+ addCSMProtectionPolicyRequest . Properties . LtrRetentionPolicy = ProtectionPolicyHelpers . ConvertToCSMRetentionPolicyObject ( RetentionPolicies , backupSchedule ) ;
90
+
91
+ AzureBackupClient . AddProtectionPolicy ( this . Name , addCSMProtectionPolicyRequest ) ;
92
92
WriteDebug ( "Protection policy created successfully" ) ;
93
93
94
94
var policyInfo = AzureBackupClient . GetProtectionPolicyByName ( Name ) ;
95
95
WriteObject ( ProtectionPolicyHelpers . GetCmdletPolicy ( Vault , policyInfo ) ) ;
96
96
} ) ;
97
97
}
98
98
}
99
+
99
100
}
100
101
0 commit comments