type Loader struct {
Stdin io.Reader
Logger logrus.FieldLogger
- SkipDeprecated bool // Don't load legacy/deprecated config keys/files
+ SkipDeprecated bool // Don't load deprecated config keys
+ SkipLegacy bool // Don't load legacy config files
+ SkipAPICalls bool // Don't do checks that call RailsAPI/controller
Path string
KeepstorePath string
+ KeepWebPath string
CrunchDispatchSlurmPath string
WebsocketPath string
-
- // Legacy config file for the current component (will be the
- // same as one of the above files). If set, not being able to
- // load the 'main' config.yml will not be a fatal error, but
- // the the legacy file will be required instead.
- LegacyComponentConfig string
+ KeepproxyPath string
+ GitHttpdPath string
configdata []byte
}
func (ldr *Loader) SetupFlags(flagset *flag.FlagSet) {
flagset.StringVar(&ldr.Path, "config", arvados.DefaultConfigFile, "Site configuration `file` (default may be overridden by setting an ARVADOS_CONFIG environment variable)")
flagset.StringVar(&ldr.KeepstorePath, "legacy-keepstore-config", defaultKeepstoreConfigPath, "Legacy keepstore configuration `file`")
+ flagset.StringVar(&ldr.KeepWebPath, "legacy-keepweb-config", defaultKeepWebConfigPath, "Legacy keep-web configuration `file`")
flagset.StringVar(&ldr.CrunchDispatchSlurmPath, "legacy-crunch-dispatch-slurm-config", defaultCrunchDispatchSlurmConfigPath, "Legacy crunch-dispatch-slurm configuration `file`")
flagset.StringVar(&ldr.WebsocketPath, "legacy-ws-config", defaultWebsocketConfigPath, "Legacy arvados-ws configuration `file`")
+ flagset.StringVar(&ldr.KeepproxyPath, "legacy-keepproxy-config", defaultKeepproxyConfigPath, "Legacy keepproxy configuration `file`")
+ flagset.StringVar(&ldr.GitHttpdPath, "legacy-git-httpd-config", defaultGitHttpdConfigPath, "Legacy arv-git-httpd configuration `file`")
+ flagset.BoolVar(&ldr.SkipLegacy, "skip-legacy", false, "Don't load legacy config files")
}
// MungeLegacyConfigArgs checks args for a -config flag whose argument
}
}
}
+
+ // Disable legacy config loading for components other than the
+ // one that was specified
+ if legacyConfigArg != "-legacy-keepstore-config" {
+ ldr.KeepstorePath = ""
+ }
+ if legacyConfigArg != "-legacy-crunch-dispatch-slurm-config" {
+ ldr.CrunchDispatchSlurmPath = ""
+ }
+ if legacyConfigArg != "-legacy-ws-config" {
+ ldr.WebsocketPath = ""
+ }
+ if legacyConfigArg != "-legacy-keepweb-config" {
+ ldr.KeepWebPath = ""
+ }
+ if legacyConfigArg != "-legacy-keepproxy-config" {
+ ldr.KeepproxyPath = ""
+ }
+ if legacyConfigArg != "-legacy-git-httpd-config" {
+ ldr.GitHttpdPath = ""
+ }
+
return munged
}
if ldr.configdata == nil {
buf, err := ldr.loadBytes(ldr.Path)
if err != nil {
- if ldr.LegacyComponentConfig != "" && os.IsNotExist(err) && !ldr.SkipDeprecated {
- buf = []byte(`Clusters: {zzzzz: {}}`)
- } else {
- return nil, err
- }
+ return nil, err
}
ldr.configdata = buf
}
- noConfigLoaded := bytes.Compare(ldr.configdata, []byte(`Clusters: {zzzzz: {}}`)) == 0
// Load the config into a dummy map to get the cluster ID
// keys, discarding the values; then set up defaults for each
if err != nil {
return nil, err
}
+ }
+ if !ldr.SkipLegacy {
// legacy file is required when either:
// * a non-default location was specified
// * no primary config was loaded, and this is the
// legacy config file for the current component
for _, err := range []error{
- ldr.loadOldKeepstoreConfig(&cfg, (ldr.KeepstorePath != defaultKeepstoreConfigPath) ||
- (noConfigLoaded && ldr.LegacyComponentConfig == ldr.KeepstorePath)),
-
- ldr.loadOldCrunchDispatchSlurmConfig(&cfg, (ldr.CrunchDispatchSlurmPath != defaultCrunchDispatchSlurmConfigPath) ||
- (noConfigLoaded && ldr.LegacyComponentConfig == ldr.CrunchDispatchSlurmPath)),
-
- ldr.loadOldWebsocketConfig(&cfg, (ldr.WebsocketPath != defaultWebsocketConfigPath) ||
- (noConfigLoaded && ldr.LegacyComponentConfig == ldr.WebsocketPath)),
+ ldr.loadOldEnvironmentVariables(&cfg),
+ ldr.loadOldKeepstoreConfig(&cfg),
+ ldr.loadOldKeepWebConfig(&cfg),
+ ldr.loadOldCrunchDispatchSlurmConfig(&cfg),
+ ldr.loadOldWebsocketConfig(&cfg),
+ ldr.loadOldKeepproxyConfig(&cfg),
+ ldr.loadOldGitHttpdConfig(&cfg),
} {
if err != nil {
return nil, err
// Check for known mistakes
for id, cc := range cfg.Clusters {
- err = checkKeyConflict(fmt.Sprintf("Clusters.%s.PostgreSQL.Connection", id), cc.PostgreSQL.Connection)
- if err != nil {
- return nil, err
+ for _, err = range []error{
+ checkKeyConflict(fmt.Sprintf("Clusters.%s.PostgreSQL.Connection", id), cc.PostgreSQL.Connection),
+ ldr.checkEmptyKeepstores(cc),
+ ldr.checkUnlistedKeepstores(cc),
+ } {
+ if err != nil {
+ return nil, err
+ }
}
}
return &cfg, nil