github.com/randomtask1155/cli@v6.41.1-0.20181227003417-a98eed78cbde+incompatible/actor/v7action/application_summary.go (about)

     1  package v7action
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/actionerror"
     5  	"code.cloudfoundry.org/cli/actor/v2action"
     6  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccerror"
     7  )
     8  
     9  //go:generate counterfeiter . RouteActor
    10  
    11  type RouteActor interface {
    12  	GetApplicationRoutes(appGUID string) (v2action.Routes, v2action.Warnings, error)
    13  }
    14  
    15  // ApplicationSummary represents an application with its processes and droplet.
    16  type ApplicationSummary struct {
    17  	Application
    18  	CurrentDroplet   Droplet
    19  	ProcessSummaries ProcessSummaries
    20  	Routes           v2action.Routes
    21  }
    22  
    23  func (a ApplicationSummary) GetIsolationSegmentName() (string, bool) {
    24  	if a.hasIsolationSegment() {
    25  		return a.ProcessSummaries[0].InstanceDetails[0].IsolationSegment, true
    26  	}
    27  	return "", false
    28  }
    29  
    30  func (a ApplicationSummary) hasIsolationSegment() bool {
    31  	return len(a.ProcessSummaries) > 0 &&
    32  		len(a.ProcessSummaries[0].InstanceDetails) > 0 &&
    33  		len(a.ProcessSummaries[0].InstanceDetails[0].IsolationSegment) > 0
    34  }
    35  
    36  // GetApplicationSummaryByNameAndSpace returns an application with process and
    37  // instance stats.
    38  func (actor Actor) GetApplicationSummaryByNameAndSpace(appName string, spaceGUID string, withObfuscatedValues bool, routeActor RouteActor) (ApplicationSummary, Warnings, error) {
    39  	app, allWarnings, err := actor.GetApplicationByNameAndSpace(appName, spaceGUID)
    40  	if err != nil {
    41  		return ApplicationSummary{}, allWarnings, err
    42  	}
    43  
    44  	processSummaries, processWarnings, err := actor.getProcessSummariesForApp(app.GUID, withObfuscatedValues)
    45  	allWarnings = append(allWarnings, processWarnings...)
    46  	if err != nil {
    47  		return ApplicationSummary{}, allWarnings, err
    48  	}
    49  
    50  	droplet, warnings, err := actor.GetCurrentDropletByApplication(app.GUID)
    51  	allWarnings = append(allWarnings, Warnings(warnings)...)
    52  	if err != nil {
    53  		if _, ok := err.(actionerror.DropletNotFoundError); !ok {
    54  			return ApplicationSummary{}, allWarnings, err
    55  		}
    56  	}
    57  
    58  	var appRoutes v2action.Routes
    59  	if routeActor != nil {
    60  		routes, warnings, err := routeActor.GetApplicationRoutes(app.GUID)
    61  		allWarnings = append(allWarnings, Warnings(warnings)...)
    62  		if err != nil {
    63  			if _, ok := err.(ccerror.ResourceNotFoundError); !ok {
    64  				return ApplicationSummary{}, allWarnings, err
    65  			}
    66  		}
    67  		appRoutes = routes
    68  	}
    69  
    70  	summary := ApplicationSummary{
    71  		Application:      app,
    72  		ProcessSummaries: processSummaries,
    73  		CurrentDroplet:   droplet,
    74  		Routes:           appRoutes,
    75  	}
    76  	return summary, allWarnings, nil
    77  }