Skip to content

Commit

Permalink
create fetch_metrics function for use in multitenant, as it contains …
Browse files Browse the repository at this point in the history
…logic
  • Loading branch information
BenoitRanque committed Jul 2, 2024
1 parent 17c09e6 commit a0aec3e
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 25 deletions.
40 changes: 15 additions & 25 deletions crates/sdk/src/default_main.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
use std::error::Error;
use std::net;
use std::path::{Path, PathBuf};

use crate::check_health;
use crate::connector::{
Connector, ConnectorSetup, ExplainError, FetchMetricsError, HealthError, MutationError,
QueryError, SchemaError,
};
use crate::fetch_metrics::fetch_metrics;
use crate::json_rejection::JsonRejection;
use crate::json_response::JsonResponse;
use crate::tracing::{init_tracing, make_span, on_response};
use axum::{
body::Body,
extract::State,
Expand All @@ -12,22 +17,15 @@ use axum::{
};
use axum_extra::extract::WithRejection;
use clap::{Parser, Subcommand};
use prometheus::{Registry, TextEncoder};
use tower_http::{trace::TraceLayer, validate_request::ValidateRequestHeaderLayer};

use ndc_models::{
CapabilitiesResponse, ErrorResponse, ExplainResponse, MutationRequest, MutationResponse,
QueryRequest, QueryResponse, SchemaResponse,
};

use crate::check_health;
use crate::connector::{
Connector, ConnectorSetup, ExplainError, FetchMetricsError, HealthError, MutationError,
QueryError, SchemaError,
};
use crate::json_rejection::JsonRejection;
use crate::json_response::JsonResponse;
use crate::tracing::{init_tracing, make_span, on_response};
use prometheus::Registry;
use std::error::Error;
use std::net;
use std::path::{Path, PathBuf};
use tower_http::{trace::TraceLayer, validate_request::ValidateRequestHeaderLayer};

#[derive(Parser)]
struct CliArgs {
Expand Down Expand Up @@ -376,15 +374,7 @@ fn auth_handler(
async fn get_metrics<C: Connector>(
State(state): State<ServerState<C>>,
) -> Result<String, FetchMetricsError> {
let encoder = TextEncoder::new();

C::fetch_metrics(&state.configuration, &state.state)?;

let metric_families = &state.metrics.gather();

encoder
.encode_to_string(metric_families)
.map_err(|_| FetchMetricsError::new("Unable to encode metrics"))
fetch_metrics::<C>(&state.configuration, &state.state, &state.metrics)
}

async fn get_capabilities<C: Connector>() -> JsonResponse<CapabilitiesResponse> {
Expand Down
18 changes: 18 additions & 0 deletions crates/sdk/src/fetch_metrics.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
use crate::connector::{Connector, FetchMetricsError};
use prometheus::{Registry, TextEncoder};

pub fn fetch_metrics<C: Connector>(
configuration: &C::Configuration,
state: &C::State,
metrics: &Registry,
) -> Result<String, FetchMetricsError> {
let encoder = TextEncoder::new();

C::fetch_metrics(configuration, state)?;

let metric_families = &metrics.gather();

encoder
.encode_to_string(metric_families)
.map_err(|_| FetchMetricsError::new("Unable to encode metrics"))
}
1 change: 1 addition & 0 deletions crates/sdk/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
pub mod check_health;
pub mod connector;
pub mod default_main;
pub mod fetch_metrics;
pub mod json_rejection;
pub mod json_response;
pub mod tracing;
Expand Down

0 comments on commit a0aec3e

Please sign in to comment.