Skip to content

Commit e56e239

Browse files
authored
Create composite crucible and pantry packages (#4927)
Create new packages for crucible and pantry to include the zone network config service. Depends on oxidecomputer/crucible#1096. These two PRs should be merged in coordination Related: #1898 ### Crucible updates This PR also merges a few changes from Crucible: * fe0c5c7 - [smf] Use new zone network config service * 3d48060 - (upstream/main) Move a few methods into downstairs * b01e15c - Remove extra clone in upstairs read * b4f37b4 - Make `crucible-downstairs` not depend on upstairs * 733b7f9 - Update Rust crate rusqlite to 0.31 * 961e971 - Update Rust crate reedline to 0.29.0 * b946a04 - Update Rust crate clap to 4.5 * 39f1f3f - Update Rust crate indicatif to 0.17.8 * 4ea9387 - Update progenitor to bc0bb4b * ace10f4 - Do not 500 on snapshot delete for deleted region * 4105133 - Drop jobs from Offline downstairs. * 43dace9 - `Mutex<Work>` → `Work` * a1f3207 - Added a contributing.md * 13b8669 - Remove ExtentFlushClose::source_downstairs * 9b3f366 - Remove unnecessary mutexes from Downstairs
1 parent 1e76aca commit e56e239

File tree

3 files changed

+39
-16
lines changed

3 files changed

+39
-16
lines changed

.github/buildomat/jobs/package.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ zones=(
111111
out/clickhouse.tar.gz
112112
out/clickhouse_keeper.tar.gz
113113
out/cockroachdb.tar.gz
114-
out/crucible-pantry.tar.gz
115-
out/crucible.tar.gz
114+
out/crucible-pantry-zone.tar.gz
115+
out/crucible-zone.tar.gz
116116
out/external-dns.tar.gz
117117
out/internal-dns.tar.gz
118118
out/omicron-nexus.tar.gz

package-manifest.toml

+23-6
Original file line numberDiff line numberDiff line change
@@ -389,13 +389,28 @@ source.packages = [ "sp-sim.tar.gz" ]
389389
output.type = "zone"
390390
output.intermediate_only = true
391391

392+
[package.crucible-zone]
393+
service_name = "crucible"
394+
only_for_targets.image = "standard"
395+
source.type = "composite"
396+
source.packages = [ "crucible.tar.gz", "zone-network-setup.tar.gz" ]
397+
output.type = "zone"
398+
399+
400+
[package.crucible-pantry-zone]
401+
service_name = "crucible_pantry"
402+
only_for_targets.image = "standard"
403+
source.type = "composite"
404+
source.packages = [ "crucible-pantry.tar.gz", "zone-network-setup.tar.gz" ]
405+
output.type = "zone"
406+
392407
# Packages not built within Omicron, but which must be imported.
393408

394409
# Refer to
395410
# https://github.com/oxidecomputer/crucible/blob/main/package/README.md
396411
# for instructions on building this manually.
397412
[package.crucible]
398-
service_name = "crucible"
413+
service_name = "crucible_prebuilt"
399414
only_for_targets.image = "standard"
400415
# To manually override the package source (for example, to test a change in
401416
# both Crucible and Omicron simultaneously):
@@ -405,22 +420,24 @@ only_for_targets.image = "standard"
405420
# 3. Use source.type = "manual" instead of "prebuilt"
406421
source.type = "prebuilt"
407422
source.repo = "crucible"
408-
source.commit = "796dce526dd7ed7b52a0429a486ccba4a9da1ce5"
423+
source.commit = "fe0c5c7909707a0f826025be4fe2bbf5f6e0206f"
409424
# The SHA256 digest is automatically posted to:
410425
# https://buildomat.eng.oxide.computer/public/file/oxidecomputer/crucible/image/<commit>/crucible.sha256.txt
411-
source.sha256 = "8b654627a4250e8d444133cf3130838d224b13e53f3e48cf0d031314d6f05ee0"
426+
source.sha256 = "5da4f93b16fc7c0f3cc3a67919dbaa3f143cc07b703183a236f5c98b61504d15"
412427
output.type = "zone"
428+
output.intermediate_only = true
413429

414430
[package.crucible-pantry]
415-
service_name = "crucible_pantry"
431+
service_name = "crucible_pantry_prebuilt"
416432
only_for_targets.image = "standard"
417433
source.type = "prebuilt"
418434
source.repo = "crucible"
419-
source.commit = "796dce526dd7ed7b52a0429a486ccba4a9da1ce5"
435+
source.commit = "fe0c5c7909707a0f826025be4fe2bbf5f6e0206f"
420436
# The SHA256 digest is automatically posted to:
421437
# https://buildomat.eng.oxide.computer/public/file/oxidecomputer/crucible/image/<commit>/crucible-pantry.sha256.txt
422-
source.sha256 = "8602b2d6e7beb0731ae2be481715c94795657306d6013cc6d81fd60c4784a6ed"
438+
source.sha256 = "ed5027cc37c5ba4f2b9a568528f5bb49deedccaaa60bd770311c7bface6aa02b"
423439
output.type = "zone"
440+
output.intermediate_only = true
424441

425442
# Refer to
426443
# https://github.com/oxidecomputer/propolis/blob/master/package/README.md

sled-agent/src/services.rs

+14-8
Original file line numberDiff line numberDiff line change
@@ -1708,27 +1708,30 @@ impl ServiceManager {
17081708
let Some(info) = self.inner.sled_info.get() else {
17091709
return Err(Error::SledAgentNotReady);
17101710
};
1711-
let datalink = installed_zone.get_control_vnic_name();
1712-
let gateway = &info.underlay_address.to_string();
17131711
let listen_addr = &underlay_address.to_string();
17141712
let listen_port = &CRUCIBLE_PORT.to_string();
17151713

1714+
let nw_setup_service = Self::zone_network_setup_install(
1715+
info,
1716+
&installed_zone,
1717+
listen_addr,
1718+
)?;
1719+
17161720
let dataset_name = DatasetName::new(
17171721
dataset.pool_name.clone(),
17181722
DatasetKind::Crucible,
17191723
)
17201724
.full_name();
17211725
let uuid = &Uuid::new_v4().to_string();
17221726
let config = PropertyGroupBuilder::new("config")
1723-
.add_property("datalink", "astring", datalink)
1724-
.add_property("gateway", "astring", gateway)
17251727
.add_property("dataset", "astring", &dataset_name)
17261728
.add_property("listen_addr", "astring", listen_addr)
17271729
.add_property("listen_port", "astring", listen_port)
17281730
.add_property("uuid", "astring", uuid)
17291731
.add_property("store", "astring", "/data");
17301732

17311733
let profile = ProfileBuilder::new("omicron")
1734+
.add_service(nw_setup_service)
17321735
.add_service(disabled_ssh_service)
17331736
.add_service(
17341737
ServiceBuilder::new("oxide/crucible/agent")
@@ -1759,18 +1762,21 @@ impl ServiceManager {
17591762
return Err(Error::SledAgentNotReady);
17601763
};
17611764

1762-
let datalink = installed_zone.get_control_vnic_name();
1763-
let gateway = &info.underlay_address.to_string();
17641765
let listen_addr = &underlay_address.to_string();
17651766
let listen_port = &CRUCIBLE_PANTRY_PORT.to_string();
17661767

1768+
let nw_setup_service = Self::zone_network_setup_install(
1769+
info,
1770+
&installed_zone,
1771+
listen_addr,
1772+
)?;
1773+
17671774
let config = PropertyGroupBuilder::new("config")
1768-
.add_property("datalink", "astring", datalink)
1769-
.add_property("gateway", "astring", gateway)
17701775
.add_property("listen_addr", "astring", listen_addr)
17711776
.add_property("listen_port", "astring", listen_port);
17721777

17731778
let profile = ProfileBuilder::new("omicron")
1779+
.add_service(nw_setup_service)
17741780
.add_service(disabled_ssh_service)
17751781
.add_service(
17761782
ServiceBuilder::new("oxide/crucible/pantry")

0 commit comments

Comments
 (0)