From 5a29959a0bfe26fa468101207c0343cd283f737f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Tue, 9 Nov 2021 10:06:08 +0000 Subject: [PATCH] add spaces registry, drop mount_path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- storage/pkg/command/gateway.go | 46 ++++++++++++++++++++++-- storage/pkg/command/storagehome.go | 1 - storage/pkg/command/storagemetadata.go | 1 - storage/pkg/command/storagepubliclink.go | 2 -- storage/pkg/command/storageusers.go | 1 - 5 files changed, 44 insertions(+), 7 deletions(-) diff --git a/storage/pkg/command/gateway.go b/storage/pkg/command/gateway.go index 63f158da1..07611aceb 100644 --- a/storage/pkg/command/gateway.go +++ b/storage/pkg/command/gateway.go @@ -181,7 +181,11 @@ func gatewayConfigFromStruct(c *cli.Context, cfg *config.Config, logger log.Logg "drivers": map[string]interface{}{ "static": map[string]interface{}{ "home_provider": cfg.Reva.StorageRegistry.HomeProvider, - "rules": rules(cfg, logger), + "rules": simpleRules(cfg, logger), + }, + "spaces": map[string]interface{}{ + "home_provider": cfg.Reva.StorageRegistry.HomeProvider, + "rules": spacesRules(cfg, logger), }, }, }, @@ -191,7 +195,7 @@ func gatewayConfigFromStruct(c *cli.Context, cfg *config.Config, logger log.Logg return rcfg } -func rules(cfg *config.Config, logger log.Logger) map[string]map[string]interface{} { +func simpleRules(cfg *config.Config, logger log.Logger) map[string]map[string]interface{} { // if a list of rules is given it overrides the generated rules from below if len(cfg.Reva.StorageRegistry.Rules) > 0 { @@ -233,6 +237,44 @@ func rules(cfg *config.Config, logger log.Logger) map[string]map[string]interfac return ret } +func spacesRules(cfg *config.Config, logger log.Logger) map[string]map[string]interface{} { + + // if a list of rules is given it overrides the generated rules from below + if len(cfg.Reva.StorageRegistry.Rules) > 0 { + rules := map[string]map[string]interface{}{} + for i := range cfg.Reva.StorageRegistry.Rules { + parts := strings.SplitN(cfg.Reva.StorageRegistry.Rules[i], "=", 2) + rules[parts[0]] = map[string]interface{}{"address": parts[1]} + } + return rules + } + + // check if the rules have to be read from a json file + if cfg.Reva.StorageRegistry.JSON != "" { + data, err := ioutil.ReadFile(cfg.Reva.StorageRegistry.JSON) + if err != nil { + logger.Error().Err(err).Msg("Failed to read storage registry rules from JSON file: " + cfg.Reva.StorageRegistry.JSON) + return nil + } + var rules map[string]map[string]interface{} + if err = json.Unmarshal(data, &rules); err != nil { + logger.Error().Err(err).Msg("Failed to unmarshal storage registry rules") + return nil + } + return rules + } + + // generate rules based on default config + return map[string]map[string]interface{}{ + "/personal": {"address": cfg.Reva.StorageUsers.Endpoint}, + // public link storage returns the mount id of the actual storage + "/public": {"address": cfg.Reva.StoragePublicLink.Endpoint}, + // TODO shares + //"/shares": {"address": cfg.Reva.StoragePublicLink.Endpoint}, + // medatada storage not part of the global namespace + } +} + func mimetypes(cfg *config.Config, logger log.Logger) []map[string]interface{} { type mimeTypeConfig struct { diff --git a/storage/pkg/command/storagehome.go b/storage/pkg/command/storagehome.go index bbeca4d70..247bf8552 100644 --- a/storage/pkg/command/storagehome.go +++ b/storage/pkg/command/storagehome.go @@ -106,7 +106,6 @@ func storageHomeConfigFromStruct(c *cli.Context, cfg *config.Config) map[string] "storageprovider": map[string]interface{}{ "driver": cfg.Reva.StorageHome.Driver, "drivers": storagedrivers.HomeDrivers(cfg), - "mount_path": cfg.Reva.StorageHome.MountPath, "mount_id": cfg.Reva.StorageHome.MountID, "expose_data_server": cfg.Reva.StorageHome.ExposeDataServer, "data_server_url": cfg.Reva.StorageHome.DataServerURL, diff --git a/storage/pkg/command/storagemetadata.go b/storage/pkg/command/storagemetadata.go index 1c84313a3..f77d1eca3 100644 --- a/storage/pkg/command/storagemetadata.go +++ b/storage/pkg/command/storagemetadata.go @@ -132,7 +132,6 @@ func storageMetadataFromStruct(c *cli.Context, cfg *config.Config) map[string]in }, "services": map[string]interface{}{ "storageprovider": map[string]interface{}{ - "mount_path": "/meta", "driver": cfg.Reva.StorageMetadata.Driver, "drivers": storagedrivers.MetadataDrivers(cfg), "data_server_url": cfg.Reva.StorageMetadata.DataServerURL, diff --git a/storage/pkg/command/storagepubliclink.go b/storage/pkg/command/storagepubliclink.go index edd73c9ad..22591f9b2 100644 --- a/storage/pkg/command/storagepubliclink.go +++ b/storage/pkg/command/storagepubliclink.go @@ -101,8 +101,6 @@ func storagePublicLinkConfigFromStruct(c *cli.Context, cfg *config.Config) map[s }, "services": map[string]interface{}{ "publicstorageprovider": map[string]interface{}{ - "mount_path": cfg.Reva.StoragePublicLink.MountPath, - "mount_id": cfg.Reva.StoragePublicLink.MountID, "gateway_addr": cfg.Reva.Gateway.Endpoint, }, "authprovider": map[string]interface{}{ diff --git a/storage/pkg/command/storageusers.go b/storage/pkg/command/storageusers.go index 7bb7aa6c0..9d671949a 100644 --- a/storage/pkg/command/storageusers.go +++ b/storage/pkg/command/storageusers.go @@ -106,7 +106,6 @@ func storageUsersConfigFromStruct(c *cli.Context, cfg *config.Config) map[string "storageprovider": map[string]interface{}{ "driver": cfg.Reva.StorageUsers.Driver, "drivers": storagedrivers.UserDrivers(cfg), - "mount_path": cfg.Reva.StorageUsers.MountPath, "mount_id": cfg.Reva.StorageUsers.MountID, "expose_data_server": cfg.Reva.StorageUsers.ExposeDataServer, "data_server_url": cfg.Reva.StorageUsers.DataServerURL,