From 49bd77140e41ae667f94615c749c71f17fb9bcbd Mon Sep 17 00:00:00 2001 From: Alan Hanson Date: Fri, 10 Jun 2022 03:43:27 +0000 Subject: [PATCH 1/4] Update crucible version to 8314eed --- Cargo.lock | 193 +++++++++++++++++++++-------- Cargo.toml | 4 +- nexus/Cargo.toml | 2 +- nexus/src/app/sagas/disk_create.rs | 3 + openapi/sled-agent.json | 14 +++ package-manifest.toml | 6 +- sled-agent/Cargo.toml | 4 +- 7 files changed, 168 insertions(+), 58 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 070c9d58022..5eea9bb78ce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -106,6 +106,16 @@ dependencies = [ "syn", ] +[[package]] +name = "api_identity" +version = "0.1.0" +source = "git+https://github.com/oxidecomputer/omicron?branch=main#4716bf4e46d4d0c5c17308d22311ffeea43aa570" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "arc-swap" version = "1.5.0" @@ -813,18 +823,21 @@ dependencies = [ [[package]] name = "crucible" version = "0.0.1" -source = "git+https://github.com/oxidecomputer/crucible?rev=cd74a23ea42ce5e673923a00faf31b0a920191cc#cd74a23ea42ce5e673923a00faf31b0a920191cc" +source = "git+https://github.com/oxidecomputer/crucible?rev=8314eeddd228ec0d76cefa40c4a41d3e2611ac18#8314eeddd228ec0d76cefa40c4a41d3e2611ac18" dependencies = [ "aes-gcm-siv", "anyhow", "base64", "bytes", + "chrono", "crucible-common", "crucible-protocol", - "crucible-scope", "dropshot", "futures", "futures-core", + "omicron-common 0.1.0 (git+https://github.com/oxidecomputer/omicron?branch=main)", + "oximeter 0.1.0 (git+https://github.com/oxidecomputer/omicron?branch=main)", + "oximeter-producer 0.1.0 (git+https://github.com/oxidecomputer/omicron?branch=main)", "rand 0.8.5", "rand_chacha 0.3.1", "reqwest", @@ -846,7 +859,7 @@ dependencies = [ [[package]] name = "crucible-agent-client" version = "0.0.1" -source = "git+https://github.com/oxidecomputer/crucible?rev=cd74a23ea42ce5e673923a00faf31b0a920191cc#cd74a23ea42ce5e673923a00faf31b0a920191cc" +source = "git+https://github.com/oxidecomputer/crucible?rev=8314eeddd228ec0d76cefa40c4a41d3e2611ac18#8314eeddd228ec0d76cefa40c4a41d3e2611ac18" dependencies = [ "anyhow", "chrono", @@ -861,7 +874,7 @@ dependencies = [ [[package]] name = "crucible-common" version = "0.0.0" -source = "git+https://github.com/oxidecomputer/crucible?rev=cd74a23ea42ce5e673923a00faf31b0a920191cc#cd74a23ea42ce5e673923a00faf31b0a920191cc" +source = "git+https://github.com/oxidecomputer/crucible?rev=8314eeddd228ec0d76cefa40c4a41d3e2611ac18#8314eeddd228ec0d76cefa40c4a41d3e2611ac18" dependencies = [ "anyhow", "rusqlite", @@ -879,7 +892,7 @@ dependencies = [ [[package]] name = "crucible-protocol" version = "0.0.0" -source = "git+https://github.com/oxidecomputer/crucible?rev=cd74a23ea42ce5e673923a00faf31b0a920191cc#cd74a23ea42ce5e673923a00faf31b0a920191cc" +source = "git+https://github.com/oxidecomputer/crucible?rev=8314eeddd228ec0d76cefa40c4a41d3e2611ac18#8314eeddd228ec0d76cefa40c4a41d3e2611ac18" dependencies = [ "anyhow", "bincode", @@ -890,21 +903,6 @@ dependencies = [ "uuid 1.1.0", ] -[[package]] -name = "crucible-scope" -version = "0.0.0" -source = "git+https://github.com/oxidecomputer/crucible?rev=cd74a23ea42ce5e673923a00faf31b0a920191cc#cd74a23ea42ce5e673923a00faf31b0a920191cc" -dependencies = [ - "anyhow", - "futures", - "futures-core", - "serde", - "serde_json", - "tokio", - "tokio-util 0.7.2", - "toml", -] - [[package]] name = "crunchy" version = "0.2.2" @@ -1782,7 +1780,7 @@ dependencies = [ "futures", "gateway-client", "libc", - "omicron-common", + "omicron-common 0.1.0", "slog", "slog-async", "slog-term", @@ -1796,7 +1794,7 @@ version = "0.1.0" dependencies = [ "chrono", "futures", - "omicron-common", + "omicron-common 0.1.0", "progenitor", "reqwest", "serde", @@ -1824,7 +1822,7 @@ dependencies = [ "gateway-messages", "http", "hyper", - "omicron-common", + "omicron-common 0.1.0", "omicron-test-utils", "once_cell", "ringbuffer", @@ -2748,7 +2746,22 @@ name = "nexus-client" version = "0.1.0" dependencies = [ "chrono", - "omicron-common", + "omicron-common 0.1.0", + "progenitor", + "reqwest", + "serde", + "serde_json", + "slog", + "uuid 1.1.0", +] + +[[package]] +name = "nexus-client" +version = "0.1.0" +source = "git+https://github.com/oxidecomputer/omicron?branch=main#4716bf4e46d4d0c5c17308d22311ffeea43aa570" +dependencies = [ + "chrono", + "omicron-common 0.1.0 (git+https://github.com/oxidecomputer/omicron?branch=main)", "progenitor", "reqwest", "serde", @@ -2768,14 +2781,14 @@ dependencies = [ "headers", "http", "hyper", - "omicron-common", + "omicron-common 0.1.0", "omicron-nexus", "omicron-sled-agent", "omicron-test-utils", - "oximeter", + "oximeter 0.1.0", "oximeter-client", "oximeter-collector", - "oximeter-producer", + "oximeter-producer 0.1.0", "parse-display", "serde", "serde_json", @@ -2922,7 +2935,7 @@ name = "omicron-common" version = "0.1.0" dependencies = [ "anyhow", - "api_identity", + "api_identity 0.1.0", "backoff", "chrono", "dropshot", @@ -2953,6 +2966,41 @@ dependencies = [ "uuid 1.1.0", ] +[[package]] +name = "omicron-common" +version = "0.1.0" +source = "git+https://github.com/oxidecomputer/omicron?branch=main#4716bf4e46d4d0c5c17308d22311ffeea43aa570" +dependencies = [ + "anyhow", + "api_identity 0.1.0 (git+https://github.com/oxidecomputer/omicron?branch=main)", + "backoff", + "chrono", + "dropshot", + "futures", + "http", + "hyper", + "ipnetwork", + "macaddr", + "parse-display", + "progenitor", + "rand 0.8.5", + "reqwest", + "ring", + "schemars", + "serde", + "serde_derive", + "serde_json", + "serde_with", + "slog", + "smf", + "steno", + "structopt", + "thiserror", + "tokio", + "tokio-postgres", + "uuid 1.1.0", +] + [[package]] name = "omicron-deploy" version = "0.1.0" @@ -2982,7 +3030,7 @@ dependencies = [ "hex", "http", "hyper", - "omicron-common", + "omicron-common 0.1.0", "omicron-test-utils", "openapi-lint", "openapiv3", @@ -3007,7 +3055,7 @@ name = "omicron-nexus" version = "0.1.0" dependencies = [ "anyhow", - "api_identity", + "api_identity 0.1.0", "async-bb8-diesel", "async-trait", "authz-macros", @@ -3038,7 +3086,7 @@ dependencies = [ "nexus-test-utils", "nexus-test-utils-macros", "num-integer", - "omicron-common", + "omicron-common 0.1.0", "omicron-rpaths", "omicron-test-utils", "openapi-lint", @@ -3047,11 +3095,11 @@ dependencies = [ "openssl-probe", "openssl-sys", "oso", - "oximeter", + "oximeter 0.1.0", "oximeter-client", "oximeter-db", "oximeter-instruments", - "oximeter-producer", + "oximeter-producer 0.1.0", "parse-display", "pq-sys", "rand 0.8.5", @@ -3091,7 +3139,7 @@ dependencies = [ "futures", "hex", "indicatif", - "omicron-common", + "omicron-common 0.1.0", "omicron-sled-agent", "omicron-zone-package", "rayon", @@ -3132,8 +3180,8 @@ dependencies = [ "libc", "macaddr", "mockall", - "nexus-client", - "omicron-common", + "nexus-client 0.1.0", + "omicron-common 0.1.0", "omicron-test-utils", "openapi-lint", "openapiv3", @@ -3181,7 +3229,7 @@ dependencies = [ "expectorate", "futures", "libc", - "omicron-common", + "omicron-common 0.1.0", "postgres-protocol", "signal-hook", "signal-hook-tokio", @@ -3361,7 +3409,7 @@ dependencies = [ "bytes", "chrono", "num-traits", - "oximeter-macro-impl", + "oximeter-macro-impl 0.1.0", "schemars", "serde", "thiserror", @@ -3369,12 +3417,27 @@ dependencies = [ "uuid 1.1.0", ] +[[package]] +name = "oximeter" +version = "0.1.0" +source = "git+https://github.com/oxidecomputer/omicron?branch=main#4716bf4e46d4d0c5c17308d22311ffeea43aa570" +dependencies = [ + "bytes", + "chrono", + "num-traits", + "oximeter-macro-impl 0.1.0 (git+https://github.com/oxidecomputer/omicron?branch=main)", + "schemars", + "serde", + "thiserror", + "uuid 1.1.0", +] + [[package]] name = "oximeter-client" version = "0.1.0" dependencies = [ "chrono", - "omicron-common", + "omicron-common 0.1.0", "progenitor", "reqwest", "serde", @@ -3388,12 +3451,12 @@ version = "0.1.0" dependencies = [ "dropshot", "expectorate", - "nexus-client", - "omicron-common", + "nexus-client 0.1.0", + "omicron-common 0.1.0", "omicron-test-utils", "openapi-lint", "openapiv3", - "oximeter", + "oximeter 0.1.0", "oximeter-db", "reqwest", "serde", @@ -3419,7 +3482,7 @@ dependencies = [ "dropshot", "itertools", "omicron-test-utils", - "oximeter", + "oximeter 0.1.0", "regex", "reqwest", "schemars", @@ -3443,7 +3506,7 @@ dependencies = [ "dropshot", "futures", "http", - "oximeter", + "oximeter 0.1.0", "uuid 1.1.0", ] @@ -3457,15 +3520,46 @@ dependencies = [ "syn", ] +[[package]] +name = "oximeter-macro-impl" +version = "0.1.0" +source = "git+https://github.com/oxidecomputer/omicron?branch=main#4716bf4e46d4d0c5c17308d22311ffeea43aa570" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "oximeter-producer" +version = "0.1.0" +dependencies = [ + "chrono", + "dropshot", + "nexus-client 0.1.0", + "omicron-common 0.1.0", + "oximeter 0.1.0", + "reqwest", + "schemars", + "serde", + "slog", + "slog-dtrace", + "thiserror", + "tokio", + "uuid 1.1.0", +] + [[package]] name = "oximeter-producer" version = "0.1.0" +source = "git+https://github.com/oxidecomputer/omicron?branch=main#4716bf4e46d4d0c5c17308d22311ffeea43aa570" dependencies = [ "chrono", "dropshot", - "nexus-client", - "omicron-common", - "oximeter", + "nexus-client 0.1.0 (git+https://github.com/oxidecomputer/omicron?branch=main)", + "omicron-common 0.1.0 (git+https://github.com/oxidecomputer/omicron?branch=main)", + "oximeter 0.1.0 (git+https://github.com/oxidecomputer/omicron?branch=main)", "reqwest", "schemars", "serde", @@ -4040,7 +4134,6 @@ dependencies = [ [[package]] name = "propolis-client" version = "0.1.0" -source = "git+https://github.com/oxidecomputer/propolis?rev=1538f78c1656bd3ac8ef816f6177ae9b1bef348a#1538f78c1656bd3ac8ef816f6177ae9b1bef348a" dependencies = [ "crucible", "reqwest", @@ -5014,7 +5107,7 @@ version = "0.1.0" dependencies = [ "async-trait", "chrono", - "omicron-common", + "omicron-common 0.1.0", "progenitor", "reqwest", "serde", @@ -5217,7 +5310,7 @@ dependencies = [ "futures", "gateway-messages", "hex", - "omicron-common", + "omicron-common 0.1.0", "serde", "slog", "slog-dtrace", diff --git a/Cargo.toml b/Cargo.toml index fc2e036dd5e..18301be2975 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -74,8 +74,8 @@ panic = "abort" #dropshot = { path = "../dropshot/dropshot" } #[patch."https://github.com/oxidecomputer/steno"] #steno = { path = "../steno" } -#[patch."https://github.com/oxidecomputer/propolis"] -#propolis-client = { path = "../propolis/client" } +[patch."https://github.com/oxidecomputer/propolis"] +propolis-client = { path = "../propolis/client" } #propolis-server = { path = "../propolis/server" } #[patch."https://github.com/oxidecomputer/crucible"] #crucible = { path = "../crucible/upstairs" } diff --git a/nexus/Cargo.toml b/nexus/Cargo.toml index 85cbbaa72b9..17ae4d1e5e4 100644 --- a/nexus/Cargo.toml +++ b/nexus/Cargo.toml @@ -15,7 +15,7 @@ authz-macros = { path = "src/authz/authz-macros" } base64 = "0.13.0" bb8 = "0.8.0" cookie = "0.16" -crucible-agent-client = { git = "https://github.com/oxidecomputer/crucible", rev = "cd74a23ea42ce5e673923a00faf31b0a920191cc" } +crucible-agent-client = { git = "https://github.com/oxidecomputer/crucible", rev = "8314eeddd228ec0d76cefa40c4a41d3e2611ac18" } diesel = { version = "2.0.0-rc.0", features = ["postgres", "r2d2", "chrono", "serde_json", "network-address", "uuid"] } diesel-dtrace = { git = "https://github.com/oxidecomputer/diesel-dtrace" } fatfs = "0.3.5" diff --git a/nexus/src/app/sagas/disk_create.rs b/nexus/src/app/sagas/disk_create.rs index 269c2004c5d..b04ed57e542 100644 --- a/nexus/src/app/sagas/disk_create.rs +++ b/nexus/src/app/sagas/disk_create.rs @@ -434,6 +434,7 @@ async fn sdc_regions_ensure( .collect(), lossy: false, + flush_timeout: None, // all downstairs will expect encrypted blocks key: Some(base64::encode({ @@ -454,6 +455,8 @@ async fn sdc_regions_ensure( // TODO open a control socket for the whole volume, not // in the sub volumes control: None, + metric_register: None, + metric_collect: None, }, }, ], diff --git a/openapi/sled-agent.json b/openapi/sled-agent.json index 273082a7500..ed25a095048 100644 --- a/openapi/sled-agent.json +++ b/openapi/sled-agent.json @@ -210,6 +210,12 @@ "nullable": true, "type": "string" }, + "flush_timeout": { + "nullable": true, + "type": "integer", + "format": "uint32", + "minimum": 0 + }, "key": { "nullable": true, "type": "string" @@ -221,6 +227,14 @@ "lossy": { "type": "boolean" }, + "metric_collect": { + "nullable": true, + "type": "string" + }, + "metric_register": { + "nullable": true, + "type": "string" + }, "root_cert_pem": { "nullable": true, "type": "string" diff --git a/package-manifest.toml b/package-manifest.toml index 8dc69d330a2..de1d0acc96e 100644 --- a/package-manifest.toml +++ b/package-manifest.toml @@ -84,10 +84,10 @@ zone = true # 3. Use type = "manual" instead of the "prebuilt" type = "prebuilt" repo = "crucible" -commit = "cd74a23ea42ce5e673923a00faf31b0a920191cc" +commit = "8314eeddd228ec0d76cefa40c4a41d3e2611ac18" # The SHA256 digest is automatically posted to: # https://buildomat.eng.oxide.computer/public/file/oxidecomputer/crucible/image//crucible.sha256.txt -sha256 = "7e80e513b231a51f322e5c0012536f000bbb0b89c0168654277957ba77eb07a8" +sha256 = "73ee7befea2d7709fe3baa358abc11faf6922d315a33b26e752363c5abcff91c" # Refer to # https://github.com/oxidecomputer/propolis/blob/master/package/README.md @@ -96,7 +96,7 @@ sha256 = "7e80e513b231a51f322e5c0012536f000bbb0b89c0168654277957ba77eb07a8" service_name = "propolis-server" zone = true [external_package.propolis-server.source] -type = "prebuilt" +type = "manual" repo = "propolis" commit = "1538f78c1656bd3ac8ef816f6177ae9b1bef348a" # The SHA256 digest is automatically posted to: diff --git a/sled-agent/Cargo.toml b/sled-agent/Cargo.toml index 18c9514ba94..9b2b48d848b 100644 --- a/sled-agent/Cargo.toml +++ b/sled-agent/Cargo.toml @@ -13,7 +13,7 @@ bytes = "1.1" cfg-if = "1.0" chrono = { version = "0.4", features = [ "serde" ] } # Only used by the simulated sled agent. -crucible-agent-client = { git = "https://github.com/oxidecomputer/crucible", rev = "cd74a23ea42ce5e673923a00faf31b0a920191cc" } +crucible-agent-client = { git = "https://github.com/oxidecomputer/crucible", rev = "8314eeddd228ec0d76cefa40c4a41d3e2611ac18" } dropshot = { git = "https://github.com/oxidecomputer/dropshot", branch = "main", features = [ "usdt-probes" ] } futures = "0.3.21" ipnetwork = "0.18" @@ -24,7 +24,7 @@ omicron-common = { path = "../common" } p256 = "0.9.0" percent-encoding = "2.1.0" progenitor = { git = "https://github.com/oxidecomputer/progenitor" } -propolis-client = { git = "https://github.com/oxidecomputer/propolis", rev = "1538f78c1656bd3ac8ef816f6177ae9b1bef348a" } +propolis-client = { git = "https://github.com/oxidecomputer/propolis", branch = "newcru" } rand = { version = "0.8.5", features = ["getrandom"] } reqwest = { version = "0.11.8", default-features = false, features = ["rustls-tls", "stream"] } schemars = { version = "0.8.10", features = [ "chrono", "uuid1" ] } From 4229b1b27418d762b7b878f6d56448c8c1f19667 Mon Sep 17 00:00:00 2001 From: Alan Hanson Date: Fri, 10 Jun 2022 04:04:43 +0000 Subject: [PATCH 2/4] Undo manual propolis selection --- Cargo.lock | 1 + Cargo.toml | 4 ++-- package-manifest.toml | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5eea9bb78ce..fd1a78e8886 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4134,6 +4134,7 @@ dependencies = [ [[package]] name = "propolis-client" version = "0.1.0" +source = "git+https://github.com/oxidecomputer/propolis?branch=newcru#5e38db48c8f5a0bef1a589032e9a001de5d5e698" dependencies = [ "crucible", "reqwest", diff --git a/Cargo.toml b/Cargo.toml index 18301be2975..fc2e036dd5e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -74,8 +74,8 @@ panic = "abort" #dropshot = { path = "../dropshot/dropshot" } #[patch."https://github.com/oxidecomputer/steno"] #steno = { path = "../steno" } -[patch."https://github.com/oxidecomputer/propolis"] -propolis-client = { path = "../propolis/client" } +#[patch."https://github.com/oxidecomputer/propolis"] +#propolis-client = { path = "../propolis/client" } #propolis-server = { path = "../propolis/server" } #[patch."https://github.com/oxidecomputer/crucible"] #crucible = { path = "../crucible/upstairs" } diff --git a/package-manifest.toml b/package-manifest.toml index de1d0acc96e..9ba44170907 100644 --- a/package-manifest.toml +++ b/package-manifest.toml @@ -96,7 +96,7 @@ sha256 = "73ee7befea2d7709fe3baa358abc11faf6922d315a33b26e752363c5abcff91c" service_name = "propolis-server" zone = true [external_package.propolis-server.source] -type = "manual" +type = "prebuild" repo = "propolis" commit = "1538f78c1656bd3ac8ef816f6177ae9b1bef348a" # The SHA256 digest is automatically posted to: From 2ce5603735ad690dc7857dd2e2c08a44a153c14f Mon Sep 17 00:00:00 2001 From: Alan Hanson Date: Fri, 10 Jun 2022 04:58:07 +0000 Subject: [PATCH 3/4] prebuilt not prebuild --- package-manifest.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-manifest.toml b/package-manifest.toml index 9ba44170907..3214f46730a 100644 --- a/package-manifest.toml +++ b/package-manifest.toml @@ -96,7 +96,7 @@ sha256 = "73ee7befea2d7709fe3baa358abc11faf6922d315a33b26e752363c5abcff91c" service_name = "propolis-server" zone = true [external_package.propolis-server.source] -type = "prebuild" +type = "prebuilt" repo = "propolis" commit = "1538f78c1656bd3ac8ef816f6177ae9b1bef348a" # The SHA256 digest is automatically posted to: From c93fa715ec3662dcbaf806fa5c6331cf48aedf86 Mon Sep 17 00:00:00 2001 From: Alan Hanson Date: Sun, 12 Jun 2022 15:19:02 +0000 Subject: [PATCH 4/4] Update to new propolis rev/pkg --- Cargo.lock | 2 +- package-manifest.toml | 4 ++-- sled-agent/Cargo.toml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fd1a78e8886..963c9c1ff7d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4134,7 +4134,7 @@ dependencies = [ [[package]] name = "propolis-client" version = "0.1.0" -source = "git+https://github.com/oxidecomputer/propolis?branch=newcru#5e38db48c8f5a0bef1a589032e9a001de5d5e698" +source = "git+https://github.com/oxidecomputer/propolis?rev=d2b8184d11d5d5f56424fe0bee13ca03d576604e#d2b8184d11d5d5f56424fe0bee13ca03d576604e" dependencies = [ "crucible", "reqwest", diff --git a/package-manifest.toml b/package-manifest.toml index 3214f46730a..01fdd264af5 100644 --- a/package-manifest.toml +++ b/package-manifest.toml @@ -98,7 +98,7 @@ zone = true [external_package.propolis-server.source] type = "prebuilt" repo = "propolis" -commit = "1538f78c1656bd3ac8ef816f6177ae9b1bef348a" +commit = "d2b8184d11d5d5f56424fe0bee13ca03d576604e" # The SHA256 digest is automatically posted to: # https://buildomat.eng.oxide.computer/public/file/oxidecomputer/propolis/image//propolis-server.sha256.txt -sha256 = "1e21d95a1254f6796a2a7fee3a49f14988beb5646505fc7c9d669ef49f6a50f3" +sha256 = "b192fbaaee850e63adaf9f7fe5ff2054a9de338d70198b1d1670285057a047be" diff --git a/sled-agent/Cargo.toml b/sled-agent/Cargo.toml index 9b2b48d848b..7e85b770b4e 100644 --- a/sled-agent/Cargo.toml +++ b/sled-agent/Cargo.toml @@ -24,7 +24,7 @@ omicron-common = { path = "../common" } p256 = "0.9.0" percent-encoding = "2.1.0" progenitor = { git = "https://github.com/oxidecomputer/progenitor" } -propolis-client = { git = "https://github.com/oxidecomputer/propolis", branch = "newcru" } +propolis-client = { git = "https://github.com/oxidecomputer/propolis", rev = "d2b8184d11d5d5f56424fe0bee13ca03d576604e" } rand = { version = "0.8.5", features = ["getrandom"] } reqwest = { version = "0.11.8", default-features = false, features = ["rustls-tls", "stream"] } schemars = { version = "0.8.10", features = [ "chrono", "uuid1" ] }