github.com/cloudfoundry-attic/cli-with-i18n@v6.32.1-0.20171002233121-7401370d3b85+incompatible/actor/v2action/application_summary.go (about)

     1  package v2action
     2  
     3  import "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2"
     4  
     5  type ApplicationSummary struct {
     6  	Application
     7  	Stack            Stack
     8  	IsolationSegment string
     9  	RunningInstances []ApplicationInstanceWithStats
    10  	Routes           []Route
    11  }
    12  
    13  func (app ApplicationSummary) StartingOrRunningInstanceCount() int {
    14  	count := 0
    15  	for _, instance := range app.RunningInstances {
    16  		if instance.State == ApplicationInstanceState(ccv2.ApplicationInstanceStarting) ||
    17  			instance.State == ApplicationInstanceState(ccv2.ApplicationInstanceRunning) {
    18  			count += 1
    19  		}
    20  	}
    21  	return count
    22  }
    23  
    24  func (actor Actor) GetApplicationSummaryByNameAndSpace(name string, spaceGUID string) (ApplicationSummary, Warnings, error) {
    25  	var allWarnings Warnings
    26  
    27  	app, warnings, err := actor.GetApplicationByNameAndSpace(name, spaceGUID)
    28  	allWarnings = append(allWarnings, warnings...)
    29  	if err != nil {
    30  		return ApplicationSummary{}, allWarnings, err
    31  	}
    32  
    33  	applicationSummary := ApplicationSummary{Application: app}
    34  
    35  	// cloud controller calls the instance reporter only when the desired
    36  	// application state is STARTED
    37  	if app.State == ccv2.ApplicationStarted {
    38  		var instances []ApplicationInstanceWithStats
    39  		instances, warnings, err = actor.GetApplicationInstancesWithStatsByApplication(app.GUID)
    40  		allWarnings = append(allWarnings, warnings...)
    41  
    42  		switch err.(type) {
    43  		case nil:
    44  			applicationSummary.RunningInstances = instances
    45  
    46  			if len(instances) > 0 {
    47  				applicationSummary.IsolationSegment = instances[0].IsolationSegment
    48  			}
    49  		case ApplicationInstancesNotFoundError:
    50  			// don't set instances in summary
    51  		default:
    52  			return ApplicationSummary{}, allWarnings, err
    53  		}
    54  	}
    55  
    56  	routes, warnings, err := actor.GetApplicationRoutes(app.GUID)
    57  	allWarnings = append(allWarnings, warnings...)
    58  	if err != nil {
    59  		return ApplicationSummary{}, allWarnings, err
    60  	}
    61  	applicationSummary.Routes = routes
    62  
    63  	stack, warnings, err := actor.GetStack(app.StackGUID)
    64  	allWarnings = append(allWarnings, warnings...)
    65  	if err != nil {
    66  		return ApplicationSummary{}, allWarnings, err
    67  	}
    68  	applicationSummary.Stack = stack
    69  
    70  	return applicationSummary, allWarnings, nil
    71  }