/// <summary> /// Helper function to convert ps backup policy model for AzureSql from service response. /// </summary> public static PolicyBase GetPolicyModelForAzureSql(ServiceClientModel.ProtectionPolicyResource serviceClientResponse, PolicyBase policyModel) { ServiceClientModel.AzureSqlProtectionPolicy azureSqlPolicy = (ServiceClientModel.AzureSqlProtectionPolicy)serviceClientResponse.Properties; if (azureSqlPolicy.RetentionPolicy.GetType() != typeof(ServiceClientModel.SimpleRetentionPolicy)) { Logger.Instance.WriteDebug("Unknown RetentionPolicy object received: " + azureSqlPolicy.RetentionPolicy.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } policyModel = new AzureSqlPolicy(); AzureSqlPolicy sqlPolicyModel = policyModel as AzureSqlPolicy; sqlPolicyModel.WorkloadType = WorkloadType.AzureSQLDatabase; sqlPolicyModel.BackupManagementType = BackupManagementType.AzureSQL; ServiceClientModel.SimpleRetentionPolicy azureSqlRetentionPolicy = (ServiceClientModel.SimpleRetentionPolicy)azureSqlPolicy.RetentionPolicy; sqlPolicyModel.RetentionPolicy = PolicyHelpers.GetPSSimpleRetentionPolicy(azureSqlRetentionPolicy, null, "AzureSql"); return(policyModel); }
/// <summary> /// Helper function to convert ps backup policy model for AzureVM from service response. /// </summary> public static PolicyBase GetPolicyModelForAzureIaaSVM(ServiceClientModel.ProtectionPolicyResource serviceClientResponse, PolicyBase policyModel) { if (((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).RetentionPolicy.GetType() != typeof(ServiceClientModel.LongTermRetentionPolicy)) { Logger.Instance.WriteDebug("Unknown RetentionPolicy object received: " + ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).RetentionPolicy.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } if (((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).SchedulePolicy.GetType() != typeof(ServiceClientModel.SimpleSchedulePolicy)) { Logger.Instance.WriteDebug("Unknown SchedulePolicy object received: " + ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).SchedulePolicy.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } policyModel = new AzureVmPolicy(); AzureVmPolicy iaasPolicyModel = policyModel as AzureVmPolicy; iaasPolicyModel.WorkloadType = WorkloadType.AzureVM; iaasPolicyModel.BackupManagementType = BackupManagementType.AzureVM; iaasPolicyModel.RetentionPolicy = PolicyHelpers.GetPSLongTermRetentionPolicy((ServiceClientModel.LongTermRetentionPolicy) ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).RetentionPolicy, ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).TimeZone); iaasPolicyModel.SchedulePolicy = PolicyHelpers.GetPSSimpleSchedulePolicy((ServiceClientModel.SimpleSchedulePolicy) ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).SchedulePolicy, ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).TimeZone); return(policyModel); }
public override void ExecuteCmdlet() { ExecutionBlock(() => { base.ExecuteCmdlet(); ResourceIdentifier resourceIdentifier = new ResourceIdentifier(VaultId); string vaultName = resourceIdentifier.ResourceName; string resourceGroupName = resourceIdentifier.ResourceGroupName; WriteDebug(string.Format("Input params - Name:{0}, WorkloadType:{1}, " + "BackupManagementType: {2}, " + "RetentionPolicy:{3}, SchedulePolicy:{4}", Name, WorkloadType.ToString(), BackupManagementType.HasValue ? BackupManagementType.ToString() : "NULL", RetentionPolicy == null ? "NULL" : RetentionPolicy.ToString(), SchedulePolicy == null ? "NULL" : SchedulePolicy.ToString())); // validate policy name PolicyCmdletHelpers.ValidateProtectionPolicyName(Name); // Validate if policy already exists if (PolicyCmdletHelpers.GetProtectionPolicyByName( Name, ServiceClientAdapter, vaultName: vaultName, resourceGroupName: resourceGroupName) != null) { throw new ArgumentException(string.Format(Resources.PolicyAlreadyExistException, Name)); } Dictionary <Enum, object> providerParameters = new Dictionary <Enum, object>(); providerParameters.Add(VaultParams.VaultName, vaultName); providerParameters.Add(VaultParams.ResourceGroupName, resourceGroupName); providerParameters.Add(PolicyParams.PolicyName, Name); providerParameters.Add(PolicyParams.WorkloadType, WorkloadType); providerParameters.Add(PolicyParams.RetentionPolicy, RetentionPolicy); providerParameters.Add(PolicyParams.SchedulePolicy, SchedulePolicy); PsBackupProviderManager providerManager = new PsBackupProviderManager(providerParameters, ServiceClientAdapter); IPsBackupProvider psBackupProvider = providerManager.GetProviderInstance(WorkloadType, BackupManagementType); psBackupProvider.CreatePolicy(); WriteDebug("Successfully created policy, now fetching it from service: " + Name); // now get the created policy and return ServiceClientModel.ProtectionPolicyResource policy = PolicyCmdletHelpers.GetProtectionPolicyByName( Name, ServiceClientAdapter, vaultName: vaultName, resourceGroupName: resourceGroupName); // now convert service Policy to PSObject WriteObject(ConversionHelpers.GetPolicyModel(policy)); }, ShouldProcess(Name, VerbsCommon.New)); }
/// <summary> /// Helper function to convert ps backup policy model from service response. /// </summary> public static PolicyBase GetPolicyModel(ServiceClientModel.ProtectionPolicyResource serviceClientResponse) { PolicyBase policyModel = null; if (serviceClientResponse == null || serviceClientResponse.Properties == null) { Logger.Instance.WriteDebug("Policy Service Client response is Null/Empty"); throw new ArgumentException(Resources.EmptyServiceClientResponseException); } if (serviceClientResponse.Properties.GetType() == typeof(ServiceClientModel.AzureIaaSVMProtectionPolicy)) { if (((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).RetentionPolicy.GetType() != typeof(ServiceClientModel.LongTermRetentionPolicy)) { Logger.Instance.WriteDebug("Unknown RetentionPolicy object received: " + ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).RetentionPolicy.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } if (((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).SchedulePolicy.GetType() != typeof(ServiceClientModel.SimpleSchedulePolicy)) { Logger.Instance.WriteDebug("Unknown SchedulePolicy object received: " + ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).SchedulePolicy.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } policyModel = new AzureVmPolicy(); AzureVmPolicy iaasPolicyModel = policyModel as AzureVmPolicy; iaasPolicyModel.WorkloadType = Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.Models.WorkloadType.AzureVM; iaasPolicyModel.BackupManagementType = Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.Models.BackupManagementType.AzureVM; iaasPolicyModel.RetentionPolicy = PolicyHelpers.GetPSLongTermRetentionPolicy((ServiceClientModel.LongTermRetentionPolicy) ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).RetentionPolicy); iaasPolicyModel.SchedulePolicy = PolicyHelpers.GetPSSimpleSchedulePolicy((ServiceClientModel.SimpleSchedulePolicy) ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).SchedulePolicy); } else { // we will enter this case when service supports new workload and customer // still using old version of azure powershell. Trace warning message, ignore and return Logger.Instance.WriteDebug("Unknown Policy object received: " + serviceClientResponse.Properties.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } policyModel.Name = serviceClientResponse.Name; policyModel.Id = serviceClientResponse.Id; return(policyModel); }
/// <summary> /// Helper function to convert ps backup policy model for AzureVM from service response. /// </summary> public static PolicyBase GetPolicyModelForAzureIaaSVM(ServiceClientModel.ProtectionPolicyResource serviceClientResponse, PolicyBase policyModel) { string backupManagementType = Management.RecoveryServices.Backup.Models.BackupManagementType.AzureIaasVM; if (((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).RetentionPolicy.GetType() != typeof(ServiceClientModel.LongTermRetentionPolicy)) { Logger.Instance.WriteDebug("Unknown RetentionPolicy object received: " + ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).RetentionPolicy.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } if (((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).SchedulePolicy.GetType() != typeof(ServiceClientModel.SimpleSchedulePolicy)) { Logger.Instance.WriteDebug("Unknown SchedulePolicy object received: " + ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).SchedulePolicy.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } policyModel = new AzureVmPolicy(); AzureVmPolicy iaasPolicyModel = policyModel as AzureVmPolicy; iaasPolicyModel.WorkloadType = WorkloadType.AzureVM; iaasPolicyModel.BackupManagementType = BackupManagementType.AzureVM; iaasPolicyModel.SnapshotRetentionInDays = ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse. Properties).InstantRpRetentionRangeInDays; iaasPolicyModel.ProtectedItemsCount = ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse. Properties).ProtectedItemsCount; iaasPolicyModel.RetentionPolicy = PolicyHelpers.GetPSLongTermRetentionPolicy((ServiceClientModel.LongTermRetentionPolicy) ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).RetentionPolicy, ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).TimeZone, backupManagementType); iaasPolicyModel.SchedulePolicy = PolicyHelpers.GetPSSimpleSchedulePolicy((ServiceClientModel.SimpleSchedulePolicy) ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).SchedulePolicy, ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).TimeZone); iaasPolicyModel.AzureBackupRGName = ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).InstantRPDetails.AzureBackupRGNamePrefix; iaasPolicyModel.AzureBackupRGNameSuffix = ((ServiceClientModel.AzureIaaSVMProtectionPolicy)serviceClientResponse.Properties).InstantRPDetails.AzureBackupRGNameSuffix; return(policyModel); }
/// <summary> /// Helper function to convert ps backup policy model from service response. /// </summary> public static PolicyBase GetPolicyModel(ServiceClientModel.ProtectionPolicyResource serviceClientResponse) { PolicyBase policyModel = null; if (serviceClientResponse == null || serviceClientResponse.Properties == null) { Logger.Instance.WriteDebug("Policy Service Client response is Null/Empty"); throw new ArgumentException(Resources.EmptyServiceClientResponseException); } if (serviceClientResponse.Properties.GetType() == typeof(ServiceClientModel.AzureIaaSVMProtectionPolicy)) { policyModel = GetPolicyModelForAzureIaaSVM(serviceClientResponse, policyModel); } else if (serviceClientResponse.Properties.GetType() == typeof(ServiceClientModel.AzureSqlProtectionPolicy)) { policyModel = GetPolicyModelForAzureSql(serviceClientResponse, policyModel); } else if (serviceClientResponse.Properties.GetType() == typeof(ServiceClientModel.AzureFileShareProtectionPolicy)) { policyModel = GetPolicyModelForAzureFileShare(serviceClientResponse, policyModel); } else if (serviceClientResponse.Properties.GetType() == typeof(ServiceClientModel.AzureVmWorkloadProtectionPolicy)) { policyModel = GetPolicyModelForAzureVmWorkload(serviceClientResponse, policyModel); } else { // we will enter this case when service supports new workload and customer // still using old version of azure powershell. Trace warning message, ignore and return Logger.Instance.WriteDebug("Unknown Policy object received: " + serviceClientResponse.Properties.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } policyModel.Name = serviceClientResponse.Name; policyModel.Id = serviceClientResponse.Id; return(policyModel); }
/// <summary> /// Helper function to convert ps backup policy model for Azure FileShare from service response. /// </summary> public static PolicyBase GetPolicyModelForAzureFileShare(ServiceClientModel.ProtectionPolicyResource serviceClientResponse, PolicyBase policyModel) { string backupManagementType = Management.RecoveryServices.Backup.Models.BackupManagementType.AzureStorage; ServiceClientModel.AzureFileShareProtectionPolicy azureFileSharePolicy = (ServiceClientModel.AzureFileShareProtectionPolicy)serviceClientResponse.Properties; if (azureFileSharePolicy.RetentionPolicy.GetType() != typeof(ServiceClientModel.LongTermRetentionPolicy)) { Logger.Instance.WriteDebug("Unknown RetentionPolicy object received: " + azureFileSharePolicy.RetentionPolicy.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } if (azureFileSharePolicy.SchedulePolicy.GetType() != typeof(ServiceClientModel.SimpleSchedulePolicy)) { Logger.Instance.WriteDebug("Unknown SchedulePolicy object received: " + azureFileSharePolicy.SchedulePolicy.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } policyModel = new AzureFileSharePolicy(); AzureFileSharePolicy fileSharePolicyModel = policyModel as AzureFileSharePolicy; fileSharePolicyModel.WorkloadType = WorkloadType.AzureFiles; fileSharePolicyModel.BackupManagementType = BackupManagementType.AzureStorage; fileSharePolicyModel.RetentionPolicy = PolicyHelpers.GetPSLongTermRetentionPolicy((ServiceClientModel.LongTermRetentionPolicy)((ServiceClientModel.AzureFileShareProtectionPolicy)serviceClientResponse.Properties).RetentionPolicy, ((ServiceClientModel.AzureFileShareProtectionPolicy)serviceClientResponse.Properties).TimeZone, backupManagementType); fileSharePolicyModel.SchedulePolicy = PolicyHelpers.GetPSSimpleSchedulePolicy((ServiceClientModel.SimpleSchedulePolicy) ((ServiceClientModel.AzureFileShareProtectionPolicy)serviceClientResponse.Properties).SchedulePolicy, ((ServiceClientModel.AzureFileShareProtectionPolicy)serviceClientResponse.Properties).TimeZone); fileSharePolicyModel.ProtectedItemsCount = ((ServiceClientModel.AzureFileShareProtectionPolicy)serviceClientResponse. Properties).ProtectedItemsCount; return(policyModel); }
public static void GetPSSubProtectionPolicy(AzureVmWorkloadPolicy azureVmWorkloadPolicyModel, ServiceClientModel.ProtectionPolicyResource serviceClientResponse, string timeZone) { foreach (var subProtectionPolicy in ((ServiceClientModel.AzureVmWorkloadProtectionPolicy)serviceClientResponse.Properties).SubProtectionPolicy) { if (string.Compare(subProtectionPolicy.PolicyType, "Full") == 0) { azureVmWorkloadPolicyModel.FullBackupSchedulePolicy = PolicyHelpers.GetPSSimpleSchedulePolicy( (ServiceClientModel.SimpleSchedulePolicy)subProtectionPolicy.SchedulePolicy, ((ServiceClientModel.AzureVmWorkloadProtectionPolicy)serviceClientResponse.Properties).Settings.TimeZone); azureVmWorkloadPolicyModel.FullBackupRetentionPolicy = PolicyHelpers.GetPSLongTermRetentionPolicy( (ServiceClientModel.LongTermRetentionPolicy)subProtectionPolicy.RetentionPolicy, ((ServiceClientModel.AzureVmWorkloadProtectionPolicy)serviceClientResponse.Properties).Settings.TimeZone); } else if (string.Compare(subProtectionPolicy.PolicyType, "Differential") == 0) { azureVmWorkloadPolicyModel.DifferentialBackupSchedulePolicy = PolicyHelpers.GetPSSimpleSchedulePolicy( (ServiceClientModel.SimpleSchedulePolicy)subProtectionPolicy.SchedulePolicy, ((ServiceClientModel.AzureVmWorkloadProtectionPolicy)serviceClientResponse.Properties).Settings.TimeZone); azureVmWorkloadPolicyModel.DifferentialBackupRetentionPolicy = PolicyHelpers.GetPSSimpleRetentionPolicy( (ServiceClientModel.SimpleRetentionPolicy)subProtectionPolicy.RetentionPolicy, ((ServiceClientModel.AzureVmWorkloadProtectionPolicy)serviceClientResponse.Properties).Settings.TimeZone, "AzureWorkload"); azureVmWorkloadPolicyModel.IsDifferentialBackupEnabled = true; } else if (string.Compare(subProtectionPolicy.PolicyType, "Log") == 0) { azureVmWorkloadPolicyModel.LogBackupSchedulePolicy = PolicyHelpers.GetPSLogSchedulePolicy((ServiceClientModel.LogSchedulePolicy) subProtectionPolicy.SchedulePolicy, ((ServiceClientModel.AzureVmWorkloadProtectionPolicy)serviceClientResponse.Properties).Settings.TimeZone); azureVmWorkloadPolicyModel.LogBackupRetentionPolicy = PolicyHelpers.GetPSSimpleRetentionPolicy((ServiceClientModel.SimpleRetentionPolicy) subProtectionPolicy.RetentionPolicy, ((ServiceClientModel.AzureVmWorkloadProtectionPolicy)serviceClientResponse.Properties).Settings.TimeZone, "AzureWorkload"); azureVmWorkloadPolicyModel.IsLogBackupEnabled = true; } } }
public override void ExecuteCmdlet() { ExecutionBlock(() => { base.ExecuteCmdlet(); ResourceIdentifier resourceIdentifier = new ResourceIdentifier(VaultId); string vaultName = resourceIdentifier.ResourceName; string resourceGroupName = resourceIdentifier.ResourceGroupName; WriteDebug(string.Format("Input params - Name:{0}, " + "WorkloadType: {1}, BackupManagementType:{2}, " + "ParameterSetName: {3}", Name == null ? "NULL" : Name, WorkloadType.HasValue ? WorkloadType.ToString() : "NULL", BackupManagementType.HasValue ? BackupManagementType.ToString() : "NULL", this.ParameterSetName)); if (ParameterSetName == PolicyNameParamSet) { // validate policyName PolicyCmdletHelpers.ValidateProtectionPolicyName(Name); // query service ServiceClientModel.ProtectionPolicyResource policy = PolicyCmdletHelpers.GetProtectionPolicyByName( Name, ServiceClientAdapter, vaultName: vaultName, resourceGroupName: resourceGroupName); if (policy == null) { throw new ArgumentException(string.Format(Resources.PolicyNotFoundException, Name)); } WriteObject(ConversionHelpers.GetPolicyModel(policy)); } else { List <PolicyBase> policyList = new List <PolicyBase>(); string serviceClientProviderType = null; switch (this.ParameterSetName) { case WorkloadParamSet: if (WorkloadType == Models.WorkloadType.AzureVM) { serviceClientProviderType = ServiceClientHelpers.GetServiceClientProviderType(Models.WorkloadType.AzureVM); } else if (WorkloadType == Models.WorkloadType.AzureSQLDatabase) { serviceClientProviderType = ServiceClientHelpers.GetServiceClientProviderType(Models.WorkloadType.AzureSQLDatabase); } else if (WorkloadType == Models.WorkloadType.AzureFiles) { serviceClientProviderType = ServiceClientHelpers.GetServiceClientProviderType(Models.WorkloadType.AzureFiles); } else if (WorkloadType == Models.WorkloadType.MSSQL) { serviceClientProviderType = ServiceClientHelpers.GetServiceClientProviderType(Models.WorkloadType.MSSQL); } break; case WorkloadBackupMangementTypeParamSet: if (WorkloadType == Models.WorkloadType.AzureVM) { if (BackupManagementType != Models.BackupManagementType.AzureVM) { throw new ArgumentException( Resources.AzureVMUnsupportedBackupManagementTypeException); } serviceClientProviderType = ServiceClientHelpers. GetServiceClientProviderType(Models.WorkloadType.AzureVM); } else if (WorkloadType == Models.WorkloadType.AzureSQLDatabase) { if (BackupManagementType != Models.BackupManagementType.AzureSQL) { throw new ArgumentException( Resources.AzureSqlUnsupportedBackupManagementTypeException); } serviceClientProviderType = ServiceClientHelpers.GetServiceClientProviderType( Models.WorkloadType.AzureSQLDatabase); } else if (WorkloadType == Models.WorkloadType.AzureFiles) { if (BackupManagementType != Models.BackupManagementType.AzureStorage) { throw new ArgumentException( Resources.AzureFileUnsupportedBackupManagementTypeException); } serviceClientProviderType = ServiceClientHelpers.GetServiceClientProviderType( Models.WorkloadType.AzureFiles); } else if (WorkloadType == Models.WorkloadType.AzureFiles) { if (BackupManagementType != Models.BackupManagementType.AzureStorage) { throw new ArgumentException( Resources.AzureFileUnsupportedBackupManagementTypeException); } serviceClientProviderType = ServiceClientHelpers.GetServiceClientProviderType( Models.WorkloadType.AzureFiles); } else if (WorkloadType == Models.WorkloadType.MSSQL) { if (BackupManagementType != Models.BackupManagementType.AzureWorkload) { throw new ArgumentException( Resources.AzureFileUnsupportedBackupManagementTypeException); } serviceClientProviderType = ServiceClientHelpers.GetServiceClientProviderType( Models.WorkloadType.MSSQL); } else { throw new ArgumentException(string.Format( Resources.UnsupportedWorkloadBackupManagementTypeException, WorkloadType.ToString(), BackupManagementType.ToString())); } break; default: break; } var backupManagementTypeFilter = serviceClientProviderType; ODataQuery <ServiceClientModel.ProtectionPolicyQueryObject> queryParams = new ODataQuery <ServiceClientModel.ProtectionPolicyQueryObject>( q => q.BackupManagementType == backupManagementTypeFilter); WriteDebug("going to query service to get list of policies"); List <ServiceClientModel.ProtectionPolicyResource> respList = ServiceClientAdapter.ListProtectionPolicy( queryParams, vaultName: vaultName, resourceGroupName: resourceGroupName); WriteDebug("Successfully got response from service"); policyList = ConversionHelpers.GetPolicyModelList(respList); WriteObject(policyList, enumerateCollection: true); } }); }
public static PolicyBase GetPolicyModelForAzureVmWorkload(ServiceClientModel.ProtectionPolicyResource serviceClientResponse, PolicyBase policyModel) { ServiceClientModel.AzureVmWorkloadProtectionPolicy azureVmWorkloadPolicy = (ServiceClientModel.AzureVmWorkloadProtectionPolicy)serviceClientResponse.Properties; foreach (var policy in azureVmWorkloadPolicy.SubProtectionPolicy) { if (string.Compare(policy.PolicyType, "Full") == 0) { if (policy.SchedulePolicy.GetType() != typeof(ServiceClientModel.SimpleSchedulePolicy)) { Logger.Instance.WriteDebug("Unknown Schedule object received: " + policy.SchedulePolicy.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } if (policy.RetentionPolicy.GetType() != typeof(ServiceClientModel.LongTermRetentionPolicy)) { Logger.Instance.WriteDebug("Unknown RetentionPolicy object received: " + policy.RetentionPolicy.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } } else if (string.Compare(policy.PolicyType, "Differential") == 0) { if (policy.SchedulePolicy.GetType() != typeof(ServiceClientModel.SimpleSchedulePolicy)) { Logger.Instance.WriteDebug("Unknown Schedule object received: " + policy.SchedulePolicy.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } if (policy.RetentionPolicy.GetType() != typeof(ServiceClientModel.SimpleRetentionPolicy)) { Logger.Instance.WriteDebug("Unknown RetentionPolicy object received: " + policy.RetentionPolicy.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } } else if (string.Compare(policy.PolicyType, "Log") == 0) { if (policy.SchedulePolicy.GetType() != typeof(ServiceClientModel.LogSchedulePolicy)) { Logger.Instance.WriteDebug("Unknown Schedule object received: " + policy.SchedulePolicy.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } if (policy.RetentionPolicy.GetType() != typeof(ServiceClientModel.SimpleRetentionPolicy)) { Logger.Instance.WriteDebug("Unknown RetentionPolicy object received: " + policy.RetentionPolicy.GetType()); Logger.Instance.WriteWarning(Resources.UpdateToNewAzurePowershellWarning); return(null); } } } policyModel = new AzureVmWorkloadPolicy(); AzureVmWorkloadPolicy azureVmWorkloadPolicyModel = policyModel as AzureVmWorkloadPolicy; azureVmWorkloadPolicyModel.WorkloadType = WorkloadType.MSSQL; azureVmWorkloadPolicyModel.BackupManagementType = BackupManagementType.AzureWorkload; azureVmWorkloadPolicyModel.IsCompression = ((ServiceClientModel.AzureVmWorkloadProtectionPolicy)serviceClientResponse.Properties).Settings.IsCompression; azureVmWorkloadPolicyModel.IsDifferentialBackupEnabled = false; azureVmWorkloadPolicyModel.IsLogBackupEnabled = false; GetPSSubProtectionPolicy(azureVmWorkloadPolicyModel, serviceClientResponse, ((ServiceClientModel.AzureVmWorkloadProtectionPolicy)serviceClientResponse.Properties).Settings.TimeZone); return(policyModel); }