Skip to content

Commit

Permalink
feat: provide --node-count arg for deploy cmd
Browse files Browse the repository at this point in the history
This will control how many node processes run on each VM. The default is 20.
  • Loading branch information
jacderida committed Aug 4, 2023
1 parent 81dd653 commit f2fe39e
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 10 deletions.
26 changes: 19 additions & 7 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ impl TestnetDeploy {
PathBuf::from("genesis_node.yml"),
PathBuf::from("inventory").join(format!(".{name}_genesis_inventory_digital_ocean.yml")),
"root".to_string(),
Some(self.build_extra_vars_doc(name, true, None)?),
Some(self.build_extra_vars_doc(name, true, None, None)?),
)?;
Ok(())
}
Expand All @@ -300,13 +300,19 @@ impl TestnetDeploy {
&self,
name: &str,
genesis_multiaddr: String,
node_instance_count: u16,
) -> Result<()> {
println!("Running ansible against remaining nodes...");
self.ansible_runner.run_playbook(
PathBuf::from("nodes.yml"),
PathBuf::from("inventory").join(format!(".{name}_node_inventory_digital_ocean.yml")),
"root".to_string(),
Some(self.build_extra_vars_doc(name, false, Some(genesis_multiaddr))?),
Some(self.build_extra_vars_doc(
name,
false,
Some(genesis_multiaddr),
Some(node_instance_count),
)?),
)?;
Ok(())
}
Expand All @@ -326,17 +332,19 @@ impl TestnetDeploy {
pub async fn deploy(
&self,
name: &str,
node_count: u16,
vm_count: u16,
node_instance_count: u16,
repo_owner: Option<String>,
branch: Option<String>,
) -> Result<()> {
self.create_infra(name, node_count, repo_owner.is_some())
self.create_infra(name, vm_count, repo_owner.is_some())
.await?;
self.provision_genesis_node(name, repo_owner, branch)
.await?;
let multiaddr = self.get_genesis_multiaddr(name).await?;
println!("Obtained multiaddr for genesis node: {multiaddr}");
self.provision_remaining_nodes(name, multiaddr).await?;
self.provision_remaining_nodes(name, multiaddr, node_instance_count)
.await?;
Ok(())
}

Expand Down Expand Up @@ -376,6 +384,7 @@ impl TestnetDeploy {
name: &str,
is_genesis: bool,
genesis_multiaddr: Option<String>,
node_instance_count: Option<u16>,
) -> Result<String> {
// Note: the `is_genesis` variable itself is assigned in the playbook.
let extra_vars = if is_genesis {
Expand All @@ -390,10 +399,15 @@ impl TestnetDeploy {
let extra_vars = r#"
{
"genesis_multiaddr": "__MULTIADDR__",
"node_instance_count": "__NODE_INSTANCE_COUNT__",
"provider": "__PROVIDER__",
"testnet_name": "__TESTNET_NAME__"
}"#;
let extra_vars = extra_vars.replace("__MULTIADDR__", &multiaddr);
let extra_vars = extra_vars.replace(
"__NODE_INSTANCE_COUNT__",
&node_instance_count.unwrap_or(20).to_string(),
);
extra_vars
};
let extra_vars =
Expand All @@ -409,8 +423,6 @@ impl TestnetDeploy {
.join(" ");
Ok(extra_vars)
}

// fn wait_for_ssh()
}

pub fn run_external_command(
Expand Down
8 changes: 6 additions & 2 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ enum Commands {
/// The name of the environment
#[arg(short = 'n', long)]
name: String,
/// The number of safenode processes to run on each VM.
#[clap(long, default_value = "20")]
node_count: u16,
/// The cloud provider to deploy to.
///
/// Valid values are "aws" or "digital-ocean".
Expand All @@ -63,7 +66,7 @@ enum Commands {
/// The number of node VMs to create.
///
/// Each VM will run many safenode processes.
#[clap(short = 'c', long, default_value = "10")]
#[clap(long, default_value = "10")]
vm_count: u16,
},
}
Expand All @@ -82,14 +85,15 @@ async fn main() -> Result<()> {
Some(Commands::Deploy {
branch,
name,
node_count,
provider,
repo_owner,
vm_count,
}) => {
let testnet_deploy = TestnetDeployBuilder::default().provider(provider).build()?;
testnet_deploy.init(&name).await?;
testnet_deploy
.deploy(&name, vm_count, branch, repo_owner)
.deploy(&name, vm_count, node_count, branch, repo_owner)
.await?;
Ok(())
}
Expand Down
3 changes: 2 additions & 1 deletion src/tests/provision_remaining_nodes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ async fn should_run_ansible_against_the_remaining_nodes() -> Result<()> {
eq(PathBuf::from("inventory").join(".beta_node_inventory_digital_ocean.yml")),
eq("root".to_string()),
eq(Some(
"{ \"genesis_multiaddr\": \"/ip4/10.0.0.10/tcp/12000/p2p/12D3KooWLvmkUDQRthtZv9CrzozRLk9ZVEHXgmx6UxVMiho5aded\", \"provider\": \"digital-ocean\", \"testnet_name\": \"beta\" }".to_string(),
"{ \"genesis_multiaddr\": \"/ip4/10.0.0.10/tcp/12000/p2p/12D3KooWLvmkUDQRthtZv9CrzozRLk9ZVEHXgmx6UxVMiho5aded\", \"node_instance_count\": \"30\", \"provider\": \"digital-ocean\", \"testnet_name\": \"beta\" }".to_string(),
)),
)
.returning(|_, _, _, _| Ok(()));
Expand All @@ -41,6 +41,7 @@ async fn should_run_ansible_against_the_remaining_nodes() -> Result<()> {
"beta",
"/ip4/10.0.0.10/tcp/12000/p2p/12D3KooWLvmkUDQRthtZv9CrzozRLk9ZVEHXgmx6UxVMiho5aded"
.to_string(),
30,
)
.await?;

Expand Down

0 comments on commit f2fe39e

Please sign in to comment.