mirror of
https://github.com/containers/podman.git
synced 2025-05-20 00:27:03 +08:00
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>
This commit is contained in:
@ -8,12 +8,11 @@ import (
|
||||
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/containers/podman/v3/cmd/podman/registry"
|
||||
"github.com/containers/podman/v3/libpod"
|
||||
"github.com/containers/podman/v3/libpod/define"
|
||||
"github.com/containers/podman/v3/pkg/domain/entities"
|
||||
"github.com/containers/podman/v3/pkg/registries"
|
||||
"github.com/containers/podman/v3/pkg/rootless"
|
||||
systemdGen "github.com/containers/podman/v3/pkg/systemd/generate"
|
||||
systemdDefine "github.com/containers/podman/v3/pkg/systemd/define"
|
||||
"github.com/containers/podman/v3/pkg/util"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
@ -732,8 +731,8 @@ func AutocompletePullOption(cmd *cobra.Command, args []string, toComplete string
|
||||
// AutocompleteRestartOption - Autocomplete restart options for create and run command.
|
||||
// -> "always", "no", "on-failure", "unless-stopped"
|
||||
func AutocompleteRestartOption(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
|
||||
restartOptions := []string{libpod.RestartPolicyAlways, libpod.RestartPolicyNo,
|
||||
libpod.RestartPolicyOnFailure, libpod.RestartPolicyUnlessStopped}
|
||||
restartOptions := []string{define.RestartPolicyAlways, define.RestartPolicyNo,
|
||||
define.RestartPolicyOnFailure, define.RestartPolicyUnlessStopped}
|
||||
return restartOptions, cobra.ShellCompDirectiveNoFileComp
|
||||
}
|
||||
|
||||
@ -908,7 +907,7 @@ func AutocompleteEventFilter(cmd *cobra.Command, args []string, toComplete strin
|
||||
// AutocompleteSystemdRestartOptions - Autocomplete systemd restart options.
|
||||
// -> "no", "on-success", "on-failure", "on-abnormal", "on-watchdog", "on-abort", "always"
|
||||
func AutocompleteSystemdRestartOptions(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
|
||||
return systemdGen.RestartPolicies, cobra.ShellCompDirectiveNoFileComp
|
||||
return systemdDefine.RestartPolicies, cobra.ShellCompDirectiveNoFileComp
|
||||
}
|
||||
|
||||
// AutocompleteTrustType - Autocomplete trust type options.
|
||||
|
@ -14,7 +14,7 @@ import (
|
||||
envLib "github.com/containers/podman/v3/pkg/env"
|
||||
ns "github.com/containers/podman/v3/pkg/namespaces"
|
||||
"github.com/containers/podman/v3/pkg/specgen"
|
||||
systemdGen "github.com/containers/podman/v3/pkg/systemd/generate"
|
||||
systemdDefine "github.com/containers/podman/v3/pkg/systemd/define"
|
||||
"github.com/containers/podman/v3/pkg/util"
|
||||
"github.com/docker/go-units"
|
||||
"github.com/opencontainers/runtime-spec/specs-go"
|
||||
@ -342,8 +342,8 @@ func FillOutSpecGen(s *specgen.SpecGenerator, c *ContainerCLIOpts, args []string
|
||||
return errors.Wrapf(err, "unable to process labels")
|
||||
}
|
||||
|
||||
if systemdUnit, exists := osEnv[systemdGen.EnvVariable]; exists {
|
||||
labels[systemdGen.EnvVariable] = systemdUnit
|
||||
if systemdUnit, exists := osEnv[systemdDefine.EnvVariable]; exists {
|
||||
labels[systemdDefine.EnvVariable] = systemdUnit
|
||||
}
|
||||
|
||||
s.Labels = labels
|
||||
|
@ -1,4 +1,4 @@
|
||||
package filters
|
||||
package parse
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
@ -7,7 +7,7 @@ import (
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func ParseFilterArgumentsIntoFilters(filters []string) (url.Values, error) {
|
||||
func FilterArgumentsIntoFilters(filters []string) (url.Values, error) {
|
||||
parsedFilters := make(url.Values)
|
||||
for _, f := range filters {
|
||||
t := strings.SplitN(f, "=", 2)
|
@ -8,11 +8,11 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/containers/common/pkg/completion"
|
||||
"github.com/containers/podman/v3/cmd/podman/parse"
|
||||
"github.com/containers/podman/v3/cmd/podman/registry"
|
||||
"github.com/containers/podman/v3/cmd/podman/utils"
|
||||
"github.com/containers/podman/v3/cmd/podman/validate"
|
||||
"github.com/containers/podman/v3/pkg/domain/entities"
|
||||
dfilters "github.com/containers/podman/v3/pkg/domain/filters"
|
||||
"github.com/docker/go-units"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
@ -80,7 +80,7 @@ Are you sure you want to continue? [y/N] `, volumeString)
|
||||
}
|
||||
}
|
||||
|
||||
pruneOptions.Filters, err = dfilters.ParseFilterArgumentsIntoFilters(filters)
|
||||
pruneOptions.Filters, err = parse.FilterArgumentsIntoFilters(filters)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -9,11 +9,11 @@ import (
|
||||
|
||||
"github.com/containers/common/pkg/completion"
|
||||
"github.com/containers/podman/v3/cmd/podman/common"
|
||||
"github.com/containers/podman/v3/cmd/podman/parse"
|
||||
"github.com/containers/podman/v3/cmd/podman/registry"
|
||||
"github.com/containers/podman/v3/cmd/podman/utils"
|
||||
"github.com/containers/podman/v3/cmd/podman/validate"
|
||||
"github.com/containers/podman/v3/pkg/domain/entities"
|
||||
"github.com/containers/podman/v3/pkg/domain/filters"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
@ -58,14 +58,14 @@ func prune(cmd *cobra.Command, args []string) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
pruneOptions.Filters, err = filters.ParseFilterArgumentsIntoFilters(filter)
|
||||
pruneOptions.Filters, err = parse.FilterArgumentsIntoFilters(filter)
|
||||
if !force {
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
fmt.Println("WARNING! This will remove all volumes not used by at least one container. The following volumes will be removed:")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
listOptions.Filter, err = filters.ParseFilterArgumentsIntoFilters(filter)
|
||||
listOptions.Filter, err = parse.FilterArgumentsIntoFilters(filter)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -84,24 +84,6 @@ func (ns LinuxNS) String() string {
|
||||
}
|
||||
}
|
||||
|
||||
// Valid restart policy types.
|
||||
const (
|
||||
// RestartPolicyNone indicates that no restart policy has been requested
|
||||
// by a container.
|
||||
RestartPolicyNone = ""
|
||||
// RestartPolicyNo is identical in function to RestartPolicyNone.
|
||||
RestartPolicyNo = "no"
|
||||
// RestartPolicyAlways unconditionally restarts the container.
|
||||
RestartPolicyAlways = "always"
|
||||
// RestartPolicyOnFailure restarts the container on non-0 exit code,
|
||||
// with an optional maximum number of retries.
|
||||
RestartPolicyOnFailure = "on-failure"
|
||||
// RestartPolicyUnlessStopped unconditionally restarts unless stopped
|
||||
// by the user. It is identical to Always except with respect to
|
||||
// handling of system restart, which Podman does not yet support.
|
||||
RestartPolicyUnlessStopped = "unless-stopped"
|
||||
)
|
||||
|
||||
// Container is a single OCI container.
|
||||
// All operations on a Container that access state must begin with a call to
|
||||
// syncContainer().
|
||||
|
@ -219,14 +219,14 @@ func (c *Container) shouldRestart() bool {
|
||||
// If we did not get a restart policy match, return false
|
||||
// Do the same if we're not a policy that restarts.
|
||||
if !c.state.RestartPolicyMatch ||
|
||||
c.config.RestartPolicy == RestartPolicyNo ||
|
||||
c.config.RestartPolicy == RestartPolicyNone {
|
||||
c.config.RestartPolicy == define.RestartPolicyNo ||
|
||||
c.config.RestartPolicy == define.RestartPolicyNone {
|
||||
return false
|
||||
}
|
||||
|
||||
// If we're RestartPolicyOnFailure, we need to check retries and exit
|
||||
// code.
|
||||
if c.config.RestartPolicy == RestartPolicyOnFailure {
|
||||
if c.config.RestartPolicy == define.RestartPolicyOnFailure {
|
||||
if c.state.ExitCode == 0 {
|
||||
return false
|
||||
}
|
||||
@ -332,7 +332,7 @@ func (c *Container) syncContainer() error {
|
||||
// Only save back to DB if state changed
|
||||
if c.state.State != oldState {
|
||||
// Check for a restart policy match
|
||||
if c.config.RestartPolicy != RestartPolicyNone && c.config.RestartPolicy != RestartPolicyNo &&
|
||||
if c.config.RestartPolicy != define.RestartPolicyNone && c.config.RestartPolicy != define.RestartPolicyNo &&
|
||||
(oldState == define.ContainerStateRunning || oldState == define.ContainerStatePaused) &&
|
||||
(c.state.State == define.ContainerStateStopped || c.state.State == define.ContainerStateExited) &&
|
||||
!c.state.StoppedByUser {
|
||||
|
19
libpod/define/container.go
Normal file
19
libpod/define/container.go
Normal file
@ -0,0 +1,19 @@
|
||||
package define
|
||||
|
||||
// Valid restart policy types.
|
||||
const (
|
||||
// RestartPolicyNone indicates that no restart policy has been requested
|
||||
// by a container.
|
||||
RestartPolicyNone = ""
|
||||
// RestartPolicyNo is identical in function to RestartPolicyNone.
|
||||
RestartPolicyNo = "no"
|
||||
// RestartPolicyAlways unconditionally restarts the container.
|
||||
RestartPolicyAlways = "always"
|
||||
// RestartPolicyOnFailure restarts the container on non-0 exit code,
|
||||
// with an optional maximum number of retries.
|
||||
RestartPolicyOnFailure = "on-failure"
|
||||
// RestartPolicyUnlessStopped unconditionally restarts unless stopped
|
||||
// by the user. It is identical to Always except with respect to
|
||||
// handling of system restart, which Podman does not yet support.
|
||||
RestartPolicyUnlessStopped = "unless-stopped"
|
||||
)
|
@ -83,11 +83,11 @@ func (p *Pod) GenerateForKube() (*v1.Pod, []v1.ServicePort, error) {
|
||||
for _, ctr := range allContainers {
|
||||
if !ctr.IsInfra() {
|
||||
switch ctr.Config().RestartPolicy {
|
||||
case RestartPolicyAlways:
|
||||
case define.RestartPolicyAlways:
|
||||
pod.Spec.RestartPolicy = v1.RestartPolicyAlways
|
||||
case RestartPolicyOnFailure:
|
||||
case define.RestartPolicyOnFailure:
|
||||
pod.Spec.RestartPolicy = v1.RestartPolicyOnFailure
|
||||
case RestartPolicyNo:
|
||||
case define.RestartPolicyNo:
|
||||
pod.Spec.RestartPolicy = v1.RestartPolicyNever
|
||||
default: // some pod create from cmdline, such as "", so set it to Never
|
||||
pod.Spec.RestartPolicy = v1.RestartPolicyNever
|
||||
|
@ -1364,7 +1364,7 @@ func WithRestartPolicy(policy string) CtrCreateOption {
|
||||
}
|
||||
|
||||
switch policy {
|
||||
case RestartPolicyNone, RestartPolicyNo, RestartPolicyOnFailure, RestartPolicyAlways, RestartPolicyUnlessStopped:
|
||||
case define.RestartPolicyNone, define.RestartPolicyNo, define.RestartPolicyOnFailure, define.RestartPolicyAlways, define.RestartPolicyUnlessStopped:
|
||||
ctr.config.RestartPolicy = policy
|
||||
default:
|
||||
return errors.Wrapf(define.ErrInvalidArg, "%q is not a valid restart policy", policy)
|
||||
|
@ -12,6 +12,7 @@ import (
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/containers/podman/v3/libpod/define"
|
||||
"github.com/containers/podman/v3/libpod/events"
|
||||
"github.com/containers/podman/v3/libpod/network"
|
||||
"github.com/containers/podman/v3/libpod/shutdown"
|
||||
"github.com/containers/podman/v3/pkg/cgroups"
|
||||
"github.com/containers/podman/v3/pkg/domain/entities/reports"
|
||||
@ -203,7 +204,7 @@ func (r *Runtime) setupContainer(ctx context.Context, ctr *Container) (_ *Contai
|
||||
if len(ctr.config.Networks) > 0 {
|
||||
netNames := make([]string, 0, len(ctr.config.Networks))
|
||||
for _, nameOrID := range ctr.config.Networks {
|
||||
netName, err := normalizeNetworkName(r.config, nameOrID)
|
||||
netName, err := network.NormalizeName(r.config, nameOrID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -1,12 +0,0 @@
|
||||
// +build linux
|
||||
|
||||
package libpod
|
||||
|
||||
import (
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/containers/podman/v3/libpod/network"
|
||||
)
|
||||
|
||||
func normalizeNetworkName(config *config.Config, nameOrID string) (string, error) {
|
||||
return network.NormalizeName(config, nameOrID)
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
// +build !linux
|
||||
|
||||
package libpod
|
||||
|
||||
import (
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/containers/podman/v3/libpod/define"
|
||||
)
|
||||
|
||||
func normalizeNetworkName(config *config.Config, nameOrID string) (string, error) {
|
||||
return "", define.ErrNotImplemented
|
||||
}
|
@ -13,7 +13,7 @@ import (
|
||||
"github.com/containers/podman/v3/libpod/define"
|
||||
"github.com/containers/podman/v3/libpod/image"
|
||||
"github.com/containers/podman/v3/pkg/systemd"
|
||||
systemdGen "github.com/containers/podman/v3/pkg/systemd/generate"
|
||||
systemdDefine "github.com/containers/podman/v3/pkg/systemd/define"
|
||||
"github.com/containers/podman/v3/pkg/util"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/sirupsen/logrus"
|
||||
@ -178,10 +178,10 @@ func AutoUpdate(runtime *libpod.Runtime, options Options) ([]string, []error) {
|
||||
updatedUnits := []string{}
|
||||
for _, ctr := range containersToRestart {
|
||||
labels := ctr.Labels()
|
||||
unit, exists := labels[systemdGen.EnvVariable]
|
||||
unit, exists := labels[systemdDefine.EnvVariable]
|
||||
if !exists {
|
||||
// Shouldn't happen but let's be sure of it.
|
||||
errs = append(errs, errors.Errorf("error auto-updating container %q: no %s label found", ctr.ID(), systemdGen.EnvVariable))
|
||||
errs = append(errs, errors.Errorf("error auto-updating container %q: no %s label found", ctr.ID(), systemdDefine.EnvVariable))
|
||||
continue
|
||||
}
|
||||
_, err := conn.RestartUnit(unit, "replace", nil)
|
||||
|
@ -173,13 +173,13 @@ func (ic *ContainerEngine) playKubePod(ctx context.Context, podName string, podY
|
||||
var ctrRestartPolicy string
|
||||
switch podYAML.Spec.RestartPolicy {
|
||||
case v1.RestartPolicyAlways:
|
||||
ctrRestartPolicy = libpod.RestartPolicyAlways
|
||||
ctrRestartPolicy = define.RestartPolicyAlways
|
||||
case v1.RestartPolicyOnFailure:
|
||||
ctrRestartPolicy = libpod.RestartPolicyOnFailure
|
||||
ctrRestartPolicy = define.RestartPolicyOnFailure
|
||||
case v1.RestartPolicyNever:
|
||||
ctrRestartPolicy = libpod.RestartPolicyNo
|
||||
ctrRestartPolicy = define.RestartPolicyNo
|
||||
default: // Default to Always
|
||||
ctrRestartPolicy = libpod.RestartPolicyAlways
|
||||
ctrRestartPolicy = define.RestartPolicyAlways
|
||||
}
|
||||
|
||||
configMaps := []v1.ConfigMap{}
|
||||
|
9
pkg/systemd/define/const.go
Normal file
9
pkg/systemd/define/const.go
Normal file
@ -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"}
|
@ -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
|
||||
}
|
||||
|
@ -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}}}}"
|
||||
|
@ -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,
|
||||
|
@ -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}}}}"
|
||||
|
Reference in New Issue
Block a user