Merge branch '18947-githttpd'
[arvados.git] / lib / config / deprecated.go
index 0552b66adb80bed162ee3f2518a1c649c0c89ec2..c0a7921b36fdef66112591b18d450d11383afb50 100644 (file)
@@ -5,6 +5,7 @@
 package config
 
 import (
+       "encoding/json"
        "fmt"
        "io/ioutil"
        "net/url"
@@ -102,19 +103,50 @@ func (ldr *Loader) applyDeprecatedConfig(cfg *arvados.Config) error {
                        *dst = *n
                }
 
-               // Provider* moved to SSO.Provider*
-               if dst, n := &cluster.Login.SSO.ProviderAppID, dcluster.Login.ProviderAppID; n != nil && *n != *dst {
-                       *dst = *n
-                       if *n != "" {
-                               // In old config, non-empty ID meant enable
-                               cluster.Login.SSO.Enable = true
+               cfg.Clusters[id] = cluster
+       }
+       return nil
+}
+
+func (ldr *Loader) applyDeprecatedVolumeDriverParameters(cfg *arvados.Config) error {
+       for clusterID, cluster := range cfg.Clusters {
+               for volID, vol := range cluster.Volumes {
+                       if vol.Driver == "S3" {
+                               var params struct {
+                                       AccessKey       string `json:",omitempty"`
+                                       SecretKey       string `json:",omitempty"`
+                                       AccessKeyID     string
+                                       SecretAccessKey string
+                               }
+                               err := json.Unmarshal(vol.DriverParameters, &params)
+                               if err != nil {
+                                       return fmt.Errorf("error loading %s.Volumes.%s.DriverParameters: %w", clusterID, volID, err)
+                               }
+                               if params.AccessKey != "" || params.SecretKey != "" {
+                                       if params.AccessKeyID != "" || params.SecretAccessKey != "" {
+                                               return fmt.Errorf("cannot use old keys (AccessKey/SecretKey) and new keys (AccessKeyID/SecretAccessKey) at the same time in %s.Volumes.%s.DriverParameters -- you must remove the old config keys", clusterID, volID)
+                                       }
+                                       var allparams map[string]interface{}
+                                       err = json.Unmarshal(vol.DriverParameters, &allparams)
+                                       if err != nil {
+                                               return fmt.Errorf("error loading %s.Volumes.%s.DriverParameters: %w", clusterID, volID, err)
+                                       }
+                                       for k := range allparams {
+                                               if lk := strings.ToLower(k); lk == "accesskey" || lk == "secretkey" {
+                                                       delete(allparams, k)
+                                               }
+                                       }
+                                       ldr.Logger.Warnf("using your old config keys %s.Volumes.%s.DriverParameters.AccessKey/SecretKey -- but you should rename them to AccessKeyID/SecretAccessKey", clusterID, volID)
+                                       allparams["AccessKeyID"] = params.AccessKey
+                                       allparams["SecretAccessKey"] = params.SecretKey
+                                       vol.DriverParameters, err = json.Marshal(allparams)
+                                       if err != nil {
+                                               return err
+                                       }
+                                       cluster.Volumes[volID] = vol
+                               }
                        }
                }
-               if dst, n := &cluster.Login.SSO.ProviderAppSecret, dcluster.Login.ProviderAppSecret; n != nil && *n != *dst {
-                       *dst = *n
-               }
-
-               cfg.Clusters[id] = cluster
        }
        return nil
 }
@@ -416,7 +448,6 @@ type oldKeepWebConfig struct {
                UUIDTTL              *arvados.Duration
                MaxCollectionEntries *int
                MaxCollectionBytes   *int64
-               MaxPermissionEntries *int
                MaxUUIDEntries       *int
        }
 
@@ -472,9 +503,6 @@ func (ldr *Loader) loadOldKeepWebConfig(cfg *arvados.Config) error {
        if oc.Cache.MaxCollectionBytes != nil {
                cluster.Collections.WebDAVCache.MaxCollectionBytes = *oc.Cache.MaxCollectionBytes
        }
-       if oc.Cache.MaxPermissionEntries != nil {
-               cluster.Collections.WebDAVCache.MaxPermissionEntries = *oc.Cache.MaxPermissionEntries
-       }
        if oc.Cache.MaxUUIDEntries != nil {
                cluster.Collections.WebDAVCache.MaxUUIDEntries = *oc.Cache.MaxUUIDEntries
        }
@@ -507,7 +535,7 @@ func (ldr *Loader) loadOldGitHttpdConfig(cfg *arvados.Config) error {
                return nil
        }
        var oc oldGitHttpdConfig
-       err := ldr.loadOldConfigHelper("arv-git-httpd", ldr.GitHttpdPath, &oc)
+       err := ldr.loadOldConfigHelper("arvados-git-httpd", ldr.GitHttpdPath, &oc)
        if os.IsNotExist(err) && ldr.GitHttpdPath == defaultGitHttpdConfigPath {
                return nil
        } else if err != nil {