func (cmd *CreateRoute) CreateRoute(hostName string, path string, domain models.DomainFields, space models.SpaceFields) (models.Route, error) { cmd.ui.Say(T("Creating route {{.URL}} for org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", map[string]interface{}{ "URL": terminal.EntityNameColor(domain.UrlForHostAndPath(hostName, path)), "OrgName": terminal.EntityNameColor(cmd.config.OrganizationFields().Name), "SpaceName": terminal.EntityNameColor(space.Name), "Username": terminal.EntityNameColor(cmd.config.Username())})) route, err := cmd.routeRepo.CreateInSpace(hostName, path, domain.Guid, space.Guid) if err != nil { var findErr error route, findErr = cmd.routeRepo.Find(hostName, domain, path) if findErr != nil { return models.Route{}, err } if route.Space.Guid != space.Guid || route.Domain.Guid != domain.Guid { return models.Route{}, err } cmd.ui.Ok() cmd.ui.Warn(T("Route {{.URL}} already exists", map[string]interface{}{"URL": route.URL()})) return route, nil } cmd.ui.Ok() return route, nil }
func (routeActor RouteActor) FindOrCreateRoute(hostname string, domain models.DomainFields, path string) (route models.Route) { var port int route, apiErr := routeActor.routeRepo.Find(hostname, domain, path, port) switch apiErr.(type) { case nil: routeActor.ui.Say(T("Using route {{.RouteURL}}", map[string]interface{}{"RouteURL": terminal.EntityNameColor(route.URL())})) case *errors.ModelNotFoundError: routeActor.ui.Say(T("Creating route {{.Hostname}}...", map[string]interface{}{"Hostname": terminal.EntityNameColor(domain.UrlForHostAndPath(hostname, path))})) route, apiErr = routeActor.routeRepo.Create(hostname, domain, path) if apiErr != nil { routeActor.ui.Failed(apiErr.Error()) } routeActor.ui.Ok() routeActor.ui.Say("") default: routeActor.ui.Failed(apiErr.Error()) } return }