Merge pull request #2061 from aduffeck/owncloudsql-integration

Integrate the owncloudsql storage driver
This commit is contained in:
Jörn Friedrich Dreyer
2021-07-05 15:50:46 +02:00
committed by GitHub
8 changed files with 125 additions and 8 deletions

View File

@@ -85,6 +85,19 @@ 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,
"enable_home": cfg.Reva.Storages.OwnCloudSQL.EnableHome,
"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

@@ -159,14 +159,15 @@ type PublicStorage struct {
// StorageConfig combines all available storage driver configuration parts.
type StorageConfig struct {
Home DriverCommon
EOS DriverEOS
Local DriverCommon
OwnCloud DriverOwnCloud
S3 DriverS3
S3NG DriverS3NG
Common DriverCommon
OCIS DriverOCIS
Home DriverCommon
EOS DriverEOS
Local DriverCommon
OwnCloud DriverOwnCloud
OwnCloudSQL DriverOwnCloudSQL
S3 DriverS3
S3NG DriverS3NG
Common DriverCommon
OCIS DriverOCIS
// TODO checksums ... figure out what that is supposed to do
}
@@ -258,6 +259,18 @@ type DriverOwnCloud struct {
Scan bool
}
// DriverOwnCloudSQL defines the available ownCloudSQL storage driver configuration.
type DriverOwnCloudSQL struct {
DriverCommon
UploadInfoDir string
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,83 @@
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-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") -}}