blob: 07b230168417c29ac0c766d7b1c17da61be2af5b [file] [log] [blame]
"""
Launch the topology as a single aurora job with multiple instances.
The heron-executor is responsible for starting a tmaster (container 0)
and regular stmgr/metricsmgr/instances (container index > 0).
"""
heron_core_release_uri = '{{CORE_PACKAGE_URI}}'
heron_topology_jar_uri = '{{TOPOLOGY_PACKAGE_URI}}'
core_release_file = "heron-core.tar.gz"
topology_package_file = "topology.tar.gz"
# --- processes ---
fetch_heron_system = Process(
name = 'fetch_heron_system',
cmdline = 'curl %s -o %s && tar zxf %s' % (heron_core_release_uri, core_release_file, core_release_file)
)
fetch_user_package = Process(
name = 'fetch_user_package',
cmdline = 'curl %s -o %s && tar zxf %s' % (heron_topology_jar_uri, topology_package_file, topology_package_file)
)
command_to_start_executor = '{{EXECUTOR_BINARY}} {{mesos.instance}} {{TOPOLOGY_NAME}} {{TOPOLOGY_ID}} {{TOPOLOGY_DEFINITION_FILE}} {{STATEMGR_CONNECTION_STRING}} {{STATEMGR_ROOT_PATH}} {{TMASTER_BINARY}} {{STMGR_BINARY}} "{{METRICSMGR_CLASSPATH}}" {{INSTANCE_JVM_OPTS_IN_BASE64}} "{{TOPOLOGY_CLASSPATH}}" {{thermos.ports[port1]}} {{thermos.ports[port2]}} {{thermos.ports[port3]}} {{SYSTEM_YAML}} {{COMPONENT_RAMMAP}} {{COMPONENT_JVM_OPTS_IN_BASE64}} {{TOPOLOGY_PACKAGE_TYPE}} {{TOPOLOGY_BINARY_FILE}} {{JAVA_HOME}} {{thermos.ports[http]}} {{SHELL_BINARY}} {{thermos.ports[port4]}} {{CLUSTER}} {{ROLE}} {{ENVIRON}} "{{INSTANCE_CLASSPATH}}" {{METRICS_YAML}} "{{SCHEDULER_CLASSPATH}}" "{{thermos.ports[scheduler]}}" {{PYTHON_INSTANCE_BINARY}} {{METRICSCACHEMGR_CLASSPATH}} {{thermos.ports[metricscachemgr_masterport]}} {{thermos.ports[metricscachemgr_statsport]}} {{IS_STATEFUL_ENABLED}} "{{CKPTMGR_CLASSPATH}}" {{thermos.ports[ckptmgr_port]}} {{STATEFUL_CONFIG_YAML}}'
launch_heron_executor = Process(
name = 'launch_heron_executor',
cmdline = command_to_start_executor,
max_failures = 1
)
discover_profiler_port = Process(
name = 'discover_profiler_port',
cmdline = 'echo {{thermos.ports[yourkit]}} > yourkit.port'
)
# --- tasks ---
heron_task = SequentialTask(
name = 'setup_and_run',
processes = [fetch_heron_system, fetch_user_package, launch_heron_executor, discover_profiler_port],
resources = Resources(cpu = '{{CPUS_PER_CONTAINER}}', ram = '{{RAM_PER_CONTAINER}}', disk = '{{DISK_PER_CONTAINER}}')
)
# -- jobs ---
jobs = [
Job(
name = '{{TOPOLOGY_NAME}}',
cluster = '{{CLUSTER}}',
role = '{{ROLE}}',
environment = '{{ENVIRON}}',
service = True,
task = heron_task,
instances = '{{NUM_CONTAINERS}}',
announce = Announcer(primary_port = 'http')
)
]