private async Task<string> GenerateResourceGroupName(string token, Repository repo, SubscriptionInfo[] subscriptions) { if (!string.IsNullOrEmpty(repo.RepositoryName)) { bool isAvailable = false; var creds = new TokenCloudCredentials(subscriptions.First().subscriptionId, token); var rdfeBaseUri = new Uri(Utils.GetRDFEUrl(Request.RequestUri.Host)); using (var webSiteMgmtClient = CloudContext.Clients.CreateWebSiteManagementClient(creds, rdfeBaseUri)) { // Make 3 attempts to get a random name (based on the repo name) for (int i = 0; i < 3; i++) { string resourceGroupName = GenerateRandomResourceGroupName(repo.RepositoryName); isAvailable = await IsSiteNameAvailable(webSiteMgmtClient, resourceGroupName); if (isAvailable) { return resourceGroupName; } } } } return null; }