func (m *SnapManager) cleanupCopySnapData(t *state.Task, _ *tomb.Tomb) error { st := t.State() st.Lock() defer st.Unlock() if t.Status() != state.DoneStatus { // it failed return nil } _, snapst, err := snapSetupAndState(t) if err != nil { return err } info, err := snapst.CurrentInfo() if err != nil { return err } m.backend.ClearTrashedData(info) return nil }
func (p4 patch4T) addCleanup(task *state.Task) error { // NOTE we could check for the status of the change itself, but // copy-snap-data is the one creating the trash, so if it's run there's // no sense in fiddling with the change. if task.Status().Ready() { return nil } snapsup, err := p4.taskSnapSetup(task) if err != nil { return err } var tid string if err := p4.get(task, "snap-setup-task", &tid); err != nil { return err } change := task.Change() revisionStr := "" if snapsup.SideInfo != nil { revisionStr = fmt.Sprintf(" (%s)", snapsup.Revision()) } tasks := change.Tasks() last := tasks[len(tasks)-1] newTask := task.State().NewTask("cleanup", fmt.Sprintf("Clean up %q%s install", snapsup.Name(), revisionStr)) newTask.Set("snap-setup-task", tid) newTask.WaitFor(last) change.AddTask(newTask) return nil }