summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Heon <matthew.heon@pm.me>2019-02-26 15:32:53 -0500
committerMatthew Heon <matthew.heon@pm.me>2019-02-26 15:32:53 -0500
commitb8e6ef618bd9233796ef6dbff187052a499ea022 (patch)
treed748de619f0cfeb0f59bef4e299ab776c34e611f
parentee667dcf97df4ed38b2046b33911dad882829bf8 (diff)
downloadpodman-b8e6ef618bd9233796ef6dbff187052a499ea022.tar.gz
podman-b8e6ef618bd9233796ef6dbff187052a499ea022.tar.bz2
podman-b8e6ef618bd9233796ef6dbff187052a499ea022.zip
Move all storage configuration defaults into libpod
Instead of passing in defaults via WithStorageConfig after computing them in cmd/podman/libpodruntime, do all defaults in libpod itself. This can alleviate ordering issues which caused settings in the libpod config (most notably, volume path) to be ignored. Signed-off-by: Matthew Heon <matthew.heon@pm.me>
-rw-r--r--cmd/podman/libpodruntime/runtime.go18
-rw-r--r--libpod/runtime.go15
2 files changed, 18 insertions, 15 deletions
diff --git a/cmd/podman/libpodruntime/runtime.go b/cmd/podman/libpodruntime/runtime.go
index f4ddf3521..2b96f0c20 100644
--- a/cmd/podman/libpodruntime/runtime.go
+++ b/cmd/podman/libpodruntime/runtime.go
@@ -5,6 +5,7 @@ import (
"github.com/containers/libpod/libpod"
"github.com/containers/libpod/pkg/rootless"
"github.com/containers/libpod/pkg/util"
+ "github.com/containers/storage"
"github.com/pkg/errors"
)
@@ -20,11 +21,8 @@ func GetRuntime(c *cliconfig.PodmanCommand) (*libpod.Runtime, error) {
func getRuntime(c *cliconfig.PodmanCommand, renumber bool) (*libpod.Runtime, error) {
options := []libpod.RuntimeOption{}
-
- storageOpts, _, err := util.GetDefaultStoreOptions()
- if err != nil {
- return nil, err
- }
+ storageOpts := storage.StoreOptions{}
+ storageSet := false
uidmapFlag := c.Flags().Lookup("uidmap")
gidmapFlag := c.Flags().Lookup("gidmap")
@@ -43,25 +41,33 @@ func getRuntime(c *cliconfig.PodmanCommand, renumber bool) (*libpod.Runtime, err
storageOpts.UIDMap = mappings.UIDMap
storageOpts.GIDMap = mappings.GIDMap
+ storageSet = true
}
if c.Flags().Changed("root") {
+ storageSet = true
storageOpts.GraphRoot = c.GlobalFlags.Root
}
if c.Flags().Changed("runroot") {
+ storageSet = true
storageOpts.RunRoot = c.GlobalFlags.Runroot
}
if len(storageOpts.RunRoot) > 50 {
return nil, errors.New("the specified runroot is longer than 50 characters")
}
if c.Flags().Changed("storage-driver") {
+ storageSet = true
storageOpts.GraphDriverName = c.GlobalFlags.StorageDriver
}
if len(c.GlobalFlags.StorageOpts) > 0 {
+ storageSet = true
storageOpts.GraphDriverOptions = c.GlobalFlags.StorageOpts
}
- options = append(options, libpod.WithStorageConfig(storageOpts))
+ // Only set this if the user changes storage config on the command line
+ if storageSet {
+ options = append(options, libpod.WithStorageConfig(storageOpts))
+ }
// TODO CLI flags for image config?
// TODO CLI flag for signature policy?
diff --git a/libpod/runtime.go b/libpod/runtime.go
index 827c22f5b..635783790 100644
--- a/libpod/runtime.go
+++ b/libpod/runtime.go
@@ -331,16 +331,13 @@ func NewRuntime(options ...RuntimeOption) (runtime *Runtime, err error) {
deepcopier.Copy(defaultRuntimeConfig).To(runtime.config)
runtime.config.TmpDir = tmpDir
- if rootless.IsRootless() {
- // If we're rootless, override the default storage config
- storageConf, volumePath, err := util.GetDefaultStoreOptions()
- if err != nil {
- return nil, errors.Wrapf(err, "error retrieving rootless storage config")
- }
- runtime.config.StorageConfig = storageConf
- runtime.config.StaticDir = filepath.Join(storageConf.GraphRoot, "libpod")
- runtime.config.VolumePath = volumePath
+ storageConf, volumePath, err := util.GetDefaultStoreOptions()
+ if err != nil {
+ return nil, errors.Wrapf(err, "error retrieving rootless storage config")
}
+ runtime.config.StorageConfig = storageConf
+ runtime.config.StaticDir = filepath.Join(storageConf.GraphRoot, "libpod")
+ runtime.config.VolumePath = volumePath
configPath := ConfigPath
foundConfig := true