aboutsummaryrefslogtreecommitdiff
path: root/pkg/systemd
diff options
context:
space:
mode:
authorPaul Holzinger <paul.holzinger@web.de>2021-03-15 12:55:06 +0100
committerPaul Holzinger <paul.holzinger@web.de>2021-03-15 14:02:04 +0100
commit57e8c66322849ff60e6126616c0c9883a80fb139 (patch)
treedc91b324d82675d66c6b1f37d6ca97c82597ae30 /pkg/systemd
parent762148deb6be6925d17bd12f219f7385e1402439 (diff)
downloadpodman-57e8c66322849ff60e6126616c0c9883a80fb139.tar.gz
podman-57e8c66322849ff60e6126616c0c9883a80fb139.tar.bz2
podman-57e8c66322849ff60e6126616c0c9883a80fb139.zip
Do not leak libpod package into the remote client
Some packages used by the remote client imported the libpod package. This is not wanted because it adds unnecessary bloat to the client and also causes problems with platform specific code(linux only), see #9710. The solution is to move the used functions/variables into extra packages which do not import libpod. This change shrinks the remote client size more than 6MB compared to the current master. [NO TESTS NEEDED] I have no idea how to test this properly but with #9710 the cross compile should fail. Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
Diffstat (limited to 'pkg/systemd')
-rw-r--r--pkg/systemd/define/const.go9
-rw-r--r--pkg/systemd/generate/common.go11
-rw-r--r--pkg/systemd/generate/containers.go3
-rw-r--r--pkg/systemd/generate/containers_test.go41
-rw-r--r--pkg/systemd/generate/pods.go3
5 files changed, 36 insertions, 31 deletions
diff --git a/pkg/systemd/define/const.go b/pkg/systemd/define/const.go
new file mode 100644
index 000000000..1b50be5db
--- /dev/null
+++ b/pkg/systemd/define/const.go
@@ -0,0 +1,9 @@
+package define
+
+// EnvVariable "PODMAN_SYSTEMD_UNIT" is set in all generated systemd units and
+// is set to the unit's (unique) name.
+const EnvVariable = "PODMAN_SYSTEMD_UNIT"
+
+// RestartPolicies includes all valid restart policies to be used in a unit
+// file.
+var RestartPolicies = []string{"no", "on-success", "on-failure", "on-abnormal", "on-watchdog", "on-abort", "always"}
diff --git a/pkg/systemd/generate/common.go b/pkg/systemd/generate/common.go
index bbd1a5f92..94a6f4cb5 100644
--- a/pkg/systemd/generate/common.go
+++ b/pkg/systemd/generate/common.go
@@ -4,25 +4,18 @@ import (
"strconv"
"strings"
+ "github.com/containers/podman/v3/pkg/systemd/define"
"github.com/pkg/errors"
)
-// EnvVariable "PODMAN_SYSTEMD_UNIT" is set in all generated systemd units and
-// is set to the unit's (unique) name.
-const EnvVariable = "PODMAN_SYSTEMD_UNIT"
-
// minTimeoutStopSec is the minimal stop timeout for generated systemd units.
// Once exceeded, processes of the services are killed and the cgroup(s) are
// cleaned up.
const minTimeoutStopSec = 60
-// RestartPolicies includes all valid restart policies to be used in a unit
-// file.
-var RestartPolicies = []string{"no", "on-success", "on-failure", "on-abnormal", "on-watchdog", "on-abort", "always"}
-
// validateRestartPolicy checks that the user-provided policy is valid.
func validateRestartPolicy(restart string) error {
- for _, i := range RestartPolicies {
+ for _, i := range define.RestartPolicies {
if i == restart {
return nil
}
diff --git a/pkg/systemd/generate/containers.go b/pkg/systemd/generate/containers.go
index 92c6d8865..9343a5067 100644
--- a/pkg/systemd/generate/containers.go
+++ b/pkg/systemd/generate/containers.go
@@ -11,6 +11,7 @@ import (
"github.com/containers/podman/v3/libpod"
"github.com/containers/podman/v3/pkg/domain/entities"
+ "github.com/containers/podman/v3/pkg/systemd/define"
"github.com/containers/podman/v3/version"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
@@ -173,7 +174,7 @@ func executeContainerTemplate(info *containerInfo, options entities.GenerateSyst
info.Executable = executable
}
- info.EnvVariable = EnvVariable
+ info.EnvVariable = define.EnvVariable
info.ExecStart = "{{{{.Executable}}}} start {{{{.ContainerNameOrID}}}}"
info.ExecStop = "{{{{.Executable}}}} stop {{{{if (ge .StopTimeout 0)}}}}-t {{{{.StopTimeout}}}}{{{{end}}}} {{{{.ContainerNameOrID}}}}"
info.ExecStopPost = "{{{{.Executable}}}} stop {{{{if (ge .StopTimeout 0)}}}}-t {{{{.StopTimeout}}}}{{{{end}}}} {{{{.ContainerNameOrID}}}}"
diff --git a/pkg/systemd/generate/containers_test.go b/pkg/systemd/generate/containers_test.go
index 747c54699..ebbbdb786 100644
--- a/pkg/systemd/generate/containers_test.go
+++ b/pkg/systemd/generate/containers_test.go
@@ -4,6 +4,7 @@ import (
"testing"
"github.com/containers/podman/v3/pkg/domain/entities"
+ "github.com/containers/podman/v3/pkg/systemd/define"
"github.com/stretchr/testify/assert"
)
@@ -398,7 +399,7 @@ WantedBy=multi-user.target default.target
PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid",
StopTimeout: 22,
PodmanVersion: "CI",
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
goodID,
false,
@@ -414,7 +415,7 @@ WantedBy=multi-user.target default.target
PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid",
StopTimeout: 22,
PodmanVersion: "CI",
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
goodIDNoHeaderInfo,
false,
@@ -430,7 +431,7 @@ WantedBy=multi-user.target default.target
PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid",
StopTimeout: 10,
PodmanVersion: "CI",
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
goodName,
false,
@@ -447,7 +448,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 10,
PodmanVersion: "CI",
BoundToServices: []string{"pod", "a", "b", "c"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
goodNameBoundTo,
false,
@@ -462,7 +463,7 @@ WantedBy=multi-user.target default.target
PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid",
StopTimeout: 10,
PodmanVersion: "CI",
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
"",
false,
@@ -479,7 +480,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 10,
PodmanVersion: "CI",
CreateCommand: []string{"I'll get stripped", "container", "run", "--name", "jadda-jadda", "--hostname", "hello-world", "awesome-image:latest", "command", "arg1", "...", "argN", "foo=arg \"with \" space"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
goodWithNameAndGeneric,
true,
@@ -496,7 +497,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 10,
PodmanVersion: "CI",
CreateCommand: []string{"I'll get stripped", "run", "-d", "--name", "jadda-jadda", "--hostname", "hello-world", "awesome-image:latest", "command", "arg1", "...", "argN"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
goodWithExplicitShortDetachParam,
true,
@@ -513,7 +514,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 10,
PodmanVersion: "CI",
CreateCommand: []string{"I'll get stripped", "run", "-d", "--name", "jadda-jadda", "--hostname", "hello-world", "awesome-image:latest", "command", "arg1", "...", "argN"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
Pod: &podInfo{
PodIDFile: "%t/pod-foobar.pod-id-file",
},
@@ -533,7 +534,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 10,
PodmanVersion: "CI",
CreateCommand: []string{"I'll get stripped", "run", "--detach", "--name", "jadda-jadda", "--hostname", "hello-world", "awesome-image:latest", "command", "arg1", "...", "argN"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
goodNameNewDetach,
true,
@@ -550,7 +551,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 10,
PodmanVersion: "CI",
CreateCommand: []string{"I'll get stripped", "run", "awesome-image:latest"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
goodIDNew,
true,
@@ -567,7 +568,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 42,
PodmanVersion: "CI",
CreateCommand: []string{"I'll get stripped", "run", "--detach=true", "awesome-image:latest"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
genGoodNewDetach("--detach=true"),
true,
@@ -584,7 +585,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 42,
PodmanVersion: "CI",
CreateCommand: []string{"I'll get stripped", "run", "--detach=false", "awesome-image:latest"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
genGoodNewDetach("-d"),
true,
@@ -601,7 +602,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 42,
PodmanVersion: "CI",
CreateCommand: []string{"I'll get stripped", "run", "--name", "test", "-p", "80:80", "--detach=false", "awesome-image:latest", "somecmd", "--detach=false"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
goodNameNewDetachFalseWithCmd,
true,
@@ -618,7 +619,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 42,
PodmanVersion: "CI",
CreateCommand: []string{"I'll get stripped", "run", "--name", "test", "-p", "80:80", "--detach=false", "--detach=false", "awesome-image:latest", "somecmd", "--detach=false"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
goodNameNewDetachFalseWithCmd,
true,
@@ -635,7 +636,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 42,
PodmanVersion: "CI",
CreateCommand: []string{"I'll get stripped", "run", "-dti", "awesome-image:latest"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
genGoodNewDetach("-dti"),
true,
@@ -652,7 +653,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 42,
PodmanVersion: "CI",
CreateCommand: []string{"I'll get stripped", "run", "-tid", "awesome-image:latest"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
genGoodNewDetach("-tid"),
true,
@@ -669,7 +670,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 42,
PodmanVersion: "CI",
CreateCommand: []string{"I'll get stripped", "--events-backend", "none", "--runroot", "/root", "run", "awesome-image:latest"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
goodNewRootFlags,
true,
@@ -686,7 +687,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 10,
PodmanVersion: "CI",
CreateCommand: []string{"I'll get stripped", "container", "create", "awesome-image:latest"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
goodContainerCreate,
true,
@@ -703,7 +704,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 10,
PodmanVersion: "CI",
CreateCommand: []string{"I'll get stripped", "create", "--name", "test", "--log-driver=journald", "--log-opt=tag={{.Name}}", "awesome-image:latest"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
goodNewWithJournaldTag,
true,
@@ -720,7 +721,7 @@ WantedBy=multi-user.target default.target
StopTimeout: 10,
PodmanVersion: "CI",
CreateCommand: []string{"I'll get stripped", "create", "--name", "test", "awesome-image:latest", "sh", "-c", "kill $$ && echo %\\"},
- EnvVariable: EnvVariable,
+ EnvVariable: define.EnvVariable,
},
goodNewWithSpecialChars,
true,
diff --git a/pkg/systemd/generate/pods.go b/pkg/systemd/generate/pods.go
index 8c0401278..f96058d36 100644
--- a/pkg/systemd/generate/pods.go
+++ b/pkg/systemd/generate/pods.go
@@ -11,6 +11,7 @@ import (
"github.com/containers/podman/v3/libpod"
"github.com/containers/podman/v3/pkg/domain/entities"
+ "github.com/containers/podman/v3/pkg/systemd/define"
"github.com/containers/podman/v3/version"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
@@ -237,7 +238,7 @@ func executePodTemplate(info *podInfo, options entities.GenerateSystemdOptions)
info.Executable = executable
}
- info.EnvVariable = EnvVariable
+ info.EnvVariable = define.EnvVariable
info.ExecStart = "{{{{.Executable}}}} start {{{{.InfraNameOrID}}}}"
info.ExecStop = "{{{{.Executable}}}} stop {{{{if (ge .StopTimeout 0)}}}}-t {{{{.StopTimeout}}}}{{{{end}}}} {{{{.InfraNameOrID}}}}"
info.ExecStopPost = "{{{{.Executable}}}} stop {{{{if (ge .StopTimeout 0)}}}}-t {{{{.StopTimeout}}}}{{{{end}}}} {{{{.InfraNameOrID}}}}"