1use janus::Statuser;
2use ops_core::{async_trait, CheckResponse, Checker};
3
4const ACTION: &str = "Troubleshoot Janus";
5
6pub struct JanusChecker<S>
8where
9 S: Statuser + Send + Sync,
10{
11 statuser: S,
12 impact: String,
13}
14
15impl<S> JanusChecker<S>
16where
17 S: Statuser + Send + Sync,
18{
19 pub fn new(statuser: S, impact: &str) -> Self {
21 Self {
22 statuser,
23 impact: impact.to_owned(),
24 }
25 }
26}
27
28#[async_trait]
29impl<S> Checker for JanusChecker<S>
30where
31 S: Statuser + Send + Sync,
32{
33 async fn check(&self) -> CheckResponse {
34 match self.statuser.status() {
35 Ok(_) => CheckResponse::healthy("Janus is reachable"),
36 Err(err) => CheckResponse::unhealthy(
37 &format!("Cannot get Janus status: {}", err),
38 ACTION,
39 &self.impact,
40 ),
41 }
42 }
43}