func (s *servicesTestSuite) TestStartSnapServices(c *C) { var sysdLog [][]string systemd.SystemctlCmd = func(cmd ...string) ([]byte, error) { sysdLog = append(sysdLog, cmd) return []byte("ActiveState=inactive\n"), nil } info := snaptest.MockSnap(c, packageHello, contentsHello, &snap.SideInfo{Revision: snap.R(12)}) svcFile := filepath.Join(s.tempdir, "/etc/systemd/system/snap.hello-snap.svc1.service") err := wrappers.StartSnapServices(info, nil) c.Assert(err, IsNil) c.Assert(sysdLog, HasLen, 3) c.Check(sysdLog[0], DeepEquals, []string{"daemon-reload"}) c.Check(sysdLog[1], DeepEquals, []string{"--root", dirs.GlobalRootDir, "enable", filepath.Base(svcFile)}) c.Check(sysdLog[2], DeepEquals, []string{"start", filepath.Base(svcFile)}) }
// patch5: // - regenerate generated .service files func patch5(st *state.State) error { log := log{} snapStates, err := snapstate.All(st) if err != nil { return err } for snapName, snapState := range snapStates { if !snapState.Active { continue } info, err := snapState.CurrentInfo() if err != nil { return err } if len(info.Apps) == 0 { logger.Debugf("patch 5: skipping for %q: no apps", snapName) continue } err = wrappers.StopSnapServices(info, log) if err != nil { return err } err = wrappers.AddSnapServices(info, log) if err != nil { return err } err = wrappers.StartSnapServices(info, log) if err != nil { return err } logger.Noticef("patch 5: %q updated", snapName) } return nil }
func (b Backend) StartSnapServices(info *snap.Info, meter progress.Meter) error { return wrappers.StartSnapServices(info, meter) }