Inherit certsDir from configDir if latter is set (#7098)

This is to ensure backward compatibility for all existing
deployments which use custom config dir to point to their
certs directory.
This commit is contained in:
Harshavardhana 2019-01-17 01:34:32 +05:30 committed by kannappanr
parent e23a42305c
commit 633001c8ba

View File

@ -78,18 +78,23 @@ func loadLoggers() {
} }
func newConfigDirFromCtx(ctx *cli.Context, option string, getDefaultDir func() string) *ConfigDir { func newConfigDirFromCtx(ctx *cli.Context, option string, getDefaultDir func() string) (*ConfigDir, bool) {
var dir string var dir string
var dirSet bool
switch { switch {
case ctx.IsSet(option): case ctx.IsSet(option):
dir = ctx.String(option) dir = ctx.String(option)
dirSet = true
case ctx.GlobalIsSet(option): case ctx.GlobalIsSet(option):
dir = ctx.GlobalString(option) dir = ctx.GlobalString(option)
dirSet = true
// cli package does not expose parent's option option. Below code is workaround. // cli package does not expose parent's option option. Below code is workaround.
if dir == "" || dir == getDefaultDir() { if dir == "" || dir == getDefaultDir() {
dirSet = false // Unset to false since GlobalIsSet() true is a false positive.
if ctx.Parent().GlobalIsSet(option) { if ctx.Parent().GlobalIsSet(option) {
dir = ctx.Parent().GlobalString(option) dir = ctx.Parent().GlobalString(option)
dirSet = true
} }
} }
default: default:
@ -111,7 +116,7 @@ func newConfigDirFromCtx(ctx *cli.Context, option string, getDefaultDir func() s
logger.FatalIf(mkdirAllIgnorePerm(dirAbs), "Unable to create directory specified %s=%s", option, dir) logger.FatalIf(mkdirAllIgnorePerm(dirAbs), "Unable to create directory specified %s=%s", option, dir)
return &ConfigDir{path: dirAbs} return &ConfigDir{path: dirAbs}, dirSet
} }
func handleCommonCmdArgs(ctx *cli.Context) { func handleCommonCmdArgs(ctx *cli.Context) {
@ -142,8 +147,17 @@ func handleCommonCmdArgs(ctx *cli.Context) {
} }
// Set all config, certs and CAs directories. // Set all config, certs and CAs directories.
globalConfigDir = newConfigDirFromCtx(ctx, "config-dir", defaultConfigDir.Get) var configSet, certsSet bool
globalCertsDir = newConfigDirFromCtx(ctx, "certs-dir", defaultCertsDir.Get) globalConfigDir, configSet = newConfigDirFromCtx(ctx, "config-dir", defaultConfigDir.Get)
globalCertsDir, certsSet = newConfigDirFromCtx(ctx, "certs-dir", defaultCertsDir.Get)
// Remove this code when we deprecate and remove config-dir.
// This code is to make sure we inherit from the config-dir
// option if certs-dir is not provided.
if !certsSet && configSet {
globalCertsDir = &ConfigDir{path: filepath.Join(globalConfigDir.Get(), certsDir)}
}
globalCertsCADir = &ConfigDir{path: filepath.Join(globalCertsDir.Get(), certsCADir)} globalCertsCADir = &ConfigDir{path: filepath.Join(globalCertsDir.Get(), certsCADir)}
logger.FatalIf(mkdirAllIgnorePerm(globalCertsCADir.Get()), "Unable to create certs CA directory at %s", globalCertsCADir.Get()) logger.FatalIf(mkdirAllIgnorePerm(globalCertsCADir.Get()), "Unable to create certs CA directory at %s", globalCertsCADir.Get())