Merge pull request #3446 from giuseppe/fix-rootless-conf

rootless: use the correct conf file
This commit is contained in:
OpenShift Merge Robot 2019-06-27 15:15:38 +02:00 committed by GitHub
commit 5e3d63a53c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 30 additions and 22 deletions

View File

@ -373,7 +373,7 @@ func NewRuntimeFromConfig(ctx context.Context, userConfigPath string, options ..
func homeDir() (string, error) { func homeDir() (string, error) {
home := os.Getenv("HOME") home := os.Getenv("HOME")
if home == "" { if home == "" {
usr, err := user.Current() usr, err := user.LookupId(fmt.Sprintf("%d", rootless.GetRootlessUID()))
if err != nil { if err != nil {
return "", errors.Wrapf(err, "unable to resolve HOME directory") return "", errors.Wrapf(err, "unable to resolve HOME directory")
} }
@ -391,28 +391,33 @@ func getRootlessConfigPath() (string, error) {
return filepath.Join(home, ".config/containers/libpod.conf"), nil return filepath.Join(home, ".config/containers/libpod.conf"), nil
} }
func getConfigPath() string { func getConfigPath() (string, error) {
if rootless.IsRootless() { if rootless.IsRootless() {
rootlessConfigPath, err := getRootlessConfigPath() path, err := getRootlessConfigPath()
if err != nil { if err != nil {
if _, err := os.Stat(rootlessConfigPath); err == nil { return "", err
return rootlessConfigPath
}
} }
if _, err := os.Stat(path); err == nil {
return path, nil
}
return "", err
} }
if _, err := os.Stat(OverrideConfigPath); err == nil { if _, err := os.Stat(OverrideConfigPath); err == nil {
// Use the override configuration path // Use the override configuration path
return OverrideConfigPath return OverrideConfigPath, nil
} }
if _, err := os.Stat(ConfigPath); err == 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 // DefaultRuntimeConfig reads default config path and returns the RuntimeConfig
func DefaultRuntimeConfig() (*RuntimeConfig, error) { func DefaultRuntimeConfig() (*RuntimeConfig, error) {
configPath := getConfigPath() configPath, err := getConfigPath()
if err != nil {
return nil, err
}
contents, err := ioutil.ReadFile(configPath) contents, err := ioutil.ReadFile(configPath)
if err != nil { if err != nil {
@ -460,8 +465,10 @@ func newRuntimeFromConfig(ctx context.Context, userConfigPath string, options ..
runtime.config.StaticDir = filepath.Join(storageConf.GraphRoot, "libpod") runtime.config.StaticDir = filepath.Join(storageConf.GraphRoot, "libpod")
runtime.config.VolumePath = filepath.Join(storageConf.GraphRoot, "volumes") runtime.config.VolumePath = filepath.Join(storageConf.GraphRoot, "volumes")
configPath := getConfigPath() configPath, err := getConfigPath()
rootlessConfigPath := "" if err != nil {
return nil, err
}
if rootless.IsRootless() { if rootless.IsRootless() {
home, err := homeDir() home, err := homeDir()
if err != nil { if err != nil {
@ -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() runtimeDir, err := util.GetRootlessRuntimeDir()
if err != nil { if err != nil {
return nil, err return nil, err
@ -599,7 +601,13 @@ func newRuntimeFromConfig(ctx context.Context, userConfigPath string, options ..
return nil, errors.Wrapf(err, "error configuring runtime") 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 // storage.conf
storageConfFile, err := storage.DefaultConfigFile(rootless.IsRootless()) storageConfFile, err := storage.DefaultConfigFile(rootless.IsRootless())
if err != nil { if err != nil {
@ -612,16 +620,16 @@ func newRuntimeFromConfig(ctx context.Context, userConfigPath string, options ..
} }
if configPath != "" { if configPath != "" {
os.MkdirAll(filepath.Dir(rootlessConfigPath), 0755) os.MkdirAll(filepath.Dir(configPath), 0755)
file, err := os.OpenFile(rootlessConfigPath, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0666) file, err := os.OpenFile(configPath, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0666)
if err != nil && !os.IsExist(err) { 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 { if err == nil {
defer file.Close() defer file.Close()
enc := toml.NewEncoder(file) enc := toml.NewEncoder(file)
if err := enc.Encode(runtime.config); err != nil { if err := enc.Encode(runtime.config); err != nil {
os.Remove(rootlessConfigPath) os.Remove(configPath)
} }
} }
} }