aboutsummaryrefslogtreecommitdiff
path: root/pkg/domain
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/domain')
-rw-r--r--pkg/domain/entities/engine.go1
-rw-r--r--pkg/domain/entities/events.go2
-rw-r--r--pkg/domain/entities/pods.go12
-rw-r--r--pkg/domain/infra/abi/images.go50
4 files changed, 42 insertions, 23 deletions
diff --git a/pkg/domain/entities/engine.go b/pkg/domain/entities/engine.go
index a8023f7cf..055af7ff9 100644
--- a/pkg/domain/entities/engine.go
+++ b/pkg/domain/entities/engine.go
@@ -40,6 +40,7 @@ type PodmanConfig struct {
Identity string // ssh identity for connecting to server
MaxWorks int // maximum number of parallel threads
MemoryProfile string // Hidden: Should memory profile be taken
+ NoOut bool // Don't output to stdout
RegistriesConf string // allows for specifying a custom registries.conf
Remote bool // Connection to Podman API Service will use RESTful API
RuntimePath string // --runtime flag will set Engine.RuntimePath
diff --git a/pkg/domain/entities/events.go b/pkg/domain/entities/events.go
index 73a375b94..fa815d7b9 100644
--- a/pkg/domain/entities/events.go
+++ b/pkg/domain/entities/events.go
@@ -42,7 +42,7 @@ func ConvertToLibpodEvent(e Event) *libpodEvents.Event {
Image: image,
Name: name,
Status: status,
- Time: time.Unix(e.Time, e.TimeNano),
+ Time: time.Unix(0, e.TimeNano),
Type: t,
Details: libpodEvents.Details{
Attributes: details,
diff --git a/pkg/domain/entities/pods.go b/pkg/domain/entities/pods.go
index 1b5a1be51..cc9476d79 100644
--- a/pkg/domain/entities/pods.go
+++ b/pkg/domain/entities/pods.go
@@ -139,6 +139,7 @@ type PodCreateOptions struct {
Volume []string `json:"volume,omitempty"`
VolumesFrom []string `json:"volumes_from,omitempty"`
SecurityOpt []string `json:"security_opt,omitempty"`
+ Sysctl []string `json:"sysctl,omitempty"`
}
// PodLogsOptions describes the options to extract pod logs.
@@ -240,7 +241,7 @@ type ContainerCreateOptions struct {
StorageOpts []string
SubUIDName string
SubGIDName string
- Sysctl []string
+ Sysctl []string `json:"sysctl,omitempty"`
Systemd string
Timeout uint
TLSVerify commonFlag.OptionalBool
@@ -360,6 +361,15 @@ func ToPodSpecGen(s specgen.PodSpecGenerator, p *PodCreateOptions) (*specgen.Pod
}
}
s.Userns = p.Userns
+ sysctl := map[string]string{}
+ if ctl := p.Sysctl; len(ctl) > 0 {
+ sysctl, err = util.ValidateSysctls(ctl)
+ if err != nil {
+ return nil, err
+ }
+ }
+ s.Sysctl = sysctl
+
return &s, nil
}
diff --git a/pkg/domain/infra/abi/images.go b/pkg/domain/infra/abi/images.go
index 84c83ea8e..592e0f4e3 100644
--- a/pkg/domain/infra/abi/images.go
+++ b/pkg/domain/infra/abi/images.go
@@ -745,11 +745,17 @@ func putSignature(manifestBlob []byte, mech signature.SigningMechanism, sigStore
// TransferRootless creates new podman processes using exec.Command and sudo, transferring images between the given source and destination users
func transferRootless(source entities.ImageScpOptions, dest entities.ImageScpOptions, podman string, parentFlags []string) error {
var cmdSave *exec.Cmd
- saveCommand := parentFlags
- saveCommand = append(saveCommand, []string{"save", "--output", source.File, source.Image}...)
+ saveCommand, loadCommand := parentFlags, parentFlags
+ saveCommand = append(saveCommand, []string{"save"}...)
+ loadCommand = append(loadCommand, []string{"load"}...)
+ if source.Quiet {
+ saveCommand = append(saveCommand, "-q")
+ loadCommand = append(loadCommand, "-q")
+ }
+
+ saveCommand = append(saveCommand, []string{"--output", source.File, source.Image}...)
- loadCommand := parentFlags
- loadCommand = append(loadCommand, []string{"load", "--input", dest.File}...)
+ loadCommand = append(loadCommand, []string{"--input", dest.File}...)
if source.User == "root" {
cmdSave = exec.Command("sudo", podman)
@@ -757,7 +763,7 @@ func transferRootless(source entities.ImageScpOptions, dest entities.ImageScpOpt
cmdSave = exec.Command(podman)
}
cmdSave = utils.CreateSCPCommand(cmdSave, saveCommand)
- logrus.Debug("Executing save command")
+ logrus.Debugf("Executing save command: %q", cmdSave)
err := cmdSave.Run()
if err != nil {
return err
@@ -770,20 +776,22 @@ func transferRootless(source entities.ImageScpOptions, dest entities.ImageScpOpt
cmdLoad = exec.Command(podman)
}
cmdLoad = utils.CreateSCPCommand(cmdLoad, loadCommand)
- logrus.Debug("Executing load command")
- err = cmdLoad.Run()
- if err != nil {
- return err
- }
- return nil
+ logrus.Debugf("Executing load command: %q", cmdLoad)
+ return cmdLoad.Run()
}
-// TransferRootless creates new podman processes using exec.Command and su/machinectl, transferring images between the given source and destination users
+// TransferRootful creates new podman processes using exec.Command and su/machinectl, transferring images between the given source and destination users
func transferRootful(source entities.ImageScpOptions, dest entities.ImageScpOptions, podman string, parentFlags []string) error {
basicCommand := []string{podman}
basicCommand = append(basicCommand, parentFlags...)
- saveCommand := append(basicCommand, []string{"save", "--output", source.File, source.Image}...)
- loadCommand := append(basicCommand, []string{"load", "--input", dest.File}...)
+ saveCommand := append(basicCommand, "save")
+ loadCommand := append(basicCommand, "load")
+ if source.Quiet {
+ saveCommand = append(saveCommand, "-q")
+ loadCommand = append(loadCommand, "-q")
+ }
+ saveCommand = append(saveCommand, []string{"--output", source.File, source.Image}...)
+ loadCommand = append(loadCommand, []string{"--input", dest.File}...)
save := []string{strings.Join(saveCommand, " ")}
load := []string{strings.Join(loadCommand, " ")}
@@ -846,18 +854,18 @@ func lookupUser(u string) (*user.User, error) {
func execSu(execUser *user.User, command []string) error {
cmd := exec.Command("su", "-l", execUser.Username, "--command")
cmd = utils.CreateSCPCommand(cmd, command)
- logrus.Debug("Executing command su")
+ logrus.Debugf("Executing via su: %q", cmd)
return cmd.Run()
}
func execMachine(execUser *user.User, command []string, machinectl string) error {
- var cmd *exec.Cmd
+ verb := machinectl
+ args := []string{"shell", "-q", execUser.Username + "@.host"}
if execUser.Uid == "0" {
- cmd = exec.Command("sudo", machinectl, "shell", "-q", execUser.Username+"@.host")
- } else {
- cmd = exec.Command(machinectl, "shell", "-q", execUser.Username+"@.host")
+ args = append([]string{verb}, args...)
+ verb = "sudo"
}
- cmd = utils.CreateSCPCommand(cmd, command)
- logrus.Debug("Executing command machinectl")
+ cmd := utils.CreateSCPCommand(exec.Command(verb, args...), command)
+ logrus.Debugf("Executing via machinectl: %q", cmd)
return cmd.Run()
}