public void CloudBlobTestAnalyticsMetricsLevel() { CloudBlobClient client = GenerateCloudBlobClient(); ServiceProperties props = client.GetServiceProperties(); // None props.Metrics.MetricsLevel = MetricsLevel.None; props.Metrics.RetentionDays = null; props.Metrics.Version = "1.0"; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); // Service props.Metrics.MetricsLevel = MetricsLevel.Service; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); // ServiceAndAPI props.Metrics.MetricsLevel = MetricsLevel.ServiceAndApi; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); }
public void CloudBlobTestAnalyticsLoggingOperations() { CloudBlobClient client = GenerateCloudBlobClient(); ServiceProperties props = client.GetServiceProperties(); // None props.Logging.LoggingOperations = LoggingOperations.None; props.Logging.RetentionDays = null; props.Logging.Version = "1.0"; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); // None props.Logging.LoggingOperations = LoggingOperations.All; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); }
public void CloudBlobTestAnalyticsDefaultServiceVersion() { CloudBlobClient client = GenerateCloudBlobClient(); ServiceProperties props = client.GetServiceProperties(); props.DefaultServiceVersion = "2009-09-19"; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); props.DefaultServiceVersion = "2011-08-18"; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); props.DefaultServiceVersion = "2012-02-12"; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); props.DefaultServiceVersion = null; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); }
private void TestCorsRules(CloudBlobClient client, IList <CorsRule> corsProps) { props.Cors.CorsRules.Clear(); foreach (CorsRule rule in corsProps) { props.Cors.CorsRules.Add(rule); } client.SetServiceProperties(props); TestHelper.AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); }
static void UploadBlobInChunks(FileInfo fileInfo, CloudBlockBlob packageBlob, CloudBlobClient blobClient) { var operationContext = new OperationContext(); operationContext.ResponseReceived += delegate(object sender, RequestEventArgs args) { var statusCode = (int) args.Response.StatusCode; var statusDescription = args.Response.StatusDescription; Log.Verbose("Uploading, response received: " + statusCode + " " + statusDescription); if (statusCode >= 400) { Log.Error("Error when uploading the package. Azure returned a HTTP status code of: " + statusCode + " " + statusDescription); Log.Verbose("The upload will be retried"); } }; blobClient.SetServiceProperties(blobClient.GetServiceProperties(), operationContext: operationContext); Log.VerboseFormat("Uploading the package to blob storage. The package file is {0}.", fileInfo.Length.ToFileSizeString()); using (var fileReader = fileInfo.OpenRead()) { var blocklist = new List<string>(); long uploadedSoFar = 0; var data = new byte[1024 * 1024]; var id = 1; while (true) { id++; var read = fileReader.Read(data, 0, data.Length); if (read == 0) { packageBlob.PutBlockList(blocklist); break; } var blockId = Convert.ToBase64String(Encoding.UTF8.GetBytes(id.ToString(CultureInfo.InvariantCulture).PadLeft(30, '0'))); packageBlob.PutBlock(blockId, new MemoryStream(data, 0, read, true), null); blocklist.Add(blockId); uploadedSoFar += read; Log.VerboseFormat("Uploading package to blob storage: {0} of {1}", uploadedSoFar.ToFileSizeString(), fileInfo.Length.ToFileSizeString()); } } Log.Verbose("Upload complete"); }
private static void UpdateServiceProperties(CloudBlobClient blobClient, List<string> origins, List<string> headers, List<string> methods) { ServiceProperties props = blobClient.GetServiceProperties(); Trace.Write(props.Cors.CorsRules.ToString()); if (! ContainsOrigin(props.Cors.CorsRules, origins)) { props.Cors.CorsRules.Add( new CorsRule { AllowedOrigins = origins, AllowedHeaders = headers, AllowedMethods = ExpandCorsHttpMethods(methods), MaxAgeInSeconds = 1800 // 30 minutes }); blobClient.SetServiceProperties(props); } }
public void CloudBlobTestAnalyticsRoundTripSync() { CloudBlobClient client = GenerateCloudBlobClient(); ServiceProperties props = new ServiceProperties(); props.Logging.LoggingOperations = LoggingOperations.Read | LoggingOperations.Write; props.Logging.RetentionDays = 5; props.Logging.Version = "1.0"; props.Metrics.MetricsLevel = MetricsLevel.Service; props.Metrics.RetentionDays = 6; props.Metrics.Version = "1.0"; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); }
public azureDriver(string connStr, string containerName) { //var connStr = string.Format("DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}", accountName, accountKey); CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connStr); blobClient = storageAccount.CreateCloudBlobClient(); var props = blobClient.GetServiceProperties(); if (props.Cors.CorsRules.Count == 0) { props.Cors.CorsRules.Add(new CorsRule() { AllowedHeaders = new List<string>() { "*" }, AllowedMethods = CorsHttpMethods.Get, AllowedOrigins = new List<string>() { "*" }, ExposedHeaders = new List<string>() { "*" }, MaxAgeInSeconds = 18000 // 300 minutes }); blobClient.SetServiceProperties(props); } container = blobClient.GetContainerReference(containerName); if (container.CreateIfNotExists()) container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); }
/// <summary> /// Ensure javascript CORS requests from web APIs work. /// </summary> /// <remarks>See: http://msdn.microsoft.com/en-us/library/windowsazure/dn535601.aspx </remarks> /// <param name="client"></param> private static void ConfigureCorsAndLoggingOnStorageAccount(CloudBlobClient client) { CorsProperties cps = new CorsProperties(); cps.CorsRules.Add(new CorsRule() { AllowedOrigins = new List<string>() { "*" }, AllowedMethods = CorsHttpMethods.Get }); ServiceProperties sp = new Microsoft.WindowsAzure.Storage.Shared.Protocol.ServiceProperties(); sp.Cors = cps; sp.Logging.LoggingOperations = LoggingOperations.Read; sp.Logging.RetentionDays = 7; sp.Logging.Version = "1.0"; sp.MinuteMetrics.MetricsLevel = MetricsLevel.ServiceAndApi; sp.MinuteMetrics.RetentionDays = 7; sp.MinuteMetrics.Version = "1.0"; sp.HourMetrics.MetricsLevel = MetricsLevel.None; sp.HourMetrics.RetentionDays = 1; sp.HourMetrics.Version = "1.0"; client.SetServiceProperties(sp, new BlobRequestOptions() { MaximumExecutionTime = TimeSpan.FromSeconds(300) } , null); }
private void SetCors(CloudBlobClient blobClient) { var newProperties = blobClient.GetServiceProperties(); try { ConfigureCors(newProperties); var blobprop = blobClient.GetServiceProperties(); // "2011-08-18"; // null; blobClient.SetServiceProperties(newProperties); } catch (Exception ex) { //throw; } }
/// <summary> /// Initialize Windows Azure Storage CORS settings. /// </summary> /// <param name="blobClient">Windows Azure storage blob client</param> /// <param name="tableClient">Windows Azure storage table client</param> private static void InitializeCors(CloudBlobClient blobClient, CloudTableClient tableClient) { // CORS should be enabled once at service startup ServiceProperties blobServiceProperties = new ServiceProperties(); ServiceProperties tableServiceProperties = new ServiceProperties(); // Nullifying un-needed properties so that we don't // override the existing ones blobServiceProperties.HourMetrics = null; tableServiceProperties.HourMetrics = null; blobServiceProperties.MinuteMetrics = null; tableServiceProperties.MinuteMetrics = null; blobServiceProperties.Logging = null; tableServiceProperties.Logging = null; // Enable and Configure CORS ConfigureCors(blobServiceProperties); ConfigureCors(tableServiceProperties); // Commit the CORS changes into the Service Properties blobClient.SetServiceProperties(blobServiceProperties); tableClient.SetServiceProperties(tableServiceProperties); }
public static void MyClassCleanup() { client.SetServiceProperties(startProperties); }
public static void MyClassCleanup() { CloudBlobClient client = GenerateCloudBlobClient(); client.SetServiceProperties(startProperties); }
public void CloudBlobTestAnalyticsRetentionPolicies() { CloudBlobClient client = GenerateCloudBlobClient(); ServiceProperties props = client.GetServiceProperties(); // Set retention policy null with metrics disabled. props.Metrics.RetentionDays = null; props.Metrics.MetricsLevel = MetricsLevel.None; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); // Set retention policy not null with metrics disabled. props.Metrics.RetentionDays = 1; props.Metrics.MetricsLevel = MetricsLevel.Service; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); // Set retention policy not null with metrics enabled. props.Metrics.MetricsLevel = MetricsLevel.ServiceAndApi; props.Metrics.RetentionDays = 2; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); // Set retention policy null with logging disabled. props.Logging.RetentionDays = null; props.Logging.LoggingOperations = LoggingOperations.None; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); // Set retention policy not null with logging disabled. props.Logging.RetentionDays = 3; props.Logging.LoggingOperations = LoggingOperations.None; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); // Set retention policy null with logging enabled. props.Logging.RetentionDays = null; props.Logging.LoggingOperations = LoggingOperations.All; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); // Set retention policy not null with logging enabled. props.Logging.RetentionDays = 4; props.Logging.LoggingOperations = LoggingOperations.All; client.SetServiceProperties(props); // Wait for analytics server to update Thread.Sleep(60 * 1000); AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); }
private void TestCorsRules(CloudBlobClient client, IList<CorsRule> corsProps) { props.Cors.CorsRules.Clear(); foreach (CorsRule rule in corsProps) { props.Cors.CorsRules.Add(rule); } client.SetServiceProperties(props); TestHelper.AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); }