github.com/niteshexa/cloudfoundry_cli@v7.1.0+incompatible/command/v7/stop_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/command/flag"
     5  )
     6  
     7  type StopCommand struct {
     8  	BaseCommand
     9  
    10  	RequiredArgs    flag.AppName `positional-args:"yes"`
    11  	usage           interface{}  `usage:"CF_NAME stop APP_NAME"`
    12  	relatedCommands interface{}  `related_commands:"restart, scale, start"`
    13  }
    14  
    15  func (cmd StopCommand) Execute(args []string) error {
    16  	err := cmd.SharedActor.CheckTarget(true, true)
    17  	if err != nil {
    18  		return err
    19  	}
    20  
    21  	user, err := cmd.Config.CurrentUser()
    22  	if err != nil {
    23  		return err
    24  	}
    25  
    26  	app, warnings, err := cmd.Actor.GetApplicationByNameAndSpace(cmd.RequiredArgs.AppName, cmd.Config.TargetedSpace().GUID)
    27  	cmd.UI.DisplayWarnings(warnings)
    28  	if err != nil {
    29  		return err
    30  	}
    31  
    32  	if !app.Started() {
    33  		cmd.UI.DisplayTextWithFlavor("App {{.AppName}} is already stopped.",
    34  			map[string]interface{}{
    35  				"AppName": cmd.RequiredArgs.AppName,
    36  			})
    37  		cmd.UI.DisplayOK()
    38  		return nil
    39  	}
    40  
    41  	cmd.UI.DisplayTextWithFlavor("Stopping app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", map[string]interface{}{
    42  		"AppName":   cmd.RequiredArgs.AppName,
    43  		"OrgName":   cmd.Config.TargetedOrganization().Name,
    44  		"SpaceName": cmd.Config.TargetedSpace().Name,
    45  		"Username":  user.Name,
    46  	})
    47  	warnings, err = cmd.Actor.StopApplication(app.GUID)
    48  
    49  	cmd.UI.DisplayWarnings(warnings)
    50  	if err != nil {
    51  		return err
    52  	}
    53  
    54  	cmd.UI.DisplayOK()
    55  
    56  	return nil
    57  }