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

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