Skip to content

Commit

Permalink
adminspace
Browse files Browse the repository at this point in the history
  • Loading branch information
milyin committed Nov 13, 2023
1 parent 0cf6ca4 commit 19a3c68
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 6 deletions.
2 changes: 1 addition & 1 deletion plugins/zenoh-backend-traits/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ impl PluginStructVersion for VolumePlugin {
}

impl PluginControl for VolumePlugin {
fn plugins(&self, _names: &zenoh::prelude::keyexpr) -> Vec<(String, PluginStatus)> {
fn plugins_status(&self, _names: &zenoh::prelude::keyexpr) -> Vec<(String, PluginStatus)> {
Vec::new()
}
}
Expand Down
4 changes: 2 additions & 2 deletions plugins/zenoh-plugin-storage-manager/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -227,9 +227,9 @@ impl PluginControl for StorageRuntime {
fn condition(&self) -> PluginCondition {
PluginCondition::default()
}
fn plugins(&self, names: &keyexpr) -> Vec<(String, PluginStatus)> {
fn plugins_status(&self, names: &keyexpr) -> Vec<(String, PluginStatus)> {
let guard = self.0.lock().unwrap();
guard.plugins_manager.plugins(names)
guard.plugins_manager.plugins_status(names)
}
}

Expand Down
4 changes: 2 additions & 2 deletions plugins/zenoh-plugin-trait/src/loading.rs
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ impl<StartArgs: PluginStartArgs + 'static, Instance: PluginInstance + 'static>
impl<StartArgs: PluginStartArgs + 'static, Instance: PluginInstance + 'static> PluginControl
for PluginsManager<StartArgs, Instance>
{
fn plugins(&self, names: &keyexpr) -> Vec<(String, PluginStatus)> {
fn plugins_status(&self, names: &keyexpr) -> Vec<(String, PluginStatus)> {
let mut plugins = Vec::new();
for plugin in self.declared_plugins() {
let name = unsafe { keyexpr::from_str_unchecked(plugin.name()) };
Expand All @@ -257,7 +257,7 @@ impl<StartArgs: PluginStartArgs + 'static, Instance: PluginInstance + 'static> P
if let Some(plugin) = plugin.loaded() {
if let Some(plugin) = plugin.started() {
if let [names, ..] = names.strip_prefix(name)[..] {
plugins.append(&mut plugin.instance().plugins(names));
plugins.append(&mut plugin.instance().plugins_status(names));
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion plugins/zenoh-plugin-trait/src/plugin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ pub trait PluginControl {
PluginCondition::default()
}
/// Collect information of sub-plugins matching `_names` keyexpr
fn plugins(&self, _names: &keyexpr) -> Vec<(String, PluginStatus)> {
fn plugins_status(&self, _names: &keyexpr) -> Vec<(String, PluginStatus)> {
Vec::new()
}
}
Expand Down
18 changes: 18 additions & 0 deletions zenoh/src/net/runtime/adminspace.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ use crate::value::Value;
use async_std::task;
use log::{error, trace};
use serde_json::json;
use zenoh_plugin_trait::PluginControl;
use zenoh_protocol::core::key_expr::keyexpr;
use std::collections::HashMap;
use std::convert::TryFrom;
use std::convert::TryInto;
Expand Down Expand Up @@ -157,6 +159,12 @@ impl AdminSpace {
.unwrap(),
Arc::new(queryables_data),
);
handlers.insert(
format!("@/router/{zid_str}/plugins/**")
.try_into()
.unwrap(),
Arc::new(plugins_data),
);
handlers.insert(
format!("@/router/{zid_str}/status/plugins/**")
.try_into()
Expand Down Expand Up @@ -650,6 +658,16 @@ fn queryables_data(context: &AdminContext, query: Query) {
}
}

fn plugins_data(context: &AdminContext, query: Query) {
let guard = zlock!(context.plugins_mgr);
let root_key = format!("@/router/{}/plugins", &context.zid_str);
let root_key = unsafe { keyexpr::from_str_unchecked(&root_key) };
if let [names,..] = query.key_expr().strip_prefix(root_key)[..] {
let statuses = guard.plugins_status(names);
log::info!("Statuses: {:?}", statuses);
}
}

fn plugins_status(context: &AdminContext, query: Query) {
let selector = query.selector();
let guard = zlock!(context.plugins_mgr);
Expand Down

0 comments on commit 19a3c68

Please sign in to comment.