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