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