Exemple #1
0
        public static async Task InitContainerAsync(string containerName, ILogger log)
        {
            log.LogInformation($"Start to init container: {containerName}");

            string        serviceEndpoint = string.Format("https://{0}.blob.core.windows.net/", Common.GetEnvironmentVariable("SA_NAME"));
            List <string> directories     = new List <string> {
                "Incoming", "Ok", "Fail", "Report"
            };

            try
            {
                foreach (var directory in directories)
                {
                    DataLakeServiceClient    dataLakeServiceClient    = new DataLakeServiceClient(new Uri(serviceEndpoint), new DefaultAzureCredential());
                    DataLakeFileSystemClient dataLakeFileSystemClient = dataLakeServiceClient.GetFileSystemClient(containerName);
                    DataLakeDirectoryClient  dataLakeDirectoryClient  = dataLakeFileSystemClient.GetDirectoryClient(directory);
                    await dataLakeDirectoryClient.CreateIfNotExistsAsync();

                    log.LogInformation($"Initialisation complete: {containerName}");
                }
            }
            catch (RequestFailedException)
            {
                log.LogInformation($"Failed to complete container initialisation operation: {containerName}");
                throw;
            }
        }
        static async Task UploadSampleDataIfNotExistsAsync(string localDirectory, DataLakeDirectoryClient directoryClient)
        {
            // Upload all sample data files in this directory
            foreach (string filePath in Directory.GetFiles(localDirectory))
            {
                string             fileName   = Path.GetFileName(filePath);
                DataLakeFileClient fileClient = directoryClient.GetFileClient(fileName);
                if (!await fileClient.ExistsAsync())
                {
                    await fileClient.UploadAsync(filePath);
                }
            }

            // Recursively create subdirectories, and upload all sample data files in those subdirectories
            foreach (string directory in Directory.GetDirectories(localDirectory))
            {
                string directoryName = Path.GetFileNameWithoutExtension(directory);
                DataLakeDirectoryClient subDirectoryClient = directoryClient.GetSubDirectoryClient(directoryName);
                await subDirectoryClient.CreateIfNotExistsAsync();
                await UploadSampleDataIfNotExistsAsync(directory, subDirectoryClient);
            }
        }