public static string GettingJobContainerUrl()

in SQL-Hybrid-Cloud-Toolkit/Components/ADP/ADPControl/StorageActivity.cs [24:62]


        public static string GettingJobContainerUrl([ActivityTrigger] (Guid, string, string, string) input, ILogger log)
        {
            Guid SubscriptionId = input.Item1;
            String ResourceGroupName = input.Item2;
            String StorageAccountName = input.Item3;
            String ContainerName = input.Item4;

            var azureServiceTokenProvider = new AzureServiceTokenProvider();
            TokenCredentials tokenArmCredential = new TokenCredentials(azureServiceTokenProvider.GetAccessTokenAsync("https://management.core.windows.net/").Result);
            StorageManagementClient storageMgmtClient = new StorageManagementClient(tokenArmCredential) { SubscriptionId = SubscriptionId.ToString() };

            // Get the storage account keys for a given account and resource group
            IList<StorageAccountKey> acctKeys = storageMgmtClient.StorageAccounts.ListKeys(ResourceGroupName, StorageAccountName).Keys;

            // Get a Storage account using account creds:
            StorageCredentials storageCred = new StorageCredentials(StorageAccountName, acctKeys.FirstOrDefault().Value);
            CloudStorageAccount linkedStorageAccount = new CloudStorageAccount(storageCred, true);

            bool createContainer = false;
            // Normalize the container name for the Export action.
            if (ContainerName.Contains("-Export-"))
            {
                ContainerName = ContainerName.Replace("Export-", "");
                createContainer = true;
            }

            CloudBlobContainer container = linkedStorageAccount.CreateCloudBlobClient().GetContainerReference(ContainerName);

            if(createContainer) 
                container.CreateIfNotExistsAsync().Wait();

            string containerUrl = container.Uri.ToString() +
                                        container.GetSharedAccessSignature(new SharedAccessBlobPolicy()
                                        {
                                            Permissions = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.List,
                                            SharedAccessExpiryTime = DateTime.UtcNow.AddDays(7)
                                        });
            return containerUrl;
        }