func (s *ProvisionerSuite) newProvisionerTask( c *gc.C, harvestingMethod config.HarvestMode, broker environs.InstanceBroker, machineGetter provisioner.MachineGetter, toolsFinder provisioner.ToolsFinder, ) provisioner.ProvisionerTask { machineWatcher, err := s.provisioner.WatchModelMachines() c.Assert(err, jc.ErrorIsNil) retryWatcher, err := s.provisioner.WatchMachineErrorRetry() c.Assert(err, jc.ErrorIsNil) auth, err := authentication.NewAPIAuthenticator(s.provisioner) c.Assert(err, jc.ErrorIsNil) retryStrategy := provisioner.NewRetryStrategy(0*time.Second, 0) w, err := provisioner.NewProvisionerTask( names.NewMachineTag("0"), harvestingMethod, machineGetter, toolsFinder, machineWatcher, retryWatcher, broker, auth, imagemetadata.ReleasedStream, true, retryStrategy, ) c.Assert(err, jc.ErrorIsNil) return w }
// getStartTask creates a new worker for the provisioner, func (p *provisioner) getStartTask(harvestMode config.HarvestMode) (ProvisionerTask, error) { auth, err := authentication.NewAPIAuthenticator(p.st) if err != nil { return nil, err } // Start responding to changes in machines, and to any further updates // to the environment config. machineWatcher, err := p.getMachineWatcher() if err != nil { return nil, err } retryWatcher, err := p.getRetryWatcher() if err != nil && !errors.IsNotImplemented(err) { return nil, err } tag := p.agentConfig.Tag() machineTag, ok := tag.(names.MachineTag) if !ok { errors.Errorf("expected names.MachineTag, got %T", tag) } modelCfg, err := p.st.ModelConfig() if err != nil { return nil, errors.Annotate(err, "could not retrieve the model config.") } controllerCfg, err := p.st.ControllerConfig() if err != nil { return nil, errors.Annotate(err, "could not retrieve the controller config.") } task, err := NewProvisionerTask( controllerCfg.ControllerUUID(), machineTag, harvestMode, p.st, p.toolsFinder, machineWatcher, retryWatcher, p.broker, auth, modelCfg.ImageStream(), RetryStrategy{retryDelay: retryStrategyDelay, retryCount: retryStrategyCount}, ) if err != nil { return nil, errors.Trace(err) } return task, nil }