private async Task <Tuple <IDatabaseInteractor, DatabaseInteractionStatus> > CreateDatabaseInteractor(DockerContainerConfigElement containerConfig, CancellationToken cancellationToken) { var containerWithName = DockerInstanceViewModels .SelectMany(i => i.DockerContainerViewModels) .Where(c => c.ContainerName == containerConfig.Name) .ToList(); if (containerWithName.All(c => c.ContainerState != DockerContainerState.Started)) { SendSnackbarMessage(new SnackbarMessage($"Inserting cannot be started since no container with name '{containerConfig.Name}' is started.", "DISMISS")); return(Tuple.Create <IDatabaseInteractor, DatabaseInteractionStatus>(null, DatabaseInteractionStatus.Incomplete)); } var host = containerWithName.First(c => c.ContainerState == DockerContainerState.Started).Host; IDatabaseInteractor databaseInteractor = DatabaseInteractorFactory.CreateDatabaseInteractor( containerConfig.Name, host, _dockerConfigSection); if (databaseInteractor == null) { SendSnackbarMessage(new SnackbarMessage($"No Twitter loader available for container '{containerConfig.Name}'.", "DISMISS")); return(Tuple.Create <IDatabaseInteractor, DatabaseInteractionStatus>(null, DatabaseInteractionStatus.Incomplete)); } await databaseInteractor.EnsureTableExistsAsync(); if (cancellationToken.IsCancellationRequested) { return(Tuple.Create <IDatabaseInteractor, DatabaseInteractionStatus>(null, DatabaseInteractionStatus.Cancelled)); } return(Tuple.Create(databaseInteractor, DatabaseInteractionStatus.Success)); }
private void DefineCommands() { StartAllVmsCommand = new AsyncCommand(() => { var startTasks = DockerInstanceViewModels.Where(i => !i.IsDisabled).Select(i => i.StartVmCommandHandler()); return(Task.WhenAll(startTasks)); }); StopAllVmsCommand = new AsyncCommand(() => { var stopTasks = DockerInstanceViewModels.Where(i => !i.IsDisabled).Select(i => i.StopVmCommandHandler()); return(Task.WhenAll(stopTasks)); }); RefreshAllVmStatusCommand = new AsyncCommand(async() => { var refreshTasks = DockerInstanceViewModels.Select(i => i.RefreshVmStatusCommandHandler()); await Task.WhenAll(refreshTasks); await ReevaluateDatabaseInteractors(); }); StartAllContainersCommand = new AsyncCommand(() => { var startTasks = DockerInstanceViewModels.Where(i => !i.IsDisabled) .SelectMany(i => i.DockerContainerViewModels) .Where(c => c.ContainerName == SelectedContainerName) .Select(c => c.StartAsyncCommandHandler()); return(Task.WhenAll(startTasks)); }, () => !string.IsNullOrEmpty(SelectedContainerName)); StopAllContainersCommand = new AsyncCommand(() => { var stopTasks = DockerInstanceViewModels.Where(i => !i.IsDisabled) .SelectMany(i => i.DockerContainerViewModels) .Where(c => c.ContainerName == SelectedContainerName) .Select(c => c.StopAsyncCommandHandler()); return(Task.WhenAll(stopTasks)); }, () => !string.IsNullOrEmpty(SelectedContainerName)); }