diff --git a/dev-tools/omdb/src/bin/omdb/db.rs b/dev-tools/omdb/src/bin/omdb/db.rs index 822fa5fdfa..9ffc424874 100644 --- a/dev-tools/omdb/src/bin/omdb/db.rs +++ b/dev-tools/omdb/src/bin/omdb/db.rs @@ -6755,6 +6755,8 @@ async fn cmd_db_inventory_cabooses( git_commit: String, name: String, version: String, + #[tabled(display_with = "option_impl_display")] + sign: Option, } use nexus_db_schema::schema::sw_caboose::dsl; @@ -6773,6 +6775,7 @@ async fn cmd_db_inventory_cabooses( name: caboose.name, version: caboose.version, git_commit: caboose.git_commit, + sign: caboose.sign, }); let table = tabled::Table::new(rows) .with(tabled::settings::Style::empty()) @@ -7121,6 +7124,8 @@ async fn inv_collection_print_devices( name: &'a str, version: &'a str, git_commit: &'a str, + #[tabled(display_with = "option_impl_display")] + sign: &'a Option, } println!(" cabooses:"); @@ -7134,6 +7139,7 @@ async fn inv_collection_print_devices( name: &found_caboose.caboose.name, version: &found_caboose.caboose.version, git_commit: &found_caboose.caboose.git_commit, + sign: &found_caboose.caboose.sign, }) .collect(); let table = tabled::Table::new(caboose_rows) diff --git a/nexus/db-model/src/inventory.rs b/nexus/db-model/src/inventory.rs index 71ebe4e145..62abfacdab 100644 --- a/nexus/db-model/src/inventory.rs +++ b/nexus/db-model/src/inventory.rs @@ -458,6 +458,7 @@ pub struct SwCaboose { pub git_commit: String, pub name: String, pub version: String, + pub sign: Option, } impl From for SwCaboose { @@ -468,6 +469,7 @@ impl From for SwCaboose { git_commit: c.git_commit, name: c.name, version: c.version, + sign: c.sign, } } } @@ -479,6 +481,7 @@ impl From for Caboose { git_commit: row.git_commit, name: row.name, version: row.version, + sign: row.sign, } } } diff --git a/nexus/db-model/src/schema_versions.rs b/nexus/db-model/src/schema_versions.rs index fa3f8f4935..7a86e1e8bc 100644 --- a/nexus/db-model/src/schema_versions.rs +++ b/nexus/db-model/src/schema_versions.rs @@ -16,7 +16,7 @@ use std::{collections::BTreeMap, sync::LazyLock}; /// /// This must be updated when you change the database schema. Refer to /// schema/crdb/README.adoc in the root of this repository for details. -pub const SCHEMA_VERSION: Version = Version::new(138, 0, 0); +pub const SCHEMA_VERSION: Version = Version::new(139, 0, 0); /// List of all past database schema versions, in *reverse* order /// @@ -28,6 +28,7 @@ static KNOWN_VERSIONS: LazyLock> = LazyLock::new(|| { // | leaving the first copy as an example for the next person. // v // KnownVersion::new(next_int, "unique-dirname-with-the-sql-files"), + KnownVersion::new(139, "caboose-sign-value"), KnownVersion::new(138, "saga-abandoned-state"), KnownVersion::new(137, "oximeter-read-policy"), KnownVersion::new(136, "do-not-provision-flag-for-crucible-dataset"), diff --git a/nexus/db-queries/src/db/datastore/inventory.rs b/nexus/db-queries/src/db/datastore/inventory.rs index 0d5242bee3..a4f9084405 100644 --- a/nexus/db-queries/src/db/datastore/inventory.rs +++ b/nexus/db-queries/src/db/datastore/inventory.rs @@ -18,6 +18,7 @@ use diesel::IntoSql; use diesel::JoinOnDsl; use diesel::NullableExpressionMethods; use diesel::OptionalExtension; +use diesel::PgExpressionMethods; use diesel::QueryDsl; use diesel::Table; use diesel::expression::SelectableHelper; @@ -554,7 +555,7 @@ impl DataStore { // - `hw_baseboard` with an "id" primary key and lookup columns // "part_number" and "serial_number" // - `sw_caboose` with an "id" primary key and lookup columns - // "board", "git_commit", "name", and "version" + // "board", "git_commit", "name", "version, and sign" // - `inv_caboose` with foreign keys "hw_baseboard_id", // "sw_caboose_id", and various other columns // @@ -596,7 +597,8 @@ impl DataStore { // AND sw_caboose.board = ... // AND sw_caboose.git_commit = ... // AND sw_caboose.name = ... - // AND sw_caboose.version = ...; + // AND sw_caboose.version = ... + // AND sw_caboose.sign IS NOT DISTINCT FROM ...; // // Again, the whole point is to avoid back-and-forth between the // client and the database. Those back-and-forth interactions can @@ -642,6 +644,9 @@ impl DataStore { ) .and(dsl_sw_caboose::version.eq( found_caboose.caboose.version.clone(), + )) + .and(dsl_sw_caboose::sign.is_not_distinct_from( + found_caboose.caboose.sign.clone(), )), ), ) diff --git a/nexus/db-schema/src/schema.rs b/nexus/db-schema/src/schema.rs index 04da8f8129..f14ba51b1d 100644 --- a/nexus/db-schema/src/schema.rs +++ b/nexus/db-schema/src/schema.rs @@ -1475,6 +1475,7 @@ table! { git_commit -> Text, name -> Text, version -> Text, + sign -> Nullable, } } diff --git a/nexus/inventory/src/builder.rs b/nexus/inventory/src/builder.rs index 3d4e94be1d..960d4aa087 100644 --- a/nexus/inventory/src/builder.rs +++ b/nexus/inventory/src/builder.rs @@ -717,6 +717,7 @@ mod test { git_commit: String::from("git_commit_1"), name: String::from("name_1"), version: String::from("version_1"), + sign: Some(String::from("sign_1")), }; for bb in &common_caboose_baseboards { let _ = collection.sps.get(*bb).unwrap(); @@ -1105,7 +1106,7 @@ mod test { git_commit: String::from("git_commit1"), name: String::from("name1"), version: String::from("version1"), - sign: None, + sign: Some(String::from("sign1")), epoch: None, }; assert!( @@ -1125,7 +1126,7 @@ mod test { "reporting caboose for unknown baseboard: \ BaseboardId { part_number: \"p1\", serial_number: \"bogus\" } \ (Caboose { board: \"board1\", git_commit: \"git_commit1\", \ - name: \"name1\", version: \"version1\" })" + name: \"name1\", version: \"version1\", sign: Some(\"sign1\") })" ); assert!( !builder @@ -1177,7 +1178,7 @@ mod test { git_commit: String::from("git_commit2"), name: String::from("name2"), version: String::from("version2"), - sign: None, + sign: Some(String::from("sign2")), epoch: None, }, ) diff --git a/nexus/inventory/src/collector.rs b/nexus/inventory/src/collector.rs index 36a97a26dd..c2a8aa37d8 100644 --- a/nexus/inventory/src/collector.rs +++ b/nexus/inventory/src/collector.rs @@ -451,8 +451,8 @@ mod test { for c in &collection.cabooses { write!( &mut s, - " board {:?} name {:?} version {:?} git_commit {:?}\n", - c.board, c.name, c.version, c.git_commit, + " board {:?} name {:?} version {:?} git_commit {:?} sign {:?}\n", + c.board, c.name, c.version, c.git_commit, c.sign, ) .unwrap(); } diff --git a/nexus/inventory/src/examples.rs b/nexus/inventory/src/examples.rs index 03006d5e6f..f8dea3a4e0 100644 --- a/nexus/inventory/src/examples.rs +++ b/nexus/inventory/src/examples.rs @@ -540,7 +540,7 @@ pub fn caboose(unique: &str) -> SpComponentCaboose { git_commit: format!("git_commit_{}", unique), name: format!("name_{}", unique), version: format!("version_{}", unique), - sign: None, + sign: Some(format!("sign_{}", unique)), epoch: None, } } diff --git a/nexus/inventory/tests/output/collector_basic.txt b/nexus/inventory/tests/output/collector_basic.txt index 896cdcddbc..6550ef1f9d 100644 --- a/nexus/inventory/tests/output/collector_basic.txt +++ b/nexus/inventory/tests/output/collector_basic.txt @@ -7,18 +7,18 @@ baseboards: part "sim-gimlet" serial "sim-9cb9b78f-5614-440c-b66d-e8e81fab69b0" cabooses: - board "SimGimletSp" name "SimGimlet" version "0.0.1" git_commit "fefefefe" - board "SimGimletSp" name "SimGimlet" version "0.0.2" git_commit "ffffffff" - board "SimRot" name "SimGimletRot" version "0.0.3" git_commit "edededed" - board "SimRot" name "SimSidecar" version "0.0.3" git_commit "edededed" - board "SimRot" name "SimGimletRot" version "0.0.4" git_commit "eeeeeeee" - board "SimRot" name "SimSidecar" version "0.0.4" git_commit "eeeeeeee" - board "SimRotStage0" name "SimSidecar" version "0.0.200" git_commit "dadadada" - board "SimRotStage0" name "SimGimletRot" version "0.0.200" git_commit "dadadadad" - board "SimRotStage0" name "SimSidecar" version "0.0.200" git_commit "dddddddd" - board "SimRotStage0" name "SimGimletRot" version "0.0.200" git_commit "ddddddddd" - board "SimSidecarSp" name "SimSidecar" version "0.0.1" git_commit "fefefefe" - board "SimSidecarSp" name "SimSidecar" version "0.0.2" git_commit "ffffffff" + board "SimGimletSp" name "SimGimlet" version "0.0.1" git_commit "fefefefe" sign None + board "SimGimletSp" name "SimGimlet" version "0.0.2" git_commit "ffffffff" sign None + board "SimRot" name "SimGimletRot" version "0.0.3" git_commit "edededed" sign Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") + board "SimRot" name "SimSidecar" version "0.0.3" git_commit "edededed" sign Some("1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27") + board "SimRot" name "SimGimletRot" version "0.0.4" git_commit "eeeeeeee" sign Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") + board "SimRot" name "SimSidecar" version "0.0.4" git_commit "eeeeeeee" sign Some("1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27") + board "SimRotStage0" name "SimSidecar" version "0.0.200" git_commit "dadadada" sign Some("1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27") + board "SimRotStage0" name "SimGimletRot" version "0.0.200" git_commit "dadadadad" sign Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") + board "SimRotStage0" name "SimSidecar" version "0.0.200" git_commit "dddddddd" sign Some("1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27") + board "SimRotStage0" name "SimGimletRot" version "0.0.200" git_commit "ddddddddd" sign Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") + board "SimSidecarSp" name "SimSidecar" version "0.0.1" git_commit "fefefefe" sign None + board "SimSidecarSp" name "SimSidecar" version "0.0.2" git_commit "ffffffff" sign None rot pages: data_base64 "Z2ltbGV0LWNmcGEtYWN0aXZlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" diff --git a/nexus/inventory/tests/output/collector_errors.txt b/nexus/inventory/tests/output/collector_errors.txt index 79d61567dd..92ccb4bedc 100644 --- a/nexus/inventory/tests/output/collector_errors.txt +++ b/nexus/inventory/tests/output/collector_errors.txt @@ -5,18 +5,18 @@ baseboards: part "i86pc" serial "SimGimlet01" cabooses: - board "SimGimletSp" name "SimGimlet" version "0.0.1" git_commit "fefefefe" - board "SimGimletSp" name "SimGimlet" version "0.0.2" git_commit "ffffffff" - board "SimRot" name "SimGimletRot" version "0.0.3" git_commit "edededed" - board "SimRot" name "SimSidecar" version "0.0.3" git_commit "edededed" - board "SimRot" name "SimGimletRot" version "0.0.4" git_commit "eeeeeeee" - board "SimRot" name "SimSidecar" version "0.0.4" git_commit "eeeeeeee" - board "SimRotStage0" name "SimSidecar" version "0.0.200" git_commit "dadadada" - board "SimRotStage0" name "SimGimletRot" version "0.0.200" git_commit "dadadadad" - board "SimRotStage0" name "SimSidecar" version "0.0.200" git_commit "dddddddd" - board "SimRotStage0" name "SimGimletRot" version "0.0.200" git_commit "ddddddddd" - board "SimSidecarSp" name "SimSidecar" version "0.0.1" git_commit "fefefefe" - board "SimSidecarSp" name "SimSidecar" version "0.0.2" git_commit "ffffffff" + board "SimGimletSp" name "SimGimlet" version "0.0.1" git_commit "fefefefe" sign None + board "SimGimletSp" name "SimGimlet" version "0.0.2" git_commit "ffffffff" sign None + board "SimRot" name "SimGimletRot" version "0.0.3" git_commit "edededed" sign Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") + board "SimRot" name "SimSidecar" version "0.0.3" git_commit "edededed" sign Some("1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27") + board "SimRot" name "SimGimletRot" version "0.0.4" git_commit "eeeeeeee" sign Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") + board "SimRot" name "SimSidecar" version "0.0.4" git_commit "eeeeeeee" sign Some("1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27") + board "SimRotStage0" name "SimSidecar" version "0.0.200" git_commit "dadadada" sign Some("1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27") + board "SimRotStage0" name "SimGimletRot" version "0.0.200" git_commit "dadadadad" sign Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") + board "SimRotStage0" name "SimSidecar" version "0.0.200" git_commit "dddddddd" sign Some("1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27") + board "SimRotStage0" name "SimGimletRot" version "0.0.200" git_commit "ddddddddd" sign Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") + board "SimSidecarSp" name "SimSidecar" version "0.0.1" git_commit "fefefefe" sign None + board "SimSidecarSp" name "SimSidecar" version "0.0.2" git_commit "ffffffff" sign None rot pages: data_base64 "Z2ltbGV0LWNmcGEtYWN0aXZlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" diff --git a/nexus/inventory/tests/output/collector_sled_agent_errors.txt b/nexus/inventory/tests/output/collector_sled_agent_errors.txt index 9e9c79aa92..87e6e3c158 100644 --- a/nexus/inventory/tests/output/collector_sled_agent_errors.txt +++ b/nexus/inventory/tests/output/collector_sled_agent_errors.txt @@ -6,18 +6,18 @@ baseboards: part "sim-gimlet" serial "sim-9cb9b78f-5614-440c-b66d-e8e81fab69b0" cabooses: - board "SimGimletSp" name "SimGimlet" version "0.0.1" git_commit "fefefefe" - board "SimGimletSp" name "SimGimlet" version "0.0.2" git_commit "ffffffff" - board "SimRot" name "SimGimletRot" version "0.0.3" git_commit "edededed" - board "SimRot" name "SimSidecar" version "0.0.3" git_commit "edededed" - board "SimRot" name "SimGimletRot" version "0.0.4" git_commit "eeeeeeee" - board "SimRot" name "SimSidecar" version "0.0.4" git_commit "eeeeeeee" - board "SimRotStage0" name "SimSidecar" version "0.0.200" git_commit "dadadada" - board "SimRotStage0" name "SimGimletRot" version "0.0.200" git_commit "dadadadad" - board "SimRotStage0" name "SimSidecar" version "0.0.200" git_commit "dddddddd" - board "SimRotStage0" name "SimGimletRot" version "0.0.200" git_commit "ddddddddd" - board "SimSidecarSp" name "SimSidecar" version "0.0.1" git_commit "fefefefe" - board "SimSidecarSp" name "SimSidecar" version "0.0.2" git_commit "ffffffff" + board "SimGimletSp" name "SimGimlet" version "0.0.1" git_commit "fefefefe" sign None + board "SimGimletSp" name "SimGimlet" version "0.0.2" git_commit "ffffffff" sign None + board "SimRot" name "SimGimletRot" version "0.0.3" git_commit "edededed" sign Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") + board "SimRot" name "SimSidecar" version "0.0.3" git_commit "edededed" sign Some("1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27") + board "SimRot" name "SimGimletRot" version "0.0.4" git_commit "eeeeeeee" sign Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") + board "SimRot" name "SimSidecar" version "0.0.4" git_commit "eeeeeeee" sign Some("1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27") + board "SimRotStage0" name "SimSidecar" version "0.0.200" git_commit "dadadada" sign Some("1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27") + board "SimRotStage0" name "SimGimletRot" version "0.0.200" git_commit "dadadadad" sign Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") + board "SimRotStage0" name "SimSidecar" version "0.0.200" git_commit "dddddddd" sign Some("1432cc4cfe5688c51b55546fe37837c753cfbc89e8c3c6aabcf977fdf0c41e27") + board "SimRotStage0" name "SimGimletRot" version "0.0.200" git_commit "ddddddddd" sign Some("11594bb5548a757e918e6fe056e2ad9e084297c9555417a025d8788eacf55daf") + board "SimSidecarSp" name "SimSidecar" version "0.0.1" git_commit "fefefefe" sign None + board "SimSidecarSp" name "SimSidecar" version "0.0.2" git_commit "ffffffff" sign None rot pages: data_base64 "Z2ltbGV0LWNmcGEtYWN0aXZlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" diff --git a/nexus/types/src/inventory.rs b/nexus/types/src/inventory.rs index 7f0bbdf165..d391bc52cf 100644 --- a/nexus/types/src/inventory.rs +++ b/nexus/types/src/inventory.rs @@ -260,6 +260,10 @@ pub struct Caboose { pub git_commit: String, pub name: String, pub version: String, + // It is very unlikely that the sign hash will not be present. + // As far as we know, it will only be locally built BART signed images. + // We will be handling those edge cases by setting this field as an option. + pub sign: Option, } impl From for Caboose { @@ -269,6 +273,7 @@ impl From for Caboose { git_commit: c.git_commit, name: c.name, version: c.version, + sign: c.sign, } } } diff --git a/schema/crdb/caboose-sign-value/up01.sql b/schema/crdb/caboose-sign-value/up01.sql new file mode 100644 index 0000000000..4c18df41ea --- /dev/null +++ b/schema/crdb/caboose-sign-value/up01.sql @@ -0,0 +1,2 @@ +ALTER TABLE omicron.public.sw_caboose + ADD COLUMN IF NOT EXISTS sign TEXT; -- nullable diff --git a/schema/crdb/dbinit.sql b/schema/crdb/dbinit.sql index a88d99fda9..285f3d2c64 100644 --- a/schema/crdb/dbinit.sql +++ b/schema/crdb/dbinit.sql @@ -3347,7 +3347,8 @@ CREATE TABLE IF NOT EXISTS omicron.public.sw_caboose ( board TEXT NOT NULL, git_commit TEXT NOT NULL, name TEXT NOT NULL, - version TEXT NOT NULL + version TEXT NOT NULL, + sign TEXT -- nullable ); CREATE UNIQUE INDEX IF NOT EXISTS caboose_properties on omicron.public.sw_caboose (board, git_commit, name, version); @@ -5098,7 +5099,7 @@ INSERT INTO omicron.public.db_metadata ( version, target_version ) VALUES - (TRUE, NOW(), NOW(), '138.0.0', NULL) + (TRUE, NOW(), NOW(), '139.0.0', NULL) ON CONFLICT DO NOTHING; COMMIT;