mirror of
https://github.com/project-zot/zot.git
synced 2025-04-08 02:54:41 -05:00
More validation for DynamoDB cache driver cachetablename (#2949)
fix: More validation for DynamoDB cache driver cachetablename Signed-off-by: Andrei Aaron <aaaron@luxoft.com>
This commit is contained in:
parent
d0ad93532f
commit
e3c42a76c5
3 changed files with 46 additions and 5 deletions
|
@ -225,6 +225,30 @@ func TestCreateCacheDatabaseDriver(t *testing.T) {
|
|||
}
|
||||
|
||||
endpoint := os.Getenv("DYNAMODBMOCK_ENDPOINT")
|
||||
|
||||
// missing cachetablename key
|
||||
conf.Storage.CacheDriver = map[string]interface{}{
|
||||
"name": "dynamodb",
|
||||
"endpoint": endpoint,
|
||||
"region": "us-east-2",
|
||||
}
|
||||
|
||||
driver, err := storage.CreateCacheDatabaseDriver(conf.Storage.StorageConfig, log)
|
||||
So(err, ShouldNotBeNil)
|
||||
So(driver, ShouldBeNil)
|
||||
|
||||
// invalid cachetablename type
|
||||
conf.Storage.CacheDriver = map[string]interface{}{
|
||||
"name": "dynamodb",
|
||||
"endpoint": endpoint,
|
||||
"region": "us-east-2",
|
||||
"cachetablename": false,
|
||||
}
|
||||
|
||||
driver, err = storage.CreateCacheDatabaseDriver(conf.Storage.StorageConfig, log)
|
||||
So(err, ShouldNotBeNil)
|
||||
So(driver, ShouldBeNil)
|
||||
|
||||
conf.Storage.CacheDriver = map[string]interface{}{
|
||||
"name": "dynamodb",
|
||||
"endpoint": endpoint,
|
||||
|
@ -237,7 +261,7 @@ func TestCreateCacheDatabaseDriver(t *testing.T) {
|
|||
"versiontablename": "Version",
|
||||
}
|
||||
|
||||
driver, err := storage.CreateCacheDatabaseDriver(conf.Storage.StorageConfig, log)
|
||||
driver, err = storage.CreateCacheDatabaseDriver(conf.Storage.StorageConfig, log)
|
||||
So(err, ShouldBeNil)
|
||||
So(driver, ShouldNotBeNil)
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package storage
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
zerr "zotregistry.dev/zot/errors"
|
||||
"zotregistry.dev/zot/pkg/api/config"
|
||||
rediscfg "zotregistry.dev/zot/pkg/api/config/redis"
|
||||
|
@ -43,7 +45,12 @@ func CreateCacheDatabaseDriver(storageConfig config.StorageConfig, log zlog.Logg
|
|||
|
||||
if name == constants.DynamoDBDriverName {
|
||||
// dynamodb
|
||||
return Create(name, getDynamoParams(&storageConfig), log)
|
||||
dynamoParams, err := getDynamoParams(&storageConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return Create(name, dynamoParams, log)
|
||||
}
|
||||
|
||||
if name == constants.RedisDriverName {
|
||||
|
@ -86,13 +93,23 @@ func getUseRelPaths(storageConfig *config.StorageConfig) bool {
|
|||
return storageConfig.StorageDriver == nil
|
||||
}
|
||||
|
||||
func getDynamoParams(storageConfig *config.StorageConfig) cache.DynamoDBDriverParameters {
|
||||
func getDynamoParams(storageConfig *config.StorageConfig) (cache.DynamoDBDriverParameters, error) {
|
||||
dynamoParams := cache.DynamoDBDriverParameters{}
|
||||
dynamoParams.Endpoint, _ = storageConfig.CacheDriver["endpoint"].(string)
|
||||
dynamoParams.Region, _ = storageConfig.CacheDriver["region"].(string)
|
||||
dynamoParams.TableName, _ = storageConfig.CacheDriver["cachetablename"].(string)
|
||||
|
||||
return dynamoParams
|
||||
cachetable, ok := storageConfig.CacheDriver["cachetablename"]
|
||||
if !ok {
|
||||
return dynamoParams, fmt.Errorf("%w: cachetablename key is mandatory for dynamodb cache driver", zerr.ErrBadConfig)
|
||||
}
|
||||
|
||||
dynamoParams.TableName, ok = cachetable.(string)
|
||||
if !ok {
|
||||
return dynamoParams, fmt.Errorf("%w: failed to cast cachetablename %s to string type", zerr.ErrBadConfig, cachetable)
|
||||
}
|
||||
|
||||
return dynamoParams, nil
|
||||
}
|
||||
|
||||
func getRedisParams(storageConfig *config.StorageConfig, log zlog.Logger) (cache.RedisDriverParameters, error) {
|
||||
|
|
2
pkg/storage/cache/dynamodb.go
vendored
2
pkg/storage/cache/dynamodb.go
vendored
|
@ -65,7 +65,7 @@ func NewDynamoDBCache(parameters interface{}, log zlog.Logger) (*DynamoDBDriver,
|
|||
properParameters, ok := parameters.(DynamoDBDriverParameters)
|
||||
if !ok {
|
||||
log.Error().Err(zerr.ErrTypeAssertionFailed).Msgf("failed to cast type, expected type '%T' but got '%T'",
|
||||
BoltDBDriverParameters{}, parameters)
|
||||
DynamoDBDriverParameters{}, parameters)
|
||||
|
||||
return nil, zerr.ErrTypeAssertionFailed
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue