Make all paths configurable and default to

Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
This commit is contained in:
Jörn Friedrich Dreyer
2020-12-14 07:51:17 +00:00
parent ee7b3213b3
commit 8a33993d76
24 changed files with 72 additions and 22 deletions
+1 -1
View File
@@ -143,7 +143,7 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag {
&cli.StringFlag{ &cli.StringFlag{
Name: "storage-disk-path", Name: "storage-disk-path",
Value: "", Value: "",
Usage: "Path on the local disk, e.g. /var/tmp/ocis-accounts", Usage: "Path on the local disk, e.g. /var/tmp/ocis/accounts",
EnvVars: []string{"ACCOUNTS_STORAGE_DISK_PATH"}, EnvVars: []string{"ACCOUNTS_STORAGE_DISK_PATH"},
Destination: &cfg.Repo.Disk.Path, Destination: &cfg.Repo.Disk.Path,
}, },
@@ -0,0 +1,5 @@
Change: Make all paths configurable and default to `/var/tmp/ocis/<service>/...`
Aligned all services to use a subdir of `/var/tmp/ocis/` by default. Also made some missing temp paths configurable via env vars and config flags.
https://github.com/owncloud/ocis/pulls/1080
+1 -1
View File
@@ -120,7 +120,7 @@ To provide the other storage aspects we plan to implement a FUSE overlay filesys
This is the current default storage driver. While it implements the file tree (using redis, including id based lookup), ETag propagation, trash, versions and sharing (including expiry) using the data directory layout of ownCloud 10 it has [known limitations](https://github.com/owncloud/core/issues/28095) that cannot be fixed without changing the actual layout on disk. This is the current default storage driver. While it implements the file tree (using redis, including id based lookup), ETag propagation, trash, versions and sharing (including expiry) using the data directory layout of ownCloud 10 it has [known limitations](https://github.com/owncloud/core/issues/28095) that cannot be fixed without changing the actual layout on disk.
To setup it up properly in a distributed fashion, the storage-home and the storage-oc need to share the same underlying FS. Their "data" counterparts also need access to the same shared FS. To setup it up properly in a distributed fashion, the storage-home and the storage-oc need to share the same underlying FS. Their "data" counterparts also need access to the same shared FS.
For a simple docker-compose setup, you can create a volume which will be used by the "storage-storage-home", "storage-storage-home-data", "storage-storage-oc" and "storage-storage-oc-data" containers. Using the `owncloud/ocis` docker image, the volume would need to be hooked in the `/var/tmp/ocis` folder insde the containers. For a simple docker-compose setup, you can create a volume which will be used by the "storage-storage-home", "storage-storage-home-data", "storage-storage-oc" and "storage-storage-oc-data" containers. Using the `owncloud/ocis` docker image, the volume would need to be hooked in the `/var/tmp/ocis` folder inside the containers.
- tree provided by a POSIX filesystem - tree provided by a POSIX filesystem
- file layout is mapped to the old ownCloud 10 layout - file layout is mapped to the old ownCloud 10 layout
+1 -1
View File
@@ -29,7 +29,7 @@ chmod +x ocis
./ocis server ./ocis server
``` ```
The default primary storage location is `/var/tmp/`. You can change that value by configuration. The default primary storage location is `/var/tmp/ocis`. You can change that value by configuration.
### Docker ### Docker
+1 -1
View File
@@ -251,7 +251,7 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag {
Name: "identifier-client-path", Name: "identifier-client-path",
Usage: "Path to the identifier web client base folder", Usage: "Path to the identifier web client base folder",
EnvVars: []string{"KONNECTD_IDENTIFIER_CLIENT_PATH"}, EnvVars: []string{"KONNECTD_IDENTIFIER_CLIENT_PATH"},
Value: "/var/tmp/konnectd", Value: "/var/tmp/ocis/konnectd",
Destination: &cfg.Konnectd.IdentifierClientPath, Destination: &cfg.Konnectd.IdentifierClientPath,
}, },
&cli.StringFlag{ &cli.StringFlag{
+1 -1
View File
@@ -45,7 +45,7 @@ type NonUnique struct {
} }
// NewNonUniqueIndexWithOptions instantiates a new NonUniqueIndex instance. // NewNonUniqueIndexWithOptions instantiates a new NonUniqueIndex instance.
// /var/tmp/ocis-accounts/index.cs3/Pets/Bro* // /var/tmp/ocis/accounts/index.cs3/Pets/Bro*
// ├── Brown/ // ├── Brown/
// │ └── rebef-123 -> /var/tmp/testfiles-395764020/pets/rebef-123 // │ └── rebef-123 -> /var/tmp/testfiles-395764020/pets/rebef-123
// ├── Green/ // ├── Green/
+1 -1
View File
@@ -44,7 +44,7 @@ services:
# make accounts use ocis storage driver # make accounts use ocis storage driver
# TODO provision metadata storage in eos and switch to cs3 backend for accounts # TODO provision metadata storage in eos and switch to cs3 backend for accounts
ACCOUNTS_LOG_LEVEL: debug ACCOUNTS_LOG_LEVEL: debug
ACCOUNTS_STORAGE_DISK_PATH: /var/tmp/ocis-accounts ACCOUNTS_STORAGE_DISK_PATH: /var/tmp/ocis/accounts
# TODO make id the default in ocis-storage # TODO make id the default in ocis-storage
STORAGE_DRIVER_EOS_LAYOUT: "{{substr 0 1 .Id.OpaqueId}}/{{.Id.OpaqueId}}" STORAGE_DRIVER_EOS_LAYOUT: "{{substr 0 1 .Id.OpaqueId}}/{{.Id.OpaqueId}}"
STORAGE_FRONTEND_PUBLIC_URL: https://${OCIS_DOMAIN:-localhost}:9200 STORAGE_FRONTEND_PUBLIC_URL: https://${OCIS_DOMAIN:-localhost}:9200
+1 -1
View File
@@ -173,7 +173,7 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag {
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: "data-path", Name: "data-path",
Value: "/var/tmp/ocis-settings", Value: "/var/tmp/ocis/settings",
Usage: "Mount path for the storage", Usage: "Mount path for the storage",
EnvVars: []string{"SETTINGS_DATA_PATH"}, EnvVars: []string{"SETTINGS_DATA_PATH"},
Destination: &cfg.Service.DataPath, Destination: &cfg.Service.DataPath,
+1 -1
View File
@@ -51,7 +51,7 @@ cp -r "$WEB_PATH/tests" "./$testFolder"
export NODE_TLS_REJECT_UNAUTHORIZED='0' export NODE_TLS_REJECT_UNAUTHORIZED='0'
export SERVER_HOST=${SERVER_HOST:-https://localhost:9200} export SERVER_HOST=${SERVER_HOST:-https://localhost:9200}
export BACKEND_HOST=${BACKEND_HOST:-https://localhost:9200} export BACKEND_HOST=${BACKEND_HOST:-https://localhost:9200}
export OCIS_SETTINGS_STORE=${OCIS_SETTINGS_STORE:-"/var/tmp/ocis-settings"} export OCIS_SETTINGS_STORE=${OCIS_SETTINGS_STORE:-"/var/tmp/ocis/settings"}
export RUN_ON_OCIS=true export RUN_ON_OCIS=true
export TEST_TAGS=${TEST_TAGS:-"not @skip"} export TEST_TAGS=${TEST_TAGS:-"not @skip"}
+1 -1
View File
@@ -130,7 +130,7 @@ func Frontend(cfg *config.Config) *cli.Command {
}, },
"ocdav": map[string]interface{}{ "ocdav": map[string]interface{}{
"prefix": cfg.Reva.Frontend.OCDavPrefix, "prefix": cfg.Reva.Frontend.OCDavPrefix,
"chunk_folder": "/var/tmp/ocis/chunks", "chunk_folder": cfg.Reva.OCDav.ChunkFolder,
"files_namespace": cfg.Reva.OCDav.DavFilesNamespace, "files_namespace": cfg.Reva.OCDav.DavFilesNamespace,
"webdav_namespace": cfg.Reva.OCDav.WebdavNamespace, "webdav_namespace": cfg.Reva.OCDav.WebdavNamespace,
"timeout": 86400, "timeout": 86400,
+5
View File
@@ -97,6 +97,11 @@ func Sharing(cfg *config.Config) *cli.Command {
}, },
"publicshareprovider": map[string]interface{}{ "publicshareprovider": map[string]interface{}{
"driver": cfg.Reva.Sharing.PublicDriver, "driver": cfg.Reva.Sharing.PublicDriver,
"drivers": map[string]interface{}{
"json": map[string]interface{}{
"file": cfg.Reva.Sharing.PublicJSONFile,
},
},
}, },
}, },
}, },
+1
View File
@@ -102,6 +102,7 @@ func StorageHome(cfg *config.Config) *cli.Command {
"mount_id": cfg.Reva.StorageHome.MountID, "mount_id": cfg.Reva.StorageHome.MountID,
"expose_data_server": cfg.Reva.StorageHome.ExposeDataServer, "expose_data_server": cfg.Reva.StorageHome.ExposeDataServer,
"data_server_url": cfg.Reva.StorageHome.DataServerURL, "data_server_url": cfg.Reva.StorageHome.DataServerURL,
"tmp_folder": cfg.Reva.StorageHome.TempFolder,
}, },
}, },
}, },
+1
View File
@@ -111,6 +111,7 @@ func StorageMetadata(cfg *config.Config) *cli.Command {
"driver": cfg.Reva.StorageMetadata.Driver, "driver": cfg.Reva.StorageMetadata.Driver,
"drivers": drivers(cfg), "drivers": drivers(cfg),
"data_server_url": cfg.Reva.StorageMetadata.DataServerURL, "data_server_url": cfg.Reva.StorageMetadata.DataServerURL,
"tmp_folder": cfg.Reva.StorageMetadata.TempFolder,
}, },
}, },
}, },
+1
View File
@@ -102,6 +102,7 @@ func StorageUsers(cfg *config.Config) *cli.Command {
"mount_id": cfg.Reva.StorageUsers.MountID, "mount_id": cfg.Reva.StorageUsers.MountID,
"expose_data_server": cfg.Reva.StorageUsers.ExposeDataServer, "expose_data_server": cfg.Reva.StorageUsers.ExposeDataServer,
"data_server_url": cfg.Reva.StorageUsers.DataServerURL, "data_server_url": cfg.Reva.StorageUsers.DataServerURL,
"tmp_folder": cfg.Reva.StorageUsers.TempFolder,
}, },
}, },
}, },
+6 -4
View File
@@ -36,9 +36,10 @@ type StorageRegistry struct {
// Sharing defines the available sharing configuration. // Sharing defines the available sharing configuration.
type Sharing struct { type Sharing struct {
Port Port
UserDriver string UserDriver string
UserJSONFile string UserJSONFile string
PublicDriver string PublicDriver string
PublicJSONFile string
} }
// Port defines the available port configuration. // Port defines the available port configuration.
@@ -82,7 +83,7 @@ type FrontendPort struct {
DatagatewayPrefix string DatagatewayPrefix string
OCDavPrefix string OCDavPrefix string
OCSPrefix string OCSPrefix string
OCSSharePrefix string OCSSharePrefix string
PublicURL string PublicURL string
Middleware Middleware Middleware Middleware
} }
@@ -282,6 +283,7 @@ type LDAPSchema struct {
// OCDav defines the available ocdav configuration. // OCDav defines the available ocdav configuration.
type OCDav struct { type OCDav struct {
ChunkFolder string
WebdavNamespace string WebdavNamespace string
DavFilesNamespace string DavFilesNamespace string
} }
+1 -1
View File
@@ -10,7 +10,7 @@ func DriverLocalWithConfig(cfg *config.Config) []cli.Flag {
return []cli.Flag{ return []cli.Flag{
&cli.StringFlag{ &cli.StringFlag{
Name: "storage-local-root", Name: "storage-local-root",
Value: "/var/tmp/ocis/local", Value: "/var/tmp/ocis/storage/local",
Usage: "the path to the local storage root", Usage: "the path to the local storage root",
EnvVars: []string{"STORAGE_DRIVER_LOCAL_ROOT"}, EnvVars: []string{"STORAGE_DRIVER_LOCAL_ROOT"},
Destination: &cfg.Reva.Storages.Local.Root, Destination: &cfg.Reva.Storages.Local.Root,
+2 -2
View File
@@ -10,14 +10,14 @@ func DriverOwnCloudWithConfig(cfg *config.Config) []cli.Flag {
return []cli.Flag{ return []cli.Flag{
&cli.StringFlag{ &cli.StringFlag{
Name: "storage-owncloud-datadir", Name: "storage-owncloud-datadir",
Value: "/var/tmp/ocis/owncloud", Value: "/var/tmp/ocis/storage/owncloud",
Usage: "the path to the owncloud data directory", Usage: "the path to the owncloud data directory",
EnvVars: []string{"STORAGE_DRIVER_OWNCLOUD_DATADIR"}, EnvVars: []string{"STORAGE_DRIVER_OWNCLOUD_DATADIR"},
Destination: &cfg.Reva.Storages.OwnCloud.Root, Destination: &cfg.Reva.Storages.OwnCloud.Root,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: "storage-owncloud-uploadinfo-dir", Name: "storage-owncloud-uploadinfo-dir",
Value: "/var/tmp/ocis/uploadinfo", Value: "/var/tmp/ocis/storage/uploadinfo",
Usage: "the path to the tus upload info directory", Usage: "the path to the tus upload info directory",
EnvVars: []string{"STORAGE_DRIVER_OWNCLOUD_UPLOADINFO_DIR"}, EnvVars: []string{"STORAGE_DRIVER_OWNCLOUD_UPLOADINFO_DIR"},
Destination: &cfg.Reva.Storages.OwnCloud.UploadInfoDir, Destination: &cfg.Reva.Storages.OwnCloud.UploadInfoDir,
+9 -2
View File
@@ -30,11 +30,18 @@ func FrontendWithConfig(cfg *config.Config) []cli.Flag {
// OCDav // OCDav
&cli.StringFlag{
Name: "chunk-folder",
Value: "/var/tmp/ocis/tmp/chunks",
Usage: "temp directory for chunked uploads",
EnvVars: []string{"STORAGE_CHUNK_FOLDER"},
Destination: &cfg.Reva.OCDav.WebdavNamespace,
},
&cli.StringFlag{ &cli.StringFlag{
Name: "webdav-namespace", Name: "webdav-namespace",
Value: "/home/", Value: "/home/",
Usage: "Namespace prefix for the /webdav endpoint", Usage: "Namespace prefix for the /webdav endpoint",
EnvVars: []string{"WEBDAV_NAMESPACE"}, EnvVars: []string{"STORAGE_WEBDAV_NAMESPACE"},
Destination: &cfg.Reva.OCDav.WebdavNamespace, Destination: &cfg.Reva.OCDav.WebdavNamespace,
}, },
@@ -44,7 +51,7 @@ func FrontendWithConfig(cfg *config.Config) []cli.Flag {
Name: "dav-files-namespace", Name: "dav-files-namespace",
Value: "/users/", Value: "/users/",
Usage: "Namespace prefix for the webdav /dav/files endpoint", Usage: "Namespace prefix for the webdav /dav/files endpoint",
EnvVars: []string{"DAV_FILES_NAMESPACE"}, EnvVars: []string{"STORAGE_DAV_FILES_NAMESPACE"},
Destination: &cfg.Reva.OCDav.DavFilesNamespace, Destination: &cfg.Reva.OCDav.DavFilesNamespace,
}, },
+8 -1
View File
@@ -51,7 +51,7 @@ func SharingWithConfig(cfg *config.Config) []cli.Flag {
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: "user-json-file", Name: "user-json-file",
Value: "/var/tmp/ocis/shares.json", Value: "/var/tmp/ocis/storage/shares.json",
Usage: "file used to persist shares for the UserShareProvider", Usage: "file used to persist shares for the UserShareProvider",
EnvVars: []string{"STORAGE_SHARING_USER_JSON_FILE"}, EnvVars: []string{"STORAGE_SHARING_USER_JSON_FILE"},
Destination: &cfg.Reva.Sharing.UserJSONFile, Destination: &cfg.Reva.Sharing.UserJSONFile,
@@ -63,6 +63,13 @@ func SharingWithConfig(cfg *config.Config) []cli.Flag {
EnvVars: []string{"STORAGE_SHARING_PUBLIC_DRIVER"}, EnvVars: []string{"STORAGE_SHARING_PUBLIC_DRIVER"},
Destination: &cfg.Reva.Sharing.PublicDriver, Destination: &cfg.Reva.Sharing.PublicDriver,
}, },
&cli.StringFlag{
Name: "public-json-file",
Value: "/var/tmp/ocis/storage/publicshares.json",
Usage: "file used to persist shares for the PublicShareProvider",
EnvVars: []string{"STORAGE_SHARING_PUBLIC_JSON_FILE"},
Destination: &cfg.Reva.Sharing.PublicJSONFile,
},
} }
flags = append(flags, TracingWithConfig(cfg)...) flags = append(flags, TracingWithConfig(cfg)...)
+7
View File
@@ -111,6 +111,13 @@ func StorageHomeWithConfig(cfg *config.Config) []cli.Flag {
EnvVars: []string{"STORAGE_HOME_HTTP_PREFIX"}, EnvVars: []string{"STORAGE_HOME_HTTP_PREFIX"},
Destination: &cfg.Reva.StorageHome.HTTPPrefix, Destination: &cfg.Reva.StorageHome.HTTPPrefix,
}, },
&cli.StringFlag{
Name: "tmp-folder",
Value: "/var/tmp/ocis/tmp/home",
Usage: "path to tmp folder",
EnvVars: []string{"STORAGE_HOME_TMP_FOLDER"},
Destination: &cfg.Reva.StorageHome.TempFolder,
},
&cli.BoolFlag{ &cli.BoolFlag{
Name: "enable-home", Name: "enable-home",
Value: true, Value: true,
+8 -1
View File
@@ -50,6 +50,13 @@ func StorageMetadata(cfg *config.Config) []cli.Flag {
EnvVars: []string{"STORAGE_METADATA_HTTP_ADDR"}, EnvVars: []string{"STORAGE_METADATA_HTTP_ADDR"},
Destination: &cfg.Reva.StorageMetadata.HTTPAddr, Destination: &cfg.Reva.StorageMetadata.HTTPAddr,
}, },
&cli.StringFlag{
Name: "tmp-folder",
Value: "/var/tmp/ocis/tmp/metadata",
Usage: "path to tmp folder",
EnvVars: []string{"STORAGE_METADATA_TMP_FOLDER"},
Destination: &cfg.Reva.StorageMetadata.TempFolder,
},
&cli.StringFlag{ &cli.StringFlag{
Name: "driver", Name: "driver",
Value: "ocis", Value: "ocis",
@@ -91,7 +98,7 @@ func StorageMetadata(cfg *config.Config) []cli.Flag {
flags = append(flags, flags = append(flags,
&cli.StringFlag{ &cli.StringFlag{
Name: "storage-root", Name: "storage-root",
Value: "/var/tmp/ocis/metadata", Value: "/var/tmp/ocis/storage/metadata",
Usage: "the path to the metadata storage root", Usage: "the path to the metadata storage root",
EnvVars: []string{"STORAGE_METADATA_ROOT"}, EnvVars: []string{"STORAGE_METADATA_ROOT"},
Destination: &cfg.Reva.Storages.Common.Root, Destination: &cfg.Reva.Storages.Common.Root,
+7
View File
@@ -108,6 +108,13 @@ func StorageUsersWithConfig(cfg *config.Config) []cli.Flag {
EnvVars: []string{"STORAGE_USERS_HTTP_PREFIX"}, EnvVars: []string{"STORAGE_USERS_HTTP_PREFIX"},
Destination: &cfg.Reva.StorageUsers.HTTPPrefix, Destination: &cfg.Reva.StorageUsers.HTTPPrefix,
}, },
&cli.StringFlag{
Name: "tmp-folder",
Value: "/var/tmp/ocis/tmp/users",
Usage: "path to tmp folder",
EnvVars: []string{"STORAGE_USERS_TMP_FOLDER"},
Destination: &cfg.Reva.StorageUsers.TempFolder,
},
// some drivers need to look up users at the gateway // some drivers need to look up users at the gateway
+1 -1
View File
@@ -131,7 +131,7 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag {
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: "data-path", Name: "data-path",
Value: "/var/tmp/ocis-store", Value: "/var/tmp/ocis/store",
Usage: "location of the store data path", Usage: "location of the store data path",
EnvVars: []string{"STORE_DATA_PATH"}, EnvVars: []string{"STORE_DATA_PATH"},
Destination: &cfg.Datapath, Destination: &cfg.Datapath,
+1 -1
View File
@@ -242,7 +242,7 @@ func (s *Service) Tables(ctx context.Context, in *proto.TablesRequest, out *prot
} }
// TODO sanitize key. As it may contain invalid characters, such as slashes. // TODO sanitize key. As it may contain invalid characters, such as slashes.
// file: /var/tmp/ocis-store/databases/{database}/{table}/{record.key}. // file: /var/tmp/ocis/store/databases/{database}/{table}/{record.key}.
func getID(database string, table string, key string) string { func getID(database string, table string, key string) string {
// TODO sanitize input. // TODO sanitize input.
return filepath.Join(database, table, key) return filepath.Join(database, table, key)