Merge pull request 'Changes for new laconicd' (#5) from dboreham/update-for-laconicd2 into main

Reviewed-on: #5
This commit is contained in:
David Boreham 2024-07-31 17:35:23 +00:00
commit 73ad574b89
4 changed files with 32 additions and 3 deletions

View File

@ -21,6 +21,9 @@ do
node_host_name=${node_name}.${machine_domain} node_host_name=${node_name}.${machine_domain}
echo "Running initialize-network ${node_network_dir} on ${node_host_name}" echo "Running initialize-network ${node_network_dir} on ${node_host_name}"
ssh ${ssh_user}@${node_host_name} ${so_command} --stack mainnet-laconic deploy setup --network-dir ${node_network_dir} --initialize-network --chain-id ${chain_id} --node-moniker ${node_name} ssh ${ssh_user}@${node_host_name} ${so_command} --stack mainnet-laconic deploy setup --network-dir ${node_network_dir} --initialize-network --chain-id ${chain_id} --node-moniker ${node_name}
# Change file ownership in the network dir to work around root-only container issue
change_dir_ownership ${node_host_name} ${node_network_dir}
echo "Running join-network ${node_network_dir} on ${node_host_name}" echo "Running join-network ${node_network_dir} on ${node_host_name}"
ssh ${ssh_user}@${node_host_name} ${so_command} --stack mainnet-laconic deploy setup --network-dir ${node_network_dir} --join-network --key-name ${node_name} ssh ${ssh_user}@${node_host_name} ${so_command} --stack mainnet-laconic deploy setup --network-dir ${node_network_dir} --join-network --key-name ${node_name}
change_dir_ownership ${node_host_name} ${node_network_dir}
done done

View File

@ -15,6 +15,7 @@ else
fi fi
gentx_dir=${node_network_dir}/config/gentx gentx_dir=${node_network_dir}/config/gentx
genesis_json_file=${node_network_dir}/config/genesis.json
local_gentx_dir=gentx-${machine_name_prefix} local_gentx_dir=gentx-${machine_name_prefix}
echo "Fetch node ids and node ips for persistent-peers" echo "Fetch node ids and node ips for persistent-peers"
@ -42,27 +43,42 @@ do
node_host_name=${node_name}.${machine_domain} node_host_name=${node_name}.${machine_domain}
echo "Copying ${gentx_dir} on ${node_name} to ${local_gentx_dir}" echo "Copying ${gentx_dir} on ${node_name} to ${local_gentx_dir}"
scp laconic@${node_host_name}:~/${gentx_dir}/* ${local_gentx_dir} scp laconic@${node_host_name}:~/${gentx_dir}/* ${local_gentx_dir}
scp laconic@${node_host_name}:~/${genesis_json_file} ${local_gentx_dir}/${node_name}-genesis.json
done
# Extract the peer node validator addresses from their genesis.json files
gentx_addresses=""
for (( i=2 ; i<=$node_count ; i++ ));
do
node_name=${machine_name_prefix}-${i}
node_genesis_file=${local_gentx_dir}/${node_name}-genesis.json
node_gentx_address=$(grep address ${node_genesis_file} | head -1 | cut -d '"' -f 4)
gentx_addresses+=${delimeter}${node_gentx_address}
delimeter=","
done done
echo "Copying gentx files to node 1" echo "Copying gentx files to node 1"
node_1_host_name=${machine_name_prefix}-1.${machine_domain} node_1_host_name=${machine_name_prefix}-1.${machine_domain}
ssh ${ssh_user}@${node_1_host_name} rm -rf ${local_gentx_dir} ssh ${ssh_user}@${node_1_host_name} rm -rf ${local_gentx_dir}
ssh ${ssh_user}@${node_1_host_name} mkdir ${local_gentx_dir} ssh ${ssh_user}@${node_1_host_name} mkdir ${local_gentx_dir}
scp ${local_gentx_dir}/* laconic@${node_1_host_name}:~/${local_gentx_dir} scp ${local_gentx_dir}/gentx-* laconic@${node_1_host_name}:~/${local_gentx_dir}
gentx_file_list=$(ssh laconic@${node_1_host_name} ls -m ${local_gentx_dir}/*) gentx_file_list=$(ssh laconic@${node_1_host_name} ls -m ${local_gentx_dir}/gentx-*)
echo "Node 1 now has: ${gentx_file_list}" echo "Node 1 now has: ${gentx_file_list}"
gentx_files=$(echo ${gentx_file_list} | tr -d ' ' | tr -d '\n') gentx_files=$(echo ${gentx_file_list} | tr -d ' ' | tr -d '\n')
echo "Generate genesis on node 1" echo "Generate genesis on node 1"
ssh ${ssh_user}@${node_1_host_name} ${so_command} --stack mainnet-laconic deploy setup --network-dir ${node_network_dir} --create-network --gentx-files ${gentx_files} ssh ${ssh_user}@${node_1_host_name} ${so_command} --stack mainnet-laconic deploy setup --network-dir ${node_network_dir} --create-network --gentx-files ${gentx_files} --gentx-addresses ${gentx_addresses}
# Change file ownership in the network dir to work around root-only container issue
change_dir_ownership ${node_1_host_name} ${node_network_dir}
echo "Fetching genesis file from node 1" echo "Fetching genesis file from node 1"
local_genesis_file=${local_gentx_dir}/genesis.json local_genesis_file=${local_gentx_dir}/genesis.json
scp ${ssh_user}@${node_1_host_name}:~/${node_network_dir}/config/genesis.json ${local_gentx_dir} scp ${ssh_user}@${node_1_host_name}:~/${node_network_dir}/config/genesis.json ${local_gentx_dir}
echo "Copying genesis file to other nodes" echo "Copying genesis file to other nodes"
# Note: we should be using --create-network --genesis-file ${genesis_file} for this rather than copying directly into the network dir
# Note: start at node 2 here because we're going to copy to node 1 # Note: start at node 2 here because we're going to copy to node 1
for (( i=2 ; i<=$node_count ; i++ )); for (( i=2 ; i<=$node_count ; i++ ));
do do

View File

@ -20,7 +20,9 @@ echo "Deleting network dirs on all nodes"
for (( i=1 ; i<=$node_count ; i++ )); for (( i=1 ; i<=$node_count ; i++ ));
do do
node_name=${machine_name_prefix}-${i}.${machine_domain} node_name=${machine_name_prefix}-${i}.${machine_domain}
change_dir_ownership ${node_name} ${node_network_dir}
echo "Deleting ${node_network_dir} on ${node_name}" echo "Deleting ${node_network_dir} on ${node_name}"
ssh ${ssh_user}@${node_name} rm -rf ${node_network_dir} ${local_gentx_dir} ssh ${ssh_user}@${node_name} rm -rf ${node_network_dir} ${local_gentx_dir}
done done
rm -rf ${local_gentx_dir}

View File

@ -40,3 +40,11 @@ function run_on_all_nodes() {
ssh ${ssh_user}@${machine_name} ${command_to_run} ssh ${ssh_user}@${machine_name} ${command_to_run}
done done
} }
function change_dir_ownership() {
local machine_name=$1
local directory_path=$2
local command_to_run="sudo chown \$USER: -R ${directory_path}"
echo "Running: ${command_to_run} on ${machine_name}"
ssh ${ssh_user}@${machine_name} ${command_to_run}
}