| """ |
| 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') |
| ) |
| ] |