diff --git a/e b/e index b4751db7c6..a429ebece1 160000 --- a/e +++ b/e @@ -1 +1 @@ -Subproject commit b4751db7c6e6def29ba35907972855ec509a9f5d +Subproject commit a429ebece145f399ce3c088c8c074d98ac55af54 diff --git a/lib/install/fsmspec.go b/lib/install/fsmspec.go index 93634b9238..60ee871424 100644 --- a/lib/install/fsmspec.go +++ b/lib/install/fsmspec.go @@ -29,9 +29,18 @@ import ( "k8s.io/client-go/kubernetes" ) -// FSMSpec returns a function that returns an appropriate phase executor -// based on the provided params -func FSMSpec(config FSMConfig) fsm.FSMSpecFunc { +// FSMSpecFunc defines a function that returns install FSM spec based on the config. +type FSMSpecFunc func(FSMConfig) fsm.FSMSpecFunc + +// FSMSpec is the install FSM spec. +// +// It may be overriden by external implementations to support additional +// install operation phases (e.g. by the enterprise version). +var FSMSpec FSMSpecFunc = DefaultFSMSpec + +// DefaultFSMSpec returns a function that returns an the default install FSM +// spec for the provided install FSM config. +func DefaultFSMSpec(config FSMConfig) fsm.FSMSpecFunc { return func(p fsm.ExecutorParams, remote fsm.Remote) (fsm.PhaseExecutor, error) { switch { case strings.HasPrefix(p.Phase.ID, phases.InitPhase):