public async Task <IActionResult> CreateAsync([FromServices] ClusterService service, [FromBody] ClusterDTO ClusterDto) { try { var retornoNetwork = await service.CreateNetwork(ClusterDto.NomeCluster); var retornoSubnet = await service.CreateSubnet(retornoNetwork.Id, ClusterDto.NomeCluster); var retornoRouter = await service.CreateRouter(ClusterDto.NomeCluster); var retornoInterface = await service.AddRouterInterface(retornoSubnet.Id, retornoRouter.Id); var retorno = await service.CreateServer(ClusterDto.NomeCluster, ClusterDto.IdImage, ClusterDto.IdFlavor, retornoNetwork.Id); ClusterDto.IdServer = retorno.Id; ClusterDto.IdNetwork = retornoNetwork.Id; var interfacePort = await service.GetAllServerInterfaces(retorno.Id); var floatingIp = await service.AssociateFloatingIp("78c9ed54-cca8-4f1b-837d-b15c185cce17", interfacePort[0].PortId); ClusterDto.FloatingIP = floatingIp.FloatingIpAddress; ClusterDto.DataCriacao = DateTime.Now; } catch { return(null); } var mapped = Mapper.Map <Cluster>(ClusterDto); var result = service.Add <ClusterValidator>(mapped); return(new ObjectResult(result)); }