github.com/randomtask1155/cli@v6.41.1-0.20181227003417-a98eed78cbde+incompatible/command/v7/app_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/sharedaction"
     5  	"code.cloudfoundry.org/cli/actor/v2action"
     6  	"code.cloudfoundry.org/cli/actor/v7action"
     7  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccversion"
     8  	"code.cloudfoundry.org/cli/command"
     9  	"code.cloudfoundry.org/cli/command/flag"
    10  	sharedV2 "code.cloudfoundry.org/cli/command/v6/shared"
    11  	"code.cloudfoundry.org/cli/command/v7/shared"
    12  )
    13  
    14  //go:generate counterfeiter . AppActor
    15  
    16  type AppActor interface {
    17  	CloudControllerAPIVersion() string
    18  	GetApplicationByNameAndSpace(name string, spaceGUID string) (v7action.Application, v7action.Warnings, error)
    19  	GetApplicationSummaryByNameAndSpace(appName string, spaceGUID string, withObfuscatedValues bool, routeActor v7action.RouteActor) (v7action.ApplicationSummary, v7action.Warnings, error)
    20  }
    21  
    22  type AppCommand struct {
    23  	RequiredArgs    flag.AppName `positional-args:"yes"`
    24  	GUID            bool         `long:"guid" description:"Retrieve and display the given app's guid.  All other health and status output for the app is suppressed."`
    25  	usage           interface{}  `usage:"CF_NAME app APP_NAME [--guid]"`
    26  	relatedCommands interface{}  `related_commands:"apps, events, logs, map-route, unmap-route, push"`
    27  
    28  	UI          command.UI
    29  	Config      command.Config
    30  	SharedActor command.SharedActor
    31  	RouteActor  v7action.RouteActor
    32  	Actor       AppActor
    33  }
    34  
    35  func (cmd *AppCommand) Setup(config command.Config, ui command.UI) error {
    36  	cmd.UI = ui
    37  	cmd.Config = config
    38  	sharedActor := sharedaction.NewActor(config)
    39  	cmd.SharedActor = sharedActor
    40  
    41  	ccClient, _, err := shared.NewClients(config, ui, true, ccversion.MinVersionApplicationFlowV3)
    42  	if err != nil {
    43  		return err
    44  	}
    45  
    46  	ccClientV2, uaaClientV2, err := sharedV2.NewClients(config, ui, true)
    47  	if err != nil {
    48  		return err
    49  	}
    50  
    51  	cmd.RouteActor = v2action.NewActor(ccClientV2, uaaClientV2, config)
    52  	cmd.Actor = v7action.NewActor(ccClient, config, sharedActor, uaaClientV2)
    53  
    54  	return nil
    55  }
    56  
    57  func (cmd AppCommand) Execute(args []string) error {
    58  	err := command.MinimumCCAPIVersionCheck(cmd.Actor.CloudControllerAPIVersion(), ccversion.MinVersionApplicationFlowV3)
    59  	if err != nil {
    60  		return err
    61  	}
    62  
    63  	err = cmd.SharedActor.CheckTarget(true, true)
    64  	if err != nil {
    65  		return err
    66  	}
    67  
    68  	if cmd.GUID {
    69  		return cmd.displayAppGUID()
    70  	}
    71  
    72  	user, err := cmd.Config.CurrentUser()
    73  	if err != nil {
    74  		return err
    75  	}
    76  
    77  	cmd.UI.DisplayTextWithFlavor("Showing health and status for app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", map[string]interface{}{
    78  		"AppName":   cmd.RequiredArgs.AppName,
    79  		"OrgName":   cmd.Config.TargetedOrganization().Name,
    80  		"SpaceName": cmd.Config.TargetedSpace().Name,
    81  		"Username":  user.Name,
    82  	})
    83  	cmd.UI.DisplayNewline()
    84  
    85  	appSummaryDisplayer := shared.NewAppSummaryDisplayer(cmd.UI)
    86  	summary, warnings, err := cmd.Actor.GetApplicationSummaryByNameAndSpace(cmd.RequiredArgs.AppName, cmd.Config.TargetedSpace().GUID, false, cmd.RouteActor)
    87  	cmd.UI.DisplayWarnings(warnings)
    88  	if err != nil {
    89  		return err
    90  	}
    91  
    92  	appSummaryDisplayer.AppDisplay(summary, false)
    93  	return nil
    94  }
    95  
    96  func (cmd AppCommand) displayAppGUID() error {
    97  	app, warnings, err := cmd.Actor.GetApplicationByNameAndSpace(cmd.RequiredArgs.AppName, cmd.Config.TargetedSpace().GUID)
    98  	cmd.UI.DisplayWarnings(warnings)
    99  	if err != nil {
   100  		return err
   101  	}
   102  
   103  	cmd.UI.DisplayText(app.GUID)
   104  	return nil
   105  }