diff --git a/nexus/db-model/src/vmm_state.rs b/nexus/db-model/src/vmm_state.rs index 648d2593d4..f929c9a4db 100644 --- a/nexus/db-model/src/vmm_state.rs +++ b/nexus/db-model/src/vmm_state.rs @@ -106,11 +106,11 @@ impl From for omicron_common::api::external::InstanceState { VmmState::Starting => Output::Starting, VmmState::Running => Output::Running, VmmState::Stopping => Output::Stopping, - VmmState::Stopped => Output::Stopped, + VmmState::Stopped | VmmState::SagaUnwound => Output::Stopped, VmmState::Rebooting => Output::Rebooting, VmmState::Migrating => Output::Migrating, VmmState::Failed => Output::Failed, - VmmState::Destroyed | VmmState::SagaUnwound => Output::Destroyed, + VmmState::Destroyed => Output::Destroyed, } } } diff --git a/nexus/src/app/sagas/instance_common.rs b/nexus/src/app/sagas/instance_common.rs index e4378c04df..14263df0ff 100644 --- a/nexus/src/app/sagas/instance_common.rs +++ b/nexus/src/app/sagas/instance_common.rs @@ -255,7 +255,7 @@ pub async fn instance_ip_get_instance_state( // - starting: see below. match (found_instance_state, found_vmm_state) { // If there's no VMM, the instance is definitely not on any sled. - (InstanceState::NoVmm, _) => { + (InstanceState::NoVmm, _) | (_, Some(VmmState::SagaUnwound)) => { sled_id = None; } @@ -329,10 +329,7 @@ pub async fn instance_ip_get_instance_state( ), ))); } - ( - InstanceState::Vmm, - Some(VmmState::Destroyed | VmmState::SagaUnwound), - ) => { + (InstanceState::Vmm, Some(VmmState::Destroyed)) => { return Err(ActionError::action_failed(Error::internal_error( &format!( "instance {} points to destroyed VMM",