// New creates a new Overlord with all its state managers. func New() (*Overlord, error) { o := &Overlord{ loopTomb: new(tomb.Tomb), } backend := &overlordStateBackend{ path: dirs.SnapStateFile, ensureBefore: o.ensureBefore, } s, err := loadState(backend) if err != nil { return nil, err } o.stateEng = NewStateEngine(s) snapMgr, err := snapstate.Manager(s) if err != nil { return nil, err } o.snapMgr = snapMgr o.stateEng.AddManager(o.snapMgr) assertMgr, err := assertstate.Manager(s) if err != nil { return nil, err } o.assertMgr = assertMgr o.stateEng.AddManager(o.assertMgr) ifaceMgr, err := ifacestate.Manager(s, nil) if err != nil { return nil, err } o.ifaceMgr = ifaceMgr o.stateEng.AddManager(o.ifaceMgr) return o, nil }
func (s *snapmgrTestSuite) SetUpTest(c *C) { s.fakeBackend = &fakeSnappyBackend{ fakeCurrentProgress: 75, fakeTotalProgress: 100, } s.state = state.New(nil) var err error s.snapmgr, err = snapstate.Manager(s.state) c.Assert(err, IsNil) s.snapmgr.AddForeignTaskHandlers() // XXX: have just one, reset! snapstate.SetSnapManagerBackend(s.snapmgr, s.fakeBackend) snapstate.SetSnapstateBackend(s.fakeBackend) s.reset = snapstate.MockReadInfo(s.fakeBackend.ReadInfo) s.state.Lock() s.user, err = auth.NewUser(s.state, "username", "macaroon", []string{"discharge"}) c.Assert(err, IsNil) s.state.Unlock() }