Skip to content

Commit 59ab88a

Browse files
authored
avoid tight coupling between Omicron and Propolis Dropshot versions (#7057)
1 parent adfab16 commit 59ab88a

2 files changed

Lines changed: 14 additions & 35 deletions

File tree

sled-agent/src/instance.rs

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2102,29 +2102,17 @@ mod tests {
21022102
// TODO: factor out, this is also in sled-agent-sim.
21032103
fn propolis_mock_server(
21042104
log: &Logger,
2105-
) -> (HttpServer<Arc<propolis_mock_server::Context>>, PropolisClient) {
2105+
) -> (propolis_mock_server::Server, PropolisClient) {
21062106
let propolis_bind_address =
21072107
SocketAddr::new(Ipv6Addr::LOCALHOST.into(), 0); // allocate port
2108-
let dropshot_config = dropshot::ConfigDropshot {
2108+
let dropshot_config = propolis_mock_server::Config {
21092109
bind_address: propolis_bind_address,
21102110
..Default::default()
21112111
};
2112-
let propolis_log = log.new(o!("component" => "propolis-server-mock"));
2113-
let private =
2114-
Arc::new(propolis_mock_server::Context::new(propolis_log));
21152112
info!(log, "Starting mock propolis-server...");
2116-
let dropshot_log = log.new(o!("component" => "dropshot"));
2117-
let mock_api = propolis_mock_server::api();
2118-
2119-
let srv = dropshot::HttpServerStarter::new(
2120-
&dropshot_config,
2121-
mock_api,
2122-
private,
2123-
&dropshot_log,
2124-
)
2125-
.expect("couldn't create mock propolis-server")
2126-
.start();
21272113

2114+
let srv = propolis_mock_server::start(dropshot_config, log.clone())
2115+
.expect("couldn't create mock propolis-server");
21282116
let client = propolis_client::Client::new(&format!(
21292117
"http://{}",
21302118
srv.local_addr()

sled-agent/src/sim/sled_agent.rs

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use crate::sim::simulatable::Simulatable;
1717
use crate::updates::UpdateManager;
1818
use anyhow::bail;
1919
use anyhow::Context;
20-
use dropshot::{HttpError, HttpServer};
20+
use dropshot::HttpError;
2121
use futures::lock::Mutex;
2222
use nexus_sled_agent_shared::inventory::{
2323
Inventory, InventoryDataset, InventoryDisk, InventoryZpool,
@@ -43,7 +43,6 @@ use oxnet::Ipv6Net;
4343
use propolis_client::{
4444
types::VolumeConstructionRequest, Client as PropolisClient,
4545
};
46-
use propolis_mock_server::Context as PropolisContext;
4746
use sled_agent_types::disk::DiskStateRequested;
4847
use sled_agent_types::early_networking::{
4948
EarlyNetworkConfig, EarlyNetworkConfigBody,
@@ -81,7 +80,7 @@ pub struct SledAgent {
8180
disk_id_to_region_ids: Mutex<HashMap<String, Vec<Uuid>>>,
8281
pub v2p_mappings: Mutex<HashSet<VirtualNetworkInterfaceHost>>,
8382
mock_propolis:
84-
Mutex<Option<(HttpServer<Arc<PropolisContext>>, PropolisClient)>>,
83+
Mutex<Option<(propolis_mock_server::Server, PropolisClient)>>,
8584
/// lists of external IPs assigned to instances
8685
pub external_ips:
8786
Mutex<HashMap<PropolisUuid, HashSet<InstanceExternalIpBody>>>,
@@ -797,26 +796,18 @@ impl SledAgent {
797796
}
798797
let propolis_bind_address =
799798
SocketAddr::new(Ipv6Addr::LOCALHOST.into(), 0);
800-
let dropshot_config = dropshot::ConfigDropshot {
799+
let dropshot_config = propolis_mock_server::Config {
801800
bind_address: propolis_bind_address,
802801
..Default::default()
803802
};
804-
let propolis_log = log.new(o!("component" => "propolis-server-mock"));
805-
let private = Arc::new(PropolisContext::new(propolis_log));
806803
info!(log, "Starting mock propolis-server...");
807-
let dropshot_log = log.new(o!("component" => "dropshot"));
808-
let mock_api = propolis_mock_server::api();
809-
810-
let srv = dropshot::HttpServerStarter::new(
811-
&dropshot_config,
812-
mock_api,
813-
private,
814-
&dropshot_log,
815-
)
816-
.map_err(|error| {
817-
Error::unavail(&format!("initializing propolis-server: {}", error))
818-
})?
819-
.start();
804+
let srv = propolis_mock_server::start(dropshot_config, log.clone())
805+
.map_err(|error| {
806+
Error::unavail(&format!(
807+
"initializing propolis-server: {}",
808+
error
809+
))
810+
})?;
820811
let addr = srv.local_addr();
821812
let client = propolis_client::Client::new(&format!("http://{}", addr));
822813
*mock_lock = Some((srv, client));

0 commit comments

Comments
 (0)