| Crates.io | nv-redfish-bmc-mock |
| lib.rs | nv-redfish-bmc-mock |
| version | 0.1.2 |
| created_at | 2025-12-11 17:39:22.14347+00 |
| updated_at | 2025-12-16 02:07:54.345786+00 |
| description | BMC Mock skaffold for nv-redfish |
| homepage | |
| repository | https://github.com/NVIDIA/nv-redfish |
| max_upload_size | |
| id | 1980173 |
| size | 34,966 |
A modular Redfish client stack for Rust.
core: Semantic-unaware foundation used by code generated from CSDL
Bmc, EntityTypeRef, Expandable, NavProperty<T>, Action<T,R>, ODataId, ODataETag, EdmDateTimeOffset, EdmDuration, Emptyreqwest feature (enabled by default) in core::http (ReqwestClient, HttpBmc)redfish: High-level ergonomic wrappers over generated Redfish schema types
accounts (implemented), events (planned)redfish::patch_support) to handle vendor quirks while maintaining compatibilityredfish::schema (autogenerated by the CSDL compiler)csdl-compiler: CSDL (OData) schema compiler and Rust code generator
Service)redfish cratecsdl-compiler with subcommands in csdl-compiler/src/commands.rsredfish (services, OEM flags). The selected features determine which schemas to include (see features.toml) and which high-level wrappers are built.csdl-compiler to generate only the required schema types into the redfish crate (via build.rs), keeping the binary lightweight.redfish APIs (e.g., ServiceRoot, accounts) operate over the generated types and the core primitives.Bmc implementation. With core’s reqwest feature, use HttpBmc<ReqwestClient>; otherwise, plug in your own transport.reqwest (default): enables the HTTP client implementationaccounts: AccountService wrappers (implemented)events: Events service wrappers (planned)Minimal shape (pseudocode):
use nv_redfish_core::http::{HttpBmc, ReqwestClient};
use nv_redfish_core::bmc::BmcCredentials;
use nv_redfish_redfish::ServiceRoot;
use std::sync::Arc;
use url::Url;
# async fn run() -> Result<(), Box<dyn std::error::Error>> {
let bmc = Arc::new(HttpBmc::new(
ReqwestClient::new()?,
Url::parse("https://192.168.1.100")?,
BmcCredentials::new("admin".into(), "password".into()),
));
let root = ServiceRoot::new(Arc::clone(&bmc)).await?;
// If `accounts` feature is enabled:
// let accounts = root.account_service().await?;
// let collection = accounts.accounts().await?;
// println!("{}", collection.odata_id());
# Ok(())
# }
features.toml driven).See workspace Cargo.toml.
This project includes Redfish schema files from DMTF’s Redfish-Publications repository, licensed under the BSD-3-Clause license.
This project includes Swordfish schema files from SNIA, licensed under the BSD-3-Clause license
Please see CONTRIBUTING.md for details.