From 9fd56cba6c55c716c7a2d3b1e050d41cc4d15d7c Mon Sep 17 00:00:00 2001 From: Steve Lewis Date: Wed, 12 Oct 2016 17:01:24 -0700 Subject: [PATCH] Roll-up of multiple fixes for os_ceilometer role The ceilometer/api/app.wsgi file upstream was modified and broke the ceilometer role such that the ceilometer api will not start. This change fixes the role by updating the template derived from that file to match the new invocation method. An example of the error being remedied can be seen in patch set 1 of Related-Change: Ieb5569982f080446295cecc33fb70c6b5d1cb9d6 Additionally, ceilometer-api is served with Apache mod_wsgi so an init script shouldn't be created. Also, the ceilometer_db_type now defaults to blank which will omit the [database] group from the ceilometer.conf which matches the new upstream default. The db type is overridden as mongodb for testing. Also fixes an issue in inventory introduced by Change: Ia74bbcac35c27928f7e96056b9449932253b75de Change-Id: I48ca99ea58fbb624b8bccf205e40000115c53060 --- defaults/main.yml | 6 ++---- templates/ceilometer-api-wsgi.py.j2 | 10 ++++++++-- templates/ceilometer.conf.j2 | 5 +++++ tests/inventory | 11 +++++++++-- tests/os_ceilometer-overrides.yml | 1 + 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/defaults/main.yml b/defaults/main.yml index cd73c864..d3771375 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -50,9 +50,10 @@ ceilometer_system_comment: ceilometer system user ceilometer_system_user_home: "/var/lib/{{ ceilometer_system_user_name }}" ## DB info +# Set to blank by default to disable the database dispatcher (prep for deprecation) +ceilometer_db_type: "" ceilometer_database_name: ceilometer ceilometer_database_user: ceilometer -ceilometer_db_type: mongodb ceilometer_db_ip: localhost ceilometer_db_port: 27017 ceilometer_connection_string: "{{ ceilometer_db_type }}://{{ ceilometer_database_user }}:{{ ceilometer_container_db_password }}@{{ ceilometer_db_ip }}:{{ ceilometer_db_port }}/{{ ceilometer_database_name }}" @@ -148,9 +149,6 @@ ceilometer_pip_packages: ## Service Name-Group Mapping ceilometer_services: - ceilometer-api: - group: ceilometer_api - service_name: ceilometer-api ceilometer-collector: group: ceilometer_collector service_name: ceilometer-collector diff --git a/templates/ceilometer-api-wsgi.py.j2 b/templates/ceilometer-api-wsgi.py.j2 index 637197c0..d0828940 100644 --- a/templates/ceilometer-api-wsgi.py.j2 +++ b/templates/ceilometer-api-wsgi.py.j2 @@ -1,3 +1,5 @@ +#{{ ansible_managed}} +# # 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 @@ -10,6 +12,9 @@ # License for the specific language governing permissions and limitations # under the License. +#NOTE(stevelle): This file is templated from the ceilometer project file +# located at ceilometer/api/app.wsgi +# import os activate_this = os.path.expanduser("{{ ceilometer_bin }}/activate_this.py") @@ -18,5 +23,6 @@ execfile(activate_this, dict(__file__=activate_this)) from ceilometer import service from ceilometer.api import app -service.prepare_service([]) -application = app.load_app() +# Initialize the oslo configuration library and logging +conf = service.prepare_service([]) +application = app.load_app(conf) diff --git a/templates/ceilometer.conf.j2 b/templates/ceilometer.conf.j2 index 12cf2a00..8e2c3986 100644 --- a/templates/ceilometer.conf.j2 +++ b/templates/ceilometer.conf.j2 @@ -16,6 +16,9 @@ transport_url = rabbit://{% for host in ceilometer_rabbitmq_servers.split(',') % {% if ceilometer_gnocchi_enabled | bool %} event_dispatchers = meter_dispatchers = gnocchi +{% else %} +meter_dispatchers = database +event_dispatchers = database {% endif %} [oslo_policy] @@ -103,9 +106,11 @@ messaging_urls = rabbit://{{ sahara_rabbitmq_telemetry_userid }}:{{ sahara_rabbi {% endfor %} {% endif %} +{% if ceilometer_db_type | length > 0 %} [database] metering_connection = {{ ceilometer_connection_string }} event_connection = {{ ceilometer_connection_string }} +{% endif %} {% if ceilometer_gnocchi_enabled | bool %} [dispatcher_gnocchi] diff --git a/tests/inventory b/tests/inventory index 78082076..2b21c9c3 100644 --- a/tests/inventory +++ b/tests/inventory @@ -27,8 +27,15 @@ infra1 [keystone_all] infra1 -[glance_all] -infra1 +[glance_api] +openstack1 + +[glance_registry] +openstack1 + +[glance_all:children] +glance_api +glance_registry [ceilometer_api] openstack1 diff --git a/tests/os_ceilometer-overrides.yml b/tests/os_ceilometer-overrides.yml index 5605c1ae..b24eb7cb 100644 --- a/tests/os_ceilometer-overrides.yml +++ b/tests/os_ceilometer-overrides.yml @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +ceilometer_db_type: mongodb ceilometer_db_ip: "{{ hostvars[groups['mongo_all'][0]]['ansible_host'] }}" ceilometer_service_publicuri: "http://{{ hostvars[groups['ceilometer_all'][0]]['ansible_host'] }}:8777" ceilometer_service_publicurl: "{{ ceilometer_service_publicuri }}"