Example #1
0
        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();
        }
Example #2
0
        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);
        }