api-server/src/api/route/system.rs

33 lines
934 B
Rust

use rocket::fairing::AdHoc;
use rocket::response::status;
use rocket::serde::json::Json;
use sea_orm_rocket::Connection;
use crate::api;
use crate::api::cluster::node::discover_nodes;
use crate::api::services::Services;
use crate::api::util::{raise_500, read_p5x_config};
#[get("/pubkey")]
fn get_pubkey() -> Result<String, status::Custom<String>> {
let config = read_p5x_config();
Ok(config.ssh_pubkey)
}
#[get("/discover-nodes")]
async fn trigger_discover_nodes(
conn: Connection<'_, api::Db>,
) -> Result<Json<serde_json::Value>, status::Custom<String>> {
let db = conn.into_inner();
let svc = Services::build(db).await.map_err(raise_500)?;
discover_nodes(&svc).await.map_err(raise_500)?;
Ok(Json(serde_json::json!({})))
}
pub(super) fn init() -> AdHoc {
AdHoc::on_ignite("Routes: /system", |rocket| async {
rocket.mount("/system", routes![get_pubkey, trigger_discover_nodes])
})
}