github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/actor/v3action/application_summary.go (about)

     1  package v3action
     2  
     3  // ApplicationSummary represents an application with its processes and droplet.
     4  type ApplicationSummary struct {
     5  	Application
     6  	Processes      []Process
     7  	CurrentDroplet Droplet
     8  }
     9  
    10  // GetApplicationSummaryByNameAndSpace returns an application with process and
    11  // instance stats.
    12  func (actor Actor) GetApplicationSummaryByNameAndSpace(appName string,
    13  	spaceGUID string) (ApplicationSummary, Warnings, error) {
    14  	app, allWarnings, err := actor.GetApplicationByNameAndSpace(appName, spaceGUID)
    15  	if err != nil {
    16  		return ApplicationSummary{}, allWarnings, err
    17  	}
    18  
    19  	ccv3Droplet, warnings, err := actor.CloudControllerClient.GetApplicationCurrentDroplet(app.GUID)
    20  	allWarnings = append(allWarnings, Warnings(warnings)...)
    21  	if err != nil {
    22  		return ApplicationSummary{}, allWarnings, err
    23  	}
    24  	droplet := Droplet{
    25  		Stack: ccv3Droplet.Stack,
    26  	}
    27  	for _, ccv3Buildpack := range ccv3Droplet.Buildpacks {
    28  		droplet.Buildpacks = append(droplet.Buildpacks, Buildpack(ccv3Buildpack))
    29  	}
    30  
    31  	ccv3Processes, warnings, err := actor.CloudControllerClient.GetApplicationProcesses(app.GUID)
    32  	allWarnings = append(allWarnings, Warnings(warnings)...)
    33  	if err != nil {
    34  		return ApplicationSummary{}, allWarnings, err
    35  	}
    36  
    37  	var processes []Process
    38  	for _, ccv3Process := range ccv3Processes {
    39  		processGUID := ccv3Process.GUID
    40  		instances, warnings, err := actor.CloudControllerClient.GetProcessInstances(processGUID)
    41  		allWarnings = append(allWarnings, Warnings(warnings)...)
    42  		if err != nil {
    43  			return ApplicationSummary{}, allWarnings, err
    44  		}
    45  
    46  		process := Process{
    47  			Type:       ccv3Process.Type,
    48  			Instances:  []Instance{},
    49  			MemoryInMB: ccv3Process.MemoryInMB,
    50  		}
    51  		for _, instance := range instances {
    52  			process.Instances = append(process.Instances, Instance(instance))
    53  		}
    54  
    55  		processes = append(processes, process)
    56  	}
    57  
    58  	summary := ApplicationSummary{
    59  		Application:    app,
    60  		Processes:      processes,
    61  		CurrentDroplet: droplet,
    62  	}
    63  	return summary, allWarnings, nil
    64  }