Skip to content

fix: blobscan redis dependency #712

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Jul 31, 2024
2 changes: 1 addition & 1 deletion .github/tests/mix-with-tools-minimal.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ additional_services:
- prometheus_grafana
- goomy_blob
- custom_flood
#- blobscan
- blobscan
- blockscout
- dugtrio
- blutgang
Expand Down
2 changes: 1 addition & 1 deletion .github/tests/mix-with-tools.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ additional_services:
- prometheus_grafana
- goomy_blob
- custom_flood
# - blobscan
- blobscan
- blockscout
- dugtrio
- blutgang
Expand Down
1 change: 1 addition & 0 deletions main.star
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,7 @@ def run(plan, args={}):
all_cl_contexts,
all_el_contexts,
network_id,
network_params,
persistent,
global_node_selectors,
args_with_right_defaults.port_publisher,
Expand Down
84 changes: 58 additions & 26 deletions src/blobscan/blobscan_launcher.star
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
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")

WEB_SERVICE_NAME = "blobscan-web"
API_SERVICE_NAME = "blobscan-api"
INDEXER_SERVICE_NAME = "blobscan-indexer"

SECRET_KEY = "supersecure"
WEB_HTTP_PORT_NUMBER = 3000
API_HTTP_PORT_NUMBER = 3001

Expand Down Expand Up @@ -51,22 +52,27 @@ POSTGRES_MAX_CPU = 1000
POSTGRES_MIN_MEMORY = 32
POSTGRES_MAX_MEMORY = 1024

# The min/max CPU/memory that redis can use
REDIS_MIN_CPU = 10
REDIS_MAX_CPU = 1000
REDIS_MIN_MEMORY = 32
REDIS_MAX_MEMORY = 1024


def launch_blobscan(
plan,
cl_contexts,
el_contexts,
chain_id,
network_id,
network_params,
persistent,
global_node_selectors,
port_publisher,
additional_service_index,
):
node_selectors = global_node_selectors
beacon_node_rpc_uri = "{0}".format(cl_contexts[0].beacon_http_url)
execution_node_rpc_uri = "http://{0}:{1}".format(
el_contexts[0].ip_addr, el_contexts[0].rpc_port_num
)
execution_node_rpc_uri = "{0}".format(el_contexts[0].rpc_http_url)

postgres_output = postgres.run(
plan,
Expand All @@ -78,10 +84,23 @@ def launch_blobscan(
persistent=persistent,
node_selectors=node_selectors,
)

redis_output = redis.run(
plan,
service_name="blobscan-redis",
min_cpu=REDIS_MIN_CPU,
max_cpu=REDIS_MAX_CPU,
min_memory=REDIS_MIN_MEMORY,
max_memory=REDIS_MAX_MEMORY,
persistent=persistent,
node_selectors=node_selectors,
)

api_config = get_api_config(
network_id,
postgres_output.url,
beacon_node_rpc_uri,
chain_id,
network_params.network,
redis_output.url,
node_selectors,
port_publisher,
additional_service_index,
Expand All @@ -94,8 +113,9 @@ def launch_blobscan(

web_config = get_web_config(
postgres_output.url,
network_params.network,
beacon_node_rpc_uri,
chain_id,
execution_node_rpc_uri,
node_selectors,
port_publisher,
additional_service_index,
Expand All @@ -104,17 +124,19 @@ def launch_blobscan(

indexer_config = get_indexer_config(
beacon_node_rpc_uri,
execution_node_rpc_uri,
blobscan_api_url,
execution_node_rpc_uri,
network_params.network,
node_selectors,
)
plan.add_service(INDEXER_SERVICE_NAME, indexer_config)


def get_api_config(
database_url,
beacon_node_rpc,
chain_id,
network_id,
postgres_url,
network_name,
redis_url,
node_selectors,
port_publisher,
additional_service_index,
Expand All @@ -133,11 +155,15 @@ def get_api_config(
ports=API_PORTS,
public_ports=public_ports,
env_vars={
"BEACON_NODE_ENDPOINT": beacon_node_rpc,
"CHAIN_ID": chain_id,
"DATABASE_URL": database_url,
"SECRET_KEY": "supersecret",
"CHAIN_ID": network_id,
"DATABASE_URL": postgres_url,
"REDIS_URI": redis_url,
"SECRET_KEY": SECRET_KEY,
"BLOBSCAN_API_PORT": str(API_HTTP_PORT_NUMBER),
"POSTGRES_STORAGE_ENABLED": "true",
"NETWORK_NAME": network_name
if network_name in constants.PUBLIC_NETWORKS
else "devnet",
},
cmd=["api"],
ready_conditions=ReadyCondition(
Expand All @@ -160,9 +186,10 @@ def get_api_config(


def get_web_config(
database_url,
postgres_url,
network_name,
beacon_node_rpc,
chain_id,
execution_node_rpc,
node_selectors,
port_publisher,
additional_service_index,
Expand All @@ -184,11 +211,12 @@ def get_web_config(
ports=WEB_PORTS,
public_ports=public_ports,
env_vars={
"DATABASE_URL": database_url,
"SECRET_KEY": "supersecret",
"NEXT_PUBLIC_NETWORK_NAME": "devnet",
"BEACON_NODE_ENDPOINT": beacon_node_rpc,
"CHAIN_ID": chain_id,
"DATABASE_URL": postgres_url,
"NEXT_PUBLIC_NETWORK_NAME": network_name
if network_name in constants.PUBLIC_NETWORKS
else "devnet",
"NEXT_BEACON_NODE_ENDPOINT": beacon_node_rpc,
"EXECUTION_NODE_ENDPOINT": execution_node_rpc,
},
cmd=["web"],
min_cpu=WEB_MIN_CPU,
Expand All @@ -201,19 +229,23 @@ def get_web_config(

def get_indexer_config(
beacon_node_rpc,
execution_node_rpc,
blobscan_api_url,
execution_node_rpc,
network_name,
node_selectors,
):
IMAGE_NAME = "blossomlabs/blobscan-indexer:master"

return ServiceConfig(
image=IMAGE_NAME,
env_vars={
"SECRET_KEY": "supersecret",
"BEACON_NODE_ENDPOINT": beacon_node_rpc,
"BLOBSCAN_API_ENDPOINT": blobscan_api_url,
"EXECUTION_NODE_ENDPOINT": execution_node_rpc,
"BEACON_NODE_ENDPOINT": beacon_node_rpc,
"NETWORK_NAME": network_name
if network_name in constants.PUBLIC_NETWORKS
else "devnet",
"SECRET_KEY": SECRET_KEY,
},
entrypoint=ENTRYPOINT_ARGS,
cmd=[" && ".join(["sleep 90", "/app/blob-indexer"])],
Expand Down
Loading