Skip to content

Commit 620db0f

Browse files
committed
chore(core): update CDI dependency
Signed-off-by: Evan Lezar <elezar@nvidia.com>
1 parent c8caf5d commit 620db0f

4 files changed

Lines changed: 13 additions & 34 deletions

File tree

Cargo.lock

Lines changed: 7 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ rustix = { version = "1.1", features = ["process"] }
7878
socket2 = "0.6"
7979

8080
# Serialization
81-
container-device-interface = { git = "https://github.com/cncf-tags/container-device-interface-rs", rev = "06644c1b167c8dcc247816590901e0a819636b01" }
81+
container-device-interface = { git = "https://github.com/cncf-tags/container-device-interface-rs", rev = "b8a056e92dbd159423c129cd306c93e410651b18" }
8282
serde = { version = "1", features = ["derive"] }
8383
serde_json = "1"
8484
serde_yml = "0.0.12"

crates/openshell-core/src/cdi.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,6 @@ pub enum CdiError {
8282
device: String,
8383
refresh_error: String,
8484
},
85-
#[error("selected CDI device '{0}' is defined by multiple mounted CDI specs")]
86-
DuplicateDevice(String),
8785
#[error("failed to merge CDI edits for '{device}': {error}")]
8886
EditMerge { device: String, error: String },
8987
#[error("failed to encode resolved CDI edits: {source}")]

crates/openshell-core/src/cdi_linux.rs

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -235,9 +235,6 @@ fn resolve_container_edits(
235235
selected_devices: &[String],
236236
) -> Result<CdiContainerEdits, CdiError> {
237237
let (mut cache, refresh_error) = build_cache(&context.spec_dirs);
238-
if let Some(device) = conflicting_selected_device(refresh_error.as_deref(), selected_devices) {
239-
return Err(CdiError::DuplicateDevice(device));
240-
}
241238
let mut merged = UpstreamContainerEdits::new();
242239
let mut applied_specs = BTreeSet::new();
243240

@@ -271,21 +268,6 @@ fn resolve_container_edits(
271268
serde_json::from_value(value).map_err(|source| CdiError::EditDecode { source })
272269
}
273270

274-
// Temporary compatibility check for the Rust CDI cache revision pinned by
275-
// OpenShell. That revision records same-priority device conflicts but leaves
276-
// the conflicted device resolvable. Remove this once OpenShell uses the
277-
// upstream fix that excludes conflicts from the cache's device map.
278-
fn conflicting_selected_device(
279-
refresh_error: Option<&str>,
280-
selected_devices: &[String],
281-
) -> Option<String> {
282-
let refresh_error = refresh_error?;
283-
selected_devices
284-
.iter()
285-
.find(|device| refresh_error.contains(&format!("conflicting device {device} (specs ")))
286-
.cloned()
287-
}
288-
289271
fn missing_device_error(device: &str, refresh_error: Option<&str>) -> CdiError {
290272
refresh_error.map_or_else(
291273
|| CdiError::MissingDevice(device.to_string()),
@@ -730,7 +712,11 @@ devices:
730712
)
731713
.unwrap_err();
732714

733-
assert!(matches!(err, CdiError::DuplicateDevice(device) if device == "nvidia.com/gpu=0"));
715+
assert!(
716+
matches!(err, CdiError::MissingDeviceAfterRefresh { device, refresh_error }
717+
if device == "nvidia.com/gpu=0"
718+
&& refresh_error.contains("conflicting device nvidia.com/gpu=0"))
719+
);
734720
}
735721

736722
#[test]

0 commit comments

Comments
 (0)