fix(smart v0.1.14): filtre NVMe correct + SmartStatus défensif
- Filtre nvme : n[4..].contains('n') au lieu de n.contains('n')
pour distinguer nvme0n1 (namespace) de nvme0 (contrôleur)
- SmartStatus.passed : #[serde(default)] pour éviter crash si absent
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
d715b452c1
commit
ee5e8710a3
Generated
+1
-1
@@ -248,7 +248,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nanometrics-agent"
|
name = "nanometrics-agent"
|
||||||
version = "0.1.13"
|
version = "0.1.14"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"rumqttc",
|
"rumqttc",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "nanometrics-agent"
|
name = "nanometrics-agent"
|
||||||
version = "0.1.13"
|
version = "0.1.14"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
|
|||||||
@@ -9,7 +9,10 @@ struct SmartJson {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
struct SmartStatus { passed: bool }
|
struct SmartStatus {
|
||||||
|
#[serde(default)]
|
||||||
|
passed: bool,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
struct SmartTemp {
|
struct SmartTemp {
|
||||||
@@ -96,7 +99,8 @@ pub fn collect() -> Option<Vec<crate::payload::SmartMetrics>> {
|
|||||||
.filter_map(|n| {
|
.filter_map(|n| {
|
||||||
if n.starts_with("sd") {
|
if n.starts_with("sd") {
|
||||||
Some(format!("/dev/{}", n))
|
Some(format!("/dev/{}", n))
|
||||||
} else if n.starts_with("nvme") && n.contains('n') {
|
} else if n.starts_with("nvme") && n[4..].contains('n') {
|
||||||
|
// nvme0n1, nvme1n1 — namespace block device ; "nvme0" (contrôleur) ne passerait pas
|
||||||
Some(format!("/dev/{}", n))
|
Some(format!("/dev/{}", n))
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
|
|||||||
Reference in New Issue
Block a user