From a14d8835a5221177a3974dbca6e7356f17f962c5 Mon Sep 17 00:00:00 2001 From: xxchan <37948597+xxchan@users.noreply.github.com> Date: Mon, 5 Sep 2022 23:10:54 +0200 Subject: [PATCH] feat(dashboard-srv): support list sources (#5098) Signed-off-by: xxchan <37948597+xxchan@users.noreply.github.com> Signed-off-by: xxchan <37948597+xxchan@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- src/meta/src/dashboard/mod.rs | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/meta/src/dashboard/mod.rs b/src/meta/src/dashboard/mod.rs index b26bddcd8e102..12e62a332274c 100644 --- a/src/meta/src/dashboard/mod.rs +++ b/src/meta/src/dashboard/mod.rs @@ -43,13 +43,15 @@ pub type Service = Arc>; mod handlers { use axum::Json; - use risingwave_pb::catalog::Table; + use itertools::Itertools; + use risingwave_pb::catalog::{Source, Table}; use risingwave_pb::common::WorkerNode; - use risingwave_pb::meta::ActorLocation; + use risingwave_pb::meta::{ActorLocation, TableFragments as ProstTableFragments}; use risingwave_pb::stream_plan::StreamActor; use serde_json::json; use super::*; + use crate::model::TableFragments; pub struct DashboardError(anyhow::Error); pub type Result = std::result::Result; @@ -98,6 +100,15 @@ mod handlers { Ok(Json(materialized_views)) } + pub async fn list_sources( + Extension(srv): Extension>, + ) -> Result>> { + use crate::model::MetadataModel; + + let sources = Source::list(&*srv.meta_store).await.map_err(err)?; + Ok(Json(sources)) + } + pub async fn list_actors( Extension(srv): Extension>, ) -> Result>> { @@ -133,6 +144,20 @@ mod handlers { Ok(Json(table_fragments)) } + + pub async fn list_fragments( + Extension(srv): Extension>, + ) -> Result>> { + use crate::model::MetadataModel; + + let table_fragments = TableFragments::list(&*srv.meta_store) + .await + .map_err(err)? + .into_iter() + .map(|x| x.to_protobuf()) + .collect_vec(); + Ok(Json(table_fragments)) + } } impl DashboardService @@ -147,7 +172,9 @@ where .route("/clusters/:ty", get(list_clusters::)) .route("/actors", get(list_actors::)) .route("/fragments", get(list_table_fragments::)) + .route("/fragments2", get(list_fragments::)) .route("/materialized_views", get(list_materialized_views::)) + .route("/sources", get(list_sources::)) .layer( ServiceBuilder::new() .layer(AddExtensionLayer::new(srv.clone()))