private async void LoadDockerInstances() { _dockerConfigSection = ConfigurationManager.GetSection(DockerConfigSection.SectionName) as DockerConfigSection; var azureCfg = ConfigurationManager.GetSection(AzureConfigSection.SectionName) as AzureConfigSection; var azureController = new AzureController(azureCfg.AzureSubscription.SubscriptionId, azureCfg.AzureSubscription.Base64encodedCertificate); var dockerInstanceViewModels = _dockerConfigSection.DockerInstances.Select((i, idx) => new DockerInstanceViewModel( new DockerInstance(i.Host, i.Port, i.Username, i.Password), azureController.GetVirtualMachineByHostnameAsync(azureCfg.AzureSubscription.ResourceGroup, i.Host), idx + 1)); DockerInstanceViewModels = new ObservableCollection <DockerInstanceViewModel>(dockerInstanceViewModels); var initializeTasks = DockerInstanceViewModels.Select(i => i.InitializeAsync()); await Task.WhenAll(initializeTasks); await ReevaluateDatabaseInteractors(); }
public static IDatabaseInteractor CreateDatabaseInteractor(string name, string host, DockerConfigSection dockerConfigSection) { var containerConfigElement = dockerConfigSection.DockerContainer.Single(e => e.Name == name); if (name == "/crate") { return(new CrateDatabaseInteractor( containerName: name, host: host, crateUrl: $"http://{host}:{containerConfigElement.Port}", shards: dockerConfigSection.DockerInstances.Count)); } if (name == "/mongo-router") { return(new MongoDatabaseInteractor( containerName: name, host: host, port: containerConfigElement.Port, username: containerConfigElement.Username, password: containerConfigElement.Password)); } return(null); }