github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/unmap_route_command.go (about) 1 package v7 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/actor/sharedaction" 6 "code.cloudfoundry.org/cli/actor/v7action" 7 "code.cloudfoundry.org/cli/command" 8 "code.cloudfoundry.org/cli/command/flag" 9 "code.cloudfoundry.org/cli/command/v7/shared" 10 "code.cloudfoundry.org/clock" 11 ) 12 13 //go:generate counterfeiter . UnmapRouteActor 14 15 type UnmapRouteActor interface { 16 GetApplicationByNameAndSpace(appName string, spaceGUID string) (v7action.Application, v7action.Warnings, error) 17 GetRouteByAttributes(domainName string, domainGUID string, hostname string, path string) (v7action.Route, v7action.Warnings, error) 18 GetDomainByName(domainName string) (v7action.Domain, v7action.Warnings, error) 19 GetRouteDestinationByAppGUID(routeGUID string, appGUID string) (v7action.RouteDestination, v7action.Warnings, error) 20 UnmapRoute(routeGUID string, destinationGUID string) (v7action.Warnings, error) 21 } 22 23 type UnmapRouteCommand struct { 24 RequiredArgs flag.AppDomain `positional-args:"yes"` 25 Hostname string `long:"hostname" short:"n" description:"Hostname used to identify the HTTP route"` 26 Path flag.V7RoutePath `long:"path" description:"Path used to identify the HTTP route"` 27 usage interface{} `usage:"CF_NAME unmap-route APP_NAME DOMAIN [--hostname HOSTNAME] [--path PATH]\n\nEXAMPLES:\n CF_NAME unmap-route my-app example.com # example.com\n CF_NAME unmap-route my-app example.com --hostname myhost # myhost.example.com\n CF_NAME unmap-route my-app example.com --hostname myhost --path foo # myhost.example.com/foo"` 28 relatedCommands interface{} `related_commands:"delete-route, map-route, routes"` 29 30 UI command.UI 31 Config command.Config 32 Actor UnmapRouteActor 33 SharedActor command.SharedActor 34 } 35 36 func (cmd *UnmapRouteCommand) Setup(config command.Config, ui command.UI) error { 37 cmd.UI = ui 38 cmd.Config = config 39 sharedActor := sharedaction.NewActor(config) 40 cmd.SharedActor = sharedActor 41 42 ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui, "") 43 if err != nil { 44 return err 45 } 46 cmd.Actor = v7action.NewActor(ccClient, config, sharedActor, uaaClient, clock.NewClock()) 47 return nil 48 } 49 50 func (cmd UnmapRouteCommand) Execute(args []string) error { 51 err := cmd.SharedActor.CheckTarget(true, true) 52 if err != nil { 53 return err 54 } 55 56 user, err := cmd.Config.CurrentUser() 57 if err != nil { 58 return err 59 } 60 61 domain, warnings, err := cmd.Actor.GetDomainByName(cmd.RequiredArgs.Domain) 62 cmd.UI.DisplayWarnings(warnings) 63 if err != nil { 64 return err 65 } 66 67 spaceGUID := cmd.Config.TargetedSpace().GUID 68 app, warnings, err := cmd.Actor.GetApplicationByNameAndSpace(cmd.RequiredArgs.App, spaceGUID) 69 cmd.UI.DisplayWarnings(warnings) 70 if err != nil { 71 return err 72 } 73 74 path := cmd.Path.Path 75 route, warnings, err := cmd.Actor.GetRouteByAttributes(domain.Name, domain.GUID, cmd.Hostname, path) 76 fqdn := desiredFQDN(domain.Name, cmd.Hostname, path) 77 cmd.UI.DisplayWarnings(warnings) 78 if err != nil { 79 return err 80 } 81 82 cmd.UI.DisplayTextWithFlavor("Removing route {{.FQDN}} from app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.User}}...", map[string]interface{}{ 83 "FQDN": fqdn, 84 "AppName": cmd.RequiredArgs.App, 85 "User": user.Name, 86 "SpaceName": cmd.Config.TargetedSpace().Name, 87 "OrgName": cmd.Config.TargetedOrganization().Name, 88 }) 89 90 destination, warnings, err := cmd.Actor.GetRouteDestinationByAppGUID(route.GUID, app.GUID) 91 cmd.UI.DisplayWarnings(warnings) 92 if err != nil { 93 if _, ok := err.(actionerror.RouteDestinationNotFoundError); ok { 94 cmd.UI.DisplayText("Route to be unmapped is not currently mapped to the application.") 95 cmd.UI.DisplayOK() 96 return nil 97 } 98 99 return err 100 } 101 102 warnings, err = cmd.Actor.UnmapRoute(route.GUID, destination.GUID) 103 cmd.UI.DisplayWarnings(warnings) 104 if err != nil { 105 return err 106 } 107 108 cmd.UI.DisplayOK() 109 110 return nil 111 }