From 073dd715cef018b01290013bc21a6fe20b27c951 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Sun, 6 Sep 2026 19:43:04 +0200 Subject: [PATCH] bump version to v2.4.0 and update api json schema --- Cargo.lock | 26 ++++---- Cargo.toml | 24 +++---- doc/api/garage-admin-v2.json | 110 +++++++++++++++++++++++++++++++- doc/book/cookbook/real-world.md | 10 +-- doc/book/quick-start/_index.md | 6 +- script/helm/garage/Chart.yaml | 4 +- script/helm/garage/README.md | 2 +- src/api/admin/Cargo.toml | 2 +- src/api/admin/openapi.rs | 2 +- src/api/common/Cargo.toml | 2 +- src/api/k2v/Cargo.toml | 2 +- src/api/s3/Cargo.toml | 2 +- src/block/Cargo.toml | 2 +- src/db/Cargo.toml | 2 +- src/garage/Cargo.toml | 2 +- src/model/Cargo.toml | 2 +- src/net/Cargo.toml | 2 +- src/rpc/Cargo.toml | 2 +- src/table/Cargo.toml | 2 +- src/util/Cargo.toml | 2 +- src/web/Cargo.toml | 2 +- 21 files changed, 159 insertions(+), 51 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c2d32773..a13535f3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1513,7 +1513,7 @@ dependencies = [ [[package]] name = "garage" -version = "2.3.0" +version = "2.4.0" dependencies = [ "assert-json-diff", "async-trait", @@ -1581,7 +1581,7 @@ dependencies = [ [[package]] name = "garage_api_admin" -version = "2.3.0" +version = "2.4.0" dependencies = [ "argon2", "async-trait", @@ -1613,7 +1613,7 @@ dependencies = [ [[package]] name = "garage_api_common" -version = "2.3.0" +version = "2.4.0" dependencies = [ "base64 0.22.1", "bytes", @@ -1649,7 +1649,7 @@ dependencies = [ [[package]] name = "garage_api_k2v" -version = "2.3.0" +version = "2.4.0" dependencies = [ "base64 0.22.1", "futures", @@ -1672,7 +1672,7 @@ dependencies = [ [[package]] name = "garage_api_s3" -version = "2.3.0" +version = "2.4.0" dependencies = [ "aes-gcm", "async-compression", @@ -1717,7 +1717,7 @@ dependencies = [ [[package]] name = "garage_block" -version = "2.3.0" +version = "2.4.0" dependencies = [ "arc-swap", "async-compression", @@ -1741,7 +1741,7 @@ dependencies = [ [[package]] name = "garage_db" -version = "2.3.0" +version = "2.4.0" dependencies = [ "fjall", "heed", @@ -1756,7 +1756,7 @@ dependencies = [ [[package]] name = "garage_model" -version = "2.3.0" +version = "2.4.0" dependencies = [ "arbitrary", "argon2", @@ -1784,7 +1784,7 @@ dependencies = [ [[package]] name = "garage_net" -version = "2.3.0" +version = "2.4.0" dependencies = [ "arc-swap", "bytes", @@ -1810,7 +1810,7 @@ dependencies = [ [[package]] name = "garage_rpc" -version = "2.3.0" +version = "2.4.0" dependencies = [ "arc-swap", "async-trait", @@ -1843,7 +1843,7 @@ dependencies = [ [[package]] name = "garage_table" -version = "2.3.0" +version = "2.4.0" dependencies = [ "arc-swap", "async-trait", @@ -1864,7 +1864,7 @@ dependencies = [ [[package]] name = "garage_util" -version = "2.3.0" +version = "2.4.0" dependencies = [ "arbitrary", "arc-swap", @@ -1899,7 +1899,7 @@ dependencies = [ [[package]] name = "garage_web" -version = "2.3.0" +version = "2.4.0" dependencies = [ "garage_api_common", "garage_api_s3", diff --git a/Cargo.toml b/Cargo.toml index 704f0264..740e4db7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,18 +25,18 @@ default-members = ["src/garage"] # Internal Garage crates format_table = { version = "0.1.1", path = "src/format-table" } -garage_api_common = { version = "2.3.0", path = "src/api/common" } -garage_api_admin = { version = "2.3.0", path = "src/api/admin" } -garage_api_s3 = { version = "2.3.0", path = "src/api/s3" } -garage_api_k2v = { version = "2.3.0", path = "src/api/k2v" } -garage_block = { version = "2.3.0", path = "src/block" } -garage_db = { version = "2.3.0", path = "src/db", default-features = false } -garage_model = { version = "2.3.0", path = "src/model", default-features = false } -garage_net = { version = "2.3.0", path = "src/net" } -garage_rpc = { version = "2.3.0", path = "src/rpc" } -garage_table = { version = "2.3.0", path = "src/table" } -garage_util = { version = "2.3.0", path = "src/util" } -garage_web = { version = "2.3.0", path = "src/web" } +garage_api_common = { version = "2.4.0", path = "src/api/common" } +garage_api_admin = { version = "2.4.0", path = "src/api/admin" } +garage_api_s3 = { version = "2.4.0", path = "src/api/s3" } +garage_api_k2v = { version = "2.4.0", path = "src/api/k2v" } +garage_block = { version = "2.4.0", path = "src/block" } +garage_db = { version = "2.4.0", path = "src/db", default-features = false } +garage_model = { version = "2.4.0", path = "src/model", default-features = false } +garage_net = { version = "2.4.0", path = "src/net" } +garage_rpc = { version = "2.4.0", path = "src/rpc" } +garage_table = { version = "2.4.0", path = "src/table" } +garage_util = { version = "2.4.0", path = "src/util" } +garage_web = { version = "2.4.0", path = "src/web" } k2v-client = { version = "0.0.4", path = "src/k2v-client" } # External crates from crates.io diff --git a/doc/api/garage-admin-v2.json b/doc/api/garage-admin-v2.json index 15975c6a..7b4c4fed 100644 --- a/doc/api/garage-admin-v2.json +++ b/doc/api/garage-admin-v2.json @@ -12,7 +12,7 @@ "name": "AGPL-3.0", "identifier": "AGPL-3.0" }, - "version": "v2.3.0" + "version": "v2.4.0" }, "servers": [ { @@ -3321,10 +3321,35 @@ "dbEngine" ], "properties": { + "addr": { + "type": [ + "string", + "null" + ], + "description": "Socket address used by other nodes to connect to this node for RPC" + }, + "dataPartition": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/FreeSpaceResp", + "description": "Total and available space on the disk partition(s) containing the data\ndirectory(ies)" + } + ] + }, "dbEngine": { "type": "string", "description": "database engine used for metadata" }, + "draining": { + "type": [ + "boolean", + "null" + ], + "description": "Whether this node is part of an older layout version and is draining data." + }, "garageFeatures": { "type": [ "array", @@ -3346,9 +3371,38 @@ ], "description": "hostname of this node" }, + "isUp": { + "type": [ + "boolean", + "null" + ], + "description": "Whether this node is connected in the cluster" + }, + "metadataPartition": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/FreeSpaceResp", + "description": "Total and available space on the disk partition containing the\nmetadata directory" + } + ] + }, "nodeId": { "type": "string" }, + "role": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/NodeAssignedRole", + "description": "Role assigned to this node in the current cluster layout" + } + ] + }, "rustVersion": { "type": "string", "description": "rustc version with which this garage release was compiled" @@ -3684,10 +3738,35 @@ "dbEngine" ], "properties": { + "addr": { + "type": [ + "string", + "null" + ], + "description": "Socket address used by other nodes to connect to this node for RPC" + }, + "dataPartition": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/FreeSpaceResp", + "description": "Total and available space on the disk partition(s) containing the data\ndirectory(ies)" + } + ] + }, "dbEngine": { "type": "string", "description": "database engine used for metadata" }, + "draining": { + "type": [ + "boolean", + "null" + ], + "description": "Whether this node is part of an older layout version and is draining data." + }, "garageFeatures": { "type": [ "array", @@ -3709,9 +3788,38 @@ ], "description": "hostname of this node" }, + "isUp": { + "type": [ + "boolean", + "null" + ], + "description": "Whether this node is connected in the cluster" + }, + "metadataPartition": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/FreeSpaceResp", + "description": "Total and available space on the disk partition containing the\nmetadata directory" + } + ] + }, "nodeId": { "type": "string" }, + "role": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/NodeAssignedRole", + "description": "Role assigned to this node in the current cluster layout" + } + ] + }, "rustVersion": { "type": "string", "description": "rustc version with which this garage release was compiled" diff --git a/doc/book/cookbook/real-world.md b/doc/book/cookbook/real-world.md index 73218132..234ff967 100644 --- a/doc/book/cookbook/real-world.md +++ b/doc/book/cookbook/real-world.md @@ -96,14 +96,14 @@ to store 2 TB of data in total. ## Get a Docker image Our docker image is currently named `dxflrs/garage` and is stored on the [Docker Hub](https://hub.docker.com/r/dxflrs/garage/tags?page=1&ordering=last_updated). -We encourage you to use a fixed tag (eg. `v2.3.0`) and not the `latest` tag. -For this example, we will use the latest published version at the time of the writing which is `v2.3.0` but it's up to you +We encourage you to use a fixed tag (eg. `v2.4.0`) and not the `latest` tag. +For this example, we will use the latest published version at the time of the writing which is `v2.4.0` but it's up to you to check [the most recent versions on the Docker Hub](https://hub.docker.com/r/dxflrs/garage/tags?page=1&ordering=last_updated). For example: ``` -docker pull dxflrs/garage:v2.3.0 +docker pull dxflrs/garage:v2.4.0 ``` ## Deploying and configuring Garage @@ -171,7 +171,7 @@ docker run \ -v /etc/garage.toml:/etc/garage.toml \ -v /var/lib/garage/meta:/var/lib/garage/meta \ -v /var/lib/garage/data:/var/lib/garage/data \ - dxflrs/garage:v2.3.0 + dxflrs/garage:v2.4.0 ``` With this command line, Garage should be started automatically at each boot. @@ -185,7 +185,7 @@ If you want to use `docker-compose`, you may use the following `docker-compose.y version: "3" services: garage: - image: dxflrs/garage:v2.3.0 + image: dxflrs/garage:v2.4.0 network_mode: "host" restart: unless-stopped volumes: diff --git a/doc/book/quick-start/_index.md b/doc/book/quick-start/_index.md index 83131cf0..4cf7008e 100644 --- a/doc/book/quick-start/_index.md +++ b/doc/book/quick-start/_index.md @@ -111,7 +111,7 @@ your data to be persisted properly. ### Configuring initial access credentials -Since `v2.3.0`, Garage can automatically create a default access key and a default storage bucket, +Since `v2.n.0`, Garage can automatically create a default access key and a default storage bucket, based on values provided in environment variables. To use this feature, export the following environment variables: @@ -157,7 +157,7 @@ docker run \ -e GARAGE_DEFAULT_ACCESS_KEY \ -e GARAGE_DEFAULT_SECRET_KEY \ -e GARAGE_DEFAULT_BUCKET \ - dxflrs/garage:v2.3.0 + dxflrs/garage:v2.4.0 /garage server --single-node --default-bucket ``` @@ -337,7 +337,7 @@ When you first start a cluster without automatic configuration, the output of `g ``` ==== HEALTHY NODES ==== ID Hostname Address Tags Zone Capacity DataAvail Version -563e1ac825ee3323 linuxbox 127.0.0.1:3901 NO ROLE ASSIGNED v2.3.0 +563e1ac825ee3323 linuxbox 127.0.0.1:3901 NO ROLE ASSIGNED v2.4.0 ``` Creating a cluster layout for a Garage deployment means informing Garage of the diff --git a/script/helm/garage/Chart.yaml b/script/helm/garage/Chart.yaml index 110ba8c7..533e3204 100644 --- a/script/helm/garage/Chart.yaml +++ b/script/helm/garage/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: garage description: S3-compatible object store for small self-hosted geo-distributed deployments type: application -version: 0.9.3 -appVersion: "v2.3.0" +version: 0.9.4 +appVersion: "v2.4.0" home: https://garagehq.deuxfleurs.fr/ icon: https://garagehq.deuxfleurs.fr/images/garage-logo.svg diff --git a/script/helm/garage/README.md b/script/helm/garage/README.md index 1473e320..1466c6af 100644 --- a/script/helm/garage/README.md +++ b/script/helm/garage/README.md @@ -1,6 +1,6 @@ # garage -![Version: 0.9.3](https://img.shields.io/badge/Version-0.9.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v2.3.0](https://img.shields.io/badge/AppVersion-v2.3.0-informational?style=flat-square) +![Version: 0.9.4](https://img.shields.io/badge/Version-0.9.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v2.4.0](https://img.shields.io/badge/AppVersion-v2.4.0-informational?style=flat-square) S3-compatible object store for small self-hosted geo-distributed deployments diff --git a/src/api/admin/Cargo.toml b/src/api/admin/Cargo.toml index ab9a1f47..d12fdb16 100644 --- a/src/api/admin/Cargo.toml +++ b/src/api/admin/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_api_admin" -version = "2.3.0" +version = "2.4.0" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/api/admin/openapi.rs b/src/api/admin/openapi.rs index 2bb5b2a4..27456c22 100644 --- a/src/api/admin/openapi.rs +++ b/src/api/admin/openapi.rs @@ -876,7 +876,7 @@ impl Modify for SecurityAddon { #[derive(OpenApi)] #[openapi( info( - version = "v2.3.0", + version = "v2.4.0", title = "Garage administration API", description = "Administrate your Garage cluster programmatically, including status, layout, keys, buckets, and maintenance tasks. diff --git a/src/api/common/Cargo.toml b/src/api/common/Cargo.toml index 88d4f50a..2a49192d 100644 --- a/src/api/common/Cargo.toml +++ b/src/api/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_api_common" -version = "2.3.0" +version = "2.4.0" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/api/k2v/Cargo.toml b/src/api/k2v/Cargo.toml index 24a0b1bf..125667ff 100644 --- a/src/api/k2v/Cargo.toml +++ b/src/api/k2v/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_api_k2v" -version = "2.3.0" +version = "2.4.0" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/api/s3/Cargo.toml b/src/api/s3/Cargo.toml index 5a9d2e5f..4fdf4468 100644 --- a/src/api/s3/Cargo.toml +++ b/src/api/s3/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_api_s3" -version = "2.3.0" +version = "2.4.0" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/block/Cargo.toml b/src/block/Cargo.toml index ed00b683..35f7ba5c 100644 --- a/src/block/Cargo.toml +++ b/src/block/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_block" -version = "2.3.0" +version = "2.4.0" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/db/Cargo.toml b/src/db/Cargo.toml index 474593f5..4dfb61a4 100644 --- a/src/db/Cargo.toml +++ b/src/db/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_db" -version = "2.3.0" +version = "2.4.0" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/garage/Cargo.toml b/src/garage/Cargo.toml index ceeeee5e..c92a30f5 100644 --- a/src/garage/Cargo.toml +++ b/src/garage/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage" -version = "2.3.0" +version = "2.4.0" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/model/Cargo.toml b/src/model/Cargo.toml index 8b789125..4446a91e 100644 --- a/src/model/Cargo.toml +++ b/src/model/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_model" -version = "2.3.0" +version = "2.4.0" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/net/Cargo.toml b/src/net/Cargo.toml index c2182a5d..df76c084 100644 --- a/src/net/Cargo.toml +++ b/src/net/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_net" -version = "2.3.0" +version = "2.4.0" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/rpc/Cargo.toml b/src/rpc/Cargo.toml index 20c71fdc..e8e8e4b6 100644 --- a/src/rpc/Cargo.toml +++ b/src/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_rpc" -version = "2.3.0" +version = "2.4.0" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/table/Cargo.toml b/src/table/Cargo.toml index e4c5f750..041ca2ee 100644 --- a/src/table/Cargo.toml +++ b/src/table/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_table" -version = "2.3.0" +version = "2.4.0" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/util/Cargo.toml b/src/util/Cargo.toml index 11e5a40e..4ea71599 100644 --- a/src/util/Cargo.toml +++ b/src/util/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_util" -version = "2.3.0" +version = "2.4.0" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/web/Cargo.toml b/src/web/Cargo.toml index 17966b87..d7dc5437 100644 --- a/src/web/Cargo.toml +++ b/src/web/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_web" -version = "2.3.0" +version = "2.4.0" authors = ["Alex Auvolat ", "Quentin Dufour "] edition = "2018" license = "AGPL-3.0"