Commit 7e361913 authored by Barnabas Busa's avatar Barnabas Busa Committed by GitHub

feat: add beacon snooper (#520)

parent 177beeb9
......@@ -4,11 +4,11 @@ participants:
use_separate_vc: true
- el_type: nethermind
cl_type: prysm
- el_type: besu
cl_type: lighthouse
- el_type: erigon
cl_type: nimbus
use_separate_vc: true
- el_type: besu
cl_type: lighthouse
- el_type: reth
cl_type: lodestar
- el_type: ethereumjs
......
......@@ -10,7 +10,9 @@ participants:
- el_type: reth
cl_type: lodestar
- el_type: ethereumjs
cl_type: teku
cl_type: grandine
- el_type: geth
cl_type: grandine
additional_services:
- tx_spammer
- blob_spammer
......
......@@ -138,7 +138,7 @@ def run(plan, args={}):
ranges = validator_ranges.generate_validator_ranges(
plan,
validator_ranges_config_template,
all_cl_contexts,
all_participants,
args_with_right_defaults.participants,
)
......@@ -370,7 +370,8 @@ def run(plan, args={}):
dora.launch_dora(
plan,
dora_config_template,
all_cl_contexts,
all_participants,
args_with_right_defaults.participants,
el_cl_data_files_artifact_uuid,
network_params.electra_fork_epoch,
network_params.network,
......
......@@ -42,17 +42,21 @@ def launch_assertoor(
vc_info = []
for index, participant in enumerate(participant_contexts):
participant_config = participant_configs[index]
cl_client = participant.cl_context
el_client = participant.el_context
(
full_name,
cl_client,
el_client,
participant_config,
) = shared_utils.get_client_names(
participant, index, participant_contexts, participant_configs
)
all_client_info.append(
new_client_info(
cl_client.ip_addr,
cl_client.http_port_num,
el_client.ip_addr,
el_client.rpc_port_num,
cl_client.beacon_service_name,
full_name,
)
)
......@@ -162,11 +166,11 @@ def new_config_template_data(listen_port_num, client_info, vc_info, assertoor_pa
}
def new_client_info(cl_ip_addr, cl_port_num, el_ip_addr, el_port_num, service_name):
def new_client_info(cl_ip_addr, cl_port_num, el_ip_addr, el_port_num, full_name):
return {
"CLIPAddr": cl_ip_addr,
"CLPortNum": cl_port_num,
"ELIPAddr": el_ip_addr,
"ELPortNum": el_port_num,
"Name": service_name,
"Name": full_name,
}
......@@ -9,7 +9,7 @@ constants = import_module("../package_io/constants.star")
input_parser = import_module("../package_io/input_parser.star")
shared_utils = import_module("../shared_utils/shared_utils.star")
snooper = import_module("../snooper/snooper_engine_launcher.star")
engine_snooper = import_module("../snooper/snooper_engine_launcher.star")
cl_context_BOOTNODE = None
......@@ -130,10 +130,10 @@ def launch(
cl_context = None
snooper_engine_context = None
if participant.snooper_enabled:
snooper_service_name = "snooper-{0}-{1}-{2}".format(
snooper_service_name = "snooper-engine-{0}-{1}-{2}".format(
index_str, cl_type, el_type
)
snooper_engine_context = snooper.launch(
snooper_engine_context = engine_snooper.launch(
plan,
snooper_service_name,
el_context,
......@@ -145,7 +145,7 @@ def launch(
)
)
all_snooper_engine_contexts.append(snooper_engine_context)
full_name = "{0}-{1}-{2}".format(index_str, el_type, cl_type)
if index == 0:
cl_context = launch_method(
plan,
......@@ -156,6 +156,7 @@ def launch(
global_log_level,
cl_context_BOOTNODE,
el_context,
full_name,
new_cl_node_validator_keystores,
participant.cl_min_cpu,
participant.cl_max_cpu,
......@@ -187,6 +188,7 @@ def launch(
global_log_level,
boot_cl_client_ctx,
el_context,
full_name,
new_cl_node_validator_keystores,
participant.cl_min_cpu,
participant.cl_max_cpu,
......
......@@ -69,6 +69,7 @@ def launch(
global_log_level,
bootnode_context,
el_context,
full_name,
node_keystore_files,
cl_min_cpu,
cl_max_cpu,
......@@ -130,6 +131,7 @@ def launch(
beacon_service_name,
bootnode_context,
el_context,
full_name,
log_level,
node_keystore_files,
cl_min_cpu,
......@@ -207,6 +209,7 @@ def get_beacon_config(
service_name,
bootnode_contexts,
el_context,
full_name,
log_level,
node_keystore_files,
cl_min_cpu,
......@@ -274,7 +277,7 @@ def get_beacon_config(
"--keystore-dir=" + validator_keys_dirpath,
"--keystore-password-file=" + validator_secrets_dirpath,
"--suggested-fee-recipient=" + constants.VALIDATING_REWARDS_ACCOUNT,
"--graffiti=" + constants.CL_TYPE.grandine + "-" + el_context.client_name,
"--graffiti=" + full_name,
]
if network not in constants.PUBLIC_NETWORKS:
......
......@@ -71,6 +71,7 @@ def launch(
global_log_level,
bootnode_contexts,
el_context,
full_name,
node_keystore_files,
cl_min_cpu,
cl_max_cpu,
......
......@@ -60,6 +60,7 @@ def launch(
global_log_level,
bootnode_contexts,
el_context,
full_name,
node_keystore_files,
cl_min_cpu,
cl_max_cpu,
......
......@@ -82,6 +82,7 @@ def launch(
global_log_level,
bootnode_contexts,
el_context,
full_name,
node_keystore_files,
cl_min_cpu,
cl_max_cpu,
......@@ -143,6 +144,7 @@ def launch(
beacon_service_name,
bootnode_contexts,
el_context,
full_name,
log_level,
node_keystore_files,
cl_min_cpu,
......@@ -219,6 +221,7 @@ def get_beacon_config(
service_name,
bootnode_contexts,
el_context,
full_name,
log_level,
node_keystore_files,
cl_min_cpu,
......@@ -298,7 +301,7 @@ def get_beacon_config(
"--validators-dir=" + validator_keys_dirpath,
"--secrets-dir=" + validator_secrets_dirpath,
"--suggested-fee-recipient=" + constants.VALIDATING_REWARDS_ACCOUNT,
"--graffiti=" + constants.CL_TYPE.nimbus + "-" + el_context.client_name,
"--graffiti=" + full_name,
"--keymanager",
"--keymanager-port={0}".format(vc_shared.VALIDATOR_HTTP_PORT_NUM),
"--keymanager-address=0.0.0.0",
......
......@@ -67,6 +67,7 @@ def launch(
global_log_level,
bootnode_contexts,
el_context,
full_name,
node_keystore_files,
cl_min_cpu,
cl_max_cpu,
......
......@@ -71,6 +71,7 @@ def launch(
global_log_level,
bootnode_context,
el_context,
full_name,
node_keystore_files,
cl_min_cpu,
cl_max_cpu,
......@@ -134,6 +135,7 @@ def launch(
beacon_service_name,
bootnode_context,
el_context,
full_name,
log_level,
node_keystore_files,
cl_min_cpu,
......@@ -213,6 +215,7 @@ def get_beacon_config(
service_name,
bootnode_contexts,
el_context,
full_name,
log_level,
node_keystore_files,
cl_min_cpu,
......@@ -295,10 +298,7 @@ def get_beacon_config(
),
"--validators-proposer-default-fee-recipient="
+ constants.VALIDATING_REWARDS_ACCOUNT,
"--validators-graffiti="
+ constants.CL_TYPE.teku
+ "-"
+ el_context.client_name,
"--validators-graffiti=" + full_name,
"--validator-api-enabled=true",
"--validator-api-host-allowlist=*",
"--validator-api-port={0}".format(vc_shared.VALIDATOR_HTTP_PORT_NUM),
......
......@@ -30,17 +30,23 @@ USED_PORTS = {
def launch_dora(
plan,
config_template,
cl_contexts,
participant_contexts,
participant_configs,
el_cl_data_files_artifact_uuid,
electra_fork_epoch,
network,
global_node_selectors,
):
all_cl_client_info = []
for index, client in enumerate(cl_contexts):
for index, participant in enumerate(participant_contexts):
full_name, cl_client, _, _ = shared_utils.get_client_names(
participant, index, participant_contexts, participant_configs
)
all_cl_client_info.append(
new_cl_client_info(
client.ip_addr, client.http_port_num, client.beacon_service_name
cl_client.ip_addr,
cl_client.http_port_num,
full_name,
)
)
......@@ -113,5 +119,9 @@ def new_config_template_data(network, listen_port_num, cl_client_info):
}
def new_cl_client_info(ip_addr, port_num, service_name):
return {"IPAddr": ip_addr, "PortNum": port_num, "Name": service_name}
def new_cl_client_info(ip_addr, port_num, full_name):
return {
"IPAddr": ip_addr,
"PortNum": port_num,
"FullName": full_name,
}
......@@ -65,6 +65,8 @@ KEYMANAGER_P12_MOUNT_PATH_ON_CONTAINER = (
KEYMANAGER_P12_MOUNT_PATH_ON_CLIENTS + "/validator_keystore.p12"
)
DEFAULT_SNOOPER_IMAGE = "ethpandaops/json-rpc-snoop:1.1.0"
GENESIS_FORK_VERSION = "0x10000038"
BELLATRIX_FORK_VERSION = "0x30000038"
CAPELLA_FORK_VERSION = "0x40000038"
......
......@@ -24,6 +24,8 @@ el_client_launcher = import_module("./el/el_launcher.star")
cl_client_launcher = import_module("./cl/cl_launcher.star")
vc = import_module("./vc/vc_launcher.star")
beacon_snooper = import_module("./snooper/snooper_beacon_launcher.star")
def launch_participant_network(
plan,
......@@ -185,6 +187,7 @@ def launch_participant_network(
all_ethereum_metrics_exporter_contexts = []
all_xatu_sentry_contexts = []
all_vc_contexts = []
all_snooper_beacon_contexts = []
# Some CL clients cannot run validator clients in the same process and need
# a separate validator client
_cls_that_need_separate_vc = [
......@@ -192,6 +195,7 @@ def launch_participant_network(
constants.CL_TYPE.lodestar,
constants.CL_TYPE.lighthouse,
]
for index, participant in enumerate(participants):
el_type = participant.el_type
cl_type = participant.cl_type
......@@ -199,6 +203,11 @@ def launch_participant_network(
index_str = shared_utils.zfill_custom(index + 1, len(str(len(participants))))
el_context = all_el_contexts[index]
cl_context = all_cl_contexts[index]
node_selectors = input_parser.get_client_node_selectors(
participant.node_selectors,
global_node_selectors,
)
if participant.ethereum_metrics_exporter_enabled:
pair_name = "{0}-{1}-{2}".format(index_str, cl_type, el_type)
......@@ -212,7 +221,7 @@ def launch_participant_network(
ethereum_metrics_exporter_service_name,
el_context,
cl_context,
participant.node_selectors,
node_selectors,
)
plan.print(
"Successfully added {0} ethereum metrics exporter participants".format(
......@@ -236,7 +245,7 @@ def launch_participant_network(
xatu_sentry_params,
network_params,
pair_name,
participant.node_selectors,
node_selectors,
)
plan.print(
"Successfully added {0} xatu sentry participants".format(
......@@ -270,6 +279,42 @@ def launch_participant_network(
if participant.validator_count != 0:
vc_keystores = preregistered_validator_keys_for_nodes[index]
vc_context = None
snooper_beacon_context = None
if participant.snooper_enabled:
if (
participant.cl_type == constants.CL_TYPE.teku
or participant.cl_type == constants.CL_TYPE.nimbus
or participant.cl_type == constants.CL_TYPE.grandine
) and participant.use_separate_vc != False:
plan.print(
"Beacon snooper not supported for non split operation for {0}".format(
participant.cl_type
)
)
continue
snooper_service_name = "snooper-beacon-{0}-{1}-{2}".format(
index_str, cl_type, vc_type
)
snooper_beacon_context = beacon_snooper.launch(
plan,
snooper_service_name,
cl_context,
node_selectors,
)
plan.print(
"Successfully added {0} snooper participants".format(
snooper_beacon_context
)
)
all_snooper_beacon_contexts.append(snooper_beacon_context)
full_name = (
"{0}-{1}-{2}".format(index_str, el_type, cl_type) + "-{0}".format(vc_type)
if participant.cl_type != participant.vc_type
else "{0}-{1}-{2}".format(index_str, el_type, cl_type)
)
vc_context = vc.launch(
plan=plan,
launcher=vc.new_vc_launcher(el_cl_genesis_data=el_cl_data),
......@@ -282,6 +327,9 @@ def launch_participant_network(
global_log_level=global_log_level,
cl_context=cl_context,
el_context=el_context,
full_name=full_name,
snooper_enabled=participant.snooper_enabled,
snooper_beacon_context=snooper_beacon_context,
node_keystore_files=vc_keystores,
vc_min_cpu=participant.vc_min_cpu,
vc_max_cpu=participant.vc_max_cpu,
......@@ -295,7 +343,7 @@ def launch_participant_network(
vc_tolerations=participant.vc_tolerations,
participant_tolerations=participant.tolerations,
global_tolerations=global_tolerations,
node_selectors=participant.node_selectors,
node_selectors=node_selectors,
network=network_params.network,
electra_fork_epoch=network_params.electra_fork_epoch,
)
......
......@@ -5,22 +5,24 @@ shared_utils = import_module("../../shared_utils/shared_utils.star")
def generate_validator_ranges(
plan,
config_template,
cl_contexts,
participants,
participant_contexts,
participant_configs,
):
data = []
running_total_validator_count = 0
for index, client in enumerate(cl_contexts):
participant = participants[index]
for index, participant in enumerate(participant_contexts):
full_name, _, _, _ = shared_utils.get_client_names(
participant, index, participant_contexts, participant_configs
)
participant = participant_configs[index]
if participant.validator_count == 0:
continue
start_index = running_total_validator_count
running_total_validator_count += participant.validator_count
end_index = start_index + participant.validator_count - 1
service_name = client.beacon_service_name
data.append(
{
"ClientName": service_name,
"ClientName": full_name,
"Range": "{0}-{1}".format(start_index, end_index),
}
)
......
......@@ -196,3 +196,20 @@ def calculate_devnet_url(network):
return "github.com/ethpandaops/{0}-devnets/network-configs/{1}{2}-{3}".format(
devnet_category, devnet_subname, network_type, devnet_number
)
def get_client_names(participant, index, participant_contexts, participant_configs):
index_str = zfill_custom(index + 1, len(str(len(participant_contexts))))
participant_config = participant_configs[index]
cl_client = participant.cl_context
el_client = participant.el_context
vc_client = participant.vc_context
full_name = (
"{0}-{1}-{2}".format(index_str, el_client.client_name, cl_client.client_name)
+ "-{0}".format(vc_client.client_name)
if vc_client != None and cl_client.client_name != vc_client.client_name
else "{0}-{1}-{2}".format(
index_str, el_client.client_name, cl_client.client_name
)
)
return full_name, cl_client, el_client, participant_config
def new_snooper_beacon_client_context(ip_addr, beacon_rpc_port_num):
return struct(
ip_addr=ip_addr,
beacon_rpc_port_num=beacon_rpc_port_num,
)
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")
cl_context = import_module("../cl/cl_context.star")
snooper_beacon_context = import_module("../snooper/snooper_beacon_context.star")
SNOOPER_BEACON_RPC_PORT_NUM = 8562
SNOOPER_BEACON_RPC_PORT_ID = "http"
SNOOPER_BINARY_COMMAND = "./json_rpc_snoop"
PRIVATE_IP_ADDRESS_PLACEHOLDER = "KURTOSIS_IP_ADDR_PLACEHOLDER"
SNOOPER_USED_PORTS = {
SNOOPER_BEACON_RPC_PORT_ID: shared_utils.new_port_spec(
SNOOPER_BEACON_RPC_PORT_NUM, shared_utils.TCP_PROTOCOL, wait="5s"
),
}
# The min/max CPU/memory that snooper can use
MIN_CPU = 10
MAX_CPU = 100
MIN_MEMORY = 10
MAX_MEMORY = 300
def launch(plan, service_name, cl_context, node_selectors):
snooper_service_name = "{0}".format(service_name)
snooper_config = get_config(service_name, cl_context, node_selectors)
snooper_service = plan.add_service(snooper_service_name, snooper_config)
snooper_http_port = snooper_service.ports[SNOOPER_BEACON_RPC_PORT_ID]
return snooper_beacon_context.new_snooper_beacon_client_context(
snooper_service.ip_address, SNOOPER_BEACON_RPC_PORT_NUM
)
def get_config(service_name, cl_context, node_selectors):
beacon_rpc_port_num = "http://{0}:{1}".format(
cl_context.ip_addr,
cl_context.http_port_num,
)
cmd = [
SNOOPER_BINARY_COMMAND,
"-b=0.0.0.0",
"-p={0}".format(SNOOPER_BEACON_RPC_PORT_NUM),
"{0}".format(beacon_rpc_port_num),
]
return ServiceConfig(
image=constants.DEFAULT_SNOOPER_IMAGE,
ports=SNOOPER_USED_PORTS,
cmd=cmd,
private_ip_address_placeholder=PRIVATE_IP_ADDRESS_PLACEHOLDER,
min_cpu=MIN_CPU,
max_cpu=MAX_CPU,
min_memory=MIN_MEMORY,
max_memory=MAX_MEMORY,
node_selectors=node_selectors,
)
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")
el_context = import_module("../el/el_context.star")
el_admin_node_info = import_module("../el/el_admin_node_info.star")
snooper_engine_context = import_module("../snooper/snooper_engine_context.star")
SNOOPER_ENGINE_RPC_PORT_NUM = 8561
......@@ -10,14 +10,13 @@ SNOOPER_BINARY_COMMAND = "./json_rpc_snoop"
PRIVATE_IP_ADDRESS_PLACEHOLDER = "KURTOSIS_IP_ADDR_PLACEHOLDER"
DEFAULT_SNOOPER_IMAGE = "ethpandaops/json-rpc-snoop:1.1.0"
SNOOPER_USED_PORTS = {
SNOOPER_ENGINE_RPC_PORT_ID: shared_utils.new_port_spec(
SNOOPER_ENGINE_RPC_PORT_NUM, shared_utils.TCP_PROTOCOL, wait="5s"
),
}
# The min/max CPU/memory that snooper can use
MIN_CPU = 10
MAX_CPU = 100
......@@ -50,7 +49,7 @@ def get_config(service_name, el_context, node_selectors):
]
return ServiceConfig(
image=DEFAULT_SNOOPER_IMAGE,
image=constants.DEFAULT_SNOOPER_IMAGE,
ports=SNOOPER_USED_PORTS,
cmd=cmd,
private_ip_address_placeholder=PRIVATE_IP_ADDRESS_PLACEHOLDER,
......
......@@ -23,6 +23,7 @@ def get_config(
beacon_http_url,
cl_context,
el_context,
full_name,
node_keystore_files,
vc_min_cpu,
vc_max_cpu,
......@@ -74,7 +75,7 @@ def get_config(
"--metrics-allow-origin=*",
"--metrics-port={0}".format(vc_shared.VALIDATOR_CLIENT_METRICS_PORT_NUM),
# ^^^^^^^^^^^^^^^^^^^ PROMETHEUS CONFIG ^^^^^^^^^^^^^^^^^^^^^
"--graffiti=" + cl_context.client_name + "-" + el_context.client_name,
"--graffiti=" + full_name,
]
if not (constants.NETWORK_NAME.verkle in network or electra_fork_epoch != None):
......
......@@ -20,6 +20,7 @@ def get_config(
beacon_http_url,
cl_context,
el_context,
full_name,
node_keystore_files,
vc_min_cpu,
vc_max_cpu,
......@@ -65,7 +66,7 @@ def get_config(
"--metrics.address=0.0.0.0",
"--metrics.port={0}".format(vc_shared.VALIDATOR_CLIENT_METRICS_PORT_NUM),
# ^^^^^^^^^^^^^^^^^^^ PROMETHEUS CONFIG ^^^^^^^^^^^^^^^^^^^^^
"--graffiti=" + cl_context.client_name + "-" + el_context.client_name,
"--graffiti=" + full_name,
"--useProduceBlockV3",
]
......
......@@ -10,6 +10,7 @@ def get_config(
beacon_http_url,
cl_context,
el_context,
full_name,
node_keystore_files,
vc_min_cpu,
vc_max_cpu,
......@@ -47,7 +48,7 @@ def get_config(
"--metrics",
"--metrics-address=0.0.0.0",
"--metrics-port={0}".format(vc_shared.VALIDATOR_CLIENT_METRICS_PORT_NUM),
"--graffiti=" + cl_context.client_name + "-" + el_context.client_name,
"--graffiti=" + full_name,
]
if len(extra_params) > 0:
......
......@@ -12,6 +12,7 @@ def get_config(
beacon_http_url,
cl_context,
el_context,
full_name,
node_keystore_files,
vc_min_cpu,
vc_max_cpu,
......@@ -56,7 +57,7 @@ def get_config(
"--monitoring-host=0.0.0.0",
"--monitoring-port={0}".format(vc_shared.VALIDATOR_CLIENT_METRICS_PORT_NUM),
# ^^^^^^^^^^^^^^^^^^^ METRICS CONFIG ^^^^^^^^^^^^^^^^^^^^^
"--graffiti=" + cl_context.client_name + "-" + el_context.client_name,
"--graffiti=" + full_name,
]
if len(extra_params) > 0:
......
......@@ -11,6 +11,7 @@ def get_config(
beacon_http_url,
cl_context,
el_context,
full_name,
node_keystore_files,
vc_min_cpu,
vc_max_cpu,
......@@ -46,10 +47,7 @@ def get_config(
),
"--validators-proposer-default-fee-recipient="
+ constants.VALIDATING_REWARDS_ACCOUNT,
"--validators-graffiti="
+ cl_context.client_name
+ "-"
+ el_context.client_name,
"--validators-graffiti=" + full_name,
"--validator-api-enabled=true",
"--validator-api-host-allowlist=*",
"--validator-api-port={0}".format(vc_shared.VALIDATOR_HTTP_PORT_NUM),
......
def new_vc_context(
service_name,
client_name,
service_name,
metrics_info,
):
return struct(
service_name=service_name,
client_name=client_name,
service_name=service_name,
metrics_info=metrics_info,
)
......@@ -29,6 +29,9 @@ def launch(
global_log_level,
cl_context,
el_context,
full_name,
snooper_enabled,
snooper_beacon_context,
node_keystore_files,
vc_min_cpu,
vc_max_cpu,
......@@ -53,6 +56,12 @@ def launch(
vc_tolerations, participant_tolerations, global_tolerations
)
if snooper_enabled:
beacon_http_url = "http://{}:{}".format(
snooper_beacon_context.ip_addr,
snooper_beacon_context.beacon_rpc_port_num,
)
else:
beacon_http_url = "http://{}:{}".format(
cl_context.ip_addr,
cl_context.http_port_num,
......@@ -72,6 +81,7 @@ def launch(
beacon_http_url=beacon_http_url,
cl_context=cl_context,
el_context=el_context,
full_name=full_name,
node_keystore_files=node_keystore_files,
vc_min_cpu=vc_min_cpu,
vc_max_cpu=vc_max_cpu,
......@@ -94,6 +104,7 @@ def launch(
beacon_http_url=beacon_http_url,
cl_context=cl_context,
el_context=el_context,
full_name=full_name,
node_keystore_files=node_keystore_files,
vc_min_cpu=vc_min_cpu,
vc_max_cpu=vc_max_cpu,
......@@ -114,6 +125,7 @@ def launch(
beacon_http_url=beacon_http_url,
cl_context=cl_context,
el_context=el_context,
full_name=full_name,
node_keystore_files=node_keystore_files,
vc_min_cpu=vc_min_cpu,
vc_max_cpu=vc_max_cpu,
......@@ -133,6 +145,7 @@ def launch(
beacon_http_url=beacon_http_url,
cl_context=cl_context,
el_context=el_context,
full_name=full_name,
node_keystore_files=node_keystore_files,
vc_min_cpu=vc_min_cpu,
vc_max_cpu=vc_max_cpu,
......@@ -158,6 +171,7 @@ def launch(
beacon_http_url=beacon_http_url,
cl_context=cl_context,
el_context=el_context,
full_name=full_name,
node_keystore_files=node_keystore_files,
vc_min_cpu=vc_min_cpu,
vc_max_cpu=vc_max_cpu,
......@@ -171,6 +185,8 @@ def launch(
tolerations=tolerations,
node_selectors=node_selectors,
)
elif vc_type == constants.VC_TYPE.grandine:
fail("Grandine VC is not yet supported")
else:
fail("Unsupported vc_type: {0}".format(vc_type))
......@@ -189,8 +205,8 @@ def launch(
validator_http_port = validator_service.ports[vc_shared.VALIDATOR_HTTP_PORT_ID]
return vc_context.new_vc_context(
service_name=service_name,
client_name=vc_type,
service_name=service_name,
metrics_info=validator_node_metrics_info,
)
......
......@@ -35,7 +35,7 @@ beaconapi:
endpoints:
{{ range $clClient := .CLClientInfo }}
- url: "http://{{ $clClient.IPAddr }}:{{ $clClient.PortNum }}"
name: "{{ $clClient.Name }}"
name: "{{ $clClient.FullName }}"
archive: true
{{- end }}
# local cache for page models
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment