aboutsummaryrefslogtreecommitdiff
path: root/src/rpc/layout.rs
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'main' into nextAlex Auvolat2023-01-041-1/+3
|\
| * Make it explicit when using nonversioned encodingAlex Auvolat2023-01-031-5/+6
| |
| * Refactor how things are migratedAlex Auvolat2023-01-031-0/+2
| |
| * Tentative fix for issue #414try-fix-414Alex Auvolat2022-11-211-3/+5
| |
* | itertools .unique() doesn't require sorted itemsAlex Auvolat2022-12-111-4/+2
| |
* | Slightly simplify code at placesAlex Auvolat2022-11-081-43/+18
| |
* | Return more info when layout's .check() fails, fix compilation, fix testAlex Auvolat2022-11-081-24/+46
| |
* | Use bytes as capacity unitsAlex Auvolat2022-11-071-30/+32
| |
* | Ensure .sort() is called before counting unique itemsAlex Auvolat2022-11-071-16/+14
| |
* | Style improvementsAlex Auvolat2022-11-071-122/+125
| |
* | Added some commentMendes2022-10-111-69/+93
| |
* | Improved the statistics displayed in layout showMendes2022-10-111-39/+66
| | | | | | | | corrected a few bugs
* | cargo fmtMendes2022-10-101-607/+725
| |
* | Tests written in layout.rsMendes2022-10-101-128/+104
| | | | | | | | | | added staged_parameters to ClusterLayout removed the serde(default) -> will need a migration function
* | corrected warnings of cargo clippyMendes2022-10-061-58/+53
| |
* | Corrected two bugs:Mendes2022-10-061-21/+35
| | | | | | | | | | - self.node_id_vec was not properly updated when the previous ring was empty - ClusterLayout::merge was not considering changes in the layout parameters
* | modifications in several files to :Mendes2022-10-051-46/+72
| | | | | | | | | | | | - have consistent error return types - store the zone redundancy in a Lww - print the error and message in the CLI (TODO: for the server Api, should msg be returned in the body response?)
* | Merge remote-tracking branch 'origin/main' into optimal-layoutMendes2022-10-041-0/+56
|\|
| * First version of admin API (#298)Alex2022-05-241-0/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | **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>
* | Correction of a few bugs in the tests, modification of ClusterLayout::checkMendes2022-09-221-54/+119
| |
* | New version of the algorithm that calculate the layout.Mendes2022-09-211-324/+471
| | | | | | | | | | | | | | | | It takes as paramters the replication factor and the zone redundancy, computes the largest partition size reachable with these constraints, and among the possible assignation with this partition size, it computes the one that moves the least number of partitions compared to the previous assignation. This computation uses graph algorithms defined in graph_algo.rs
* | Correct small formatting issueAlex Auvolat2022-05-051-3/+1
| |
* | Corrected the warnings and errors issued by cargo clippyMendes2022-05-011-15/+11
| |
* | Apply cargo fmtAlex Auvolat2022-05-011-444/+496
| |
* | Change the way new layout assignations are computed.Alex Auvolat2022-05-011-434/+447
|/ | | | | | The function now computes an optimal assignation (with respect to partition size) that minimizes the distance to the former assignation, using flow algorithms. This commit was written by Mendes Oulamara <mendes.oulamara@pm.me>
* Make layout optimization work in relative termsbug/layoutAlex Auvolat2022-03-241-9/+14
|
* Slight change and add comment to layout assignation algoAlex Auvolat2022-03-241-37/+33
|
* Small change to partition assignation algorithmAlex Auvolat2022-03-241-0/+28
| | | | | | This change helps ensure that nodes for each partition are spread over all datacenters, a property that wasn't ensured previously when going from a 2 DC deployment to a 3 DC deployment
* Improve how node roles are assigned in Garagev0.5-beta1Alex Auvolat2021-11-161-0/+579
- change the terminology: the network configuration becomes the role table, the configuration of a nodes becomes a node's role - the modification of the role table takes place in two steps: first, changes are staged in a CRDT data structure. Then, once the user is happy with the changes, they can commit them all at once (or revert them). - update documentation - fix tests - implement smarter partition assignation algorithm This patch breaks the format of the network configuration: when migrating, the cluster will be in a state where no roles are assigned. All roles must be re-assigned and commited at once. This migration should not pose an issue.