github.com/arunkumar7540/cli@v6.45.0+incompatible/actor/v7pushaction/sequence.go (about)

     1  package v7pushaction
     2  
     3  import "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant"
     4  
     5  func ShouldUpdateApplication(plan PushPlan) bool {
     6  	return plan.ApplicationNeedsUpdate
     7  }
     8  
     9  func ShouldUpdateRoutes(plan PushPlan) bool {
    10  	return !(plan.SkipRouteCreation || plan.NoRouteFlag)
    11  }
    12  
    13  func ShouldScaleWebProcess(plan PushPlan) bool {
    14  	return plan.ScaleWebProcessNeedsUpdate
    15  }
    16  
    17  func ShouldUpdateWebProcess(plan PushPlan) bool {
    18  	return plan.UpdateWebProcessNeedsUpdate
    19  }
    20  
    21  func ShouldCreateBitsPackage(plan PushPlan) bool {
    22  	return plan.DropletPath == "" && !plan.DockerImageCredentialsNeedsUpdate
    23  }
    24  
    25  func ShouldCreateDockerPackage(plan PushPlan) bool {
    26  	return plan.DropletPath == "" && plan.DockerImageCredentialsNeedsUpdate
    27  }
    28  
    29  func ShouldCreateDroplet(plan PushPlan) bool {
    30  	return plan.DropletPath != ""
    31  }
    32  
    33  func ShouldStagePackage(plan PushPlan) bool {
    34  	return !plan.NoStart && plan.DropletPath == ""
    35  }
    36  
    37  func ShouldStopApplication(plan PushPlan) bool {
    38  	return plan.NoStart && plan.Application.State == constant.ApplicationStarted
    39  }
    40  
    41  func ShouldSetDroplet(plan PushPlan) bool {
    42  	return !plan.NoStart || plan.DropletPath != ""
    43  }
    44  
    45  func ShouldRestart(plan PushPlan) bool {
    46  	return !plan.NoStart
    47  }
    48  
    49  func (actor Actor) GetUpdateSequence(plan PushPlan) []ChangeApplicationFunc {
    50  	var updateSequence []ChangeApplicationFunc
    51  
    52  	if ShouldUpdateApplication(plan) {
    53  		updateSequence = append(updateSequence, actor.UpdateApplication)
    54  	}
    55  
    56  	if ShouldUpdateRoutes(plan) {
    57  		updateSequence = append(updateSequence, actor.UpdateRoutesForApplication)
    58  	}
    59  
    60  	if ShouldScaleWebProcess(plan) {
    61  		updateSequence = append(updateSequence, actor.ScaleWebProcessForApplication)
    62  	}
    63  
    64  	if ShouldUpdateWebProcess(plan) {
    65  		updateSequence = append(updateSequence, actor.UpdateWebProcessForApplication)
    66  	}
    67  
    68  	return updateSequence
    69  }
    70  
    71  func (actor Actor) GetPrepareApplicationSourceSequence(plan PushPlan) []ChangeApplicationFunc {
    72  	var prepareSourceSequence []ChangeApplicationFunc
    73  	switch {
    74  	case ShouldCreateBitsPackage(plan):
    75  		prepareSourceSequence = append(prepareSourceSequence, actor.CreateBitsPackageForApplication)
    76  	case ShouldCreateDockerPackage(plan):
    77  		prepareSourceSequence = append(prepareSourceSequence, actor.CreateDockerPackageForApplication)
    78  	case ShouldCreateDroplet(plan):
    79  		prepareSourceSequence = append(prepareSourceSequence, actor.CreateDropletForApplication)
    80  	}
    81  	return prepareSourceSequence
    82  }
    83  
    84  func (actor Actor) GetRuntimeSequence(plan PushPlan) []ChangeApplicationFunc {
    85  	var runtimeSequence []ChangeApplicationFunc
    86  
    87  	if ShouldStagePackage(plan) {
    88  		runtimeSequence = append(runtimeSequence, actor.StagePackageForApplication)
    89  	}
    90  
    91  	if ShouldStopApplication(plan) {
    92  		runtimeSequence = append(runtimeSequence, actor.StopApplication)
    93  	}
    94  
    95  	if ShouldSetDroplet(plan) {
    96  		runtimeSequence = append(runtimeSequence, actor.SetDropletForApplication)
    97  	}
    98  
    99  	if ShouldRestart(plan) {
   100  		runtimeSequence = append(runtimeSequence, actor.RestartApplication)
   101  	}
   102  
   103  	return runtimeSequence
   104  }