github.com/liamawhite/cli-with-i18n@v6.32.1-0.20171122084555-dede0a5c3448+incompatible/actor/v2action/manifest.go (about)

     1  package v2action
     2  
     3  import (
     4  	"github.com/liamawhite/cli-with-i18n/api/cloudcontroller/ccv2"
     5  	"github.com/liamawhite/cli-with-i18n/util/manifest"
     6  )
     7  
     8  func (actor Actor) CreateApplicationManifestByNameAndSpace(appName string, spaceGUID string, pathToFile string) (Warnings, error) {
     9  
    10  	var allWarnings Warnings
    11  	applicationSummary, appSummaryWarnings, err := actor.GetApplicationSummaryByNameAndSpace(appName, spaceGUID)
    12  	allWarnings = append(allWarnings, appSummaryWarnings...)
    13  	if err != nil {
    14  		return allWarnings, err
    15  	}
    16  
    17  	serviceInstances, serviceWarnings, err := actor.GetServiceInstancesByApplication(applicationSummary.GUID)
    18  	allWarnings = append(allWarnings, serviceWarnings...)
    19  	if err != nil {
    20  		return allWarnings, err
    21  	}
    22  
    23  	var routes []string
    24  	for _, route := range applicationSummary.Routes {
    25  		routes = append(routes, route.String())
    26  	}
    27  
    28  	var services []string
    29  	for _, serviceInstace := range serviceInstances {
    30  		services = append(services, serviceInstace.Name)
    31  	}
    32  
    33  	manifestApp := manifest.Application{
    34  		Buildpack:            applicationSummary.Buildpack,
    35  		Command:              applicationSummary.Command,
    36  		DockerImage:          applicationSummary.DockerImage,
    37  		DockerUsername:       applicationSummary.DockerCredentials.Username,
    38  		EnvironmentVariables: applicationSummary.EnvironmentVariables,
    39  		HealthCheckTimeout:   applicationSummary.HealthCheckTimeout,
    40  		Instances:            applicationSummary.Instances,
    41  		Name:                 applicationSummary.Name,
    42  		Routes:               routes,
    43  		Services:             services,
    44  		StackName:            applicationSummary.Stack.Name,
    45  	}
    46  	manifestApp.DiskQuota.ParseUint64Value(&applicationSummary.DiskQuota)
    47  	manifestApp.Memory.ParseUint64Value(&applicationSummary.Memory)
    48  	if len(routes) < 1 {
    49  		manifestApp.NoRoute = true
    50  	}
    51  
    52  	if applicationSummary.HealthCheckType != ccv2.ApplicationHealthCheckPort {
    53  		manifestApp.HealthCheckType = string(applicationSummary.HealthCheckType)
    54  
    55  		if applicationSummary.HealthCheckType == ccv2.ApplicationHealthCheckHTTP &&
    56  			applicationSummary.HealthCheckHTTPEndpoint != "/" {
    57  			manifestApp.HealthCheckHTTPEndpoint = applicationSummary.HealthCheckHTTPEndpoint
    58  		}
    59  	}
    60  
    61  	err = manifest.WriteApplicationManifest(manifestApp, pathToFile)
    62  	return allWarnings, err
    63  }