[DEFAULT]

#
# From oslo.log
#

# The name of a logging configuration file. This file is appended to any
# existing logging configuration files. For details about logging configuration
# files, see the Python logging module documentation. Note that when logging
# configuration files are used then all logging configuration is set in the
# configuration file and other logging configuration options are ignored (for
# example, log-date-format). (string value)
# Note: This option can be changed without restarting.
# Deprecated group/name - [DEFAULT]/log_config
log_config_append = /etc/monasca/notification-logging.conf


[alarm_processor]
# Options to configure alarm processor.

#
# From monasca_notification
#

# DEPRECATED: Number of alarm processors to spawn (integer value)
# Minimum value: 1
# This option is deprecated for removal since 1.8.0.
# Its value may be silently ignored in the future.
# Reason: Options is not used in the current code and will be removed in future
# releases.
#number = 2

# Alarms older than TTL are not processed by notification engine. (integer
# value)
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
#ttl = 14400


[database]
# Driver configuration for database connectivity.

#
# From monasca_notification
#

# Driver name (or full class path) that should be used to handle RDB
# connections. Accepts either short labels dict_keys(['postgresql', 'mysql',
# 'orm']) or full class names
# dict_values(['monasca_notification.common.repositories.postgres.pgsql_repo:PostgresqlRepo',
# 'monasca_notification.common.repositories.mysql.mysql_repo:MysqlRepo',
# 'monasca_notification.common.repositories.orm.orm_repo:OrmRepo']). Configuring
# either of them will require presence of one of following sections
# dict_keys(['postgresql', 'mysql', 'orm']) inside configuration file. (plugin value)
# Possible values:
# orm - <No description provided>
# mysql - <No description provided>
# monasca_notification.common.repositories.postgres.pgsql_repo:PostgresqlRepo - <No description provided>
# monasca_notification.common.repositories.orm.orm_repo:OrmRepo - <No description provided>
# monasca_notification.common.repositories.mysql.mysql_repo:MysqlRepo - <No description provided>
# postgresql - <No description provided>
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
#repo_driver = mysql


[notification_types]
# Group allows to configure available notifiers inside notification engine.

#
# From monasca_notification
#
# List of enabled notification types. You may specify full class name
# monasca_notification.plugins.email_notifier:EmailNotifier or shorter label email. (list value)
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
#
# This option has a sample default set, which means that
# its actual default value may vary from the one documented
# below.
{% if NF_PLUGINS %}
    {% set enabled = NF_PLUGINS.split(',')|map('trim')|list %}
enabled = {{ NF_PLUGINS }}
{% else %}
    {% set enabled = [] %}
#enabled = email,jira,pagerduty,slack,webhook
{% endif %}


### EMAIL
{% if 'email' in enabled %}
[email_notifier]

#
# From monasca_notification
#
# (string value)
from_addr = {{ NF_EMAIL_FROM_ADDR }}

# (host address value)
server = {{ NF_EMAIL_SERVER }}

# (port value)
# Minimum value: 0
# Maximum value: 65535
port = {{ NF_EMAIL_PORT | default(25) }}

# (integer value)
# Minimum value: 1
timeout = {{ NF_EMAIL_TIMEOUT | default(15) }}

# (string value)
user = {{ NF_EMAIL_USER }}

# (string value)
password = {{ NF_EMAIL_PASSWORD }}

# (string value)
grafana_url = {{ NF_EMAIL_GRAFANA_URL }}
{% else %}
#[email_notifier]

#
# From monasca_notification
#
# (string value)
#from_addr = <None>

# (host address value)
#server = <None>

# (port value)
# Minimum value: 0
# Maximum value: 65535
#port = 25

# (integer value)
# Minimum value: 1
#timeout = 5

# (string value)
#user = <None>

# (string value)
#password = <None>

# (string value)
#grafana_url = <None>
{% endif %}


### JIRA
{% if 'jira' in enabled %}
[jira_notifier]

#
# From monasca_notification
#

{% else %}
#[jira_notifier]

#
# From monasca_notification
#
# (integer value)
# Minimum value: 1
#timeout = 5

# (string value)
#user = <None>

# (string value)
#password = <None>

# (string value)
#custom_formatter = <None>

# (string value)
#proxy = <None>
{% endif %}


### PAGERDUTY
{% if 'pagerduty' in enabled %}
[pagerduty_notifier]

#
# From monasca_notification
#

# (integer value)
# Minimum value: 1
timeout = {{ NF_PAGERDUTY_TIMEOUT | default(5) }}

# (string value)
url = {{ NF_PAGERDUTY_URL | default('https://events.pagerduty.com/generic/2010-04-15/create_event.json') }}
{% else %}
#[pagerduty_notifier]

#
# From monasca_notification
#

# (integer value)
# Minimum value: 1
#timeout = 5

# (string value)
#url = https://events.pagerduty.com/generic/2010-04-15/create_event.json
{% endif %}


### SLACK
{% if 'slack' in enabled %}
[slack_notifier]

#
# From monasca_notification
#

# (integer value)
# Minimum value: 1
timeout = {{ NF_SLACK_TIMEOUT | default(5) }}

# (boolean value)
insecure = {{ NF_SLACK_INSECURE | default('false') }}

# (string value)
ca_certs = {{ NF_SLACK_CA_CERTS | default('/etc/ssl/certs/ca-certificates.crt') }}

{% if NF_SLACK_PROXY %}
# (string value)
proxy = {{ NF_SLACK_PROXY }}
{% endif %}
{% else %}
#[slack_notifier]

#
# From monasca_notification
#

# (integer value)
# Minimum value: 1
#timeout = 5

# (boolean value)
#insecure = true

# (string value)
#ca_certs = <None>

# (string value)
#proxy = <None>

# (string value)
#message_template = <None>
{% endif %}


### WEBHOOK
{% if 'webhook' in enabled %}
[webhook_notifier]

#
# From monasca_notification
#

# (integer value)
# Minimum value: 1
timeout = {{ NF_WEBHOOK_TIMEOUT | default(5) }}
{% else %}
#[webhook_notifier]

#
# From monasca_notification
#

# (integer value)
# Minimum value: 1
#timeout = 5
{% endif %}


[kafka]
# Options under this group allow to configure valid connection or Kafka queue.

#
# From monasca_notification
#

# List of addresses (with ports) pointing at Kafka cluster. (list value)
url = {{ KAFKA_URI }}

# Consumer's group for monasca-notification client. (string value)
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
group = monasca-notification

# Topic name in kafka where alarm transitions are stored. (string value)
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
alarm_topic = alarm-state-transitions

# Topic name in kafka where alarm notifications are stored. (string value)
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
notification_topic = alarm-notifications

# Topic name in kafka where notifications, that have failed to be sent and are
# waiting for retry operations, are stored. (string value)
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
notification_retry_topic = retry-notifications

# Dict of periodic topics. Keys are the period and values the actual topic names
# in kafka where notifications are stored. (dict value)
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
periodic = 60:60-seconds-notifications

# Maximum lag for topic that is acceptable by the monasca-notification.
# Notifications that are older than this offset are skipped. (integer value)
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
max_offset_lag = 600

# Enable legacy Kafka client. When set old version of kafka-python library is
# used. Message format version for the brokers should be set to 0.9.0.0 to avoid
# performance issues until all consumers are upgraded. (boolean value)
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
legacy_kafka_client_enabled = {{ KAFKA_LEGACY_CLIENT_ENABLED }}


[keystone]
# Options under this group allow to configure valid connection via
# Keystoneauthentication.

#
# From monasca_notification
#

# This option enable or disable authentication using keystone (boolean value)
#auth_required = false

# URL of identity service (string value)
#auth_url = http://127.0.0.1/identity/v3

# Username (string value)
#username = admin

# Password of identity service (string value)
#password = password

# Name of project (string value)
#project_name = admin

# User domain name (string value)
#user_domain_name = default

# Project domain name (string value)
#project_domain_name = default

# Type of authentication (string value)
#auth_type = password


[mysql]
# Configuration options to configure plain MySQL RBD driver.

#
# From monasca_notification
#

# IP address of MySQL instance. (host address value)
host = {{ MYSQL_HOST }}

# Port number of MySQL instance. (port value)
# Minimum value: 0
# Maximum value: 65535
port = {{ MYSQL_PORT }}

# Username to connect to MySQL instance and given database. (string value)
user = {{ MYSQL_USER }}

# Password to connect to MySQL instance and given database. (string value)
passwd = {{ MYSQL_PASSWORD }}

# A dict of arguments similar to mysql_ssl_set parameters. (dict value)
#ssl =

# Database name available in given MySQL instance. (string value)
db = {{ MYSQL_DB }}


[notification_processor]
# Options to configure notification processor.

#
# From monasca_notification
#

# Number of notification processors to spawn. (integer value)
# Minimum value: 1
number =  {{ NOTIFICATION_PROCESSORS }}


[orm]
# Configuration options to configure ORM RBD driver.

#
# From monasca_notification
#

# Connection string for sqlalchemy. (string value)
#url = <None>


[postgresql]
# Configuration options to configure plain PostgreSQL RBD driver.

#
# From monasca_notification
#

# IP address of PostgreSQL instance. (host address value)
#host = 127.0.0.1

# Port number of PostgreSQL instance. (port value)
# Minimum value: 0
# Maximum value: 65535
#port = 5432

# Username to connect to PostgreSQL instance and given database. (string value)
#user = notification

# Password to connect to PostgreSQL instance and given database (string value)
#password = password

# Database name available in given PostgreSQL instance. (string value)
#database = mon


[queues]
# Options under this group allow to configure valid connection sizes of all
# queues.

#
# From monasca_notification
#

# Size of the alarms queue. (integer value)
# Minimum value: 1
alarms_size = 256

# Size of the finished alarms queue. (integer value)
# Minimum value: 1
finished_size = 256

# Size of notifications queue. (integer value)
# Minimum value: 1
notifications_size = 256

# Size of sent notifications queue. Limiting this size reduces potential or re-
# sent notifications after a failure. (integer value)
# Minimum value: 1
sent_notifications_size = 50


[retry_engine]
# Options under this group allow to configure valid connection for retry engine.

#
# From monasca_notification
#

# How often should retry happen. (integer value)
# Minimum value: 30
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
interval = {{ RETRY_INTERVAL }}

# How many times should retrying be tried. (integer value)
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
max_attempts = {{ RETRY_MAX_ATTEMPTS }}


[statsd]
# Options under this group allow to configure valid connection to statsd server
# launched by monasca-agent.

#
# From monasca_notification
#

# Enable or disable self monitoring. (boolean value)
enable = {{ STATSD_ENABLED }}

# IP address of statsd server. (host address value)
host = {{ STATSD_HOST }}

# Port of statsd server. (port value)
# Minimum value: 0
# Maximum value: 65535
port = {{ STATSD_PORT }}


[zookeeper]
# Options under this group allow to configure settings for zookeeper handling.

#
# From monasca_notification
#

# List of addresses (with ports) pointing at zookeeper cluster. (list value)
url = {{ ZOOKEEPER_URL }}

# Path in zookeeper tree to track notification offsets. (string value)
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
notification_path = /notification/alarms

# Path in zookeeper tree to track notification retries offsets. (string value)
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
notification_retry_path = /notification/retry

# Paths in zookeeper tree to track periodic offsets. Keys must be integers
# describing the interval of periodic notification. Values are actual paths
# inside zookeeper tree. (dict value)
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
periodic_path = 60:/notification/60_seconds
