in cli_tools/common/utils/daisyutils/daisy_worker.go [47:86]
func NewDaisyWorker(wf WorkflowProvider, env EnvironmentSettings,
logger logging.Logger, hooks ...interface{}) DaisyWorker {
hooks = append(createResourceLabelerIfMissing(env, hooks),
&ApplyEnvToWorkflow{env},
&ConfigureDaisyLogging{env},
&FallbackToPDStandard{logger: logger},
)
if env.NoExternalIP {
hooks = append(hooks, &RemoveExternalIPHook{})
}
if env.NestedVirtualizationEnabled {
hooks = append(hooks, &EnableNestedVirtualizationHook{})
}
if len(env.WorkerMachineSeries) >= 1 {
updateMachineHook := &UpdateMachineTypesHook{logger: logger}
updateMachineHook.primaryMachineSeries = env.WorkerMachineSeries[0]
if len(env.WorkerMachineSeries) >= 2 {
updateMachineHook.secondaryMachineSeries = env.WorkerMachineSeries[1]
}
hooks = append(hooks, updateMachineHook)
} else {
logger.Debug("UpdateMachineTypesHook is not activated because machine series are not specified.")
}
for _, hook := range hooks {
switch hook.(type) {
case WorkflowPreHook:
continue
case WorkflowPostHook:
continue
default:
panic(fmt.Sprintf("%T must implement WorkflowPreHook and/or WorkflowPostHook", hook))
}
}
return &defaultDaisyWorker{workflowProvider: wf, cancel: make(chan string, 1), env: env, logger: logger, hooks: hooks}
}