diff --git a/.github/tests/minimal-fulu.yaml b/.github/tests/minimal-fulu.yaml index d5ce457f8..aaf1af0d8 100644 --- a/.github/tests/minimal-fulu.yaml +++ b/.github/tests/minimal-fulu.yaml @@ -1,41 +1,40 @@ participants: - el_type: geth - el_image: ethpandaops/geth:fusaka-devnet-2 + el_image: ethpandaops/geth:fusaka-devnet-3 el_extra_params: ["--miner.extradata=lighthouseFromLocal"] cl_type: lighthouse - cl_image: ethpandaops/lighthouse:fusaka-devnet-2 + cl_image: ethpandaops/lighthouse:fusaka-devnet-3 supernode: true - el_type: nethermind - el_image: ethpandaops/nethermind:fusaka-devnet-2 + el_image: ethpandaops/nethermind:fusaka-devnet-3 el_extra_params: ["--Blocks.ExtraData=TekuFromLocal"] cl_type: teku - cl_image: ethpandaops/teku:fusaka-devnet-2 + cl_image: ethpandaops/teku:fusaka-devnet-3 - el_type: reth - el_image: ethpandaops/reth:fusaka-devnet-2 + el_image: ethpandaops/reth:fusaka-devnet-3 el_extra_params: ["--builder.extradata=LodestarFromLocal"] cl_type: lodestar - cl_image: ethpandaops/lodestar:fusaka-devnet-2 + cl_image: ethpandaops/lodestar:fusaka-devnet-3 - el_type: geth - el_image: ethpandaops/geth:fusaka-devnet-2 + el_image: ethpandaops/geth:fusaka-devnet-3 el_extra_params: ["--miner.extradata=PrysmFromLocal"] cl_type: prysm - cl_image: ethpandaops/prysm-beacon-chain:fusaka-devnet-2 - vc_image: ethpandaops/prysm-validator:fusaka-devnet-2 + cl_image: ethpandaops/prysm-beacon-chain:fusaka-devnet-3-minimal - el_type: nethermind - el_image: ethpandaops/nethermind:fusaka-devnet-2 + el_image: ethpandaops/nethermind:fusaka-devnet-3 el_extra_params: ["--Blocks.ExtraData=NimbusFromLocal"] cl_type: nimbus - cl_image: ethpandaops/nimbus-eth2:fusaka-devnet-2 + cl_image: ethpandaops/nimbus-eth2:fusaka-devnet-3-minimal - el_type: reth - el_image: ethpandaops/reth:fusaka-devnet-2 + el_image: ethpandaops/reth:fusaka-devnet-3 el_extra_params: ["--builder.extradata=GrandineFromLocal"] cl_type: grandine - cl_image: ethpandaops/grandine:fusaka-devnet-2 + cl_image: ethpandaops/grandine:fusaka-devnet-3-minimal additional_services: - dora - tx_fuzz diff --git a/.github/tests/mix-public.yaml b/.github/tests/mix-public.yaml index 27ceda329..f9ed10941 100644 --- a/.github/tests/mix-public.yaml +++ b/.github/tests/mix-public.yaml @@ -9,9 +9,6 @@ participants: cl_type: lighthouse - el_type: reth cl_type: lodestar - - el_type: nimbus - cl_type: teku - el_image: statusim/nimbus-eth1:master - el_type: ethrex cl_type: grandine port_publisher: diff --git a/main.star b/main.star index b6bfdad9c..f6d5a5ad6 100644 --- a/main.star +++ b/main.star @@ -262,6 +262,7 @@ def run(plan, args={}): plan, all_el_contexts, global_node_selectors, + global_tolerations, ) fuzz_target = "http://{0}:{1}".format( broadcaster_service.ip_address, @@ -298,6 +299,7 @@ def run(plan, args={}): jwt_file, args_with_right_defaults.global_log_level, global_node_selectors, + global_tolerations, args_with_right_defaults.mev_params, ) mev_endpoints.append(endpoint) @@ -330,6 +332,7 @@ def run(plan, args={}): args_with_right_defaults.port_publisher, num_participants, global_node_selectors, + global_tolerations, ) elif args_with_right_defaults.mev_type == constants.MEV_RS_MEV_TYPE: endpoint, relay_ip_address, relay_port = mev_rs_mev_relay.launch_mev_relay( @@ -341,6 +344,7 @@ def run(plan, args={}): args_with_right_defaults.port_publisher, num_participants, global_node_selectors, + global_tolerations, ) else: fail("Invalid MEV type") @@ -387,6 +391,7 @@ def run(plan, args={}): args_with_right_defaults.port_publisher, index, global_node_selectors, + global_tolerations, ) elif args_with_right_defaults.mev_type == constants.MEV_RS_MEV_TYPE: plan.print("Launching mev-rs mev boost") @@ -411,6 +416,7 @@ def run(plan, args={}): args_with_right_defaults.port_publisher, index, global_node_selectors, + global_tolerations, ) elif ( args_with_right_defaults.mev_type == constants.COMMIT_BOOST_MEV_TYPE @@ -437,6 +443,7 @@ def run(plan, args={}): args_with_right_defaults.port_publisher, index, global_node_selectors, + global_tolerations, final_genesis_timestamp, ) else: @@ -468,6 +475,7 @@ def run(plan, args={}): fuzz_target, tx_fuzz_params, global_node_selectors, + global_tolerations, ) plan.print("Successfully launched tx-fuzz") elif additional_service == "forkmon": @@ -480,6 +488,7 @@ def run(plan, args={}): forkmon_config_template, all_el_contexts, global_node_selectors, + global_tolerations, args_with_right_defaults.port_publisher, index, args_with_right_defaults.docker_cache_params, @@ -492,6 +501,7 @@ def run(plan, args={}): all_el_contexts, persistent, global_node_selectors, + global_tolerations, args_with_right_defaults.port_publisher, index, args_with_right_defaults.docker_cache_params, @@ -511,6 +521,7 @@ def run(plan, args={}): network_params, dora_params, global_node_selectors, + global_tolerations, mev_endpoints, mev_endpoint_names, args_with_right_defaults.port_publisher, @@ -530,6 +541,7 @@ def run(plan, args={}): args_with_right_defaults.participants, network_params, global_node_selectors, + global_tolerations, args_with_right_defaults.port_publisher, index, args_with_right_defaults.docker_cache_params, @@ -547,6 +559,7 @@ def run(plan, args={}): args_with_right_defaults.participants, network_params, global_node_selectors, + global_tolerations, args_with_right_defaults.port_publisher, index, args_with_right_defaults.docker_cache_params, @@ -562,6 +575,7 @@ def run(plan, args={}): network_params, persistent, global_node_selectors, + global_tolerations, args_with_right_defaults.port_publisher, index, args_with_right_defaults.docker_cache_params, @@ -580,6 +594,7 @@ def run(plan, args={}): el_cl_data_files_artifact_uuid, network_params, global_node_selectors, + global_tolerations, final_genesis_timestamp, args_with_right_defaults.port_publisher, index, @@ -599,6 +614,7 @@ def run(plan, args={}): el_cl_data_files_artifact_uuid, network_params, global_node_selectors, + global_tolerations, final_genesis_timestamp, args_with_right_defaults.port_publisher, index, @@ -616,6 +632,7 @@ def run(plan, args={}): args_with_right_defaults.port_publisher, index, global_node_selectors, + global_tolerations, args_with_right_defaults.docker_cache_params, ) plan.print("Successfully launched apache") @@ -630,6 +647,7 @@ def run(plan, args={}): args_with_right_defaults.port_publisher, index, global_node_selectors, + global_tolerations, args_with_right_defaults.docker_cache_params, ) plan.print("Successfully launched nginx") @@ -646,6 +664,7 @@ def run(plan, args={}): all_el_contexts, persistent, global_node_selectors, + global_tolerations, args_with_right_defaults.port_publisher, index, ) @@ -676,6 +695,7 @@ def run(plan, args={}): grafana_dashboards_config_template, prometheus_private_url, global_node_selectors, + global_tolerations, args_with_right_defaults.grafana_params, args_with_right_defaults.port_publisher, index, @@ -701,6 +721,7 @@ def run(plan, args={}): args_with_right_defaults.port_publisher, index, global_node_selectors, + global_tolerations, args_with_right_defaults.docker_cache_params, ) plan.print("Successfully launched assertoor") @@ -712,6 +733,7 @@ def run(plan, args={}): fuzz_target, args_with_right_defaults.custom_flood_params, global_node_selectors, + global_tolerations, args_with_right_defaults.docker_cache_params, ) elif additional_service == "spamoor": @@ -731,6 +753,7 @@ def run(plan, args={}): args_with_right_defaults.participants, args_with_right_defaults.spamoor_params, global_node_selectors, + global_tolerations, args_with_right_defaults.network_params, args_with_right_defaults.port_publisher, index, @@ -762,6 +785,7 @@ def run(plan, args={}): grafana_dashboards_config_template, prometheus_private_url, global_node_selectors, + global_tolerations, args_with_right_defaults.grafana_params, args_with_right_defaults.port_publisher, prometheus_grafana_index, diff --git a/src/apache/apache_launcher.star b/src/apache/apache_launcher.star index 6a4f5ed3e..cb086b9b8 100644 --- a/src/apache/apache_launcher.star +++ b/src/apache/apache_launcher.star @@ -1,6 +1,7 @@ shared_utils = import_module("../shared_utils/shared_utils.star") static_files = import_module("../static_files/static_files.star") constants = import_module("../package_io/constants.star") +input_parser = import_module("../package_io/input_parser.star") SERVICE_NAME = "apache" HTTP_PORT_ID = "http" HTTP_PORT_NUMBER = 80 @@ -36,12 +37,15 @@ def launch_apache( port_publisher, index, global_node_selectors, + global_tolerations, docker_cache_params, ): config_files_artifact_name = plan.upload_files( src=static_files.APACHE_CONFIG_FILEPATH, name="apache-config" ) + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + public_ports = shared_utils.get_additional_service_standard_public_port( port_publisher, constants.HTTP_PORT_ID, @@ -104,6 +108,7 @@ def launch_apache( public_ports, bootstrap_info_files_artifact_name, global_node_selectors, + tolerations, docker_cache_params, ) @@ -116,6 +121,7 @@ def get_config( public_ports, bootstrap_info_files_artifact_name, node_selectors, + tolerations, docker_cache_params, ): files = { @@ -172,6 +178,7 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) diff --git a/src/assertoor/assertoor_launcher.star b/src/assertoor/assertoor_launcher.star index fac87d0b0..fe9a88316 100644 --- a/src/assertoor/assertoor_launcher.star +++ b/src/assertoor/assertoor_launcher.star @@ -1,6 +1,7 @@ shared_utils = import_module("../shared_utils/shared_utils.star") static_files = import_module("../static_files/static_files.star") constants = import_module("../package_io/constants.star") +input_parser = import_module("../package_io/input_parser.star") SERVICE_NAME = "assertoor" HTTP_PORT_ID = "http" @@ -39,6 +40,7 @@ def launch_assertoor( port_publisher, index, global_node_selectors, + global_tolerations, docker_cache_params, ): all_client_info = [] @@ -53,6 +55,8 @@ def launch_assertoor( 0, ) + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + for index, participant in enumerate(participant_contexts): ( full_name, @@ -113,6 +117,7 @@ def launch_assertoor( assertoor_params, public_ports, global_node_selectors, + tolerations, docker_cache_params, ) @@ -126,6 +131,7 @@ def get_config( assertoor_params, public_ports, node_selectors, + tolerations, docker_cache_params, ): config_file_path = shared_utils.path_join( @@ -166,6 +172,7 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) diff --git a/src/blobber/blobber_launcher.star b/src/blobber/blobber_launcher.star index 92f3bdebf..266e69c73 100644 --- a/src/blobber/blobber_launcher.star +++ b/src/blobber/blobber_launcher.star @@ -41,7 +41,10 @@ def launch( beacon_http_url, participant, node_selectors, + global_tolerations, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + blobber_service_name = "{0}".format(service_name) blobber_config = get_config( @@ -50,6 +53,7 @@ def launch( beacon_http_url, participant, node_selectors, + tolerations, ) blobber_service = plan.add_service(blobber_service_name, blobber_config) @@ -65,6 +69,7 @@ def get_config( beacon_http_url, participant, node_selectors, + tolerations, ): validator_root_dirpath = shared_utils.path_join( VALIDATOR_KEYS_MOUNTPOINT_ON_CLIENTS, @@ -95,4 +100,5 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) diff --git a/src/blobscan/blobscan_launcher.star b/src/blobscan/blobscan_launcher.star index 076116e6f..27a83c1f5 100644 --- a/src/blobscan/blobscan_launcher.star +++ b/src/blobscan/blobscan_launcher.star @@ -2,6 +2,7 @@ shared_utils = import_module("../shared_utils/shared_utils.star") postgres = import_module("github.com/kurtosis-tech/postgres-package/main.star") redis = import_module("github.com/kurtosis-tech/redis-package/main.star") constants = import_module("../package_io/constants.star") +input_parser = import_module("../package_io/input_parser.star") WEB_SERVICE_NAME = "blobscan-web" API_SERVICE_NAME = "blobscan-api" @@ -83,11 +84,13 @@ def launch_blobscan( network_params, persistent, global_node_selectors, + global_tolerations, port_publisher, additional_service_index, docker_cache_params, ): node_selectors = global_node_selectors + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) beacon_node_rpc_uri = "{0}".format(cl_contexts[0].beacon_http_url) execution_node_rpc_uri = "{0}".format(el_contexts[0].rpc_http_url) @@ -103,6 +106,7 @@ def launch_blobscan( image=shared_utils.docker_cache_image_calc( docker_cache_params, "library/postgres:alpine" ), + tolerations=tolerations, ) redis_output = redis.run( @@ -117,6 +121,7 @@ def launch_blobscan( image=shared_utils.docker_cache_image_calc( docker_cache_params, "library/redis:alpine" ), + tolerations=tolerations, ) api_config = get_api_config( @@ -125,6 +130,7 @@ def launch_blobscan( network_params.network, redis_output.url, node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -142,6 +148,7 @@ def launch_blobscan( beacon_node_rpc_uri, execution_node_rpc_uri, node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -154,6 +161,7 @@ def launch_blobscan( execution_node_rpc_uri, network_params.network, node_selectors, + tolerations, docker_cache_params, ) plan.add_service(INDEXER_SERVICE_NAME, indexer_config) @@ -165,6 +173,7 @@ def get_api_config( network_name, redis_url, node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -213,6 +222,7 @@ def get_api_config( min_memory=API_MIN_MEMORY, max_memory=API_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) @@ -222,6 +232,7 @@ def get_web_config( beacon_node_rpc, execution_node_rpc, node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -259,6 +270,7 @@ def get_web_config( min_memory=WEB_MIN_MEMORY, max_memory=WEB_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) @@ -268,6 +280,7 @@ def get_indexer_config( execution_node_rpc, network_name, node_selectors, + tolerations, docker_cache_params, ): IMAGE_NAME = "blossomlabs/blobscan-indexer:master" @@ -293,4 +306,5 @@ def get_indexer_config( min_memory=INDEX_MIN_MEMORY, max_memory=INDEX_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) diff --git a/src/blockscout/blockscout_launcher.star b/src/blockscout/blockscout_launcher.star index 1aa3eb64d..edbb55c2f 100644 --- a/src/blockscout/blockscout_launcher.star +++ b/src/blockscout/blockscout_launcher.star @@ -1,6 +1,7 @@ shared_utils = import_module("../shared_utils/shared_utils.star") constants = import_module("../package_io/constants.star") postgres = import_module("github.com/kurtosis-tech/postgres-package/main.star") +input_parser = import_module("../package_io/input_parser.star") POSTGRES_IMAGE = "library/postgres:alpine" @@ -66,12 +67,14 @@ def launch_blockscout( el_contexts, persistent, global_node_selectors, + global_tolerations, port_publisher, additional_service_index, docker_cache_params, blockscout_params, network_params, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) postgres_output = postgres.run( plan, service_name="{}-postgres".format(SERVICE_NAME_BLOCKSCOUT), @@ -80,6 +83,7 @@ def launch_blockscout( persistent=persistent, node_selectors=global_node_selectors, image=shared_utils.docker_cache_image_calc(docker_cache_params, POSTGRES_IMAGE), + tolerations=tolerations, ) el_context = el_contexts[0] @@ -90,6 +94,7 @@ def launch_blockscout( config_verif = get_config_verif( global_node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -107,6 +112,7 @@ def launch_blockscout( verif_url, el_client_name, global_node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -126,6 +132,7 @@ def launch_blockscout( blockscout_params, network_params, global_node_selectors, + tolerations, blockscout_service, port_publisher, ) @@ -135,6 +142,7 @@ def launch_blockscout( def get_config_verif( node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -164,6 +172,7 @@ def get_config_verif( min_memory=BLOCKSCOUT_VERIF_MIN_MEMORY, max_memory=BLOCKSCOUT_VERIF_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) @@ -173,6 +182,7 @@ def get_config_backend( verif_url, el_client_name, node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -230,6 +240,7 @@ def get_config_backend( min_memory=BLOCKSCOUT_MIN_MEMORY, max_memory=BLOCKSCOUT_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) @@ -240,6 +251,7 @@ def get_config_frontend( blockscout_params, network_params, node_selectors, + tolerations, blockscout_service, port_publisher, ): @@ -279,4 +291,5 @@ def get_config_frontend( min_memory=BLOCKSCOUT_MIN_MEMORY, max_memory=BLOCKSCOUT_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) diff --git a/src/blutgang/blutgang_launcher.star b/src/blutgang/blutgang_launcher.star index 8f0989b3c..171eaa808 100644 --- a/src/blutgang/blutgang_launcher.star +++ b/src/blutgang/blutgang_launcher.star @@ -1,5 +1,6 @@ shared_utils = import_module("../shared_utils/shared_utils.star") constants = import_module("../package_io/constants.star") +input_parser = import_module("../package_io/input_parser.star") SERVICE_NAME = "blutgang" HTTP_PORT_NUMBER = 3000 @@ -39,10 +40,13 @@ def launch_blutgang( participant_configs, network_params, global_node_selectors, + global_tolerations, port_publisher, additional_service_index, docker_cache_params, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + all_el_client_info = [] for index, participant in enumerate(participant_contexts): full_name, _, el_client, _ = shared_utils.get_client_names( @@ -75,6 +79,7 @@ def launch_blutgang( config_files_artifact_name, network_params, global_node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -87,6 +92,7 @@ def get_config( config_files_artifact_name, network_params, node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -123,6 +129,7 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ready_conditions=ReadyCondition( recipe=GetHttpRequestRecipe( port_id="admin", diff --git a/src/broadcaster/broadcaster.star b/src/broadcaster/broadcaster.star index 7e7d0fca9..d7a3d5c88 100644 --- a/src/broadcaster/broadcaster.star +++ b/src/broadcaster/broadcaster.star @@ -1,3 +1,4 @@ +input_parser = import_module("../package_io/input_parser.star") IMAGE_NAME = "nethermind/broadcaster:latest" SERVICE_NAME = "broadcaster" PORT = 8545 @@ -9,14 +10,18 @@ MIN_MEMORY = 128 MAX_MEMORY = 2048 -def launch_broadcaster(plan, all_el_contexts, global_node_selectors): - config = get_config(all_el_contexts, global_node_selectors) +def launch_broadcaster( + plan, all_el_contexts, global_node_selectors, global_tolerations +): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + config = get_config(all_el_contexts, global_node_selectors, tolerations) return plan.add_service(SERVICE_NAME, config) def get_config( all_el_contexts, node_selectors, + tolerations, ): return ServiceConfig( image=IMAGE_NAME, @@ -29,4 +34,5 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) diff --git a/src/cl/cl_launcher.star b/src/cl/cl_launcher.star index a634ea559..9cd09c7ba 100644 --- a/src/cl/cl_launcher.star +++ b/src/cl/cl_launcher.star @@ -164,6 +164,7 @@ def launch( snooper_service_name, el_context, node_selectors, + global_tolerations, args_with_right_defaults.port_publisher, global_other_index, args_with_right_defaults.docker_cache_params, diff --git a/src/dora/dora_launcher.star b/src/dora/dora_launcher.star index 97b4a5b4f..b82a1a445 100644 --- a/src/dora/dora_launcher.star +++ b/src/dora/dora_launcher.star @@ -1,5 +1,6 @@ shared_utils = import_module("../shared_utils/shared_utils.star") constants = import_module("../package_io/constants.star") +input_parser = import_module("../package_io/input_parser.star") SERVICE_NAME = "dora" HTTP_PORT_NUMBER = 8080 @@ -34,12 +35,15 @@ def launch_dora( network_params, dora_params, global_node_selectors, + global_tolerations, mev_endpoints, mev_endpoint_names, port_publisher, additional_service_index, docker_cache_params, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + all_cl_client_info = [] all_el_client_info = [] for index, participant in enumerate(participant_contexts): @@ -106,6 +110,7 @@ def launch_dora( network_params, dora_params, global_node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -119,6 +124,7 @@ def get_config( network_params, dora_params, node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -163,6 +169,7 @@ def get_config( ) + "ethpandaops/dora:eip7805-support" ) + return ServiceConfig( image=IMAGE_NAME, ports=USED_PORTS, @@ -178,6 +185,7 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) diff --git a/src/dugtrio/dugtrio_launcher.star b/src/dugtrio/dugtrio_launcher.star index f868cf1ed..7eb799405 100644 --- a/src/dugtrio/dugtrio_launcher.star +++ b/src/dugtrio/dugtrio_launcher.star @@ -1,5 +1,6 @@ shared_utils = import_module("../shared_utils/shared_utils.star") constants = import_module("../package_io/constants.star") +input_parser = import_module("../package_io/input_parser.star") SERVICE_NAME = "dugtrio" HTTP_PORT_NUMBER = 8080 @@ -32,10 +33,13 @@ def launch_dugtrio( participant_configs, network_params, global_node_selectors, + global_tolerations, port_publisher, additional_service_index, docker_cache_params, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + all_cl_client_info = [] for index, participant in enumerate(participant_contexts): full_name, cl_client, _, _ = shared_utils.get_client_names( @@ -65,6 +69,7 @@ def launch_dugtrio( config_files_artifact_name, network_params, global_node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -77,6 +82,7 @@ def get_config( config_files_artifact_name, network_params, node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -109,6 +115,7 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ready_conditions=ReadyCondition( recipe=GetHttpRequestRecipe( port_id="http", diff --git a/src/ethereum_metrics_exporter/ethereum_metrics_exporter_launcher.star b/src/ethereum_metrics_exporter/ethereum_metrics_exporter_launcher.star index 4ad9a48bd..3278ec5a0 100644 --- a/src/ethereum_metrics_exporter/ethereum_metrics_exporter_launcher.star +++ b/src/ethereum_metrics_exporter/ethereum_metrics_exporter_launcher.star @@ -3,6 +3,7 @@ static_files = import_module("../static_files/static_files.star") ethereum_metrics_exporter_context = import_module( "../ethereum_metrics_exporter/ethereum_metrics_exporter_context.star" ) +input_parser = import_module("../package_io/input_parser.star") HTTP_PORT_ID = "http" METRICS_PORT_NUMBER = 9090 @@ -27,11 +28,13 @@ def launch( el_context, cl_context, node_selectors, + global_tolerations, port_publisher, global_other_index, docker_cache_params, persistent, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) public_ports = shared_utils.get_other_public_port( port_publisher, HTTP_PORT_ID, @@ -89,6 +92,7 @@ def launch( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ), ) diff --git a/src/forkmon/forkmon_launcher.star b/src/forkmon/forkmon_launcher.star index a8bf174b3..75a031fae 100644 --- a/src/forkmon/forkmon_launcher.star +++ b/src/forkmon/forkmon_launcher.star @@ -1,5 +1,6 @@ shared_utils = import_module("../shared_utils/shared_utils.star") constants = import_module("../package_io/constants.star") +input_parser = import_module("../package_io/input_parser.star") SERVICE_NAME = "forkmon" IMAGE_NAME = "ethpandaops/execution-monitor:master" @@ -30,10 +31,13 @@ def launch_forkmon( config_template, el_contexts, global_node_selectors, + global_tolerations, port_publisher, additional_service_index, docker_cache_params, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + all_el_client_info = [] for client in el_contexts: client_info = new_el_client_info( @@ -56,6 +60,7 @@ def launch_forkmon( config = get_config( config_files_artifact_name, global_node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -67,6 +72,7 @@ def launch_forkmon( def get_config( config_files_artifact_name, node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -98,6 +104,7 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) diff --git a/src/forky/forky_launcher.star b/src/forky/forky_launcher.star index e47795dbc..c9533d01f 100644 --- a/src/forky/forky_launcher.star +++ b/src/forky/forky_launcher.star @@ -1,5 +1,6 @@ shared_utils = import_module("../shared_utils/shared_utils.star") constants = import_module("../package_io/constants.star") +input_parser = import_module("../package_io/input_parser.star") SERVICE_NAME = "forky" @@ -35,11 +36,14 @@ def launch_forky( el_cl_data_files_artifact_uuid, network_params, global_node_selectors, + global_tolerations, final_genesis_timestamp, port_publisher, additional_service_index, docker_cache_params, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + all_cl_client_info = [] all_el_client_info = [] for index, participant in enumerate(participant_contexts): @@ -87,6 +91,7 @@ def launch_forky( el_cl_data_files_artifact_uuid, network_params, global_node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -100,6 +105,7 @@ def get_config( el_cl_data_files_artifact_uuid, network_params, node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -136,6 +142,7 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) diff --git a/src/full_beaconchain/full_beaconchain_launcher.star b/src/full_beaconchain/full_beaconchain_launcher.star index 1fb77d890..4435ea3bb 100644 --- a/src/full_beaconchain/full_beaconchain_launcher.star +++ b/src/full_beaconchain/full_beaconchain_launcher.star @@ -2,6 +2,7 @@ shared_utils = import_module("../shared_utils/shared_utils.star") postgres = import_module("github.com/kurtosis-tech/postgres-package/main.star") redis = import_module("github.com/kurtosis-tech/redis-package/main.star") constants = import_module("../package_io/constants.star") +input_parser = import_module("../package_io/input_parser.star") IMAGE_NAME = "gobitfly/eth2-beaconchain-explorer:latest" POSTGRES_PORT_ID = "postgres" @@ -103,9 +104,11 @@ def launch_full_beacon( el_contexts, persistent, global_node_selectors, + global_tolerations, port_publisher, additional_service_index, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) node_selectors = global_node_selectors postgres_output = postgres.run( plan, @@ -120,6 +123,7 @@ def launch_full_beacon( max_memory=POSTGRES_MAX_MEMORY, persistent=persistent, node_selectors=node_selectors, + tolerations=tolerations, ) redis_output = redis.run( plan, @@ -130,12 +134,13 @@ def launch_full_beacon( min_memory=REDIS_MIN_MEMORY, max_memory=REDIS_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) # TODO perhaps create a new service for the littlebigtable little_bigtable = plan.add_service( name="beaconchain-littlebigtable", config=get_little_bigtable_config( - node_selectors, port_publisher, additional_service_index + node_selectors, tolerations, port_publisher, additional_service_index ), ) @@ -186,6 +191,7 @@ def launch_full_beacon( min_memory=INIT_MIN_MEMORY, max_memory=INIT_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ), ) @@ -239,6 +245,7 @@ def launch_full_beacon( min_memory=INDEXER_MIN_MEMORY, max_memory=INDEXER_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ), ) # Start the eth1indexer @@ -264,6 +271,7 @@ def launch_full_beacon( min_memory=ETH1INDEXER_MIN_MEMORY, max_memory=ETH1INDEXER_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ), ) @@ -282,6 +290,7 @@ def launch_full_beacon( min_memory=REWARDSEXPORTER_MIN_MEMORY, max_memory=REWARDSEXPORTER_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ), ) @@ -303,6 +312,7 @@ def launch_full_beacon( min_memory=STATISTICS_MIN_MEMORY, max_memory=STATISTICS_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ), ) @@ -321,19 +331,24 @@ def launch_full_beacon( min_memory=FDU_MIN_MEMORY, max_memory=FDU_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ), ) frontend = plan.add_service( name="beaconchain-frontend", config=get_frontend_config( - files, node_selectors, port_publisher, additional_service_index + files, + node_selectors, + global_tolerations, + port_publisher, + additional_service_index, ), ) def get_little_bigtable_config( - node_selectors, port_publisher, additional_service_index + node_selectors, tolerations, port_publisher, additional_service_index ): public_ports = shared_utils.get_additional_service_standard_public_port( port_publisher, @@ -354,11 +369,12 @@ def get_little_bigtable_config( min_memory=LITTLE_BIGTABLE_MIN_MEMORY, max_memory=LITTLE_BIGTABLE_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) def get_frontend_config( - files, node_selectors, port_publisher, additional_service_index + files, node_selectors, tolerations, port_publisher, additional_service_index ): public_ports = shared_utils.get_additional_service_standard_public_port( port_publisher, @@ -388,6 +404,7 @@ def get_frontend_config( min_memory=FRONTEND_MIN_MEMORY, max_memory=FRONTEND_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) diff --git a/src/grafana/grafana_launcher.star b/src/grafana/grafana_launcher.star index ea8d8aaa9..0052ee240 100644 --- a/src/grafana/grafana_launcher.star +++ b/src/grafana/grafana_launcher.star @@ -1,6 +1,7 @@ shared_utils = import_module("../shared_utils/shared_utils.star") static_files = import_module("../static_files/static_files.star") constants = import_module("../package_io/constants.star") +input_parser = import_module("../package_io/input_parser.star") SERVICE_NAME = "grafana" @@ -44,10 +45,13 @@ def launch_grafana( dashboard_providers_config_template, prometheus_private_url, global_node_selectors, + global_tolerations, grafana_params, port_publisher, index, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + ( grafana_config_artifacts_uuid, grafana_dashboards_artifacts_uuid, @@ -77,6 +81,7 @@ def launch_grafana( grafana_config_artifacts_uuid, merged_dashboards_artifact_name, global_node_selectors, + tolerations, grafana_params, public_ports, ) @@ -134,6 +139,7 @@ def get_config( grafana_config_artifacts_name, grafana_dashboards_artifacts_name, node_selectors, + tolerations, grafana_params, public_ports, ): @@ -156,6 +162,7 @@ def get_config( min_memory=grafana_params.min_mem, max_memory=grafana_params.max_mem, node_selectors=node_selectors, + tolerations=tolerations, public_ports=public_ports, ) diff --git a/src/mev/commit-boost/mev_boost/mev_boost_launcher.star b/src/mev/commit-boost/mev_boost/mev_boost_launcher.star index 6cf6c4709..8c398a7f1 100644 --- a/src/mev/commit-boost/mev_boost/mev_boost_launcher.star +++ b/src/mev/commit-boost/mev_boost/mev_boost_launcher.star @@ -32,8 +32,11 @@ def launch( port_publisher, index, global_node_selectors, + global_tolerations, final_genesis_timestamp, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + network = ( network if network in constants.PUBLIC_NETWORKS @@ -77,6 +80,7 @@ def launch( config_files_artifact_name, el_cl_genesis_data, global_node_selectors, + tolerations, public_ports, index, ) @@ -95,6 +99,7 @@ def get_config( config_file, el_cl_genesis_data, node_selectors, + tolerations, public_ports, participant_index, ): @@ -116,6 +121,7 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, labels={constants.NODE_INDEX_LABEL_KEY: str(participant_index + 1)}, ) diff --git a/src/mev/flashbots/mev_boost/mev_boost_launcher.star b/src/mev/flashbots/mev_boost/mev_boost_launcher.star index 0d419cfdd..378c7d27c 100644 --- a/src/mev/flashbots/mev_boost/mev_boost_launcher.star +++ b/src/mev/flashbots/mev_boost/mev_boost_launcher.star @@ -37,6 +37,7 @@ def launch( port_publisher, index, global_node_selectors, + global_tolerations, ): public_ports = shared_utils.get_mev_public_port( port_publisher, @@ -45,12 +46,15 @@ def launch( 0, ) + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + config = get_config( mev_boost_launcher, genesis_timestamp, mev_boost_image, mev_boost_args, global_node_selectors, + tolerations, participant, seconds_per_slot, public_ports, @@ -72,6 +76,7 @@ def get_config( mev_boost_image, mev_boost_args, node_selectors, + tolerations, participant, seconds_per_slot, public_ports, @@ -101,6 +106,7 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, labels=shared_utils.label_maker( client="mev-boost", client_type="mev", diff --git a/src/mev/flashbots/mev_custom_flood/mev_custom_flood_launcher.star b/src/mev/flashbots/mev_custom_flood/mev_custom_flood_launcher.star index 94ccabc39..accdc8560 100644 --- a/src/mev/flashbots/mev_custom_flood/mev_custom_flood_launcher.star +++ b/src/mev/flashbots/mev_custom_flood/mev_custom_flood_launcher.star @@ -1,4 +1,5 @@ shared_utils = import_module("../../../shared_utils/shared_utils.star") +input_parser = import_module("../../../package_io/input_parser.star") PYTHON_IMAGE = "ethpandaops/python-web3" CUSTOM_FLOOD_SERVICE_NAME = "mev-custom-flood" @@ -16,8 +17,10 @@ def spam_in_background( el_uri, params, global_node_selectors, + global_tolerations, docker_cache_params, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) sender_script = plan.upload_files(src="./sender.py", name="mev-custom-flood-sender") plan.add_service( @@ -38,6 +41,7 @@ def spam_in_background( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=global_node_selectors, + tolerations=tolerations, ), ) diff --git a/src/mev/flashbots/mev_relay/mev_relay_launcher.star b/src/mev/flashbots/mev_relay/mev_relay_launcher.star index 334dc4e24..8e2b443ea 100644 --- a/src/mev/flashbots/mev_relay/mev_relay_launcher.star +++ b/src/mev/flashbots/mev_relay/mev_relay_launcher.star @@ -2,6 +2,7 @@ redis_module = import_module("github.com/kurtosis-tech/redis-package/main.star") postgres_module = import_module("github.com/kurtosis-tech/postgres-package/main.star") constants = import_module("../../../package_io/constants.star") shared_utils = import_module("../../../shared_utils/shared_utils.star") +input_parser = import_module("../../../package_io/input_parser.star") MEV_RELAY_WEBSITE = "mev-relay-website" MEV_RELAY_ENDPOINT = "mev-relay-api" @@ -49,7 +50,9 @@ def launch_mev_relay( port_publisher, index, global_node_selectors, + global_tolerations, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) public_ports = shared_utils.get_mev_public_port( port_publisher, constants.HTTP_PORT_ID, @@ -66,6 +69,7 @@ def launch_mev_relay( min_memory=REDIS_MIN_MEMORY, max_memory=REDIS_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) # making the password postgres as the relay expects it to be postgres postgres = postgres_module.run( @@ -81,6 +85,7 @@ def launch_mev_relay( min_memory=POSTGRES_MIN_MEMORY, max_memory=POSTGRES_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) network_name = NETWORK_ID_TO_NAME.get(network_id, network_id) @@ -126,6 +131,7 @@ def launch_mev_relay( min_memory=RELAY_MIN_MEMORY, max_memory=RELAY_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ), ) @@ -168,6 +174,7 @@ def launch_mev_relay( min_memory=RELAY_MIN_MEMORY, max_memory=RELAY_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ), ) @@ -219,6 +226,7 @@ def launch_mev_relay( min_memory=RELAY_MIN_MEMORY, max_memory=RELAY_MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ), ) diff --git a/src/mev/flashbots/mock_mev/mock_mev_launcher.star b/src/mev/flashbots/mock_mev/mock_mev_launcher.star index c8ccc7dba..48a76ce33 100644 --- a/src/mev/flashbots/mock_mev/mock_mev_launcher.star +++ b/src/mev/flashbots/mock_mev/mock_mev_launcher.star @@ -1,4 +1,5 @@ constants = import_module("../../../package_io/constants.star") +input_parser = import_module("../../../package_io/input_parser.star") # Default image if none specified in mev_params @@ -19,8 +20,10 @@ def launch_mock_mev( jwt_file, global_log_level, global_node_selectors, + global_tolerations, mev_params, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) mock_builder = plan.add_service( name=MOCK_MEV_SERVICE_NAME, config=ServiceConfig( @@ -48,6 +51,7 @@ def launch_mock_mev( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=global_node_selectors, + tolerations=tolerations, ), ) return "http://{0}@{1}:{2}".format( diff --git a/src/mev/mev-rs/mev_boost/mev_boost_launcher.star b/src/mev/mev-rs/mev_boost/mev_boost_launcher.star index b63667888..5e087d06f 100644 --- a/src/mev/mev-rs/mev_boost/mev_boost_launcher.star +++ b/src/mev/mev-rs/mev_boost/mev_boost_launcher.star @@ -32,7 +32,10 @@ def launch( port_publisher, index, global_node_selectors, + global_tolerations, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + public_ports = shared_utils.get_mev_public_port( port_publisher, constants.HTTP_PORT_ID, @@ -81,6 +84,7 @@ def launch( config_files_artifact_name, el_cl_genesis_data, global_node_selectors, + tolerations, public_ports, index, ) @@ -99,6 +103,7 @@ def get_config( config_file, el_cl_genesis_data, node_selectors, + tolerations, public_ports, participant_index, ): @@ -119,6 +124,7 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, labels={constants.NODE_INDEX_LABEL_KEY: str(participant_index + 1)}, ) diff --git a/src/mev/mev-rs/mev_relay/mev_relay_launcher.star b/src/mev/mev-rs/mev_relay/mev_relay_launcher.star index ca7cc418f..d94501a77 100644 --- a/src/mev/mev-rs/mev_relay/mev_relay_launcher.star +++ b/src/mev/mev-rs/mev_relay/mev_relay_launcher.star @@ -32,7 +32,9 @@ def launch_mev_relay( port_publisher, index, global_node_selectors, + global_tolerations, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) node_selectors = global_node_selectors image = mev_params.mev_relay_image network = ( @@ -95,6 +97,7 @@ def launch_mev_relay( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, env_vars={"RUST_BACKTRACE": "1"}, ), ) diff --git a/src/nginx/nginx_launcher.star b/src/nginx/nginx_launcher.star index 942458a91..c6afafc59 100644 --- a/src/nginx/nginx_launcher.star +++ b/src/nginx/nginx_launcher.star @@ -1,6 +1,7 @@ shared_utils = import_module("../shared_utils/shared_utils.star") static_files = import_module("../static_files/static_files.star") constants = import_module("../package_io/constants.star") +input_parser = import_module("../package_io/input_parser.star") SERVICE_NAME = "nginx" HTTP_PORT_ID = "http" HTTP_PORT_NUMBER = 80 @@ -36,8 +37,11 @@ def launch_nginx( port_publisher, index, global_node_selectors, + global_tolerations, docker_cache_params, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + config_files_artifact_name = plan.upload_files( src=static_files.NGINX_CONFIG_FILEPATH, name="nginx-config" ) @@ -104,6 +108,7 @@ def launch_nginx( public_ports, bootstrap_info_files_artifact_name, global_node_selectors, + tolerations, docker_cache_params, ) @@ -116,6 +121,7 @@ def get_config( public_ports, bootstrap_info_files_artifact_name, node_selectors, + tolerations, docker_cache_params, ): files = { @@ -167,6 +173,7 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) diff --git a/src/participant_network.star b/src/participant_network.star index 3b73f52b3..fcd6d924a 100644 --- a/src/participant_network.star +++ b/src/participant_network.star @@ -199,6 +199,7 @@ def launch_participant_network( config.blobber_config.beacon_http_url, config.participant, config.blobber_config.node_selectors, + global_tolerations, ) # Store the blobber URL mapping @@ -288,6 +289,7 @@ def launch_participant_network( el_context, get_cl_context_with_blobber_url(cl_context), node_selectors, + global_tolerations, args_with_right_defaults.port_publisher, global_other_index, args_with_right_defaults.docker_cache_params, @@ -319,6 +321,7 @@ def launch_participant_network( network_params, pair_name, node_selectors, + global_tolerations, ) plan.print( "Successfully added {0} xatu sentry participants".format( @@ -340,6 +343,7 @@ def launch_participant_network( snooper_service_name, el_context, node_selectors, + global_tolerations, args_with_right_defaults.port_publisher, global_other_index, args_with_right_defaults.docker_cache_params, @@ -396,6 +400,7 @@ def launch_participant_network( snooper_service_name, get_cl_context_with_blobber_url(cl_context), node_selectors, + global_tolerations, args_with_right_defaults.port_publisher, global_other_index, args_with_right_defaults.docker_cache_params, diff --git a/src/shared_utils/shared_utils.star b/src/shared_utils/shared_utils.star index 58b073322..9e61be4cc 100644 --- a/src/shared_utils/shared_utils.star +++ b/src/shared_utils/shared_utils.star @@ -172,6 +172,7 @@ def get_network_name(network): def get_final_genesis_timestamp(plan, padding): result = plan.run_sh( description="Getting final genesis timestamp", + name="read-genesis-timestamp", run="echo -n $(($(date +%s) + " + str(padding) + "))", store=[StoreSpec(src="/tmp", name="final-genesis-timestamp")], ) diff --git a/src/snooper/snooper_beacon_launcher.star b/src/snooper/snooper_beacon_launcher.star index f6b0ebd61..42d0ebe98 100644 --- a/src/snooper/snooper_beacon_launcher.star +++ b/src/snooper/snooper_beacon_launcher.star @@ -26,10 +26,13 @@ def launch( service_name, cl_context, node_selectors, + global_tolerations, port_publisher, global_other_index, docker_cache_params, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + snooper_service_name = "{0}".format(service_name) public_ports = shared_utils.get_other_public_port( @@ -43,6 +46,7 @@ def launch( service_name, cl_context, node_selectors, + tolerations, docker_cache_params, public_ports, ) @@ -58,6 +62,7 @@ def get_config( service_name, cl_context, node_selectors, + tolerations, docker_cache_params, public_ports, ): @@ -83,4 +88,5 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) diff --git a/src/snooper/snooper_el_launcher.star b/src/snooper/snooper_el_launcher.star index c0dbba031..3a92b20b6 100644 --- a/src/snooper/snooper_el_launcher.star +++ b/src/snooper/snooper_el_launcher.star @@ -22,10 +22,13 @@ def launch_snooper( service_name, el_context, node_selectors, + global_tolerations, port_publisher, global_other_index, docker_cache_params, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + snooper_service_name = "{0}".format(service_name) if "engine" in snooper_service_name: @@ -57,6 +60,7 @@ def launch_snooper( service_name, el_context, node_selectors, + tolerations, docker_cache_params, snooper_used_ports, public_ports, @@ -74,6 +78,7 @@ def get_config( service_name, el_context, node_selectors, + tolerations, docker_cache_params, snooper_used_ports, public_ports, @@ -109,4 +114,5 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) diff --git a/src/spamoor/spamoor.star b/src/spamoor/spamoor.star index 8c8d051ad..bedab0a8e 100644 --- a/src/spamoor/spamoor.star +++ b/src/spamoor/spamoor.star @@ -1,5 +1,6 @@ shared_utils = import_module("../shared_utils/shared_utils.star") constants = import_module("../package_io/constants.star") +input_parser = import_module("../package_io/input_parser.star") SERVICE_NAME = "spamoor" HTTP_PORT_ID = "http" @@ -28,11 +29,14 @@ def launch_spamoor( participant_configs, spamoor_params, global_node_selectors, + global_tolerations, network_params, port_publisher, additional_service_index, osaka_time, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + spammers = [] for index, spammer in enumerate(spamoor_params.spammers): @@ -100,6 +104,7 @@ def launch_spamoor( prefunded_addresses, spamoor_params, global_node_selectors, + tolerations, network_params, port_publisher, additional_service_index, @@ -113,6 +118,7 @@ def get_config( prefunded_addresses, spamoor_params, node_selectors, + tolerations, network_params, port_publisher, additional_service_index, @@ -154,6 +160,7 @@ def get_config( min_memory=spamoor_params.min_mem, max_memory=spamoor_params.max_mem, node_selectors=node_selectors, + tolerations=tolerations, files={ SPAMOOR_CONFIG_MOUNT_DIRPATH_ON_SERVICE: config_files_artifact_name, }, diff --git a/src/tracoor/tracoor_launcher.star b/src/tracoor/tracoor_launcher.star index bdb112ff7..67c5cef45 100644 --- a/src/tracoor/tracoor_launcher.star +++ b/src/tracoor/tracoor_launcher.star @@ -1,5 +1,6 @@ shared_utils = import_module("../shared_utils/shared_utils.star") constants = import_module("../package_io/constants.star") +input_parser = import_module("../package_io/input_parser.star") IMAGE_NAME = "ethpandaops/tracoor:latest" SERVICE_NAME = "tracoor" @@ -33,11 +34,14 @@ def launch_tracoor( el_cl_data_files_artifact_uuid, network_params, global_node_selectors, + global_tolerations, final_genesis_timestamp, port_publisher, additional_service_index, docker_cache_params, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + all_client_info = [] for index, participant in enumerate(participant_contexts): full_name, cl_client, el_client, _ = shared_utils.get_client_names( @@ -80,6 +84,7 @@ def launch_tracoor( el_cl_data_files_artifact_uuid, network_params, global_node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -93,6 +98,7 @@ def get_config( el_cl_data_files_artifact_uuid, network_params, node_selectors, + tolerations, port_publisher, additional_service_index, docker_cache_params, @@ -128,6 +134,7 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) diff --git a/src/tx_fuzz/tx_fuzz.star b/src/tx_fuzz/tx_fuzz.star index 46464ce31..97e5139dc 100644 --- a/src/tx_fuzz/tx_fuzz.star +++ b/src/tx_fuzz/tx_fuzz.star @@ -1,4 +1,5 @@ shared_utils = import_module("../shared_utils/shared_utils.star") +input_parser = import_module("../package_io/input_parser.star") SERVICE_NAME = "tx-fuzz" # The min/max CPU/memory that tx-fuzz can use @@ -14,12 +15,16 @@ def launch_tx_fuzz( el_uri, tx_fuzz_params, global_node_selectors, + global_tolerations, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) + config = get_config( prefunded_addresses, el_uri, tx_fuzz_params, global_node_selectors, + tolerations, ) plan.add_service(SERVICE_NAME, config) @@ -29,6 +34,7 @@ def get_config( el_uri, tx_fuzz_params, node_selectors, + tolerations, ): cmd = [ "spam", @@ -47,4 +53,5 @@ def get_config( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ) diff --git a/src/xatu_sentry/xatu_sentry_launcher.star b/src/xatu_sentry/xatu_sentry_launcher.star index 0021359d5..0aec7ef20 100644 --- a/src/xatu_sentry/xatu_sentry_launcher.star +++ b/src/xatu_sentry/xatu_sentry_launcher.star @@ -1,6 +1,7 @@ shared_utils = import_module("../shared_utils/shared_utils.star") static_files = import_module("../static_files/static_files.star") xatu_sentry_context = import_module("../xatu_sentry/xatu_sentry_context.star") +input_parser = import_module("../package_io/input_parser.star") HTTP_PORT_ID = "http" METRICS_PORT_NUMBER = 9090 @@ -23,7 +24,9 @@ def launch( network_params, pair_name, node_selectors, + global_tolerations, ): + tolerations = input_parser.get_client_tolerations([], [], global_tolerations) config_template = read_file(static_files.XATU_SENTRY_CONFIG_TEMPLATE_FILEPATH) template_data = new_config_template_data( @@ -80,6 +83,7 @@ def launch( min_memory=MIN_MEMORY, max_memory=MAX_MEMORY, node_selectors=node_selectors, + tolerations=tolerations, ), )