diff --git a/hostd/src/main.rs b/hostd/src/main.rs index d0f8fcd..77f9d56 100644 --- a/hostd/src/main.rs +++ b/hostd/src/main.rs @@ -1,24 +1,30 @@ use anyhow::Result; -use internal::ipc::patagia::io_patagia_hostd::{ - Call_Apply, Call_Describe, Machine, VarlinkInterface, -}; +use internal::ipc::patagia::io_patagia_hostd; +use internal::ipc::systemd::io_systemd_hostname::{self, VarlinkClientInterface}; const LISTEN_ADDRESS: &str = "unix:/tmp/patagia/io.patagia.hostd"; struct PatagiaHostd; -impl VarlinkInterface for PatagiaHostd { - fn apply(&self, call: &mut dyn Call_Apply, machine: Machine) -> varlink::Result<()> { +impl io_patagia_hostd::VarlinkInterface for PatagiaHostd { + fn apply( + &self, + call: &mut dyn io_patagia_hostd::Call_Apply, + machine: io_patagia_hostd::Machine, + ) -> varlink::Result<()> { // FIXME: Do something useful println!("Applying machine config: {:#?}", machine); call.reply() } - fn describe(&self, call: &mut dyn Call_Describe) -> varlink::Result<()> { - // FIXME: Do something useful - let machine = Machine { - machineId: "123456789".to_string(), + fn describe(&self, call: &mut dyn io_patagia_hostd::Call_Describe) -> varlink::Result<()> { + let conn = + varlink::Connection::with_address("unix:/run/systemd/io.systemd.Hostname").unwrap(); + let mut sd = io_systemd_hostname::VarlinkClient::new(conn); + + let machine = io_patagia_hostd::Machine { + machineId: sd.describe().call().unwrap().MachineID, nodeLabels: None, patagiaAgent: None, }; @@ -28,7 +34,7 @@ impl VarlinkInterface for PatagiaHostd { fn main() -> Result<()> { let hostd = PatagiaHostd; - let hostd_iface = internal::ipc::patagia::io_patagia_hostd::new(Box::new(hostd)); + let hostd_iface = io_patagia_hostd::new(Box::new(hostd)); let svc = varlink::VarlinkService::new( "io.patagia.hostd",