diff options
author | Matthew Heon <matthew.heon@gmail.com> | 2018-03-01 15:33:04 -0500 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-03-06 01:21:09 +0000 |
commit | 32be712cd32bbfb7babb27e5405db08967a5af71 (patch) | |
tree | adc99361ae8fae7dd2c46bebe9d81e06f54ef1e5 /libpod/runtime.go | |
parent | bd8557da858b9743f99aab42c762197cd291fe04 (diff) | |
download | podman-32be712cd32bbfb7babb27e5405db08967a5af71.tar.gz podman-32be712cd32bbfb7babb27e5405db08967a5af71.tar.bz2 podman-32be712cd32bbfb7babb27e5405db08967a5af71.zip |
Change standard config path and add override config
The standard config has moved to /usr/share/containers/ per
discussion. An override configuration file is allowed at the
previous /etc/containers/ location. This override will be used in
place of the normal config if both are present, and exists to
override distro packaged configs without modifying the standard
config.
Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
Closes: #430
Approved by: rhatdan
Diffstat (limited to 'libpod/runtime.go')
-rw-r--r-- | libpod/runtime.go | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/libpod/runtime.go b/libpod/runtime.go index 3570290c0..a2331e38e 100644 --- a/libpod/runtime.go +++ b/libpod/runtime.go @@ -44,7 +44,11 @@ const ( // If it is not present, the builtin default config is used instead // This path can be overridden when the runtime is created by using // NewRuntimeFromConfig() instead of NewRuntime() - ConfigPath = "/etc/containers/libpod.conf" + ConfigPath = "/usr/share/containers/libpod.conf" + // OverrideConfigPath is the path to an override for the default libpod + // configuration file. If OverrideConfigPath exists, it will be used in + // place of the configuration file pointed to by ConfigPath. + OverrideConfigPath = "/etc/containers/libpod.conf" ) // A RuntimeOption is a functional option which alters the Runtime created by @@ -163,20 +167,24 @@ func NewRuntime(options ...RuntimeOption) (runtime *Runtime, err error) { // Copy the default configuration deepcopier.Copy(defaultRuntimeConfig).To(runtime.config) - // Now overwrite it with the given configuration file, if it exists - // Do not fail on error, instead just use the builtin defaults - if _, err := os.Stat(ConfigPath); err == nil { - // Read the contents of the config file - contents, err := ioutil.ReadFile(ConfigPath) - if err == nil { - // Only proceed if we successfully read the file - _, err := toml.Decode(string(contents), runtime.config) - if err != nil { - // We may have just ruined our RuntimeConfig - // Make a new one to be safe - runtime.config = new(RuntimeConfig) - deepcopier.Copy(defaultRuntimeConfig).To(runtime.config) - } + configPath := ConfigPath + foundConfig := true + if _, err := os.Stat(OverrideConfigPath); err == nil { + // Use the override configuration path + configPath = OverrideConfigPath + } else if _, err := os.Stat(ConfigPath); err != nil { + // Both stat checks failed, no config found + foundConfig = false + } + + // If we have a valid configuration file, load it in + if foundConfig { + contents, err := ioutil.ReadFile(configPath) + if err != nil { + return nil, errors.Wrapf(err, "error reading configuration file %s", configPath) + } + if _, err := toml.Decode(string(contents), runtime.config); err != nil { + return nil, errors.Wrapf(err, "error decoding configuration file %s", configPath) } } |