SERVICE_NAME = "goomy-blob-spammer"
IMAGE_NAME = "ethpandaops/goomy-blob:master"

ENTRYPOINT_ARGS = ["/bin/sh", "-c"]

# The min/max CPU/memory that goomy can use
MIN_CPU = 100
MAX_CPU = 1000
MIN_MEMORY = 20
MAX_MEMORY = 300


def launch_goomy_blob(
    plan,
    prefunded_addresses,
    el_contexts,
    cl_context,
    seconds_per_slot,
    goomy_blob_params,
    global_node_selectors,
):
    config = get_config(
        prefunded_addresses,
        el_contexts,
        cl_context,
        seconds_per_slot,
        goomy_blob_params.goomy_blob_args,
        global_node_selectors,
    )
    plan.add_service(SERVICE_NAME, config)


def get_config(
    prefunded_addresses,
    el_contexts,
    cl_context,
    seconds_per_slot,
    goomy_blob_args,
    node_selectors,
):
    goomy_cli_args = []
    for index, client in enumerate(el_contexts):
        goomy_cli_args.append(
            "-h http://{0}:{1}".format(
                client.ip_addr,
                client.rpc_port_num,
            )
        )

    goomy_args = " ".join(goomy_blob_args)
    if goomy_args == "":
        goomy_args = "combined -b 2 -t 2 --max-pending 3"
    goomy_cli_args.append(goomy_args)

    cmd = "./blob-spammer -p {0} {1}".format(
        prefunded_addresses[4].private_key, " ".join(goomy_cli_args)
    )

    return ServiceConfig(
        image=IMAGE_NAME,
        entrypoint=ENTRYPOINT_ARGS,
        cmd=[cmd],
        min_cpu=MIN_CPU,
        max_cpu=MAX_CPU,
        min_memory=MIN_MEMORY,
        max_memory=MAX_MEMORY,
        node_selectors=node_selectors,
    )