github.com/cloudfoundry-community/cloudfoundry-cli@v6.44.1-0.20240130060226-cda5ed8e89a5+incompatible/actor/v7pushaction/actualize.go (about)

     1  package v7pushaction
     2  
     3  import (
     4  	log "github.com/sirupsen/logrus"
     5  )
     6  
     7  func (actor Actor) Actualize(plan PushPlan, progressBar ProgressBar) (
     8  	<-chan PushPlan, <-chan Event, <-chan Warnings, <-chan error,
     9  ) {
    10  	log.Debugln("Starting to Actualize Push plan:", plan)
    11  	planStream := make(chan PushPlan)
    12  	eventStream := make(chan Event)
    13  	warningsStream := make(chan Warnings)
    14  	errorStream := make(chan error)
    15  
    16  	go func() {
    17  		log.Debug("starting actualize go routine")
    18  		defer close(planStream)
    19  		defer close(eventStream)
    20  		defer close(warningsStream)
    21  		defer close(errorStream)
    22  
    23  		changeFuncs := actor.ChangeApplicationFuncs
    24  
    25  		if plan.NoStart {
    26  			changeFuncs = append(changeFuncs, actor.NoStartFuncs...)
    27  		} else {
    28  			changeFuncs = append(changeFuncs, actor.StartFuncs...)
    29  		}
    30  
    31  		var err error
    32  		var warnings Warnings
    33  		for _, changeAppFunc := range changeFuncs {
    34  			plan, warnings, err = changeAppFunc(plan, eventStream, progressBar)
    35  			warningsStream <- warnings
    36  			if err != nil {
    37  				errorStream <- err
    38  				return
    39  			}
    40  			planStream <- plan
    41  		}
    42  
    43  		log.Debug("completed apply")
    44  		eventStream <- Complete
    45  	}()
    46  	return planStream, eventStream, warningsStream, errorStream
    47  }