Integrate the owncloudsql storage driver

This commit is contained in:
André Duffeck
2021-05-18 09:40:24 +02:00
parent 7eb86e9b07
commit 84e82b2686
8 changed files with 135 additions and 0 deletions

View File

@@ -85,6 +85,21 @@ func drivers(cfg *config.Config) map[string]interface{} {
"scan": cfg.Reva.Storages.OwnCloud.Scan,
"userprovidersvc": cfg.Reva.Users.Endpoint,
},
"owncloudsql": map[string]interface{}{
"datadirectory": cfg.Reva.Storages.OwnCloudSql.Root,
"upload_info_dir": cfg.Reva.Storages.OwnCloudSql.UploadInfoDir,
"sharedirectory": cfg.Reva.Storages.OwnCloudSql.ShareFolder,
"user_layout": cfg.Reva.Storages.OwnCloudSql.UserLayout,
"redis": cfg.Reva.Storages.OwnCloudSql.Redis,
"enable_home": cfg.Reva.Storages.OwnCloudSql.EnableHome,
"scan": cfg.Reva.Storages.OwnCloudSql.Scan,
"dbusername": cfg.Reva.Storages.OwnCloudSql.DBUsername,
"dbpassword": cfg.Reva.Storages.OwnCloudSql.DBPassword,
"dbhost": cfg.Reva.Storages.OwnCloudSql.DBHost,
"dbport": cfg.Reva.Storages.OwnCloudSql.DBPort,
"dbname": cfg.Reva.Storages.OwnCloudSql.DBName,
"userprovidersvc": cfg.Reva.Users.Endpoint,
},
"ocis": map[string]interface{}{
"root": cfg.Reva.Storages.Common.Root,
"enable_home": cfg.Reva.Storages.Common.EnableHome,

View File

@@ -49,6 +49,7 @@ func StorageHome(cfg *config.Config) *cli.Command {
cfg.Reva.Storages.EOS.EnableHome = true
cfg.Reva.Storages.Local.EnableHome = true
cfg.Reva.Storages.OwnCloud.EnableHome = true
cfg.Reva.Storages.OwnCloudSql.EnableHome = true
cfg.Reva.Storages.S3.EnableHome = true
cfg.Reva.Storages.S3NG.EnableHome = true
}

View File

@@ -49,6 +49,7 @@ func StorageUsers(cfg *config.Config) *cli.Command {
cfg.Reva.Storages.EOS.EnableHome = true
cfg.Reva.Storages.Local.EnableHome = true
cfg.Reva.Storages.OwnCloud.EnableHome = true
cfg.Reva.Storages.OwnCloudSql.EnableHome = true
cfg.Reva.Storages.S3.EnableHome = true
cfg.Reva.Storages.S3NG.EnableHome = true
}

View File

@@ -163,6 +163,7 @@ type StorageConfig struct {
EOS DriverEOS
Local DriverCommon
OwnCloud DriverOwnCloud
OwnCloudSql DriverOwnCloudSql
S3 DriverS3
S3NG DriverS3NG
Common DriverCommon
@@ -258,6 +259,20 @@ type DriverOwnCloud struct {
Scan bool
}
// DriverOwnCloudSql defines the available ownCloudSql storage driver configuration.
type DriverOwnCloudSql struct {
DriverCommon
UploadInfoDir string
Redis string
Scan bool
DBUsername string
DBPassword string
DBHost string
DBPort int
DBName string
}
// DriverS3 defines the available S3 storage driver configuration.
type DriverS3 struct {
DriverCommon

View File

@@ -0,0 +1,97 @@
package flagset
import (
"github.com/micro/cli/v2"
"github.com/owncloud/ocis/ocis-pkg/flags"
"github.com/owncloud/ocis/storage/pkg/config"
)
// DriverOwnCloudSqlWithConfig applies cfg to the root flagset
func DriverOwnCloudSqlWithConfig(cfg *config.Config) []cli.Flag {
return []cli.Flag{
&cli.StringFlag{
Name: "storage-owncloudsql-datadir",
Value: flags.OverrideDefaultString(cfg.Reva.Storages.OwnCloudSql.Root, "/var/tmp/ocis/storage/owncloud"),
Usage: "the path to the owncloudsql data directory",
EnvVars: []string{"STORAGE_DRIVER_OWNCLOUDSQL_DATADIR"},
Destination: &cfg.Reva.Storages.OwnCloudSql.Root,
},
&cli.StringFlag{
Name: "storage-owncloudsql-uploadinfo-dir",
Value: flags.OverrideDefaultString(cfg.Reva.Storages.OwnCloudSql.UploadInfoDir, "/var/tmp/ocis/storage/uploadinfo"),
Usage: "the path to the tus upload info directory",
EnvVars: []string{"STORAGE_DRIVER_OWNCLOUDSQL_UPLOADINFO_DIR"},
Destination: &cfg.Reva.Storages.OwnCloudSql.UploadInfoDir,
},
&cli.StringFlag{
Name: "storage-owncloudsql-share-folder",
Value: flags.OverrideDefaultString(cfg.Reva.Storages.OwnCloudSql.ShareFolder, "/Shares"),
Usage: "name of the shares folder",
EnvVars: []string{"STORAGE_DRIVER_OWNCLOUDSQL_SHARE_FOLDER"},
Destination: &cfg.Reva.Storages.OwnCloudSql.ShareFolder,
},
&cli.BoolFlag{
Name: "storage-owncloudsql-scan",
Value: flags.OverrideDefaultBool(cfg.Reva.Storages.OwnCloudSql.Scan, true),
Usage: "scan files on startup to add fileids",
EnvVars: []string{"STORAGE_DRIVER_OWNCLOUDSQL_SCAN"},
Destination: &cfg.Reva.Storages.OwnCloudSql.Scan,
},
&cli.StringFlag{
Name: "storage-owncloudsql-redis",
Value: flags.OverrideDefaultString(cfg.Reva.Storages.OwnCloudSql.Redis, ":6379"),
Usage: "the address of the redis server",
EnvVars: []string{"STORAGE_DRIVER_OWNCLOUDSQL_REDIS_ADDR"},
Destination: &cfg.Reva.Storages.OwnCloudSql.Redis,
},
&cli.BoolFlag{
Name: "storage-owncloudsql-enable-home",
Value: flags.OverrideDefaultBool(cfg.Reva.Storages.OwnCloudSql.EnableHome, false),
Usage: "enable the creation of home storages",
EnvVars: []string{"STORAGE_DRIVER_OWNCLOUDSQL_ENABLE_HOME"},
Destination: &cfg.Reva.Storages.OwnCloudSql.EnableHome,
},
&cli.StringFlag{
Name: "storage-owncloudsql-layout",
Value: flags.OverrideDefaultString(cfg.Reva.Storages.OwnCloudSql.UserLayout, "{{.Username}}"),
Usage: `"layout of the users home dir path on disk, in addition to {{.Username}}, {{.Mail}}, {{.Id.OpaqueId}}, {{.Id.Idp}} also supports prefixing dirs: "{{substr 0 1 .Username}}/{{.Username}}" will turn "Einstein" into "Ei/Einstein" `,
EnvVars: []string{"STORAGE_DRIVER_OWNCLOUDSQL_LAYOUT"},
Destination: &cfg.Reva.Storages.OwnCloudSql.UserLayout,
},
&cli.StringFlag{
Name: "storage-owncloudsql-dbusername",
Value: flags.OverrideDefaultString(cfg.Reva.Storages.OwnCloudSql.DBUsername, "owncloud"),
Usage: `"username for accessing the database" `,
EnvVars: []string{"STORAGE_DRIVER_OWNCLOUDSQL_DBUSERNAME"},
Destination: &cfg.Reva.Storages.OwnCloudSql.DBUsername,
},
&cli.StringFlag{
Name: "storage-owncloudsql-dbpassword",
Value: flags.OverrideDefaultString(cfg.Reva.Storages.OwnCloudSql.DBPassword, "owncloud"),
Usage: `"password for accessing the database" `,
EnvVars: []string{"STORAGE_DRIVER_OWNCLOUDSQL_DBPASSWORD"},
Destination: &cfg.Reva.Storages.OwnCloudSql.DBPassword,
},
&cli.StringFlag{
Name: "storage-owncloudsql-dbhost",
Value: cfg.Reva.Storages.OwnCloudSql.DBHost,
Usage: `"the database hostname or IP address" `,
EnvVars: []string{"STORAGE_DRIVER_OWNCLOUDSQL_DBHOST"},
Destination: &cfg.Reva.Storages.OwnCloudSql.DBHost,
},
&cli.IntFlag{
Name: "storage-owncloudsql-dbport",
Value: flags.OverrideDefaultInt(cfg.Reva.Storages.OwnCloudSql.DBPort, 3306),
Usage: `"port the database listens on" `,
EnvVars: []string{"STORAGE_DRIVER_OWNCLOUDSQL_DBPORT"},
Destination: &cfg.Reva.Storages.OwnCloudSql.DBPort,
},
&cli.StringFlag{
Name: "storage-owncloudsql-dbname",
Value: flags.OverrideDefaultString(cfg.Reva.Storages.OwnCloudSql.DBName, "owncloud"),
Usage: `"the database name" `,
EnvVars: []string{"STORAGE_DRIVER_OWNCLOUDSQL_DBNAME"},
Destination: &cfg.Reva.Storages.OwnCloudSql.DBName,
},
}
}

View File

@@ -155,6 +155,7 @@ func StorageHomeWithConfig(cfg *config.Config) []cli.Flag {
flags = append(flags, DriverEOSWithConfig(cfg)...)
flags = append(flags, DriverLocalWithConfig(cfg)...)
flags = append(flags, DriverOwnCloudWithConfig(cfg)...)
flags = append(flags, DriverOwnCloudSqlWithConfig(cfg)...)
flags = append(flags, DriverOCISWithConfig(cfg)...)
flags = append(flags, DriverS3NGWithConfig(cfg)...)

View File

@@ -145,6 +145,7 @@ func StorageUsersWithConfig(cfg *config.Config) []cli.Flag {
flags = append(flags, DriverEOSWithConfig(cfg)...)
flags = append(flags, DriverLocalWithConfig(cfg)...)
flags = append(flags, DriverOwnCloudWithConfig(cfg)...)
flags = append(flags, DriverOwnCloudSqlWithConfig(cfg)...)
flags = append(flags, DriverOCISWithConfig(cfg)...)
flags = append(flags, DriverS3NGWithConfig(cfg)...)

View File

@@ -110,6 +110,10 @@ Example: Set the home and users Storage Provider to `ocis`
{{ template "option" (list .Options "DriverOwnCloudWithConfig") -}}
### ownCloudSql Driver
{{ template "option" (list .Options "DriverOwnCloudSqlWithConfig") -}}
### Ocis Driver
{{ template "option" (list .Options "DriverOCISWithConfig") -}}