From b789e1705f076ec6aa01ceffbf5fbeebb02d8c0f Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Mon, 6 May 2024 10:55:04 +0200 Subject: [PATCH] feat: add enr/enode to apache (#589) --- main.star | 2 + src/apache/apache_launcher.star | 82 ++++++++++++++++++++ src/static_files/static_files.star | 3 + static_files/apache-config/enode.txt.tmpl | 3 + static_files/apache-config/enr.txt.tmpl | 3 + static_files/apache-config/enr_list.txt.tmpl | 3 + 6 files changed, 96 insertions(+) create mode 100644 static_files/apache-config/enode.txt.tmpl create mode 100644 static_files/apache-config/enr.txt.tmpl create mode 100644 static_files/apache-config/enr_list.txt.tmpl diff --git a/main.star b/main.star index ba55cef75..5f45165cc 100644 --- a/main.star +++ b/main.star @@ -492,6 +492,8 @@ def run(plan, args={}): apache.launch_apache( plan, el_cl_data_files_artifact_uuid, + all_participants, + args_with_right_defaults.participants, global_node_selectors, ) plan.print("Successfully launched apache") diff --git a/src/apache/apache_launcher.star b/src/apache/apache_launcher.star index 7e4ec01f6..9f25b6a13 100644 --- a/src/apache/apache_launcher.star +++ b/src/apache/apache_launcher.star @@ -6,6 +6,9 @@ HTTP_PORT_ID = "http" HTTP_PORT_NUMBER = 80 APACHE_CONFIG_FILENAME = "index.html" +APACHE_ENR_FILENAME = "boot_enr.yaml" +APACHE_ENODE_FILENAME = "bootnode.txt" +APACHE_ENR_LIST_FILENAME = "bootstrap_nodes.txt" APACHE_CONFIG_MOUNT_DIRPATH_ON_SERVICE = "/usr/local/apache2/htdocs/" @@ -27,15 +30,60 @@ USED_PORTS = { def launch_apache( plan, el_cl_genesis_data, + participant_contexts, + participant_configs, global_node_selectors, ): config_files_artifact_name = plan.upload_files( src=static_files.APACHE_CONFIG_FILEPATH, name="apache-config" ) + all_cl_client_info = [] + all_el_client_info = [] + for index, participant in enumerate(participant_contexts): + _, cl_client, el_client, _ = shared_utils.get_client_names( + participant, index, participant_contexts, participant_configs + ) + all_cl_client_info.append(new_cl_client_info(cl_client.enr)) + all_el_client_info.append(new_el_client_info(el_client.enode)) + + template_data = new_config_template_data( + all_cl_client_info, + all_el_client_info, + ) + + enr_template_and_data = shared_utils.new_template_and_data( + read_file(static_files.APACHE_ENR_FILEPATH), + template_data, + ) + + enr_list_template_and_data = shared_utils.new_template_and_data( + read_file(static_files.APACHE_ENR_LIST_FILEPATH), + template_data, + ) + + enode_template_and_data = shared_utils.new_template_and_data( + read_file(static_files.APACHE_ENODE_FILEPATH), + template_data, + ) + + template_and_data_by_rel_dest_filepath = {} + template_and_data_by_rel_dest_filepath[APACHE_ENR_FILENAME] = enr_template_and_data + template_and_data_by_rel_dest_filepath[ + APACHE_ENR_LIST_FILENAME + ] = enr_list_template_and_data + template_and_data_by_rel_dest_filepath[ + APACHE_ENODE_FILENAME + ] = enode_template_and_data + + bootstrap_info_files_artifact_name = plan.render_templates( + template_and_data_by_rel_dest_filepath, "bootstrap-info" + ) + config = get_config( config_files_artifact_name, el_cl_genesis_data, + bootstrap_info_files_artifact_name, global_node_selectors, ) @@ -45,10 +93,13 @@ def launch_apache( def get_config( config_files_artifact_name, el_cl_genesis_data, + bootstrap_info_files_artifact_name, node_selectors, ): files = { constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS: el_cl_genesis_data, + constants.GENESIS_DATA_MOUNTPOINT_ON_CLIENTS + + "/boot": bootstrap_info_files_artifact_name, APACHE_CONFIG_MOUNT_DIRPATH_ON_SERVICE: config_files_artifact_name, } @@ -58,6 +109,18 @@ def get_config( ">>", "/usr/local/apache2/conf/httpd.conf", "&&", + "mv", + "/network-configs/boot/" + APACHE_ENR_FILENAME, + "/network-configs/" + APACHE_ENR_FILENAME, + "&&", + "mv", + "/network-configs/boot/" + APACHE_ENODE_FILENAME, + "/network-configs/" + APACHE_ENODE_FILENAME, + "&&", + "mv", + "/network-configs/boot/" + APACHE_ENR_LIST_FILENAME, + "/network-configs/" + APACHE_ENR_LIST_FILENAME, + "&&", "tar", "-czvf", "/usr/local/apache2/htdocs/network-config.tar", @@ -82,3 +145,22 @@ def get_config( max_memory=MAX_MEMORY, node_selectors=node_selectors, ) + + +def new_config_template_data(cl_client, el_client): + return { + "CLClient": cl_client, + "ELClient": el_client, + } + + +def new_cl_client_info(enr): + return { + "Enr": enr, + } + + +def new_el_client_info(enode): + return { + "Enode": enode, + } diff --git a/src/static_files/static_files.star b/src/static_files/static_files.star index a6e50f1de..08b1ecd85 100644 --- a/src/static_files/static_files.star +++ b/src/static_files/static_files.star @@ -17,6 +17,9 @@ VALIDATOR_RANGES_CONFIG_TEMPLATE_FILEPATH = ( ) APACHE_CONFIG_FILEPATH = STATIC_FILES_DIRPATH + "/apache-config/index.html" +APACHE_ENR_FILEPATH = STATIC_FILES_DIRPATH + "/apache-config/enr.txt.tmpl" +APACHE_ENR_LIST_FILEPATH = STATIC_FILES_DIRPATH + "/apache-config/enr_list.txt.tmpl" +APACHE_ENODE_FILEPATH = STATIC_FILES_DIRPATH + "/apache-config/enode.txt.tmpl" DORA_CONFIG_TEMPLATE_FILEPATH = STATIC_FILES_DIRPATH + "/dora-config/config.yaml.tmpl" DUGTRIO_CONFIG_TEMPLATE_FILEPATH = ( diff --git a/static_files/apache-config/enode.txt.tmpl b/static_files/apache-config/enode.txt.tmpl new file mode 100644 index 000000000..62889f4f6 --- /dev/null +++ b/static_files/apache-config/enode.txt.tmpl @@ -0,0 +1,3 @@ +{{ range $elClient := .ELClient }} +{{ $elClient.Enode }} +{{- end }} diff --git a/static_files/apache-config/enr.txt.tmpl b/static_files/apache-config/enr.txt.tmpl new file mode 100644 index 000000000..7d5a60053 --- /dev/null +++ b/static_files/apache-config/enr.txt.tmpl @@ -0,0 +1,3 @@ +{{ range $clClient := .CLClient }} +- {{ $clClient.Enr }} +{{- end }} diff --git a/static_files/apache-config/enr_list.txt.tmpl b/static_files/apache-config/enr_list.txt.tmpl new file mode 100644 index 000000000..15345a762 --- /dev/null +++ b/static_files/apache-config/enr_list.txt.tmpl @@ -0,0 +1,3 @@ +{{ range $clClient := .CLClient }} +{{ $clClient.Enr }} +{{- end }}