runtime: pass down the context

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
Giuseppe Scrivano 2019-04-16 14:12:12 +02:00
parent 525f0b30ac
commit f49e0c19ed
No known key found for this signature in database
GPG Key ID: E4730F97F60286ED
80 changed files with 109 additions and 89 deletions

View File

@ -47,7 +47,7 @@ func attachCmd(c *cliconfig.AttachValues) error {
if remoteclient && len(c.InputArgs) != 1 { if remoteclient && len(c.InputArgs) != 1 {
return errors.Errorf("attach requires the name or id of one running container") return errors.Errorf("attach requires the name or id of one running container")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating runtime") return errors.Wrapf(err, "error creating runtime")
} }

View File

@ -206,7 +206,7 @@ func buildCmd(c *cliconfig.BuildValues) error {
dockerfiles = append(dockerfiles, filepath.Join(contextDir, "Dockerfile")) dockerfiles = append(dockerfiles, filepath.Join(contextDir, "Dockerfile"))
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -54,7 +54,7 @@ func checkpointCmd(c *cliconfig.CheckpointValues) error {
return errors.New("checkpointing a container requires root") return errors.New("checkpointing a container requires root")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -49,7 +49,7 @@ func init() {
} }
func cleanupCmd(c *cliconfig.CleanupValues) error { func cleanupCmd(c *cliconfig.CleanupValues) error {
runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) runtime, err := libpodruntime.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -52,7 +52,7 @@ func init() {
} }
func commitCmd(c *cliconfig.CommitValues) error { func commitCmd(c *cliconfig.CommitValues) error {
runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) runtime, err := libpodruntime.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -75,7 +75,7 @@ func pruneContainers(runtime *adapter.LocalRuntime, ctx context.Context, maxWork
} }
func pruneContainersCmd(c *cliconfig.PruneContainersValues) error { func pruneContainersCmd(c *cliconfig.PruneContainersValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -58,7 +58,7 @@ func cpCmd(c *cliconfig.CpValues) error {
return errors.Errorf("you must provide a source path and a destination path") return errors.Errorf("you must provide a source path and a destination path")
} }
runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) runtime, err := libpodruntime.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -52,7 +52,7 @@ func createCmd(c *cliconfig.CreateValues) error {
return err return err
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -87,7 +87,7 @@ func diffCmd(c *cliconfig.DiffValues) error {
return errors.Errorf("container, image, or layer name must be specified: podman diff [options [...]] ID-NAME") return errors.Errorf("container, image, or layer name must be specified: podman diff [options [...]] ID-NAME")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -40,7 +40,7 @@ func init() {
} }
func eventsCmd(c *cliconfig.EventValues) error { func eventsCmd(c *cliconfig.EventValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -68,7 +68,7 @@ func execCmd(c *cliconfig.ExecValues) error {
argStart = 0 argStart = 0
} }
cmd := args[argStart:] cmd := args[argStart:]
runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) runtime, err := libpodruntime.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -86,7 +86,7 @@ func imageExistsCmd(c *cliconfig.ImageExistsValues) error {
if len(args) > 1 || len(args) < 1 { if len(args) > 1 || len(args) < 1 {
return errors.New("you may only check for the existence of one image at a time") return errors.New("you may only check for the existence of one image at a time")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }
@ -107,7 +107,7 @@ func containerExistsCmd(c *cliconfig.ContainerExistsValues) error {
if len(args) > 1 || len(args) < 1 { if len(args) > 1 || len(args) < 1 {
return errors.New("you may only check for the existence of one container at a time") return errors.New("you may only check for the existence of one container at a time")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }
@ -126,7 +126,7 @@ func podExistsCmd(c *cliconfig.PodExistsValues) error {
if len(args) > 1 || len(args) < 1 { if len(args) > 1 || len(args) < 1 {
return errors.New("you may only check for the existence of one pod at a time") return errors.New("you may only check for the existence of one pod at a time")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -41,7 +41,7 @@ func init() {
// exportCmd saves a container to a tarball on disk // exportCmd saves a container to a tarball on disk
func exportCmd(c *cliconfig.ExportValues) error { func exportCmd(c *cliconfig.ExportValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -54,7 +54,7 @@ func generateKubeYAMLCmd(c *cliconfig.GenerateKubeValues) error {
return errors.Errorf("you must provide exactly one container|pod ID or name") return errors.Errorf("you must provide exactly one container|pod ID or name")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -38,7 +38,7 @@ func init() {
} }
func healthCheckCmd(c *cliconfig.HealthCheckValues) error { func healthCheckCmd(c *cliconfig.HealthCheckValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrap(err, "could not get runtime") return errors.Wrap(err, "could not get runtime")
} }

View File

@ -67,7 +67,7 @@ func init() {
} }
func historyCmd(c *cliconfig.HistoryValues) error { func historyCmd(c *cliconfig.HistoryValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -134,7 +134,7 @@ func imagesCmd(c *cliconfig.ImagesValues) error {
image string image string
) )
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "Could not get runtime") return errors.Wrapf(err, "Could not get runtime")
} }

View File

@ -37,7 +37,7 @@ func init() {
} }
func pruneImagesCmd(c *cliconfig.PruneImagesValues) error { func pruneImagesCmd(c *cliconfig.PruneImagesValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -45,7 +45,7 @@ func init() {
} }
func importCmd(c *cliconfig.ImportValues) error { func importCmd(c *cliconfig.ImportValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -50,7 +50,7 @@ func infoCmd(c *cliconfig.InfoValues) error {
info := map[string]interface{}{} info := map[string]interface{}{}
remoteClientInfo := map[string]interface{}{} remoteClientInfo := map[string]interface{}{}
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -84,7 +84,7 @@ func inspectCmd(c *cliconfig.InspectValues) error {
return errors.Errorf("you cannot provide additional arguments with --latest") return errors.Errorf("you cannot provide additional arguments with --latest")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -59,7 +59,7 @@ func killCmd(c *cliconfig.KillValues) error {
return err return err
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -1,6 +1,8 @@
package libpodruntime package libpodruntime
import ( import (
"context"
"github.com/containers/libpod/cmd/podman/cliconfig" "github.com/containers/libpod/cmd/podman/cliconfig"
"github.com/containers/libpod/libpod" "github.com/containers/libpod/libpod"
"github.com/containers/libpod/pkg/rootless" "github.com/containers/libpod/pkg/rootless"
@ -10,21 +12,21 @@ import (
) )
// GetRuntimeMigrate gets a libpod runtime that will perform a migration of existing containers // GetRuntimeMigrate gets a libpod runtime that will perform a migration of existing containers
func GetRuntimeMigrate(c *cliconfig.PodmanCommand) (*libpod.Runtime, error) { func GetRuntimeMigrate(ctx context.Context, c *cliconfig.PodmanCommand) (*libpod.Runtime, error) {
return getRuntime(c, false, true) return getRuntime(ctx, c, false, true)
} }
// GetRuntimeRenumber gets a libpod runtime that will perform a lock renumber // GetRuntimeRenumber gets a libpod runtime that will perform a lock renumber
func GetRuntimeRenumber(c *cliconfig.PodmanCommand) (*libpod.Runtime, error) { func GetRuntimeRenumber(ctx context.Context, c *cliconfig.PodmanCommand) (*libpod.Runtime, error) {
return getRuntime(c, true, false) return getRuntime(ctx, c, true, false)
} }
// GetRuntime generates a new libpod runtime configured by command line options // GetRuntime generates a new libpod runtime configured by command line options
func GetRuntime(c *cliconfig.PodmanCommand) (*libpod.Runtime, error) { func GetRuntime(ctx context.Context, c *cliconfig.PodmanCommand) (*libpod.Runtime, error) {
return getRuntime(c, false, false) return getRuntime(ctx, c, false, false)
} }
func getRuntime(c *cliconfig.PodmanCommand, renumber bool, migrate bool) (*libpod.Runtime, error) { func getRuntime(ctx context.Context, c *cliconfig.PodmanCommand, renumber bool, migrate bool) (*libpod.Runtime, error) {
options := []libpod.RuntimeOption{} options := []libpod.RuntimeOption{}
storageOpts := storage.StoreOptions{} storageOpts := storage.StoreOptions{}
storageSet := false storageSet := false
@ -76,6 +78,8 @@ func getRuntime(c *cliconfig.PodmanCommand, renumber bool, migrate bool) (*libpo
options = append(options, libpod.WithRenumber()) options = append(options, libpod.WithRenumber())
} }
options = append(options, libpod.WithContext(ctx))
// Only set this if the user changes storage config on the command line // Only set this if the user changes storage config on the command line
if storageSet { if storageSet {
options = append(options, libpod.WithStorageConfig(storageOpts)) options = append(options, libpod.WithStorageConfig(storageOpts))

View File

@ -58,7 +58,7 @@ func loadCmd(c *cliconfig.LoadValues) error {
return errors.New("too many arguments. Requires exactly 1") return errors.New("too many arguments. Requires exactly 1")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -64,7 +64,7 @@ func init() {
func logsCmd(c *cliconfig.LogsValues) error { func logsCmd(c *cliconfig.LogsValues) error {
var err error var err error
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -112,7 +112,7 @@ func setupRootless(cmd *cobra.Command, args []string) error {
MainGlobalOpts, MainGlobalOpts,
remoteclient, remoteclient,
} }
runtime, err := libpodruntime.GetRuntime(&podmanCmd) runtime, err := libpodruntime.GetRuntime(getContext(), &podmanCmd)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -61,7 +61,7 @@ type jsonMountPoint struct {
} }
func mountCmd(c *cliconfig.MountValues) error { func mountCmd(c *cliconfig.MountValues) error {
runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) runtime, err := libpodruntime.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -43,7 +43,7 @@ func pauseCmd(c *cliconfig.PauseValues) error {
return errors.New("pause is not supported for rootless containers") return errors.New("pause is not supported for rootless containers")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -75,7 +75,7 @@ func playKubeCmd(c *cliconfig.KubePlayValues) error {
} }
ctx := getContext() ctx := getContext()
runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) runtime, err := libpodruntime.GetRuntime(ctx, &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -62,7 +62,7 @@ func podCreateCmd(c *cliconfig.PodCreateValues) error {
podIdFile *os.File podIdFile *os.File
) )
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -49,7 +49,7 @@ func podInspectCmd(c *cliconfig.PodInspectValues) error {
return errors.Errorf("you must provide the name or id of a pod") return errors.Errorf("you must provide the name or id of a pod")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -49,7 +49,7 @@ func init() {
// podKillCmd kills one or more pods with a signal // podKillCmd kills one or more pods with a signal
func podKillCmd(c *cliconfig.PodKillValues) error { func podKillCmd(c *cliconfig.PodKillValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -45,7 +45,7 @@ func init() {
func podPauseCmd(c *cliconfig.PodPauseValues) error { func podPauseCmd(c *cliconfig.PodPauseValues) error {
var lastError error var lastError error
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -157,7 +157,7 @@ func podPsCmd(c *cliconfig.PodPsValues) error {
return errors.Wrapf(err, "error with flags passed") return errors.Wrapf(err, "error with flags passed")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -47,7 +47,7 @@ func init() {
func podRestartCmd(c *cliconfig.PodRestartValues) error { func podRestartCmd(c *cliconfig.PodRestartValues) error {
var lastError error var lastError error
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -47,7 +47,7 @@ func init() {
// podRmCmd deletes pods // podRmCmd deletes pods
func podRmCmd(c *cliconfig.PodRmValues) error { func podRmCmd(c *cliconfig.PodRmValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -45,7 +45,7 @@ func init() {
} }
func podStartCmd(c *cliconfig.PodStartValues) error { func podStartCmd(c *cliconfig.PodStartValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -78,7 +78,7 @@ func podStatsCmd(c *cliconfig.PodStatsValues) error {
all = true all = true
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -47,7 +47,7 @@ func init() {
} }
func podStopCmd(c *cliconfig.PodStopValues) error { func podStopCmd(c *cliconfig.PodStopValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -67,7 +67,7 @@ func podTopCmd(c *cliconfig.PodTopValues) error {
return errors.Errorf("you must provide the name or id of a running pod") return errors.Errorf("you must provide the name or id of a running pod")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -46,7 +46,7 @@ func init() {
func podUnpauseCmd(c *cliconfig.PodUnpauseValues) error { func podUnpauseCmd(c *cliconfig.PodUnpauseValues) error {
var lastError error var lastError error
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -36,7 +36,7 @@ func init() {
} }
func podPruneCmd(c *cliconfig.PodPruneValues) error { func podPruneCmd(c *cliconfig.PodPruneValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -98,7 +98,7 @@ func portCmd(c *cliconfig.PortValues) error {
} }
} }
runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) runtime, err := libpodruntime.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -211,7 +211,7 @@ func psCmd(c *cliconfig.PsValues) error {
return errors.Wrapf(err, "error with flags passed") return errors.Wrapf(err, "error with flags passed")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -73,7 +73,7 @@ func pullCmd(c *cliconfig.PullValues) (retError error) {
defer span.Finish() defer span.Finish()
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")

View File

@ -100,7 +100,7 @@ func pushCmd(c *cliconfig.PushValues) error {
registryCreds = creds registryCreds = creds
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not create runtime") return errors.Wrapf(err, "could not create runtime")
} }

View File

@ -38,7 +38,7 @@ func init() {
} }
func refreshCmd(c *cliconfig.RefreshValues) error { func refreshCmd(c *cliconfig.RefreshValues) error {
runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) runtime, err := libpodruntime.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -51,7 +51,7 @@ func restartCmd(c *cliconfig.RestartValues) error {
return errors.Wrapf(libpod.ErrInvalidArg, "you must provide at least one container name or ID") return errors.Wrapf(libpod.ErrInvalidArg, "you must provide at least one container name or ID")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -54,7 +54,7 @@ func restoreCmd(c *cliconfig.RestoreValues) error {
return errors.New("restoring a container requires root") return errors.New("restoring a container requires root")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -48,7 +48,7 @@ func init() {
// rmCmd removes one or more containers // rmCmd removes one or more containers
func rmCmd(c *cliconfig.RmValues) error { func rmCmd(c *cliconfig.RmValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -51,7 +51,7 @@ func rmiCmd(c *cliconfig.RmiValues) error {
ctx := getContext() ctx := getContext()
removeAll := c.All removeAll := c.All
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -48,7 +48,7 @@ func runCmd(c *cliconfig.RunValues) error {
return err return err
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -85,7 +85,7 @@ func runlabelCmd(c *cliconfig.RunlabelValues) error {
} }
opts := make(map[string]string) opts := make(map[string]string)
runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) runtime, err := libpodruntime.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -70,7 +70,7 @@ func saveCmd(c *cliconfig.SaveValues) error {
return errors.Errorf("need at least 1 argument") return errors.Errorf("need at least 1 argument")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not create runtime") return errors.Wrapf(err, "could not create runtime")
} }

View File

@ -56,7 +56,7 @@ func signCmd(c *cliconfig.SignValues) error {
if len(args) < 1 { if len(args) < 1 {
return errors.Errorf("at least one image name must be specified") return errors.Errorf("at least one image name must be specified")
} }
runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) runtime, err := libpodruntime.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not create runtime") return errors.Wrapf(err, "could not create runtime")
} }

View File

@ -65,7 +65,7 @@ func startCmd(c *cliconfig.StartValues) error {
return errors.Wrapf(libpod.ErrInvalidArg, "you cannot use sig-proxy without --attach") return errors.Wrapf(libpod.ErrInvalidArg, "you cannot use sig-proxy without --attach")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -88,7 +88,7 @@ func statsCmd(c *cliconfig.StatsValues) error {
return errors.Errorf("you must specify --all, --latest, or at least one container") return errors.Errorf("you must specify --all, --latest, or at least one container")
} }
runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) runtime, err := libpodruntime.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -56,7 +56,7 @@ func stopCmd(c *cliconfig.StopValues) error {
defer span.Finish() defer span.Finish()
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -99,7 +99,7 @@ func init() {
} }
func dfSystemCmd(c *cliconfig.SystemDfValues) error { func dfSystemCmd(c *cliconfig.SystemDfValues) error {
runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) runtime, err := libpodruntime.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "Could not get runtime") return errors.Wrapf(err, "Could not get runtime")
} }

View File

@ -38,7 +38,7 @@ func migrateCmd(c *cliconfig.SystemMigrateValues) error {
// We need to pass one extra option to NewRuntime. // We need to pass one extra option to NewRuntime.
// This will inform the OCI runtime to start a migrate. // This will inform the OCI runtime to start a migrate.
// That's controlled by the last argument to GetRuntime. // That's controlled by the last argument to GetRuntime.
r, err := libpodruntime.GetRuntimeMigrate(&c.PodmanCommand) r, err := libpodruntime.GetRuntimeMigrate(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error migrating containers") return errors.Wrapf(err, "error migrating containers")
} }

View File

@ -72,7 +72,7 @@ Are you sure you want to continue? [y/N] `, volumeString)
} }
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -40,7 +40,7 @@ func renumberCmd(c *cliconfig.SystemRenumberValues) error {
// We need to pass one extra option to NewRuntime. // We need to pass one extra option to NewRuntime.
// This will inform the OCI runtime to start a renumber. // This will inform the OCI runtime to start a renumber.
// That's controlled by the last argument to GetRuntime. // That's controlled by the last argument to GetRuntime.
r, err := libpodruntime.GetRuntimeRenumber(&c.PodmanCommand) r, err := libpodruntime.GetRuntimeRenumber(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error renumbering locks") return errors.Wrapf(err, "error renumbering locks")
} }

View File

@ -38,7 +38,7 @@ func tagCmd(c *cliconfig.TagValues) error {
if len(args) < 2 { if len(args) < 2 {
return errors.Errorf("image name and at least one new name must be specified") return errors.Errorf("image name and at least one new name must be specified")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not create runtime") return errors.Wrapf(err, "could not create runtime")
} }

View File

@ -76,7 +76,7 @@ func topCmd(c *cliconfig.TopValues) error {
return errors.Errorf("you must provide the name or id of a running container") return errors.Errorf("you must provide the name or id of a running container")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -51,7 +51,7 @@ func treeCmd(c *cliconfig.TreeValues) error {
return errors.Errorf("you must provide at most 1 argument") return errors.Errorf("you must provide at most 1 argument")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -74,7 +74,7 @@ File(s) must exist before using this command`)
} }
func showTrustCmd(c *cliconfig.ShowTrustValues) error { func showTrustCmd(c *cliconfig.ShowTrustValues) error {
runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) runtime, err := libpodruntime.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not create runtime") return errors.Wrapf(err, "could not create runtime")
} }
@ -131,7 +131,7 @@ func showTrustCmd(c *cliconfig.ShowTrustValues) error {
} }
func setTrustCmd(c *cliconfig.SetTrustValues) error { func setTrustCmd(c *cliconfig.SetTrustValues) error {
runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) runtime, err := libpodruntime.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not create runtime") return errors.Wrapf(err, "could not create runtime")
} }

View File

@ -48,7 +48,7 @@ func init() {
} }
func umountCmd(c *cliconfig.UmountValues) error { func umountCmd(c *cliconfig.UmountValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating runtime") return errors.Wrapf(err, "error creating runtime")
} }

View File

@ -42,7 +42,7 @@ func unpauseCmd(c *cliconfig.UnpauseValues) error {
return errors.New("unpause is not supported for rootless containers") return errors.New("unpause is not supported for rootless containers")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "could not get runtime") return errors.Wrapf(err, "could not get runtime")
} }

View File

@ -55,7 +55,7 @@ func varlinkCmd(c *cliconfig.VarlinkValues) error {
timeout := time.Duration(c.Timeout) * time.Millisecond timeout := time.Duration(c.Timeout) * time.Millisecond
// Create a single runtime for varlink // Create a single runtime for varlink
runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) runtime, err := libpodruntime.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -42,7 +42,7 @@ func init() {
} }
func volumeCreateCmd(c *cliconfig.VolumeCreateValues) error { func volumeCreateCmd(c *cliconfig.VolumeCreateValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -43,7 +43,7 @@ func volumeInspectCmd(c *cliconfig.VolumeInspectValues) error {
return errors.New("provide one or more volume names or use --all") return errors.New("provide one or more volume names or use --all")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -72,7 +72,7 @@ func init() {
} }
func volumeLsCmd(c *cliconfig.VolumeLsValues) error { func volumeLsCmd(c *cliconfig.VolumeLsValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -63,7 +63,7 @@ func volumePrune(runtime *adapter.LocalRuntime, ctx context.Context) error {
} }
func volumePruneCmd(c *cliconfig.VolumePruneValues) error { func volumePruneCmd(c *cliconfig.VolumePruneValues) error {
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -47,7 +47,7 @@ func volumeRmCmd(c *cliconfig.VolumeRmValues) error {
return errors.New("choose either one or more volumes or all") return errors.New("choose either one or more volumes or all")
} }
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating libpod runtime") return errors.Wrapf(err, "error creating libpod runtime")
} }

View File

@ -51,7 +51,7 @@ func waitCmd(c *cliconfig.WaitValues) error {
} }
interval := time.Duration(c.Interval) * time.Millisecond interval := time.Duration(c.Interval) * time.Millisecond
runtime, err := adapter.GetRuntime(&c.PodmanCommand) runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil { if err != nil {
return errors.Wrapf(err, "error creating runtime") return errors.Wrapf(err, "error creating runtime")
} }

View File

@ -1,6 +1,7 @@
package libpod package libpod
import ( import (
"context"
"net" "net"
"os" "os"
"path/filepath" "path/filepath"
@ -466,6 +467,19 @@ func WithShmDir(dir string) CtrCreateOption {
} }
} }
// WithContext sets the context to use.
func WithContext(ctx context.Context) RuntimeOption {
return func(rt *Runtime) error {
if rt.valid {
return ErrRuntimeFinalized
}
rt.ctx = ctx
return nil
}
}
// WithSystemd turns on systemd mode in the container // WithSystemd turns on systemd mode in the container
func WithSystemd() CtrCreateOption { func WithSystemd() CtrCreateOption {
return func(ctr *Container) error { return func(ctr *Container) error {

View File

@ -1,6 +1,7 @@
package libpod package libpod
import ( import (
"context"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"os" "os"
@ -111,6 +112,8 @@ type Runtime struct {
// mechanism to read and write even logs // mechanism to read and write even logs
eventer events.Eventer eventer events.Eventer
ctx context.Context
} }
// OCIRuntimePath contains information about an OCI runtime. // OCIRuntimePath contains information about an OCI runtime.

View File

@ -1,7 +1,6 @@
package libpod package libpod
import ( import (
"context"
"path/filepath" "path/filepath"
"github.com/pkg/errors" "github.com/pkg/errors"
@ -39,7 +38,7 @@ func (r *Runtime) migrate() error {
} }
for _, ctr := range runningContainers { for _, ctr := range runningContainers {
if err := ctr.Start(context.Background(), true); err != nil { if err := ctr.Start(r.ctx, true); err != nil {
logrus.Errorf("error restarting container %s", ctr.ID()) logrus.Errorf("error restarting container %s", ctr.ID())
} }
} }

View File

@ -57,8 +57,8 @@ type Volume struct {
type VolumeFilter func(*Volume) bool type VolumeFilter func(*Volume) bool
// GetRuntime returns a LocalRuntime struct with the actual runtime embedded in it // GetRuntime returns a LocalRuntime struct with the actual runtime embedded in it
func GetRuntime(c *cliconfig.PodmanCommand) (*LocalRuntime, error) { func GetRuntime(ctx context.Context, c *cliconfig.PodmanCommand) (*LocalRuntime, error) {
runtime, err := libpodruntime.GetRuntime(c) runtime, err := libpodruntime.GetRuntime(ctx, c)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -46,7 +46,7 @@ type LocalRuntime struct {
} }
// GetRuntime returns a LocalRuntime struct with the actual runtime embedded in it // GetRuntime returns a LocalRuntime struct with the actual runtime embedded in it
func GetRuntime(c *cliconfig.PodmanCommand) (*LocalRuntime, error) { func GetRuntime(ctx context.Context, c *cliconfig.PodmanCommand) (*LocalRuntime, error) {
runtime := RemoteRuntime{} runtime := RemoteRuntime{}
conn, err := runtime.Connect() conn, err := runtime.Connect()
if err != nil { if err != nil {