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()); }
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)); }