From 2bf341c6ddb68b2560ade5c7fb2d2df58b9280f9 Mon Sep 17 00:00:00 2001 From: Thomas Bechtold Date: Fri, 25 Jan 2019 13:51:54 +0100 Subject: [PATCH] Use monasca-notification.conf during devstack runs Since [1], monasca-notification supports the standard oslo.config based configuration style (ini file instead of yaml). The old notification.yaml file still works but is deprecated. So switching to use the new oslo.config based file is the way to go forward. Also adjust the zuul job to copy /var/log/monasca/notification and /etc/monasca/notification.conf so debugging will be a bit easier. [1] https://review.openstack.org/#/c/464768/ Story: 2004862 Task: 35646 Depends-On: https://review.opendev.org/668508 Depends-On: https://review.opendev.org/663960 Change-Id: I489d66d623c3e27ca28ba87ebde32264b13ac0f3 --- .zuul.yaml | 2 + .../monasca-notification/notification.yaml | 138 ------------------ devstack/lib/notification.sh | 38 ++--- 3 files changed, 23 insertions(+), 155 deletions(-) delete mode 100644 devstack/files/monasca-notification/notification.yaml diff --git a/.zuul.yaml b/.zuul.yaml index 0eac6ec24..4483530d6 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -49,9 +49,11 @@ monasca-api: https://opendev.org/openstack/monasca-api zuul_copy_output: /var/log/kafka: logs + /var/log/monasca/notification: logs /etc/kafka/server.properties: logs /etc/kafka/producer.properties: logs /etc/kafka/consumer.properties: logs + /etc/monasca/monasca-notification.conf: logs irrelevant-files: - ^.*\.rst$ - ^.*\.md$ diff --git a/devstack/files/monasca-notification/notification.yaml b/devstack/files/monasca-notification/notification.yaml deleted file mode 100644 index 1f9ad9503..000000000 --- a/devstack/files/monasca-notification/notification.yaml +++ /dev/null @@ -1,138 +0,0 @@ -# -# (C) Copyright 2015,2016 Hewlett Packard Enterprise Development Company LP -# Copyright 2017 Fujitsu LIMITED -# -# 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. -# - -kafka: - url: "%KAFKA_HOST%:9092" - group: "monasca-notification" - alarm_topic: "alarm-state-transitions" - notification_topic: "alarm-notifications" - notification_retry_topic: "retry-notifications" - periodic: - 60: 60-seconds-notifications - max_offset_lag: 600 # In seconds, undefined for none - -database: -# repo_driver: monasca_notification.common.repositories.postgres.pgsql_repo:PostgresqlRepo -# repo_driver: monasca_notification.common.repositories.orm.orm_repo:OrmRepo -# repo_driver: monasca_notification.common.repositories.mysql.mysql_repo:MysqlRepo - repo_driver: %MONASCA_NOTIFICATION_DATABASE_DRIVER% - orm: - url: %MONASCA_NOTIFICATION_DATABASE_ENGINE%://%DATABASE_USER%:%DATABASE_PASSWORD%@%DATABASE_HOST%:%DATABASE_PORT%/mon - -mysql: - host: %DATABASE_HOST% - user: %DATABASE_USER% - passwd: %DATABASE_PASSWORD% - db: mon - -postgresql: - host: %DATABASE_HOST% - port: %DATABASE_PORT% - user: %DATABASE_USER% - password: %DATABASE_PASSWORD% - database: mon - -notification_types: - plugins: - - monasca_notification.plugins.email_notifier:EmailNotifier - - monasca_notification.plugins.webhook_notifier:WebhookNotifier - - monasca_notification.plugins.pagerduty_notifier:PagerdutyNotifier - - email: - server: "localhost" - port: 25 - user: "" - password: "" - timeout: 15 - from_addr: "hpcs.mon@hp.com" - grafana_url: "%GRAFANA_URL%" - - webhook: - timeout: 5 - - pagerduty: - timeout: 5 - url: "https://events.pagerduty.com/generic/2010-04-15/create_event.json" - -processors: - alarm: - number: 2 - ttl: 14400 # In seconds, undefined for none. Alarms older than this are not processed - notification: - number: 2 - -retry: - interval: 30 - max_attempts: 5 - -queues: - alarms_size: 256 - finished_size: 256 - notifications_size: 256 - sent_notifications_size: 50 # limiting this size reduces potential # of re-sent notifications after a failure - -zookeeper: - url: "127.0.0.1:2181" - notification_path: "/notification/alarms" - notification_retry_path: "/notification/retry" - periodic_path: - 60: /notification/60_seconds - -logging: # Used in logging.dictConfig - # This sets logging.raiseExcetpions. It is recommended to leave this set to False. - # See https://docs.python.org/2/howto/logging.html#exceptions-raised-during-logging - raise_exceptions: False - version: 1 - disable_existing_loggers: False - formatters: - default: - format: "%(asctime)s %(levelname)s %(name)s %(message)s" - handlers: - console: - class: logging.StreamHandler - formatter: default - file: - class: logging.handlers.RotatingFileHandler - filename: "%MONASCA_NOTIFICATION_LOG_DIR%/notification.log" - formatter: default - maxBytes: 10485760 # Rotate at file size ~10MB - backupCount: 5 # Keep 5 older logs around - loggers: - kazoo: - level: WARN - kafka: - level: WARN - statsd: - level: WARN - root: - handlers: - - file - level: WARN -statsd: - host: 'localhost' - port: %MONASCA_STATSD_PORT% - -keystone: - auth_required: False - auth_url: '%KEYSTONE_URL%' - username: 'admin' - password: 'password' - project_name: 'admin' - user_domain_name: 'default' - project_domain_name: 'default' - auth_type: 'password' diff --git a/devstack/lib/notification.sh b/devstack/lib/notification.sh index accf46d71..f8e3ed04d 100644 --- a/devstack/lib/notification.sh +++ b/devstack/lib/notification.sh @@ -19,7 +19,7 @@ set +o xtrace MONASCA_NOTIFICATION_CONF_DIR=${MONASCA_NOTIFICATION_CONF_DIR:-/etc/monasca} MONASCA_NOTIFICATION_LOG_DIR=${MONASCA_NOTIFICATION_LOG_DIR:-/var/log/monasca/notification} -MONASCA_NOTIFICATION_CONF=${MONASCA_NOTIFICATION_CONF:-$MONASCA_NOTIFICATION_CONF_DIR/notification.yaml} +MONASCA_NOTIFICATION_CONF=${MONASCA_NOTIFICATION_CONF:-$MONASCA_NOTIFICATION_CONF_DIR/monasca-notification.conf} MONASCA_NOTIFICATION_GATE_CFG_LINK=/etc/monasca-notification if [[ ${USE_VENV} = True ]]; then @@ -75,8 +75,6 @@ configure_monasca-notification() { sudo install -d -o $STACK_USER ${MONASCA_NOTIFICATION_CONF_DIR} sudo install -d -o $STACK_USER ${MONASCA_NOTIFICATION_LOG_DIR} - install -m 600 ${MONASCA_API_DIR}/devstack/files/monasca-notification/notification.yaml ${MONASCA_NOTIFICATION_CONF} - local dbDriver local dbEngine local dbPort @@ -93,19 +91,25 @@ configure_monasca-notification() { dbDriver="monasca_notification.common.repositories.orm.orm_repo:OrmRepo" fi - sudo sed -e " - s|%DATABASE_HOST%|${DATABASE_HOST}|g; - s|%DATABASE_PORT%|$dbPort|g; - s|%DATABASE_PASSWORD%|${DATABASE_PASSWORD}|g; - s|%DATABASE_USER%|${DATABASE_USER}|g; - s|%MONASCA_NOTIFICATION_DATABASE_DRIVER%|$dbDriver|g; - s|%MONASCA_NOTIFICATION_DATABASE_ENGINE%|$dbEngine|g; - s|%KAFKA_HOST%|${SERVICE_HOST}|g; - s|%MONASCA_STATSD_PORT%|${MONASCA_STATSD_PORT}|g; - s|%MONASCA_NOTIFICATION_LOG_DIR%|${MONASCA_NOTIFICATION_LOG_DIR}|g; - s|%GRAFANA_URL%|http:\/\/${SERVICE_HOST}:3000|g; - s|%KEYSTONE_URL%|http:\/\/${SERVICE_HOST}\/identity\/v3|g; - " -i ${MONASCA_NOTIFICATION_CONF} + iniset "${MONASCA_NOTIFICATION_CONF}" kafka url ${DATABASE_HOST}:9092 + iniset "${MONASCA_NOTIFICATION_CONF}" database repo_driver ${dbDriver} + iniset "${MONASCA_NOTIFICATION_CONF}" email_notifier grafana_url ${SERVICE_HOST}:3000 + iniset "${MONASCA_NOTIFICATION_CONF}" keystone auth_url ${SERVICE_HOST}/identity/v3 + if is_service_enabled postgresql; then + iniset "${MONASCA_NOTIFICATION_CONF}" postgresql host ${DATABASE_HOST} + iniset "${MONASCA_NOTIFICATION_CONF}" postgresql port ${dbPort} + iniset "${MONASCA_NOTIFICATION_CONF}" postgresql user ${DATABASE_USER} + iniset "${MONASCA_NOTIFICATION_CONF}" postgresql passwd ${DATABASE_PASSWORD} + iniset "${MONASCA_NOTIFICATION_CONF}" postgresql db mon + else + iniset "${MONASCA_NOTIFICATION_CONF}" mysql host ${DATABASE_HOST} + iniset "${MONASCA_NOTIFICATION_CONF}" mysql user ${DATABASE_USER} + iniset "${MONASCA_NOTIFICATION_CONF}" mysql passwd ${DATABASE_PASSWORD} + iniset "${MONASCA_NOTIFICATION_CONF}" mysql db mon + fi + if [[ ${MONASCA_DATABASE_USE_ORM} == "True" ]]; then + iniset "${MONASCA_NOTIFICATION_CONF}" orm url ${dbEngine}://${DATABASE_USER}:${DATABASE_PASSWORD}%${DATABASE_HOST}:${dbPort}/mon + fi sudo install -d -o ${STACK_USER} ${MONASCA_NOTIFICATION_GATE_CFG_LINK} ln -sf ${MONASCA_NOTIFICATION_CONF} ${MONASCA_NOTIFICATION_GATE_CFG_LINK} @@ -118,7 +122,7 @@ configure_monasca-notification() { start_monasca-notification(){ if is_monasca_notification_enabled; then echo_summary "Starting monasca-notification" - run_process "monasca-notification" "$MONASCA_NOTIFICATION_BIN_DIR/monasca-notification $MONASCA_NOTIFICATION_CONF" + run_process "monasca-notification" "$MONASCA_NOTIFICATION_BIN_DIR/monasca-notification" fi }