func NewDaisyWorker()

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}
}