From 8bd491771492153359fc06a78dc1e6fbd910300a Mon Sep 17 00:00:00 2001 From: leovct Date: Mon, 21 Oct 2024 13:29:58 +0200 Subject: [PATCH 01/31] feat: agglayer static port --- agglayer.star | 25 +++++++++++++++---------- input_parser.star | 7 +++++++ src/package_io/ports.star | 19 +++++++++++++++++++ 3 files changed, 41 insertions(+), 10 deletions(-) create mode 100644 src/package_io/ports.star diff --git a/agglayer.star b/agglayer.star index 188c54c6..b6945d1e 100644 --- a/agglayer.star +++ b/agglayer.star @@ -1,10 +1,11 @@ +databases_package = import_module("./databases.star") service_package = import_module("./lib/service.star") -databases = import_module("./databases.star") +ports_package = import_module("./src/package_io/ports.star") def run(plan, args): contract_setup_addresses = service_package.get_contract_setup_addresses(plan, args) - db_configs = databases.get_db_configs( + db_configs = databases_package.get_db_configs( args["deployment_suffix"], args["sequencer_type"] ) agglayer_config_artifact = create_agglayer_config_artifact( @@ -17,18 +18,13 @@ def run(plan, args): src="/opt/zkevm/agglayer.keystore", ) + (ports, public_ports) = get_agglayer_ports(args) plan.add_service( name="agglayer", config=ServiceConfig( image=args["agglayer_image"], - ports={ - "agglayer": PortSpec( - args["agglayer_port"], application_protocol="http" - ), - "prometheus": PortSpec( - args["prometheus_port"], application_protocol="http" - ), - }, + ports=ports, + public_ports=public_ports, files={ "/etc/zkevm": Directory( artifact_names=[ @@ -76,3 +72,12 @@ def create_agglayer_config_artifact(plan, args, contract_setup_addresses, db_con ) }, ) + + +def get_agglayer_ports(args): + ports = { + "agglayer": PortSpec(args["agglayer_port"], application_protocol="http"), + "prometheus": PortSpec(args["prometheus_port"], application_protocol="http"), + } + public_ports = ports_package.get_public_ports(ports, "agglayer_start_port", args) + return (ports, public_ports) diff --git a/input_parser.star b/input_parser.star index d0933d9a..c8affdff 100644 --- a/input_parser.star +++ b/input_parser.star @@ -58,6 +58,12 @@ DEFAULT_PORTS = { "zkevm_rpc_ws_port": 8133, } +DEFAULT_PUBLIC_PORTS = { + "static_ports": { + "agglayer_start_port": 50000, + } +} + # Addresses and private keys of the different components. # They have been generated using the following command: # polycli wallet inspect --mnemonic 'lab code glass agree maid neutral vessel horror deny frequent favorite soft gate galaxy proof vintage once figure diary virtual scissors marble shrug drop' --addresses 9 | tee keys.txt | jq -r '.Addresses[] | [.ETHAddress, .HexPrivateKey] | @tsv' | awk 'BEGIN{split("sequencer,aggregator,claimtxmanager,timelock,admin,loadtest,agglayer,dac,proofsigner",roles,",")} {print "# " roles[NR] "\n\"zkevm_l2_" roles[NR] "_address\": \"" $1 "\","; print "\"zkevm_l2_" roles[NR] "_private_key\": \"0x" $2 "\",\n"}' @@ -202,6 +208,7 @@ DEFAULT_ARGS = ( } | DEFAULT_IMAGES | DEFAULT_PORTS + | DEFAULT_PUBLIC_PORTS | DEFAULT_ACCOUNTS | DEFAULT_L1_ARGS | DEFAULT_ROLLUP_ARGS diff --git a/src/package_io/ports.star b/src/package_io/ports.star new file mode 100644 index 00000000..7e682994 --- /dev/null +++ b/src/package_io/ports.star @@ -0,0 +1,19 @@ +def get_public_ports(port_config, start_port_name, args): + public_ports = {} + + static_port_config = args.get("static_ports") + start_port = static_port_config.get(start_port_name, None) + if start_port: + for index, (key, port) in enumerate(port_config.items()): + new_port = PortSpec( + number=start_port + index, + # Some ports don't define a transport protocol hich makes this specific intruction fail. + # Solutions: + # 1. We don't care about transport protocol in the case of public ports. + # 2. We make it mandatory to define transport protocols in PortSpec. + # transport_protocol=port.get("transport_protocol"), + application_protocol=port.application_protocol, + ) + public_ports[key] = new_port + + return public_ports From ffc3f2e8ff519aca7b7d344bc63c99f29c509e83 Mon Sep 17 00:00:00 2001 From: leovct Date: Mon, 21 Oct 2024 13:35:46 +0200 Subject: [PATCH 02/31] chore: disable static ports by default and add ci test --- .github/tests/dynamic-ports.yml | 3 +++ .github/workflows/deploy.yml | 33 +++++++++++++++++++++++++++++++++ input_parser.star | 5 ++--- 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 .github/tests/dynamic-ports.yml diff --git a/.github/tests/dynamic-ports.yml b/.github/tests/dynamic-ports.yml new file mode 100644 index 00000000..b858fec1 --- /dev/null +++ b/.github/tests/dynamic-ports.yml @@ -0,0 +1,3 @@ +args: + static_ports: + agglayer_start_port: 50000 diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index b4c6bbd1..4987d06a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -234,6 +234,39 @@ jobs: name: dump_additional_services_${{ github.run_id }} path: ./dump + static-ports: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + + - name: Install Kurtosis CDK tools + uses: ./.github/actions/setup-kurtosis-cdk + + - name: Run Starlark + run: kurtosis run --enclave=${{ env.ENCLAVE_NAME }} --args-file=./.github/tests/dynamic-ports --show-enclave-inspect=false . + + - name: Inspect enclave + run: kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} + + - name: Monitor verified batches + working-directory: .github/scripts + run: | + ./monitor-verified-batches.sh \ + --enclave ${{ env.ENCLAVE_NAME }} \ + --rpc-url "$(kurtosis port print ${{ env.ENCLAVE_NAME }} cdk-erigon-node-001 rpc)" + + - name: Dump enclave logs + if: failure() + run: kurtosis dump ./dump + + - name: Upload logs + if: failure() + uses: actions/upload-artifact@v4 + with: + name: dump_attach_ckds_${{ github.run_id }} + path: ./dump + attach_cdks: runs-on: ubuntu-latest timeout-minutes: 30 diff --git a/input_parser.star b/input_parser.star index c8affdff..a2e64ff2 100644 --- a/input_parser.star +++ b/input_parser.star @@ -59,9 +59,8 @@ DEFAULT_PORTS = { } DEFAULT_PUBLIC_PORTS = { - "static_ports": { - "agglayer_start_port": 50000, - } + # By default, we rely on dynamic ports set by Kurtosis. + "static_ports": {} } # Addresses and private keys of the different components. From e846bdd402fb2263f99780ff26f17419d36d57b7 Mon Sep 17 00:00:00 2001 From: leovct Date: Mon, 21 Oct 2024 13:37:49 +0200 Subject: [PATCH 03/31] fix: ci --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 4987d06a..cbeb29a7 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -244,7 +244,7 @@ jobs: uses: ./.github/actions/setup-kurtosis-cdk - name: Run Starlark - run: kurtosis run --enclave=${{ env.ENCLAVE_NAME }} --args-file=./.github/tests/dynamic-ports --show-enclave-inspect=false . + run: kurtosis run --enclave=${{ env.ENCLAVE_NAME }} --args-file=./.github/tests/dynamic-ports.yml --show-enclave-inspect=false . - name: Inspect enclave run: kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} From d0567b97faec3dcde3683f187ba4d851c9c1cb93 Mon Sep 17 00:00:00 2001 From: leovct Date: Mon, 21 Oct 2024 14:19:14 +0200 Subject: [PATCH 04/31] ci: update job names --- .github/workflows/deploy.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index cbeb29a7..8a54a202 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -143,7 +143,7 @@ jobs: name: ${{ env.ARCHIVE_NAME }} path: ./dump - additional_services: + additional-services: runs-on: ubuntu-latest timeout-minutes: 30 steps: @@ -267,7 +267,7 @@ jobs: name: dump_attach_ckds_${{ github.run_id }} path: ./dump - attach_cdks: + attach-second-cdk: runs-on: ubuntu-latest timeout-minutes: 30 steps: @@ -324,7 +324,7 @@ jobs: name: dump_attach_ckds_${{ github.run_id }} path: ./dump - deploy_to_external_l1: + deploy-to-external-l1: runs-on: ubuntu-latest timeout-minutes: 30 steps: From fa2e7d1ab9695817b48b7dd9aa2a9bf8b01e0700 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 00:31:05 +0200 Subject: [PATCH 05/31] chore: rename file --- .github/tests/{dynamic-ports.yml => static-ports.yml} | 0 .github/workflows/deploy.yml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename .github/tests/{dynamic-ports.yml => static-ports.yml} (100%) diff --git a/.github/tests/dynamic-ports.yml b/.github/tests/static-ports.yml similarity index 100% rename from .github/tests/dynamic-ports.yml rename to .github/tests/static-ports.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 8a54a202..f479f0cb 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -244,7 +244,7 @@ jobs: uses: ./.github/actions/setup-kurtosis-cdk - name: Run Starlark - run: kurtosis run --enclave=${{ env.ENCLAVE_NAME }} --args-file=./.github/tests/dynamic-ports.yml --show-enclave-inspect=false . + run: kurtosis run --enclave=${{ env.ENCLAVE_NAME }} --args-file=./.github/tests/static-ports.yml --show-enclave-inspect=false . - name: Inspect enclave run: kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} From da84a63a66eb224e3db05b3c53ffb6b1675a987f Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 00:32:11 +0200 Subject: [PATCH 06/31] feat: cdk node static port --- .github/tests/static-ports.yml | 1 + lib/cdk_node.star | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/tests/static-ports.yml b/.github/tests/static-ports.yml index b858fec1..a6e1232f 100644 --- a/.github/tests/static-ports.yml +++ b/.github/tests/static-ports.yml @@ -1,3 +1,4 @@ args: static_ports: agglayer_start_port: 50000 + cdk_node_start_port: 51000 diff --git a/lib/cdk_node.star b/lib/cdk_node.star index 66aaa34e..cf5348bc 100644 --- a/lib/cdk_node.star +++ b/lib/cdk_node.star @@ -1,4 +1,5 @@ data_availability_package = import_module("./data_availability.star") +ports_package = import_module("../src/package_io/ports.star") NODE_COMPONENTS = struct( sequence_sender="sequence-sender", @@ -13,7 +14,7 @@ def create_cdk_node_service_config( keystore_artifact, ): cdk_node_name = "cdk-node" + args["deployment_suffix"] - + (ports, public_ports) = get_cdk_node_ports(args) cdk_node_service_config = ServiceConfig( image=args["cdk_node_image"], ports={ @@ -49,3 +50,13 @@ def create_cdk_node_service_config( ) return {cdk_node_name: cdk_node_service_config} + + +def get_cdk_node_ports(args): + ports = { + "aggregator": PortSpec( + args["zkevm_aggregator_port"], application_protocol="grpc" + ), + } + public_ports = ports_package.get_public_ports(ports, "agglayer_start_port", args) + return (ports, public_ports) From 3aa39193da9cb59920e86100511cea7537c4d85a Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 00:32:50 +0200 Subject: [PATCH 07/31] chore: nit --- lib/cdk_erigon.star | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/cdk_erigon.star b/lib/cdk_erigon.star index 8075295f..1fbbf93c 100644 --- a/lib/cdk_erigon.star +++ b/lib/cdk_erigon.star @@ -38,6 +38,7 @@ def start_node( config=ServiceConfig( image=args["cdk_erigon_node_image"], ports=ports, + public_ports=public_ports, files={ "/etc/cdk-erigon": Directory( artifact_names=[ From 887a493010b52525a499268e1726f0fe00f33128 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 00:33:23 +0200 Subject: [PATCH 08/31] fix: typos --- lib/cdk_erigon.star | 1 - lib/cdk_node.star | 7 ++----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/lib/cdk_erigon.star b/lib/cdk_erigon.star index 1fbbf93c..8075295f 100644 --- a/lib/cdk_erigon.star +++ b/lib/cdk_erigon.star @@ -38,7 +38,6 @@ def start_node( config=ServiceConfig( image=args["cdk_erigon_node_image"], ports=ports, - public_ports=public_ports, files={ "/etc/cdk-erigon": Directory( artifact_names=[ diff --git a/lib/cdk_node.star b/lib/cdk_node.star index cf5348bc..c7494f40 100644 --- a/lib/cdk_node.star +++ b/lib/cdk_node.star @@ -17,11 +17,8 @@ def create_cdk_node_service_config( (ports, public_ports) = get_cdk_node_ports(args) cdk_node_service_config = ServiceConfig( image=args["cdk_node_image"], - ports={ - "aggregator": PortSpec( - args["zkevm_aggregator_port"], application_protocol="grpc" - ), - }, + ports=ports, + public_ports=public_ports, files={ "/etc/cdk": Directory( artifact_names=[ From 5a24713db687bd9326521e865720582e70e9b07c Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 00:35:07 +0200 Subject: [PATCH 09/31] fix: typo --- lib/cdk_node.star | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cdk_node.star b/lib/cdk_node.star index c7494f40..12ba178a 100644 --- a/lib/cdk_node.star +++ b/lib/cdk_node.star @@ -55,5 +55,5 @@ def get_cdk_node_ports(args): args["zkevm_aggregator_port"], application_protocol="grpc" ), } - public_ports = ports_package.get_public_ports(ports, "agglayer_start_port", args) + public_ports = ports_package.get_public_ports(ports, "cdk_node_start_port", args) return (ports, public_ports) From dfcfa38057fe36dcdf013c0a65cd9e2d0c7855f1 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 00:39:52 +0200 Subject: [PATCH 10/31] feat: bridge static ports --- .github/tests/static-ports.yml | 3 ++ lib/zkevm_bridge.star | 57 ++++++++++++++++++++++++---------- 2 files changed, 43 insertions(+), 17 deletions(-) diff --git a/.github/tests/static-ports.yml b/.github/tests/static-ports.yml index a6e1232f..90e45cc1 100644 --- a/.github/tests/static-ports.yml +++ b/.github/tests/static-ports.yml @@ -2,3 +2,6 @@ args: static_ports: agglayer_start_port: 50000 cdk_node_start_port: 51000 + zkevm_bridge_service_start_port: 52000 + zkevm_bridge_ui_start_port: 53000 + reverse_proxy_start_port: 54000 diff --git a/lib/zkevm_bridge.star b/lib/zkevm_bridge.star index 65e32272..bae546f5 100644 --- a/lib/zkevm_bridge.star +++ b/lib/zkevm_bridge.star @@ -1,12 +1,11 @@ +ports_package = import_module("../src/package_io/ports.star") + def create_bridge_service_config(args, config_artifact, claimtx_keystore_artifact): + (ports, public_ports) = get_cdk_node_ports(args) return ServiceConfig( image=args["zkevm_bridge_service_image"], - ports={ - "rpc": PortSpec(args["zkevm_bridge_rpc_port"], application_protocol="http"), - "grpc": PortSpec( - args["zkevm_bridge_grpc_port"], application_protocol="grpc" - ), - }, + ports=ports, + public_ports=public_ports, files={ "/etc/zkevm": Directory( artifact_names=[config_artifact, claimtx_keystore_artifact] @@ -19,16 +18,25 @@ def create_bridge_service_config(args, config_artifact, claimtx_keystore_artifac ) +def get_bridge_service_ports(args): + ports = { + "rpc": PortSpec(args["zkevm_bridge_rpc_port"], application_protocol="http"), + "grpc": PortSpec(args["zkevm_bridge_grpc_port"], application_protocol="grpc"), + } + public_ports = ports_package.get_public_ports( + ports, "zkevm_bridge_service_start_port", args + ) + return (ports, public_ports) + + def start_bridge_ui(plan, args, config_artifact): + (ports, public_ports) = get_cdk_node_ports(args) plan.add_service( name="zkevm-bridge-ui" + args["deployment_suffix"], config=ServiceConfig( image=args["zkevm_bridge_ui_image"], - ports={ - "web-ui": PortSpec( - args["zkevm_bridge_ui_port"], application_protocol="http" - ), - }, + ports=ports, + public_ports=public_ports, files={ "/etc/zkevm": Directory(artifact_names=[config_artifact]), }, @@ -41,19 +49,34 @@ def start_bridge_ui(plan, args, config_artifact): ) +def get_bridge_ui_ports(args): + ports = { + "web-ui": PortSpec(args["zkevm_bridge_ui_port"], application_protocol="http") + } + public_ports = ports_package.get_public_ports( + ports, "zkevm_bridge_ui_start_port", args + ) + return (ports, public_ports) + + def start_reverse_proxy(plan, args, config_artifact): + (ports, public_ports) = get_cdk_node_ports(args) plan.add_service( name="zkevm-bridge-proxy" + args["deployment_suffix"], config=ServiceConfig( image=args["zkevm_bridge_proxy_image"], - ports={ - "web-ui": PortSpec( - number=80, - application_protocol="http", - ), - }, + ports=ports, + public_ports=public_ports, files={ "/usr/local/etc/haproxy/": Directory(artifact_names=[config_artifact]), }, ), ) + + +def get_revert_proxy_ports(args): + ports = {"web-ui": PortSpec(80, application_protocol="http")} + public_ports = ports_package.get_public_ports( + ports, "reverse_proxy_start_port", args + ) + return (ports, public_ports) From 30be547716811ce7f1251c910db223b1f95be880 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 00:43:08 +0200 Subject: [PATCH 11/31] feat: db static port --- .github/tests/static-ports.yml | 1 + databases.star | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/tests/static-ports.yml b/.github/tests/static-ports.yml index 90e45cc1..e02916d9 100644 --- a/.github/tests/static-ports.yml +++ b/.github/tests/static-ports.yml @@ -5,3 +5,4 @@ args: zkevm_bridge_service_start_port: 52000 zkevm_bridge_ui_start_port: 53000 reverse_proxy_start_port: 54000 + database_start_port: 55000 diff --git a/databases.star b/databases.star index bb89467e..074abca3 100644 --- a/databases.star +++ b/databases.star @@ -1,3 +1,5 @@ +ports_package = import_module("./src/package_io/ports.star") + # We support both local and remote Postgres databases within our Kurtosis-CDK package # When 'USE_REMOTE_POSTGRES' is False, service automatically creates all CDK databases locally # When 'USE_REMOTE_POSTGRES' is True, service is created just as a helper for param injection across pods @@ -162,11 +164,11 @@ def create_postgres_service(plan, db_configs, suffix): }, ) + (ports, public_ports) = ports_package.get_database_ports(args) postgres_service_cfg = ServiceConfig( image=POSTGRES_IMAGE, - ports={ - "postgres": PortSpec(POSTGRES_PORT, application_protocol="postgresql"), - }, + ports=ports, + public_ports=public_ports, env_vars={ "POSTGRES_DB": POSTGRES_MASTER_DB, "POSTGRES_USER": POSTGRES_MASTER_USER, @@ -181,3 +183,11 @@ def create_postgres_service(plan, db_configs, suffix): config=postgres_service_cfg, description="Starting Postgres Service", ) + + +def get_database_ports(args): + ports = { + "postgres": PortSpec(POSTGRES_PORT, application_protocol="postgresql"), + } + public_ports = ports_package.get_public_ports(ports, "database_start_port", args) + return (ports, public_ports) From 030803496548d76c3ec6f7d9a61cffa7e9f182da Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 00:43:12 +0200 Subject: [PATCH 12/31] chore: lint --- lib/zkevm_bridge.star | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/zkevm_bridge.star b/lib/zkevm_bridge.star index bae546f5..d64b71cf 100644 --- a/lib/zkevm_bridge.star +++ b/lib/zkevm_bridge.star @@ -1,5 +1,6 @@ ports_package = import_module("../src/package_io/ports.star") + def create_bridge_service_config(args, config_artifact, claimtx_keystore_artifact): (ports, public_ports) = get_cdk_node_ports(args) return ServiceConfig( From 48d91dea1541a3cb077de86de492ccd899826c8d Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 00:48:32 +0200 Subject: [PATCH 13/31] fix: typos --- databases.star | 15 ++++++++------- lib/zkevm_bridge.star | 6 +++--- main.star | 6 +----- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/databases.star b/databases.star index 074abca3..fff4e7ca 100644 --- a/databases.star +++ b/databases.star @@ -93,9 +93,10 @@ CDK_ERIGON_DBS = { DATABASES = CENTRAL_ENV_DBS | PROVER_DB | ZKEVM_NODE_DBS | CDK_ERIGON_DBS -def run(plan, suffix, sequencer_type): - db_configs = get_db_configs(suffix, sequencer_type) - create_postgres_service(plan, db_configs, suffix) +def run(plan, args): + sequencer_type = args["sequencer_type"] + db_configs = get_db_configs(args["deployment_suffix"], sequencer_type) + create_postgres_service(plan, db_configs, args) def get_db_configs(suffix, sequencer_type): @@ -148,10 +149,10 @@ def _pless_suffix(suffix): return "-pless" + suffix -def create_postgres_service(plan, db_configs, suffix): +def create_postgres_service(plan, db_configs, args): init_script_tpl = read_file(src="./templates/databases/init.sql") init_script = plan.render_templates( - name="init.sql" + suffix, + name="init.sql" + args["deployment_suffix"], config={ "init.sql": struct( template=init_script_tpl, @@ -164,7 +165,7 @@ def create_postgres_service(plan, db_configs, suffix): }, ) - (ports, public_ports) = ports_package.get_database_ports(args) + (ports, public_ports) = get_database_ports(args) postgres_service_cfg = ServiceConfig( image=POSTGRES_IMAGE, ports=ports, @@ -179,7 +180,7 @@ def create_postgres_service(plan, db_configs, suffix): ) plan.add_service( - name=_service_name(suffix), + name=_service_name(args["deployment_suffix"]), config=postgres_service_cfg, description="Starting Postgres Service", ) diff --git a/lib/zkevm_bridge.star b/lib/zkevm_bridge.star index d64b71cf..94c6832a 100644 --- a/lib/zkevm_bridge.star +++ b/lib/zkevm_bridge.star @@ -2,7 +2,7 @@ ports_package = import_module("../src/package_io/ports.star") def create_bridge_service_config(args, config_artifact, claimtx_keystore_artifact): - (ports, public_ports) = get_cdk_node_ports(args) + (ports, public_ports) = get_bridge_service_ports(args) return ServiceConfig( image=args["zkevm_bridge_service_image"], ports=ports, @@ -31,7 +31,7 @@ def get_bridge_service_ports(args): def start_bridge_ui(plan, args, config_artifact): - (ports, public_ports) = get_cdk_node_ports(args) + (ports, public_ports) = get_bridge_ui_ports(args) plan.add_service( name="zkevm-bridge-ui" + args["deployment_suffix"], config=ServiceConfig( @@ -61,7 +61,7 @@ def get_bridge_ui_ports(args): def start_reverse_proxy(plan, args, config_artifact): - (ports, public_ports) = get_cdk_node_ports(args) + (ports, public_ports) = get_revert_proxy_ports(args) plan.add_service( name="zkevm-bridge-proxy" + args["deployment_suffix"], config=ServiceConfig( diff --git a/main.star b/main.star index a24081fd..97b8d9ab 100644 --- a/main.star +++ b/main.star @@ -58,11 +58,7 @@ def run(plan, args={}): # Deploy databases. if deployment_stages.get("deploy_databases", False): plan.print("Deploying databases") - import_module(databases_package).run( - plan, - suffix=args["deployment_suffix"], - sequencer_type=args["sequencer_type"], - ) + import_module(databases_package).run(plan, args) else: plan.print("Skipping the deployment of databases") From 6f7694dad0472f453b7db9e2f0e3dcbf22c8c749 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 01:03:53 +0200 Subject: [PATCH 14/31] feat: more static ports --- .github/tests/static-ports.yml | 8 ++++++++ lib/zkevm_dac.star | 17 ++++++++++++++--- lib/zkevm_pool_manager.star | 22 ++++++++++++++++------ src/additional_services/arpeggio.star | 19 ++++++++++++++----- src/additional_services/blutgang.star | 17 +++++++++++++---- src/additional_services/erpc.star | 16 ++++++++++++---- src/additional_services/panoptichain.star | 17 ++++++++++++++--- 7 files changed, 91 insertions(+), 25 deletions(-) diff --git a/.github/tests/static-ports.yml b/.github/tests/static-ports.yml index e02916d9..71152e4d 100644 --- a/.github/tests/static-ports.yml +++ b/.github/tests/static-ports.yml @@ -6,3 +6,11 @@ args: zkevm_bridge_ui_start_port: 53000 reverse_proxy_start_port: 54000 database_start_port: 55000 + zkevm_pool_manager_start_port: 56000 + zkevm_dac_start_port: 57000 + + # additional services + arpeggio_start_port: 58010 + blutgang_start_port: 58020 + erpc_start_port: 58030 + panoptichain_start_port: 58040 diff --git a/lib/zkevm_dac.star b/lib/zkevm_dac.star index 05161a6b..83e8682d 100644 --- a/lib/zkevm_dac.star +++ b/lib/zkevm_dac.star @@ -1,10 +1,13 @@ +ports_package = import_module("../src/package_io/ports.star") + + def create_dac_service_config(args, config_artifact, dac_keystore_artifact): dac_name = "zkevm-dac" + args["deployment_suffix"] + (ports, public_ports) = get_dac_ports(args) dac_service_config = ServiceConfig( image=args["zkevm_da_image"], - ports={ - "dac": PortSpec(args["zkevm_dac_port"], application_protocol="http"), - }, + ports=ports, + public_ports=public_ports, files={ "/etc/zkevm": Directory( artifact_names=[config_artifact, dac_keystore_artifact] @@ -16,3 +19,11 @@ def create_dac_service_config(args, config_artifact, dac_keystore_artifact): cmd=["run", "--cfg", "/etc/zkevm/dac-config.toml"], ) return {dac_name: dac_service_config} + + +def get_dac_ports(args): + ports = { + "dac": PortSpec(args["zkevm_dac_port"], application_protocol="http"), + } + public_ports = ports_package.get_public_ports(ports, "dac_start_port", args) + return (ports, public_ports) diff --git a/lib/zkevm_pool_manager.star b/lib/zkevm_pool_manager.star index e701ea91..7b2c3eb6 100644 --- a/lib/zkevm_pool_manager.star +++ b/lib/zkevm_pool_manager.star @@ -1,19 +1,29 @@ +ports_package = import_module("../src/package_io/ports.star") + + def create_zkevm_pool_manager_service_config(args, config_artifact): zkevm_pool_manager_service_name = "zkevm-pool-manager" + args["deployment_suffix"] + (ports, public_ports) = get_zkevm_pool_manager_ports(args) zkevm_pool_manager_service_config = ServiceConfig( image=args["zkevm_pool_manager_image"], - ports={ - "http": PortSpec( - args["zkevm_pool_manager_port"], application_protocol="http" - ), - }, + ports=ports, + public_ports=public_ports, files={ "/etc/pool-manager": Directory(artifact_names=[config_artifact]), }, entrypoint=["/bin/sh", "-c"], - # cmd=["run", "--cfg", "/app/pool-manager-config.toml"], cmd=[ "/app/zkevm-pool-manager run --cfg /etc/pool-manager/pool-manager-config.toml", ], ) return {zkevm_pool_manager_service_name: zkevm_pool_manager_service_config} + + +def get_zkevm_pool_manager_ports(args): + ports = { + "http": PortSpec(args["zkevm_pool_manager_port"], application_protocol="http"), + } + public_ports = ports_package.get_public_ports( + ports, "zkevm_pool_manager_start_port", args + ) + return (ports, public_ports) diff --git a/src/additional_services/arpeggio.star b/src/additional_services/arpeggio.star index 4ea591ca..c7c907ff 100644 --- a/src/additional_services/arpeggio.star +++ b/src/additional_services/arpeggio.star @@ -1,3 +1,4 @@ +ports_package = import_module("../package_io/ports.star") service_package = import_module("../../lib/service.star") ARPEGGIO_IMAGE = "christophercampbell/arpeggio:v0.0.1" @@ -8,15 +9,13 @@ WS_PROXY_PORT = 8546 def run(plan, args): arpeggio_config_artifact = get_arpeggio_config(plan, args) + (ports, public_ports) = get_zkevm_pool_manager_ports(args) plan.add_service( name="arpeggio" + args["deployment_suffix"], config=ServiceConfig( image=ARPEGGIO_IMAGE, - ports={ - "rpc": PortSpec(RPC_PROXY_PORT, application_protocol="http"), - "ws": PortSpec(WS_PROXY_PORT, application_protocol="ws"), - # "prometheus": PortSpec(METRICS_PORT, application_protocol="http"), - }, + ports=ports, + public_ports=public_ports, files={"/etc/arpeggio": arpeggio_config_artifact}, ), ) @@ -40,3 +39,13 @@ def get_arpeggio_config(plan, args): ) }, ) + + +def get_arpeggio_ports(args): + ports = { + "rpc": PortSpec(RPC_PROXY_PORT, application_protocol="http"), + "ws": PortSpec(WS_PROXY_PORT, application_protocol="ws"), + # "prometheus": PortSpec(METRICS_PORT, application_protocol="http"), + } + public_ports = ports_package.get_public_ports(ports, "arpeggio_start_port", args) + return (ports, public_ports) diff --git a/src/additional_services/blutgang.star b/src/additional_services/blutgang.star index ac0a6f62..577771dd 100644 --- a/src/additional_services/blutgang.star +++ b/src/additional_services/blutgang.star @@ -1,3 +1,4 @@ +ports_package = import_module("../package_io/ports.star") service_package = import_module("../../lib/service.star") BLUTGANG_IMAGE = "makemake1337/blutgang:0.3.6" @@ -8,14 +9,13 @@ ADMIN_PORT_NUMBER = 8556 def run(plan, args): blutgang_config_artifact = get_blutgang_config(plan, args) + (ports, public_ports) = get_blutgang_ports(args) plan.add_service( name="blutgang" + args["deployment_suffix"], config=ServiceConfig( image=BLUTGANG_IMAGE, - ports={ - "http": PortSpec(RPC_PORT_NUMBER), - "admin": PortSpec(ADMIN_PORT_NUMBER), - }, + ports=ports, + public_ports=public_ports, files={ "/etc/blutgang": Directory( artifact_names=[ @@ -77,3 +77,12 @@ def get_blutgang_config(plan, args): ) }, ) + + +def get_blutgang_ports(args): + ports = { + "http": PortSpec(RPC_PORT_NUMBER, application_protocol="http"), + "admin": PortSpec(ADMIN_PORT_NUMBER, application_protocol="http"), + } + public_ports = ports_package.get_public_ports(ports, "blutgang_start_port", args) + return (ports, public_ports) diff --git a/src/additional_services/erpc.star b/src/additional_services/erpc.star index 73def702..d3ca792e 100644 --- a/src/additional_services/erpc.star +++ b/src/additional_services/erpc.star @@ -9,14 +9,13 @@ PROMETHEUS_PORT = 6060 def run(plan, args): config_artifact = get_erpc_config(plan, args) + (ports, public_ports) = get_erpc_ports(args) plan.add_service( name=SERVICE_NAME + args["deployment_suffix"], config=ServiceConfig( image=ERPC_IMAGE, - ports={ - "rpc": PortSpec(RPC_PORT, application_protocol="http"), - "prometheus": PortSpec(PROMETHEUS_PORT, application_protocol="http"), - }, + ports=ports, + public_ports=public_ports, files={"/etc/erpc": config_artifact}, cmd=["/root/erpc-server", "/etc/erpc/erpc.yaml"], ), @@ -43,3 +42,12 @@ def get_erpc_config(plan, args): ) }, ) + + +def get_erpc_ports(args): + ports = { + "rpc": PortSpec(RPC_PORT, application_protocol="http"), + "prometheus": PortSpec(PROMETHEUS_PORT, application_protocol="http"), + } + public_ports = ports_package.get_public_ports(ports, "erpc_start_port", args) + return (ports, public_ports) diff --git a/src/additional_services/panoptichain.star b/src/additional_services/panoptichain.star index ee869143..2edd03ac 100644 --- a/src/additional_services/panoptichain.star +++ b/src/additional_services/panoptichain.star @@ -1,3 +1,4 @@ +ports_package = import_module("../package_io/ports.star") service_package = import_module("../../lib/service.star") PANOPTICHAIN_IMAGE = "minhdvu/panoptichain:0.1.47" @@ -5,13 +6,13 @@ PANOPTICHAIN_IMAGE = "minhdvu/panoptichain:0.1.47" def run(plan, args): panoptichain_config_artifact = get_panoptichain_config(plan, args) + (ports, public_ports) = get_panoptichain_ports(args) plan.add_service( name="panoptichain" + args["deployment_suffix"], config=ServiceConfig( image=PANOPTICHAIN_IMAGE, - ports={ - "prometheus": PortSpec(9090, application_protocol="http"), - }, + ports=ports, + public_ports=public_ports, files={"/etc/panoptichain": panoptichain_config_artifact}, ), ) @@ -38,3 +39,13 @@ def get_panoptichain_config(plan, args): ) }, ) + + +def get_panoptichain_ports(args): + ports = { + "prometheus": PortSpec(9090, application_protocol="http"), + } + public_ports = ports_package.get_public_ports( + ports, "panoptichain_start_port", args + ) + return (ports, public_ports) From 27e70a689dcebb28ee1091c403af9efc32cfc428 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 01:09:59 +0200 Subject: [PATCH 15/31] feat: add ethereum pkg static ports --- .github/tests/static-ports.yml | 9 ++++++++- ethereum.star | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/.github/tests/static-ports.yml b/.github/tests/static-ports.yml index 71152e4d..642b70e6 100644 --- a/.github/tests/static-ports.yml +++ b/.github/tests/static-ports.yml @@ -1,5 +1,11 @@ args: static_ports: + l1_el_start_port: 59010 + l1_cl_start_port: 59020 + l1_vc_start_port: 59030 + l1_remote_signer_start_port: 59040 + l1_additional_services_start_port: 59050 + agglayer_start_port: 50000 cdk_node_start_port: 51000 zkevm_bridge_service_start_port: 52000 @@ -8,9 +14,10 @@ args: database_start_port: 55000 zkevm_pool_manager_start_port: 56000 zkevm_dac_start_port: 57000 - + # additional services arpeggio_start_port: 58010 blutgang_start_port: 58020 erpc_start_port: 58030 panoptichain_start_port: 58040 + diff --git a/ethereum.star b/ethereum.star index eb66d873..f247d934 100644 --- a/ethereum.star +++ b/ethereum.star @@ -4,6 +4,17 @@ ethereum_package = import_module( def run(plan, args): + static_port_config = args.get("static_ports") + l1_el_start_port = static_port_config.get("l1_el_start_port", None) + l1_cl_start_port = static_port_config.get("l1_cl_start_port", None) + l1_vc_start_port = static_port_config.get("l1_vc_start_port", None) + l1_remote_signer_start_port = static_port_config.get( + "l1_remote_signer_start_port", None + ) + l1_additional_services_start_port = static_port_config.get( + "l1_additional_services_start_port", None + ) + ethereum_package.run( plan, { @@ -23,5 +34,28 @@ def run(plan, args): "seconds_per_slot": args["l1_seconds_per_slot"], }, "additional_services": args["l1_additional_services"], + # static ports + "port_publisher": { + "el": { + "enabled": True, + "public_port_start": l1_el_start_port, + }, + "cl": { + "enabled": True, + "public_port_start": l1_cl_start_port, + }, + "vc": { + "enabled": True, + "public_port_start": l1_vc_start_port, + }, + "remote_signer": { + "enabled": True, + "public_port_start": l1_remote_signer_start_port, + }, + "additional_services": { + "enabled": True, + "public_port_start": l1_additional_services_start_port, + }, + }, }, ) From 8e63948398925187d2db361ebaca095168863f42 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 01:11:00 +0200 Subject: [PATCH 16/31] fix: typo --- src/additional_services/arpeggio.star | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/additional_services/arpeggio.star b/src/additional_services/arpeggio.star index c7c907ff..422d73d2 100644 --- a/src/additional_services/arpeggio.star +++ b/src/additional_services/arpeggio.star @@ -9,7 +9,7 @@ WS_PROXY_PORT = 8546 def run(plan, args): arpeggio_config_artifact = get_arpeggio_config(plan, args) - (ports, public_ports) = get_zkevm_pool_manager_ports(args) + (ports, public_ports) = get_arpeggio_ports(args) plan.add_service( name="arpeggio" + args["deployment_suffix"], config=ServiceConfig( From fbf2185cb8216495d4981798902d83c03fb2e21f Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 01:15:24 +0200 Subject: [PATCH 17/31] fix: eth params --- .github/tests/static-ports.yml | 3 +-- ethereum.star | 30 ++++++++++++------------------ 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/.github/tests/static-ports.yml b/.github/tests/static-ports.yml index 642b70e6..60bed1b6 100644 --- a/.github/tests/static-ports.yml +++ b/.github/tests/static-ports.yml @@ -3,8 +3,7 @@ args: l1_el_start_port: 59010 l1_cl_start_port: 59020 l1_vc_start_port: 59030 - l1_remote_signer_start_port: 59040 - l1_additional_services_start_port: 59050 + l1_additional_services_start_port: 59040 agglayer_start_port: 50000 cdk_node_start_port: 51000 diff --git a/ethereum.star b/ethereum.star index f247d934..47dc207d 100644 --- a/ethereum.star +++ b/ethereum.star @@ -5,16 +5,6 @@ ethereum_package = import_module( def run(plan, args): static_port_config = args.get("static_ports") - l1_el_start_port = static_port_config.get("l1_el_start_port", None) - l1_cl_start_port = static_port_config.get("l1_cl_start_port", None) - l1_vc_start_port = static_port_config.get("l1_vc_start_port", None) - l1_remote_signer_start_port = static_port_config.get( - "l1_remote_signer_start_port", None - ) - l1_additional_services_start_port = static_port_config.get( - "l1_additional_services_start_port", None - ) - ethereum_package.run( plan, { @@ -38,23 +28,27 @@ def run(plan, args): "port_publisher": { "el": { "enabled": True, - "public_port_start": l1_el_start_port, + "public_port_start": static_port_config.get( + "l1_el_start_port", None + ), }, "cl": { "enabled": True, - "public_port_start": l1_cl_start_port, + "public_port_start": static_port_config.get( + "l1_cl_start_port", None + ), }, "vc": { "enabled": True, - "public_port_start": l1_vc_start_port, - }, - "remote_signer": { - "enabled": True, - "public_port_start": l1_remote_signer_start_port, + "public_port_start": static_port_config.get( + "l1_vc_start_port", None + ), }, "additional_services": { "enabled": True, - "public_port_start": l1_additional_services_start_port, + "public_port_start": static_port_config.get( + "l1_additional_services_start_port", None + ), }, }, }, From 821e759d4ed960cc49bc7a6958bf23aff918d0c4 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 01:26:56 +0200 Subject: [PATCH 18/31] fix: eth pkg config --- ethereum.star | 47 +++++++++++++++++++---------------------------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/ethereum.star b/ethereum.star index 47dc207d..aa915ff3 100644 --- a/ethereum.star +++ b/ethereum.star @@ -4,7 +4,7 @@ ethereum_package = import_module( def run(plan, args): - static_port_config = args.get("static_ports") + port_publisher = generate_port_publisher_config(args) ethereum_package.run( plan, { @@ -24,32 +24,23 @@ def run(plan, args): "seconds_per_slot": args["l1_seconds_per_slot"], }, "additional_services": args["l1_additional_services"], - # static ports - "port_publisher": { - "el": { - "enabled": True, - "public_port_start": static_port_config.get( - "l1_el_start_port", None - ), - }, - "cl": { - "enabled": True, - "public_port_start": static_port_config.get( - "l1_cl_start_port", None - ), - }, - "vc": { - "enabled": True, - "public_port_start": static_port_config.get( - "l1_vc_start_port", None - ), - }, - "additional_services": { - "enabled": True, - "public_port_start": static_port_config.get( - "l1_additional_services_start_port", None - ), - }, - }, + "port_publisher": port_publisher, }, ) + + +# Generate ethereum package static ports configuration. +def generate_port_publisher_config(args): + static_port_config = args.get("static_ports") + port_mappings = { + "el": "l1_el_start_port", + "cl": "l1_cl_start_port", + "vc": "l1_vc_start_port", + "additional_services": "l1_additional_services_start_port", + } + + return { + key: {"enabled": True, "public_port_start": static_port_config.get(value)} + for key, value in port_mappings.items() + if static_port_config.get(value) is not None + } From 3b140d2cbf5268c3e562b1015790c7d8c2acafaf Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 01:31:18 +0200 Subject: [PATCH 19/31] test --- ethereum.star | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ethereum.star b/ethereum.star index aa915ff3..79b9e122 100644 --- a/ethereum.star +++ b/ethereum.star @@ -40,7 +40,10 @@ def generate_port_publisher_config(args): } return { - key: {"enabled": True, "public_port_start": static_port_config.get(value)} + key: { + "enabled": True, + "public_port_start": static_port_config.get(value), + } for key, value in port_mappings.items() if static_port_config.get(value) is not None } From ab057e23eab9b7fcd684d8772fcc2abd395d9a0b Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 01:32:34 +0200 Subject: [PATCH 20/31] chore: nit --- src/package_io/ports.star | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/package_io/ports.star b/src/package_io/ports.star index 7e682994..8a43e3ee 100644 --- a/src/package_io/ports.star +++ b/src/package_io/ports.star @@ -1,13 +1,12 @@ def get_public_ports(port_config, start_port_name, args): public_ports = {} - static_port_config = args.get("static_ports") start_port = static_port_config.get(start_port_name, None) if start_port: for index, (key, port) in enumerate(port_config.items()): new_port = PortSpec( number=start_port + index, - # Some ports don't define a transport protocol hich makes this specific intruction fail. + # Some ports don't define a transport protocol which makes this specific intruction fail. # Solutions: # 1. We don't care about transport protocol in the case of public ports. # 2. We make it mandatory to define transport protocols in PortSpec. From 178ff6e1cf33d6a10529c8bbe04c80fdd829ca17 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 01:35:41 +0200 Subject: [PATCH 21/31] test --- ethereum.star | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/ethereum.star b/ethereum.star index 79b9e122..ed541263 100644 --- a/ethereum.star +++ b/ethereum.star @@ -31,7 +31,6 @@ def run(plan, args): # Generate ethereum package static ports configuration. def generate_port_publisher_config(args): - static_port_config = args.get("static_ports") port_mappings = { "el": "l1_el_start_port", "cl": "l1_cl_start_port", @@ -39,11 +38,13 @@ def generate_port_publisher_config(args): "additional_services": "l1_additional_services_start_port", } - return { - key: { - "enabled": True, - "public_port_start": static_port_config.get(value), - } - for key, value in port_mappings.items() - if static_port_config.get(value) is not None - } + port_publisher_config = {} + static_port_config = args.get("static_ports", {}) + for key, value in port_mappings.items(): + public_port_start = static_port_config.get(value, None) + if public_port_start: + port_publisher_config[key] = { + "enabled": True, + "public_port_start": public_port_start, + } + return port_publisher_config From 54a6a69ee96c3e9844b149c6988b1908d456a2d9 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 01:43:31 +0200 Subject: [PATCH 22/31] fix: typo --- src/additional_services/erpc.star | 1 + 1 file changed, 1 insertion(+) diff --git a/src/additional_services/erpc.star b/src/additional_services/erpc.star index d3ca792e..2201bc87 100644 --- a/src/additional_services/erpc.star +++ b/src/additional_services/erpc.star @@ -1,3 +1,4 @@ +ports_package = import_module("../package_io/ports.star") service_package = import_module("../../lib/service.star") ERPC_IMAGE = "ghcr.io/erpc/erpc:0.0.24" From a9e3b45f27db85ef95a6dd8dfabbad478b93bb41 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 08:50:03 +0200 Subject: [PATCH 23/31] fix: dac typo --- lib/zkevm_dac.star | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/zkevm_dac.star b/lib/zkevm_dac.star index 83e8682d..e57d9d36 100644 --- a/lib/zkevm_dac.star +++ b/lib/zkevm_dac.star @@ -25,5 +25,5 @@ def get_dac_ports(args): ports = { "dac": PortSpec(args["zkevm_dac_port"], application_protocol="http"), } - public_ports = ports_package.get_public_ports(ports, "dac_start_port", args) + public_ports = ports_package.get_public_ports(ports, "zkevm_dac_start_port", args) return (ports, public_ports) From ff2a04c42c3a344c79694f29c9fbaaf53ed834e4 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 08:54:32 +0200 Subject: [PATCH 24/31] chore: update static ports --- .github/tests/static-ports.yml | 36 ++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/.github/tests/static-ports.yml b/.github/tests/static-ports.yml index 60bed1b6..b178dfc2 100644 --- a/.github/tests/static-ports.yml +++ b/.github/tests/static-ports.yml @@ -1,22 +1,24 @@ args: static_ports: - l1_el_start_port: 59010 - l1_cl_start_port: 59020 - l1_vc_start_port: 59030 - l1_additional_services_start_port: 59040 + # L1 static ports (50000-50999). + l1_el_start_port: 50000 + l1_cl_start_port: 50100 + l1_vc_start_port: 50200 + l1_additional_services_start_port: 50300 - agglayer_start_port: 50000 - cdk_node_start_port: 51000 - zkevm_bridge_service_start_port: 52000 - zkevm_bridge_ui_start_port: 53000 - reverse_proxy_start_port: 54000 - database_start_port: 55000 - zkevm_pool_manager_start_port: 56000 - zkevm_dac_start_port: 57000 + # L2/CDK static ports (51000-51999). + agglayer_start_port: 51000 + cdk_node_start_port: 51100 + zkevm_bridge_service_start_port: 51210 + zkevm_bridge_ui_start_port: 51220 + reverse_proxy_start_port: 51230 + database_start_port: 51300 + zkevm_pool_manager_start_port: 51400 + zkevm_dac_start_port: 51500 - # additional services - arpeggio_start_port: 58010 - blutgang_start_port: 58020 - erpc_start_port: 58030 - panoptichain_start_port: 58040 + # L2 additional services (52000-52999). + arpeggio_start_port: 52000 + blutgang_start_port: 52100 + erpc_start_port: 52200 + panoptichain_start_port: 52300 From 3f106b13951ff299f5993e5dbef093f82ef4f5ce Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 09:07:07 +0200 Subject: [PATCH 25/31] feat: add another flag to use default public ports --- .../custom-public-ports.yml} | 1 - .../public-ports/default-public-ports.yml | 2 + .github/workflows/deploy.yml | 35 +------------ input_parser.star | 49 ++++++++++++++++--- 4 files changed, 46 insertions(+), 41 deletions(-) rename .github/tests/{static-ports.yml => public-ports/custom-public-ports.yml} (99%) create mode 100644 .github/tests/public-ports/default-public-ports.yml diff --git a/.github/tests/static-ports.yml b/.github/tests/public-ports/custom-public-ports.yml similarity index 99% rename from .github/tests/static-ports.yml rename to .github/tests/public-ports/custom-public-ports.yml index b178dfc2..da6c1b96 100644 --- a/.github/tests/static-ports.yml +++ b/.github/tests/public-ports/custom-public-ports.yml @@ -21,4 +21,3 @@ args: blutgang_start_port: 52100 erpc_start_port: 52200 panoptichain_start_port: 52300 - diff --git a/.github/tests/public-ports/default-public-ports.yml b/.github/tests/public-ports/default-public-ports.yml new file mode 100644 index 00000000..7ff551b2 --- /dev/null +++ b/.github/tests/public-ports/default-public-ports.yml @@ -0,0 +1,2 @@ +args: + use_default_public_ports: true diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index f479f0cb..11a90278 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -68,7 +68,7 @@ jobs: - id: set-matrix # List all yml files in the .github/tests directory, as well as test combinations, except for the additional-services.yml file. - run: echo "matrix=$(ls -R ./.github/tests/combinations/*.yml | grep -v 'additional-services.yml' | jq -R -s -c 'split("\n")[:-1]')" >> $GITHUB_OUTPUT + run: echo "matrix=$(ls -R ./.github/tests/combinations/*.yml ./.github/tests/public-ports/*.yml | grep -v 'additional-services.yml' | jq -R -s -c 'split("\n")[:-1]')" >> $GITHUB_OUTPUT run-with-args: needs: list-ymls @@ -234,39 +234,6 @@ jobs: name: dump_additional_services_${{ github.run_id }} path: ./dump - static-ports: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - - name: Install Kurtosis CDK tools - uses: ./.github/actions/setup-kurtosis-cdk - - - name: Run Starlark - run: kurtosis run --enclave=${{ env.ENCLAVE_NAME }} --args-file=./.github/tests/static-ports.yml --show-enclave-inspect=false . - - - name: Inspect enclave - run: kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} - - - name: Monitor verified batches - working-directory: .github/scripts - run: | - ./monitor-verified-batches.sh \ - --enclave ${{ env.ENCLAVE_NAME }} \ - --rpc-url "$(kurtosis port print ${{ env.ENCLAVE_NAME }} cdk-erigon-node-001 rpc)" - - - name: Dump enclave logs - if: failure() - run: kurtosis dump ./dump - - - name: Upload logs - if: failure() - uses: actions/upload-artifact@v4 - with: - name: dump_attach_ckds_${{ github.run_id }} - path: ./dump - attach-second-cdk: runs-on: ubuntu-latest timeout-minutes: 30 diff --git a/input_parser.star b/input_parser.star index a2e64ff2..e4a5aa4d 100644 --- a/input_parser.star +++ b/input_parser.star @@ -58,9 +58,37 @@ DEFAULT_PORTS = { "zkevm_rpc_ws_port": 8133, } +# By default, we rely on dynamic ports set by Kurtosis. DEFAULT_PUBLIC_PORTS = { - # By default, we rely on dynamic ports set by Kurtosis. - "static_ports": {} + "public_ports": { + { + # L1 public ports (50000-50999). + "l1_public_ports": { + "l1_el_start_port": 50000, + "l1_cl_start_port": 50100, + "l1_vc_start_port": 50200, + "l1_additional_services_start_port": 50300, + }, + # L2/CDK public ports (51000-51999). + "l2_cdk_public_ports": { + "agglayer_start_port": 51000, + "cdk_node_start_port": 51100, + "zkevm_bridge_service_start_port": 51210, + "zkevm_bridge_ui_start_port": 51220, + "reverse_proxy_start_port": 51230, + "database_start_port": 51300, + "zkevm_pool_manager_start_port": 51400, + "zkevm_dac_start_port": 51500, + }, + # L2 additional services (52000-52999). + "l2_additional_services": { + "arpeggio_start_port": 52000, + "blutgang_start_port": 52100, + "erpc_start_port": 52200, + "panoptichain_start_port": 52300, + }, + } + } } # Addresses and private keys of the different components. @@ -164,6 +192,8 @@ DEFAULT_ROLLUP_ARGS = { "erigon_strict_mode": True, # Set to true to automatically deploy an ERC20 contract on L1 to be used as the gas token on the rollup. "zkevm_use_gas_token_contract": False, + # Use the default public ports. + "use_default_public_ports": False, } DEFAULT_PLESS_ZKEVM_NODE_ARGS = { @@ -207,7 +237,6 @@ DEFAULT_ARGS = ( } | DEFAULT_IMAGES | DEFAULT_PORTS - | DEFAULT_PUBLIC_PORTS | DEFAULT_ACCOUNTS | DEFAULT_L1_ARGS | DEFAULT_ROLLUP_ARGS @@ -235,12 +264,20 @@ def parse_args(plan, args): sequencer_type = args.get("sequencer_type", "") sequencer_name = get_sequencer_name(sequencer_type) - plan.print( - "DEBUG: " + str(deployment_stages.get("deploy_cdk_erigon_node", False)) - ) # DEBUG deploy_cdk_erigon_node = deployment_stages.get("deploy_cdk_erigon_node", False) l2_rpc_name = get_l2_rpc_name(deploy_cdk_erigon_node) + # Determine public ports. + # By default, we rely on dynamic ports set by Kurtosis. + if args.get("use_default_public_ports", False): + plan.print("Using default public ports.") + args = DEFAULT_PUBLIC_PORTS | args + else: + public_ports = args.get("public_ports", {}) + if public_ports: + plan.print("Using custom public ports.") + args = args | {"public_ports": public_ports} + # Remove deployment stages from the args struct. # This prevents updating already deployed services when updating the deployment stages. if "deployment_stages" in args: From 0347fd2ec36e80d8fe791a6abb2a85a5d1aa1b65 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 09:09:21 +0200 Subject: [PATCH 26/31] chore: update custom public ports --- .../public-ports/custom-public-ports.yml | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/tests/public-ports/custom-public-ports.yml b/.github/tests/public-ports/custom-public-ports.yml index da6c1b96..1f69b18f 100644 --- a/.github/tests/public-ports/custom-public-ports.yml +++ b/.github/tests/public-ports/custom-public-ports.yml @@ -1,23 +1,23 @@ args: static_ports: - # L1 static ports (50000-50999). - l1_el_start_port: 50000 - l1_cl_start_port: 50100 - l1_vc_start_port: 50200 - l1_additional_services_start_port: 50300 + # L1 static ports (60000-60999). + l1_el_start_port: 60000 + l1_cl_start_port: 60100 + l1_vc_start_port: 60200 + l1_additional_services_start_port: 60300 - # L2/CDK static ports (51000-51999). - agglayer_start_port: 51000 - cdk_node_start_port: 51100 - zkevm_bridge_service_start_port: 51210 - zkevm_bridge_ui_start_port: 51220 - reverse_proxy_start_port: 51230 - database_start_port: 51300 - zkevm_pool_manager_start_port: 51400 - zkevm_dac_start_port: 51500 + # L2/CDK static ports (61000-61999). + agglayer_start_port: 61000 + cdk_node_start_port: 61100 + zkevm_bridge_service_start_port: 61210 + zkevm_bridge_ui_start_port: 61220 + reverse_proxy_start_port: 61230 + database_start_port: 61300 + zkevm_pool_manager_start_port: 61400 + zkevm_dac_start_port: 61500 - # L2 additional services (52000-52999). - arpeggio_start_port: 52000 - blutgang_start_port: 52100 - erpc_start_port: 52200 - panoptichain_start_port: 52300 + # L2 additional services (62000-62999). + arpeggio_start_port: 62000 + blutgang_start_port: 62100 + erpc_start_port: 62200 + panoptichain_start_port: 62300 From c7ff7d3d5e7ed914fee8c5f513c6dce52d25d49b Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 09:12:36 +0200 Subject: [PATCH 27/31] fix: typo --- input_parser.star | 52 +++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/input_parser.star b/input_parser.star index e4a5aa4d..972d284a 100644 --- a/input_parser.star +++ b/input_parser.star @@ -61,33 +61,31 @@ DEFAULT_PORTS = { # By default, we rely on dynamic ports set by Kurtosis. DEFAULT_PUBLIC_PORTS = { "public_ports": { - { - # L1 public ports (50000-50999). - "l1_public_ports": { - "l1_el_start_port": 50000, - "l1_cl_start_port": 50100, - "l1_vc_start_port": 50200, - "l1_additional_services_start_port": 50300, - }, - # L2/CDK public ports (51000-51999). - "l2_cdk_public_ports": { - "agglayer_start_port": 51000, - "cdk_node_start_port": 51100, - "zkevm_bridge_service_start_port": 51210, - "zkevm_bridge_ui_start_port": 51220, - "reverse_proxy_start_port": 51230, - "database_start_port": 51300, - "zkevm_pool_manager_start_port": 51400, - "zkevm_dac_start_port": 51500, - }, - # L2 additional services (52000-52999). - "l2_additional_services": { - "arpeggio_start_port": 52000, - "blutgang_start_port": 52100, - "erpc_start_port": 52200, - "panoptichain_start_port": 52300, - }, - } + # L1 public ports (50000-50999). + "l1_public_ports": { + "l1_el_start_port": 50000, + "l1_cl_start_port": 50100, + "l1_vc_start_port": 50200, + "l1_additional_services_start_port": 50300, + }, + # L2/CDK public ports (51000-51999). + "l2_cdk_public_ports": { + "agglayer_start_port": 51000, + "cdk_node_start_port": 51100, + "zkevm_bridge_service_start_port": 51210, + "zkevm_bridge_ui_start_port": 51220, + "reverse_proxy_start_port": 51230, + "database_start_port": 51300, + "zkevm_pool_manager_start_port": 51400, + "zkevm_dac_start_port": 51500, + }, + # L2 additional services (52000-52999). + "l2_additional_services": { + "arpeggio_start_port": 52000, + "blutgang_start_port": 52100, + "erpc_start_port": 52200, + "panoptichain_start_port": 52300, + }, } } From 7ba484587731e3492142b060b62a6805eee10627 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 09:20:34 +0200 Subject: [PATCH 28/31] chore: clean up ports lib --- src/package_io/ports.star | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/package_io/ports.star b/src/package_io/ports.star index 8a43e3ee..550514b9 100644 --- a/src/package_io/ports.star +++ b/src/package_io/ports.star @@ -1,18 +1,22 @@ def get_public_ports(port_config, start_port_name, args): - public_ports = {} - static_port_config = args.get("static_ports") + static_port_config = args.get("static_ports", {}) + if not static_port_config: + return {} + start_port = static_port_config.get(start_port_name, None) - if start_port: - for index, (key, port) in enumerate(port_config.items()): - new_port = PortSpec( - number=start_port + index, - # Some ports don't define a transport protocol which makes this specific intruction fail. - # Solutions: - # 1. We don't care about transport protocol in the case of public ports. - # 2. We make it mandatory to define transport protocols in PortSpec. - # transport_protocol=port.get("transport_protocol"), - application_protocol=port.application_protocol, - ) - public_ports[key] = new_port + if not start_port: + return {} + public_ports = {} + for index, (key, port) in enumerate(port_config.items()): + new_port = PortSpec( + number=start_port + index, + # Some ports don't define a transport protocol which makes this specific intruction fail. + # Solutions: + # 1. We don't care about transport protocol in the case of public ports. + # 2. We make it mandatory to define transport protocols in PortSpec. + # transport_protocol=port.get("transport_protocol"), + application_protocol=port.application_protocol, + ) + public_ports[key] = new_port return public_ports From d8e9be58fe96664a2eb170c546ce4439a2aa8413 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 09:42:07 +0200 Subject: [PATCH 29/31] fix: typos --- .github/tests/public-ports/custom-public-ports.yml | 2 +- ethereum.star | 2 +- input_parser.star | 2 +- src/package_io/ports.star | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/tests/public-ports/custom-public-ports.yml b/.github/tests/public-ports/custom-public-ports.yml index 1f69b18f..3b1f1075 100644 --- a/.github/tests/public-ports/custom-public-ports.yml +++ b/.github/tests/public-ports/custom-public-ports.yml @@ -1,5 +1,5 @@ args: - static_ports: + public_ports: # L1 static ports (60000-60999). l1_el_start_port: 60000 l1_cl_start_port: 60100 diff --git a/ethereum.star b/ethereum.star index ed541263..5dba24e0 100644 --- a/ethereum.star +++ b/ethereum.star @@ -39,7 +39,7 @@ def generate_port_publisher_config(args): } port_publisher_config = {} - static_port_config = args.get("static_ports", {}) + static_port_config = args.get("public_ports", {}) for key, value in port_mappings.items(): public_port_start = static_port_config.get(value, None) if public_port_start: diff --git a/input_parser.star b/input_parser.star index 972d284a..9d97564c 100644 --- a/input_parser.star +++ b/input_parser.star @@ -269,7 +269,7 @@ def parse_args(plan, args): # By default, we rely on dynamic ports set by Kurtosis. if args.get("use_default_public_ports", False): plan.print("Using default public ports.") - args = DEFAULT_PUBLIC_PORTS | args + args = args | DEFAULT_PUBLIC_PORTS else: public_ports = args.get("public_ports", {}) if public_ports: diff --git a/src/package_io/ports.star b/src/package_io/ports.star index 550514b9..33c788b8 100644 --- a/src/package_io/ports.star +++ b/src/package_io/ports.star @@ -1,5 +1,5 @@ def get_public_ports(port_config, start_port_name, args): - static_port_config = args.get("static_ports", {}) + static_port_config = args.get("public_ports", {}) if not static_port_config: return {} From 18b5ad86ea46afbc1cb8a1abd8576f773936ea0c Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 10:17:18 +0200 Subject: [PATCH 30/31] fix: default public ports --- input_parser.star | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/input_parser.star b/input_parser.star index 9d97564c..ae098a53 100644 --- a/input_parser.star +++ b/input_parser.star @@ -62,30 +62,24 @@ DEFAULT_PORTS = { DEFAULT_PUBLIC_PORTS = { "public_ports": { # L1 public ports (50000-50999). - "l1_public_ports": { - "l1_el_start_port": 50000, - "l1_cl_start_port": 50100, - "l1_vc_start_port": 50200, - "l1_additional_services_start_port": 50300, - }, + "l1_el_start_port": 50000, + "l1_cl_start_port": 50100, + "l1_vc_start_port": 50200, + "l1_additional_services_start_port": 50300, # L2/CDK public ports (51000-51999). - "l2_cdk_public_ports": { - "agglayer_start_port": 51000, - "cdk_node_start_port": 51100, - "zkevm_bridge_service_start_port": 51210, - "zkevm_bridge_ui_start_port": 51220, - "reverse_proxy_start_port": 51230, - "database_start_port": 51300, - "zkevm_pool_manager_start_port": 51400, - "zkevm_dac_start_port": 51500, - }, + "agglayer_start_port": 51000, + "cdk_node_start_port": 51100, + "zkevm_bridge_service_start_port": 51210, + "zkevm_bridge_ui_start_port": 51220, + "reverse_proxy_start_port": 51230, + "database_start_port": 51300, + "zkevm_pool_manager_start_port": 51400, + "zkevm_dac_start_port": 51500, # L2 additional services (52000-52999). - "l2_additional_services": { - "arpeggio_start_port": 52000, - "blutgang_start_port": 52100, - "erpc_start_port": 52200, - "panoptichain_start_port": 52300, - }, + "arpeggio_start_port": 52000, + "blutgang_start_port": 52100, + "erpc_start_port": 52200, + "panoptichain_start_port": 52300, } } From b5f0b3cde05f50b999e2d9bd59e090636a369e01 Mon Sep 17 00:00:00 2001 From: leovct Date: Wed, 23 Oct 2024 10:19:48 +0200 Subject: [PATCH 31/31] chore: nit --- .github/tests/public-ports/custom-public-ports.yml | 4 ++-- ethereum.star | 6 +++--- src/package_io/ports.star | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/tests/public-ports/custom-public-ports.yml b/.github/tests/public-ports/custom-public-ports.yml index 3b1f1075..d56a7b17 100644 --- a/.github/tests/public-ports/custom-public-ports.yml +++ b/.github/tests/public-ports/custom-public-ports.yml @@ -1,12 +1,12 @@ args: public_ports: - # L1 static ports (60000-60999). + # L1 public ports (60000-60999). l1_el_start_port: 60000 l1_cl_start_port: 60100 l1_vc_start_port: 60200 l1_additional_services_start_port: 60300 - # L2/CDK static ports (61000-61999). + # L2/CDK public ports (61000-61999). agglayer_start_port: 61000 cdk_node_start_port: 61100 zkevm_bridge_service_start_port: 61210 diff --git a/ethereum.star b/ethereum.star index 5dba24e0..3594db29 100644 --- a/ethereum.star +++ b/ethereum.star @@ -29,7 +29,7 @@ def run(plan, args): ) -# Generate ethereum package static ports configuration. +# Generate ethereum package public ports configuration. def generate_port_publisher_config(args): port_mappings = { "el": "l1_el_start_port", @@ -39,9 +39,9 @@ def generate_port_publisher_config(args): } port_publisher_config = {} - static_port_config = args.get("public_ports", {}) + public_port_config = args.get("public_ports", {}) for key, value in port_mappings.items(): - public_port_start = static_port_config.get(value, None) + public_port_start = public_port_config.get(value, None) if public_port_start: port_publisher_config[key] = { "enabled": True, diff --git a/src/package_io/ports.star b/src/package_io/ports.star index 33c788b8..2110ec3c 100644 --- a/src/package_io/ports.star +++ b/src/package_io/ports.star @@ -1,9 +1,9 @@ def get_public_ports(port_config, start_port_name, args): - static_port_config = args.get("public_ports", {}) - if not static_port_config: + public_port_config = args.get("public_ports", {}) + if not public_port_config: return {} - start_port = static_port_config.get(start_port_name, None) + start_port = public_port_config.get(start_port_name, None) if not start_port: return {}