Factor out the registries.conf location code in pkg/registries

The newly introduced SystemRegistriesConfPath somewhat decreases
duplication, but more importantly will allow future callers to
set just a types.SystemContext.SystemRegistriesConfPath and not call
GetRegistries / GetInsecureRegistries at all.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
This commit is contained in:
Miloslav Trmač
2018-12-03 22:35:40 +01:00
parent 7407d6621c
commit 8150c942d5

View File

@ -13,21 +13,28 @@ import (
// userRegistriesFile is the path to the per user registry configuration file. // userRegistriesFile is the path to the per user registry configuration file.
var userRegistriesFile = filepath.Join(os.Getenv("HOME"), ".config/containers/registries.conf") var userRegistriesFile = filepath.Join(os.Getenv("HOME"), ".config/containers/registries.conf")
// GetRegistries obtains the list of registries defined in the global registries file. // SystemRegistriesConfPath returns an appropriate value for types.SystemContext.SystemRegistriesConfPath
func GetRegistries() ([]string, error) { // (possibly "", which is not an error), taking into account rootless mode and environment variable overrides.
registryConfigPath := "" //
// FIXME: This should be centralized in a global SystemContext initializer inherited throughout the code,
// not haphazardly called throughout the way it is being called now.
func SystemRegistriesConfPath() string {
if envOverride := os.Getenv("REGISTRIES_CONFIG_PATH"); len(envOverride) > 0 {
return envOverride
}
if rootless.IsRootless() { if rootless.IsRootless() {
if _, err := os.Stat(userRegistriesFile); err == nil { if _, err := os.Stat(userRegistriesFile); err == nil {
registryConfigPath = userRegistriesFile return userRegistriesFile
} }
} }
envOverride := os.Getenv("REGISTRIES_CONFIG_PATH") return ""
if len(envOverride) > 0 { }
registryConfigPath = envOverride
} // GetRegistries obtains the list of registries defined in the global registries file.
searchRegistries, err := sysregistries.GetRegistries(&types.SystemContext{SystemRegistriesConfPath: registryConfigPath}) func GetRegistries() ([]string, error) {
searchRegistries, err := sysregistries.GetRegistries(&types.SystemContext{SystemRegistriesConfPath: SystemRegistriesConfPath()})
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "unable to parse the registries.conf file") return nil, errors.Wrapf(err, "unable to parse the registries.conf file")
} }
@ -36,19 +43,7 @@ func GetRegistries() ([]string, error) {
// GetInsecureRegistries obtains the list of insecure registries from the global registration file. // GetInsecureRegistries obtains the list of insecure registries from the global registration file.
func GetInsecureRegistries() ([]string, error) { func GetInsecureRegistries() ([]string, error) {
registryConfigPath := "" registries, err := sysregistries.GetInsecureRegistries(&types.SystemContext{SystemRegistriesConfPath: SystemRegistriesConfPath()})
if rootless.IsRootless() {
if _, err := os.Stat(userRegistriesFile); err == nil {
registryConfigPath = userRegistriesFile
}
}
envOverride := os.Getenv("REGISTRIES_CONFIG_PATH")
if len(envOverride) > 0 {
registryConfigPath = envOverride
}
registries, err := sysregistries.GetInsecureRegistries(&types.SystemContext{SystemRegistriesConfPath: registryConfigPath})
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "unable to parse the registries.conf file") return nil, errors.Wrapf(err, "unable to parse the registries.conf file")
} }