diff --git a/rs/nns/governance/src/proposals/mod.rs b/rs/nns/governance/src/proposals/mod.rs index e7f9046069b2..4b61fe08b09d 100644 --- a/rs/nns/governance/src/proposals/mod.rs +++ b/rs/nns/governance/src/proposals/mod.rs @@ -216,6 +216,12 @@ impl ValidProposalAction { env: Arc, ) -> Result { match self { + // ExecuteNnsFunction is the only case where we need to call `canister_metadata` to get + // the candid file of an external canister, and hence it's the only one with `await`. + ValidProposalAction::ExecuteNnsFunction(execute_nns_function) => { + execute_nns_function.to_self_describing_action(env).await + } + ValidProposalAction::Motion(motion) => Ok(motion.to_self_describing_action()), ValidProposalAction::ApproveGenesisKyc(approve_genesis_kyc) => { Ok(approve_genesis_kyc.to_self_describing_action()) @@ -223,10 +229,6 @@ impl ValidProposalAction { ValidProposalAction::AddOrRemoveNodeProvider(add_or_remove_node_provider) => { Ok(add_or_remove_node_provider.to_self_describing_action()) } - - ValidProposalAction::ExecuteNnsFunction(execute_nns_function) => { - execute_nns_function.to_self_describing_action(env).await - } ValidProposalAction::RegisterKnownNeuron(register_known_neuron) => { Ok(register_known_neuron.to_self_describing_action()) } @@ -251,6 +253,9 @@ impl ValidProposalAction { ValidProposalAction::FulfillSubnetRentalRequest(fulfill_subnet_rental_request) => { Ok(fulfill_subnet_rental_request.to_self_describing_action()) } + ValidProposalAction::CreateServiceNervousSystem(create_service_nervous_system) => { + Ok(create_service_nervous_system.to_self_describing_action()) + } _ => Err(GovernanceError::new_with_message( ErrorType::InvalidProposal, "Self describing proposal actions are not supported for this proposal action yet.",