Refactored more system variables

This commit is contained in:
Alberto Soutullo
2023-02-21 16:31:16 +01:00
committed by Alberto Soutullo Rendo
parent 009bb25956
commit 9fdec86e1d
10 changed files with 55 additions and 60 deletions

View File

@@ -17,10 +17,9 @@ def run(plan, args):
config_json = read_file(src=config_file)
config = json.decode(config_json)
kurtosis_config = config['kurtosis']
wsl_config = config['wsl']
interconnection_batch = kurtosis_config['interconnection_batch']
nodes_per_container = kurtosis_config['nodes_per_container']
kurtosis_config = config[vars.KURTOSIS_KEY]
wsl_config = config[vars.WLS_KEY]
interconnection_batch = kurtosis_config[vars.INTERCONNECTION_BATCH_KEY]
# Load network topology
network_topology = read_file(src=vars.TOPOLOGIES_LOCATION + vars.DEFAULT_TOPOLOGY_FILE)

View File

@@ -1,14 +1,14 @@
# System Imports
vars = import_module("github.com/logos-co/wakurtosis/src/system_variables.star")
def get_configuration_file_name(plan, input_args):
# Parse command line argument (config file)
config_file = vars.DEFAULT_CONFIG_FILE
if hasattr(input_args, "config_file"):
if hasattr(input_args, vars.CONFIG_FILE_STARLARK_PARAMETER):
config_file = input_args.config_file
plan.print("Got config file: %s" %config_file)
else:
plan.print("Got default config file: %s" %config_file)
return config_file

View File

@@ -19,17 +19,19 @@ def get_toml_configuration_artifact(plan, config_file, name, testing):
return artifact_id
def generate_template_node_targets(services, port_id):
def generate_template_node_targets(services, port_id, key_value):
template_data = {}
targets_data = []
for service_name in services["nodes"].keys():
service_ip = services["nodes"][service_name]["ip_address"]
service_port_number = str(services["nodes"][service_name]["ports"][port_id+"_"+service_name][0])
for service_name in services[vars.GENNET_NODES_KEY].keys():
service_info = services[vars.GENNET_NODES_KEY][service_name]
service_ip = service_info[vars.IP_KEY]
service_port_number = str(service_info[vars.PORTS_KEY][port_id+"_"+service_name][0])
targets_data.append('"' + service_ip + ":" + service_port_number + '"')
data_as_string = ",".join(targets_data)
targets_payload = "[" + data_as_string + "]"
template_data["targets"] = targets_payload
template_data[key_value] = targets_payload
return template_data

View File

@@ -44,7 +44,7 @@ def create_prometheus_targets(plan, network_topology):
# get ip and ports of all nodes
template_data = files.generate_template_node_targets(network_topology,
vars.PROMETHEUS_PORT_ID)
vars.PROMETHEUS_PORT_ID, "targets")
template = templates.get_prometheus_template()
@@ -55,7 +55,7 @@ def create_prometheus_targets(plan, network_topology):
data=template_data,
)
},
name="prometheus_targets"
name=vars.PROMETHEUS_TEMPLATE_NAME
)
return artifact_id

View File

@@ -10,14 +10,14 @@ gowaku_builder = import_module(vars.GOWAKU_BUILDER_MODULE)
service_builder_dispatcher = {
"go-waku": gowaku_builder.prepare_gowaku_service,
"nim-waku": nwaku_builder.prepare_nwaku_service
vars.GENNET_GOWAKU_IMAGE_VALUE: gowaku_builder.prepare_gowaku_service,
vars.GENNET_NWAKU_IMAGE_VALUE: nwaku_builder.prepare_nwaku_service
# nomos: nomos_builder.prepare_nomos_service
}
ports_dispatcher = {
"go-waku": waku_builder._add_waku_ports_info_to_topology,
"nim-waku": waku_builder._add_waku_ports_info_to_topology
vars.GENNET_GOWAKU_IMAGE_VALUE: waku_builder._add_waku_ports_info_to_topology,
vars.GENNET_NWAKU_IMAGE_VALUE: waku_builder._add_waku_ports_info_to_topology
# nomos: nomos_builder._add_nomos_ports_info_to_topology
}
@@ -77,19 +77,10 @@ def _add_service_info_to_topology(plan, all_services_information, network_topolo
node_peer_id = waku.get_wakunode_peer_id(plan, node_info[vars.GENNET_NODE_CONTAINER_KEY],
node_rpc_port_id)
network_topology[vars.GENNET_NODES_KEY][node_id][vars.GENNET_PEER_ID_KEY] = node_peer_id
network_topology[vars.GENNET_NODES_KEY][node_id][vars.PEER_ID_KEY] = node_peer_id
network_topology[vars.GENNET_NODES_KEY][node_id][vars.GENNET_IP_KEY] = \
network_topology[vars.GENNET_NODES_KEY][node_id][vars.IP_KEY] = \
all_services_information[node_info[vars.GENNET_NODE_CONTAINER_KEY]].ip_address
ports_adder = ports_dispatcher[node_info[vars.GENNET_IMAGE_KEY]]
ports_adder(network_topology, all_services_information, node_info, node_id)
def prepare_config_files_in_service(node_names, artifact_ids):
prepared_files = {}
for i in range(len(node_names)):
prepared_files[vars.CONTAINER_NODE_CONFIG_FILE_LOCATION + node_names[i]] = artifact_ids[i]
return prepared_files

View File

@@ -40,8 +40,7 @@ def _add_waku_ports_info_to_topology(network_topology, all_services_information,
def _add_waku_port(network_topology, all_services_information, node_id, node_info, port_id):
network_topology[vars.GENNET_NODES_KEY][node_id][vars.TOPOLOGY_PORTS_KEY] = {}
network_topology[vars.GENNET_NODES_KEY][node_id][vars.TOPOLOGY_PORTS_KEY][port_id] = \
network_topology[vars.GENNET_NODES_KEY][node_id][vars.PORTS_KEY][port_id] = \
(all_services_information[node_info[vars.GENNET_NODE_CONTAINER_KEY]].ports[
port_id].number,
all_services_information[node_info[vars.GENNET_NODE_CONTAINER_KEY]].ports[

View File

@@ -2,11 +2,16 @@
NWAKU_IMAGE = "statusteam/nim-waku:019f357d"
GOWAKU_IMAGE = "gowaku"
NODE_IMAGES_FROM_GENNET = ["go-waku", "nim-waku"]
RPC_PORT_ID = "rpc"
NODE_CONFIG_FILE_LOCATION = "github.com/logos-co/wakurtosis/config/topology_generated/"
CONTAINER_NODE_CONFIG_FILE_LOCATION = "/node/configuration_file/"
GENERAL_ENTRYPOINT = ["/bin/sh", "-c"]
CONFIG_FILE_STARLARK_PARAMETER = "config_file"
# Config file keys
KURTOSIS_KEY = "kurtosis"
WLS_KEY = "wls"
INTERCONNECTION_BATCH_KEY = "interconnection_batch"
# Waku Configuration
WAKU_RPC_PORT_PROTOCOL = "TCP"
@@ -28,6 +33,8 @@ PROMETHEUS_PORT_ID = "prometheus"
PROMETHEUS_PORT_PROTOCOL = "TCP"
PROMETHEUS_PORT_NUMBER = 8008
PROMETHEUS_CONFIGURATION_PATH = "github.com/logos-co/wakurtosis/monitoring/prometheus.yml"
PROMETHEUS_TEMPLATE_NAME = "prometheus_targets"
CONTAINER_CONFIGURATION_LOCATION_PROMETHEUS = "/test/"
CONTAINER_CONFIGURATION_LOCATION_PROMETHEUS_2 = "/tmp/"
@@ -57,9 +64,13 @@ GENNET_ALL_CONTAINERS_KEY = "containers"
GENNET_IMAGE_KEY = "image"
GENNET_CONFIG_KEY = "node_config"
GENNET_NODE_CONTAINER_KEY = "container_id"
GENNET_PEER_ID_KEY = "peer_id"
GENNET_IP_KEY = "ip_address"
TOPOLOGY_PORTS_KEY = "ports"
GENNET_STATIC_NODES_KEY = "static_nodes"
GENNET_GOWAKU_IMAGE_VALUE = "go-waku"
GENNET_NWAKU_IMAGE_VALUE = "nim-waku"
PEER_ID_KEY = "peer_id"
IP_KEY = "ip_address"
PORTS_KEY = "ports"
# WSL Configuration
WSL_IMAGE = "wsl:0.0.1"
@@ -67,6 +78,8 @@ WSL_SERVICE_NAME = "wsl"
WSL_CONFIG_PATH = "/wsl/config"
WSL_TARGETS_PATH = "/wsl/targets"
WSL_TOMLS_PATH = "/wsl/tomls"
WLS_CMD = ["python3", "wsl.py"]
CONTAINER_WSL_CONFIGURATION_FILE_NAME = "wsl.yml"
CONTAINER_TARGETS_FILE_NAME_WSL = "targets.json"
@@ -79,9 +92,9 @@ GET_PEERS_METHOD = "get_waku_v2_admin_v1_peers"
# Import locations
WAKU_MODULE = "github.com/logos-co/wakurtosis/src/waku.star"
NODE_BUILDERS_MODULE = "github.com/logos-co/wakurtosis/src/node_builders/node_builders.star"
WAKU_BUILDER_MODULE = "github.com/logos-co/wakurtosis/src/node_builders/waku_builder.star"
NWAKU_BUILDER_MODULE = "github.com/logos-co/wakurtosis/src/node_builders/nwaku_builder.star"
GOWAKU_BUILDER_MODULE = "github.com/logos-co/wakurtosis/src/node_builders/gowaku_builder.star"
WAKU_BUILDER_MODULE = "github.com/logos-co/wakurtosis/src/node_builders/types/waku_builder.star"
NWAKU_BUILDER_MODULE = "github.com/logos-co/wakurtosis/src/node_builders/types/nwaku_builder.star"
GOWAKU_BUILDER_MODULE = "github.com/logos-co/wakurtosis/src/node_builders/types/gowaku_builder.star"
PROMETHEUS_MODULE = "github.com/logos-co/wakurtosis/src/monitoring/prometheus.star"
GRAFANA_MODULE = "github.com/logos-co/wakurtosis/src/monitoring/grafana.star"
ARGUMENT_PARSER_MODULE = "github.com/logos-co/wakurtosis/src/arguments_parser.star"

View File

@@ -59,7 +59,7 @@ def test_create_waku_id(plan):
ports={vars.WAKU_LIBP2P_PORT_ID: PortSpec(number=1234)})
services_example = {"service_info": service_struct, "peer_id": "ASDFGHJKL"}
waku_id = waku.create_waku_id(services_example)
waku_id = waku.create_node_multiaddress(services_example)
plan.assert(value=waku_id, assertion="==", target_value='"/ip4/1.1.1.1/tcp/1234/p2p/ASDFGHJKL"')

View File

@@ -35,10 +35,10 @@ def get_wakunode_peer_id(plan, service_name, port_id):
# todo better name for this function
def create_waku_id(node_id, node_information):
ip = node_information["ip_address"]
port = node_information["ports"][vars.WAKU_LIBP2P_PORT_ID + "_" + node_id][0]
waku_node_id = node_information["peer_id"]
def create_node_multiaddress(node_id, node_information):
ip = node_information[vars.IP_KEY]
port = node_information[vars.PORTS_KEY][vars.WAKU_LIBP2P_PORT_ID + "_" + node_id][0]
waku_node_id = node_information[vars.PEER_ID_KEY]
return '"/ip4/' + str(ip) + '/tcp/' + str(port) + '/p2p/' + waku_node_id + '"'
@@ -59,16 +59,6 @@ def connect_wakunode_to_peers(plan, service_name, node_id, port_id, peer_ids):
plan.print(response)
def post_waku_v2_relay_v1_message_test(plan, service_name, topic):
waku_message = '{"payload": "0x1a2b3c4d5e6f", "timestamp": 1626813243}'
params = '"' + topic + '"' + ", " + waku_message
response = send_json_rpc(plan, service_name, vars.RPC_PORT_ID,
vars.POST_RELAY_MESSAGE_METHOD, params)
plan.assert(value=response["code"], assertion="==", target_value = 200)
def make_service_wait(plan, service_name, time):
exec_recipe = struct(
service_name=service_name,
@@ -90,15 +80,16 @@ def get_waku_peers(plan, waku_service_name):
def interconnect_waku_nodes(plan, topology_information, interconnection_batch):
# Interconnect them
for node_id in topology_information["nodes"].keys():
peers = topology_information["nodes"][node_id]["static_nodes"]
nodes_in_topology = topology_information[vars.GENNET_NODES_KEY]
for node_id in nodes_in_topology.keys():
peers = nodes_in_topology[node_id][vars.GENNET_STATIC_NODES_KEY]
for i in range(0, len(peers), interconnection_batch):
x = i
peer_ids = [create_waku_id(peer, topology_information["nodes"][peer])
for peer in peers[x:x + interconnection_batch]]
peer_ids = [create_node_multiaddress(peer, nodes_in_topology[peer])
for peer in peers[i:i + interconnection_batch]]
connect_wakunode_to_peers(plan, topology_information["nodes"][node_id]["container_id"],
connect_wakunode_to_peers(plan, nodes_in_topology[node_id][vars.GENNET_NODE_CONTAINER_KEY],
node_id, vars.RPC_PORT_ID, peer_ids)

View File

@@ -25,7 +25,7 @@ def create_config(plan, wls_config):
def create_targets(plan, services):
# Get private ip and ports of all nodes
template_data = files.generate_template_node_targets(services, vars.RPC_PORT_ID)
template_data = files.generate_template_node_targets(services, vars.RPC_PORT_ID, "targets")
# Template
template = """
@@ -66,7 +66,7 @@ def init(plan, services, wsl_config):
vars.WSL_TARGETS_PATH: wsl_targets,
vars.WSL_TOMLS_PATH: tomls_artifact
},
cmd=["python3", "wsl.py"]
cmd=vars.WLS_CMD
)
wsl_service = plan.add_service(
service_name=vars.WSL_SERVICE_NAME,