Skip to content

Commit

Permalink
Merge pull request #3446 from giuseppe/fix-rootless-conf
Browse files Browse the repository at this point in the history
rootless: use the correct conf file
  • Loading branch information
openshift-merge-robot authored Jun 27, 2019
2 parents fccf4ad + 7e3c27e commit 5e3d63a
Showing 1 changed file with 30 additions and 22 deletions.
52 changes: 30 additions & 22 deletions libpod/runtime.go
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ func NewRuntimeFromConfig(ctx context.Context, userConfigPath string, options ..
func homeDir() (string, error) {
home := os.Getenv("HOME")
if home == "" {
usr, err := user.Current()
usr, err := user.LookupId(fmt.Sprintf("%d", rootless.GetRootlessUID()))
if err != nil {
return "", errors.Wrapf(err, "unable to resolve HOME directory")
}
Expand All @@ -391,28 +391,33 @@ func getRootlessConfigPath() (string, error) {
return filepath.Join(home, ".config/containers/libpod.conf"), nil
}

func getConfigPath() string {
func getConfigPath() (string, error) {
if rootless.IsRootless() {
rootlessConfigPath, err := getRootlessConfigPath()
path, err := getRootlessConfigPath()
if err != nil {
if _, err := os.Stat(rootlessConfigPath); err == nil {
return rootlessConfigPath
}
return "", err
}
if _, err := os.Stat(path); err == nil {
return path, nil
}
return "", err
}
if _, err := os.Stat(OverrideConfigPath); err == nil {
// Use the override configuration path
return OverrideConfigPath
return OverrideConfigPath, nil
}
if _, err := os.Stat(ConfigPath); err == nil {
return ConfigPath
return ConfigPath, nil
}
return ""
return "", nil
}

// DefaultRuntimeConfig reads default config path and returns the RuntimeConfig
func DefaultRuntimeConfig() (*RuntimeConfig, error) {
configPath := getConfigPath()
configPath, err := getConfigPath()
if err != nil {
return nil, err
}

contents, err := ioutil.ReadFile(configPath)
if err != nil {
Expand Down Expand Up @@ -460,8 +465,10 @@ func newRuntimeFromConfig(ctx context.Context, userConfigPath string, options ..
runtime.config.StaticDir = filepath.Join(storageConf.GraphRoot, "libpod")
runtime.config.VolumePath = filepath.Join(storageConf.GraphRoot, "volumes")

configPath := getConfigPath()
rootlessConfigPath := ""
configPath, err := getConfigPath()
if err != nil {
return nil, err
}
if rootless.IsRootless() {
home, err := homeDir()
if err != nil {
Expand All @@ -474,11 +481,6 @@ func newRuntimeFromConfig(ctx context.Context, userConfigPath string, options ..
}
}

rootlessConfigPath, err = getRootlessConfigPath()
if err != nil {
return nil, err
}

runtimeDir, err := util.GetRootlessRuntimeDir()
if err != nil {
return nil, err
Expand Down Expand Up @@ -599,7 +601,13 @@ func newRuntimeFromConfig(ctx context.Context, userConfigPath string, options ..
return nil, errors.Wrapf(err, "error configuring runtime")
}
}
if rootlessConfigPath != "" {

if rootless.IsRootless() && configPath == "" {
configPath, err := getRootlessConfigPath()
if err != nil {
return nil, err
}

// storage.conf
storageConfFile, err := storage.DefaultConfigFile(rootless.IsRootless())
if err != nil {
Expand All @@ -612,16 +620,16 @@ func newRuntimeFromConfig(ctx context.Context, userConfigPath string, options ..
}

if configPath != "" {
os.MkdirAll(filepath.Dir(rootlessConfigPath), 0755)
file, err := os.OpenFile(rootlessConfigPath, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0666)
os.MkdirAll(filepath.Dir(configPath), 0755)
file, err := os.OpenFile(configPath, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0666)
if err != nil && !os.IsExist(err) {
return nil, errors.Wrapf(err, "cannot open file %s", rootlessConfigPath)
return nil, errors.Wrapf(err, "cannot open file %s", configPath)
}
if err == nil {
defer file.Close()
enc := toml.NewEncoder(file)
if err := enc.Encode(runtime.config); err != nil {
os.Remove(rootlessConfigPath)
os.Remove(configPath)
}
}
}
Expand Down

0 comments on commit 5e3d63a

Please sign in to comment.