Example #1
0
        private static string GetCapacityUsed(string authToken, string accountName)
        {
            string capacityUsed = string.Empty;
            CloudStorageAccount storageAccount = GetUserAccount(authToken, accountName);

            if (storageAccount != null)
            {
                CloudAnalyticsClient        storageAnalytics = storageAccount.CreateCloudAnalyticsClient();
                TableQuery <CapacityEntity> capacityQuery    = storageAnalytics.CreateCapacityQuery();
                IQueryable <CapacityEntity> capacityData     = capacityQuery.Where(x => x.RowKey == Constant.Storage.Table.Key.CapacityData);
                try
                {
                    List <CapacityEntity> capacities = capacityData.ToList();
                    if (capacities.Count == 0)
                    {
                        capacityUsed = Storage.MapByteCount(0);
                    }
                    else
                    {
                        capacities.Sort(OrderByLatest);
                        long latestCapacity = capacities.First().Capacity;
                        capacityUsed = Storage.MapByteCount(latestCapacity);
                    }
                }
                catch
                {
                    capacityUsed = Constant.Storage.NotAvailable;
                }
            }
            return(capacityUsed);
        }
        //internal const string TableName = "ustormiot20170712003413jul2017at084521201setuplog";
        public static void Main(string[] args)
        {
            Console.WriteLine("Azure Storage Table Sample\n");

            // Create or reference an existing table
            //CloudTable table = CreateTableAsync().Result;

            // Demonstrate basic CRUD functionality
            // BasicTableOperationsAsync(table).Wait();

            // Demonstrate advanced functionality such as batch operations and segmented multi-entity queries
            //  AdvancedTableOperationsAsync(table).Wait();

            // When you delete a table it could take several seconds before you can recreate a table with the same
            // name - hence to enable you to run the demo in quick succession the table is not deleted. If you want
            // to delete the table uncomment the line of code below.
            //DeleteTableAsync(table).Wait();

            CloudStorageAccount  storageAccount  = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
            StorageCredentials   cred            = new StorageCredentials("testfuyu", "dbxJcP5LaGhJvOZtLENl8NGoHITRKtSAlB1Hg2b8VwlsP3aphw8SdK9K/KVtkvpWogyDnyzxx2IZ1AYoeV6PQg==");
            StorageUri           bloburi         = new StorageUri(new Uri("https://testfuyu.blob.core.chinacloudapi.cn/testfuyu"));
            StorageUri           tableuri        = new StorageUri(new Uri("https://testfuyu.table.core.chinacloudapi.cn/"));
            CloudAnalyticsClient analyticsClient = new CloudAnalyticsClient(bloburi, tableuri, cred);
            var cloudTableClient = storageAccount.CreateCloudTableClient();
            var table            = cloudTableClient.GetTableReference(TableName);
            // var entities = table.ExecuteQuery(new TableQuery<CapacityEntity>()).ToList();

            TableContinuationToken token = null;
            var entities = new List <CapacityEntity>();

            do
            {
                var queryResult = table.ExecuteQuerySegmented(new TableQuery <CapacityEntity>(), token);
                entities.AddRange(queryResult.Results);
                token = queryResult.ContinuationToken;
            } while (token != null);

            foreach (CapacityEntity entity in entities)
            {
                Console.WriteLine("result is {0}, {1}", entity.Time, entity.Capacity);
            }
            var yesterday     = DateTime.UtcNow.Date.AddDays(-1).ToString("yyyyMMddT0000");
            var capacityQuery = analyticsClient.CreateCapacityQuery();
            var query         = from entity in capacityQuery
                                where entity.PartitionKey.CompareTo(yesterday) >= 0
                                select entity;

            var results = query.ToList();

            //TableQuery < CapacityEntity > query = new TableQuery<CapacityEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.GreaterThan, yesterday));
            //Console.WriteLine("enum is: {0}", table.ExecuteQuery(query).GetEnumerator());

            Console.WriteLine("another way to check result");

            foreach (CapacityEntity entity in results)
            {
                if (entity.PartitionKey.CompareTo(yesterday) >= 0)
                {
                    Console.WriteLine("result is {0}, {1}", entity.Time, entity.Capacity);
                }
            }

            Console.ReadLine();
        }