Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions internal/daemon/snapshot-format.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ test-sdk-2:
snapshot-sdk: 2
fs-calls: 12
exec-calls:
- ["sudo", "--user=#0", "--group=#0", "--preserve-env=SDK", "--preserve-env=WORKSHOP_COOKIE", "--", "bash", "-l", "-c", 'exec -- "$0" "$@"', "bash", "-o", "errexit", "-o", "pipefail", "/var/lib/workshop/sdk/test-sdk-2/sdk/hooks/setup-base"]
- ["sudo", "--user=#0", "--group=#0", "--preserve-env=SDK", "--preserve-env=SDK_SYSTEMD_SECRET_SOCKET", "--preserve-env=WORKSHOP_COOKIE", "--", "bash", "-l", "-c", 'exec -- "$0" "$@"', "bash", "-o", "errexit", "-o", "pipefail", "/var/lib/workshop/sdk/test-sdk-2/sdk/hooks/setup-base"]
test-sdk:
files:
- drwxr-xr-x var
Expand All @@ -70,8 +70,8 @@ test-sdk:
snapshot-sdk: 3
fs-calls: 16
exec-calls:
- ["sudo", "--user=#0", "--group=#0", "--preserve-env=SDK", "--preserve-env=WORKSHOP_COOKIE", "--", "bash", "-l", "-c", 'exec -- "$0" "$@"', "bash", "-o", "errexit", "-o", "pipefail", "/var/lib/workshop/sdk/test-sdk-2/sdk/hooks/setup-base"]
- ["sudo", "--user=#0", "--group=#0", "--preserve-env=SDK", "--preserve-env=WORKSHOP_COOKIE", "--", "bash", "-l", "-c", 'exec -- "$0" "$@"', "bash", "-o", "errexit", "-o", "pipefail", "/var/lib/workshop/sdk/test-sdk/sdk/hooks/setup-base"]
- ["sudo", "--user=#0", "--group=#0", "--preserve-env=SDK", "--preserve-env=SDK_SYSTEMD_SECRET_SOCKET", "--preserve-env=WORKSHOP_COOKIE", "--", "bash", "-l", "-c", 'exec -- "$0" "$@"', "bash", "-o", "errexit", "-o", "pipefail", "/var/lib/workshop/sdk/test-sdk-2/sdk/hooks/setup-base"]
- ["sudo", "--user=#0", "--group=#0", "--preserve-env=SDK", "--preserve-env=SDK_SYSTEMD_SECRET_SOCKET", "--preserve-env=WORKSHOP_COOKIE", "--", "bash", "-l", "-c", 'exec -- "$0" "$@"', "bash", "-o", "errexit", "-o", "pipefail", "/var/lib/workshop/sdk/test-sdk/sdk/hooks/setup-base"]
sketch:
files:
- drwxr-xr-x var
Expand Down
3 changes: 2 additions & 1 deletion internal/overlord/hookstate/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,8 @@ func (h *HookManager) doRunHook(task *state.Task, tomb *tomb.Tomb) error {
GroupId: 0,
Command: command,
Environment: map[string]string{
"SDK": sdk.SdkDir(hook.Sdk),
"SDK": sdk.SdkDir(hook.Sdk),
"SDK_SYSTEMD_SECRET_SOCKET": dirs.WorkshopSecretSocketPath,
},
WorkDir: sdk.SdkHooksDir(hook.Sdk),
Timeout: hook.Timeout,
Expand Down
13 changes: 7 additions & 6 deletions internal/overlord/hookstate/handlers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,7 @@ func (s *hookSuite) TestExecSetupProject(c *check.C) {
"--preserve-env=DBUS_SESSION_BUS_ADDRESS",
"--preserve-env=HOME",
"--preserve-env=SDK",
"--preserve-env=SDK_SYSTEMD_SECRET_SOCKET",
"--preserve-env=WORKSHOP_COOKIE",
"--preserve-env=XDG_RUNTIME_DIR",
"--",
Expand Down Expand Up @@ -325,10 +326,10 @@ func (s *hookSuite) TestExecSaveState(c *check.C) {

c.Check(s.backend.ExecCalls, check.HasLen, 1)
c.Assert(s.backend.ExecCalls[0].Args.Command, check.DeepEquals,
[]string{"sudo", "--user=#0", "--group=#0", "--preserve-env=SDK", "--preserve-env=SDK_STATE_DIR", "--preserve-env=WORKSHOP_COOKIE", "--", "bash", "-l", "-c", `exec -- "$0" "$@"`, "bash", "-o", "errexit", "-o", "pipefail", "/var/lib/workshop/sdk/one/sdk/hooks/save-state"})
[]string{"sudo", "--user=#0", "--group=#0", "--preserve-env=SDK", "--preserve-env=SDK_STATE_DIR", "--preserve-env=SDK_SYSTEMD_SECRET_SOCKET", "--preserve-env=WORKSHOP_COOKIE", "--", "bash", "-l", "-c", `exec -- "$0" "$@"`, "bash", "-o", "errexit", "-o", "pipefail", "/var/lib/workshop/sdk/one/sdk/hooks/save-state"})
c.Assert(s.backend.ExecCalls[0].Args.Environment["SDK_STATE_DIR"], check.Equals, "/var/lib/workshop/state/sdk/one")
c.Assert(s.backend.ExecCalls[0].Args.Environment["WORKSHOP_COOKIE"], check.NotNil)
c.Assert(s.backend.ExecCalls[0].Args.Environment, check.HasLen, 3)
c.Assert(s.backend.ExecCalls[0].Args.Environment, check.HasLen, 4)
}

func (s *hookSuite) TestExecRestoreState(c *check.C) {
Expand Down Expand Up @@ -360,10 +361,10 @@ func (s *hookSuite) TestExecRestoreState(c *check.C) {

c.Check(s.backend.ExecCalls, check.HasLen, 1)
c.Assert(s.backend.ExecCalls[0].Args.Command, check.DeepEquals,
[]string{"sudo", "--user=#0", "--group=#0", "--preserve-env=SDK", "--preserve-env=SDK_STATE_DIR", "--preserve-env=WORKSHOP_COOKIE", "--", "bash", "-l", "-c", `exec -- "$0" "$@"`, "bash", "-o", "errexit", "-o", "pipefail", "-o", "xtrace", "/var/lib/workshop/sdk/one/sdk/hooks/restore-state"})
[]string{"sudo", "--user=#0", "--group=#0", "--preserve-env=SDK", "--preserve-env=SDK_STATE_DIR", "--preserve-env=SDK_SYSTEMD_SECRET_SOCKET", "--preserve-env=WORKSHOP_COOKIE", "--", "bash", "-l", "-c", `exec -- "$0" "$@"`, "bash", "-o", "errexit", "-o", "pipefail", "-o", "xtrace", "/var/lib/workshop/sdk/one/sdk/hooks/restore-state"})
c.Assert(s.backend.ExecCalls[0].Args.Environment["SDK_STATE_DIR"], check.Equals, "/var/lib/workshop/state/sdk/one")
c.Assert(s.backend.ExecCalls[0].Args.Environment["WORKSHOP_COOKIE"], check.NotNil)
c.Assert(s.backend.ExecCalls[0].Args.Environment, check.HasLen, 3)
c.Assert(s.backend.ExecCalls[0].Args.Environment, check.HasLen, 4)
}

func (s *hookSuite) TestExecHandlesFailedHook(c *check.C) {
Expand Down Expand Up @@ -401,7 +402,7 @@ func (s *hookSuite) TestExecHandlesFailedHook(c *check.C) {

c.Check(s.backend.ExecCalls, check.HasLen, 1)
c.Assert(s.backend.ExecCalls[0].Args.Command, check.DeepEquals,
[]string{"sudo", "--user=#0", "--group=#0", "--preserve-env=SDK", "--preserve-env=SDK_STATE_DIR", "--preserve-env=WORKSHOP_COOKIE", "--", "bash", "-l", "-c", `exec -- "$0" "$@"`, "bash", "-o", "errexit", "-o", "pipefail", "/var/lib/workshop/sdk/one/sdk/hooks/save-state"})
[]string{"sudo", "--user=#0", "--group=#0", "--preserve-env=SDK", "--preserve-env=SDK_STATE_DIR", "--preserve-env=SDK_SYSTEMD_SECRET_SOCKET", "--preserve-env=WORKSHOP_COOKIE", "--", "bash", "-l", "-c", `exec -- "$0" "$@"`, "bash", "-o", "errexit", "-o", "pipefail", "/var/lib/workshop/sdk/one/sdk/hooks/save-state"})

c.Check(t1.Status(), check.Equals, state.ErrorStatus)
c.Check(t1.Log(), check.HasLen, 1)
Expand Down Expand Up @@ -441,7 +442,7 @@ func (s *hookSuite) TestExecHandlesHookTimedout(c *check.C) {

c.Check(s.backend.ExecCalls, check.HasLen, 1)
c.Assert(s.backend.ExecCalls[0].Args.Command, check.DeepEquals,
[]string{"sudo", "--user=#0", "--group=#0", "--preserve-env=SDK", "--preserve-env=WORKSHOP_COOKIE", "--", "bash", "-l", "-c", `exec -- "$0" "$@"`, "bash", "-o", "errexit", "-o", "pipefail", "/var/lib/workshop/sdk/one/sdk/hooks/fake-hook"})
[]string{"sudo", "--user=#0", "--group=#0", "--preserve-env=SDK", "--preserve-env=SDK_SYSTEMD_SECRET_SOCKET", "--preserve-env=WORKSHOP_COOKIE", "--", "bash", "-l", "-c", `exec -- "$0" "$@"`, "bash", "-o", "errexit", "-o", "pipefail", "/var/lib/workshop/sdk/one/sdk/hooks/fake-hook"})

c.Check(t1.Status(), check.Equals, state.ErrorStatus)
c.Check(t1.Log(), check.HasLen, 1)
Expand Down
Loading