示例#1
0
 /// <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);
        }
示例#3
0
        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));
                }
            }
        }
示例#5
0
        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");
        }
示例#6
0
        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));
                    }
                }
            }
        }
示例#9
0
        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;
                }
            }
        }