Skip to content

Commit 3c8a354

Browse files
author
lif
committed
wip: post-substantial-rebase cleanup
1 parent a0fe2aa commit 3c8a354

File tree

5 files changed

+53
-19
lines changed

5 files changed

+53
-19
lines changed

common/src/api/internal/nexus.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ pub struct SledInstanceState {
8484
/// Tells sled-agent whether an instance whose status it's reporting is still
8585
/// relevant, or if it's timed out during creation and been marked as failed
8686
/// (such that sled-agent can destroy the tardy instance)
87-
#[derive(Serialize, JsonSchema)]
87+
#[derive(Clone, Copy, Serialize, JsonSchema)]
8888
#[serde(rename_all = "snake_case", tag = "last_result", content = "details")]
8989
pub enum HandleInstancePutResultResult {
9090
Ok,

nexus/src/app/instance.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ use nexus_db_queries::db::identity::Resource;
2929
use nexus_db_queries::db::lookup;
3030
use nexus_db_queries::db::lookup::LookupPath;
3131
use nexus_types::external_api::views;
32-
use nexus_types::internal_api::views::HandleInstancePutResultResult;
3332
use omicron_common::api::external::http_pagination::PaginatedBy;
3433
use omicron_common::api::external::ByteCount;
3534
use omicron_common::api::external::CreateResult;

sled-agent/src/instance.rs

Lines changed: 50 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1642,7 +1642,11 @@ mod tests {
16421642
"couldn't send SledInstanceState to test driver",
16431643
)
16441644
})?;
1645-
todo!()
1645+
self.nexus_disposition
1646+
.borrow()
1647+
.as_ref()
1648+
.cloned()
1649+
.ok_or(omicron_common::api::external::Error::unavail("did not set nexus_disposition in FakeNexusServer"))
16461650
}
16471651

16481652
fn cpapi_handle_instance_put_failure(
@@ -1660,7 +1664,11 @@ mod tests {
16601664
"couldn't send error to test driver",
16611665
)
16621666
})?;
1663-
todo!()
1667+
self.nexus_disposition
1668+
.borrow()
1669+
.as_ref()
1670+
.cloned()
1671+
.ok_or(omicron_common::api::external::Error::unavail("did not set nexus_disposition in FakeNexusServer"))
16641672
}
16651673
}
16661674

@@ -1953,9 +1961,12 @@ mod tests {
19531961
let _mock_vnic_contexts = mock_vnic_contexts();
19541962
let _mock_zone_contexts = mock_zone_contexts();
19551963

1956-
let FakeNexusParts { nexus_client, nexus_server, mut state_rx, .. } =
1964+
let FakeNexusParts { nexus_client, nexus_server, mut state_rx, disp_tx } =
19571965
FakeNexusParts::new(&logctx);
19581966

1967+
disp_tx.send(Some(HandleInstancePutResultResult::Ok))
1968+
.expect("couldn't send nexus_disposition");
1969+
19591970
let (_dns_server, resolver, _dns_config_dir) =
19601971
timeout(TIMEOUT_DURATION, dns_server(&logctx, &nexus_server))
19611972
.await
@@ -1978,13 +1989,17 @@ mod tests {
19781989
.await
19791990
.expect("timed out creating Instance struct");
19801991

1981-
timeout(
1982-
TIMEOUT_DURATION,
1983-
inst.put_state(InstanceStateRequested::Running),
1984-
)
1985-
.await
1986-
.expect("timed out waiting for Instance::put_state")
1987-
.unwrap();
1992+
let (put_tx, put_rx) = oneshot::channel();
1993+
1994+
inst.put_state(put_tx, InstanceStateRequested::Running)
1995+
.await
1996+
.expect("failed to send Instance::put_state");
1997+
1998+
timeout(TIMEOUT_DURATION, put_rx)
1999+
.await
2000+
.expect("timed out waiting for Instance::put_state result")
2001+
.expect("failed to receive Instance::put_state result")
2002+
.expect("Instance::put_state failed");
19882003

19892004
timeout(
19902005
TIMEOUT_DURATION,
@@ -1997,7 +2012,7 @@ mod tests {
19972012
)
19982013
.await
19992014
.expect("timed out waiting for InstanceState::Running in FakeNexus")
2000-
.unwrap();
2015+
.expect("failed to receive FakeNexus' InstanceState");
20012016

20022017
logctx.cleanup_successful();
20032018
}
@@ -2013,9 +2028,12 @@ mod tests {
20132028
let _mock_vnic_contexts = mock_vnic_contexts();
20142029
let _mock_zone_contexts = mock_zone_contexts();
20152030

2016-
let FakeNexusParts { nexus_client, nexus_server, state_rx, .. } =
2031+
let FakeNexusParts { nexus_client, nexus_server, state_rx, disp_tx } =
20172032
FakeNexusParts::new(&logctx);
20182033

2034+
disp_tx.send(Some(HandleInstancePutResultResult::Ok))
2035+
.expect("couldn't send nexus_disposition");
2036+
20192037
let (_dns_server, resolver, _dns_config_dir) =
20202038
timeout(TIMEOUT_DURATION, dns_server(&logctx, &nexus_server))
20212039
.await
@@ -2039,7 +2057,13 @@ mod tests {
20392057
.await
20402058
.expect("timed out creating Instance struct");
20412059

2042-
timeout(TIMEOUT_DURATION, inst.put_state(InstanceStateRequested::Running))
2060+
let (put_tx, put_rx) = oneshot::channel();
2061+
2062+
inst.put_state(put_tx, InstanceStateRequested::Running)
2063+
.await
2064+
.expect("failed to send Instance::put_state");
2065+
2066+
timeout(TIMEOUT_DURATION, put_rx)
20432067
.await
20442068
.expect_err("*should've* timed out waiting for Instance::put_state, but didn't?");
20452069

@@ -2076,9 +2100,14 @@ mod tests {
20762100
let halt_rm_ctx = MockZones::halt_and_remove_logged_context();
20772101
halt_rm_ctx.expect().times(..).returning(|_, _| Ok(()));
20782102

2079-
let FakeNexusParts { nexus_client, nexus_server, state_rx, .. } =
2103+
let FakeNexusParts { nexus_client, nexus_server, state_rx, disp_tx } =
20802104
FakeNexusParts::new(&logctx);
20812105

2106+
disp_tx.send(Some(HandleInstancePutResultResult::TimedOut {
2107+
generation: Generation(5)
2108+
}))
2109+
.expect("couldn't send nexus_disposition");
2110+
20822111
let (_dns_server, resolver, _dns_config_dir) =
20832112
timeout(TIMEOUT_DURATION, dns_server(&logctx, &nexus_server))
20842113
.await
@@ -2102,7 +2131,13 @@ mod tests {
21022131
.await
21032132
.expect("timed out creating Instance struct");
21042133

2105-
timeout(TIMEOUT_DURATION, inst.put_state(InstanceStateRequested::Running))
2134+
let (put_tx, put_rx) = oneshot::channel();
2135+
2136+
inst.put_state(put_tx, InstanceStateRequested::Running)
2137+
.await
2138+
.expect("failed to send Instance::put_state");
2139+
2140+
timeout(TIMEOUT_DURATION, put_rx)
21062141
.await
21072142
.expect_err("*should've* timed out waiting for Instance::put_state, but didn't?");
21082143

sled-agent/src/instance_manager.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -833,7 +833,7 @@ impl InstanceTicket {
833833

834834
#[cfg(test)]
835835
pub(crate) fn new_without_manager_for_test(id: Uuid) -> Self {
836-
Self { id, inner: None }
836+
Self { id, terminate_tx: None }
837837
}
838838

839839
/// Idempotently removes this instance from the tracked set of

sled-agent/src/params.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ pub struct InstancePutStateBody {
115115

116116
/// The response sent from a request to move an instance into a specific runtime
117117
/// state.
118-
#[derive(Serialize, Deserialize, JsonSchema)]
118+
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
119119
pub struct InstancePutStateResponse {
120120
/// The current runtime state of the instance after handling the request to
121121
/// change its state. If the instance's state did not change, this field is

0 commit comments

Comments
 (0)