aboutsummaryrefslogtreecommitdiff
path: root/src/model/helper
Commit message (Collapse)AuthorAgeFilesLines
* build with rust 1.82.0Alex Auvolat6 days1-1/+2
|
* nix, ci: build with CraneAlex Auvolat6 days1-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This removes our dependency on cargo2nix, which was causing us some issues. Whereas cargo2nix creates one Nix derivation per crate, Crane uses only two derivations: 1. Build dependencies only 2. Build the final binary This means that during the second step, no caching can be done. For instance, if we do a change in garage_model, we need to recompile all of the Garage crates including those that do not depend on garage_model. On the upside, this allows all of the Garage crates to be built at once using cargo build logic, which is optimized for high parallelism and better pipelining between all of the steps of the build. All in all, this makes most builds faster than cargo2nix. A few other changes have been made to the build scripts and CI: - Unit tests are now run within a Nix derivation. In fact, we have different derivations to run the tests using LMDB and Sqlite as metadata db engines. - For debug builds, most CI steps now run in parallel (with the notable exception of the smoke test that runs after the build, which is inevitable). - We no longer pass the GIT_VERSION argument when building debug builds and running the tests. This means that dev binaries and test binaries don't know the exact version of Garage they are from. That shouldn't be an issue in most cases. - The not-dynamic.sh scripts has been fixed to fail if the file does not exist.
* Fix all typosStefan Majer2025-01-161-1/+1
|
* fix formatting to comply with latest rustfmtAlex Auvolat2025-01-121-1/+2
|
* Merge branch 'main' into next-0.10Alex Auvolat2024-03-191-0/+43
|\
| * [bucket-id-prefix] CLI: allow manipulating buckets by prefixes of their full IDsbucket-id-prefixAlex Auvolat2024-03-191-0/+43
| |
* | Merge branch 'main' into next-0.10Alex Auvolat2024-02-224-377/+413
|\|
| * [lock-createbucket] Add node-global lock for bucket/key operations (fix #723)lock-createbucketAlex Auvolat2024-02-224-377/+413
| |
* | Merge branch 'main' into next-0.10Alex Auvolat2024-02-151-3/+3
|\|
| * [import-netapp] import Netapp code into Garage codebaseAlex Auvolat2024-02-151-3/+3
| |
* | Merge branch 'main' into next-0.10Alex Auvolat2024-02-131-7/+7
|\|
| * [dep-upgrade-202402] remove useless mutAlex Auvolat2024-02-081-7/+7
| |
* | layout: add helper for cached/external values to centralize recomputationAlex Auvolat2023-11-151-1/+1
| |
* | layout: refactoring of all_nodesAlex Auvolat2023-11-141-2/+6
| |
* | layout: refactor to use a RwLock on LayoutHistoryAlex Auvolat2023-11-091-8/+3
| |
* | cluster layout: adapt all uses of ClusterLayout to LayoutHistoryAlex Auvolat2023-11-081-3/+6
| |
* | avoid using layout_watch in System directlyAlex Auvolat2023-11-081-1/+1
| |
* | remove Ring and use ClusterLayout everywhereAlex Auvolat2023-11-081-3/+3
|/
* fix mpu counter (add missing workers) and report info at appropriate placesAlex Auvolat2023-06-091-1/+3
|
* New multipart upload table layoutAlex Auvolat2023-06-091-2/+4
|
* Add garage bucket cleanup-incomplete-uploads commandcleanup-uploads-commandAlex Auvolat2022-11-041-1/+68
|
* First version of admin API (#298)Alex2022-05-244-73/+192
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | **Spec:** - [x] Start writing - [x] Specify all layout endpoints - [x] Specify all endpoints for operations on keys - [x] Specify all endpoints for operations on key/bucket permissions - [x] Specify all endpoints for operations on buckets - [x] Specify all endpoints for operations on bucket aliases View rendered spec at <https://git.deuxfleurs.fr/Deuxfleurs/garage/src/branch/admin-api/doc/drafts/admin-api.md> **Code:** - [x] Refactor code for admin api to use common api code that was created for K2V **General endpoints:** - [x] Metrics - [x] GetClusterStatus - [x] ConnectClusterNodes - [x] GetClusterLayout - [x] UpdateClusterLayout - [x] ApplyClusterLayout - [x] RevertClusterLayout **Key-related endpoints:** - [x] ListKeys - [x] CreateKey - [x] ImportKey - [x] GetKeyInfo - [x] UpdateKey - [x] DeleteKey **Bucket-related endpoints:** - [x] ListBuckets - [x] CreateBucket - [x] GetBucketInfo - [x] DeleteBucket - [x] PutBucketWebsite - [x] DeleteBucketWebsite **Operations on key/bucket permissions:** - [x] BucketAllowKey - [x] BucketDenyKey **Operations on bucket aliases:** - [x] GlobalAliasBucket - [x] GlobalUnaliasBucket - [x] LocalAliasBucket - [x] LocalUnaliasBucket **And also:** - [x] Separate error type for the admin API (this PR includes a quite big refactoring of error handling) - [x] Add management of website access - [ ] Check that nothing is missing wrt what can be done using the CLI - [ ] Improve formatting of the spec - [x] Make sure everyone is cool with the API design Fix #231 Fix #295 Co-authored-by: Alex Auvolat <alex@adnab.me> Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/298 Co-authored-by: Alex <alex@adnab.me> Co-committed-by: Alex <alex@adnab.me>
* First implementation of K2V (#293)Alex2022-05-101-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | **Specification:** View spec at [this URL](https://git.deuxfleurs.fr/Deuxfleurs/garage/src/branch/k2v/doc/drafts/k2v-spec.md) - [x] Specify the structure of K2V triples - [x] Specify the DVVS format used for causality detection - [x] Specify the K2V index (just a counter of number of values per partition key) - [x] Specify single-item endpoints: ReadItem, InsertItem, DeleteItem - [x] Specify index endpoint: ReadIndex - [x] Specify multi-item endpoints: InsertBatch, ReadBatch, DeleteBatch - [x] Move to JSON objects instead of tuples - [x] Specify endpoints for polling for updates on single values (PollItem) **Implementation:** - [x] Table for K2V items, causal contexts - [x] Indexing mechanism and table for K2V index - [x] Make API handlers a bit more generic - [x] K2V API endpoint - [x] K2V API router - [x] ReadItem - [x] InsertItem - [x] DeleteItem - [x] PollItem - [x] ReadIndex - [x] InsertBatch - [x] ReadBatch - [x] DeleteBatch **Testing:** - [x] Just a simple Python script that does some requests to check visually that things are going right (does not contain parsing of results or assertions on returned values) - [x] Actual tests: - [x] Adapt testing framework - [x] Simple test with InsertItem + ReadItem - [x] Test with several Insert/Read/DeleteItem + ReadIndex - [x] Test all combinations of return formats for ReadItem - [x] Test with ReadBatch, InsertBatch, DeleteBatch - [x] Test with PollItem - [x] Test error codes - [ ] Fix most broken stuff - [x] test PollItem broken randomly - [x] when invalid causality tokens are given, errors should be 4xx not 5xx **Improvements:** - [x] Descending range queries - [x] Specify - [x] Implement - [x] Add test - [x] Batch updates to index counter - [x] Put K2V behind `k2v` feature flag Co-authored-by: Alex Auvolat <alex@adnab.me> Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/293 Co-authored-by: Alex <alex@adnab.me> Co-committed-by: Alex <alex@adnab.me>
* Fix some new clippy lintsfix-resyncAlex Auvolat2022-03-141-4/+2
|
* Add date verification to presigned urls (#196)trinity-1686a2022-01-181-5/+1
| | | | | | | | | | fix #96 fix #162 by returning Forbidden instead Bad Request Co-authored-by: Trinity Pointard <trinity.pointard@gmail.com> Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/196 Co-authored-by: trinity-1686a <trinity.pointard@gmail.com> Co-committed-by: trinity-1686a <trinity.pointard@gmail.com>
* Implement CreateBucketAlex Auvolat2022-01-051-4/+2
|
* New buckets for 0.6.0: make bucket id a SK and not a HK, CLI updatesAlex Auvolat2022-01-041-3/+3
|
* New buckets for 0.6.0: small changesAlex Auvolat2022-01-041-21/+58
| | | | | | | | | | | | - Fix bucket delete - fix merge of bucket creation date - Replace deletable with option in aliases Rationale: if two aliases point to conflicting bucket, resolving by making an arbitrary choice risks making data accessible when it shouldn't be. We'd rather resolve to deleting the alias until someone puts it back.
* Rename and change query filtersAlex Auvolat2022-01-041-2/+1
|
* Refactor logic for setting/unsetting aliasesAlex Auvolat2022-01-041-3/+383
|
* Some movement of helper code and refactoring of error handlingAlex Auvolat2022-01-043-0/+109