mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-28 07:27:55 +00:00
Move config path generation into the service config for reusability (#3978)
* Move config path generation into the service config for reusability * Make NoCostum Default and fix tests * Apply suggestions from code review Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com> * remove function not used anymore * Make path into an option * remove database_path function and call it directly * remove helper functions, use consts
This commit is contained in:
committed by
Gavin Wood
parent
8fe64173e8
commit
2ff04d332d
@@ -65,6 +65,13 @@ use lazy_static::lazy_static;
|
||||
use futures::Future;
|
||||
use substrate_telemetry::TelemetryEndpoints;
|
||||
|
||||
/// default sub directory to store network config
|
||||
const DEFAULT_NETWORK_CONFIG_PATH : &'static str = "network";
|
||||
/// default sub directory to store database
|
||||
const DEFAULT_DB_CONFIG_PATH : &'static str = "db";
|
||||
/// default sub directory for the key store
|
||||
const DEFAULT_KEYSTORE_CONFIG_PATH : &'static str = "keystore";
|
||||
|
||||
/// The maximum number of characters for a node name.
|
||||
const NODE_NAME_MAX_LENGTH: usize = 32;
|
||||
|
||||
@@ -307,18 +314,36 @@ pub struct ParseAndPrepareBuildSpec<'a> {
|
||||
|
||||
impl<'a> ParseAndPrepareBuildSpec<'a> {
|
||||
/// Runs the command and build the chain specs.
|
||||
pub fn run<G, S, E>(
|
||||
pub fn run<C, G, S, E>(
|
||||
self,
|
||||
spec_factory: S
|
||||
) -> error::Result<()> where
|
||||
S: FnOnce(&str) -> Result<Option<ChainSpec<G, E>>, String>,
|
||||
C: Default,
|
||||
G: RuntimeGenesis,
|
||||
E: ChainSpecExtension,
|
||||
{
|
||||
info!("Building chain spec");
|
||||
let raw_output = self.params.raw;
|
||||
let mut spec = load_spec(&self.params.shared_params, spec_factory)?;
|
||||
with_default_boot_node(&mut spec, self.params, self.version)?;
|
||||
|
||||
if spec.boot_nodes().is_empty() && !self.params.disable_default_bootnode {
|
||||
let base_path = base_path(&self.params.shared_params, self.version);
|
||||
let cfg = service::Configuration::<C,_,_>::default_with_spec_and_base_path(spec.clone(), Some(base_path));
|
||||
let node_key = node_key_config(
|
||||
self.params.node_key_params,
|
||||
&Some(cfg.in_chain_config_dir(DEFAULT_NETWORK_CONFIG_PATH).expect("We provided a base_path"))
|
||||
)?;
|
||||
let keys = node_key.into_keypair()?;
|
||||
let peer_id = keys.public().into_peer_id();
|
||||
let addr = build_multiaddr![
|
||||
Ip4([127, 0, 0, 1]),
|
||||
Tcp(30333u16),
|
||||
P2p(peer_id)
|
||||
];
|
||||
spec.add_boot_node(addr)
|
||||
}
|
||||
|
||||
let json = service::chain_ops::build_spec(spec, raw_output)?;
|
||||
|
||||
print!("{}", json);
|
||||
@@ -558,16 +583,13 @@ fn fill_transaction_pool_configuration<C, G, E>(
|
||||
/// Fill the given `NetworkConfiguration` by looking at the cli parameters.
|
||||
fn fill_network_configuration(
|
||||
cli: NetworkConfigurationParams,
|
||||
base_path: &Path,
|
||||
chain_spec_id: &str,
|
||||
config_path: PathBuf,
|
||||
config: &mut NetworkConfiguration,
|
||||
client_id: String,
|
||||
is_dev: bool,
|
||||
) -> error::Result<()> {
|
||||
config.boot_nodes.extend(cli.bootnodes.into_iter());
|
||||
config.config_path = Some(
|
||||
network_path(&base_path, chain_spec_id).to_string_lossy().into()
|
||||
);
|
||||
config.config_path = Some(config_path.to_string_lossy().into());
|
||||
config.net_config_path = config.config_path.clone();
|
||||
config.reserved_nodes.extend(cli.reserved_nodes.into_iter());
|
||||
|
||||
@@ -642,7 +664,8 @@ where
|
||||
S: FnOnce(&str) -> Result<Option<ChainSpec<G, E>>, String>,
|
||||
{
|
||||
let spec = load_spec(&cli.shared_params, spec_factory)?;
|
||||
let mut config = service::Configuration::default_with_spec(spec.clone());
|
||||
let base_path = base_path(&cli.shared_params, &version);
|
||||
let mut config = service::Configuration::default_with_spec_and_base_path(spec.clone(), Some(base_path));
|
||||
|
||||
fill_config_keystore_password(&mut config, &cli)?;
|
||||
|
||||
@@ -666,14 +689,10 @@ where
|
||||
)?
|
||||
}
|
||||
|
||||
let base_path = base_path(&cli.shared_params, version);
|
||||
|
||||
config.keystore_path = cli.keystore_path.unwrap_or_else(
|
||||
|| keystore_path(&base_path, config.chain_spec.id())
|
||||
);
|
||||
config.keystore_path = cli.keystore_path.or_else(|| config.in_chain_config_dir(DEFAULT_KEYSTORE_CONFIG_PATH));
|
||||
|
||||
config.database = DatabaseConfig::Path {
|
||||
path: db_path(&base_path, config.chain_spec.id()),
|
||||
path: config.in_chain_config_dir(DEFAULT_DB_CONFIG_PATH).expect("We provided a base_path."),
|
||||
cache_size: cli.database_cache_size,
|
||||
};
|
||||
config.state_cache_size = cli.state_cache_size;
|
||||
@@ -740,8 +759,7 @@ where
|
||||
let client_id = config.client_id();
|
||||
fill_network_configuration(
|
||||
cli.network_config,
|
||||
&base_path,
|
||||
spec.id(),
|
||||
config.in_chain_config_dir(DEFAULT_NETWORK_CONFIG_PATH).expect("We provided a basepath"),
|
||||
&mut config.network,
|
||||
client_id,
|
||||
is_dev,
|
||||
@@ -792,39 +810,6 @@ where
|
||||
Ok(config)
|
||||
}
|
||||
|
||||
//
|
||||
// IANA unassigned port ranges that we could use:
|
||||
// 6717-6766 Unassigned
|
||||
// 8504-8553 Unassigned
|
||||
// 9556-9591 Unassigned
|
||||
// 9803-9874 Unassigned
|
||||
// 9926-9949 Unassigned
|
||||
|
||||
fn with_default_boot_node<G, E>(
|
||||
spec: &mut ChainSpec<G, E>,
|
||||
cli: BuildSpecCmd,
|
||||
version: &VersionInfo,
|
||||
) -> error::Result<()>
|
||||
where
|
||||
G: RuntimeGenesis,
|
||||
E: ChainSpecExtension,
|
||||
{
|
||||
if spec.boot_nodes().is_empty() && !cli.disable_default_bootnode {
|
||||
let base_path = base_path(&cli.shared_params, version);
|
||||
let storage_path = network_path(&base_path, spec.id());
|
||||
let node_key = node_key_config(cli.node_key_params, &Some(storage_path))?;
|
||||
let keys = node_key.into_keypair()?;
|
||||
let peer_id = keys.public().into_peer_id();
|
||||
let addr = build_multiaddr![
|
||||
Ip4([127, 0, 0, 1]),
|
||||
Tcp(30333u16),
|
||||
P2p(peer_id)
|
||||
];
|
||||
spec.add_boot_node(addr)
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Creates a configuration including the database path.
|
||||
pub fn create_config_with_db_path<C, G, E, S>(
|
||||
spec_factory: S, cli: &SharedParams, version: &VersionInfo,
|
||||
@@ -838,9 +823,9 @@ where
|
||||
let spec = load_spec(cli, spec_factory)?;
|
||||
let base_path = base_path(cli, version);
|
||||
|
||||
let mut config = service::Configuration::default_with_spec(spec.clone());
|
||||
let mut config = service::Configuration::default_with_spec_and_base_path(spec.clone(), Some(base_path));
|
||||
config.database = DatabaseConfig::Path {
|
||||
path: db_path(&base_path, spec.id()),
|
||||
path: config.in_chain_config_dir(DEFAULT_DB_CONFIG_PATH).expect("We provided a base_path."),
|
||||
cache_size: None,
|
||||
};
|
||||
|
||||
@@ -866,30 +851,6 @@ fn parse_address(
|
||||
Ok(address)
|
||||
}
|
||||
|
||||
fn keystore_path(base_path: &Path, chain_id: &str) -> PathBuf {
|
||||
let mut path = base_path.to_owned();
|
||||
path.push("chains");
|
||||
path.push(chain_id);
|
||||
path.push("keystore");
|
||||
path
|
||||
}
|
||||
|
||||
fn db_path(base_path: &Path, chain_id: &str) -> PathBuf {
|
||||
let mut path = base_path.to_owned();
|
||||
path.push("chains");
|
||||
path.push(chain_id);
|
||||
path.push("db");
|
||||
path
|
||||
}
|
||||
|
||||
fn network_path(base_path: &Path, chain_id: &str) -> PathBuf {
|
||||
let mut path = base_path.to_owned();
|
||||
path.push("chains");
|
||||
path.push(chain_id);
|
||||
path.push("network");
|
||||
path
|
||||
}
|
||||
|
||||
fn init_logger(pattern: &str) {
|
||||
use ansi_term::Colour;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user