blob: b9e16e1a077490156c79ce59e57491eb25c4077d [file] [log] [blame]
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
''' API_constants.py: defines API constants for topology config'''
####################################################################################################
########################### Constants for topology configuration ##################################
####################################################################################################
class TopologyReliabilityMode(object):
ATMOST_ONCE = "ATMOST_ONCE"
ATLEAST_ONCE = "ATLEAST_ONCE"
EFFECTIVELY_ONCE = "EFFECTIVELY_ONCE"
# Topology-specific options for the worker child process.
TOPOLOGY_WORKER_CHILDOPTS = "topology.worker.childopts"
# Per component JVM options.
TOPOLOGY_COMPONENT_JVMOPTS = "topology.component.jvmopts"
# How often a tick tuple from the "__system" component and "__tick" stream should be sent to tasks.
TOPOLOGY_TICK_TUPLE_FREQ_SECS = "topology.tick.tuple.freq.secs"
# True if Heron should timeout messages or not. Default true. Meant to be used in unit tests.
TOPOLOGY_ENABLE_MESSAGE_TIMEOUTS = "topology.enable.message.timeouts"
# When true, Heron will log every message that's emitted
TOPOLOGY_DEBUG = "topology.debug"
# The number of stmgr instances that should spin up to service this topology.
TOPOLOGY_STMGRS = "topology.stmgrs"
# The max amount of time given to the topology to fully process a message emitted by a spout.
TOPOLOGY_MESSAGE_TIMEOUT_SECS = "topology.message.timeout.secs"
# The per component parallelism for a component in this topology.
TOPOLOGY_COMPONENT_PARALLELISM = "topology.component.parallelism"
# The maximum number of tuples that can be pending on a spout task at any given time.
TOPOLOGY_MAX_SPOUT_PENDING = "topology.max.spout.pending"
# A list of task hooks that are automatically added to every spout and bolt in the topology.
TOPOLOGY_AUTO_TASK_HOOKS = "topology.auto.task.hooks"
# The serialization class that is used to serialize/deserialize tuples
TOPOLOGY_SERIALIZER_CLASSNAME = "topology.serializer.classname"
# Which reliability mode to run the topology?
# Valid ones are all the enums in TopologyReliabilityMode
TOPOLOGY_RELIABILITY_MODE = "topology.reliability.mode"
# What's the checkpoint interval for stateful topologies in seconds
TOPOLOGY_STATEFUL_CHECKPOINT_INTERVAL_SECONDS = "topology.stateful.checkpoint.interval.seconds"
# Boolean flag that says that the stateful topology should start from
# clean state, i.e. ignore any checkpoint state
TOPOLOGY_STATEFUL_START_CLEAN = "topology.stateful.start.clean"
# Number of CPU cores per container to be reserved for this topology.
TOPOLOGY_CONTAINER_CPU_REQUESTED = "topology.container.cpu"
# Amount of RAM per container to be reserved for this topology, in bytes.
TOPOLOGY_CONTAINER_RAM_REQUESTED = "topology.container.ram"
# Amount of disk per container to be reserved for this topology, in bytes.
TOPOLOGY_CONTAINER_DISK_REQUESTED = "topology.container.disk"
# Hint for max amount of RAM per container to be reserved for this topology, in bytes.
TOPOLOGY_CONTAINER_MAX_CPU_HINT = "topology.container.max.cpu.hint"
# Hint for max amount of disk per container to be reserved for this topology, in bytes.
TOPOLOGY_CONTAINER_MAX_DISK_HINT = "topology.container.max.disk.hint"
# Padding percentage for this container.
TOPOLOGY_CONTAINER_PADDING_PERCENTAGE = "topology.container.padding.percentage"
# Amount of RAM padding per container.
TOPOLOGY_CONTAINER_RAM_PADDING = "topology.container.ram.padding"
# Per component CPU requirement.
TOPOLOGY_COMPONENT_CPUMAP = "topology.component.cpumap"
# Per component RAM requirement.
TOPOLOGY_COMPONENT_RAMMAP = "topology.component.rammap"
# Per component disk requirement.
TOPOLOGY_COMPONENT_DISKMAP = "topology.component.diskmap"
# Name of the topology, automatically set by Heron when the topology is submitted.
TOPOLOGY_NAME = "topology.name"
# Name of the team which owns this topology.
TOPOLOGY_TEAM_NAME = "topology.team.name"
# Email of the team which owns this topology.
TOPOLOGY_TEAM_EMAIL = "topology.team.email"
# Cap ticket (if filed) for the topology. If the topology is in prod, this has to be set or it
# cannot be deployed.
TOPOLOGY_CAP_TICKET = "topology.cap.ticket"
# Project name of the topology, to help us with tagging which topologies are part of which project.
TOPOLOGY_PROJECT_NAME = "topology.project.name"
# Any user defined classpath that needs to be passed to instances should be set in to config
# through this key.
TOPOLOGY_ADDITIONAL_CLASSPATH = "topology.additional.classpath"
# The per component output bytes per second in this topology.
TOPOLOGY_COMPONENT_OUTPUT_BPS = "topology.component.output.bps"