private async Task <DockerHost> CreateAWSHost(CreateOptimizedExperimentCommand request, Guid templateId) { var template = await _awsVMRepo.GetByIdAsync(templateId); var dockerHost = new DockerHost { Name = request.Name, Location = "Ireland", CloudProvider = Enums.CloudProvider.AWS, HostName = "localhost", vCPU = template.vCPUs, Memory = template.Memory, PortNumber = 2376, Storage = template.DiskSize }; var awsHost = new AWSHost { DockerHost = dockerHost, Credentials = _awsCredsRepo.GetAll().FirstOrDefault(), DestroyResourcesAfterBenchmark = true, IPAddress = "127.0.0.1", Template = template, Name = "AWSHost" + request.Name.Replace(" ", "", StringComparison.CurrentCulture) + DateTime.Now.Ticks }; dockerHost.AWSHost = awsHost; await _dockerHostRepo.AddAsync(dockerHost); return(dockerHost); }
private async Task <string> SetupHost(AWSHost host) { Guard.Against.Null(host, nameof(host)); //Flag for Application Layer host.ResourceCreationStarted = true; await _awsHostRepo.UpdateAsync(host); try { var stackDeleteRequest = await _awsResourceService.DeleteStack(host.DockerHost.StackResourceName, host.Credentials.Id); } catch (Exception ex) { // } await Task.Delay(120000); var parameters = new List <Amazon.CloudFormation.Model.Parameter>(); _mapper.Map(host.Template.Parameters, parameters); var ipAddress = await _awsResourceService.CreateDockerVM(host.DockerHost.StackResourceName, host.Template.Template, parameters, host.Credentials.Id); host.IPAddress = ipAddress; host.ResourceCreatedAt = DateTimeOffset.Now; host.ResourcedCreated = true; await _awsHostRepo.UpdateAsync(host); return(ipAddress); }