func (s *assertMgrSuite) SetUpTest(c *C) { dirs.SetRootDir(c.MkDir()) rootPrivKey, _ := assertstest.GenerateKey(1024) storePrivKey, _ := assertstest.GenerateKey(752) s.storeSigning = assertstest.NewStoreStack("can0nical", rootPrivKey, storePrivKey) s.restore = sysdb.InjectTrusted(s.storeSigning.Trusted) dev1PrivKey, _ := assertstest.GenerateKey(752) s.dev1Acct = assertstest.NewAccount(s.storeSigning, "developer1", nil, "") err := s.storeSigning.Add(s.dev1Acct) c.Assert(err, IsNil) // developer signing dev1AcctKey := assertstest.NewAccountKey(s.storeSigning, s.dev1Acct, nil, dev1PrivKey.PublicKey(), "") err = s.storeSigning.Add(dev1AcctKey) c.Assert(err, IsNil) s.dev1Signing = assertstest.NewSigningDB(s.dev1Acct.AccountID(), dev1PrivKey) s.state = state.New(nil) mgr, err := assertstate.Manager(s.state) c.Assert(err, IsNil) s.mgr = mgr s.state.Lock() snapstate.ReplaceStore(s.state, &fakeStore{ state: s.state, db: s.storeSigning, }) s.state.Unlock() }
// 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, requestRestart: o.requestRestart, } 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) hookMgr, err := hookstate.Manager(s) if err != nil { return nil, err } o.hookMgr = hookMgr o.stateEng.AddManager(o.hookMgr) configMgr, err := configstate.Manager(s, hookMgr) if err != nil { return nil, err } o.configMgr = configMgr deviceMgr, err := devicestate.Manager(s) if err != nil { return nil, err } o.deviceMgr = deviceMgr o.stateEng.AddManager(o.deviceMgr) // setting up the store authContext := auth.NewAuthContext(s, o.deviceMgr) sto := storeNew(nil, authContext) s.Lock() snapstate.ReplaceStore(s, sto) s.Unlock() return o, nil }