Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }