Пример #1
0
        public async Task <IActionResult> Create(AddDockerHostViewModel viewModel)
        {
            if (viewModel.AzureTemplate.HasValue || viewModel.AWSTemplate.HasValue)
            {
            }
            else
            {
                bool isCorrect = await CheckDockerConnection(viewModel.HostName, viewModel.PortNumber, viewModel.UseHttpAuthentication, viewModel.UserName, viewModel.Password);

                if (!isCorrect)
                {
                    return(BadRequest("Can't connect to docker host with provided details."));
                }
            }

            var dtoModel = _mapper.Map <DockerHost>(viewModel);

            //TODO: Logic needs to move out of web layer
            if (viewModel.AzureTemplate.HasValue)
            {
                var vmTemplate = await _mediatr.Send(new GetEntityCommand <AzureVMTemplate>(viewModel.AzureTemplate.Value));

                var azureCreds = await _mediatr.Send(new GetEntityCommand <AzureCredientials>(viewModel.AzureCredential.Value));

                var azureModel = _mapper.Map <AzureHost>(viewModel);
                azureModel.DockerHost  = dtoModel;
                azureModel.AzureRegion = viewModel.AzureLocation;
                azureModel.Template    = vmTemplate;
                azureModel.Credentials = azureCreds;
                azureModel.DestroyResourcesAfterBenchmark = viewModel.DestroyResourcesAfterBenchmark;

                //TODO: Fix this
                azureModel.Name = dtoModel.Name.Replace(" ", "", StringComparison.CurrentCulture) + DateTime.Now.Ticks;

                dtoModel.AzureHost = azureModel;
            }
            else if (viewModel.AWSTemplate.HasValue)
            {
                var vmTemplate = await _mediatr.Send(new GetEntityCommand <AWSCloudFormationTemplate>(viewModel.AWSTemplate.Value));

                var awsCreds = await _mediatr.Send(new GetEntityCommand <AWSCredentials>(viewModel.AWSCredential.Value));

                var awsHost = _mapper.Map <AWSHost>(viewModel);
                awsHost.DockerHost = dtoModel;
                awsHost.Template   = vmTemplate;
                awsHost.DestroyResourcesAfterBenchmark = viewModel.DestroyResourcesAfterBenchmark;
                awsHost.Credentials = awsCreds;

                awsHost.Name = dtoModel.Name.Replace(" ", "", StringComparison.CurrentCulture) + DateTime.Now.Ticks;

                dtoModel.AWSHost = awsHost;
            }

            await _mediatr.Send(new CreateCommand <DockerHost>(dtoModel));

            return(Ok());
        }
Пример #2
0
        public async Task <IActionResult> AddHost()
        {
            var viewModel = new AddDockerHostViewModel
            {
                AzureLocations   = await AzureRegionsSelectList(),
                AzureVMSizes     = await _mediatr.Send(new ListActiveEntitiesCommand <AzureVMTemplate>()),
                AWSCredentials   = await _mediatr.Send(new ListActiveEntitiesCommand <AWSCredentials>()),
                AWSTemplates     = await _mediatr.Send(new ListActiveEntitiesCommand <AWSCloudFormationTemplate>()),
                AzureCredentials = await AzureCredentialsSelectList()
            };

            return(View(viewModel));
        }