diff --git a/Cargo.lock b/Cargo.lock
index 1f2ee1511b..3265ed19de 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -67,17 +67,6 @@ dependencies = [
"zeroize",
]
-[[package]]
-name = "ahash"
-version = "0.7.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
-dependencies = [
- "getrandom 0.2.10",
- "once_cell",
- "version_check",
-]
-
[[package]]
name = "ahash"
version = "0.8.3"
@@ -506,7 +495,7 @@ dependencies = [
[[package]]
name = "bhyve_api"
version = "0.0.0"
-source = "git+https://github.com/oxidecomputer/propolis?rev=901b710b6e5bd05a94a323693c2b971e7e7b240e#901b710b6e5bd05a94a323693c2b971e7e7b240e"
+source = "git+https://github.com/oxidecomputer/propolis?rev=334df299a56cd0d33e1227ed4ce4d2fe7478d541#334df299a56cd0d33e1227ed4ce4d2fe7478d541"
dependencies = [
"bhyve_api_sys",
"libc",
@@ -516,7 +505,7 @@ dependencies = [
[[package]]
name = "bhyve_api_sys"
version = "0.0.0"
-source = "git+https://github.com/oxidecomputer/propolis?rev=901b710b6e5bd05a94a323693c2b971e7e7b240e#901b710b6e5bd05a94a323693c2b971e7e7b240e"
+source = "git+https://github.com/oxidecomputer/propolis?rev=334df299a56cd0d33e1227ed4ce4d2fe7478d541#334df299a56cd0d33e1227ed4ce4d2fe7478d541"
dependencies = [
"libc",
"strum",
@@ -1246,7 +1235,7 @@ dependencies = [
[[package]]
name = "cpuid_profile_config"
version = "0.0.0"
-source = "git+https://github.com/oxidecomputer/propolis?rev=901b710b6e5bd05a94a323693c2b971e7e7b240e#901b710b6e5bd05a94a323693c2b971e7e7b240e"
+source = "git+https://github.com/oxidecomputer/propolis?rev=334df299a56cd0d33e1227ed4ce4d2fe7478d541#334df299a56cd0d33e1227ed4ce4d2fe7478d541"
dependencies = [
"propolis",
"serde",
@@ -1454,7 +1443,7 @@ dependencies = [
[[package]]
name = "crucible"
version = "0.0.1"
-source = "git+https://github.com/oxidecomputer/crucible?rev=20273bcca1fd5834ebc3e67dfa7020f0e99ad681#20273bcca1fd5834ebc3e67dfa7020f0e99ad681"
+source = "git+https://github.com/oxidecomputer/crucible?rev=657d985247b41e38aac2e271c7ce8bc9ea81f4b6#657d985247b41e38aac2e271c7ce8bc9ea81f4b6"
dependencies = [
"aes-gcm-siv",
"anyhow",
@@ -1466,6 +1455,7 @@ dependencies = [
"crucible-client-types",
"crucible-common",
"crucible-protocol",
+ "crucible-workspace-hack",
"dropshot",
"futures",
"futures-core",
@@ -1493,45 +1483,45 @@ dependencies = [
"usdt",
"uuid",
"version_check",
- "workspace-hack",
]
[[package]]
name = "crucible-agent-client"
version = "0.0.1"
-source = "git+https://github.com/oxidecomputer/crucible?rev=20273bcca1fd5834ebc3e67dfa7020f0e99ad681#20273bcca1fd5834ebc3e67dfa7020f0e99ad681"
+source = "git+https://github.com/oxidecomputer/crucible?rev=657d985247b41e38aac2e271c7ce8bc9ea81f4b6#657d985247b41e38aac2e271c7ce8bc9ea81f4b6"
dependencies = [
"anyhow",
"chrono",
+ "crucible-workspace-hack",
"percent-encoding",
"progenitor",
"reqwest",
"schemars",
"serde",
"serde_json",
- "workspace-hack",
]
[[package]]
name = "crucible-client-types"
version = "0.1.0"
-source = "git+https://github.com/oxidecomputer/crucible?rev=20273bcca1fd5834ebc3e67dfa7020f0e99ad681#20273bcca1fd5834ebc3e67dfa7020f0e99ad681"
+source = "git+https://github.com/oxidecomputer/crucible?rev=657d985247b41e38aac2e271c7ce8bc9ea81f4b6#657d985247b41e38aac2e271c7ce8bc9ea81f4b6"
dependencies = [
"base64 0.21.4",
+ "crucible-workspace-hack",
"schemars",
"serde",
"serde_json",
"uuid",
- "workspace-hack",
]
[[package]]
name = "crucible-common"
version = "0.0.1"
-source = "git+https://github.com/oxidecomputer/crucible?rev=20273bcca1fd5834ebc3e67dfa7020f0e99ad681#20273bcca1fd5834ebc3e67dfa7020f0e99ad681"
+source = "git+https://github.com/oxidecomputer/crucible?rev=657d985247b41e38aac2e271c7ce8bc9ea81f4b6#657d985247b41e38aac2e271c7ce8bc9ea81f4b6"
dependencies = [
"anyhow",
"atty",
+ "crucible-workspace-hack",
"nix 0.26.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rusqlite",
"rustls-pemfile",
@@ -1550,16 +1540,16 @@ dependencies = [
"twox-hash",
"uuid",
"vergen",
- "workspace-hack",
]
[[package]]
name = "crucible-pantry-client"
version = "0.0.1"
-source = "git+https://github.com/oxidecomputer/crucible?rev=20273bcca1fd5834ebc3e67dfa7020f0e99ad681#20273bcca1fd5834ebc3e67dfa7020f0e99ad681"
+source = "git+https://github.com/oxidecomputer/crucible?rev=657d985247b41e38aac2e271c7ce8bc9ea81f4b6#657d985247b41e38aac2e271c7ce8bc9ea81f4b6"
dependencies = [
"anyhow",
"chrono",
+ "crucible-workspace-hack",
"percent-encoding",
"progenitor",
"reqwest",
@@ -1567,38 +1557,43 @@ dependencies = [
"serde",
"serde_json",
"uuid",
- "workspace-hack",
]
[[package]]
name = "crucible-protocol"
version = "0.0.0"
-source = "git+https://github.com/oxidecomputer/crucible?rev=20273bcca1fd5834ebc3e67dfa7020f0e99ad681#20273bcca1fd5834ebc3e67dfa7020f0e99ad681"
+source = "git+https://github.com/oxidecomputer/crucible?rev=657d985247b41e38aac2e271c7ce8bc9ea81f4b6#657d985247b41e38aac2e271c7ce8bc9ea81f4b6"
dependencies = [
"anyhow",
"bincode",
"bytes",
"crucible-common",
+ "crucible-workspace-hack",
"num_enum 0.7.0",
"schemars",
"serde",
"tokio-util",
"uuid",
- "workspace-hack",
]
[[package]]
name = "crucible-smf"
version = "0.0.0"
-source = "git+https://github.com/oxidecomputer/crucible?rev=20273bcca1fd5834ebc3e67dfa7020f0e99ad681#20273bcca1fd5834ebc3e67dfa7020f0e99ad681"
+source = "git+https://github.com/oxidecomputer/crucible?rev=657d985247b41e38aac2e271c7ce8bc9ea81f4b6#657d985247b41e38aac2e271c7ce8bc9ea81f4b6"
dependencies = [
+ "crucible-workspace-hack",
"libc",
"num-derive",
"num-traits",
"thiserror",
- "workspace-hack",
]
+[[package]]
+name = "crucible-workspace-hack"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbd293370c6cb9c334123675263de33fc9e53bbdfc8bdd5e329237cf0205fdc7"
+
[[package]]
name = "crunchy"
version = "0.2.2"
@@ -2034,7 +2029,7 @@ checksum = "7e1a8646b2c125eeb9a84ef0faa6d2d102ea0d5da60b824ade2743263117b848"
[[package]]
name = "dladm"
version = "0.0.0"
-source = "git+https://github.com/oxidecomputer/propolis?rev=901b710b6e5bd05a94a323693c2b971e7e7b240e#901b710b6e5bd05a94a323693c2b971e7e7b240e"
+source = "git+https://github.com/oxidecomputer/propolis?rev=334df299a56cd0d33e1227ed4ce4d2fe7478d541#334df299a56cd0d33e1227ed4ce4d2fe7478d541"
dependencies = [
"libc",
"strum",
@@ -2994,9 +2989,6 @@ name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
-dependencies = [
- "ahash 0.7.6",
-]
[[package]]
name = "hashbrown"
@@ -3004,7 +2996,7 @@ version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
dependencies = [
- "ahash 0.8.3",
+ "ahash",
]
[[package]]
@@ -3013,7 +3005,7 @@ version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
dependencies = [
- "ahash 0.8.3",
+ "ahash",
"allocator-api2",
]
@@ -5421,7 +5413,6 @@ dependencies = [
"futures",
"futures-channel",
"futures-core",
- "futures-executor",
"futures-io",
"futures-sink",
"futures-task",
@@ -5429,13 +5420,11 @@ dependencies = [
"gateway-messages",
"generic-array",
"getrandom 0.2.10",
- "hashbrown 0.12.3",
"hashbrown 0.13.2",
"hashbrown 0.14.0",
"hex",
"hyper",
"hyper-rustls",
- "indexmap 1.9.3",
"indexmap 2.0.0",
"inout",
"ipnetwork",
@@ -5453,9 +5442,7 @@ dependencies = [
"num-traits",
"once_cell",
"openapiv3",
- "parking_lot 0.12.1",
"petgraph",
- "phf_shared 0.11.2",
"postgres-types",
"ppv-lite86",
"predicates 3.0.4",
@@ -5489,7 +5476,6 @@ dependencies = [
"toml_datetime",
"toml_edit 0.19.15",
"tracing",
- "tracing-core",
"trust-dns-proto",
"unicode-bidi",
"unicode-normalization",
@@ -6628,7 +6614,7 @@ dependencies = [
[[package]]
name = "propolis"
version = "0.1.0"
-source = "git+https://github.com/oxidecomputer/propolis?rev=901b710b6e5bd05a94a323693c2b971e7e7b240e#901b710b6e5bd05a94a323693c2b971e7e7b240e"
+source = "git+https://github.com/oxidecomputer/propolis?rev=334df299a56cd0d33e1227ed4ce4d2fe7478d541#334df299a56cd0d33e1227ed4ce4d2fe7478d541"
dependencies = [
"anyhow",
"bhyve_api",
@@ -6661,7 +6647,7 @@ dependencies = [
[[package]]
name = "propolis-client"
version = "0.1.0"
-source = "git+https://github.com/oxidecomputer/propolis?rev=901b710b6e5bd05a94a323693c2b971e7e7b240e#901b710b6e5bd05a94a323693c2b971e7e7b240e"
+source = "git+https://github.com/oxidecomputer/propolis?rev=334df299a56cd0d33e1227ed4ce4d2fe7478d541#334df299a56cd0d33e1227ed4ce4d2fe7478d541"
dependencies = [
"async-trait",
"base64 0.21.4",
@@ -6685,7 +6671,7 @@ dependencies = [
[[package]]
name = "propolis-server"
version = "0.1.0"
-source = "git+https://github.com/oxidecomputer/propolis?rev=901b710b6e5bd05a94a323693c2b971e7e7b240e#901b710b6e5bd05a94a323693c2b971e7e7b240e"
+source = "git+https://github.com/oxidecomputer/propolis?rev=334df299a56cd0d33e1227ed4ce4d2fe7478d541#334df299a56cd0d33e1227ed4ce4d2fe7478d541"
dependencies = [
"anyhow",
"async-trait",
@@ -6737,7 +6723,7 @@ dependencies = [
[[package]]
name = "propolis-server-config"
version = "0.0.0"
-source = "git+https://github.com/oxidecomputer/propolis?rev=901b710b6e5bd05a94a323693c2b971e7e7b240e#901b710b6e5bd05a94a323693c2b971e7e7b240e"
+source = "git+https://github.com/oxidecomputer/propolis?rev=334df299a56cd0d33e1227ed4ce4d2fe7478d541#334df299a56cd0d33e1227ed4ce4d2fe7478d541"
dependencies = [
"cpuid_profile_config",
"serde",
@@ -6749,7 +6735,7 @@ dependencies = [
[[package]]
name = "propolis_types"
version = "0.0.0"
-source = "git+https://github.com/oxidecomputer/propolis?rev=901b710b6e5bd05a94a323693c2b971e7e7b240e#901b710b6e5bd05a94a323693c2b971e7e7b240e"
+source = "git+https://github.com/oxidecomputer/propolis?rev=334df299a56cd0d33e1227ed4ce4d2fe7478d541#334df299a56cd0d33e1227ed4ce4d2fe7478d541"
dependencies = [
"schemars",
"serde",
@@ -9267,7 +9253,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"
dependencies = [
"once_cell",
- "valuable",
]
[[package]]
@@ -9756,12 +9741,6 @@ dependencies = [
"serde",
]
-[[package]]
-name = "valuable"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
-
[[package]]
name = "vcpkg"
version = "0.2.15"
@@ -9796,7 +9775,7 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "viona_api"
version = "0.0.0"
-source = "git+https://github.com/oxidecomputer/propolis?rev=901b710b6e5bd05a94a323693c2b971e7e7b240e#901b710b6e5bd05a94a323693c2b971e7e7b240e"
+source = "git+https://github.com/oxidecomputer/propolis?rev=334df299a56cd0d33e1227ed4ce4d2fe7478d541#334df299a56cd0d33e1227ed4ce4d2fe7478d541"
dependencies = [
"libc",
"viona_api_sys",
@@ -9805,7 +9784,7 @@ dependencies = [
[[package]]
name = "viona_api_sys"
version = "0.0.0"
-source = "git+https://github.com/oxidecomputer/propolis?rev=901b710b6e5bd05a94a323693c2b971e7e7b240e#901b710b6e5bd05a94a323693c2b971e7e7b240e"
+source = "git+https://github.com/oxidecomputer/propolis?rev=334df299a56cd0d33e1227ed4ce4d2fe7478d541#334df299a56cd0d33e1227ed4ce4d2fe7478d541"
dependencies = [
"libc",
]
@@ -10384,61 +10363,6 @@ dependencies = [
"windows-sys 0.48.0",
]
-[[package]]
-name = "workspace-hack"
-version = "0.1.0"
-source = "git+https://github.com/oxidecomputer/crucible?rev=20273bcca1fd5834ebc3e67dfa7020f0e99ad681#20273bcca1fd5834ebc3e67dfa7020f0e99ad681"
-dependencies = [
- "bitflags 2.4.0",
- "bytes",
- "cc",
- "chrono",
- "console",
- "crossbeam-utils",
- "crypto-common",
- "digest",
- "either",
- "futures-channel",
- "futures-core",
- "futures-executor",
- "futures-sink",
- "futures-util",
- "getrandom 0.2.10",
- "hashbrown 0.12.3",
- "hex",
- "hyper",
- "indexmap 1.9.3",
- "libc",
- "log",
- "mio",
- "num-traits",
- "once_cell",
- "openapiv3",
- "parking_lot 0.12.1",
- "phf_shared 0.11.2",
- "rand 0.8.5",
- "rand_chacha 0.3.1",
- "rand_core 0.6.4",
- "reqwest",
- "rustls",
- "schemars",
- "semver 1.0.18",
- "serde",
- "slog",
- "syn 1.0.109",
- "syn 2.0.32",
- "time",
- "time-macros",
- "tokio",
- "tokio-util",
- "toml_datetime",
- "toml_edit 0.19.15",
- "tracing",
- "tracing-core",
- "usdt",
- "uuid",
-]
-
[[package]]
name = "wyz"
version = "0.5.1"
diff --git a/Cargo.toml b/Cargo.toml
index 6a671e6b49..72a7f6157e 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -163,10 +163,10 @@ cookie = "0.16"
criterion = { version = "0.5.1", features = [ "async_tokio" ] }
crossbeam = "0.8"
crossterm = { version = "0.27.0", features = ["event-stream"] }
-crucible-agent-client = { git = "https://github.com/oxidecomputer/crucible", rev = "20273bcca1fd5834ebc3e67dfa7020f0e99ad681" }
-crucible-client-types = { git = "https://github.com/oxidecomputer/crucible", rev = "20273bcca1fd5834ebc3e67dfa7020f0e99ad681" }
-crucible-pantry-client = { git = "https://github.com/oxidecomputer/crucible", rev = "20273bcca1fd5834ebc3e67dfa7020f0e99ad681" }
-crucible-smf = { git = "https://github.com/oxidecomputer/crucible", rev = "20273bcca1fd5834ebc3e67dfa7020f0e99ad681" }
+crucible-agent-client = { git = "https://github.com/oxidecomputer/crucible", rev = "657d985247b41e38aac2e271c7ce8bc9ea81f4b6" }
+crucible-client-types = { git = "https://github.com/oxidecomputer/crucible", rev = "657d985247b41e38aac2e271c7ce8bc9ea81f4b6" }
+crucible-pantry-client = { git = "https://github.com/oxidecomputer/crucible", rev = "657d985247b41e38aac2e271c7ce8bc9ea81f4b6" }
+crucible-smf = { git = "https://github.com/oxidecomputer/crucible", rev = "657d985247b41e38aac2e271c7ce8bc9ea81f4b6" }
curve25519-dalek = "4"
datatest-stable = "0.1.3"
display-error-chain = "0.1.1"
@@ -281,9 +281,9 @@ pretty-hex = "0.3.0"
proc-macro2 = "1.0"
progenitor = { git = "https://github.com/oxidecomputer/progenitor", branch = "main" }
progenitor-client = { git = "https://github.com/oxidecomputer/progenitor", branch = "main" }
-bhyve_api = { git = "https://github.com/oxidecomputer/propolis", rev = "901b710b6e5bd05a94a323693c2b971e7e7b240e" }
-propolis-client = { git = "https://github.com/oxidecomputer/propolis", rev = "901b710b6e5bd05a94a323693c2b971e7e7b240e", features = [ "generated-migration" ] }
-propolis-server = { git = "https://github.com/oxidecomputer/propolis", rev = "901b710b6e5bd05a94a323693c2b971e7e7b240e", default-features = false, features = ["mock-only"] }
+bhyve_api = { git = "https://github.com/oxidecomputer/propolis", rev = "334df299a56cd0d33e1227ed4ce4d2fe7478d541" }
+propolis-client = { git = "https://github.com/oxidecomputer/propolis", rev = "334df299a56cd0d33e1227ed4ce4d2fe7478d541", features = [ "generated-migration" ] }
+propolis-server = { git = "https://github.com/oxidecomputer/propolis", rev = "334df299a56cd0d33e1227ed4ce4d2fe7478d541", default-features = false, features = ["mock-only"] }
proptest = "1.3.1"
quote = "1.0"
rand = "0.8.5"
diff --git a/illumos-utils/src/running_zone.rs b/illumos-utils/src/running_zone.rs
index 734f22bd30..805419cb5d 100644
--- a/illumos-utils/src/running_zone.rs
+++ b/illumos-utils/src/running_zone.rs
@@ -391,13 +391,16 @@ pub struct RunningZone {
}
impl RunningZone {
+ /// The path to the zone's root filesystem (i.e., `/`), within zonepath.
+ pub const ROOT_FS_PATH: &'static str = "root";
+
pub fn name(&self) -> &str {
&self.inner.name
}
- /// Returns the filesystem path to the zone's root
+ /// Returns the filesystem path to the zone's root in the GZ.
pub fn root(&self) -> Utf8PathBuf {
- self.inner.zonepath.join("root")
+ self.inner.zonepath.join(Self::ROOT_FS_PATH)
}
pub fn control_interface(&self) -> AddrObject {
@@ -958,13 +961,11 @@ impl RunningZone {
};
let binary = Utf8PathBuf::from(path);
- // Fetch any log files for this SMF service.
- let Some((log_file, rotated_log_files)) =
- self.service_log_files(&service_name)?
+ let Some(log_file) = self.service_log_file(&service_name)?
else {
error!(
self.inner.log,
- "failed to find log files for existing service";
+ "failed to find log file for existing service";
"service_name" => &service_name,
);
continue;
@@ -975,7 +976,6 @@ impl RunningZone {
binary,
pid,
log_file,
- rotated_log_files,
});
}
}
@@ -992,72 +992,24 @@ impl RunningZone {
.collect())
}
- /// Return any SMF log files associated with the named service.
+ /// Return any SMF log file associated with the named service.
///
- /// Given a named service, this returns a tuple of the latest or current log
- /// file, and an array of any rotated log files. If the service does not
- /// exist, or there are no log files, `None` is returned.
- pub fn service_log_files(
+ /// Given a named service, this returns the path of the current log file.
+ /// This can be used to find rotated or archived log files, but keep in mind
+ /// this returns only the current, if it exists.
+ pub fn service_log_file(
&self,
name: &str,
- ) -> Result