diff --git a/network_params.yaml b/network_params.yaml index a9a233c4..b509dbfb 100644 --- a/network_params.yaml +++ b/network_params.yaml @@ -39,7 +39,8 @@ optimism_package: batcher_params: extra_params: [] conductor_params: - enabled: True + enabled: true + bootstrap: true additional_services: ["rollup-boost"] tx_fuzzer_params: enabled: true diff --git a/src/conductor/input_parser.star b/src/conductor/input_parser.star index 38e9a42d..b61afef2 100644 --- a/src/conductor/input_parser.star +++ b/src/conductor/input_parser.star @@ -9,6 +9,7 @@ _DEFAULT_ARGS = { "admin": True, "proxy": True, "paused": False, + "bootstrap": False, } diff --git a/src/conductor/op-conductor/launcher.star b/src/conductor/op-conductor/launcher.star index 518ba2f9..8f298798 100644 --- a/src/conductor/op-conductor/launcher.star +++ b/src/conductor/op-conductor/launcher.star @@ -2,6 +2,8 @@ _observability = import_module("/src/observability/observability.star") _ethereum_package_constants = import_module( "github.com/ethpandaops/ethereum-package/src/package_io/constants.star" ) + +_filter = import_module("/src/util/filter.star") _net = import_module("/src/util/net.star") # @@ -17,6 +19,8 @@ def launch( plan, params, network_params, + supervisors_params, + sidecar_context, deployment_output, el_params, cl_params, @@ -26,6 +30,8 @@ def launch( plan=plan, params=params, network_params=network_params, + supervisors_params=supervisors_params, + sidecar_context=sidecar_context, deployment_output=deployment_output, el_params=el_params, cl_params=cl_params, @@ -61,6 +67,8 @@ def get_service_config( plan, params, network_params, + supervisors_params, + sidecar_context, deployment_output, el_params, cl_params, @@ -82,16 +90,18 @@ def get_service_config( env_vars = { "OP_CONDUCTOR_CONSENSUS_ADDR": "0.0.0.0", "OP_CONDUCTOR_CONSENSUS_ADVERTISED": "{}:{}".format( - _ethereum_package_constants.PRIVATE_IP_ADDRESS_PLACEHOLDER, - consensus_port.number, + params.service_name, consensus_port.number ), "OP_CONDUCTOR_CONSENSUS_PORT": str(consensus_port.number), - "OP_CONDUCTOR_EXECUTION_RPC": _net.service_url( + "OP_CONDUCTOR_EXECUTION_RPC": sidecar_context.rpc_http_url + if sidecar_context + else _net.service_url( el_params.service_name, el_params.ports[_net.RPC_PORT_NAME] ), "OP_CONDUCTOR_NODE_RPC": _net.service_url( cl_params.service_name, cl_params.ports[_net.RPC_PORT_NAME] ), + "OP_CONDUCTOR_ROLLUP_BOOST_ENABLED": "true" if sidecar_context else "false", # This might also become a parameter "OP_CONDUCTOR_HEALTHCHECK_INTERVAL": str(_CONDUCTOR_HEALTH_CHECK_INTERVAL), # This might also become a parameter @@ -111,12 +121,20 @@ def get_service_config( network_params.network_id, ), "OP_CONDUCTOR_PAUSED": "true" if params.paused else "false", + "OP_CONDUCTOR_RAFT_BOOTSTRAP": "true" if params.bootstrap else "false", "OP_CONDUCTOR_RAFT_SERVER_ID": params.service_name, "OP_CONDUCTOR_RAFT_STORAGE_DIR": _CONDUCTOR_DATA_DIRPATH_ON_SERVICE_CONTAINER, "OP_CONDUCTOR_RPC_ADDR": "0.0.0.0", "OP_CONDUCTOR_RPC_PORT": str(rpc_port.number), "OP_CONDUCTOR_RPC_ENABLE_ADMIN": "true" if params.admin else "false", "OP_CONDUCTOR_RPC_ENABLE_PROXY": "true" if params.proxy else "false", + "OP_CONDUCTOR_SUPERVISOR_RPC": _filter.first( + [ + _net.service_url(s.service_name, s.ports[_net.RPC_PORT_NAME]) + for s in supervisors_params + ] + ) + or "", } if observability_helper.enabled: diff --git a/src/package_io/sanity_check.star b/src/package_io/sanity_check.star index 13acb16d..dec8ca32 100644 --- a/src/package_io/sanity_check.star +++ b/src/package_io/sanity_check.star @@ -152,6 +152,7 @@ SUBCATEGORY_PARAMS = { "admin", "proxy", "paused", + "bootstrap", ], "da_params": [ "enabled", diff --git a/src/participant_network__hack.star b/src/participant_network__hack.star index 154190fc..d360e7c8 100644 --- a/src/participant_network__hack.star +++ b/src/participant_network__hack.star @@ -56,6 +56,12 @@ def launch_participant_network__hack( }, ), observability_helper=observability_helper, + supervisors_params=supervisors_params, + # Sidecar context is now deeply buried in the el_cl_launcher output + # and we cannot dig it out without risking breaking well everything + # + # FIXME After refactoring, this should be passed in + sidecar_context=None, ).context if conductor_params else None diff --git a/test/conductor/input_parser_test.star b/test/conductor/input_parser_test.star index be61b838..07c34f0c 100644 --- a/test/conductor/input_parser_test.star +++ b/test/conductor/input_parser_test.star @@ -61,6 +61,7 @@ def test_conductor_input_parser_default_args_enabled(plan): admin=True, proxy=True, paused=False, + bootstrap=False, ) expect.eq( @@ -109,6 +110,7 @@ def test_conductor_input_parser_custom_params(plan): admin=True, proxy=True, paused=False, + bootstrap=False, ), ) diff --git a/test/l2/participant/input_parser_test.star b/test/l2/participant/input_parser_test.star index 5f0eee48..08e526c4 100644 --- a/test/l2/participant/input_parser_test.star +++ b/test/l2/participant/input_parser_test.star @@ -322,6 +322,7 @@ def test_l2_participant_input_parser_defaults_conductor_enabled(plan): admin=True, proxy=True, paused=False, + bootstrap=False, ), )