From f51d557626815450cae44ce69a0e193fd43b9b6b Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 29 Oct 2023 10:41:53 +0800 Subject: [PATCH 1/4] Support storage base path as prefix --- modules/setting/storage.go | 17 ++++++++++++++--- modules/setting/storage_test.go | 17 +++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/modules/setting/storage.go b/modules/setting/storage.go index cc3a2899d76e..19bd363046f1 100644 --- a/modules/setting/storage.go +++ b/modules/setting/storage.go @@ -7,6 +7,7 @@ import ( "errors" "fmt" "path/filepath" + "strings" ) // StorageType is a type of Storage @@ -249,14 +250,24 @@ func getStorageForMinio(targetSec, overrideSec ConfigSection, tp targetSecType, return nil, fmt.Errorf("map minio config failed: %v", err) } - if storage.MinioConfig.BasePath == "" { - storage.MinioConfig.BasePath = name + "/" + fmt.Println("111", targetSec.Name(), storage.MinioConfig.BasePath) + + defaultPath := name + "/" + if storage.MinioConfig.BasePath != "" { + if tp == targetSecIsStorage || tp == targetSecIsDefault { + defaultPath = strings.TrimSuffix(storage.MinioConfig.BasePath, "/") + "/" + defaultPath + } else { + defaultPath = storage.MinioConfig.BasePath + } } if overrideSec != nil { + fmt.Println("222", overrideSec.Name()) storage.MinioConfig.ServeDirect = ConfigSectionKeyBool(overrideSec, "SERVE_DIRECT", storage.MinioConfig.ServeDirect) - storage.MinioConfig.BasePath = ConfigSectionKeyString(overrideSec, "MINIO_BASE_PATH", storage.MinioConfig.BasePath) + storage.MinioConfig.BasePath = ConfigSectionKeyString(overrideSec, "MINIO_BASE_PATH", defaultPath) storage.MinioConfig.Bucket = ConfigSectionKeyString(overrideSec, "MINIO_BUCKET", storage.MinioConfig.Bucket) + } else { + storage.MinioConfig.BasePath = defaultPath } return &storage, nil } diff --git a/modules/setting/storage_test.go b/modules/setting/storage_test.go index 20886d4c4e95..7b219e360e1c 100644 --- a/modules/setting/storage_test.go +++ b/modules/setting/storage_test.go @@ -412,3 +412,20 @@ MINIO_USE_SSL = true assert.EqualValues(t, true, RepoArchive.Storage.MinioConfig.UseSSL) assert.EqualValues(t, "repo-archive/", RepoArchive.Storage.MinioConfig.BasePath) } + +func Test_getStorageConfiguration28(t *testing.T) { + cfg, err := NewConfigProviderFromData(` +[storage] +STORAGE_TYPE = minio +MINIO_ACCESS_KEY_ID = my_access_key +MINIO_SECRET_ACCESS_KEY = my_secret_key +MINIO_USE_SSL = true +MINIO_BASE_PATH = /prefix +`) + assert.NoError(t, err) + assert.NoError(t, loadRepoArchiveFrom(cfg)) + assert.EqualValues(t, "my_access_key", RepoArchive.Storage.MinioConfig.AccessKeyID) + assert.EqualValues(t, "my_secret_key", RepoArchive.Storage.MinioConfig.SecretAccessKey) + assert.EqualValues(t, true, RepoArchive.Storage.MinioConfig.UseSSL) + assert.EqualValues(t, "/prefix/repo-archive/", RepoArchive.Storage.MinioConfig.BasePath) +} From e78da15acc7762eb9259633cff82cb3926659525 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 29 Oct 2023 10:44:16 +0800 Subject: [PATCH 2/4] Remove trace --- modules/setting/storage.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/setting/storage.go b/modules/setting/storage.go index 19bd363046f1..c75c8d0afbc0 100644 --- a/modules/setting/storage.go +++ b/modules/setting/storage.go @@ -250,8 +250,6 @@ func getStorageForMinio(targetSec, overrideSec ConfigSection, tp targetSecType, return nil, fmt.Errorf("map minio config failed: %v", err) } - fmt.Println("111", targetSec.Name(), storage.MinioConfig.BasePath) - defaultPath := name + "/" if storage.MinioConfig.BasePath != "" { if tp == targetSecIsStorage || tp == targetSecIsDefault { @@ -262,7 +260,6 @@ func getStorageForMinio(targetSec, overrideSec ConfigSection, tp targetSecType, } if overrideSec != nil { - fmt.Println("222", overrideSec.Name()) storage.MinioConfig.ServeDirect = ConfigSectionKeyBool(overrideSec, "SERVE_DIRECT", storage.MinioConfig.ServeDirect) storage.MinioConfig.BasePath = ConfigSectionKeyString(overrideSec, "MINIO_BASE_PATH", defaultPath) storage.MinioConfig.Bucket = ConfigSectionKeyString(overrideSec, "MINIO_BUCKET", storage.MinioConfig.Bucket) From bae41ca71c6be91ad0ef91b1c9d4f072d3d301af Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 29 Oct 2023 10:46:14 +0800 Subject: [PATCH 3/4] Fix bug --- modules/setting/storage.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/setting/storage.go b/modules/setting/storage.go index c75c8d0afbc0..f937c7cff399 100644 --- a/modules/setting/storage.go +++ b/modules/setting/storage.go @@ -250,14 +250,17 @@ func getStorageForMinio(targetSec, overrideSec ConfigSection, tp targetSecType, return nil, fmt.Errorf("map minio config failed: %v", err) } - defaultPath := name + "/" + var defaultPath string if storage.MinioConfig.BasePath != "" { if tp == targetSecIsStorage || tp == targetSecIsDefault { - defaultPath = strings.TrimSuffix(storage.MinioConfig.BasePath, "/") + "/" + defaultPath + defaultPath = strings.TrimSuffix(storage.MinioConfig.BasePath, "/") + "/" + name + "/" } else { defaultPath = storage.MinioConfig.BasePath } } + if defaultPath == "" { + defaultPath = name + "/" + } if overrideSec != nil { storage.MinioConfig.ServeDirect = ConfigSectionKeyBool(overrideSec, "SERVE_DIRECT", storage.MinioConfig.ServeDirect) From caa4f958b9ad722b4e363b81bfd4e3214a4ab6e7 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 1 Nov 2023 17:11:20 +0800 Subject: [PATCH 4/4] Add more tests --- modules/setting/storage_test.go | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/modules/setting/storage_test.go b/modules/setting/storage_test.go index 7b219e360e1c..6f38bf1d5575 100644 --- a/modules/setting/storage_test.go +++ b/modules/setting/storage_test.go @@ -428,4 +428,40 @@ MINIO_BASE_PATH = /prefix assert.EqualValues(t, "my_secret_key", RepoArchive.Storage.MinioConfig.SecretAccessKey) assert.EqualValues(t, true, RepoArchive.Storage.MinioConfig.UseSSL) assert.EqualValues(t, "/prefix/repo-archive/", RepoArchive.Storage.MinioConfig.BasePath) + + cfg, err = NewConfigProviderFromData(` +[storage] +STORAGE_TYPE = minio +MINIO_ACCESS_KEY_ID = my_access_key +MINIO_SECRET_ACCESS_KEY = my_secret_key +MINIO_USE_SSL = true +MINIO_BASE_PATH = /prefix + +[lfs] +MINIO_BASE_PATH = /lfs +`) + assert.NoError(t, err) + assert.NoError(t, loadLFSFrom(cfg)) + assert.EqualValues(t, "my_access_key", LFS.Storage.MinioConfig.AccessKeyID) + assert.EqualValues(t, "my_secret_key", LFS.Storage.MinioConfig.SecretAccessKey) + assert.EqualValues(t, true, LFS.Storage.MinioConfig.UseSSL) + assert.EqualValues(t, "/lfs", LFS.Storage.MinioConfig.BasePath) + + cfg, err = NewConfigProviderFromData(` +[storage] +STORAGE_TYPE = minio +MINIO_ACCESS_KEY_ID = my_access_key +MINIO_SECRET_ACCESS_KEY = my_secret_key +MINIO_USE_SSL = true +MINIO_BASE_PATH = /prefix + +[storage.lfs] +MINIO_BASE_PATH = /lfs +`) + assert.NoError(t, err) + assert.NoError(t, loadLFSFrom(cfg)) + assert.EqualValues(t, "my_access_key", LFS.Storage.MinioConfig.AccessKeyID) + assert.EqualValues(t, "my_secret_key", LFS.Storage.MinioConfig.SecretAccessKey) + assert.EqualValues(t, true, LFS.Storage.MinioConfig.UseSSL) + assert.EqualValues(t, "/lfs", LFS.Storage.MinioConfig.BasePath) }