github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/actor/v7pushaction/create_push_plans.go (about)

     1  package v7pushaction
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/v7action"
     5  	"code.cloudfoundry.org/cli/util/manifestparser"
     6  )
     7  
     8  // CreatePushPlans returns a set of PushPlan objects based off the inputs
     9  // provided. It's assumed that all flag and argument and manifest combinations
    10  // have been validated prior to calling this function.
    11  func (actor Actor) CreatePushPlans(
    12  	spaceGUID string,
    13  	orgGUID string,
    14  	manifest manifestparser.Manifest,
    15  	overrides FlagOverrides,
    16  ) ([]PushPlan, v7action.Warnings, error) {
    17  	var pushPlans []PushPlan
    18  
    19  	apps, warnings, err := actor.V7Actor.GetApplicationsByNamesAndSpace(manifest.AppNames(), spaceGUID)
    20  	if err != nil {
    21  		return nil, warnings, err
    22  	}
    23  	nameToApp := actor.generateAppNameToApplicationMapping(apps)
    24  
    25  	for _, manifestApplication := range manifest.Applications {
    26  		plan := PushPlan{
    27  			OrgGUID:     orgGUID,
    28  			SpaceGUID:   spaceGUID,
    29  			Application: nameToApp[manifestApplication.Name],
    30  			BitsPath:    manifestApplication.Path,
    31  		}
    32  
    33  		if manifestApplication.Docker != nil {
    34  			plan.DockerImageCredentials = v7action.DockerImageCredentials{
    35  				Path:     manifestApplication.Docker.Image,
    36  				Username: manifestApplication.Docker.Username,
    37  				Password: overrides.DockerPassword,
    38  			}
    39  		}
    40  
    41  		// List of PreparePushPlanSequence is defined in NewActor
    42  		for _, updatePlan := range actor.PreparePushPlanSequence {
    43  			var err error
    44  			plan, err = updatePlan(plan, overrides)
    45  			if err != nil {
    46  				return nil, warnings, err
    47  			}
    48  		}
    49  
    50  		pushPlans = append(pushPlans, plan)
    51  	}
    52  
    53  	return pushPlans, warnings, nil
    54  }
    55  
    56  func (actor Actor) generateAppNameToApplicationMapping(applications []v7action.Application) map[string]v7action.Application {
    57  	nameToApp := make(map[string]v7action.Application, len(applications))
    58  	for _, app := range applications {
    59  		nameToApp[app.Name] = app
    60  	}
    61  	return nameToApp
    62  }