github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/delete_orphaned_routes_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/sharedaction"
     5  	"code.cloudfoundry.org/cli/actor/v7action"
     6  	"code.cloudfoundry.org/cli/command"
     7  	"code.cloudfoundry.org/cli/command/v7/shared"
     8  	"code.cloudfoundry.org/clock"
     9  )
    10  
    11  //go:generate counterfeiter . DeleteOrphanedRoutesActor
    12  
    13  type DeleteOrphanedRoutesActor interface {
    14  	DeleteOrphanedRoutes(spaceGUID string) (v7action.Warnings, error)
    15  }
    16  
    17  type DeleteOrphanedRoutesCommand struct {
    18  	usage           interface{} `usage:"CF_NAME delete-orphaned-routes [-f]\n"`
    19  	Force           bool        `short:"f" description:"Force deletion without confirmation"`
    20  	relatedCommands interface{} `related_commands:"delete-routes, routes"`
    21  
    22  	UI          command.UI
    23  	Config      command.Config
    24  	Actor       DeleteOrphanedRoutesActor
    25  	SharedActor command.SharedActor
    26  }
    27  
    28  func (cmd *DeleteOrphanedRoutesCommand) Setup(config command.Config, ui command.UI) error {
    29  	cmd.UI = ui
    30  	cmd.Config = config
    31  	sharedActor := sharedaction.NewActor(config)
    32  	cmd.SharedActor = sharedActor
    33  
    34  	ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui, "")
    35  	if err != nil {
    36  		return err
    37  	}
    38  	cmd.Actor = v7action.NewActor(ccClient, config, sharedActor, uaaClient, clock.NewClock())
    39  	return nil
    40  }
    41  
    42  func (cmd DeleteOrphanedRoutesCommand) Execute(args []string) error {
    43  	err := cmd.SharedActor.CheckTarget(true, true)
    44  	if err != nil {
    45  		return err
    46  	}
    47  
    48  	_, err = cmd.Config.CurrentUser()
    49  	if err != nil {
    50  		return err
    51  	}
    52  
    53  	if !cmd.Force {
    54  		response, promptErr := cmd.UI.DisplayBoolPrompt(false, "Really delete orphaned routes?")
    55  
    56  		if promptErr != nil {
    57  			return promptErr
    58  		}
    59  
    60  		if !response {
    61  			cmd.UI.DisplayText("Routes have not been deleted.")
    62  			return nil
    63  		}
    64  	}
    65  
    66  	user, err := cmd.Config.CurrentUser()
    67  	if err != nil {
    68  		return err
    69  	}
    70  	cmd.UI.DisplayTextWithFlavor("Deleting orphaned routes as {{.userName}}...",
    71  		map[string]interface{}{
    72  			"userName": user.Name,
    73  		})
    74  
    75  	warnings, err := cmd.Actor.DeleteOrphanedRoutes(cmd.Config.TargetedSpace().GUID)
    76  
    77  	cmd.UI.DisplayWarnings(warnings)
    78  	if err != nil {
    79  		return err
    80  	}
    81  
    82  	cmd.UI.DisplayOK()
    83  	return nil
    84  }