use std::sync::Arc;
use crate::schema::redfish::metric_report::MetricReport as MetricReportSchema;
use crate::Error;
use crate::NvBmc;
use nv_redfish_core::Bmc;
use nv_redfish_core::ModificationResponse;
use nv_redfish_core::NavProperty;
use nv_redfish_core::ODataId;
pub struct MetricReportRef<B: Bmc> {
bmc: NvBmc<B>,
metric_report_ref: NavProperty<MetricReportSchema>,
}
impl<B: Bmc> MetricReportRef<B> {
pub(crate) fn new(bmc: &NvBmc<B>, metric_report_ref: NavProperty<MetricReportSchema>) -> Self {
Self {
bmc: bmc.clone(),
metric_report_ref,
}
}
#[must_use]
pub fn odata_id(&self) -> &ODataId {
self.metric_report_ref.id()
}
pub async fn fetch(&self) -> Result<Arc<MetricReportSchema>, Error<B>> {
self.metric_report_ref
.get(self.bmc.as_ref())
.await
.map_err(Error::Bmc)
}
pub async fn delete(&self) -> Result<ModificationResponse<MetricReportSchema>, Error<B>> {
self.bmc
.as_ref()
.delete(self.metric_report_ref.id())
.await
.map_err(Error::Bmc)
}
}