github.com/swisscom/cloudfoundry-cli@v7.1.0+incompatible/actor/v2action/manifest.go (about)

     1  package v2action
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv2/constant"
     5  	"code.cloudfoundry.org/cli/util/manifest"
     6  )
     7  
     8  func (actor Actor) CreateApplicationManifestByNameAndSpace(appName string, spaceGUID string) (manifest.Application, 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 manifest.Application{}, allWarnings, err
    15  	}
    16  
    17  	serviceInstances, serviceWarnings, err := actor.GetServiceInstancesByApplication(applicationSummary.GUID)
    18  	allWarnings = append(allWarnings, serviceWarnings...)
    19  	if err != nil {
    20  		return manifest.Application{}, 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  		Command:              applicationSummary.Command,
    35  		DiskQuota:            applicationSummary.DiskQuota,
    36  		DockerImage:          applicationSummary.DockerImage,
    37  		DockerUsername:       applicationSummary.DockerCredentials.Username,
    38  		EnvironmentVariables: applicationSummary.EnvironmentVariables,
    39  		HealthCheckTimeout:   applicationSummary.HealthCheckTimeout,
    40  		Instances:            applicationSummary.Instances,
    41  		Memory:               applicationSummary.Memory,
    42  		Name:                 applicationSummary.Name,
    43  		Routes:               routes,
    44  		Services:             services,
    45  		StackName:            applicationSummary.Stack.Name,
    46  	}
    47  
    48  	if applicationSummary.Buildpack.IsSet {
    49  		manifestApp.Buildpacks = append(manifestApp.Buildpacks, applicationSummary.Buildpack.Value)
    50  	}
    51  
    52  	if len(routes) < 1 {
    53  		manifestApp.NoRoute = true
    54  	}
    55  
    56  	if applicationSummary.HealthCheckType != constant.ApplicationHealthCheckPort {
    57  		manifestApp.HealthCheckType = string(applicationSummary.HealthCheckType)
    58  
    59  		if applicationSummary.HealthCheckType == constant.ApplicationHealthCheckHTTP &&
    60  			applicationSummary.HealthCheckHTTPEndpoint != "/" {
    61  			manifestApp.HealthCheckHTTPEndpoint = applicationSummary.HealthCheckHTTPEndpoint
    62  		}
    63  	}
    64  
    65  	return manifestApp, allWarnings, err
    66  }
    67  
    68  func (Actor) WriteApplicationManifest(manifestApp manifest.Application, manifestFilePath string) error {
    69  	return manifest.WriteApplicationManifest(manifestApp, manifestFilePath)
    70  }