/// <summary> /// Comapare PSServiceProperties and ServiceProperties, to make sure they are same content /// </summary> static private void CompareServiceProperties(PSSeriviceProperties pSSeriviceProperties, ServiceProperties serviceProperties) { if ((pSSeriviceProperties != null && pSSeriviceProperties.HourMetrics != null) || (serviceProperties != null && serviceProperties.HourMetrics != null)) { Assert.AreEqual(serviceProperties.HourMetrics.Version, pSSeriviceProperties.HourMetrics.Version); Assert.AreEqual(serviceProperties.HourMetrics.MetricsLevel, pSSeriviceProperties.HourMetrics.MetricsLevel); Assert.AreEqual(serviceProperties.HourMetrics.RetentionDays, pSSeriviceProperties.HourMetrics.RetentionDays); } if ((pSSeriviceProperties != null && pSSeriviceProperties.MinuteMetrics != null) || (serviceProperties != null && serviceProperties.MinuteMetrics != null)) { Assert.AreEqual(serviceProperties.MinuteMetrics.Version, pSSeriviceProperties.MinuteMetrics.Version); Assert.AreEqual(serviceProperties.MinuteMetrics.MetricsLevel, pSSeriviceProperties.MinuteMetrics.MetricsLevel); Assert.AreEqual(serviceProperties.MinuteMetrics.RetentionDays, pSSeriviceProperties.MinuteMetrics.RetentionDays); } if ((pSSeriviceProperties != null && pSSeriviceProperties.Logging != null) || (serviceProperties != null && serviceProperties.Logging != null)) { Assert.AreEqual(serviceProperties.Logging.Version, pSSeriviceProperties.Logging.Version); Assert.AreEqual(serviceProperties.Logging.LoggingOperations, pSSeriviceProperties.Logging.LoggingOperations); Assert.AreEqual(serviceProperties.Logging.RetentionDays, pSSeriviceProperties.Logging.RetentionDays); } if ((pSSeriviceProperties != null && pSSeriviceProperties.Cors != null) || (serviceProperties != null && serviceProperties.Cors != null)) { CompareCors(pSSeriviceProperties.Cors, serviceProperties.Cors); } if ((pSSeriviceProperties != null && pSSeriviceProperties.DefaultServiceVersion != null) || (serviceProperties != null && serviceProperties.DefaultServiceVersion != null)) { Assert.AreEqual(serviceProperties.DefaultServiceVersion, pSSeriviceProperties.DefaultServiceVersion); } }
public void ValidateParseServicePropertiesTest() { ServiceProperties serviceProperties = new ServiceProperties(); serviceProperties.Cors = PrepareCoresproperties(); serviceProperties.HourMetrics = new MetricsProperties("1.0"); serviceProperties.HourMetrics.MetricsLevel = MetricsLevel.ServiceAndApi; serviceProperties.HourMetrics.RetentionDays = 1; serviceProperties.MinuteMetrics = new MetricsProperties("1.0"); serviceProperties.MinuteMetrics.MetricsLevel = MetricsLevel.Service; serviceProperties.MinuteMetrics.RetentionDays = 3; serviceProperties.Logging = new LoggingProperties("1.0"); serviceProperties.Logging.LoggingOperations = LoggingOperations.All; serviceProperties.Logging.RetentionDays = 5; serviceProperties.DefaultServiceVersion = "2017-04-17"; serviceProperties.DeleteRetentionPolicy = new DeleteRetentionPolicy(); serviceProperties.DeleteRetentionPolicy.Enabled = true; serviceProperties.DeleteRetentionPolicy.RetentionDays = 5; serviceProperties.StaticWebsite = new StaticWebsiteProperties(); serviceProperties.StaticWebsite.Enabled = true; serviceProperties.StaticWebsite.IndexDocument = "IndexDocument"; serviceProperties.StaticWebsite.ErrorDocument404Path = "ErrorDocument404Path"; PSSeriviceProperties pSSeriviceProperties = new PSSeriviceProperties(serviceProperties); CompareServiceProperties(pSSeriviceProperties, serviceProperties); serviceProperties = new ServiceProperties(); pSSeriviceProperties = new PSSeriviceProperties(serviceProperties); CompareServiceProperties(pSSeriviceProperties, serviceProperties); serviceProperties = null; pSSeriviceProperties = new PSSeriviceProperties(serviceProperties); CompareServiceProperties(pSSeriviceProperties, serviceProperties); }
public void ValidateParseServicePropertiesTest() { ServiceProperties serviceProperties = new ServiceProperties(); serviceProperties.Cors = PrepareCoresproperties(); serviceProperties.HourMetrics = new MetricsProperties("1.0"); serviceProperties.HourMetrics.MetricsLevel = MetricsLevel.ServiceAndApi; serviceProperties.HourMetrics.RetentionDays = 1; serviceProperties.MinuteMetrics = new MetricsProperties("1.0"); serviceProperties.MinuteMetrics.MetricsLevel = MetricsLevel.Service; serviceProperties.MinuteMetrics.RetentionDays = 3; serviceProperties.Logging = new LoggingProperties("1.0"); serviceProperties.Logging.LoggingOperations = LoggingOperations.All; serviceProperties.Logging.RetentionDays = 5; serviceProperties.DefaultServiceVersion = "2017-04-17"; PSSeriviceProperties pSSeriviceProperties = new PSSeriviceProperties(serviceProperties); CompareServiceProperties(pSSeriviceProperties, serviceProperties); serviceProperties = new ServiceProperties(); pSSeriviceProperties = new PSSeriviceProperties(serviceProperties); CompareServiceProperties(pSSeriviceProperties, serviceProperties); serviceProperties = null; pSSeriviceProperties = new PSSeriviceProperties(serviceProperties); CompareServiceProperties(pSSeriviceProperties, serviceProperties); }
public override void ExecuteCmdlet() { if (StorageServiceType.File == ServiceType) { throw new PSInvalidOperationException(Resources.FileNotSupportLogging); } if (ServiceType != StorageServiceType.Table) { ServiceProperties serviceProperties = Channel.GetStorageServiceProperties(ServiceType, GetRequestOptions(ServiceType), OperationContext); // Premium Account not support classic metrics and logging if (serviceProperties.Logging == null) { AccountProperties accountProperties = Channel.GetAccountProperties(); if (accountProperties.SkuName.Contains("Premium")) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "This Storage account doesn't support Classic Logging, since it’s a Premium Storage account: {0}", Channel.StorageContext.StorageAccountName)); } } WriteObject(serviceProperties.Logging); } else //Table use old XSCL { StorageTableManagement tableChannel = new StorageTableManagement(Channel.StorageContext); if (!tableChannel.IsTokenCredential) { XTable.ServiceProperties serviceProperties = tableChannel.GetStorageTableServiceProperties(GetTableRequestOptions(), TableOperationContext); // Premium Account not support classic metrics and logging if (serviceProperties.Logging == null) { AccountProperties accountProperties = Channel.GetAccountProperties(); if (accountProperties.SkuName.Contains("Premium")) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "This Storage account doesn't support Classic Logging, since it’s a Premium Storage account: {0}", Channel.StorageContext.StorageAccountName)); } } WriteObject(serviceProperties.Logging); } else { TableServiceProperties serviceProperties = tableChannel.GetProperties(this.CmdletCancellationToken); // Premium Account does not support classic metrics and logging if (serviceProperties.Logging == null) { this.ThrowIfPremium("This Storage account doesn't support Classic Logging, since it’s a Premium Storage account: {0}"); } WriteObject(PSSeriviceProperties.ConvertLoggingProperties(serviceProperties.Logging)); } } }
public void SetGetServiceProperties_DefaultServiceVersion_File_Neg() { Constants.ServiceType service = Constants.ServiceType.File; string DefaultServiceVersion = "2016-05-31"; Test.Assert(CommandAgent.UpdateAzureStorageServiceProperties(service, DefaultServiceVersion), "SetAzureStorageServiceProperties with service {0} defaultserviceversion {1} should success.", service, DefaultServiceVersion); PSSeriviceProperties properties = GetServicePropertiesFromPSH(service); ExpectNotEqual(DefaultServiceVersion, properties.DefaultServiceVersion, "DefaultServiceVersion"); }
public void Enable_DisableAzureStorageServiceDeleteRetentionPolicy() { int[] validRetentionDays = { 1, 10, 365 }; foreach (int retentionDays in validRetentionDays) { //Enable DeleteRetentionPolicy Test.Assert(CommandAgent.EnableAzureStorageDeleteRetentionPolicy(retentionDays), "EnableAzureStorageDeleteRetentionPolicy with retentionDays {0} should success.", retentionDays); PSSeriviceProperties properties = GetServicePropertiesFromPSH(Constants.ServiceType.Blob); Test.Assert(properties.DeleteRetentionPolicy.Enabled, "DeleteRetentionPolicy Enabled should be enabled."); ExpectEqual(retentionDays, properties.DeleteRetentionPolicy.RetentionDays.Value, "retentionDays"); //Disable DeleteRetentionPolicy Test.Assert(CommandAgent.DisableAzureStorageDeleteRetentionPolicy(PassThru: true), "DisableAzureStorageDeleteRetentionPolicy should success."); properties = GetServicePropertiesFromPSH(Constants.ServiceType.Blob); Test.Assert(!properties.DeleteRetentionPolicy.Enabled, "DeleteRetentionPolicy Enabled should be disabled."); Test.Assert(properties.DeleteRetentionPolicy.RetentionDays == null, "DeleteRetentionPolicy RetentionDays should be null."); } }
/// <summary> /// Comapare PSServiceProperties and ServiceProperties, to make sure they are same content /// </summary> static private void CompareServiceProperties(PSSeriviceProperties pSSeriviceProperties, ServiceProperties serviceProperties) { if ((pSSeriviceProperties != null && pSSeriviceProperties.HourMetrics != null) || (serviceProperties != null && serviceProperties.HourMetrics != null)) { Assert.AreEqual(serviceProperties.HourMetrics.Version, pSSeriviceProperties.HourMetrics.Version); Assert.AreEqual(serviceProperties.HourMetrics.MetricsLevel, pSSeriviceProperties.HourMetrics.MetricsLevel); Assert.AreEqual(serviceProperties.HourMetrics.RetentionDays, pSSeriviceProperties.HourMetrics.RetentionDays); } if ((pSSeriviceProperties != null && pSSeriviceProperties.MinuteMetrics != null) || (serviceProperties != null && serviceProperties.MinuteMetrics != null)) { Assert.AreEqual(serviceProperties.MinuteMetrics.Version, pSSeriviceProperties.MinuteMetrics.Version); Assert.AreEqual(serviceProperties.MinuteMetrics.MetricsLevel, pSSeriviceProperties.MinuteMetrics.MetricsLevel); Assert.AreEqual(serviceProperties.MinuteMetrics.RetentionDays, pSSeriviceProperties.MinuteMetrics.RetentionDays); } if ((pSSeriviceProperties != null && pSSeriviceProperties.Logging != null) || (serviceProperties != null && serviceProperties.Logging != null)) { Assert.AreEqual(serviceProperties.Logging.Version, pSSeriviceProperties.Logging.Version); Assert.AreEqual(serviceProperties.Logging.LoggingOperations, pSSeriviceProperties.Logging.LoggingOperations); Assert.AreEqual(serviceProperties.Logging.RetentionDays, pSSeriviceProperties.Logging.RetentionDays); } if ((pSSeriviceProperties != null && pSSeriviceProperties.Cors != null) || (serviceProperties != null && serviceProperties.Cors != null)) { CompareCors(pSSeriviceProperties.Cors, serviceProperties.Cors); } if ((pSSeriviceProperties != null && pSSeriviceProperties.DefaultServiceVersion != null) || (serviceProperties != null && serviceProperties.DefaultServiceVersion != null)) { Assert.AreEqual(serviceProperties.DefaultServiceVersion, pSSeriviceProperties.DefaultServiceVersion); } if ((pSSeriviceProperties != null && pSSeriviceProperties.DeleteRetentionPolicy != null) || (serviceProperties != null && serviceProperties.DeleteRetentionPolicy != null)) { Assert.AreEqual(serviceProperties.DeleteRetentionPolicy.Enabled, pSSeriviceProperties.DeleteRetentionPolicy.Enabled); Assert.AreEqual(serviceProperties.DeleteRetentionPolicy.RetentionDays, pSSeriviceProperties.DeleteRetentionPolicy.RetentionDays); } if ((pSSeriviceProperties != null && pSSeriviceProperties.StaticWebsite != null) || (serviceProperties != null && serviceProperties.StaticWebsite != null)) { Assert.AreEqual(serviceProperties.StaticWebsite.Enabled, pSSeriviceProperties.StaticWebsite.Enabled); Assert.AreEqual(serviceProperties.StaticWebsite.IndexDocument, pSSeriviceProperties.StaticWebsite.IndexDocument); Assert.AreEqual(serviceProperties.StaticWebsite.ErrorDocument404Path, pSSeriviceProperties.StaticWebsite.ErrorDocument404Path); } }
public override void ExecuteCmdlet() { if (ServiceType != StorageServiceType.Table) { ServiceProperties currentServiceProperties = Channel.GetStorageServiceProperties(ServiceType, GetRequestOptions(ServiceType), OperationContext); // Premium Account not support classic metrics and logging if ((MetricsType == ServiceMetricsType.Hour && currentServiceProperties.HourMetrics == null) || (MetricsType == ServiceMetricsType.Minute && currentServiceProperties.MinuteMetrics == null)) { AccountProperties accountProperties = Channel.GetAccountProperties(); if (accountProperties.SkuName.Contains("Premium")) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "This Storage account doesn't support Classic Metrics, since it’s a Premium Storage account: {0}", Channel.StorageContext.StorageAccountName)); } } ServiceProperties serviceProperties = new ServiceProperties(); serviceProperties.Clean(); bool isHourMetrics = false; switch (MetricsType) { case ServiceMetricsType.Hour: serviceProperties.HourMetrics = currentServiceProperties.HourMetrics; UpdateServiceProperties(serviceProperties.HourMetrics); isHourMetrics = true; break; case ServiceMetricsType.Minute: serviceProperties.MinuteMetrics = currentServiceProperties.MinuteMetrics; UpdateServiceProperties(serviceProperties.MinuteMetrics); isHourMetrics = false; break; } Channel.SetStorageServiceProperties(ServiceType, serviceProperties, GetRequestOptions(ServiceType), OperationContext); if (PassThru) { if (isHourMetrics) { WriteObject(serviceProperties.HourMetrics); } else { WriteObject(serviceProperties.MinuteMetrics); } } } else //Table use old XSCL { StorageTableManagement tableChannel = new StorageTableManagement(Channel.StorageContext); if (!tableChannel.IsTokenCredential) { XTable.ServiceProperties currentServiceProperties = tableChannel.GetStorageTableServiceProperties(GetTableRequestOptions(), TableOperationContext); // Premium Account not support classic metrics and logging if ((MetricsType == ServiceMetricsType.Hour && currentServiceProperties.HourMetrics == null) || (MetricsType == ServiceMetricsType.Minute && currentServiceProperties.MinuteMetrics == null)) { AccountProperties accountProperties = Channel.GetAccountProperties(); if (accountProperties.SkuName.Contains("Premium")) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "This Storage account doesn't support Classic Metrics, since it’s a Premium Storage account: {0}", Channel.StorageContext.StorageAccountName)); } } XTable.ServiceProperties serviceProperties = new XTable.ServiceProperties(); serviceProperties.Clean(); bool isHourMetrics = false; switch (MetricsType) { case ServiceMetricsType.Hour: serviceProperties.HourMetrics = currentServiceProperties.HourMetrics; UpdateServiceProperties(serviceProperties.HourMetrics); isHourMetrics = true; break; case ServiceMetricsType.Minute: serviceProperties.MinuteMetrics = currentServiceProperties.MinuteMetrics; UpdateServiceProperties(serviceProperties.MinuteMetrics); isHourMetrics = false; break; } tableChannel.SetStorageTableServiceProperties(serviceProperties, GetTableRequestOptions(), TableOperationContext); if (PassThru) { if (isHourMetrics) { WriteObject(serviceProperties.HourMetrics); } else { WriteObject(serviceProperties.MinuteMetrics); } } } else { TableServiceProperties serviceProperties = tableChannel.GetProperties(this.CmdletCancellationToken); // Premium Account not support classic metrics and logging if ((MetricsType == ServiceMetricsType.Hour && serviceProperties.HourMetrics == null) || (MetricsType == ServiceMetricsType.Minute && serviceProperties.MinuteMetrics == null)) { this.ThrowIfPremium("This Storage account doesn't support Classic Metrics, since it’s a Premium Storage account: {0}"); } switch (MetricsType) { case ServiceMetricsType.Hour: UpdateServiceProperties(serviceProperties.HourMetrics); break; case ServiceMetricsType.Minute: UpdateServiceProperties(serviceProperties.MinuteMetrics); break; default: throw new ArgumentException($"Unsupported metrics type {MetricsType}"); } tableChannel.SetProperties(serviceProperties, this.CmdletCancellationToken); if (PassThru) { WriteObject(PSSeriviceProperties.ConvertMetricsProperties(MetricsType == ServiceMetricsType.Hour ? serviceProperties.HourMetrics : serviceProperties.MinuteMetrics)); } } } }
public void GetServiceProperties_AllService_AllProperties() { //prepare the service properties to set and get PSCorsRule[] corsRules = CORSRuleUtil.GetRandomValidCORSRules(random.Next(1, 5)); Microsoft.WindowsAzure.Storage.Shared.Protocol.ServiceProperties serviceProperties = new Microsoft.WindowsAzure.Storage.Shared.Protocol.ServiceProperties(); serviceProperties.Clean(); serviceProperties.Cors = new CorsProperties(); foreach (var rule in corsRules) { CorsRule corsRule = new CorsRule() { AllowedHeaders = rule.AllowedHeaders, AllowedOrigins = rule.AllowedOrigins, ExposedHeaders = rule.ExposedHeaders, MaxAgeInSeconds = rule.MaxAgeInSeconds, }; SetAllowedMethods(corsRule, rule.AllowedMethods); serviceProperties.Cors.CorsRules.Add(corsRule); } serviceProperties.HourMetrics = new MetricsProperties("1.0"); serviceProperties.HourMetrics.MetricsLevel = MetricsLevel.ServiceAndApi; serviceProperties.HourMetrics.RetentionDays = 1; serviceProperties.MinuteMetrics = new MetricsProperties("1.0"); serviceProperties.MinuteMetrics.MetricsLevel = MetricsLevel.Service; serviceProperties.MinuteMetrics.RetentionDays = 3; serviceProperties.Logging = new LoggingProperties("1.0"); serviceProperties.Logging.LoggingOperations = LoggingOperations.All; serviceProperties.Logging.RetentionDays = 5; foreach (string servicetype in ValidServiceType) { Constants.ServiceType service = Constants.ServiceType.Blob; Enum.TryParse <Constants.ServiceType>(servicetype, true, out service); if (service == Constants.ServiceType.Blob) //only Blob support default service version { serviceProperties.DefaultServiceVersion = "2017-04-17"; serviceProperties.DeleteRetentionPolicy = new DeleteRetentionPolicy(); serviceProperties.DeleteRetentionPolicy.Enabled = true; serviceProperties.DeleteRetentionPolicy.RetentionDays = 10; } //Set Service Properties with XSCL API ServiceCORSRule.SetSerivceProperties(service, serviceProperties); //Get Service Properties with PowerShell PSSeriviceProperties properties = GetServicePropertiesFromPSH(service); //Validate Cors, metric, logging CORSRuleUtil.ValidateCORSRules(corsRules, properties.Cors); if (service != Constants.ServiceType.File) // File service don't support logging { ExpectEqual(serviceProperties.Logging.Version, properties.Logging.Version, "Logging version"); ExpectEqual(serviceProperties.Logging.LoggingOperations.ToString(), properties.Logging.LoggingOperations.ToString(), "Logging Operations"); ExpectEqual(serviceProperties.Logging.RetentionDays.Value, properties.Logging.RetentionDays.Value, "Logging RetentionDays"); } ExpectEqual(serviceProperties.HourMetrics.Version, properties.HourMetrics.Version, "HourMetrics Version"); ExpectEqual(serviceProperties.HourMetrics.MetricsLevel.ToString(), properties.HourMetrics.MetricsLevel.ToString(), "HourMetrics MetricsLevel"); ExpectEqual(serviceProperties.HourMetrics.RetentionDays.Value, properties.HourMetrics.RetentionDays.Value, "HourMetrics RetentionDays"); ExpectEqual(serviceProperties.MinuteMetrics.Version, properties.MinuteMetrics.Version, "MinuteMetrics Version"); ExpectEqual(serviceProperties.MinuteMetrics.MetricsLevel.ToString(), properties.MinuteMetrics.MetricsLevel.ToString(), "MinuteMetrics MetricsLevel"); ExpectEqual(serviceProperties.MinuteMetrics.RetentionDays.Value, properties.MinuteMetrics.RetentionDays.Value, "MinuteMetrics RetentionDays"); if (service == Constants.ServiceType.Blob) { ExpectEqual(serviceProperties.DefaultServiceVersion, properties.DefaultServiceVersion, "DefaultServiceVersion"); ExpectEqual(serviceProperties.DeleteRetentionPolicy.Enabled.ToString(), properties.DeleteRetentionPolicy.Enabled.ToString(), "DeleteRetentionPolicy Enabled"); ExpectEqual(serviceProperties.DeleteRetentionPolicy.RetentionDays.Value, properties.DeleteRetentionPolicy.RetentionDays.Value, "DeleteRetentionPolicy RetentionDays"); serviceProperties.DeleteRetentionPolicy = null; serviceProperties.DefaultServiceVersion = null; } } }