diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2019-02-27 14:25:16 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-27 14:25:16 +0100 |
commit | 70d3cc2e73caf64fc978c1349da45c9a5551b210 (patch) | |
tree | a635aca13ac0e3aa95a784ae21b2ce37f19acd10 | |
parent | f7f266e3618c6e4a9aa2c2c8c29ea40cf7087b0c (diff) | |
parent | f68a243f8ee4d36990a50fa490dc427520dc8a14 (diff) | |
download | podman-70d3cc2e73caf64fc978c1349da45c9a5551b210.tar.gz podman-70d3cc2e73caf64fc978c1349da45c9a5551b210.tar.bz2 podman-70d3cc2e73caf64fc978c1349da45c9a5551b210.zip |
Merge pull request #2454 from mheon/all_your_defaults_belong_to_libpod
Move all storage configuration defaults into libpod
-rw-r--r-- | cmd/podman/libpodruntime/runtime.go | 18 | ||||
-rw-r--r-- | libpod/runtime.go | 15 | ||||
-rw-r--r-- | pkg/util/utils.go | 26 |
3 files changed, 23 insertions, 36 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..f53cdd8b8 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, 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 = filepath.Join(storageConf.GraphRoot, "volumes") configPath := ConfigPath foundConfig := true diff --git a/pkg/util/utils.go b/pkg/util/utils.go index db8a3d5bb..a4576191b 100644 --- a/pkg/util/utils.go +++ b/pkg/util/utils.go @@ -259,15 +259,6 @@ func GetRootlessStorageOpts() (storage.StoreOptions, error) { return opts, nil } -// GetRootlessVolumePath returns where all the name volumes will be created in rootless mode -func GetRootlessVolumePath() (string, error) { - dataDir, _, err := GetRootlessDirInfo() - if err != nil { - return "", err - } - return filepath.Join(dataDir, "containers", "storage", "volumes"), nil -} - type tomlOptionsConfig struct { MountProgram string `toml:"mount_program"` } @@ -297,25 +288,18 @@ func getTomlStorage(storeOptions *storage.StoreOptions) *tomlConfig { return config } -// GetDefaultStoreOptions returns the storage ops for containers and the volume path -// for the volume API -// It also returns the path where all named volumes will be created using the volume API -func GetDefaultStoreOptions() (storage.StoreOptions, string, error) { +// GetDefaultStoreOptions returns the default storage ops for containers +func GetDefaultStoreOptions() (storage.StoreOptions, error) { var ( defaultRootlessRunRoot string defaultRootlessGraphRoot string err error ) storageOpts := storage.DefaultStoreOptions - volumePath := filepath.Join(storageOpts.GraphRoot, "volumes") if rootless.IsRootless() { storageOpts, err = GetRootlessStorageOpts() if err != nil { - return storageOpts, volumePath, err - } - volumePath, err = GetRootlessVolumePath() - if err != nil { - return storageOpts, volumePath, err + return storageOpts, err } } @@ -332,7 +316,7 @@ func GetDefaultStoreOptions() (storage.StoreOptions, string, error) { os.MkdirAll(filepath.Dir(storageConf), 0755) file, err := os.OpenFile(storageConf, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0666) if err != nil { - return storageOpts, volumePath, errors.Wrapf(err, "cannot open %s", storageConf) + return storageOpts, errors.Wrapf(err, "cannot open %s", storageConf) } tomlConfiguration := getTomlStorage(&storageOpts) @@ -353,7 +337,7 @@ func GetDefaultStoreOptions() (storage.StoreOptions, string, error) { } } } - return storageOpts, volumePath, nil + return storageOpts, nil } // StorageConfigFile returns the path to the storage config file used |