Skip to main content

babelforce_manager_sdk/resources/
metrics.rs

1use std::sync::Arc;
2
3use crate::error::{map_manager_err, ManagerError};
4use crate::gen::manager::apis::configuration::Configuration;
5use crate::gen::manager::apis::{manager_api, metric_api};
6use crate::gen::manager::models;
7use crate::retry::{with_retry, RetryPolicy};
8
9/// Metrics — `/api/v2/metrics`.
10pub struct MetricsResource {
11    pub(crate) cfg: Arc<Configuration>,
12    pub(crate) retry: RetryPolicy,
13}
14
15impl MetricsResource {
16    /// List the available metric ids.
17    pub async fn list_ids(&self) -> Result<models::MetricIdItemsResponse, ManagerError> {
18        with_retry(&self.retry, true, || {
19            manager_api::list_metric_ids(self.cfg.as_ref())
20        })
21        .await
22        .map_err(map_manager_err)
23    }
24
25    /// List all metric definitions.
26    pub async fn definitions(&self) -> Result<models::MetricDefinitionListResponse, ManagerError> {
27        with_retry(&self.retry, true, || {
28            manager_api::get_all_metric_definitions(self.cfg.as_ref())
29        })
30        .await
31        .map_err(map_manager_err)
32    }
33
34    /// Get a metric's current value by id.
35    pub async fn get(&self, id: &str) -> Result<models::MetricResponse, ManagerError> {
36        with_retry(&self.retry, true, || {
37            manager_api::get_metric(self.cfg.as_ref(), id)
38        })
39        .await
40        .map_err(map_manager_err)
41    }
42
43    /// Get a metric's definition by id.
44    pub async fn describe(
45        &self,
46        id: &str,
47    ) -> Result<models::MetricDefinitionItemResponse, ManagerError> {
48        with_retry(&self.retry, true, || {
49            metric_api::get_metric_definition(self.cfg.as_ref(), id)
50        })
51        .await
52        .map_err(map_manager_err)
53    }
54}