// startModelWorkers starts the set of workers that run for every model // in each controller. func (a *MachineAgent) startModelWorkers(uuid string) (worker.Worker, error) { modelAgent, err := model.WrapAgent(a, uuid) if err != nil { return nil, errors.Trace(err) } engine, err := dependency.NewEngine(dependency.EngineConfig{ IsFatal: model.IsFatal, WorstError: model.WorstError, Filter: model.IgnoreErrRemoved, ErrorDelay: 3 * time.Second, BounceDelay: 10 * time.Millisecond, }) if err != nil { return nil, errors.Trace(err) } manifolds := modelManifolds(model.ManifoldsConfig{ Agent: modelAgent, AgentConfigChanged: a.configChangedVal, Clock: clock.WallClock, RunFlagDuration: time.Minute, CharmRevisionUpdateInterval: 24 * time.Hour, EntityStatusHistoryCount: 100, EntityStatusHistoryInterval: 5 * time.Minute, SpacesImportedGate: a.discoverSpacesComplete, }) if err := dependency.Install(engine, manifolds); err != nil { if err := worker.Stop(engine); err != nil { logger.Errorf("while stopping engine with bad manifolds: %v", err) } return nil, errors.Trace(err) } return engine, nil }
func (s *WrapAgentSuite) TestWraps(c *gc.C) { agent, err := model.WrapAgent(&mockAgent{}, coretesting.ModelTag.Id()) c.Assert(err, jc.ErrorIsNil) config := agent.CurrentConfig() c.Check(config.Model(), gc.Equals, coretesting.ModelTag) c.Check(config.OldPassword(), gc.Equals, "") apiInfo, ok := config.APIInfo() c.Assert(ok, jc.IsTrue) c.Check(apiInfo, gc.DeepEquals, &api.Info{ Addrs: []string{"here", "there"}, CACert: "trust-me", ModelTag: coretesting.ModelTag, Tag: names.NewMachineTag("123"), Password: "******", Nonce: "11111", }) }
// startModelWorkers starts the set of workers that run for every model // in each controller. func (a *MachineAgent) startModelWorkers(controllerUUID, modelUUID string) (worker.Worker, error) { modelAgent, err := model.WrapAgent(a, controllerUUID, modelUUID) if err != nil { return nil, errors.Trace(err) } engine, err := dependency.NewEngine(dependency.EngineConfig{ IsFatal: model.IsFatal, WorstError: model.WorstError, Filter: model.IgnoreErrRemoved, ErrorDelay: 3 * time.Second, BounceDelay: 10 * time.Millisecond, }) if err != nil { return nil, errors.Trace(err) } manifolds := modelManifolds(model.ManifoldsConfig{ Agent: modelAgent, AgentConfigChanged: a.configChangedVal, Clock: clock.WallClock, RunFlagDuration: time.Minute, CharmRevisionUpdateInterval: 24 * time.Hour, InstPollerAggregationDelay: 3 * time.Second, // TODO(perrito666) the status history pruning numbers need // to be adjusting, after collecting user data from large install // bases, to numbers allowing a rich and useful back history. StatusHistoryPrunerMaxHistoryTime: 336 * time.Hour, // 2 weeks StatusHistoryPrunerMaxHistoryMB: 5120, // 5G StatusHistoryPrunerInterval: 5 * time.Minute, SpacesImportedGate: a.discoverSpacesComplete, NewEnvironFunc: newEnvirons, NewMigrationMaster: migrationmaster.NewWorker, }) if err := dependency.Install(engine, manifolds); err != nil { if err := worker.Stop(engine); err != nil { logger.Errorf("while stopping engine with bad manifolds: %v", err) } return nil, errors.Trace(err) } return engine, nil }
func (s *WrapAgentSuite) TestRequiresUUID(c *gc.C) { agent, err := model.WrapAgent(&mockAgent{}, "lol-nope-no-hope") c.Check(err, gc.ErrorMatches, `model uuid "lol-nope-no-hope" not valid`) c.Check(err, jc.Satisfies, errors.IsNotValid) c.Check(agent, gc.IsNil) }
func (s *WrapAgentSuite) TestRequiresControllerUUID(c *gc.C) { agent, err := model.WrapAgent(&mockAgent{}, "lol-nope-no-hope", coretesting.ModelTag.Id()) c.Check(err, gc.ErrorMatches, `controller uuid "lol-nope-no-hope" not valid`) c.Check(err, jc.Satisfies, errors.IsNotValid) c.Check(agent, gc.IsNil) }