From 64dda775f44f39b055978698a33219988c9a4b1d Mon Sep 17 00:00:00 2001
From: Adrian Catangiu <adrian@parity.io>
Date: Fri, 11 Aug 2023 17:35:29 +0300
Subject: [PATCH] sc-cli: add no-beefy flag to cli config (#14754)

Signed-off-by: Adrian Catangiu <adrian@parity.io>
---
 substrate/bin/node/cli/benches/block_production.rs | 1 +
 substrate/bin/node/cli/benches/transaction_pool.rs | 1 +
 substrate/client/cli/src/commands/run_cmd.rs       | 8 ++++++++
 substrate/client/cli/src/config.rs                 | 8 ++++++++
 substrate/client/cli/src/runner.rs                 | 1 +
 substrate/client/service/src/config.rs             | 2 ++
 substrate/client/service/test/src/lib.rs           | 1 +
 7 files changed, 22 insertions(+)

diff --git a/substrate/bin/node/cli/benches/block_production.rs b/substrate/bin/node/cli/benches/block_production.rs
index 5ee538d18d6..fd4deeaed35 100644
--- a/substrate/bin/node/cli/benches/block_production.rs
+++ b/substrate/bin/node/cli/benches/block_production.rs
@@ -88,6 +88,7 @@ fn new_node(tokio_handle: Handle) -> node_cli::service::NewFullBase {
 		offchain_worker: OffchainWorkerConfig { enabled: true, indexing_enabled: false },
 		force_authoring: false,
 		disable_grandpa: false,
+		disable_beefy: false,
 		dev_key_seed: Some(Sr25519Keyring::Alice.to_seed()),
 		tracing_targets: None,
 		tracing_receiver: Default::default(),
diff --git a/substrate/bin/node/cli/benches/transaction_pool.rs b/substrate/bin/node/cli/benches/transaction_pool.rs
index d3e8c02a958..39a94b21cc2 100644
--- a/substrate/bin/node/cli/benches/transaction_pool.rs
+++ b/substrate/bin/node/cli/benches/transaction_pool.rs
@@ -84,6 +84,7 @@ fn new_node(tokio_handle: Handle) -> node_cli::service::NewFullBase {
 		offchain_worker: OffchainWorkerConfig { enabled: true, indexing_enabled: false },
 		force_authoring: false,
 		disable_grandpa: false,
+		disable_beefy: false,
 		dev_key_seed: Some(Sr25519Keyring::Alice.to_seed()),
 		tracing_targets: None,
 		tracing_receiver: Default::default(),
diff --git a/substrate/client/cli/src/commands/run_cmd.rs b/substrate/client/cli/src/commands/run_cmd.rs
index 5dda488b133..e6a62185174 100644
--- a/substrate/client/cli/src/commands/run_cmd.rs
+++ b/substrate/client/cli/src/commands/run_cmd.rs
@@ -51,6 +51,10 @@ pub struct RunCmd {
 	#[arg(long)]
 	pub no_grandpa: bool,
 
+	/// Disable BEEFY voter when running in validator mode, otherwise disable the BEEFY observer.
+	#[arg(long)]
+	pub no_beefy: bool,
+
 	/// Listen to all RPC interfaces.
 	/// Default is local. Note: not all RPC methods are safe to be exposed publicly. Use an RPC
 	/// proxy server to filter out dangerous methods. More details:
@@ -313,6 +317,10 @@ impl CliConfiguration for RunCmd {
 		Ok(self.no_grandpa)
 	}
 
+	fn disable_beefy(&self) -> Result<bool> {
+		Ok(self.no_beefy)
+	}
+
 	fn rpc_max_connections(&self) -> Result<u32> {
 		Ok(self.rpc_max_connections)
 	}
diff --git a/substrate/client/cli/src/config.rs b/substrate/client/cli/src/config.rs
index 4d218da6aa8..0c3bf98a2f5 100644
--- a/substrate/client/cli/src/config.rs
+++ b/substrate/client/cli/src/config.rs
@@ -381,6 +381,13 @@ pub trait CliConfiguration<DCV: DefaultConfigurationValues = ()>: Sized {
 		Ok(Default::default())
 	}
 
+	/// Returns `Ok(true)` if BEEFY should be disabled
+	///
+	/// By default this is `false`.
+	fn disable_beefy(&self) -> Result<bool> {
+		Ok(Default::default())
+	}
+
 	/// Get the development key seed from the current object
 	///
 	/// By default this is `None`.
@@ -508,6 +515,7 @@ pub trait CliConfiguration<DCV: DefaultConfigurationValues = ()>: Sized {
 			offchain_worker: self.offchain_worker(&role)?,
 			force_authoring: self.force_authoring()?,
 			disable_grandpa: self.disable_grandpa()?,
+			disable_beefy: self.disable_beefy()?,
 			dev_key_seed: self.dev_key_seed(is_dev)?,
 			tracing_targets: self.tracing_targets()?,
 			tracing_receiver: self.tracing_receiver()?,
diff --git a/substrate/client/cli/src/runner.rs b/substrate/client/cli/src/runner.rs
index 59f53200a19..2a536044d2f 100644
--- a/substrate/client/cli/src/runner.rs
+++ b/substrate/client/cli/src/runner.rs
@@ -280,6 +280,7 @@ mod tests {
 				offchain_worker: Default::default(),
 				force_authoring: false,
 				disable_grandpa: false,
+				disable_beefy: false,
 				dev_key_seed: None,
 				tracing_targets: None,
 				tracing_receiver: Default::default(),
diff --git a/substrate/client/service/src/config.rs b/substrate/client/service/src/config.rs
index 39b7ee05079..abf54588556 100644
--- a/substrate/client/service/src/config.rs
+++ b/substrate/client/service/src/config.rs
@@ -112,6 +112,8 @@ pub struct Configuration {
 	pub force_authoring: bool,
 	/// Disable GRANDPA when running in validator mode
 	pub disable_grandpa: bool,
+	/// Disable BEEFY when running in validator mode
+	pub disable_beefy: bool,
 	/// Development key seed.
 	///
 	/// When running in development mode, the seed will be used to generate authority keys by the
diff --git a/substrate/client/service/test/src/lib.rs b/substrate/client/service/test/src/lib.rs
index 38a811acc74..e095f61a7da 100644
--- a/substrate/client/service/test/src/lib.rs
+++ b/substrate/client/service/test/src/lib.rs
@@ -260,6 +260,7 @@ fn node_config<
 		offchain_worker: Default::default(),
 		force_authoring: false,
 		disable_grandpa: false,
+		disable_beefy: false,
 		dev_key_seed: key_seed,
 		tracing_targets: None,
 		tracing_receiver: Default::default(),
-- 
GitLab