github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/actor/pushaction/resource.go (about) 1 package pushaction 2 3 import ( 4 "os" 5 6 "code.cloudfoundry.org/cli/actor/v2action" 7 log "github.com/sirupsen/logrus" 8 ) 9 10 func (actor Actor) CreateArchive(config ApplicationConfig) (string, error) { 11 log.Info("creating archive") 12 13 var archivePath string 14 var err error 15 16 if config.Archive { 17 archivePath, err = actor.V2Actor.ZipArchiveResources(config.Path, config.AllResources) 18 } else { 19 archivePath, err = actor.V2Actor.ZipDirectoryResources(config.Path, config.AllResources) 20 } 21 if err != nil { 22 log.WithField("path", config.Path).Errorln("archiving resources:", err) 23 return "", err 24 } 25 log.WithField("archivePath", archivePath).Debug("archive created") 26 return archivePath, nil 27 } 28 29 func (actor Actor) UploadPackage(config ApplicationConfig, archivePath string, progressbar ProgressBar, eventStream chan<- Event) (Warnings, error) { 30 log.Info("uploading archive") 31 archive, err := os.Open(archivePath) 32 if err != nil { 33 log.WithField("archivePath", archivePath).Errorln("opening temp archive:", err) 34 return nil, err 35 } 36 defer archive.Close() 37 38 archiveInfo, err := archive.Stat() 39 if err != nil { 40 log.WithField("archivePath", archivePath).Errorln("stat temp archive:", err) 41 return nil, err 42 } 43 44 log.WithFields(log.Fields{ 45 "appGUID": config.DesiredApplication.GUID, 46 "archiveSize": archiveInfo.Size(), 47 }).Debug("uploading app bits") 48 49 eventStream <- UploadingApplication 50 reader := progressbar.NewProgressBarWrapper(archive, archiveInfo.Size()) 51 52 var allWarnings Warnings 53 job, warnings, err := actor.V2Actor.UploadApplicationPackage(config.DesiredApplication.GUID, []v2action.Resource{}, reader, archiveInfo.Size()) 54 allWarnings = append(allWarnings, Warnings(warnings)...) 55 56 if err != nil { 57 log.WithField("archivePath", archivePath).Errorln("streaming archive:", err) 58 return allWarnings, err 59 } 60 eventStream <- UploadComplete 61 warnings, err = actor.V2Actor.PollJob(job) 62 allWarnings = append(allWarnings, Warnings(warnings)...) 63 64 return allWarnings, err 65 }