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); } }
private static ServiceProperties CurrentProperties(CloudBlobClient blobClient) { var currentProperties = blobClient.GetServiceProperties(); if (currentProperties != null) { if (currentProperties.Cors != null) { Console.WriteLine("Cors.CorsRules.Count : " + currentProperties.Cors.CorsRules.Count); for (int index = 0; index < currentProperties.Cors.CorsRules.Count; index++) { var corsRule = currentProperties.Cors.CorsRules[index]; Console.WriteLine("corsRule[index] : " + index); foreach (var allowedHeader in corsRule.AllowedHeaders) { Console.WriteLine("corsRule.AllowedHeaders : " + allowedHeader); } Console.WriteLine("corsRule.AllowedMethods : " + corsRule.AllowedMethods); foreach (var allowedOrigins in corsRule.AllowedOrigins) { Console.WriteLine("corsRule.AllowedOrigins : " + allowedOrigins); } foreach (var exposedHeaders in corsRule.ExposedHeaders) { Console.WriteLine("corsRule.ExposedHeaders : " + exposedHeaders); } Console.WriteLine("corsRule.MaxAgeInSeconds : " + corsRule.MaxAgeInSeconds); } } Console.WriteLine("DefaultServiceVersion : " + currentProperties.DefaultServiceVersion); Console.WriteLine("HourMetrics.MetricsLevel : " + currentProperties.HourMetrics.MetricsLevel); Console.WriteLine("HourMetrics.RetentionDays : " + currentProperties.HourMetrics.RetentionDays); Console.WriteLine("HourMetrics.Version : " + currentProperties.HourMetrics.Version); Console.WriteLine("Logging.LoggingOperations : " + currentProperties.Logging.LoggingOperations); Console.WriteLine("Logging.RetentionDays : " + currentProperties.Logging.RetentionDays); Console.WriteLine("Logging.Version : " + currentProperties.Logging.Version); Console.WriteLine("MinuteMetrics.MetricsLevel : " + currentProperties.MinuteMetrics.MetricsLevel); Console.WriteLine("MinuteMetrics.RetentionDays : " + currentProperties.MinuteMetrics.RetentionDays); Console.WriteLine("MinuteMetrics.Version : " + currentProperties.MinuteMetrics.Version); } return currentProperties; }
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 }); }
//****************** //* * //* LoadLeftPane * //* * //****************** // Load a list of storage containers/queues/tables into the left pane of the storage view. public void LoadLeftPane() { Cursor = Cursors.Wait; NewAction(); AccountTitle.Text = Account.Name; ClearMainPane(); TreeViewItem blobSection = new TreeViewItem() { Header = "Blob Containers", Tag = new OutlineItem() { ItemType = ItemType.BLOB_SERVICE /* 100 */, Container = null } }; TreeViewItem queueSection = new TreeViewItem() { Header = "Queues", Tag = new OutlineItem() { ItemType = ItemType.QUEUE_SERVICE /* 200 */, Container = null } }; TreeViewItem tableSection = new TreeViewItem() { Header = "Tables", Tag = new OutlineItem() { ItemType = ItemType.TABLE_SERVICE /* 300 */, Container = null } }; AccountTreeView.Items.Clear(); AccountTreeView.Items.Add(blobSection); AccountTreeView.Items.Add(queueSection); AccountTreeView.Items.Add(tableSection); CloudStorageAccount account = OpenStorageAccount(); blobClient = account.CreateCloudBlobClient(); tableClient = account.CreateCloudTableClient(); queueClient = account.CreateCloudQueueClient(); try { var serviceProperties = blobClient.GetServiceProperties(); if (serviceProperties.Cors.CorsRules.Count == 0) { ButtonBlobServiceCORSIcon.Source = new BitmapImage(new Uri("pack://application:,,/Images/unchecked.png")); ButtonBlobServiceCORSLabel.Text = "CORS"; } else { ButtonBlobServiceCORSIcon.Source = new BitmapImage(new Uri("pack://application:,,/Images/checked.png")); ButtonBlobServiceCORSLabel.Text = "CORS (" + serviceProperties.Cors.CorsRules.Count.ToString() + ")"; } } catch(Exception) { // Disallowed for developer storage account. } try { // Check for $logs container and add it if present ($logs is not included in the general ListContainers call). CloudBlobContainer logsContainer = blobClient.GetContainerReference("$logs"); if (logsContainer.Exists()) { StackPanel stack = new StackPanel(); stack.Orientation = Orientation.Horizontal; Image cloudFolderImage = new Image(); cloudFolderImage.Source = new BitmapImage(new Uri("pack://application:,,/Images/cloud_folder.png")); cloudFolderImage.Height = 24; Label label = new Label(); label.Content = logsContainer.Name; stack.Children.Add(cloudFolderImage); stack.Children.Add(label); TreeViewItem blobItem = new TreeViewItem() { Header = stack, Tag = new OutlineItem() { ItemType = ItemType.BLOB_CONTAINER, Container = logsContainer.Name, Permissions = logsContainer.GetPermissions() } }; blobSection.Items.Add(blobItem); } IEnumerable<CloudBlobContainer> containers = blobClient.ListContainers(); if (containers != null) { if (containers != null) { foreach (CloudBlobContainer container in containers) { StackPanel stack = new StackPanel(); stack.Orientation = Orientation.Horizontal; Image cloudFolderImage = new Image(); cloudFolderImage.Source = new BitmapImage(new Uri("pack://application:,,/Images/cloud_folder.png")); cloudFolderImage.Height = 24; Label label = new Label(); label.Content = container.Name; stack.Children.Add(cloudFolderImage); stack.Children.Add(label); TreeViewItem blobItem = new TreeViewItem() { Header = stack, Tag = new OutlineItem() { ItemType = ItemType.BLOB_CONTAINER, Container = container.Name, Permissions = container.GetPermissions() } }; blobSection.Items.Add(blobItem); } } } blobSection.Header = "Blob Containers (" + containers.Count().ToString() + ")"; switch(LastItemType) { case ItemType.BLOB_SERVICE: case ItemType.BLOB_CONTAINER: blobSection.IsExpanded = true; break; case ItemType.QUEUE_SERVICE: case ItemType.QUEUE_CONTAINER: queueSection.IsExpanded = true; break; case ItemType.TABLE_SERVICE: case ItemType.TABLE_CONTAINER: tableSection.IsExpanded = true; break; default: blobSection.IsExpanded = true; break; } } catch (Exception ex) { ShowError("Error enumering blob containers in the storage account: " + ex.Message); } try { IEnumerable<CloudQueue> queues = queueClient.ListQueues(); if (queues != null) { foreach (CloudQueue queue in queues) { StackPanel stack = new StackPanel(); stack.Orientation = Orientation.Horizontal; Image cloudFolderImage = new Image(); cloudFolderImage.Source = new BitmapImage(new Uri("pack://application:,,/Images/cloud_queue.png")); cloudFolderImage.Height = 24; Label label = new Label(); label.Content = queue.Name; stack.Children.Add(cloudFolderImage); stack.Children.Add(label); queueSection.Items.Add(new TreeViewItem() { Header = stack, Tag = new OutlineItem() { ItemType = ItemType.QUEUE_CONTAINER, Container = queue.Name } }); } } queueSection.Header = "Queues (" + queues.Count().ToString() + ")"; } catch (Exception ex) { ShowError("Error enumering queues in storage account: " + ex.Message); } // OData version number occurs here: // Could not load file or assembly 'Microsoft.Data.OData, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. try { IEnumerable<CloudTable> tables = tableClient.ListTables(); if (tables != null) { foreach (CloudTable table in tables) { StackPanel stack = new StackPanel(); stack.Orientation = Orientation.Horizontal; Image cloudFolderImage = new Image(); cloudFolderImage.Source = new BitmapImage(new Uri("pack://application:,,/Images/cloud_table.png")); cloudFolderImage.Height = 24; Label label = new Label(); label.Content = table.Name; stack.Children.Add(cloudFolderImage); stack.Children.Add(label); tableSection.Items.Add(new TreeViewItem() { Header = stack, Tag = new OutlineItem() { ItemType = ItemType.TABLE_CONTAINER, Container = table.Name } }); } } tableSection.Header = "Tables (" + tables.Count().ToString() + ")"; } catch(Exception ex) { ShowError("Error enumerating tables in storage account: " + ex.Message); } Cursor = Cursors.Arrow; }
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; } }
public static void MyClassInitialize(TestContext testContext) { client = GenerateCloudBlobClient(); startProperties = client.GetServiceProperties(); }
public void CloudBlobTestAnalyticsRoundTripSync() { props.Logging.LoggingOperations = LoggingOperations.Read | LoggingOperations.Write; props.Logging.RetentionDays = 5; props.Logging.Version = Constants.AnalyticsConstants.LoggingVersionV1; props.HourMetrics.MetricsLevel = MetricsLevel.Service; props.HourMetrics.RetentionDays = 6; props.HourMetrics.Version = Constants.AnalyticsConstants.MetricsVersionV1; props.MinuteMetrics.MetricsLevel = MetricsLevel.Service; props.MinuteMetrics.RetentionDays = 6; props.MinuteMetrics.Version = Constants.AnalyticsConstants.MetricsVersionV1; props.Cors.CorsRules.Add( new CorsRule() { AllowedOrigins = new List <string>() { "www.ab.com", "www.bc.com" }, AllowedMethods = CorsHttpMethods.Get | CorsHttpMethods.Put, MaxAgeInSeconds = 500, ExposedHeaders = new List <string>() { "x-ms-meta-data*", "x-ms-meta-source*", "x-ms-meta-abc", "x-ms-meta-bcd" }, AllowedHeaders = new List <string>() { "x-ms-meta-data*", "x-ms-meta-target*", "x-ms-meta-xyz", "x-ms-meta-foo" } }); client.SetServiceProperties(props); TestHelper.AssertServicePropertiesAreEqual(props, client.GetServiceProperties()); }
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()); }