Files
krata/controller/src/ctl/console.rs

29 lines
758 B
Rust
Raw Normal View History

use anyhow::{anyhow, Result};
use crate::console::XenConsole;
use super::ControllerContext;
pub struct ControllerConsole<'a> {
context: &'a mut ControllerContext,
}
impl ControllerConsole<'_> {
pub fn new(context: &mut ControllerContext) -> ControllerConsole<'_> {
ControllerConsole { context }
}
pub async fn perform(&mut self, id: &str) -> Result<()> {
let info = self
.context
2024-02-23 04:37:53 +00:00
.resolve(id)
.await?
.ok_or_else(|| anyhow!("unable to resolve container: {}", id))?;
let domid = info.domid;
2024-02-23 04:37:53 +00:00
let tty = self.context.xen.get_console_path(domid).await?;
let console = XenConsole::new(&tty).await?;
console.attach().await?;
Ok(())
}
}