Skip to content

Commit a05ce9d

Browse files
committed
more case db ops
1 parent 34cae77 commit a05ce9d

File tree

6 files changed

+28
-6
lines changed

6 files changed

+28
-6
lines changed

nexus/db-model/src/fm/case.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ pub struct CaseEreport {
3939
pub case_id: DbTypedUuid<CaseKind>,
4040
pub sitrep_id: DbTypedUuid<SitrepKind>,
4141
pub assigned_sitrep_id: DbTypedUuid<SitrepKind>,
42+
pub comment: String,
4243
}
4344

4445
#[derive(Queryable, Insertable, Clone, Debug, Selectable)]

nexus/db-queries/src/db/datastore/fm.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,8 @@ impl DataStore {
180180
for model::fm::CaseEreport {
181181
restart_id,
182182
ena: DbEna(ena),
183+
comment,
184+
assigned_sitrep_id,
183185
..
184186
} in ereport_assignments
185187
{
@@ -202,7 +204,13 @@ impl DataStore {
202204
entry.insert(Arc::new(ereport)).clone()
203205
}
204206
};
205-
ereports.insert_unique(ereport).unwrap();
207+
ereports
208+
.insert_unique(fm::case::CaseEreport {
209+
ereport,
210+
assigned_sitrep_id: assigned_sitrep_id.into(),
211+
comment,
212+
})
213+
.unwrap();
206214
}
207215

208216
cases
@@ -218,6 +226,7 @@ impl DataStore {
218226
comment: case.comment,
219227
ereports,
220228
alerts_requested,
229+
impacted_sp_slots: Default::default(), // TODO
221230
})
222231
.expect("case UUIDs should be unique");
223232
}
@@ -1228,7 +1237,7 @@ mod tests {
12281237
) -> Result<BTreeSet<SitrepUuid>, Error> {
12291238
let mut listed_orphans = BTreeSet::new();
12301239
let mut paginator = Paginator::new(
1231-
crate::dbSQL_BATC::datastore::H_SIZE,
1240+
SQL_BATCH_SIZE,
12321241
dropshot::PaginationOrder::Descending,
12331242
);
12341243
while let Some(p) = paginator.next() {

nexus/db-schema/src/schema.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2884,6 +2884,8 @@ table! {
28842884
case_id -> Uuid,
28852885
sitrep_id -> Uuid,
28862886
assigned_sitrep_id -> Uuid,
2887+
2888+
comment -> Text,
28872889
}
28882890
}
28892891

nexus/fm/src/de/power_shelf.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ pub fn diagnose(
3434
Some("hw.insert.psu") => {
3535
let psc_psu = extract_psc_psu(&ereport, slot, &sitrep.log);
3636
let mut case = sitrep.open_case(DiagnosisEngine::PowerShelf)?;
37-
case.add_ereport(ereport);
37+
case.add_ereport(ereport, "PSU inserted ereport");
3838
case.comment =
3939
format!("PSC {slot} PSU {:?} inserted", psc_psu.psu_slot);
4040
case.request_alert(&alert::power_shelf::PsuInserted::V0 {
@@ -46,7 +46,7 @@ pub fn diagnose(
4646
Some("hw.remove.psu") => {
4747
let psc_psu = extract_psc_psu(&ereport, slot, &sitrep.log);
4848
let mut case = sitrep.open_case(DiagnosisEngine::PowerShelf)?;
49-
case.add_ereport(ereport);
49+
case.add_ereport(ereport, "PSU removed ereport");
5050
case.comment =
5151
format!("PSC {slot} PSU {:?} removed", psc_psu.psu_slot);
5252
case.request_alert(&alert::power_shelf::PsuRemoved::V0 {

nexus/fm/src/lib.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,16 @@ impl CaseBuilder {
177177
slog::info!(&self.log, "case closed");
178178
}
179179

180-
pub fn add_ereport(&mut self, report: &Arc<fm::Ereport>) {
181-
match self.case.ereports.insert_unique(report.clone()) {
180+
pub fn add_ereport(
181+
&mut self,
182+
report: &Arc<fm::Ereport>,
183+
comment: impl std::fmt::Display,
184+
) {
185+
match self.case.ereports.insert_unique(fm::case::CaseEreport {
186+
ereport: report.clone(),
187+
assigned_sitrep_id: self.sitrep_id,
188+
comment: comment.to_string(),
189+
}) {
182190
Ok(_) => {
183191
slog::info!(
184192
self.log,

schema/crdb/dbinit.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6887,6 +6887,8 @@ CREATE TABLE IF NOT EXISTS omicron.public.fm_ereport_in_case (
68876887
-- case.
68886888
assigned_sitrep_id UUID NOT NULL,
68896889

6890+
comment TEXT NOT NULL,
6891+
68906892
PRIMARY KEY (sitrep_id, restart_id, ena)
68916893
);
68926894

0 commit comments

Comments
 (0)