Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ authors = ["NVIDIA Carbide Engineering <carbide-dev@exchange.nvidia.com>"]
[workspace.dependencies]
clap = { version = "4", features = ["derive", "env"] }
libredfish = { git = "https://github.com/NVIDIA/libredfish.git", tag = "v0.44.2" }
librms = { git = "https://github.com/NVIDIA/nv-rms-client.git", tag = "v0.0.12-rc1" }
librms = { git = "https://github.com/NVIDIA/nv-rms-client.git", tag = "v0.0.12-rc4" }
ansi-to-html = "0.2.2"

tokio = { version = "1", features = ["full", "tracing"] }
Expand Down
82 changes: 82 additions & 0 deletions crates/api-test-helper/src/mock_rms.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ pub struct MockRmsApi {
Mutex<VecDeque<Result<rms::SetPowerStateByDeviceListResponse, RackManagerError>>>,
set_power_state_by_device_list_calls: Mutex<Vec<rms::SetPowerStateByDeviceListRequest>>,

get_power_state_by_device_list_responses:
Mutex<VecDeque<Result<rms::GetPowerStateByDeviceListResponse, RackManagerError>>>,
get_power_state_by_device_list_calls: Mutex<Vec<rms::GetPowerStateByDeviceListRequest>>,

get_power_state_responses:
Mutex<VecDeque<Result<rms::GetPowerStateResponse, RackManagerError>>>,
get_power_state_calls: Mutex<Vec<rms::GetPowerStateRequest>>,
Expand Down Expand Up @@ -201,6 +205,8 @@ impl MockRmsApi {
set_power_state_calls: Default::default(),
set_power_state_by_device_list_responses: Default::default(),
set_power_state_by_device_list_calls: Default::default(),
get_power_state_by_device_list_responses: Default::default(),
get_power_state_by_device_list_calls: Default::default(),
get_power_state_responses: Default::default(),
get_power_state_calls: Default::default(),
sequence_rack_power_responses: Default::default(),
Expand Down Expand Up @@ -673,12 +679,88 @@ impl RmsApi for MockRmsApi {
.push(cmd);
pop_or_err(&mut self.set_power_state_by_device_list_responses.lock().await)
}
async fn get_power_state_by_device_list(
&self,
cmd: rms::GetPowerStateByDeviceListRequest,
) -> Result<rms::GetPowerStateByDeviceListResponse, RackManagerError> {
self.get_power_state_by_device_list_calls
.lock()
.await
.push(cmd);
pop_or_err(&mut self.get_power_state_by_device_list_responses.lock().await)
}
async fn update_switch_system_password(
&self,
_cmd: rms::UpdateSwitchSystemPasswordRequest,
) -> Result<rms::UpdateSwitchSystemPasswordResponse, RackManagerError> {
Ok(rms::UpdateSwitchSystemPasswordResponse::default())
}
async fn add_firmware_object(
&self,
_cmd: rms::AddFirmwareObjectRequest,
) -> Result<rms::FirmwareObject, RackManagerError> {
Ok(rms::FirmwareObject::default())
}
async fn get_firmware_object(
&self,
_cmd: rms::GetFirmwareObjectRequest,
) -> Result<rms::FirmwareObject, RackManagerError> {
Ok(rms::FirmwareObject::default())
}
async fn list_firmware_objects(
&self,
_cmd: rms::ListFirmwareObjectsRequest,
) -> Result<rms::ListFirmwareObjectsResponse, RackManagerError> {
Ok(rms::ListFirmwareObjectsResponse::default())
}
async fn delete_firmware_object(
&self,
_cmd: rms::DeleteFirmwareObjectRequest,
) -> Result<rms::OperationResponse, RackManagerError> {
Ok(rms::OperationResponse::default())
}
async fn set_default_firmware_object(
&self,
_cmd: rms::SetDefaultFirmwareObjectRequest,
) -> Result<rms::FirmwareObject, RackManagerError> {
Ok(rms::FirmwareObject::default())
}
async fn apply_firmware_object(
&self,
_cmd: rms::ApplyFirmwareObjectRequest,
) -> Result<rms::ApplyFirmwareObjectResponse, RackManagerError> {
Ok(rms::ApplyFirmwareObjectResponse::default())
}
async fn apply_firmware_object_from_json(
&self,
_cmd: rms::ApplyFirmwareObjectFromJsonRequest,
) -> Result<rms::ApplyFirmwareObjectResponse, RackManagerError> {
Ok(rms::ApplyFirmwareObjectResponse::default())
}
async fn apply_switch_system_image(
&self,
_cmd: rms::ApplySwitchSystemImageRequest,
) -> Result<rms::ApplySwitchSystemImageResponse, RackManagerError> {
Ok(rms::ApplySwitchSystemImageResponse::default())
}
async fn apply_switch_system_image_from_json(
&self,
_cmd: rms::ApplySwitchSystemImageFromJsonRequest,
) -> Result<rms::ApplySwitchSystemImageResponse, RackManagerError> {
Ok(rms::ApplySwitchSystemImageResponse::default())
}
async fn get_firmware_object_history(
&self,
_cmd: rms::GetFirmwareObjectHistoryRequest,
) -> Result<rms::GetFirmwareObjectHistoryResponse, RackManagerError> {
Ok(rms::GetFirmwareObjectHistoryResponse::default())
}
async fn set_scale_up_fabric_state(
&self,
_cmd: rms::SetScaleUpFabricStateRequest,
) -> Result<rms::SetScaleUpFabricStateResponse, RackManagerError> {
Ok(rms::SetScaleUpFabricStateResponse::default())
}
async fn get_power_state(
&self,
cmd: rms::GetPowerStateRequest,
Expand Down
72 changes: 72 additions & 0 deletions crates/api/src/rack/rms_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,78 @@ pub mod test_support {
) -> Result<rms::GetPowerStateResponse, RackManagerError> {
Ok(rms::GetPowerStateResponse::default())
}
async fn get_power_state_by_device_list(
&self,
_cmd: rms::GetPowerStateByDeviceListRequest,
) -> Result<rms::GetPowerStateByDeviceListResponse, RackManagerError> {
Ok(rms::GetPowerStateByDeviceListResponse::default())
}
async fn add_firmware_object(
&self,
_cmd: rms::AddFirmwareObjectRequest,
) -> Result<rms::FirmwareObject, RackManagerError> {
Ok(rms::FirmwareObject::default())
}
async fn get_firmware_object(
&self,
_cmd: rms::GetFirmwareObjectRequest,
) -> Result<rms::FirmwareObject, RackManagerError> {
Ok(rms::FirmwareObject::default())
}
async fn list_firmware_objects(
&self,
_cmd: rms::ListFirmwareObjectsRequest,
) -> Result<rms::ListFirmwareObjectsResponse, RackManagerError> {
Ok(rms::ListFirmwareObjectsResponse::default())
}
async fn delete_firmware_object(
&self,
_cmd: rms::DeleteFirmwareObjectRequest,
) -> Result<rms::OperationResponse, RackManagerError> {
Ok(rms::OperationResponse::default())
}
async fn set_default_firmware_object(
&self,
_cmd: rms::SetDefaultFirmwareObjectRequest,
) -> Result<rms::FirmwareObject, RackManagerError> {
Ok(rms::FirmwareObject::default())
}
async fn apply_firmware_object(
&self,
_cmd: rms::ApplyFirmwareObjectRequest,
) -> Result<rms::ApplyFirmwareObjectResponse, RackManagerError> {
Ok(rms::ApplyFirmwareObjectResponse::default())
}
async fn apply_firmware_object_from_json(
&self,
_cmd: rms::ApplyFirmwareObjectFromJsonRequest,
) -> Result<rms::ApplyFirmwareObjectResponse, RackManagerError> {
Ok(rms::ApplyFirmwareObjectResponse::default())
}
async fn apply_switch_system_image(
&self,
_cmd: rms::ApplySwitchSystemImageRequest,
) -> Result<rms::ApplySwitchSystemImageResponse, RackManagerError> {
Ok(rms::ApplySwitchSystemImageResponse::default())
}
async fn apply_switch_system_image_from_json(
&self,
_cmd: rms::ApplySwitchSystemImageFromJsonRequest,
) -> Result<rms::ApplySwitchSystemImageResponse, RackManagerError> {
Ok(rms::ApplySwitchSystemImageResponse::default())
}
async fn get_firmware_object_history(
&self,
_cmd: rms::GetFirmwareObjectHistoryRequest,
) -> Result<rms::GetFirmwareObjectHistoryResponse, RackManagerError> {
Ok(rms::GetFirmwareObjectHistoryResponse::default())
}
async fn set_scale_up_fabric_state(
&self,
_cmd: rms::SetScaleUpFabricStateRequest,
) -> Result<rms::SetScaleUpFabricStateResponse, RackManagerError> {
Ok(rms::SetScaleUpFabricStateResponse::default())
}
async fn sequence_rack_power(
&self,
_cmd: rms::SequenceRackPowerRequest,
Expand Down
11 changes: 6 additions & 5 deletions crates/api/src/state_controller/power_shelf/maintenance.rs
Original file line number Diff line number Diff line change
Expand Up @@ -245,11 +245,12 @@ async fn invoke_rms_power_operation(
}

/// Build the `rms::NewNodeInfo` describing this power shelf for inclusion
/// in a `SetPowerStateByDeviceList` request. Resolves the BMC IP from the
/// database and BMC credentials via the credential manager, since the
/// caller-supplied variant of the RPC requires the BMC connection details
/// inline rather than relying on RMS's inventory.
async fn build_power_shelf_node_info(
/// in any caller-supplied `NodeSet` request (`SetPowerStateByDeviceList`
/// from `Maintenance`, `GetDeviceInfoByDeviceList` from `Ready`). Resolves
/// the BMC IP from the database and BMC credentials via the credential
/// manager, since these RPCs require the BMC connection details inline
/// rather than relying on RMS's inventory.
pub(super) async fn build_power_shelf_node_info(
power_shelf_id: &PowerShelfId,
state: &PowerShelf,
rack_id: String,
Expand Down
Loading