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

28 lines
733 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
.resolve(id)?
.ok_or_else(|| anyhow!("unable to resolve container: {}", id))?;
let domid = info.domid;
let tty = self.context.xen.get_console_path(domid)?;
let console = XenConsole::new(&tty).await?;
console.attach().await?;
Ok(())
}
}