Ejemplo n.º 1
0
        /// <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);
        }
        GetServiceClientSimpleRetentionPolicy(SimpleRetentionPolicy psRetPolicy)
        {
            if (psRetPolicy == null)
            {
                return(null);
            }
            else
            {
                ServiceClientModel.SimpleRetentionPolicy simpleRetPolicy =
                    new ServiceClientModel.SimpleRetentionPolicy();

                simpleRetPolicy.RetentionDuration = new ServiceClientModel.RetentionDuration();
                simpleRetPolicy.RetentionDuration.DurationType =
                    ServiceClientHelpers.GetServiceClientRetentionDurationType(psRetPolicy.RetentionDurationType);
                simpleRetPolicy.RetentionDuration.Count = psRetPolicy.RetentionCount;

                return(simpleRetPolicy);
            }
        }
        GetServiceClientSimpleRetentionPolicy(SimpleRetentionPolicy psRetPolicy)
        {
            if (psRetPolicy == null)
            {
                return(null);
            }
            else
            {
                ServiceClientModel.SimpleRetentionPolicy simpleRetPolicy =
                    new ServiceClientModel.SimpleRetentionPolicy();

                string durationType = psRetPolicy.RetentionDurationType.ToString();
                simpleRetPolicy.RetentionDuration = new ServiceClientModel.RetentionDuration();
                simpleRetPolicy.RetentionDuration.DurationType = durationType;
                simpleRetPolicy.RetentionDuration.Count        = psRetPolicy.RetentionCount;

                return(simpleRetPolicy);
            }
        }
        public static SimpleRetentionPolicy GetPSSimpleRetentionPolicy(
            ServiceClientModel.SimpleRetentionPolicy hydraRetPolicy)
        {
            if (hydraRetPolicy == null)
            {
                return(null);
            }

            SimpleRetentionPolicy simplePolicy = new SimpleRetentionPolicy();

            if (hydraRetPolicy.RetentionDuration != null)
            {
                simplePolicy.RetentionDurationType = EnumUtils.GetEnum <RetentionDurationType>(
                    hydraRetPolicy.RetentionDuration.DurationType);
                simplePolicy.RetentionCount = hydraRetPolicy.RetentionDuration.Count;
            }

            simplePolicy.Validate();
            return(simplePolicy);
        }
        public static SimpleRetentionPolicy GetPSSimpleRetentionPolicy(
            ServiceClientModel.SimpleRetentionPolicy hydraRetPolicy, string timeZone)
        {
            if (hydraRetPolicy == null)
            {
                return(null);
            }

            SimpleRetentionPolicy simplePolicy = new SimpleRetentionPolicy();

            if (hydraRetPolicy.RetentionDuration != null)
            {
                simplePolicy.RetentionDurationType = EnumUtils.GetEnum <RetentionDurationType>(
                    hydraRetPolicy.RetentionDuration.DurationType.ToString());
                simplePolicy.RetentionCount = hydraRetPolicy.RetentionDuration.Count.HasValue ?
                                              (int)hydraRetPolicy.RetentionDuration.Count : default(int);
            }

            simplePolicy.Validate();
            return(simplePolicy);
        }
        public static SimpleRetentionPolicy GetPSSimpleRetentionPolicy(
            ServiceClientModel.SimpleRetentionPolicy hydraRetPolicy, string timeZone, string provider)
        {
            if (hydraRetPolicy == null)
            {
                return(null);
            }

            SimpleRetentionPolicy simplePolicy = new SimpleRetentionPolicy();

            if (hydraRetPolicy.RetentionDuration != null)
            {
                simplePolicy.RetentionDurationType = EnumUtils.GetEnum <RetentionDurationType>(
                    hydraRetPolicy.RetentionDuration.DurationType.ToString());
                simplePolicy.RetentionCount = hydraRetPolicy.RetentionDuration.Count.HasValue ?
                                              (int)hydraRetPolicy.RetentionDuration.Count : default(int);
            }

            if (string.Compare(provider, "AzureSql") == 0)
            {
                int weeklyLimit  = PolicyConstants.MaxAllowedRetentionDurationCountWeeklySql;
                int monthlyLimit = PolicyConstants.MaxAllowedRetentionDurationCountMonthlySql;
                int yearlyLimit  = PolicyConstants.MaxAllowedRetentionDurationCountYearlySql;

                if ((simplePolicy.RetentionDurationType == RetentionDurationType.Days) ||
                    (simplePolicy.RetentionDurationType == RetentionDurationType.Weeks &&
                     (simplePolicy.RetentionCount <= 0 || simplePolicy.RetentionCount > weeklyLimit)) ||
                    (simplePolicy.RetentionDurationType == RetentionDurationType.Months &&
                     (simplePolicy.RetentionCount <= 0 || simplePolicy.RetentionCount > monthlyLimit)) ||
                    (simplePolicy.RetentionDurationType == RetentionDurationType.Years &&
                     (simplePolicy.RetentionCount <= 0 || simplePolicy.RetentionCount > yearlyLimit)))
                {
                    throw new ArgumentException(Resources.AllowedSqlRetentionRange);
                }
            }

            return(simplePolicy);
        }
            GetServiceClientSimpleRetentionPolicy(SimpleRetentionPolicy psRetPolicy)
        {
            if (psRetPolicy == null)
            {
                return null;
            }
            else
            {
                ServiceClientModel.SimpleRetentionPolicy simpleRetPolicy = 
                    new ServiceClientModel.SimpleRetentionPolicy();

                string durationType = psRetPolicy.RetentionDurationType.ToString();
                simpleRetPolicy.RetentionDuration = new ServiceClientModel.RetentionDuration();
                simpleRetPolicy.RetentionDuration.DurationType = durationType;
                simpleRetPolicy.RetentionDuration.Count = psRetPolicy.RetentionCount;

                return simpleRetPolicy;
            }
        }
Ejemplo n.º 8
0
        /// <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         = 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);
            }
            else if (serviceClientResponse.Properties.GetType() ==
                     typeof(ServiceClientModel.AzureSqlProtectionPolicy))
            {
                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);
            }
            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);
        }
Ejemplo n.º 9
0
 // <summary>
 /// Helper function to convert ps simple retention policy from service response.
 /// </summary>
 public static LongTermRetentionPolicy GetPSSimpleRetentionPolicy(
     ServiceClientModel.SimpleRetentionPolicy serviceClientRetPolicy)
 {
     throw new NotSupportedException();
 }
        public void PolicyCrudTest()
        {
            using (UndoContext context = UndoContext.Current)
            {
                context.Start();

                string resourceNamespace = ConfigurationManager.AppSettings["ResourceNamespace"];
                string rsVaultRgName = CommonTestHelper.GetSetting(TestConstants.RsVaultRgName);
                string rsVaultName = CommonTestHelper.GetSetting(TestConstants.RsVaultName);

                var client = GetServiceClient<RecoveryServicesBackupManagementClient>(resourceNamespace);
                PolicyTestHelpers policyTestHelper = new PolicyTestHelpers(client);
                string policyName = ConfigurationManager.AppSettings["AzureSqlPolicyName"];

                //create policy request
                SimpleRetentionPolicy retPolicy = new SimpleRetentionPolicy();
                retPolicy.RetentionDuration = new RetentionDuration()
                {
                    DurationType = "Weeks",
                    Count = 6
                };

                AzureSqlProtectionPolicy sqlPolicy = new AzureSqlProtectionPolicy()
                {
                    RetentionPolicy = retPolicy
                };

                ProtectionPolicyRequest policyRequest = new ProtectionPolicyRequest()
                {
                    Item = new ProtectionPolicyResource()
                    {
                        Properties = sqlPolicy
                    }
                };

                //create policy
                ProtectionPolicyResponse response = policyTestHelper.AddOrUpdateProtectionPolicy(rsVaultRgName, rsVaultName, policyName, policyRequest);

                // get policy
                response = policyTestHelper.GetProtectionPolicy(rsVaultRgName, rsVaultName, policyName);
                Assert.NotNull(response.Item.Name);
                Assert.Equal(response.Item.Name, policyName);
                Assert.NotNull(response.Item.Id);
                Assert.NotNull(response.Item.Type);
                Assert.NotNull(response.Item.Properties);
                Assert.NotNull(response.Item.Properties as AzureSqlProtectionPolicy);
                AzureSqlProtectionPolicy resultPolicy = response.Item.Properties as AzureSqlProtectionPolicy;
                SimpleRetentionPolicy resultRetetion = resultPolicy.RetentionPolicy as SimpleRetentionPolicy;
                Assert.Equal(resultRetetion.RetentionDuration.DurationType, "Weeks");
                Assert.Equal(resultRetetion.RetentionDuration.Count, 6);

                //update policy request
                retPolicy.RetentionDuration = new RetentionDuration()
                {
                    DurationType = "Months",
                    Count = 2
                };

                sqlPolicy = new AzureSqlProtectionPolicy()
                {
                    RetentionPolicy = retPolicy
                };

                policyRequest = new ProtectionPolicyRequest()
                {
                    Item = new ProtectionPolicyResource()
                    {
                        Properties = sqlPolicy
                    }
                };


                // update policy
                response = policyTestHelper.AddOrUpdateProtectionPolicy(rsVaultRgName, rsVaultName, policyName, policyRequest);
                // validations
                Assert.NotNull(response.Item.Name);
                Assert.Equal(response.Item.Name, policyName);
                Assert.NotNull(response.Item.Id);
                Assert.NotNull(response.Item.Type);
                Assert.NotNull(response.Item.Properties);
                Assert.NotNull(response.Item.Properties as AzureSqlProtectionPolicy);
                resultPolicy = response.Item.Properties as AzureSqlProtectionPolicy;
                resultRetetion = resultPolicy.RetentionPolicy as SimpleRetentionPolicy;
                Assert.Equal(resultRetetion.RetentionDuration.DurationType, "Months");
                Assert.Equal(resultRetetion.RetentionDuration.Count, 2);


                // delete the policy
                AzureOperationResponse deleteResponse = policyTestHelper.DeleteProtectionPolicy(rsVaultRgName, rsVaultName, policyName);
                Assert.Equal(deleteResponse.StatusCode, HttpStatusCode.OK);
            }
        }
 private SimpleRetentionPolicy GetRandomSimpleRetentionPolicy()
 {
     SimpleRetentionPolicy simPolicy = new SimpleRetentionPolicy()
     {
         RetentionDuration = new RetentionDuration()
         {
             DurationType = ConfigurationManager.AppSettings["AzureSqlPolicyRetentionType"],
             Count = int.Parse(ConfigurationManager.AppSettings["AzureSqlPolicyRetentionDuration"])
         }
     };
     return simPolicy;
 }