blob: ecd7ce0be9c6042b328cc75d4a8cb0be73adcd13 [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}}' \
'{{OVERRIDE_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}}' \
'{{HEALTHMGR_MODE}}' \
'{{HEALTHMGR_CLASSPATH}}'
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')
)
]