use crate::oem::hpe::schema::hpei_lo::HpeiLo as HpeManagerSchema;
use crate::schema::manager::Manager as ManagerSchema;
use crate::Error;
use crate::NvBmc;
use nv_redfish_core::Bmc;
use std::sync::Arc;
pub struct HpeManager<B: Bmc> {
data: Arc<HpeManagerSchema>,
_bmc: NvBmc<B>,
}
impl<B: Bmc> HpeManager<B> {
pub(crate) fn new(bmc: &NvBmc<B>, manager: &ManagerSchema) -> Result<Option<Self>, Error<B>> {
if let Some(oem) = manager
.base
.base
.oem
.as_ref()
.and_then(|oem| oem.additional_properties.get("Hpe"))
{
let data = Arc::new(serde_json::from_value(oem.clone()).map_err(Error::Json)?);
Ok(Some(Self {
data,
_bmc: bmc.clone(),
}))
} else {
Ok(None)
}
}
#[must_use]
pub fn raw(&self) -> Arc<HpeManagerSchema> {
self.data.clone()
}
#[must_use]
pub fn virtual_nic_enabled(&self) -> Option<bool> {
self.data.virtual_nic_enabled
}
}