From a2568df906af346ecfdaa33e79c598d4fc8bc340 Mon Sep 17 00:00:00 2001
From: shaofeng_cheng <chengsf@winhong.com>
Date: Sat, 1 Apr 2017 11:28:22 +0800
Subject: [PATCH] Fix ceilometer meters for swift service

Enable Object Storage meters by ceilometer.
see
https://docs.openstack.org/project-install-guide/telemetry/draft/swift/install-swift-ubuntu.html

Change-Id: Ic80e02eacbe502280e09de6b845c0c7475273d6e
Closes-Bug: #1668826
---
 ansible/roles/ceilometer/tasks/register.yml        | 12 ++++++++++++
 ansible/roles/swift/tasks/register.yml             | 11 +++++++++++
 ansible/roles/swift/templates/proxy-server.conf.j2 | 14 ++++++++++++--
 3 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/ansible/roles/ceilometer/tasks/register.yml b/ansible/roles/ceilometer/tasks/register.yml
index b05b9ad3c0..fa052f8861 100644
--- a/ansible/roles/ceilometer/tasks/register.yml
+++ b/ansible/roles/ceilometer/tasks/register.yml
@@ -32,3 +32,15 @@
     module_extra_vars:
      openstack_ceilometer_auth: "{{ openstack_ceilometer_auth }}"
   run_once: True
+
+- name: Associate the ResellerAdmin role and ceilometer user
+  kolla_toolbox:
+    module_name: "os_user_role"
+    module_args:
+      project: "service"
+      user: "{{ ceilometer_keystone_user }}"
+      role: "ResellerAdmin"
+      region_name: "{{ openstack_region_name }}"
+      auth: "{{ '{{ openstack_ceilometer_auth }}' }}"
+  when: enable_swift | bool
+  run_once: True
diff --git a/ansible/roles/swift/tasks/register.yml b/ansible/roles/swift/tasks/register.yml
index 1ebe648901..e74717dffb 100644
--- a/ansible/roles/swift/tasks/register.yml
+++ b/ansible/roles/swift/tasks/register.yml
@@ -32,3 +32,14 @@
     module_extra_vars:
       openstack_swift_auth: "{{ openstack_swift_auth }}"
   run_once: True
+
+- name: Creating the ResellerAdmin role
+  kolla_toolbox:
+    module_name: "os_keystone_role"
+    module_args:
+      project: "service"
+      role: "ResellerAdmin"
+      region_name: "{{ openstack_region_name }}"
+      auth: "{{ '{{ openstack_swift_auth }}' }}"
+  when: enable_ceilometer | bool
+  run_once: True
diff --git a/ansible/roles/swift/templates/proxy-server.conf.j2 b/ansible/roles/swift/templates/proxy-server.conf.j2
index cd8a8db2f8..4f39427114 100644
--- a/ansible/roles/swift/templates/proxy-server.conf.j2
+++ b/ansible/roles/swift/templates/proxy-server.conf.j2
@@ -10,7 +10,7 @@ log_level = INFO
 workers = {{ openstack_service_workers }}
 
 [pipeline:main]
-pipeline = catch_errors gatekeeper healthcheck cache container_sync bulk ratelimit authtoken keystoneauth slo dlo proxy-server
+pipeline = catch_errors gatekeeper healthcheck cache container_sync bulk ratelimit authtoken keystoneauth slo dlo {% if enable_ceilometer | bool %}ceilometer {% endif %}proxy-server
 
 [app:proxy-server]
 use = egg:swift#proxy
@@ -48,7 +48,17 @@ memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansi
 
 [filter:keystoneauth]
 use = egg:swift#keystoneauth
-operator_roles = admin,{{ keystone_default_user_role }}
+operator_roles = admin,{{ keystone_default_user_role }}{% if enable_ceilometer | bool %},ResellerAdmin{% endif %}
+
+{% if enable_ceilometer | bool %}
+[filter:ceilometer]
+paste.filter_factory = ceilometermiddleware.swift:filter_factory
+control_exchange = swift
+url = rabbit://{% for host in groups['rabbitmq'] %}{{ rabbitmq_user }}:{{ rabbitmq_password }}@{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ rabbitmq_port }}{% if not loop.last %},{% endif %}{% endfor %}
+driver = messagingv2
+topic = notifications
+log_level = WARN
+{% endif %}
 
 [filter:container_sync]
 use = egg:swift#container_sync
-- 
GitLab