github.com/cloudfoundry-community/cloudfoundry-cli@v6.44.1-0.20240130060226-cda5ed8e89a5+incompatible/actor/v7pushaction/actor.go (about) 1 // Package v7pushaction contains the business logic for orchestrating a V2 app 2 // push. 3 package v7pushaction 4 5 import ( 6 "regexp" 7 ) 8 9 // Warnings is a list of warnings returned back from the cloud controller 10 type Warnings []string 11 12 // Actor handles all business logic for Cloud Controller v2 operations. 13 type Actor struct { 14 SharedActor SharedActor 15 V2Actor V2Actor 16 V7Actor V7Actor 17 18 PushPlanFuncs []UpdatePushPlanFunc 19 20 ChangeApplicationFuncs []ChangeApplicationFunc 21 StartFuncs []ChangeApplicationFunc 22 NoStartFuncs []ChangeApplicationFunc 23 24 startWithProtocol *regexp.Regexp 25 urlValidator *regexp.Regexp 26 } 27 28 const ProtocolRegexp = "^https?://|^tcp://" 29 const URLRegexp = "^(?:https?://|tcp://)?(?:(?:[\\w-]+\\.)|(?:[*]\\.))+\\w+(?:\\:\\d+)?(?:/.*)*(?:\\.\\w+)?$" 30 31 // NewActor returns a new actor. 32 func NewActor(v2Actor V2Actor, v3Actor V7Actor, sharedActor SharedActor) *Actor { 33 actor := &Actor{ 34 SharedActor: sharedActor, 35 V2Actor: v2Actor, 36 V7Actor: v3Actor, 37 38 startWithProtocol: regexp.MustCompile(ProtocolRegexp), 39 urlValidator: regexp.MustCompile(URLRegexp), 40 } 41 42 actor.PushPlanFuncs = []UpdatePushPlanFunc{ 43 SetupApplicationForPushPlan, 44 SetupDockerImageCredentialsForPushPlan, 45 SetupBitsPathForPushPlan, 46 actor.SetupAllResourcesForPushPlan, 47 SetupNoStartForPushPlan, 48 SetupSkipRouteCreationForPushPlan, 49 SetupScaleWebProcessForPushPlan, 50 SetupUpdateWebProcessForPushPlan, 51 } 52 53 actor.ChangeApplicationFuncs = []ChangeApplicationFunc{ 54 actor.UpdateApplication, 55 actor.UpdateRoutesForApplication, 56 actor.ScaleWebProcessForApplication, 57 actor.UpdateWebProcessForApplication, 58 actor.CreateBitsPackageForApplication, 59 actor.CreateDockerPackageForApplication, 60 } 61 62 actor.StartFuncs = []ChangeApplicationFunc{ 63 actor.StagePackageForApplication, 64 actor.SetDropletForApplication, 65 } 66 67 actor.NoStartFuncs = []ChangeApplicationFunc{ 68 actor.StopApplication, 69 } 70 71 return actor 72 }