/// <summary> /// Returns a list of Azure sql databases for given subscription /// </summary> private async Task <ServiceResponse <FirewallRuleResource> > TryFindAzureResourceForSubscriptionAsync(object notRequired, IAzureUserAccountSubscriptionContext input, string serverName, CancellationToken cancellationToken, CancellationToken internalCancellationToken) { ServiceResponse <FirewallRuleResource> result = null; if (!cancellationToken.IsCancellationRequested) { using (IAzureResourceManagementSession session = await ResourceManager.CreateSessionAsync(input)) { IAzureSqlServerResource azureSqlServer = await FindAzureResourceForSubscriptionAsync(serverName, session); if (azureSqlServer != null) { result = new ServiceResponse <FirewallRuleResource>(new FirewallRuleResource() { SubscriptionContext = input, AzureResource = azureSqlServer }.SingleItemAsEnumerable()); result.Found = true; } } } return(result ?? new ServiceResponse <FirewallRuleResource>()); }
public async Task <FirewallRuleResponse> CreateFirewallRuleAsync( IAzureResourceManagementSession azureResourceManagementSession, IAzureSqlServerResource azureSqlServer, FirewallRuleRequest firewallRuleRequest) { CommonUtil.CheckForNull(azureResourceManagementSession, "azureResourceManagerSession"); CommonUtil.CheckForNull(firewallRuleRequest, "firewallRuleRequest"); CommonUtil.CheckForNull(azureSqlServer, "azureSqlServer"); try { AzureResourceManagementSession vsAzureResourceManagementSession = azureResourceManagementSession as AzureResourceManagementSession; if (vsAzureResourceManagementSession != null) { var firewallRule = new RestFirewallRule() { EndIpAddress = firewallRuleRequest.EndIpAddress.ToString(), StartIpAddress = firewallRuleRequest.StartIpAddress.ToString() }; IFirewallRulesOperations firewallRuleOperations = vsAzureResourceManagementSession.SqlManagementClient.FirewallRules; var firewallRuleResponse = await ExecuteCloudRequest( () => firewallRuleOperations.CreateOrUpdateWithHttpMessagesAsync( azureSqlServer.ResourceGroupName ?? string.Empty, azureSqlServer.Name, firewallRuleRequest.FirewallRuleName, firewallRule, GetCustomHeaders()), SR.FirewallRuleCreationFailedWithError); var response = firewallRuleResponse.Body; return(new FirewallRuleResponse() { StartIpAddress = response.StartIpAddress, EndIpAddress = response.EndIpAddress, Created = true }); } // else respond with failure case return(new FirewallRuleResponse() { Created = false }); } catch (Exception ex) { TraceException(TraceEventType.Error, (int)TraceId.AzureResource, ex, "Failed to create firewall rule"); throw; } }
private async Task <ServiceResponse <DatabaseInstanceInfo> > GetDatabasesForServerFromService( IAzureResourceManagementSession session, IAzureSqlServerResource azureSqlServer, string serverName, CancellationToken cancellationToken, CancellationToken internalCancellationToken) { try { if (cancellationToken.IsCancellationRequested) { return(new ServiceResponse <DatabaseInstanceInfo>()); } ServerInstanceInfo serverInstanceInfo = new ServerInstanceInfo(ServerDefinition) { Name = azureSqlServer.Name, FullyQualifiedDomainName = azureSqlServer.FullyQualifiedDomainName, AdministratorLogin = azureSqlServer.AdministratorLogin }; OnDatabaseFound(new DatabaseInstanceInfo(serverInstanceInfo)); IEnumerable <IAzureResource> databases = await AzureResourceManager.GetAzureDatabasesAsync( session, azureSqlServer.ResourceGroupName, azureSqlServer.Name); if (cancellationToken.IsCancellationRequested) { return(new ServiceResponse <DatabaseInstanceInfo>()); } else { IEnumerable <DatabaseInstanceInfo> data = databases.Select(x => ConvertToModel(serverInstanceInfo, x)); ServiceResponse <DatabaseInstanceInfo> result = new ServiceResponse <DatabaseInstanceInfo>(data); foreach (var databaseInstance in result.Data) { if (cancellationToken.IsCancellationRequested) { break; } OnDatabaseFound(databaseInstance); } return(result); } } catch (Exception ex) { return(new ServiceResponse <DatabaseInstanceInfo>(ex)); } }