Skip to content

Commit

Permalink
decomposedfs: shard nodes per space
Browse files Browse the repository at this point in the history
Squashed commit of the following:

commit 4a5e9aad8632aefbdd47229f873272af4dab320d
Merge: e60fb6b a6eec6a
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Wed Feb 16 19:11:25 2022 +0000

    Merge branch 'edge' into nodes-per-space

commit e60fb6b
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Wed Feb 16 15:48:53 2022 +0000

    fix restore

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

commit 15db9ad
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Wed Feb 16 15:29:33 2022 +0000

    fix list trash

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

commit e4c1191
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Wed Feb 16 13:55:24 2022 +0000

    introduce new layout

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

commit dfd5eb3
Merge: 2698dc1 df1264d
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Tue Feb 15 13:15:19 2022 +0000

    Merge branch 'edge' into nodes-per-space

commit 2698dc1
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Tue Feb 15 13:13:33 2022 +0000

    start using correct node path

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

commit 2401678
Merge: 02da046 d217886
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Tue Feb 15 10:40:30 2022 +0000

    Merge branch 'edge' into nodes-per-space

commit 02da046
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Tue Feb 15 08:22:41 2022 +0000

    small fixes

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

commit 752c692
Merge: cbc1bed c7e6607
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Mon Feb 14 10:11:35 2022 +0000

    Merge branch 'edge' into nodes-per-space

commit cbc1bed
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Mon Feb 14 10:03:41 2022 +0000

    remove duplicate const

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

commit 5a666db
Author: David Christofas <[email protected]>
Date:   Wed Jan 12 17:15:05 2022 +0100

    store nodes of a space inside of the space

    This is still work in progress. In this state the node_test.go run
    successfully.

commit 20a38e4
Author: kobergj <[email protected]>
Date:   Fri Feb 11 10:31:52 2022 +0100

    Events (cs3org#2522)

    * first draft for event system - includes example

    Signed-off-by: jkoberg <[email protected]>

    * add event middleware

    Signed-off-by: jkoberg <[email protected]>

    * events: distinguish grantee userid and groupid

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * seperate consumer from publisher

    Signed-off-by: jkoberg <[email protected]>

    * code review suggestions

    Signed-off-by: jkoberg <[email protected]>

    * simplify example

    Signed-off-by: jkoberg <[email protected]>

    * add changelog

    Signed-off-by: jkoberg <[email protected]>

    * make nats server configurable

    Signed-off-by: jkoberg <[email protected]>

    * add license headers

    Signed-off-by: jkoberg <[email protected]>

    * cheat the linter

    Signed-off-by: jkoberg <[email protected]>

    Co-authored-by: Jörn Friedrich Dreyer <[email protected]>

commit 65bb12a
Author: Klaas Freitag <[email protected]>
Date:   Thu Feb 10 15:04:17 2022 +0100

    Consolidate all metadata Get's and Set's to central functions. (cs3org#2512)

    * Consolidate all metadata Get's and Set's to central functions.

    In the decomposed FS, access to xattr was spread all over. This
    patch consolidates that to use either the Node.SetMetadata() or
    xattrs.Set(). This allows us to hook in indexing for example.

    * hound and typos

    * Add changelog.

    * Some more fixes to use xattrs functions.

    * Fix function name in tests.

    * Fix some linting hints.

    * Even more linter warning fixes

    * Even more linting issues

    * And another iteration

    * Linter I hate you

    * Use proper Int formatting

    Co-authored-by: David Christofas <[email protected]>

    * Update pkg/storage/utils/decomposedfs/node/node.go

    Co-authored-by: David Christofas <[email protected]>

    * Update pkg/storage/utils/decomposedfs/node/node.go

    Co-authored-by: David Christofas <[email protected]>

    * Update pkg/storage/utils/decomposedfs/xattrs/xattrs.go

    Co-authored-by: David Christofas <[email protected]>

    * again linting

    * use correct variable in decomposedfs

    Co-authored-by: Jörn Friedrich Dreyer <[email protected]>
    Co-authored-by: David Christofas <[email protected]>

commit f283b98
Author: Andre Duffeck <[email protected]>
Date:   Thu Feb 10 14:48:17 2022 +0100

    Upgrade to ginkgo v2, increase test coverage (cs3org#2526)

    * Upgrade to ginkgo v2

    * Fix root info being counted twice

    * Do not try to list child non-containers

    * Improve generating response xml

    * DRY up code

    * Increase test coverage, port EncodePath benchmark to ginkgo

    Also add an assertion that its performanc does not decrease too much.

    * Add changelog

    * Fix hound issue

    * Add missing license header

    * Fix linter issue

commit c2c5a45
Author: Klaas Freitag <[email protected]>
Date:   Thu Feb 10 13:56:22 2022 +0100

    Some error cleanup steps in the decomposed FS (cs3org#2511)

    * Some error cleanup steps in the decomposed FS

    * Hound and changelog added.

    * Remove punctuation

    * Make CI happy

    * Improved error logging.

    Co-authored-by: David Christofas <[email protected]>

    * Update pkg/storage/utils/decomposedfs/decomposedfs.go

    Co-authored-by: David Christofas <[email protected]>

    Co-authored-by: David Christofas <[email protected]>
    Co-authored-by: Jörn Friedrich Dreyer <[email protected]>

commit b522aab
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Wed Feb 9 11:22:41 2022 +0100

    decomposedfs: add locking support (cs3org#2460)

    * decomposedfs: add locking support

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * add lock implementation, refactor error handling

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * introduce lock ctx

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * add locked error and status code mapping

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * read lockid from opaque into ctx for delete

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * decomposedfs: make delete respect lock

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * ocdav: simplify error code mapping

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * adjust to cs3 lock api update

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * utils: add and read plain opaque entries

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * fix delete lock

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * invalidate stat cache when setting lock

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * fix a few linter items

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * linter happyness

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * ocdav: implment unlock

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * lock caching and unlocking

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * read locks on folders

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * check lock on writes

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * always assume locktype write

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * ocis only supports exclusive locks

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * add precodition failed errtype

    * handle preconditionfailed in status conversion

    * omit empty xml tags in lockdiscovery

    * handle locked status on LOCK

    * document oc10 lock behaviour as comment

    * ocdav: handle errors for LOCK and UNLOCK

    * storage: change fs.Unlock signature

    * decomposedfs: refactor checkLock

    * add LookupReferenceForPath comment

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * gateway: ignore unimplemented add/denyGrant response

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * use http.StatusMethodNotAllowed for mkcol error case

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * make hound happy

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * ocdav: be more tolerant with the Lock-Token header

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * ocdav: allow setting infinity timeout

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * ocdav: use custem owner innerxml without href

    * update expected failures

    * ocdav: return conflict on missing intermediate target dir

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * decomposedfs: use checkLock() in the rest of cases

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * Do not choke when checking the lock of non-existent nodes

    * Linter fixes

    * Refactor: Move lock handling into the node domain

    * Also delete the lock file when deleting a node

    * Extract node lock-handling code into separate file, start writing tests

    * Add missing license header

    * Fix relocking already-locked nodes. Increase test coverage

    * Hounds be happy

    * Add unit tests for ReadLock and RefreshLock

    * Also cover readLocksIntoOpaque in the tests

    * Fix linter issue

    * Do not log full nodes, it's very expensive and not very helpful

    * Start adding grpc integration tests for locking

    * Fix setting the lock for file uploads

    * Allow for locking space-based resources

    * Make sure to log the error before it's getting overwritten

    * reuse xml.EscapeText directly

    Co-authored-by: David Christofas <[email protected]>

    * decomposedfs: use defer to close file when unlocking resource

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * ocdav: explain why some http states are commented

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * ocdav: use http header status constants

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * clarify add/deny grant log

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    * update expected failures

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    Co-authored-by: André Duffeck <[email protected]>
    Co-authored-by: David Christofas <[email protected]>

commit 4c185f9
Author: Michael Barz <[email protected]>
Date:   Tue Feb 8 14:17:16 2022 +0100

    remove creation of .space folder (cs3org#2519)

    * remove creation of .space folder

    * fix unit tests

    * fix integration tests

commit 68080f0
Author: PKiran <[email protected]>
Date:   Tue Feb 8 17:58:00 2022 +0545

    bump core commit id and update the expected failures (cs3org#2518)

commit be39db3
Author: David Christofas <[email protected]>
Date:   Tue Feb 8 10:16:30 2022 +0100

    Cleanup code (cs3org#2516)

    * pre-compile the chunking regex

    * reduce type conversions

    * add changelog

commit 57591c1
Author: Phil Davis <[email protected]>
Date:   Mon Feb 7 12:16:34 2022 +0545

    bump CORE_COMMITID to use new getPersonalSpaceIdForUser code in API tests (cs3org#2505)

commit 064ec82
Author: David Christofas <[email protected]>
Date:   Fri Feb 4 18:29:01 2022 +0100

    fix propfind listing for files (cs3org#2506)

commit 1aadbc8
Author: kobergj <[email protected]>
Date:   Fri Feb 4 12:55:25 2022 +0100

    [tests-only] Fix panic in storageSpaceFromNode (cs3org#2504)

    * fix panic in storageSpaceFromNode

    Signed-off-by: jkoberg <[email protected]>

    * check node for being nil

    Signed-off-by: jkoberg <[email protected]>

    * Revert "check node for being nil"

    This reverts commit e38228e.

commit 32384aa
Author: Willy Kloucek <[email protected]>
Date:   Fri Feb 4 12:48:23 2022 +0100

    unprotected ocs config endpoint (cs3org#2503)

    * remove protection from ocs config endpoint

    * remove passing ocs config test from expected failures

commit 27b3091
Author: kobergj <[email protected]>
Date:   Fri Feb 4 10:49:29 2022 +0100

    Restoring Spaces (cs3org#2458)

    * add restore functionality to decomposedfs

    Signed-off-by: jkoberg <[email protected]>

    * add changelog item

    Signed-off-by: jkoberg <[email protected]>

    * find trashed spaces

    Signed-off-by: jkoberg <[email protected]>

    * add includeTrashed paramter to ListSpaces call

    Signed-off-by: jkoberg <[email protected]>

    * only add * if neccessary

    Signed-off-by: jkoberg <[email protected]>

    * move instead delete to make restore possible

    Signed-off-by: jkoberg <[email protected]>

    * pass trashed information via Opaque

    Signed-off-by: jkoberg <[email protected]>

    * don't return trashed space for non owners

    Signed-off-by: jkoberg <[email protected]>

    * revert includeTrashed hack

    Signed-off-by: jkoberg <[email protected]>

    * no need to symlink trashed spaces any more

    Signed-off-by: jkoberg <[email protected]>

    * bad solution - just wanna paint it green

    Signed-off-by: jkoberg <[email protected]>

    * allow listing of deleted spaces

    Signed-off-by: jkoberg <[email protected]>

commit 2754a38
Author: Phil Davis <[email protected]>
Date:   Fri Feb 4 14:13:58 2022 +0545

    Bump CORE_COMMITID for API tests (cs3org#2496)

commit a8bfe6f
Author: David Christofas <[email protected]>
Date:   Thu Feb 3 17:54:58 2022 +0100

    add grants to list-spaces (cs3org#2498)

    When listing storage spaces we also want to have the spaces grants to be
    able to show who has access to the space.

    Co-authored-by: kobergj <[email protected]>

commit 05aca63
Author: Michael Barz <[email protected]>
Date:   Thu Feb 3 16:52:34 2022 +0100

    invalidate cache when modifying or deleting a space (cs3org#2500)

commit 99fdf2d
Author: David Christofas <[email protected]>
Date:   Thu Feb 3 16:21:45 2022 +0100

    fix spaces stat requests (cs3org#2501)

commit 0443b41
Author: Willy Kloucek <[email protected]>
Date:   Tue Feb 1 21:11:17 2022 +0100

    [edge] remove the ownCloud storage driver (cs3org#2495)

    * remove owncloud storage driver

    * remove owncloud storage driver integration tests and demo config files

commit affffea
Author: kobergj <[email protected]>
Date:   Tue Feb 1 11:04:33 2022 +0100

    [tests-only] Can't create folder names which are subset of "Shares" (cs3org#2484)

    * test fix with easy implementation

    Signed-off-by: jkoberg <[email protected]>

    * use same logic for other above path also

    Signed-off-by: jkoberg <[email protected]>

    * add special case handling to isSubPath

    Signed-off-by: jkoberg <[email protected]>

    * refine isSubpath logic

    Signed-off-by: jkoberg <[email protected]>

    * Stat on MKCOL before creating

    Signed-off-by: jkoberg <[email protected]>

    * update comment to not include typos

    Signed-off-by: jkoberg <[email protected]>

    * handle error correctly for MKCOL

    Signed-off-by: jkoberg <[email protected]>

commit a230234
Author: Amrita <[email protected]>
Date:   Fri Jan 28 20:35:07 2022 +0545

    Bump the commit id for tests (cs3org#2490)

commit 7498491
Author: Andre Duffeck <[email protected]>
Date:   Fri Jan 28 15:32:48 2022 +0100

    Make owncloudsql spaces aware (cs3org#2472)

    * Add ListStorages method

    * Implement ListStorageSpaces in owncloudsql

    * ResourceInfos do no longer contain the full path but only the basename

    * Handle references relative to a root

    * Fix space lookup, extract space functionality into a separate file

    * Use oc_mounts to find the storage roots

    This way it also works with storages with hashed IDs (that happens when
    the id exceeds a certain length).

    * Fix shares

    * Implement GetPath, fix GetPathById

    * Include the storage id when listing shares

    * Fix accepting declined shares

    * Ignore setting-grants-not-supported errors, storage grants are optional

    * Add changelog

    * Fix missing storage id from resource info

    * Fix field mask

    * Do not log error messages for unsupported grant calls

    * Fix hound issue

    * Fix changelog URL

    * Fix linter issue

    * Remove unfinished GetPath() code

    * Adapt expected failures

    * Cache user lookups in the oc10-sql share manager

    That leads to a massive performance boost.

commit 5d83ded
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Fri Jan 28 09:20:13 2022 +0100

    update cs3apis to include lock api changes (cs3org#2487)

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

commit 579aab4
Author: Phil Davis <[email protected]>
Date:   Fri Jan 28 00:26:51 2022 +0545

    Add end-of-line to expected-failures files (cs3org#2483)

commit 2e2a3f0
Author: David Christofas <[email protected]>
Date:   Thu Jan 27 15:46:06 2022 +0100

     [tests-only] Merge master into edge  (cs3org#2473)

    * [Build-deps] Additional rules for CODEOWNERS (cs3org#2323)

    * Remove share refs from trashbin (cs3org#2298)

    * Public link propfind (cs3org#2315)

    * fix public share type in propfinds (cs3org#2316)

    * Bump core commit id for tests (cs3org#2331)

    * Revert "Fix content disposition (cs3org#2303)" (cs3org#2332)

    This reverts commit 3cba223.

    * [Build-deps]: Bump github.com/gomodule/redigo from 1.8.5 to 1.8.6 (cs3org#2326)

    * [Build-deps]: Bump github.com/mitchellh/mapstructure from 1.4.2 to 1.4.3 (cs3org#2324)

    * [Build-deps]: Bump github.com/aws/aws-sdk-go from 1.42.9 to 1.42.19 (cs3org#2325)

    * fix app provider new file action and improve app provider error codes (cs3org#2210)

    * Parse URL path to determine file name (cs3org#2346)

    * v1.17.0

    * handle non existent spaces gracefully (cs3org#2354)

    * Bump core commit id for tests (cs3org#2365)

    * [Build-deps]: Bump github.com/minio/minio-go/v7 from 7.0.16 to 7.0.18 (cs3org#2363)

    * [Build-deps]: Bump github.com/ReneKroon/ttlcache/v2 from 2.9.0 to 2.10.0 (cs3org#2358)

    * [Build-deps]: Bump go.opentelemetry.io/otel/exporters/jaeger (cs3org#2362)

    * fix tests by pointing to the right owncloud/core commit id for tests (cs3org#2375)

    * add new file capabilties to ocs for the app provider (cs3org#2379)

    * Remove test from expected to fail and bump commit id (cs3org#2380)

    * add .drone.env to CODEOWNERS as it is part of the test files (cs3org#2378)

    * fix webdav copy for zero byte files (cs3org#2374)

    * Implement touch file (cs3org#2369)

    * implement cs3org/cs3apis#154

    * use TouchFile for the app provider

    * add changelog and comments

    * revert use TouchFile in app provider

    * fix resource typo

    Co-authored-by: Giuseppe Lo Presti <[email protected]>

    Co-authored-by: Giuseppe Lo Presti <[email protected]>

    * Dummy implementation of the Lock CS3APIs (cs3org#2350)

    * allow new file create with app provider on public links (cs3org#2385)

    * Bump core commit id and use core master for tests (cs3org#2391)

    * Add product to ocs Version struct (cs3org#2397)

    The web ui will announce the backend version in the javascript console
    and is supposed to include the product name as well. The version seems
    to be a good location for the product field as it already includes the
    software edition as well.

    * bump core commit id for tests (cs3org#2404)

    * [Build-deps]: Bump github.com/mattn/go-sqlite3 from 1.14.9 to 1.14.10 (cs3org#2409)

    * [Build-deps]: Bump github.com/minio/minio-go/v7 from 7.0.18 to 7.0.20 (cs3org#2408)

    * [Build-deps]: Bump github.com/rs/cors from 1.8.0 to 1.8.2 (cs3org#2399)

    * [Build-deps]: Bump github.com/ReneKroon/ttlcache/v2 (cs3org#2387)

    * [Build-deps]: Bump go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc (cs3org#2359)

    * [tests-only] format .drone.star (cs3org#2411)

    * update tus/tusd to version 1.8.0 (cs3org#2393)

    * Fixes for apps in public shares, project spaces for EOS driver (cs3org#2371)

    * [Build-deps]: Bump github.com/aws/aws-sdk-go from 1.42.19 to 1.42.27 (cs3org#2414)

    * [Build-deps]: Bump github.com/rs/zerolog from 1.26.0 to 1.26.1 (cs3org#2388)

    * update owncloud core commit id (cs3org#2418)

    * [Build-deps]: Bump github.com/mattn/go-sqlite3 (cs3org#2425)

    * [Build-deps]: Bump github.com/gomodule/redigo from 1.8.6 to 1.8.8 (cs3org#2426)

    * OIDC and WOPI changes for lightweight users (cs3org#2278)

    * [tests-only]Bump the commit id for tests (cs3org#2441)

    * Bump the commit id for tests

    * Adding failing tests to expected to failure

    * CephFS Reva v0.2 (cs3org#1209)

    * [Build-deps]: Bump github.com/minio/minio-go/v7 from 7.0.20 to 7.0.21 (cs3org#2449)

    * [Build-deps]: Bump github.com/hashicorp/go-hclog from 1.0.0 to 1.1.0 (cs3org#2448)

    * [Build-deps]: Bump github.com/BurntSushi/toml from 0.4.1 to 1.0.0 (cs3org#2446)

    * revert go-sqlite downgrade (cs3org#2461)

    * [Build-deps]: Bump github.com/google/go-cmp from 0.5.6 to 0.5.7 (cs3org#2466)

    * [Build-deps]: Bump github.com/aws/aws-sdk-go from 1.42.27 to 1.42.39 (cs3org#2467)

    * [Build-deps]: Bump github.com/ceph/go-ceph from 0.12.0 to 0.13.0 (cs3org#2468)

    * [Build-deps]: Bump github.com/onsi/gomega from 1.17.0 to 1.18.0 (cs3org#2469)

    * Use permissions API in decomposedfs (cs3org#2341)

    * [tests-only]Bump Core Commit Id (cs3org#2451)

    * Bump commit id for tests 2022-01-25 (cs3org#2474)

    * Bump commit id for issue-ocis-3030 (cs3org#2476)

    * fix test failures

    * fix integration tests

    Co-authored-by: Giuseppe Lo Presti <[email protected]>
    Co-authored-by: Gianmaria Del Monte <[email protected]>
    Co-authored-by: Swikriti Tripathi <[email protected]>
    Co-authored-by: Ishank Arora <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Willy Kloucek <[email protected]>
    Co-authored-by: Michael Barz <[email protected]>
    Co-authored-by: Phil Davis <[email protected]>
    Co-authored-by: Benedikt Kulmann <[email protected]>
    Co-authored-by: Saw-jan Gurung <[email protected]>
    Co-authored-by: PKiran <[email protected]>
    Co-authored-by: Mouratidis Theofilos <[email protected]>
    Co-authored-by: Amrita <[email protected]>

commit 2329e29
Author: Amrita <[email protected]>
Date:   Wed Jan 26 15:54:59 2022 +0545

    Bump commit id for ocis issue 3030 (cs3org#2477)

commit 1488412
Author: Phil Davis <[email protected]>
Date:   Wed Jan 26 10:26:56 2022 +0545

    Bump commit id for tests 2022-01-25 (edge) (cs3org#2475)

commit 2a46af9
Author: Amrita <[email protected]>
Date:   Mon Jan 24 20:56:46 2022 +0545

    [tests-only]Bump the commit id for tests (cs3org#2453)

    * Bump the commit id for tests

    * skip personalSpace tests for now

    * skip issue-ocis-3023 tests to avoid infinite loop

    Co-authored-by: Phil Davis <[email protected]>

commit bc20acb
Author: kobergj <[email protected]>
Date:   Fri Jan 21 14:48:12 2022 +0100

    Space grants (cs3org#2464)

    * send spacegrants and pass them to decomposedfs

    Signed-off-by: jkoberg <[email protected]>

    * add changelog item

    Signed-off-by: jkoberg <[email protected]>

commit d07d63e
Author: Andre Duffeck <[email protected]>
Date:   Fri Jan 21 12:28:11 2022 +0100

    Do not log nodes (cs3org#2463)

    * Do not log whole nodes

    It turns out that logging whole node objects is very expensive and also
    spams the logs quite a bit. Instead we just log the node ID now.

    * Add changelog

commit c68b5cd
Author: Willy Kloucek <[email protected]>
Date:   Fri Jan 21 09:19:24 2022 +0100

    revert downgrade of mattn/go-sqlite (cs3org#2462)

commit a799b5c
Author: kobergj <[email protected]>
Date:   Thu Jan 20 16:47:28 2022 +0100

    Make gateway dumb again (cs3org#2437)

    * make StatHandler dumb again

    Signed-off-by: jkoberg <[email protected]>

    * add changelog

    Signed-off-by: jkoberg <[email protected]>

    * use findAndUnwrap instead find

    Signed-off-by: jkoberg <[email protected]>

    * kinda fix integration tests

    Signed-off-by: jkoberg <[email protected]>

    * remove ListContainer logic

    Signed-off-by: jkoberg <[email protected]>

    * decomposedfs: don't check id's containing "/"

    Signed-off-by: jkoberg <[email protected]>

    * fix linting and integration tests

    Signed-off-by: jkoberg <[email protected]>

    * make ListRecycle dumb again

    Signed-off-by: jkoberg <[email protected]>

    * make RestoreRecycleItem dumb again

    Signed-off-by: jkoberg <[email protected]>

    * don't allow cross storage restore

    Signed-off-by: jkoberg <[email protected]>

    * make Move dumb again

    Signed-off-by: jkoberg <[email protected]>

    * make GetPath dumb again

    Signed-off-by: jkoberg <[email protected]>

    * try changing dav report response

    Signed-off-by: jkoberg <[email protected]>

    * add missing import

    Signed-off-by: jkoberg <[email protected]>

    * blind mans fix for favorites

    Signed-off-by: jkoberg <[email protected]>

    * remove commented code and nasty bug

    Signed-off-by: jkoberg <[email protected]>

    * Update internal/http/services/owncloud/ocdav/propfind/propfind.go

    Co-authored-by: Jörn Friedrich Dreyer <[email protected]>

    * Update internal/http/services/owncloud/ocdav/report.go

    Co-authored-by: Jörn Friedrich Dreyer <[email protected]>

    * Update internal/http/services/owncloud/ocdav/report.go

    Co-authored-by: Jörn Friedrich Dreyer <[email protected]>

    Co-authored-by: Jörn Friedrich Dreyer <[email protected]>

commit 0880fa8
Author: David Christofas <[email protected]>
Date:   Thu Jan 20 16:46:49 2022 +0100

    prevent purging of enabled spaces (cs3org#2459)

commit a955d62
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Thu Jan 20 13:03:48 2022 +0100

    decomposedfs: do not swallow errors when creating nodes (cs3org#2457)

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

commit 4f84896
Author: Michael Barz <[email protected]>
Date:   Wed Jan 19 11:27:16 2022 +0100

    fix path construction in webdav propfind (cs3org#2454)

commit 53037a0
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Tue Jan 18 11:41:40 2022 +0100

    fix create space error message (cs3org#2452)

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

commit bb960af
Author: David Christofas <[email protected]>
Date:   Mon Jan 17 17:43:34 2022 +0100

    Purge spaces (cs3org#2431)

    * purge shares when purging storage spaces

    When purging a space we also want to delete all shares in that space.
    This is a first naive implementation for that but ideally we want to
    solve the with an event system eventually to decouple the services.

    * purge spaces in the storage driver

    Spaces can now be purged in a two step process.
    The code currently doesn't purge the blobs though.

    * implement review remarks

    * prevent normal users from listing deleted spaces

    * refactor share storage id filter

    * implement review remarks

    * list correct number of trashed spaces

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

    Co-authored-by: Jörn Friedrich Dreyer <[email protected]>

commit b061960
Author: kobergj <[email protected]>
Date:   Fri Jan 14 11:48:03 2022 +0100

    Fix publiclinks and decomposedfs (cs3org#2445)

    * decomposedfs: don't check id's containing "/"

    Signed-off-by: jkoberg <[email protected]>

    * add changelog

    Signed-off-by: jkoberg <[email protected]>

commit c4d0c64
Author: Swikriti Tripathi <[email protected]>
Date:   Fri Jan 14 10:59:10 2022 +0545

    [tests-only]Bump the commit id for tests edge (cs3org#2442)

    * Bump the commit id for tests

    * Adding failing tests to expected to failure

commit c739713
Author: kobergj <[email protected]>
Date:   Thu Jan 13 16:59:33 2022 +0100

    fix statcache logic (cs3org#2440)

    Signed-off-by: jkoberg <[email protected]>

commit 1ed9c9f
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Thu Jan 13 16:58:47 2022 +0100

    ignore handled errors when creating spaces (cs3org#2439)

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

commit 8a956f3
Author: Ralf Haferkamp <[email protected]>
Date:   Wed Jan 12 20:16:39 2022 +0100

    Adjust "groupfilter" to be able to search by member name (cs3org#2436)

    Previously the input for the LDAP Groupfilter to lookup all groups a
    specific user is member of was the userpb.UserId part of the User
    object. I.e. it assumed we could run a single LDAP query to get all
    groups a user is member of by specifying the userid. However most
    LDAP Servers store the GroupMembership by either username (e.g. in
    memberUID Attribute) or by the user's DN (e.g. in member/uniqueMember).

    The GetUserGroups method was already updated recently to do a two-staged
    lookup (first lookup the user's name by Id then search the Groups by
    username). This change just removes the userpb.UserId template processing
    from the GroupFilter and replaces it with a single string (the
    username) to get rid of the annoying `{{.}}` template values in the
    config.

    In the future we should add a config switch to also allow lookups by
    member DN.

commit 626d28a
Author: kobergj <[email protected]>
Date:   Wed Jan 12 16:57:28 2022 +0100

    [tests-only] Merge master into edge (cs3org#2435)

    * [Build-deps] Additional rules for CODEOWNERS (cs3org#2323)

    * Remove share refs from trashbin (cs3org#2298)

    * Public link propfind (cs3org#2315)

    * fix public share type in propfinds (cs3org#2316)

    * Bump core commit id for tests (cs3org#2331)

    * Revert "Fix content disposition (cs3org#2303)" (cs3org#2332)

    This reverts commit 3cba223.

    * [Build-deps]: Bump github.com/gomodule/redigo from 1.8.5 to 1.8.6 (cs3org#2326)

    * [Build-deps]: Bump github.com/mitchellh/mapstructure from 1.4.2 to 1.4.3 (cs3org#2324)

    * [Build-deps]: Bump github.com/aws/aws-sdk-go from 1.42.9 to 1.42.19 (cs3org#2325)

    * fix app provider new file action and improve app provider error codes (cs3org#2210)

    * Parse URL path to determine file name (cs3org#2346)

    * v1.17.0

    * handle non existent spaces gracefully (cs3org#2354)

    * Bump core commit id for tests (cs3org#2365)

    * [Build-deps]: Bump github.com/minio/minio-go/v7 from 7.0.16 to 7.0.18 (cs3org#2363)

    * [Build-deps]: Bump github.com/ReneKroon/ttlcache/v2 from 2.9.0 to 2.10.0 (cs3org#2358)

    * [Build-deps]: Bump go.opentelemetry.io/otel/exporters/jaeger (cs3org#2362)

    * fix tests by pointing to the right owncloud/core commit id for tests (cs3org#2375)

    * add new file capabilties to ocs for the app provider (cs3org#2379)

    * Remove test from expected to fail and bump commit id (cs3org#2380)

    * add .drone.env to CODEOWNERS as it is part of the test files (cs3org#2378)

    * fix webdav copy for zero byte files (cs3org#2374)

    * Implement touch file (cs3org#2369)

    * implement cs3org/cs3apis#154

    * use TouchFile for the app provider

    * add changelog and comments

    * revert use TouchFile in app provider

    * fix resource typo

    Co-authored-by: Giuseppe Lo Presti <[email protected]>

    Co-authored-by: Giuseppe Lo Presti <[email protected]>

    * Dummy implementation of the Lock CS3APIs (cs3org#2350)

    * allow new file create with app provider on public links (cs3org#2385)

    * Bump core commit id and use core master for tests (cs3org#2391)

    * Add product to ocs Version struct (cs3org#2397)

    The web ui will announce the backend version in the javascript console
    and is supposed to include the product name as well. The version seems
    to be a good location for the product field as it already includes the
    software edition as well.

    * bump core commit id for tests (cs3org#2404)

    * [Build-deps]: Bump github.com/mattn/go-sqlite3 from 1.14.9 to 1.14.10 (cs3org#2409)

    * [Build-deps]: Bump github.com/minio/minio-go/v7 from 7.0.18 to 7.0.20 (cs3org#2408)

    * [Build-deps]: Bump github.com/rs/cors from 1.8.0 to 1.8.2 (cs3org#2399)

    * [Build-deps]: Bump github.com/ReneKroon/ttlcache/v2 (cs3org#2387)

    * [Build-deps]: Bump go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc (cs3org#2359)

    * [tests-only] format .drone.star (cs3org#2411)

    * update tus/tusd to version 1.8.0 (cs3org#2393)

    * Fixes for apps in public shares, project spaces for EOS driver (cs3org#2371)

    * [Build-deps]: Bump github.com/aws/aws-sdk-go from 1.42.19 to 1.42.27 (cs3org#2414)

    * [Build-deps]: Bump github.com/rs/zerolog from 1.26.0 to 1.26.1 (cs3org#2388)

    * update owncloud core commit id (cs3org#2418)

    * [Build-deps]: Bump github.com/mattn/go-sqlite3 (cs3org#2425)

    * [Build-deps]: Bump github.com/gomodule/redigo from 1.8.6 to 1.8.8 (cs3org#2426)

    * OIDC and WOPI changes for lightweight users (cs3org#2278)

    * don't create references in gateway

    Signed-off-by: jkoberg <[email protected]>

    * don't run virtual views testsuite

    Signed-off-by: jkoberg <[email protected]>

    * bring back token scope expanding

    Signed-off-by: jkoberg <[email protected]>

    Co-authored-by: Giuseppe Lo Presti <[email protected]>
    Co-authored-by: Gianmaria Del Monte <[email protected]>
    Co-authored-by: David Christofas <[email protected]>
    Co-authored-by: Swikriti Tripathi <[email protected]>
    Co-authored-by: Ishank Arora <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Willy Kloucek <[email protected]>
    Co-authored-by: Michael Barz <[email protected]>
    Co-authored-by: Phil Davis <[email protected]>
    Co-authored-by: Benedikt Kulmann <[email protected]>
    Co-authored-by: Saw-jan Gurung <[email protected]>
    Co-authored-by: PKiran <[email protected]>

commit 6b8e690
Author: Andre Duffeck <[email protected]>
Date:   Wed Jan 12 09:50:26 2022 +0100

    Start splitting up ocdav (cs3org#2434)

    * Start splitting up ocdav into smaller chunks

    That increases clarity and allows for making things testable.

    * Add a basic propfind unit test

    * Fix linter and hound issues

    * Add changelog

commit 9e2e91c
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Tue Jan 11 17:03:07 2022 +0100

    fix shares provider filter (cs3org#2433)

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

commit 5c6d949
Author: Jörn Friedrich Dreyer <[email protected]>
Date:   Tue Jan 11 16:03:47 2022 +0100

    use space reference when listing containers (cs3org#2432)

    Signed-off-by: Jörn Friedrich Dreyer <[email protected]>

commit 2469457
Author: David Christofas <[email protected]>
Date:   Wed Jan 12 17:15:05 2022 +0100

    store nodes of a space inside of the space

    This is still work in progress. In this state the node_test.go run
    successfully.
  • Loading branch information
butonic committed Feb 17, 2022
1 parent 67204fe commit fcbc27c
Show file tree
Hide file tree
Showing 13 changed files with 404 additions and 350 deletions.
54 changes: 8 additions & 46 deletions pkg/storage/utils/decomposedfs/decomposedfs.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import (
"syscall"

userpb "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1"
rpcv1beta1 "github.com/cs3org/go-cs3apis/cs3/rpc/v1beta1"
provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
"github.com/cs3org/reva/pkg/appctx"
ctxpkg "github.com/cs3org/reva/pkg/ctx"
Expand Down Expand Up @@ -204,57 +205,18 @@ func (fs *Decomposedfs) CreateHome(ctx context.Context) (err error) {
return errtypes.NotSupported("Decomposedfs: CreateHome() home supported disabled")
}

var n, h *node.Node
if n, err = fs.lu.RootNode(ctx); err != nil {
return
}
h, err = fs.lu.WalkPath(ctx, n, fs.lu.mustGetUserLayout(ctx), false, func(ctx context.Context, n *node.Node) error {
if !n.Exists {
if err := fs.tp.CreateDir(ctx, n); err != nil {
return err
}
}
return nil
u := ctxpkg.ContextMustGetUser(ctx)
res, err := fs.CreateStorageSpace(ctx, &provider.CreateStorageSpaceRequest{
Type: spaceTypePersonal,
Owner: u,
})

// make sure to delete the created directory if things go wrong
defer func() {
if err != nil {
// do not catch the error to not shadow the original error
if tmpErr := fs.tp.Delete(ctx, n); tmpErr != nil {
appctx.GetLogger(ctx).Error().Err(tmpErr).Msg("Can not revert file system change after error")
}
}
}()

if err != nil {
return
}

// update the owner
u := ctxpkg.ContextMustGetUser(ctx)
if err = h.WriteAllNodeMetadata(u.Id); err != nil {
return
}

if fs.o.TreeTimeAccounting || fs.o.TreeSizeAccounting {
// mark the home node as the end of propagation
if err = h.SetMetadata(xattrs.PropagationAttr, "1"); err != nil {
appctx.GetLogger(ctx).Error().Err(err).Interface("node", h).Msg("could not mark home as propagation root")
return
}
}

if err := h.SetMetadata(xattrs.SpaceNameAttr, u.DisplayName); err != nil {
return err
}

// add storage space
if err := fs.createStorageSpace(ctx, spaceTypePersonal, h.ID); err != nil {
return err
if res.Status.Code != rpcv1beta1.Code_CODE_OK {
return errtypes.NewErrtypeFromStatus(res.Status)
}

return
return nil
}

// The os not exists error is buried inside the xattr error,
Expand Down
5 changes: 2 additions & 3 deletions pkg/storage/utils/decomposedfs/grants.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ func (fs *Decomposedfs) ListGrants(ctx context.Context, ref *provider.Reference)
}

log := appctx.GetLogger(ctx)
np := fs.lu.InternalPath(node.ID)
np := node.InternalPath()
var attrs []string
if attrs, err = xattr.List(np); err != nil {
log.Error().Err(err).Msg("error listing attributes")
Expand Down Expand Up @@ -174,8 +174,7 @@ func (fs *Decomposedfs) RemoveGrant(ctx context.Context, ref *provider.Reference
attr = xattrs.GrantUserAcePrefix + g.Grantee.GetUserId().OpaqueId
}

np := fs.lu.InternalPath(node.ID)
if err = xattr.Remove(np, attr); err != nil {
if err = xattr.Remove(node.InternalPath(), attr); err != nil {
return
}

Expand Down
41 changes: 20 additions & 21 deletions pkg/storage/utils/decomposedfs/lookup.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ package decomposedfs
import (
"context"
"fmt"
"os"
"path/filepath"
"strings"

Expand Down Expand Up @@ -58,6 +57,7 @@ func (lu *Lookup) NodeFromResource(ctx context.Context, ref *provider.Reference)
if err != nil {
return nil, err
}
n.SpaceID = ref.ResourceId.StorageId
}
}
return n, nil
Expand All @@ -76,32 +76,31 @@ func (lu *Lookup) NodeFromID(ctx context.Context, id *provider.ResourceId) (n *n
// The Resource references the root of a space
return lu.NodeFromSpaceID(ctx, id)
}
n, err = node.ReadNode(ctx, lu, id.OpaqueId)
n, err = node.ReadNode(ctx, lu, id.StorageId, id.OpaqueId)
if err != nil {
return nil, err
}

return n, n.FindStorageSpaceRoot()
}

// NodeFromSpaceID converts a resource id without an opaque id into a Node
func (lu *Lookup) NodeFromSpaceID(ctx context.Context, id *provider.ResourceId) (n *node.Node, err error) {
d := filepath.Join(lu.Options.Root, "spaces", spaceTypeAny, id.StorageId)
matches, err := filepath.Glob(d)
if err != nil {
return nil, err
}

if len(matches) != 1 {
return nil, fmt.Errorf("can't determine node from spaceID: found %d matching spaces. Path: %s", len(matches), d)
}

target, err := os.Readlink(matches[0])
if err != nil {
appctx.GetLogger(ctx).Error().Err(err).Str("match", matches[0]).Msg("could not read link, skipping")
func Pathify(id string, depth, width int) string {
b := strings.Builder{}
i := 0
for ; i < depth; i++ {
if len(id) <= i*width+width {
break
}
b.WriteString(id[i*width : i*width+width])
b.WriteRune(filepath.Separator)
}
b.WriteString(id[i*width:])
return b.String()
}

node, err := node.ReadNode(ctx, lu, filepath.Base(target))
// NodeFromSpaceID converts a resource id without an opaque id into a Node
func (lu *Lookup) NodeFromSpaceID(ctx context.Context, id *provider.ResourceId) (n *node.Node, err error) {
node, err := node.ReadNode(ctx, lu, id.StorageId, id.StorageId)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -130,7 +129,7 @@ func (lu *Lookup) Path(ctx context.Context, n *node.Node) (p string, err error)

// RootNode returns the root node of the storage
func (lu *Lookup) RootNode(ctx context.Context) (*node.Node, error) {
n := node.New(node.RootID, "", "", 0, "", nil, lu)
n := node.New(node.NoSpaceID, node.RootID, "", "", 0, "", nil, lu)
n.Exists = true
return n, nil
}
Expand Down Expand Up @@ -182,8 +181,8 @@ func (lu *Lookup) InternalRoot() string {
}

// InternalPath returns the internal path for a given ID
func (lu *Lookup) InternalPath(id string) string {
return filepath.Join(lu.Options.Root, "nodes", id)
func (lu *Lookup) InternalPath(spaceID, nodeID string) string {
return filepath.Join(lu.Options.Root, "spaces", Pathify(spaceID, 1, 2), "nodes", Pathify(nodeID, 4, 2))
}

func (lu *Lookup) mustGetUserLayout(ctx context.Context) string {
Expand Down
Loading

0 comments on commit fcbc27c

Please sign in to comment.