Skip to content
Merged
2 changes: 1 addition & 1 deletion daemon/api_sideload_n_try.go
Original file line number Diff line number Diff line change
Expand Up @@ -579,7 +579,7 @@ func sideloadSnap(_ context.Context, st *state.State, upload *uploadedContainer,
message := fmt.Sprintf("%q snap", instanceName)
if compInfo == nil {
// TODO pass per request context
tset, _, err = snapstateInstallPath(st, &info.SideInfo, upload.tmpPath, instanceName, "", flags.Flags, nil)
tset, err = snapstateInstallPath(st, &info.SideInfo, upload.tmpPath, instanceName, "", flags.Flags, nil)
changeType = installSnapChangeKind
} else {
// It is a component
Expand Down
12 changes: 6 additions & 6 deletions daemon/api_sideload_n_try_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ func (s *sideloadSuite) sideloadCheck(c *check.C, content string, head map[strin
return []*snap.Info{{}}, []*state.TaskSet{state.NewTaskSet(t)}, nil
})()

defer daemon.MockSnapstateInstallPath(func(s *state.State, si *snap.SideInfo, path, name, channel string, flags snapstate.Flags, prqt snapstate.PrereqTracker) (*state.TaskSet, *snap.Info, error) {
defer daemon.MockSnapstateInstallPath(func(s *state.State, si *snap.SideInfo, path, name, channel string, flags snapstate.Flags, prqt snapstate.PrereqTracker) (*state.TaskSet, error) {
c.Check(flags, check.DeepEquals, expectedFlags)

c.Check(path, testutil.FileEquals, "xyzzy")
Expand All @@ -232,7 +232,7 @@ func (s *sideloadSuite) sideloadCheck(c *check.C, content string, head map[strin

installQueue = append(installQueue, si.RealName+"::"+path)
t := s.NewTask("fake-install-snap", "Doing a fake install")
return state.NewTaskSet(t), &snap.Info{SuggestedName: name}, nil
return state.NewTaskSet(t), nil
})()

buf := bytes.NewBufferString(content)
Expand Down Expand Up @@ -1059,15 +1059,15 @@ version: 1`, nil)
c.Assert(err, check.IsNil)
req.Header.Set("Content-Type", "multipart/thing; boundary=--hello--")

defer daemon.MockSnapstateInstallPath(func(s *state.State, si *snap.SideInfo, path, name, channel string, flags snapstate.Flags, prqt snapstate.PrereqTracker) (*state.TaskSet, *snap.Info, error) {
defer daemon.MockSnapstateInstallPath(func(s *state.State, si *snap.SideInfo, path, name, channel string, flags snapstate.Flags, prqt snapstate.PrereqTracker) (*state.TaskSet, error) {
c.Check(flags, check.Equals, snapstate.Flags{RemoveSnapPath: true, Transaction: client.TransactionPerSnap})
c.Check(si, check.DeepEquals, &snap.SideInfo{
RealName: "foo",
SnapID: "foo-id",
Revision: snap.R(41),
})

return state.NewTaskSet(), &snap.Info{SuggestedName: "foo"}, nil
return state.NewTaskSet(), nil
})()

rsp := s.asyncReq(c, req, nil, actionIsExpected)
Expand Down Expand Up @@ -1154,8 +1154,8 @@ func (s *sideloadSuite) TestSideloadSnapChangeConflict(c *check.C) {
return &snap.Info{SuggestedName: "foo"}, nil
})()

defer daemon.MockSnapstateInstallPath(func(s *state.State, si *snap.SideInfo, path, name, channel string, flags snapstate.Flags, prqt snapstate.PrereqTracker) (*state.TaskSet, *snap.Info, error) {
return nil, nil, &snapstate.ChangeConflictError{Snap: "foo"}
defer daemon.MockSnapstateInstallPath(func(s *state.State, si *snap.SideInfo, path, name, channel string, flags snapstate.Flags, prqt snapstate.PrereqTracker) (*state.TaskSet, error) {
return nil, &snapstate.ChangeConflictError{Snap: "foo"}
})()

req, err := http.NewRequest("POST", "/v2/snaps", bytes.NewBufferString(body))
Expand Down
2 changes: 1 addition & 1 deletion daemon/export_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ func MockSnapstateStoreUpdateGoal(mock func(snaps ...snapstate.StoreUpdate) snap
}
}

func MockSnapstateInstallPath(mock func(*state.State, *snap.SideInfo, string, string, string, snapstate.Flags, snapstate.PrereqTracker) (*state.TaskSet, *snap.Info, error)) (restore func()) {
func MockSnapstateInstallPath(mock func(*state.State, *snap.SideInfo, string, string, string, snapstate.Flags, snapstate.PrereqTracker) (*state.TaskSet, error)) (restore func()) {
oldSnapstateInstallPath := snapstateInstallPath
snapstateInstallPath = mock
return func() {
Expand Down
2 changes: 1 addition & 1 deletion overlord/devicestate/firstboot.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func installSeedSnap(st *state.State, sn *seed.Snap, flags snapstate.Flags, prqt

flags.NoDelayedSideEffects = true

goal := snapstate.PathInstallGoal(snapstate.PathSnap{
goal := snapstate.SeedingGoal(snapstate.PathSnap{
Path: sn.Path,
SideInfo: sn.SideInfo,
Components: components,
Expand Down
2 changes: 1 addition & 1 deletion overlord/fdestate/conflict_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ type: base
} {
path := snaptest.MakeTestSnapWithFiles(c, sn.snapYaml, nil)
s.st.Set("seeded", true)
ts, _, err := snapstate.InstallPath(s.st, &snap.SideInfo{
ts, err := snapstate.InstallPath(s.st, &snap.SideInfo{
RealName: sn.name,
}, path, "", "", snapstate.Flags{}, nil)
c.Assert(err, IsNil)
Expand Down
4 changes: 2 additions & 2 deletions overlord/fdestate/fdestate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -946,7 +946,7 @@ type: base
} {
path := snaptest.MakeTestSnapWithFiles(c, sn.snapYaml, nil)
s.st.Set("seeded", true)
ts, _, err := snapstate.InstallPath(s.st, &snap.SideInfo{
ts, err := snapstate.InstallPath(s.st, &snap.SideInfo{
RealName: sn.name,
}, path, "", "", snapstate.Flags{}, nil)
c.Assert(err, IsNil)
Expand Down Expand Up @@ -1021,7 +1021,7 @@ type: app
c.Logf("checking snap %s:\n%s", sn.name, sn.snapYaml)
path := snaptest.MakeTestSnapWithFiles(c, sn.snapYaml, nil)

_, _, err = snapstate.InstallPath(s.st, &snap.SideInfo{
_, err = snapstate.InstallPath(s.st, &snap.SideInfo{
RealName: sn.name,
}, path, "", "", snapstate.Flags{}, nil)

Expand Down
2 changes: 1 addition & 1 deletion overlord/fdestate/secure_boot_update_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1618,7 +1618,7 @@ type: app
c.Logf("checking snap %s:\n%s", sn.name, sn.snapYaml)
path := snaptest.MakeTestSnapWithFiles(c, sn.snapYaml, nil)

_, _, err = snapstate.InstallPath(st, &snap.SideInfo{
_, err = snapstate.InstallPath(st, &snap.SideInfo{
RealName: sn.name,
}, path, "", "", snapstate.Flags{}, nil)

Expand Down
46 changes: 23 additions & 23 deletions overlord/managers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -734,7 +734,7 @@ apps:
st.Lock()
defer st.Unlock()

ts, _, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "foo"}, snapPath, "", "", snapstate.Flags{DevMode: true}, nil)
ts, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "foo"}, snapPath, "", "", snapstate.Flags{DevMode: true}, nil)
c.Assert(err, IsNil)
chg := st.NewChange("install-snap", "...")
chg.AddAll(ts)
Expand Down Expand Up @@ -801,7 +801,7 @@ hooks:
st.Lock()
defer st.Unlock()

ts, _, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "foo"}, snapPath, "", "", snapstate.Flags{DevMode: true}, nil)
ts, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "foo"}, snapPath, "", "", snapstate.Flags{DevMode: true}, nil)
c.Assert(err, IsNil)
chg := st.NewChange("install-snap", "...")
chg.AddAll(ts)
Expand Down Expand Up @@ -2170,7 +2170,7 @@ apps:
err = assertstate.Add(st, snapDecl)
c.Assert(err, IsNil)

ts, _, err := snapstate.InstallPath(st, si, snapPath, "", "", snapstate.Flags{DevMode: true}, nil)
ts, err := snapstate.InstallPath(st, si, snapPath, "", "", snapstate.Flags{DevMode: true}, nil)
c.Assert(err, IsNil)
chg := st.NewChange("install-snap", "...")
chg.AddAll(ts)
Expand Down Expand Up @@ -2235,7 +2235,7 @@ apps:
err = assertstate.Add(st, snapDecl)
c.Assert(err, IsNil)

_, _, err = snapstate.InstallPath(st, si, snapPath, "bar_instance", "", snapstate.Flags{DevMode: true}, nil)
_, err = snapstate.InstallPath(st, si, snapPath, "bar_instance", "", snapstate.Flags{DevMode: true}, nil)
c.Assert(err, ErrorMatches, `cannot install snap "bar_instance": instance name prefix does not match snap name: bar != foo`)
}

Expand Down Expand Up @@ -2265,7 +2265,7 @@ apps:
err = assertstate.Add(st, snapDecl)
c.Assert(err, IsNil)

_, _, err = snapstate.InstallPath(st, si, snapPath, "bar_invalid_instance_name", "", snapstate.Flags{DevMode: true}, nil)
_, err = snapstate.InstallPath(st, si, snapPath, "bar_invalid_instance_name", "", snapstate.Flags{DevMode: true}, nil)
c.Assert(err, ErrorMatches, `invalid instance name: invalid instance key: "invalid_instance_name"`)
}

Expand Down Expand Up @@ -2301,7 +2301,7 @@ slots:
restoreSanitize := snap.MockSanitizePlugsSlots(func(snapInfo *snap.Info) {})
defer restoreSanitize()

ts, _, err := snapstate.InstallPath(st, si, snapPath, "", "", snapstate.Flags{DevMode: true}, nil)
ts, err := snapstate.InstallPath(st, si, snapPath, "", "", snapstate.Flags{DevMode: true}, nil)
c.Assert(err, IsNil)
chg := st.NewChange("install-snap", "...")
chg.AddAll(ts)
Expand Down Expand Up @@ -2489,7 +2489,7 @@ type: os

// InstallPath does not set any restart boundaries by itself, this is something
// that must be handled where we use it, and actually schedule the change.
ts, _, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "core"}, snapPath, "", "", snapstate.Flags{}, nil)
ts, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "core"}, snapPath, "", "", snapstate.Flags{}, nil)
c.Assert(err, IsNil)
chg := st.NewChange("install-snap", "...")
chg.AddAll(ts)
Expand Down Expand Up @@ -2568,7 +2568,7 @@ type: os

// InstallPath does not set any restart boundaries by itself, this is something
// that must be handled where we use it, and actually schedule the change.
ts, _, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "core"}, snapPath, "", "", snapstate.Flags{}, nil)
ts, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "core"}, snapPath, "", "", snapstate.Flags{}, nil)
c.Assert(err, IsNil)
chg := st.NewChange("install-snap", "...")
chg.AddAll(ts)
Expand Down Expand Up @@ -2715,7 +2715,7 @@ type: kernel`

// InstallPath does not set any restart boundaries by itself, this is something
// that must be handled where we use it, and actually schedule the change.
ts, _, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "pc-kernel"}, snapPath, "", "", snapstate.Flags{}, nil)
ts, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "pc-kernel"}, snapPath, "", "", snapstate.Flags{}, nil)
c.Assert(err, IsNil)
chg := st.NewChange("install-snap", "...")
chg.AddAll(ts)
Expand Down Expand Up @@ -2817,7 +2817,7 @@ type: kernel`

// InstallPath does not set any restart boundaries by itself, this is something
// that must be handled where we use it, and actually schedule the change.
ts, _, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "pc-kernel"}, snapPath, "", "", snapstate.Flags{}, nil)
ts, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "pc-kernel"}, snapPath, "", "", snapstate.Flags{}, nil)
c.Assert(err, IsNil)

terr := st.NewTask("error-trigger", "provoking total undo")
Expand Down Expand Up @@ -2975,7 +2975,7 @@ type: kernel`

// InstallPath does not set any restart boundaries by itself, this is something
// that must be handled where we use it, and actually schedule the change.
ts, _, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "pc-kernel"}, kernelSnapPath, "", "", snapstate.Flags{}, nil)
ts, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "pc-kernel"}, kernelSnapPath, "", "", snapstate.Flags{}, nil)
c.Assert(err, IsNil)
chg := st.NewChange("install-snap", "...")
chg.AddAll(ts)
Expand Down Expand Up @@ -3144,7 +3144,7 @@ type: kernel`

// InstallPath does not set any restart boundaries by itself, this is something
// that must be handled where we use it, and actually schedule the change.
ts, _, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "pc-kernel"}, kernelSnapPath, "", "", snapstate.Flags{}, nil)
ts, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "pc-kernel"}, kernelSnapPath, "", "", snapstate.Flags{}, nil)
c.Assert(err, IsNil)

terr := st.NewTask("error-trigger", "provoking total undo")
Expand Down Expand Up @@ -3250,7 +3250,7 @@ func (s *mgrsSuite) installLocalTestSnap(c *C, snapYamlContent string) *snap.Inf
var snapst snapstate.SnapState
snapstate.Get(st, snapName, &snapst)

ts, _, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: snapName}, snapPath, "", "", snapstate.Flags{DevMode: true}, nil)
ts, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: snapName}, snapPath, "", "", snapstate.Flags{DevMode: true}, nil)
c.Assert(err, IsNil)
chg := st.NewChange("install-snap", "...")
chg.AddAll(ts)
Expand Down Expand Up @@ -4497,7 +4497,7 @@ func (s *mgrsSuite) TestRemoveAndInstallWithAutoconnectHappy(c *C) {

snapPath := makeTestSnap(c, snapYamlContent2+"version: 1.0")
chg2 := st.NewChange("install-snap", "...")
ts2, _, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "snap2", SnapID: fakeSnapID("snap2"), Revision: snap.R(3)}, snapPath, "", "", snapstate.Flags{DevMode: true}, nil)
ts2, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "snap2", SnapID: fakeSnapID("snap2"), Revision: snap.R(3)}, snapPath, "", "", snapstate.Flags{DevMode: true}, nil)
chg2.AddAll(ts2)
c.Assert(err, IsNil)

Expand Down Expand Up @@ -6171,7 +6171,7 @@ func (ms *mgrsSuite) TestRefreshSimpleSameRevFromLocalFile(c *C) {

// now refresh from rev1 to rev1
flags := snapstate.Flags{RemoveSnapPath: true}
ts, _, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "some-snap", Revision: snap.R(revStr)}, tmpSnapFile, "", "", flags, nil)
ts, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "some-snap", Revision: snap.R(revStr)}, tmpSnapFile, "", "", flags, nil)
c.Assert(err, IsNil)

chg := st.NewChange("refresh", "...")
Expand Down Expand Up @@ -6234,7 +6234,7 @@ func (ms *mgrsSuite) TestRefreshSimpleRevertToLocalFromLocalFile(c *C) {

// now refresh from rev2 to rev1
flags := snapstate.Flags{RemoveSnapPath: true}
ts, _, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "some-snap", Revision: snap.R(revStr)}, tmpSnapFile, "", "", flags, nil)
ts, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "some-snap", Revision: snap.R(revStr)}, tmpSnapFile, "", "", flags, nil)
c.Assert(err, IsNil)

chg := st.NewChange("refresh", "...")
Expand Down Expand Up @@ -10497,7 +10497,7 @@ type: kernel`

// InstallPath does not set any restart boundaries by itself, this is something
// that must be handled where we use it, and actually schedule the change.
ts, _, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "pc-kernel"}, snapPath, "", "", snapstate.Flags{}, nil)
ts, err := snapstate.InstallPath(st, &snap.SideInfo{RealName: "pc-kernel"}, snapPath, "", "", snapstate.Flags{}, nil)
c.Assert(err, IsNil)

chg := st.NewChange("install-snap", "...")
Expand Down Expand Up @@ -10730,7 +10730,7 @@ NeedDaemonReload=no
err = assertstate.Add(st, model)
c.Assert(err, IsNil)

ts, _, err := snapstate.InstallPath(st, si, snapPath, "", "", snapstate.Flags{}, nil)
ts, err := snapstate.InstallPath(st, si, snapPath, "", "", snapstate.Flags{}, nil)
c.Assert(err, IsNil)

chg := st.NewChange("install-snap", "...")
Expand Down Expand Up @@ -10975,7 +10975,7 @@ NeedDaemonReload=no
err = assertstate.Add(st, model)
c.Assert(err, IsNil)

ts, _, err := snapstate.InstallPath(st, si, snapPath, "", "", snapstate.Flags{}, nil)
ts, err := snapstate.InstallPath(st, si, snapPath, "", "", snapstate.Flags{}, nil)
c.Assert(err, IsNil)

chg := st.NewChange("install-snap", "...")
Expand Down Expand Up @@ -11153,7 +11153,7 @@ volumes:

// InstallPath does not set any restart boundaries by itself, this is something
// that must be handled where we use it, and actually schedule the change.
ts, _, err := snapstate.InstallPath(st, si, snapPath, "", "", snapstate.Flags{}, nil)
ts, err := snapstate.InstallPath(st, si, snapPath, "", "", snapstate.Flags{}, nil)
c.Assert(err, IsNil)

chg := st.NewChange("install-snap", "...")
Expand Down Expand Up @@ -11310,7 +11310,7 @@ func (s *mgrsSuite) testNonUC20RunUpdateManagedBootConfig(c *C, snapPath string,

// InstallPath does not set any restart boundaries by itself, this is something
// that must be handled where we use it, and actually schedule the change.
ts, _, err := snapstate.InstallPath(st, si, snapPath, "", "", snapstate.Flags{}, nil)
ts, err := snapstate.InstallPath(st, si, snapPath, "", "", snapstate.Flags{}, nil)
c.Assert(err, IsNil)

chg := st.NewChange("install-snap", "...")
Expand Down Expand Up @@ -11534,7 +11534,7 @@ func (s *mgrsSuiteCore) testGadgetKernelCommandLine(c *C, gadgetPath string, gad
})
defer r()

ts, _, err := snapstate.InstallPath(st, gadgetSideInfo, gadgetPath, "", "", snapstate.Flags{}, nil)
ts, err := snapstate.InstallPath(st, gadgetSideInfo, gadgetPath, "", "", snapstate.Flags{}, nil)
c.Assert(err, IsNil)

chg := st.NewChange("install-snap", "...")
Expand Down Expand Up @@ -14655,7 +14655,7 @@ type: snapd`
err = assertstate.Add(st, model)
c.Assert(err, IsNil)

ts, _, err := snapstate.InstallPath(st, si, snapPath, "", "", snapstate.Flags{}, nil)
ts, err := snapstate.InstallPath(st, si, snapPath, "", "", snapstate.Flags{}, nil)
c.Assert(err, IsNil)

chg := st.NewChange("install-snap", "...")
Expand Down
2 changes: 1 addition & 1 deletion overlord/snapstate/conflict.go
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ func checkChangeConflictExclusiveKinds(st *state.State, newExclusiveChangeKind,
ChangeKind: "remove-recovery-system",
ChangeID: chg.ID(),
}
case "revert-snap", "refresh-snap":
case "revert-snap", "refresh-snap", "install-snap":
downgrading, err := changeIsSnapdDowngrade(st, chg)
if err != nil {
return err
Expand Down
6 changes: 6 additions & 0 deletions overlord/snapstate/seed.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,12 @@ func changeHasPendingSeedRefresh(chg *state.Change) bool {
// seedRefreshAndSeedSnapTaskSets returns the seed-refresh tasks and the task
// sets for snaps that are involved in the seed refresh.
func seedRefreshAndSeedSnapTaskSets(st *state.State, stss []snapInstallTaskSet, eviction SeedRefreshEvictionPolicy, opts Options) (*SeedRefreshTaskSet, map[string]snapInstallTaskSet, error) {
// try mode doesn't actually install the snap, should never trigger a
// seed-refresh
if opts.Flags.TryMode || opts.NoSeedRefresh {
return nil, nil, nil
}

enabled, err := seedRefreshEnabled(st)
if err != nil {
return nil, nil, err
Expand Down
Loading
Loading