aboutsummaryrefslogtreecommitdiff
path: root/src/api/admin
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/admin')
-rw-r--r--src/api/admin/Cargo.toml3
-rw-r--r--src/api/admin/api_server.rs2
-rw-r--r--src/api/admin/bucket.rs5
-rw-r--r--src/api/admin/cluster.rs3
-rw-r--r--src/api/admin/error.rs15
-rw-r--r--src/api/admin/key.rs3
-rw-r--r--src/api/admin/router_v0.rs3
-rw-r--r--src/api/admin/router_v1.rs3
8 files changed, 18 insertions, 19 deletions
diff --git a/src/api/admin/Cargo.toml b/src/api/admin/Cargo.toml
index 02cbfc3d..804166b3 100644
--- a/src/api/admin/Cargo.toml
+++ b/src/api/admin/Cargo.toml
@@ -69,3 +69,6 @@ quick-xml.workspace = true
opentelemetry.workspace = true
opentelemetry-prometheus = { workspace = true, optional = true }
prometheus = { workspace = true, optional = true }
+
+[features]
+metrics = [ "opentelemetry-prometheus", "prometheus", "garage_api_common/metrics" ]
diff --git a/src/api/admin/api_server.rs b/src/api/admin/api_server.rs
index 7f8a51a6..e39fa1ba 100644
--- a/src/api/admin/api_server.rs
+++ b/src/api/admin/api_server.rs
@@ -21,6 +21,7 @@ use garage_util::error::Error as GarageError;
use garage_util::socket_address::UnixOrTCPSocketAddress;
use garage_api_common::generic_server::*;
+use garage_api_common::helpers::*;
use crate::bucket::*;
use crate::cluster::*;
@@ -28,7 +29,6 @@ use crate::error::*;
use crate::key::*;
use crate::router_v0;
use crate::router_v1::{Authorization, Endpoint};
-use garage_api_common::helpers::*;
pub type ResBody = BoxBody<Error>;
diff --git a/src/api/admin/bucket.rs b/src/api/admin/bucket.rs
index 3afed694..2537bfc9 100644
--- a/src/api/admin/bucket.rs
+++ b/src/api/admin/bucket.rs
@@ -17,11 +17,12 @@ use garage_model::permission::*;
use garage_model::s3::mpu_table;
use garage_model::s3::object_table::*;
+use garage_api_common::common_error::CommonError;
+use garage_api_common::helpers::*;
+
use crate::api_server::ResBody;
use crate::error::*;
use crate::key::ApiBucketKeyPerm;
-use garage_api_common::common_error::CommonError;
-use garage_api_common::helpers::*;
pub async fn handle_list_buckets(garage: &Arc<Garage>) -> Result<Response<ResBody>, Error> {
let buckets = garage
diff --git a/src/api/admin/cluster.rs b/src/api/admin/cluster.rs
index d4a645a2..ffa0fa71 100644
--- a/src/api/admin/cluster.rs
+++ b/src/api/admin/cluster.rs
@@ -12,9 +12,10 @@ use garage_rpc::layout;
use garage_model::garage::Garage;
+use garage_api_common::helpers::{json_ok_response, parse_json_body};
+
use crate::api_server::ResBody;
use crate::error::*;
-use garage_api_common::helpers::{json_ok_response, parse_json_body};
pub async fn handle_get_cluster_status(garage: &Arc<Garage>) -> Result<Response<ResBody>, Error> {
let layout = garage.system.cluster_layout();
diff --git a/src/api/admin/error.rs b/src/api/admin/error.rs
index 1c962776..201f9b40 100644
--- a/src/api/admin/error.rs
+++ b/src/api/admin/error.rs
@@ -6,7 +6,7 @@ use hyper::{HeaderMap, StatusCode};
pub use garage_model::helper::error::Error as HelperError;
-use garage_api_common::common_error::CommonError;
+use garage_api_common::common_error::{commonErrorDerivative, CommonError};
pub use garage_api_common::common_error::{
CommonErrorDerivative, OkOrBadRequest, OkOrInternalError,
};
@@ -18,7 +18,7 @@ use garage_api_common::helpers::*;
pub enum Error {
#[error(display = "{}", _0)]
/// Error from common error
- Common(CommonError),
+ Common(#[error(source)] CommonError),
// Category: cannot process
/// The API access key does not exist
@@ -33,14 +33,7 @@ pub enum Error {
KeyAlreadyExists(String),
}
-impl<T> From<T> for Error
-where
- CommonError: From<T>,
-{
- fn from(err: T) -> Self {
- Error::Common(CommonError::from(err))
- }
-}
+commonErrorDerivative!(Error);
/// FIXME: helper errors are transformed into their corresponding variants
/// in the Error struct, but in many case a helper error should be considered
@@ -55,8 +48,6 @@ impl From<HelperError> for Error {
}
}
-impl CommonErrorDerivative for Error {}
-
impl Error {
fn code(&self) -> &'static str {
match self {
diff --git a/src/api/admin/key.rs b/src/api/admin/key.rs
index 0c017a26..bebf3063 100644
--- a/src/api/admin/key.rs
+++ b/src/api/admin/key.rs
@@ -9,9 +9,10 @@ use garage_table::*;
use garage_model::garage::Garage;
use garage_model::key_table::*;
+use garage_api_common::helpers::*;
+
use crate::api_server::ResBody;
use crate::error::*;
-use garage_api_common::helpers::*;
pub async fn handle_list_keys(garage: &Arc<Garage>) -> Result<Response<ResBody>, Error> {
let res = garage
diff --git a/src/api/admin/router_v0.rs b/src/api/admin/router_v0.rs
index 0c832fe1..9dd742ba 100644
--- a/src/api/admin/router_v0.rs
+++ b/src/api/admin/router_v0.rs
@@ -2,9 +2,10 @@ use std::borrow::Cow;
use hyper::{Method, Request};
-use crate::error::*;
use garage_api_common::router_macros::*;
+use crate::error::*;
+
router_match! {@func
/// List of all Admin API endpoints.
diff --git a/src/api/admin/router_v1.rs b/src/api/admin/router_v1.rs
index d9febd34..0b4901ea 100644
--- a/src/api/admin/router_v1.rs
+++ b/src/api/admin/router_v1.rs
@@ -2,9 +2,10 @@ use std::borrow::Cow;
use hyper::{Method, Request};
+use garage_api_common::router_macros::*;
+
use crate::error::*;
use crate::router_v0;
-use garage_api_common::router_macros::*;
pub enum Authorization {
None,