/// <summary>
        /// Initializes the storage account creating the containers
        /// </summary>
        /// <param name="configuration"></param>
        /// <param name="logger"></param>
        /// <param name="seedData"></param>
        public static async void Initialize(IConfiguration configuration, ILogger logger, bool seedData)
        {
            logger.LogInformation("Initializing Azure storage");
            var account = CloudStorageAccount.Parse(configuration.GetConnectionString("Storage"));
            var client  = account.CreateCloudBlobClient();

            var inputsContainerName = configuration["BatchServer:InputsContainerName"];

            logger.LogInformation($"Creating inputs container '{inputsContainerName}'");
            InputsContainer = client.GetContainerReference(inputsContainerName);
            await InputsContainer.CreateIfNotExistsAsync(BlobContainerPublicAccessType.Blob, null, null)
            .ConfigureAwait(continueOnCapturedContext: false);

            var outputsContainerName = configuration["BatchServer:OutputsContainerName"];

            logger.LogInformation($"Creating inputs container '{outputsContainerName}'");
            OutputsContainer = client.GetContainerReference(outputsContainerName);
            await OutputsContainer.CreateIfNotExistsAsync(BlobContainerPublicAccessType.Off, null, null)
            .ConfigureAwait(continueOnCapturedContext: false);

            if (seedData)
            {
                // Look for any input
                var blobs = await InputsContainer.ListBlobsSegmentedAsync(null)
                            .ConfigureAwait(continueOnCapturedContext: false);

                if (blobs.Results.Any())
                {
                    logger.LogInformation("Database already initialized. Skipping...");
                    return; // The database has been seeded
                }
                for (var i = 1; i < 10000; i++)
                {
                    var blob = InputsContainer.GetBlockBlobReference($"input{i}.txt");
                    await blob.UploadTextAsync("Hello world")
                    .ConfigureAwait(continueOnCapturedContext: false);
                }
            }

            logger.LogInformation($"Storage successfully initialized");
        }
示例#2
0
        /// <summary>
        /// Initializes the storage account creating the containers
        /// </summary>
        /// <param name="configuration"></param>
        /// <param name="logger"></param>
        /// <param name="seedData"></param>
        public static async void Initialize(IConfiguration configuration, ILogger logger, bool seedData)
        {
            logger.LogInformation("Initializing Azure storage");
            var account = CloudStorageAccount.Parse(configuration.GetConnectionString("Storage"));
            var client  = account.CreateCloudBlobClient();

            var inputsContainerName = configuration["BatchServer:InputsContainerName"];

            logger.LogInformation($"Creating inputs container '{inputsContainerName}'");
            InputsContainer = client.GetContainerReference(inputsContainerName);
            await InputsContainer.CreateIfNotExistsAsync(BlobContainerPublicAccessType.Blob, null, null)
            .ConfigureAwait(continueOnCapturedContext: false);

            var outputsContainerName = configuration["BatchServer:OutputsContainerName"];

            logger.LogInformation($"Creating inputs container '{outputsContainerName}'");
            OutputsContainer = client.GetContainerReference(outputsContainerName);
            await OutputsContainer.CreateIfNotExistsAsync(BlobContainerPublicAccessType.Off, null, null)
            .ConfigureAwait(continueOnCapturedContext: false);

            logger.LogInformation($"Storage successfully initialized");
        }