github.com/arunkumar7540/cli@v6.45.0+incompatible/actor/v7pushaction/prepare_space.go (about) 1 package v7pushaction 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/actor/v7action" 6 log "github.com/sirupsen/logrus" 7 ) 8 9 func (actor Actor) PrepareSpace(pushPlans []PushPlan, manifestParser ManifestParser) (<-chan []PushPlan, <-chan Event, <-chan Warnings, <-chan error) { 10 pushPlansStream := make(chan []PushPlan) 11 eventStream := make(chan Event) 12 warningsStream := make(chan Warnings) 13 errorStream := make(chan error) 14 15 go func() { 16 log.Debug("starting space preparation go routine") 17 defer close(pushPlansStream) 18 defer close(eventStream) 19 defer close(warningsStream) 20 defer close(errorStream) 21 22 var warnings v7action.Warnings 23 var err error 24 var successEvent Event 25 26 if manifestParser.ContainsManifest() { 27 var manifest []byte 28 manifest, err = getManifest(pushPlans, manifestParser) 29 if err != nil { 30 errorStream <- err 31 return 32 } 33 eventStream <- ApplyManifest 34 warnings, err = actor.V7Actor.SetSpaceManifest(pushPlans[0].SpaceGUID, manifest, pushPlans[0].NoRouteFlag) 35 successEvent = ApplyManifestComplete 36 } else { 37 _, warnings, err = actor.V7Actor.CreateApplicationInSpace(pushPlans[0].Application, pushPlans[0].SpaceGUID) 38 if _, ok := err.(actionerror.ApplicationAlreadyExistsError); ok { 39 eventStream <- SkippingApplicationCreation 40 successEvent = ApplicationAlreadyExists 41 err = nil 42 } else { 43 eventStream <- CreatingApplication 44 successEvent = CreatedApplication 45 } 46 } 47 48 warningsStream <- Warnings(warnings) 49 if err != nil { 50 errorStream <- err 51 return 52 } 53 pushPlansStream <- pushPlans 54 eventStream <- successEvent 55 }() 56 57 return pushPlansStream, eventStream, warningsStream, errorStream 58 } 59 60 func getManifest(plans []PushPlan, parser ManifestParser) ([]byte, error) { 61 if len(plans) == 1 { 62 return parser.RawAppManifest(plans[0].Application.Name) 63 } 64 return parser.FullRawManifest(), nil 65 }