private static void SaveIndexFile() { Console.Write("Saving index..."); var indexItems = from o in operations where o.OperationType != JobOperationType.Delete && o.OperationType != JobOperationType.Undefined select new KeyValuePair<string, string>(o.StorageUri.AbsolutePath.Remove(0, WEB_CONTAINER_NAME.Length + 2), o.ContentHash); storageIndex = new StorageIndex(indexItems); storageIndexBlob.Properties.ContentType = "application/json"; storageIndex.Save(storageIndexBlob); Console.WriteLine("OK"); }
private static void InitializeStorage() { try { // Get storage account Console.Write("Initializing Azure Storage..."); var result = CloudStorageAccount.TryParse(config.StorageConnectionString, out var account); if (!result) { Console.WriteLine("Failed!"); Console.WriteLine("Cannot parse connection string."); Environment.Exit(ERRORLEVEL_FAILURE); } credentials = account.Credentials; var client = account.CreateCloudBlobClient(); Console.WriteLine("OK"); // Get web container Console.Write("Getting web container..."); webContainer = client.GetContainerReference(WEB_CONTAINER_NAME); var containerExists = webContainer.ExistsAsync().Result; if (!containerExists) { Console.WriteLine("Failed!"); Console.WriteLine($"The {WEB_CONTAINER_NAME} container was not found."); Environment.Exit(ERRORLEVEL_FAILURE); } Console.WriteLine($"OK, {webContainer.Uri}"); // Get index container Console.Write("Getting index container..."); var indexContainer = client.GetContainerReference(SYS_CONTAINER_NAME); indexContainer.CreateIfNotExistsAsync().Wait(); Console.WriteLine($"OK, {indexContainer.Uri}"); // Get storage index file Console.Write("Loading storage index..."); storageIndexBlob = indexContainer.GetBlockBlobReference(STORAGE_INDEX_NAME); storageIndex = StorageIndex.LoadOrCreateEmpty(storageIndexBlob); Console.WriteLine($"OK, {storageIndex.Count} items"); } catch (Exception ex) { Console.WriteLine("Failed!"); Console.WriteLine(ex.Message); Environment.Exit(ERRORLEVEL_FAILURE); } }