func (cmd *CreateRoute) CreateRoute(hostName string, domain models.DomainFields, space models.SpaceFields) (route models.Route, apiErr error) { cmd.ui.Say(T("Creating route {{.Hostname}} for org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", map[string]interface{}{ "Hostname": terminal.EntityNameColor(domain.UrlForHost(hostName)), "OrgName": terminal.EntityNameColor(cmd.config.OrganizationFields().Name), "SpaceName": terminal.EntityNameColor(space.Name), "Username": terminal.EntityNameColor(cmd.config.Username())})) route, apiErr = cmd.routeRepo.CreateInSpace(hostName, domain.Guid, space.Guid) if apiErr != nil { var findApiResponse error route, findApiResponse = cmd.routeRepo.FindByHostAndDomain(hostName, domain) if findApiResponse != nil || route.Space.Guid != space.Guid || route.Domain.Guid != domain.Guid { return } apiErr = nil cmd.ui.Ok() cmd.ui.Warn(T("Route {{.URL}} already exists", map[string]interface{}{"URL": route.URL()})) return } cmd.ui.Ok() return }
func (resource RouteSummary) ToModel() (route models.RouteSummary) { domain := models.DomainFields{} domain.Guid = resource.Domain.Guid domain.Name = resource.Domain.Name domain.Shared = resource.Domain.OwningOrganizationGuid != "" route.Guid = resource.Guid route.Host = resource.Host route.Domain = domain return }
func makeAppWithRoute(appName string) models.Application { application := models.Application{} application.Name = appName application.Guid = "app-guid" domain := models.DomainFields{} domain.Name = "example.com" route := models.RouteSummary{Host: "foo", Domain: domain} secondRoute := models.RouteSummary{Host: appName, Domain: domain} packgeUpdatedAt, _ := time.Parse("2006-01-02T15:04:05Z07:00", "2012-10-24T19:54:00Z") application.State = "started" application.InstanceCount = 2 application.RunningInstances = 2 application.Memory = 256 application.Routes = []models.RouteSummary{route, secondRoute} application.PackageUpdatedAt = &packgeUpdatedAt return application }
Expect(routes[1].Guid).To(Equal("route-2-guid")) Expect(handler).To(HaveAllRequestsCalled()) Expect(apiErr).NotTo(HaveOccurred()) }) It("finds a route by host and domain", func() { ts, handler = testnet.NewServer([]testnet.TestRequest{ testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET", Path: "/v2/routes?q=host%3Amy-cool-app%3Bdomain_guid%3Amy-domain-guid", Response: findRouteByHostResponse, }), }) configRepo.SetApiEndpoint(ts.URL) domain := models.DomainFields{} domain.Guid = "my-domain-guid" route, apiErr := repo.FindByHostAndDomain("my-cool-app", domain) Expect(apiErr).NotTo(HaveOccurred()) Expect(handler).To(HaveAllRequestsCalled()) Expect(route.Host).To(Equal("my-cool-app")) Expect(route.Guid).To(Equal("my-route-guid")) Expect(route.Domain.Guid).To(Equal(domain.Guid)) }) It("returns 'not found' response when there is no route w/ the given domain and host", func() { ts, handler = testnet.NewServer([]testnet.TestRequest{ testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "GET",
func (routeActor RouteActor) FindOrCreateRoute(hostname string, domain models.DomainFields) (route models.Route) { route, apiErr := routeActor.routeRepo.FindByHostAndDomain(hostname, domain) 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.UrlForHost(hostname))})) route, apiErr = routeActor.routeRepo.Create(hostname, domain) if apiErr != nil { routeActor.ui.Failed(apiErr.Error()) } routeActor.ui.Ok() routeActor.ui.Say("") default: routeActor.ui.Failed(apiErr.Error()) } return }
}) It("fails with usage when not provided exactly one arg", func() { requirementsFactory.LoginSuccess = true runCommand("too", "much") Expect(ui.FailedWithUsage).To(BeTrue()) }) }) Context("when logged in, and provided the name of an org", func() { BeforeEach(func() { developmentSpaceFields := models.SpaceFields{} developmentSpaceFields.Name = "development" stagingSpaceFields := models.SpaceFields{} stagingSpaceFields.Name = "staging" domainFields := models.DomainFields{} domainFields.Name = "cfapps.io" cfAppDomainFields := models.DomainFields{} cfAppDomainFields.Name = "cf-app.com" org := models.Organization{} org.Name = "my-org" org.Guid = "my-org-guid" org.QuotaDefinition = models.NewQuotaFields("cantina-quota", 512, 2, 5, true) org.Spaces = []models.SpaceFields{developmentSpaceFields, stagingSpaceFields} org.Domains = []models.DomainFields{domainFields, cfAppDomainFields} org.SpaceQuotas = []models.SpaceQuota{ {Name: "space-quota-1"}, {Name: "space-quota-2"}, }
runCommand("some-space") Expect(testcmd.CommandDidPassRequirements).To(BeFalse()) }) }) Context("when logged in and an org is targeted", func() { BeforeEach(func() { org := models.OrganizationFields{} org.Name = "my-org" app := models.ApplicationFields{} app.Name = "app1" app.Guid = "app1-guid" apps := []models.ApplicationFields{app} domain := models.DomainFields{} domain.Name = "domain1" domain.Guid = "domain1-guid" domains := []models.DomainFields{domain} serviceInstance := models.ServiceInstanceFields{} serviceInstance.Name = "service1" serviceInstance.Guid = "service1-guid" services := []models.ServiceInstanceFields{serviceInstance} securityGroup1 := models.SecurityGroupFields{Name: "Nacho Security"} securityGroup2 := models.SecurityGroupFields{Name: "Nacho Prime"} securityGroups := []models.SecurityGroupFields{securityGroup1, securityGroup2} space := models.Space{} space.Name = "whose-space-is-it-anyway"
if errorCode != "" { apiErr = errors.NewHttpError(400, errorCode, "Error staging app") } } return } BeforeEach(func() { ui = new(testterm.FakeUI) requirementsFactory = &testreq.FakeReqFactory{} defaultAppForStart.Name = "my-app" defaultAppForStart.Guid = "my-app-guid" defaultAppForStart.InstanceCount = 2 domain := models.DomainFields{} domain.Name = "example.com" route := models.RouteSummary{} route.Host = "my-app" route.Domain = domain defaultAppForStart.Routes = []models.RouteSummary{route} instance1 := models.AppInstanceFields{} instance1.State = models.InstanceStarting instance2 := models.AppInstanceFields{} instance2.State = models.InstanceStarting instance3 := models.AppInstanceFields{}