
When adding a new UDP member or a UDP-CONNECT health-monitor to a UDP pool, there can be a race condition in the first heartbeat message sent to the health-manager service. This message might contain a DOWN status for a working member that hasn't been checked yet. This commit introduces a new member status between the amphora-agent and the health-manager: it indicates that the UDP pool has been updated and that the status of a member is a transitional state, preventing an incorrect ERROR status. Story: 2007792 Task: 40042 Change-Id: Id9e19375ebca6a720e6a85006f5e8948d3aed760
857 lines
30 KiB
Python
857 lines
30 KiB
Python
# Copyright 2014 Rackspace
|
|
#
|
|
# Licensed 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.
|
|
|
|
from octavia_lib.common import constants as lib_consts
|
|
|
|
##############################################################################
|
|
# Constants common to the provider drivers moved to
|
|
# octavia_lib.common.constants
|
|
# These are deprecated, to be removed in the 'U' release
|
|
##############################################################################
|
|
# 'loadbalancers'
|
|
LOADBALANCERS = lib_consts.LOADBALANCERS
|
|
# 'listeners'
|
|
LISTENERS = lib_consts.LISTENERS
|
|
# 'pools'
|
|
POOLS = lib_consts.POOLS
|
|
# HEALTHMONITORS = 'healthmonitors'
|
|
HEALTHMONITORS = lib_consts.HEALTHMONITORS
|
|
# 'members'
|
|
MEMBERS = lib_consts.MEMBERS
|
|
# 'l7policies'
|
|
L7POLICIES = lib_consts.L7POLICIES
|
|
# 'l7rules'
|
|
L7RULES = lib_consts.L7RULES
|
|
|
|
# 'PING'
|
|
HEALTH_MONITOR_PING = lib_consts.HEALTH_MONITOR_PING
|
|
# 'TCP'
|
|
HEALTH_MONITOR_TCP = lib_consts.HEALTH_MONITOR_TCP
|
|
# 'HTTP'
|
|
HEALTH_MONITOR_HTTP = lib_consts.HEALTH_MONITOR_HTTP
|
|
# 'HTTPS'
|
|
HEALTH_MONITOR_HTTPS = lib_consts.HEALTH_MONITOR_HTTPS
|
|
# 'TLS-HELLO'
|
|
HEALTH_MONITOR_TLS_HELLO = lib_consts.HEALTH_MONITOR_TLS_HELLO
|
|
# 'UDP-CONNECT'
|
|
HEALTH_MONITOR_UDP_CONNECT = lib_consts.HEALTH_MONITOR_UDP_CONNECT
|
|
SUPPORTED_HEALTH_MONITOR_TYPES = lib_consts.SUPPORTED_HEALTH_MONITOR_TYPES
|
|
|
|
# 'GET'
|
|
HEALTH_MONITOR_HTTP_METHOD_GET = lib_consts.HEALTH_MONITOR_HTTP_METHOD_GET
|
|
# 'HEAD'
|
|
HEALTH_MONITOR_HTTP_METHOD_HEAD = lib_consts.HEALTH_MONITOR_HTTP_METHOD_HEAD
|
|
# 'POST'
|
|
HEALTH_MONITOR_HTTP_METHOD_POST = lib_consts.HEALTH_MONITOR_HTTP_METHOD_POST
|
|
# 'PUT'
|
|
HEALTH_MONITOR_HTTP_METHOD_PUT = lib_consts.HEALTH_MONITOR_HTTP_METHOD_PUT
|
|
# 'DELETE'
|
|
HEALTH_MONITOR_HTTP_METHOD_DELETE = (
|
|
lib_consts.HEALTH_MONITOR_HTTP_METHOD_DELETE)
|
|
# 'TRACE'
|
|
HEALTH_MONITOR_HTTP_METHOD_TRACE = lib_consts.HEALTH_MONITOR_HTTP_METHOD_TRACE
|
|
# 'OPTIONS'
|
|
HEALTH_MONITOR_HTTP_METHOD_OPTIONS = (
|
|
lib_consts.HEALTH_MONITOR_HTTP_METHOD_OPTIONS)
|
|
# 'CONNECT'
|
|
HEALTH_MONITOR_HTTP_METHOD_CONNECT = (
|
|
lib_consts.HEALTH_MONITOR_HTTP_METHOD_CONNECT)
|
|
# 'PATCH'
|
|
HEALTH_MONITOR_HTTP_METHOD_PATCH = lib_consts.HEALTH_MONITOR_HTTP_METHOD_PATCH
|
|
SUPPORTED_HEALTH_MONITOR_HTTP_METHODS = (
|
|
lib_consts.SUPPORTED_HEALTH_MONITOR_HTTP_METHODS)
|
|
|
|
# 'REJECT'
|
|
L7POLICY_ACTION_REJECT = lib_consts.L7POLICY_ACTION_REJECT
|
|
# 'REDIRECT_TO_URL'
|
|
L7POLICY_ACTION_REDIRECT_TO_URL = lib_consts.L7POLICY_ACTION_REDIRECT_TO_URL
|
|
# 'REDIRECT_TO_POOL'
|
|
L7POLICY_ACTION_REDIRECT_TO_POOL = lib_consts.L7POLICY_ACTION_REDIRECT_TO_POOL
|
|
# 'REDIRECT_PREFIX'
|
|
L7POLICY_ACTION_REDIRECT_PREFIX = lib_consts.L7POLICY_ACTION_REDIRECT_PREFIX
|
|
SUPPORTED_L7POLICY_ACTIONS = lib_consts.SUPPORTED_L7POLICY_ACTIONS
|
|
|
|
# 'REGEX'
|
|
L7RULE_COMPARE_TYPE_REGEX = lib_consts.L7RULE_COMPARE_TYPE_REGEX
|
|
# 'STARTS_WITH'
|
|
L7RULE_COMPARE_TYPE_STARTS_WITH = lib_consts.L7RULE_COMPARE_TYPE_STARTS_WITH
|
|
# 'ENDS_WITH'
|
|
L7RULE_COMPARE_TYPE_ENDS_WITH = lib_consts.L7RULE_COMPARE_TYPE_ENDS_WITH
|
|
# 'CONTAINS'
|
|
L7RULE_COMPARE_TYPE_CONTAINS = lib_consts.L7RULE_COMPARE_TYPE_CONTAINS
|
|
# 'EQUAL_TO'
|
|
L7RULE_COMPARE_TYPE_EQUAL_TO = lib_consts.L7RULE_COMPARE_TYPE_EQUAL_TO
|
|
SUPPORTED_L7RULE_COMPARE_TYPES = lib_consts.SUPPORTED_L7RULE_COMPARE_TYPES
|
|
|
|
# 'HOST_NAME'
|
|
L7RULE_TYPE_HOST_NAME = lib_consts.L7RULE_TYPE_HOST_NAME
|
|
# 'PATH'
|
|
L7RULE_TYPE_PATH = lib_consts.L7RULE_TYPE_PATH
|
|
# 'FILE_TYPE'
|
|
L7RULE_TYPE_FILE_TYPE = lib_consts.L7RULE_TYPE_FILE_TYPE
|
|
# 'HEADER'
|
|
L7RULE_TYPE_HEADER = lib_consts.L7RULE_TYPE_HEADER
|
|
# 'COOKIE'
|
|
L7RULE_TYPE_COOKIE = lib_consts.L7RULE_TYPE_COOKIE
|
|
# 'SSL_CONN_HAS_CERT'
|
|
L7RULE_TYPE_SSL_CONN_HAS_CERT = lib_consts.L7RULE_TYPE_SSL_CONN_HAS_CERT
|
|
# 'SSL_VERIFY_RESULT'
|
|
L7RULE_TYPE_SSL_VERIFY_RESULT = lib_consts.L7RULE_TYPE_SSL_VERIFY_RESULT
|
|
# 'SSL_DN_FIELD'
|
|
L7RULE_TYPE_SSL_DN_FIELD = lib_consts.L7RULE_TYPE_SSL_DN_FIELD
|
|
SUPPORTED_L7RULE_TYPES = lib_consts.SUPPORTED_L7RULE_TYPES
|
|
|
|
# 'ROUND_ROBIN'
|
|
LB_ALGORITHM_ROUND_ROBIN = lib_consts.LB_ALGORITHM_ROUND_ROBIN
|
|
# 'LEAST_CONNECTIONS'
|
|
LB_ALGORITHM_LEAST_CONNECTIONS = lib_consts.LB_ALGORITHM_LEAST_CONNECTIONS
|
|
# 'SOURCE_IP'
|
|
LB_ALGORITHM_SOURCE_IP = lib_consts.LB_ALGORITHM_SOURCE_IP
|
|
SUPPORTED_LB_ALGORITHMS = lib_consts.SUPPORTED_LB_ALGORITHMS
|
|
|
|
# 'operating_status'
|
|
OPERATING_STATUS = lib_consts.OPERATING_STATUS
|
|
# 'ONLINE'
|
|
ONLINE = lib_consts.ONLINE
|
|
# 'OFFLINE'
|
|
OFFLINE = lib_consts.OFFLINE
|
|
# 'DEGRADED'
|
|
DEGRADED = lib_consts.DEGRADED
|
|
# 'ERROR'
|
|
ERROR = lib_consts.ERROR
|
|
# 'DRAINING'
|
|
DRAINING = lib_consts.DRAINING
|
|
# 'NO_MONITOR'
|
|
NO_MONITOR = lib_consts.NO_MONITOR
|
|
# 'operating_status'
|
|
SUPPORTED_OPERATING_STATUSES = lib_consts.SUPPORTED_OPERATING_STATUSES
|
|
|
|
# 'TCP'
|
|
PROTOCOL_TCP = lib_consts.PROTOCOL_TCP
|
|
# 'UDP'
|
|
PROTOCOL_UDP = lib_consts.PROTOCOL_UDP
|
|
# 'HTTP'
|
|
PROTOCOL_HTTP = lib_consts.PROTOCOL_HTTP
|
|
# 'HTTPS'
|
|
PROTOCOL_HTTPS = lib_consts.PROTOCOL_HTTPS
|
|
# 'TERMINATED_HTTPS'
|
|
PROTOCOL_TERMINATED_HTTPS = lib_consts.PROTOCOL_TERMINATED_HTTPS
|
|
# 'PROXY'
|
|
PROTOCOL_PROXY = lib_consts.PROTOCOL_PROXY
|
|
SUPPORTED_PROTOCOLS = lib_consts.SUPPORTED_PROTOCOLS
|
|
|
|
# 'provisioning_status'
|
|
PROVISIONING_STATUS = lib_consts.PROVISIONING_STATUS
|
|
# Amphora has been allocated to a load balancer 'ALLOCATED'
|
|
AMPHORA_ALLOCATED = lib_consts.AMPHORA_ALLOCATED
|
|
# Amphora is being built 'BOOTING'
|
|
AMPHORA_BOOTING = lib_consts.AMPHORA_BOOTING
|
|
# Amphora is ready to be allocated to a load balancer 'READY'
|
|
AMPHORA_READY = lib_consts.AMPHORA_READY
|
|
# 'ACTIVE'
|
|
ACTIVE = lib_consts.ACTIVE
|
|
# 'PENDING_DELETE'
|
|
PENDING_DELETE = lib_consts.PENDING_DELETE
|
|
# 'PENDING_UPDATE'
|
|
PENDING_UPDATE = lib_consts.PENDING_UPDATE
|
|
# 'PENDING_CREATE'
|
|
PENDING_CREATE = lib_consts.PENDING_CREATE
|
|
# 'DELETED'
|
|
DELETED = lib_consts.DELETED
|
|
SUPPORTED_PROVISIONING_STATUSES = lib_consts.SUPPORTED_PROVISIONING_STATUSES
|
|
|
|
# 'SOURCE_IP'
|
|
SESSION_PERSISTENCE_SOURCE_IP = lib_consts.SESSION_PERSISTENCE_SOURCE_IP
|
|
# 'HTTP_COOKIE'
|
|
SESSION_PERSISTENCE_HTTP_COOKIE = lib_consts.SESSION_PERSISTENCE_HTTP_COOKIE
|
|
# 'APP_COOKIE'
|
|
SESSION_PERSISTENCE_APP_COOKIE = lib_consts.SESSION_PERSISTENCE_APP_COOKIE
|
|
SUPPORTED_SP_TYPES = lib_consts.SUPPORTED_SP_TYPES
|
|
|
|
# List of HTTP headers which are supported for insertion
|
|
SUPPORTED_HTTP_HEADERS = lib_consts.SUPPORTED_HTTP_HEADERS
|
|
|
|
# List of SSL headers for client certificate
|
|
SUPPORTED_SSL_HEADERS = lib_consts.SUPPORTED_SSL_HEADERS
|
|
|
|
###############################################################################
|
|
|
|
HEALTH_MONITOR_DEFAULT_EXPECTED_CODES = '200'
|
|
HEALTH_MONITOR_HTTP_DEFAULT_METHOD = lib_consts.HEALTH_MONITOR_HTTP_METHOD_GET
|
|
HEALTH_MONITOR_DEFAULT_URL_PATH = '/'
|
|
TYPE = 'type'
|
|
URL_PATH = 'url_path'
|
|
HTTP_METHOD = 'http_method'
|
|
HTTP_VERSION = 'http_version'
|
|
EXPECTED_CODES = 'expected_codes'
|
|
DELAY = 'delay'
|
|
TIMEOUT = 'timeout'
|
|
MAX_RETRIES = 'max_retries'
|
|
MAX_RETRIES_DOWN = 'max_retries_down'
|
|
RISE_THRESHOLD = 'rise_threshold'
|
|
DOMAIN_NAME = 'domain_name'
|
|
|
|
UPDATE_STATS = 'UPDATE_STATS'
|
|
UPDATE_HEALTH = 'UPDATE_HEALTH'
|
|
|
|
VALID_LISTENER_POOL_PROTOCOL_MAP = {
|
|
PROTOCOL_TCP: [PROTOCOL_HTTP, PROTOCOL_HTTPS,
|
|
PROTOCOL_PROXY, PROTOCOL_TCP],
|
|
PROTOCOL_HTTP: [PROTOCOL_HTTP, PROTOCOL_PROXY],
|
|
PROTOCOL_HTTPS: [PROTOCOL_HTTPS, PROTOCOL_PROXY, PROTOCOL_TCP],
|
|
PROTOCOL_TERMINATED_HTTPS: [PROTOCOL_HTTP, PROTOCOL_PROXY],
|
|
PROTOCOL_UDP: [PROTOCOL_UDP]}
|
|
|
|
# API Integer Ranges
|
|
MIN_PORT_NUMBER = 1
|
|
MAX_PORT_NUMBER = 65535
|
|
|
|
DEFAULT_CONNECTION_LIMIT = -1
|
|
MIN_CONNECTION_LIMIT = -1
|
|
|
|
DEFAULT_WEIGHT = 1
|
|
MIN_WEIGHT = 0
|
|
MAX_WEIGHT = 256
|
|
|
|
DEFAULT_MAX_RETRIES_DOWN = 3
|
|
MIN_HM_RETRIES = 1
|
|
MAX_HM_RETRIES = 10
|
|
|
|
# 1 year: y d h m ms
|
|
MAX_TIMEOUT = 365 * 24 * 60 * 60 * 1000
|
|
MIN_TIMEOUT = 0
|
|
|
|
DEFAULT_TIMEOUT_CLIENT_DATA = 50000
|
|
DEFAULT_TIMEOUT_MEMBER_CONNECT = 5000
|
|
DEFAULT_TIMEOUT_MEMBER_DATA = 50000
|
|
DEFAULT_TIMEOUT_TCP_INSPECT = 0
|
|
|
|
MUTABLE_STATUSES = (lib_consts.ACTIVE,)
|
|
DELETABLE_STATUSES = (lib_consts.ACTIVE, lib_consts.ERROR)
|
|
FAILOVERABLE_STATUSES = (lib_consts.ACTIVE, lib_consts.ERROR)
|
|
|
|
# Note: The database Amphora table has a foreign key constraint against
|
|
# the provisioning_status table
|
|
SUPPORTED_AMPHORA_STATUSES = (
|
|
lib_consts.AMPHORA_ALLOCATED, lib_consts.AMPHORA_BOOTING, lib_consts.ERROR,
|
|
lib_consts.AMPHORA_READY, lib_consts.DELETED, lib_consts.PENDING_CREATE,
|
|
lib_consts.PENDING_DELETE)
|
|
|
|
AMPHORA_VM = 'VM'
|
|
SUPPORTED_AMPHORA_TYPES = (AMPHORA_VM,)
|
|
|
|
DISTINGUISHED_NAME_FIELD_REGEX = lib_consts.DISTINGUISHED_NAME_FIELD_REGEX
|
|
|
|
# For redirect, only codes 301, 302, 303, 307 and 308 are # supported.
|
|
SUPPORTED_L7POLICY_REDIRECT_HTTP_CODES = [301, 302, 303, 307, 308]
|
|
|
|
SUPPORTED_HTTP_VERSIONS = [1.0, 1.1]
|
|
|
|
MIN_POLICY_POSITION = 1
|
|
# Largest a 32-bit integer can be, which is a limitation
|
|
# here if you're using MySQL, as most probably are. This just needs
|
|
# to be larger than any existing rule position numbers which will
|
|
# definitely be the case with 2147483647
|
|
MAX_POLICY_POSITION = 2147483647
|
|
|
|
# Testing showed haproxy config failed to parse after more than
|
|
# 53 rules per policy
|
|
MAX_L7RULES_PER_L7POLICY = 50
|
|
|
|
# See RFCs 2616, 2965, 6265, 7230: Should match characters valid in a
|
|
# http header or cookie name.
|
|
HTTP_HEADER_NAME_REGEX = r'\A[a-zA-Z0-9!#$%&\'*+-.^_`|~]+\Z'
|
|
|
|
# See RFCs 2616, 2965, 6265: Should match characters valid in a cookie value.
|
|
HTTP_COOKIE_VALUE_REGEX = r'\A[a-zA-Z0-9!#$%&\'()*+-./:<=>?@[\]^_`{|}~]+\Z'
|
|
|
|
# See RFC 7230: Should match characters valid in a header value.
|
|
HTTP_HEADER_VALUE_REGEX = (r'\A[a-zA-Z0-9'
|
|
r'!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~\\]+\Z')
|
|
|
|
# Also in RFC 7230: Should match characters valid in a header value
|
|
# when quoted with double quotes.
|
|
HTTP_QUOTED_HEADER_VALUE_REGEX = (r'\A"[a-zA-Z0-9 \t'
|
|
r'!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~\\]*"\Z')
|
|
|
|
DOMAIN_NAME_REGEX = (
|
|
r'^(?=.{1,253}\.?$)(?:(?!-|[^.]+_)[A-Za-z0-9-_]{1,63}(?<!-)(?:\.|$))+$')
|
|
|
|
# TaskFlow
|
|
SUPPORTED_TASKFLOW_ENGINE_TYPES = ['serial', 'parallel']
|
|
|
|
# Task/Flow constants
|
|
ACTIVE_CONNECTIONS = 'active_connections'
|
|
ADD_NICS = 'add_nics'
|
|
ADDED_PORTS = 'added_ports'
|
|
ADMIN_STATE_UP = 'admin_state_up'
|
|
ALLOWED_ADDRESS_PAIRS = 'allowed_address_pairs'
|
|
AMP_DATA = 'amp_data'
|
|
AMP_VRRP_INT = 'amp_vrrp_int'
|
|
AMPHORA = 'amphora'
|
|
AMPHORA_ID = 'amphora_id'
|
|
AMPHORA_INDEX = 'amphora_index'
|
|
AMPHORA_NETWORK_CONFIG = 'amphora_network_config'
|
|
AMPHORAE = 'amphorae'
|
|
AMPHORAE_NETWORK_CONFIG = 'amphorae_network_config'
|
|
AMPS_DATA = 'amps_data'
|
|
ANTI_AFFINITY = 'anti-affinity'
|
|
ATTEMPT_NUMBER = 'attempt_number'
|
|
BASE_PORT = 'base_port'
|
|
BYTES_IN = 'bytes_in'
|
|
BYTES_OUT = 'bytes_out'
|
|
CACHED_ZONE = 'cached_zone'
|
|
CA_TLS_CERTIFICATE_ID = 'ca_tls_certificate_id'
|
|
CIDR = 'cidr'
|
|
CLIENT_CA_TLS_CERTIFICATE_ID = 'client_ca_tls_certificate_id'
|
|
CLIENT_CRL_CONTAINER_ID = 'client_crl_container_id'
|
|
COMPUTE_ID = 'compute_id'
|
|
COMPUTE_OBJ = 'compute_obj'
|
|
COMPUTE_ZONE = 'compute_zone'
|
|
CONN_MAX_RETRIES = 'conn_max_retries'
|
|
CONN_RETRY_INTERVAL = 'conn_retry_interval'
|
|
CREATED_AT = 'created_at'
|
|
CRL_CONTAINER_ID = 'crl_container_id'
|
|
DEFAULT_TLS_CONTAINER_DATA = 'default_tls_container_data'
|
|
DELETE_NICS = 'delete_nics'
|
|
DELTA = 'delta'
|
|
DELTAS = 'deltas'
|
|
DESCRIPTION = 'description'
|
|
DEVICE_OWNER = 'device_owner'
|
|
ENABLED = 'enabled'
|
|
FAILED_AMP_VRRP_PORT_ID = 'failed_amp_vrrp_port_id'
|
|
FAILED_AMPHORA = 'failed_amphora'
|
|
FAILOVER_AMPHORA = 'failover_amphora'
|
|
FAILOVER_AMPHORA_ID = 'failover_amphora_id'
|
|
FIELDS = 'fields'
|
|
FIXED_IPS = 'fixed_ips'
|
|
FLAVOR_ID = 'flavor_id'
|
|
HA_IP = 'ha_ip'
|
|
HA_PORT_ID = 'ha_port_id'
|
|
HEALTH_MON = 'health_mon'
|
|
HEALTH_MONITOR = 'health_monitor'
|
|
HEALTH_MONITOR_ID = 'health_monitor_id'
|
|
HEALTHMONITOR_ID = 'healthmonitor_id'
|
|
HEALTH_MONITOR_UPDATES = 'health_monitor_updates'
|
|
ID = 'id'
|
|
IMAGE_ID = 'image_id'
|
|
IP_ADDRESS = 'ip_address'
|
|
IPV6_ICMP = 'ipv6-icmp'
|
|
LB_NETWORK_IP = 'lb_network_ip'
|
|
L7POLICY = 'l7policy'
|
|
L7POLICY_ID = 'l7policy_id'
|
|
L7POLICY_UPDATES = 'l7policy_updates'
|
|
L7RULE = 'l7rule'
|
|
L7RULE_ID = 'l7rule_id'
|
|
L7RULE_UPDATES = 'l7rule_updates'
|
|
LISTENER = 'listener'
|
|
LISTENER_ID = 'listener_id'
|
|
LISTENER_UPDATES = 'listener_updates'
|
|
LOADBALANCER = 'loadbalancer'
|
|
LOADBALANCER_ID = 'loadbalancer_id'
|
|
LOAD_BALANCER_ID = 'load_balancer_id'
|
|
LOAD_BALANCER_UPDATES = 'load_balancer_updates'
|
|
MANAGEMENT_NETWORK = 'management_network'
|
|
MEMBER = 'member'
|
|
MEMBER_ID = 'member_id'
|
|
MEMBER_PORTS = 'member_ports'
|
|
MEMBER_UPDATES = 'member_updates'
|
|
MESSAGE = 'message'
|
|
NAME = 'name'
|
|
NETWORK = 'network'
|
|
NETWORK_ID = 'network_id'
|
|
NICS = 'nics'
|
|
OBJECT = 'object'
|
|
ORIGINAL_HEALTH_MONITOR = 'original_health_monitor'
|
|
ORIGINAL_L7POLICY = 'original_l7policy'
|
|
ORIGINAL_L7RULE = 'original_l7rule'
|
|
ORIGINAL_LISTENER = 'original_listener'
|
|
ORIGINAL_LOADBALANCER = 'original_load_balancer'
|
|
ORIGINAL_MEMBER = 'original_member'
|
|
ORIGINAL_POOL = 'original_pool'
|
|
PASSIVE_FAILURE = 'passive_failure'
|
|
PEER_PORT = 'peer_port'
|
|
POOL = 'pool'
|
|
POOL_CHILD_COUNT = 'pool_child_count'
|
|
POOL_ID = 'pool_id'
|
|
POOL_UPDATES = 'pool_updates'
|
|
PORT = 'port'
|
|
PORT_ID = 'port_id'
|
|
PORTS = 'ports'
|
|
PROJECT_ID = 'project_id'
|
|
PROVIDER = 'provider'
|
|
PROVIDER_NAME = 'provider_name'
|
|
QOS_POLICY_ID = 'qos_policy_id'
|
|
REDIRECT_POOL = 'redirect_pool'
|
|
REQ_CONN_TIMEOUT = 'req_conn_timeout'
|
|
REQ_READ_TIMEOUT = 'req_read_timeout'
|
|
REQUEST_ERRORS = 'request_errors'
|
|
ROLE = 'role'
|
|
SECURITY_GROUPS = 'security_groups'
|
|
SECURITY_GROUP_RULES = 'security_group_rules'
|
|
SERVER_GROUP_ID = 'server_group_id'
|
|
SERVER_PEM = 'server_pem'
|
|
SNI_CONTAINER_DATA = 'sni_container_data'
|
|
SNI_CONTAINERS = 'sni_containers'
|
|
SOFT_ANTI_AFFINITY = 'soft-anti-affinity'
|
|
STATUS = 'status'
|
|
STATUS_CODE = 'status_code'
|
|
SUBNET = 'subnet'
|
|
SUBNET_ID = 'subnet_id'
|
|
TAGS = 'tags'
|
|
TENANT_ID = 'tenant_id'
|
|
TIMEOUT_DICT = 'timeout_dict'
|
|
TLS_CERTIFICATE_ID = 'tls_certificate_id'
|
|
TLS_CONTAINER_ID = 'tls_container_id'
|
|
TOPOLOGY = 'topology'
|
|
TOTAL_CONNECTIONS = 'total_connections'
|
|
UPDATED_AT = 'updated_at'
|
|
UPDATE_DICT = 'update_dict'
|
|
VALID_VIP_NETWORKS = 'valid_vip_networks'
|
|
VIP = 'vip'
|
|
VIP_ADDRESS = 'vip_address'
|
|
VIP_NETWORK = 'vip_network'
|
|
VIP_PORT_ID = 'vip_port_id'
|
|
VIP_QOS_POLICY_ID = 'vip_qos_policy_id'
|
|
VIP_SG_ID = 'vip_sg_id'
|
|
VIP_SUBNET = 'vip_subnet'
|
|
VIP_SUBNET_ID = 'vip_subnet_id'
|
|
VRRP_ID = 'vrrp_id'
|
|
VRRP_IP = 'vrrp_ip'
|
|
VRRP_GROUP = 'vrrp_group'
|
|
VRRP_PORT = 'vrrp_port'
|
|
VRRP_PORT_ID = 'vrrp_port_id'
|
|
VRRP_PRIORITY = 'vrrp_priority'
|
|
|
|
# Taskflow flow and task names
|
|
CERT_ROTATE_AMPHORA_FLOW = 'octavia-cert-rotate-amphora-flow'
|
|
CREATE_AMPHORA_FLOW = 'octavia-create-amphora-flow'
|
|
CREATE_AMPHORA_RETRY_SUBFLOW = 'octavia-create-amphora-retry-subflow'
|
|
CREATE_AMPHORA_FOR_LB_FLOW = 'octavia-create-amp-for-lb-flow'
|
|
CREATE_HEALTH_MONITOR_FLOW = 'octavia-create-health-monitor-flow'
|
|
CREATE_LISTENER_FLOW = 'octavia-create-listener_flow'
|
|
PRE_CREATE_LOADBALANCER_FLOW = 'octavia-pre-create-loadbalancer-flow'
|
|
CREATE_SERVER_GROUP_FLOW = 'octavia-create-server-group-flow'
|
|
UPDATE_LB_SERVERGROUPID_FLOW = 'octavia-update-lb-server-group-id-flow'
|
|
CREATE_LISTENERS_FLOW = 'octavia-create-all-listeners-flow'
|
|
CREATE_LOADBALANCER_FLOW = 'octavia-create-loadbalancer-flow'
|
|
CREATE_LOADBALANCER_GRAPH_FLOW = 'octavia-create-loadbalancer-graph-flow'
|
|
CREATE_MEMBER_FLOW = 'octavia-create-member-flow'
|
|
CREATE_POOL_FLOW = 'octavia-create-pool-flow'
|
|
CREATE_L7POLICY_FLOW = 'octavia-create-l7policy-flow'
|
|
CREATE_L7RULE_FLOW = 'octavia-create-l7rule-flow'
|
|
DELETE_AMPHORA_FLOW = 'octavia-delete-amphora-flow'
|
|
DELETE_EXTRA_AMPHORAE_FLOW = 'octavia-delete-extra-amphorae-flow'
|
|
DELETE_HEALTH_MONITOR_FLOW = 'octavia-delete-health-monitor-flow'
|
|
DELETE_LISTENER_FLOW = 'octavia-delete-listener_flow'
|
|
DELETE_LOADBALANCER_FLOW = 'octavia-delete-loadbalancer-flow'
|
|
DELETE_MEMBER_FLOW = 'octavia-delete-member-flow'
|
|
DELETE_POOL_FLOW = 'octavia-delete-pool-flow'
|
|
DELETE_L7POLICY_FLOW = 'octavia-delete-l7policy-flow'
|
|
DELETE_L7RULE_FLOW = 'octavia-delete-l7policy-flow'
|
|
FAILOVER_AMPHORA_FLOW = 'octavia-failover-amphora-flow'
|
|
FAILOVER_LOADBALANCER_FLOW = 'octavia-failover-loadbalancer-flow'
|
|
FINALIZE_AMPHORA_FLOW = 'octavia-finalize-amphora-flow'
|
|
LOADBALANCER_NETWORKING_SUBFLOW = 'octavia-new-loadbalancer-net-subflow'
|
|
UPDATE_HEALTH_MONITOR_FLOW = 'octavia-update-health-monitor-flow'
|
|
UPDATE_LISTENER_FLOW = 'octavia-update-listener-flow'
|
|
UPDATE_LOADBALANCER_FLOW = 'octavia-update-loadbalancer-flow'
|
|
UPDATE_MEMBER_FLOW = 'octavia-update-member-flow'
|
|
UPDATE_POOL_FLOW = 'octavia-update-pool-flow'
|
|
UPDATE_L7POLICY_FLOW = 'octavia-update-l7policy-flow'
|
|
UPDATE_L7RULE_FLOW = 'octavia-update-l7rule-flow'
|
|
UPDATE_AMPS_SUBFLOW = 'octavia-update-amps-subflow'
|
|
UPDATE_AMPHORA_CONFIG_FLOW = 'octavia-update-amp-config-flow'
|
|
|
|
POST_MAP_AMP_TO_LB_SUBFLOW = 'octavia-post-map-amp-to-lb-subflow'
|
|
CREATE_AMP_FOR_LB_SUBFLOW = 'octavia-create-amp-for-lb-subflow'
|
|
CREATE_AMP_FOR_FAILOVER_SUBFLOW = 'octavia-create-amp-for-failover-subflow'
|
|
AMP_PLUG_NET_SUBFLOW = 'octavia-plug-net-subflow'
|
|
GET_AMPHORA_FOR_LB_SUBFLOW = 'octavia-get-amphora-for-lb-subflow'
|
|
POST_LB_AMP_ASSOCIATION_SUBFLOW = (
|
|
'octavia-post-loadbalancer-amp_association-subflow')
|
|
AMPHORA_LISTENER_START_SUBFLOW = 'amphora-listener-start-subflow'
|
|
AMPHORA_LISTENER_RELOAD_SUBFLOW = 'amphora-listener-start-subflow'
|
|
|
|
MAP_LOADBALANCER_TO_AMPHORA = 'octavia-mapload-balancer-to-amphora'
|
|
RELOAD_AMPHORA = 'octavia-reload-amphora'
|
|
CREATE_AMPHORA_INDB = 'octavia-create-amphora-indb'
|
|
GENERATE_SERVER_PEM = 'octavia-generate-serverpem'
|
|
UPDATE_CERT_EXPIRATION = 'octavia-update-cert-expiration'
|
|
CERT_COMPUTE_CREATE = 'octavia-cert-compute-create'
|
|
COMPUTE_CREATE = 'octavia-compute-create'
|
|
UPDATE_AMPHORA_COMPUTEID = 'octavia-update-amphora-computeid'
|
|
MARK_AMPHORA_BOOTING_INDB = 'octavia-mark-amphora-booting-indb'
|
|
WAIT_FOR_AMPHORA = 'octavia-wait_for_amphora'
|
|
COMPUTE_WAIT = 'octavia-compute-wait'
|
|
UPDATE_AMPHORA_INFO = 'octavia-update-amphora-info'
|
|
AMPHORA_FINALIZE = 'octavia-amphora-finalize'
|
|
MARK_AMPHORA_ALLOCATED_INDB = 'octavia-mark-amphora-allocated-indb'
|
|
MARK_AMPHORA_READY_INDB = 'octavia-mark-amphora-ready-indb'
|
|
MARK_LB_ACTIVE_INDB = 'octavia-mark-lb-active-indb'
|
|
MARK_AMP_MASTER_INDB = 'octavia-mark-amp-master-indb'
|
|
MARK_AMP_BACKUP_INDB = 'octavia-mark-amp-backup-indb'
|
|
MARK_AMP_STANDALONE_INDB = 'octavia-mark-amp-standalone-indb'
|
|
GET_VRRP_SUBFLOW = 'octavia-get-vrrp-subflow'
|
|
AMP_VRRP_UPDATE = 'octavia-amphora-vrrp-update'
|
|
AMP_VRRP_START = 'octavia-amphora-vrrp-start'
|
|
AMP_VRRP_STOP = 'octavia-amphora-vrrp-stop'
|
|
AMP_UPDATE_VRRP_INTF = 'octavia-amphora-update-vrrp-intf'
|
|
CREATE_VRRP_GROUP_FOR_LB = 'octavia-create-vrrp-group-for-lb'
|
|
CREATE_VRRP_SECURITY_RULES = 'octavia-create-vrrp-security-rules'
|
|
AMP_COMPUTE_CONNECTIVITY_WAIT = 'octavia-amp-compute-connectivity-wait'
|
|
AMP_LISTENER_UPDATE = 'octavia-amp-listeners-update'
|
|
AMP_LISTENER_START = 'octavia-amp-listeners-start'
|
|
PLUG_VIP_AMPHORA = 'octavia-amp-plug-vip'
|
|
APPLY_QOS_AMP = 'octavia-amp-apply-qos'
|
|
UPDATE_AMPHORA_VIP_DATA = 'ocatvia-amp-update-vip-data'
|
|
GET_AMP_NETWORK_CONFIG = 'octavia-amp-get-network-config'
|
|
AMP_POST_VIP_PLUG = 'octavia-amp-post-vip-plug'
|
|
GENERATE_SERVER_PEM_TASK = 'GenerateServerPEMTask'
|
|
AMPHORA_CONFIG_UPDATE_TASK = 'AmphoraConfigUpdateTask'
|
|
FIRST_AMP_NETWORK_CONFIGS = 'first-amp-network-configs'
|
|
FIRST_AMP_VRRP_INTERFACE = 'first-amp-vrrp_interface'
|
|
|
|
# Batch Member Update constants
|
|
UNORDERED_MEMBER_UPDATES_FLOW = 'octavia-unordered-member-updates-flow'
|
|
UNORDERED_MEMBER_ACTIVE_FLOW = 'octavia-unordered-member-active-flow'
|
|
UPDATE_ATTRIBUTES_FLOW = 'octavia-update-attributes-flow'
|
|
DELETE_MODEL_OBJECT_FLOW = 'octavia-delete-model-object-flow'
|
|
BATCH_UPDATE_MEMBERS_FLOW = 'octavia-batch-update-members-flow'
|
|
MEMBER_TO_ERROR_ON_REVERT_FLOW = 'octavia-member-to-error-on-revert-flow'
|
|
DECREMENT_MEMBER_QUOTA_FLOW = 'octavia-decrement-member-quota-flow'
|
|
MARK_MEMBER_ACTIVE_INDB = 'octavia-mark-member-active-indb'
|
|
UPDATE_MEMBER_INDB = 'octavia-update-member-indb'
|
|
DELETE_MEMBER_INDB = 'octavia-delete-member-indb'
|
|
|
|
# Task Names
|
|
ADMIN_DOWN_PORT = 'admin-down-port'
|
|
AMPHORA_POST_VIP_PLUG = 'amphora-post-vip-plug'
|
|
AMPHORA_RELOAD_LISTENER = 'amphora-reload-listener'
|
|
AMPHORA_TO_ERROR_ON_REVERT = 'amphora-to-error-on-revert'
|
|
AMPHORAE_POST_NETWORK_PLUG = 'amphorae-post-network-plug'
|
|
ATTACH_PORT = 'attach-port'
|
|
CALCULATE_AMPHORA_DELTA = 'calculate-amphora-delta'
|
|
CREATE_VIP_BASE_PORT = 'create-vip-base-port'
|
|
DELETE_AMPHORA = 'delete-amphora'
|
|
DELETE_PORT = 'delete-port'
|
|
DISABLE_AMP_HEALTH_MONITORING = 'disable-amphora-health-monitoring'
|
|
GET_AMPHORA_NETWORK_CONFIGS_BY_ID = 'get-amphora-network-configs-by-id'
|
|
GET_AMPHORAE_FROM_LB = 'get-amphorae-from-lb'
|
|
HANDLE_NETWORK_DELTA = 'handle-network-delta'
|
|
MARK_AMPHORA_DELETED = 'mark-amphora-deleted'
|
|
MARK_AMPHORA_PENDING_DELETE = 'mark-amphora-pending-delete'
|
|
MARK_AMPHORA_HEALTH_BUSY = 'mark-amphora-health-busy'
|
|
RELOAD_AMP_AFTER_PLUG_VIP = 'reload-amp-after-plug-vip'
|
|
RELOAD_LB_AFTER_AMP_ASSOC = 'reload-lb-after-amp-assoc'
|
|
RELOAD_LB_AFTER_AMP_ASSOC_FULL_GRAPH = 'reload-lb-after-amp-assoc-full-graph'
|
|
RELOAD_LB_AFTER_PLUG_VIP = 'reload-lb-after-plug-vip'
|
|
RELOAD_LB_BEFOR_ALLOCATE_VIP = 'reload-lb-before-allocate-vip'
|
|
UPDATE_AMP_FAILOVER_DETAILS = 'update-amp-failover-details'
|
|
|
|
|
|
NOVA_1 = '1.1'
|
|
NOVA_21 = '2.1'
|
|
NOVA_3 = '3'
|
|
NOVA_VERSIONS = (NOVA_1, NOVA_21, NOVA_3)
|
|
|
|
# Auth sections
|
|
SERVICE_AUTH = 'service_auth'
|
|
|
|
RPC_NAMESPACE_CONTROLLER_AGENT = 'controller'
|
|
|
|
# Build Type Priority
|
|
LB_CREATE_FAILOVER_PRIORITY = 20
|
|
LB_CREATE_NORMAL_PRIORITY = 40
|
|
LB_CREATE_SPARES_POOL_PRIORITY = 60
|
|
LB_CREATE_ADMIN_FAILOVER_PRIORITY = 80
|
|
BUILD_TYPE_PRIORITY = 'build_type_priority'
|
|
|
|
# Active standalone roles and topology
|
|
TOPOLOGY_SINGLE = 'SINGLE'
|
|
TOPOLOGY_ACTIVE_STANDBY = 'ACTIVE_STANDBY'
|
|
ROLE_MASTER = 'MASTER'
|
|
ROLE_BACKUP = 'BACKUP'
|
|
ROLE_STANDALONE = 'STANDALONE'
|
|
|
|
SUPPORTED_LB_TOPOLOGIES = (TOPOLOGY_ACTIVE_STANDBY, TOPOLOGY_SINGLE)
|
|
SUPPORTED_AMPHORA_ROLES = (ROLE_BACKUP, ROLE_MASTER, ROLE_STANDALONE)
|
|
|
|
TOPOLOGY_STATUS_OK = 'OK'
|
|
|
|
ROLE_MASTER_PRIORITY = 100
|
|
ROLE_BACKUP_PRIORITY = 90
|
|
|
|
VRRP_AUTH_DEFAULT = 'PASS'
|
|
VRRP_AUTH_AH = 'AH'
|
|
SUPPORTED_VRRP_AUTH = (VRRP_AUTH_DEFAULT, VRRP_AUTH_AH)
|
|
|
|
KEEPALIVED_CMD = '/usr/sbin/keepalived '
|
|
# The DEFAULT_VRRP_ID value needs to be variable for multi tenant support
|
|
# per amphora in the future
|
|
DEFAULT_VRRP_ID = 1
|
|
VRRP_PROTOCOL_NUM = 112
|
|
AUTH_HEADER_PROTOCOL_NUMBER = 51
|
|
|
|
TEMPLATES = '/templates'
|
|
AGENT_API_TEMPLATES = '/templates'
|
|
LOGGING_TEMPLATES = '/templates'
|
|
|
|
AGENT_CONF_TEMPLATE = 'amphora_agent_conf.template'
|
|
LOGGING_CONF_TEMPLATE = '10-rsyslog.conf.template'
|
|
USER_DATA_CONFIG_DRIVE_TEMPLATE = 'user_data_config_drive.template'
|
|
|
|
OPEN = 'OPEN'
|
|
FULL = 'FULL'
|
|
|
|
# OPEN = HAProxy listener status nbconn < maxconn
|
|
# FULL = HAProxy listener status not nbconn < maxconn
|
|
HAPROXY_LISTENER_STATUSES = (OPEN, FULL)
|
|
|
|
UP = 'UP'
|
|
DOWN = 'DOWN'
|
|
|
|
# UP = HAProxy backend has working or no servers
|
|
# DOWN = HAProxy backend has no working servers
|
|
HAPROXY_BACKEND_STATUSES = (UP, DOWN)
|
|
|
|
|
|
DRAIN = 'DRAIN'
|
|
MAINT = 'MAINT'
|
|
NO_CHECK = 'no check'
|
|
|
|
# DRAIN = member is weight 0 and is in draining mode
|
|
# MAINT = member is downed for maintenance? not sure when this happens
|
|
# NO_CHECK = no health monitor is enabled
|
|
HAPROXY_MEMBER_STATUSES = (UP, DOWN, DRAIN, MAINT, NO_CHECK)
|
|
|
|
# Default number of concurrent connections in a HAProxy listener.
|
|
HAPROXY_DEFAULT_MAXCONN = 50000
|
|
|
|
# Current maximum number of conccurent connections in HAProxy.
|
|
# This is limited by the systemd "LimitNOFILE" and
|
|
# the sysctl fs.file-max fs.nr_open settings in the image
|
|
HAPROXY_MAX_MAXCONN = 1000000
|
|
|
|
RESTARTING = 'RESTARTING'
|
|
|
|
# Quota Constants
|
|
QUOTA_UNLIMITED = -1
|
|
MIN_QUOTA = QUOTA_UNLIMITED
|
|
MAX_QUOTA = 2000000000
|
|
|
|
API_VERSION = '0.5'
|
|
|
|
HAPROXY_BASE_PEER_PORT = 1025
|
|
KEEPALIVED_JINJA2_UPSTART = 'keepalived.upstart.j2'
|
|
KEEPALIVED_JINJA2_SYSTEMD = 'keepalived.systemd.j2'
|
|
KEEPALIVED_JINJA2_SYSVINIT = 'keepalived.sysvinit.j2'
|
|
CHECK_SCRIPT_CONF = 'keepalived_check_script.conf.j2'
|
|
KEEPALIVED_CHECK_SCRIPT = 'keepalived_lvs_check_script.sh.j2'
|
|
|
|
PLUGGED_INTERFACES = '/var/lib/octavia/plugged_interfaces'
|
|
HAPROXY_USER_GROUP_CFG = '/var/lib/octavia/haproxy-default-user-group.conf'
|
|
AMPHORA_NAMESPACE = 'amphora-haproxy'
|
|
|
|
FLOW_DOC_TITLES = {'AmphoraFlows': 'Amphora Flows',
|
|
'LoadBalancerFlows': 'Load Balancer Flows',
|
|
'ListenerFlows': 'Listener Flows',
|
|
'PoolFlows': 'Pool Flows',
|
|
'MemberFlows': 'Member Flows',
|
|
'HealthMonitorFlows': 'Health Monitor Flows',
|
|
'L7PolicyFlows': 'Layer 7 Policy Flows',
|
|
'L7RuleFlows': 'Layer 7 Rule Flows'}
|
|
|
|
NETNS_PRIMARY_INTERFACE = 'eth1'
|
|
SYSCTL_CMD = '/sbin/sysctl'
|
|
|
|
AMP_ACTION_START = 'start'
|
|
AMP_ACTION_STOP = 'stop'
|
|
AMP_ACTION_RELOAD = 'reload'
|
|
AMP_ACTION_RESTART = 'restart'
|
|
GLANCE_IMAGE_ACTIVE = 'active'
|
|
|
|
INIT_SYSTEMD = 'systemd'
|
|
INIT_UPSTART = 'upstart'
|
|
INIT_SYSVINIT = 'sysvinit'
|
|
INIT_UNKOWN = 'unknown'
|
|
VALID_INIT_SYSTEMS = (INIT_SYSTEMD, INIT_SYSVINIT, INIT_UPSTART)
|
|
INIT_PATH = '/sbin/init'
|
|
|
|
SYSTEMD_DIR = '/usr/lib/systemd/system'
|
|
SYSVINIT_DIR = '/etc/init.d'
|
|
UPSTART_DIR = '/etc/init'
|
|
|
|
INIT_PROC_COMM_PATH = '/proc/1/comm'
|
|
|
|
KEEPALIVED_SYSTEMD = 'octavia-keepalived.service'
|
|
KEEPALIVED_SYSVINIT = 'octavia-keepalived'
|
|
KEEPALIVED_UPSTART = 'octavia-keepalived.conf'
|
|
|
|
KEEPALIVED_SYSTEMD_PREFIX = 'octavia-keepalivedlvs-%s.service'
|
|
KEEPALIVED_SYSVINIT_PREFIX = 'octavia-keepalivedlvs-%s'
|
|
KEEPALIVED_UPSTART_PREFIX = 'octavia-keepalivedlvs-%s.conf'
|
|
|
|
# Authentication
|
|
KEYSTONE = 'keystone'
|
|
NOAUTH = 'noauth'
|
|
TESTING = 'testing'
|
|
|
|
# Amphora distro-specific data
|
|
UBUNTU_AMP_NET_DIR_TEMPLATE = '/etc/netns/{netns}/network/interfaces.d/'
|
|
RH_AMP_NET_DIR_TEMPLATE = '/etc/netns/{netns}/sysconfig/network-scripts/'
|
|
UBUNTU = 'ubuntu'
|
|
CENTOS = 'centos'
|
|
|
|
# Pagination, sorting, filtering values
|
|
APPLICATION_JSON = 'application/json'
|
|
PAGINATION_HELPER = 'pagination_helper'
|
|
ASC = 'asc'
|
|
DESC = 'desc'
|
|
ALLOWED_SORT_DIR = (ASC, DESC)
|
|
DEFAULT_SORT_DIR = ASC
|
|
DEFAULT_SORT_KEYS = ['created_at', 'id']
|
|
DEFAULT_PAGE_SIZE = 1000
|
|
|
|
# RBAC
|
|
LOADBALANCER_API = 'os_load-balancer_api'
|
|
RULE_API_ADMIN = 'rule:load-balancer:admin'
|
|
RULE_API_READ = 'rule:load-balancer:read'
|
|
RULE_API_READ_GLOBAL = 'rule:load-balancer:read-global'
|
|
RULE_API_WRITE = 'rule:load-balancer:write'
|
|
RULE_API_READ_QUOTA = 'rule:load-balancer:read-quota'
|
|
RULE_API_READ_QUOTA_GLOBAL = 'rule:load-balancer:read-quota-global'
|
|
RULE_API_WRITE_QUOTA = 'rule:load-balancer:write-quota'
|
|
RBAC_LOADBALANCER = '{}:loadbalancer:'.format(LOADBALANCER_API)
|
|
RBAC_LISTENER = '{}:listener:'.format(LOADBALANCER_API)
|
|
RBAC_POOL = '{}:pool:'.format(LOADBALANCER_API)
|
|
RBAC_MEMBER = '{}:member:'.format(LOADBALANCER_API)
|
|
RBAC_HEALTHMONITOR = '{}:healthmonitor:'.format(LOADBALANCER_API)
|
|
RBAC_L7POLICY = '{}:l7policy:'.format(LOADBALANCER_API)
|
|
RBAC_L7RULE = '{}:l7rule:'.format(LOADBALANCER_API)
|
|
RBAC_QUOTA = '{}:quota:'.format(LOADBALANCER_API)
|
|
RBAC_AMPHORA = '{}:amphora:'.format(LOADBALANCER_API)
|
|
RBAC_PROVIDER = '{}:provider:'.format(LOADBALANCER_API)
|
|
RBAC_PROVIDER_FLAVOR = '{}:provider-flavor:'.format(LOADBALANCER_API)
|
|
RBAC_PROVIDER_AVAILABILITY_ZONE = '{}:provider-availability-zone:'.format(
|
|
LOADBALANCER_API)
|
|
RBAC_FLAVOR = '{}:flavor:'.format(LOADBALANCER_API)
|
|
RBAC_FLAVOR_PROFILE = '{}:flavor-profile:'.format(LOADBALANCER_API)
|
|
RBAC_AVAILABILITY_ZONE = '{}:availability-zone:'.format(LOADBALANCER_API)
|
|
RBAC_AVAILABILITY_ZONE_PROFILE = '{}:availability-zone-profile:'.format(
|
|
LOADBALANCER_API)
|
|
RBAC_POST = 'post'
|
|
RBAC_PUT = 'put'
|
|
RBAC_PUT_CONFIG = 'put_config'
|
|
RBAC_PUT_FAILOVER = 'put_failover'
|
|
RBAC_DELETE = 'delete'
|
|
RBAC_GET_ONE = 'get_one'
|
|
RBAC_GET_ALL = 'get_all'
|
|
RBAC_GET_ALL_GLOBAL = 'get_all-global'
|
|
RBAC_GET_DEFAULTS = 'get_defaults'
|
|
RBAC_GET_STATS = 'get_stats'
|
|
RBAC_GET_STATUS = 'get_status'
|
|
|
|
# PROVIDERS
|
|
OCTAVIA = 'octavia'
|
|
AMPHORAV2 = 'amphorav2'
|
|
|
|
# systemctl commands
|
|
DISABLE = 'disable'
|
|
ENABLE = 'enable'
|
|
|
|
# systemd amphora netns service prefix
|
|
AMP_NETNS_SVC_PREFIX = 'amphora-netns'
|
|
|
|
# Amphora Feature Compatibility
|
|
HTTP_REUSE = 'has_http_reuse'
|
|
|
|
# TODO(johnsom) convert these to octavia_lib constants
|
|
# once octavia is transitioned to use octavia_lib
|
|
FLAVOR = 'flavor'
|
|
FLAVOR_DATA = 'flavor_data'
|
|
AVAILABILITY_ZONE = 'availability_zone'
|
|
AVAILABILITY_ZONE_DATA = 'availability_zone_data'
|
|
|
|
# Flavor metadata
|
|
LOADBALANCER_TOPOLOGY = 'loadbalancer_topology'
|
|
COMPUTE_FLAVOR = 'compute_flavor'
|
|
|
|
# TODO(johnsom) move to octavia_lib
|
|
# client certification authorization option
|
|
CLIENT_AUTH_NONE = 'NONE'
|
|
CLIENT_AUTH_OPTIONAL = 'OPTIONAL'
|
|
CLIENT_AUTH_MANDATORY = 'MANDATORY'
|
|
SUPPORTED_CLIENT_AUTH_MODES = [CLIENT_AUTH_NONE, CLIENT_AUTH_OPTIONAL,
|
|
CLIENT_AUTH_MANDATORY]
|
|
|
|
TOPIC_AMPHORA_V2 = 'octavia_provisioning_v2'
|
|
|
|
HAPROXY_HTTP_PROTOCOLS = [lib_consts.PROTOCOL_HTTP,
|
|
lib_consts.PROTOCOL_TERMINATED_HTTPS]
|
|
|
|
# Map each supported protocol to its L4 protocol
|
|
L4_PROTOCOL_MAP = {
|
|
PROTOCOL_TCP: PROTOCOL_TCP,
|
|
PROTOCOL_HTTP: PROTOCOL_TCP,
|
|
PROTOCOL_HTTPS: PROTOCOL_TCP,
|
|
PROTOCOL_TERMINATED_HTTPS: PROTOCOL_TCP,
|
|
PROTOCOL_PROXY: PROTOCOL_TCP,
|
|
PROTOCOL_UDP: PROTOCOL_UDP,
|
|
}
|
|
|
|
# Volume drivers
|
|
VOLUME_NOOP_DRIVER = 'volume_noop_driver'
|
|
SUPPORTED_VOLUME_DRIVERS = [VOLUME_NOOP_DRIVER,
|
|
'volume_cinder_driver']
|
|
|
|
# Cinder volume driver constants
|
|
CINDER_STATUS_AVAILABLE = 'available'
|
|
CINDER_STATUS_ERROR = 'error'
|
|
CINDER_ACTION_CREATE_VOLUME = 'create volume'
|
|
|
|
# The nil UUID (used in octavia for deleted references) - RFC 4122
|
|
NIL_UUID = '00000000-0000-0000-0000-000000000000'
|
|
|
|
# OpenSSL cipher strings
|
|
CIPHERS_OWASP_SUITE_B = ('TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:'
|
|
'TLS_AES_128_GCM_SHA256:DHE-RSA-AES256-GCM-SHA384:'
|
|
'DHE-RSA-AES128-GCM-SHA256:'
|
|
'ECDHE-RSA-AES256-GCM-SHA384:'
|
|
'ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-SHA256:'
|
|
'DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:'
|
|
'ECDHE-RSA-AES128-SHA256')
|
|
|
|
TLS_VERSIONS_OWASP_SUITE_B = [lib_consts.TLS_VERSION_1_2,
|
|
lib_consts.TLS_VERSION_1_3]
|
|
|
|
# All supported TLS versions in ascending order (oldest to newest)
|
|
TLS_ALL_VERSIONS = [
|
|
lib_consts.SSL_VERSION_3,
|
|
lib_consts.TLS_VERSION_1,
|
|
lib_consts.TLS_VERSION_1_1,
|
|
lib_consts.TLS_VERSION_1_2,
|
|
lib_consts.TLS_VERSION_1_3
|
|
]
|
|
|
|
VIP_SECURITY_GROUP_PREFIX = 'lb-'
|
|
|
|
AMP_BASE_PORT_PREFIX = 'octavia-lb-vrrp-'
|
|
OCTAVIA_OWNED = 'octavia_owned'
|
|
|
|
# Sadly in the LBaaS v2 API, header insertions are on the listener objects
|
|
# but they should be on the pool. Dealing with it until v3.
|
|
LISTENER_PROTOCOLS_SUPPORTING_HEADER_INSERTION = [PROTOCOL_HTTP,
|
|
PROTOCOL_TERMINATED_HTTPS]
|