github.com/sleungcy/cli@v7.1.0+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/command/flag"
     6  )
     7  
     8  type UnmapRouteCommand struct {
     9  	BaseCommand
    10  
    11  	RequiredArgs    flag.AppDomain   `positional-args:"yes"`
    12  	Hostname        string           `long:"hostname" short:"n" description:"Hostname used to identify the HTTP route"`
    13  	Path            flag.V7RoutePath `long:"path" description:"Path used to identify the HTTP route"`
    14  	Port            int              `long:"port" description:"Port used to identify the TCP route"`
    15  	relatedCommands interface{}      `related_commands:"delete-route, map-route, routes"`
    16  }
    17  
    18  func (cmd UnmapRouteCommand) Usage() string {
    19  	return `
    20  Unmap an HTTP route:
    21     CF_NAME unmap-route APP_NAME DOMAIN [--hostname HOSTNAME] [--path PATH]
    22  
    23  Unmap a TCP route:
    24     CF_NAME unmap-route APP_NAME DOMAIN --port PORT`
    25  }
    26  
    27  func (cmd UnmapRouteCommand) Examples() string {
    28  	return `
    29  CF_NAME unmap-route my-app example.com                              # example.com
    30  CF_NAME unmap-route my-app example.com --hostname myhost            # myhost.example.com
    31  CF_NAME unmap-route my-app example.com --hostname myhost --path foo # myhost.example.com/foo
    32  CF_NAME unmap-route my-app example.com --port 5000                  # example.com:5000`
    33  }
    34  
    35  func (cmd UnmapRouteCommand) Execute(args []string) error {
    36  	err := cmd.SharedActor.CheckTarget(true, true)
    37  	if err != nil {
    38  		return err
    39  	}
    40  
    41  	user, err := cmd.Config.CurrentUser()
    42  	if err != nil {
    43  		return err
    44  	}
    45  
    46  	domain, warnings, err := cmd.Actor.GetDomainByName(cmd.RequiredArgs.Domain)
    47  	cmd.UI.DisplayWarnings(warnings)
    48  	if err != nil {
    49  		return err
    50  	}
    51  
    52  	spaceGUID := cmd.Config.TargetedSpace().GUID
    53  	app, warnings, err := cmd.Actor.GetApplicationByNameAndSpace(cmd.RequiredArgs.App, spaceGUID)
    54  	cmd.UI.DisplayWarnings(warnings)
    55  	if err != nil {
    56  		return err
    57  	}
    58  
    59  	path := cmd.Path.Path
    60  	route, warnings, err := cmd.Actor.GetRouteByAttributes(domain, cmd.Hostname, path, cmd.Port)
    61  	url := desiredURL(domain.Name, cmd.Hostname, path, cmd.Port)
    62  	cmd.UI.DisplayWarnings(warnings)
    63  	if err != nil {
    64  		return err
    65  	}
    66  
    67  	cmd.UI.DisplayTextWithFlavor("Removing route {{.URL}} from app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.User}}...", map[string]interface{}{
    68  		"URL":       url,
    69  		"AppName":   cmd.RequiredArgs.App,
    70  		"User":      user.Name,
    71  		"SpaceName": cmd.Config.TargetedSpace().Name,
    72  		"OrgName":   cmd.Config.TargetedOrganization().Name,
    73  	})
    74  
    75  	destination, err := cmd.Actor.GetRouteDestinationByAppGUID(route, app.GUID)
    76  	if err != nil {
    77  		if _, ok := err.(actionerror.RouteDestinationNotFoundError); ok {
    78  			cmd.UI.DisplayText("Route to be unmapped is not currently mapped to the application.")
    79  			cmd.UI.DisplayOK()
    80  			return nil
    81  		}
    82  
    83  		return err
    84  	}
    85  
    86  	warnings, err = cmd.Actor.UnmapRoute(route.GUID, destination.GUID)
    87  	cmd.UI.DisplayWarnings(warnings)
    88  	if err != nil {
    89  		return err
    90  	}
    91  
    92  	cmd.UI.DisplayOK()
    93  
    94  	return nil
    95  }