github.com/loggregator/cli@v6.33.1-0.20180224010324-82334f081791+incompatible/actor/v3action/build.go (about) 1 package v3action 2 3 import ( 4 "errors" 5 "time" 6 7 "code.cloudfoundry.org/cli/actor/actionerror" 8 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3" 9 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant" 10 ) 11 12 func (actor Actor) StagePackage(packageGUID string, appName string) (<-chan Droplet, <-chan Warnings, <-chan error) { 13 dropletStream := make(chan Droplet) 14 warningsStream := make(chan Warnings) 15 errorStream := make(chan error) 16 17 go func() { 18 defer close(dropletStream) 19 defer close(warningsStream) 20 defer close(errorStream) 21 22 build := ccv3.Build{PackageGUID: packageGUID} 23 build, allWarnings, err := actor.CloudControllerClient.CreateBuild(build) 24 warningsStream <- Warnings(allWarnings) 25 26 if err != nil { 27 errorStream <- err 28 return 29 } 30 31 timeout := time.Now().Add(actor.Config.StagingTimeout()) 32 33 for time.Now().Before(timeout) { 34 var warnings ccv3.Warnings 35 build, warnings, err = actor.CloudControllerClient.GetBuild(build.GUID) 36 warningsStream <- Warnings(warnings) 37 if err != nil { 38 errorStream <- err 39 return 40 } 41 42 switch build.State { 43 case constant.BuildFailed: 44 errorStream <- errors.New(build.Error) 45 return 46 case constant.BuildStaging: 47 time.Sleep(actor.Config.PollingInterval()) 48 default: 49 50 //TODO: uncommend after #150569020 51 // ccv3Droplet, warnings, err := actor.CloudControllerClient.GetDroplet(build.DropletGUID) 52 // warningsStream <- Warnings(warnings) 53 // if err != nil { 54 // errorStream <- err 55 // return 56 // } 57 58 ccv3Droplet := ccv3.Droplet{ 59 GUID: build.DropletGUID, 60 State: constant.DropletState(build.State), 61 CreatedAt: build.CreatedAt, 62 } 63 64 dropletStream <- actor.convertCCToActorDroplet(ccv3Droplet) 65 return 66 } 67 } 68 69 errorStream <- actionerror.StagingTimeoutError{AppName: appName, Timeout: actor.Config.StagingTimeout()} 70 }() 71 72 return dropletStream, warningsStream, errorStream 73 }