From: "Fabian Grünbichler" <f.gruenbichler@proxmox.com>
To: pdm-devel@lists.proxmox.com
Subject: [pdm-devel] [PATCH datacenter-manager] ui: pve: mask node shell if pve-manager is too old
Date: Wed, 3 Dec 2025 15:04:06 +0100 [thread overview]
Message-ID: <20251203140408.1280278-1-f.gruenbichler@proxmox.com> (raw)
by passing along the version and comparing it when loading the shell view.
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
Notes:
PBS doesn't yet have the machinery in place to query the PBS version AFAICT,
but once it has, a similar check can disable the shell button there..
ui/src/pve/mod.rs | 8 +++++++-
ui/src/pve/node/mod.rs | 31 +++++++++++++++++++++++++++----
2 files changed, 34 insertions(+), 5 deletions(-)
diff --git a/ui/src/pve/mod.rs b/ui/src/pve/mod.rs
index d0d038d..712191a 100644
--- a/ui/src/pve/mod.rs
+++ b/ui/src/pve/mod.rs
@@ -193,7 +193,13 @@ impl LoadableComponent for PveRemoteComp {
let content: Html = match &self.view {
PveTreeNode::Root => remote::PveRemotePanel::new(remote.clone()).into(),
PveTreeNode::Node(node) => {
- node::PveNodePanel::new(remote.clone(), node.node.clone()).into()
+ let pve_manager = match &self.updates.data {
+ Some(updates) => extract_package_version(updates, &node.node, "pve-manager"),
+ None => None,
+ };
+ node::PveNodePanel::new(remote.clone(), node.node.clone())
+ .pve_manager_version(pve_manager)
+ .into()
}
PveTreeNode::Qemu(qemu) => {
let pve_manager = match &self.updates.data {
diff --git a/ui/src/pve/node/mod.rs b/ui/src/pve/node/mod.rs
index eb7ceb3..056f15c 100644
--- a/ui/src/pve/node/mod.rs
+++ b/ui/src/pve/node/mod.rs
@@ -1,6 +1,7 @@
use std::rc::Rc;
use gloo_utils::window;
+use proxmox_deb_version::Version;
use proxmox_yew_comp::{AptPackageManager, ConsoleType, NotesView, XTermJs};
use yew::virtual_dom::{VComp, VNode};
@@ -10,6 +11,7 @@ use pwt::{
props::{ContainerBuilder, WidgetBuilder},
widget::{Fa, Row, TabBarItem, TabPanel},
};
+use pwt_macros::builder;
mod overview;
@@ -18,12 +20,18 @@ use overview::PveNodeOverviewPanel;
use crate::get_deep_url;
#[derive(Clone, Debug, Eq, PartialEq, Properties)]
+#[builder]
pub struct PveNodePanel {
/// The remote to show
pub remote: String,
/// The node to show
pub node: String,
+
+ #[prop_or_default]
+ #[builder]
+ /// The nodes pve-manager version, used to feature gate some entries.
+ pve_manager_version: Option<Version>,
}
impl PveNodePanel {
@@ -133,11 +141,26 @@ impl yew::Component for PveNodePanelComp {
{
let remote = props.remote.clone();
let node = props.node.clone();
+ let supported = props
+ .pve_manager_version
+ .as_ref()
+ .map(|ver| ver >= &Version::new("9.1.0", None))
+ .unwrap_or(true);
move |_| {
- let mut xtermjs = XTermJs::new();
- xtermjs.set_node_name(node.clone());
- xtermjs.set_console_type(ConsoleType::RemotePveLoginShell(remote.clone()));
- xtermjs.into()
+ if supported {
+ let mut xtermjs = XTermJs::new();
+ xtermjs.set_node_name(node.clone());
+ xtermjs
+ .set_console_type(ConsoleType::RemotePveLoginShell(remote.clone()));
+ xtermjs.into()
+ } else {
+ Row::new()
+ .class(pwt::css::FlexFit)
+ .class(pwt::css::JustifyContent::Center)
+ .class(pwt::css::AlignItems::Center)
+ .with_child(html! { tr!("pve-manager version too old") })
+ .into()
+ }
}
},
)
--
2.47.3
_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel
next reply other threads:[~2025-12-03 14:03 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-03 14:04 Fabian Grünbichler [this message]
2025-12-03 14:41 ` [pdm-devel] applied: " Dominik Csapak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251203140408.1280278-1-f.gruenbichler@proxmox.com \
--to=f.gruenbichler@proxmox.com \
--cc=pdm-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.