Merge "Fix Python version for Travis CI tests"
diff --git a/ceilometer/files/logging.conf b/ceilometer/files/logging.conf
index f3fb121..3722aad 100644
--- a/ceilometer/files/logging.conf
+++ b/ceilometer/files/logging.conf
@@ -41,7 +41,12 @@
 {%- set ossyslog_args = values.logging.log_handlers.ossyslog.get('args', {}) -%}
 [handler_ossyslog]
 class = oslo_log.handlers.OSSysLogHandler
-args = ( handlers.SysLogHandler.{{ ossyslog_args.get('facility', 'LOG_USER') }}, )
+# the OSSysLogHandler uses 'syslog' lib, where the LOG_* facilities are already *8
+# but in the context where the args are evaluated we have access only to Python's
+# handlers.SysLogHandler.LOG_* constants that _ARE_NOT_ multiplied by 8.
+# To not have a completely magic single int in the rendered template,
+# we multiply it here.
+args = ( 8 * handlers.SysLogHandler.{{ ossyslog_args.get('facility', 'LOG_USER') }}, )
 formatter = context
 {%- endif %}
 
diff --git a/ceilometer/files/ocata/ceilometer-server.conf.Debian b/ceilometer/files/ocata/ceilometer-server.conf.Debian
index 895cdad..8619648 100644
--- a/ceilometer/files/ocata/ceilometer-server.conf.Debian
+++ b/ceilometer/files/ocata/ceilometer-server.conf.Debian
@@ -540,10 +540,16 @@
 # Number of notification messages to wait before dispatching them (integer
 # value)
 #batch_size = 1
+{%- if server.get('collector', {}).batch_size is defined %}
+batch_size = {{ server.collector.batch_size }}
+{%- endif %}
 
 # Number of seconds to wait before dispatching samples when batch_size is not
 # reached (None means indefinitely) (integer value)
 #batch_timeout = <None>
+{%- if server.get('collector', {}).batch_timeout is defined %}
+batch_timeout = {{ server.collector.batch_timeout }}
+{%- endif %}
 
 # Number of workers for collector service. default value is 1. (integer value)
 # Minimum value: 1
@@ -1249,6 +1255,9 @@
 # Enable workload partitioning, allowing multiple notification agents to be run
 # simultaneously. (boolean value)
 #workload_partitioning = false
+{%- if server.get('notification', {}).workload_partitioning is defined %}
+workload_partitioning = {{ server.notification.workload_partitioning }}
+{%- endif %}
 
 # Messaging URLs to listen for notifications. Example:
 # rabbit://user:pass@host1:port1[,user:pass@hostN:portN]/virtual_host
@@ -1262,10 +1271,16 @@
 # advised when transformations are applied in pipeline. (integer value)
 # Minimum value: 1
 #batch_size = 100
+{%- if server.get('notification', {}).batch_size is defined %}
+batch_size = {{ server.notification.batch_size }}
+{%- endif %}
 
 # Number of seconds to wait before publishing samples when batch_size is not
 # reached (None means indefinitely) (integer value)
 #batch_timeout = 5
+{%- if server.get('notification', {}).batch_timeout is defined %}
+batch_timeout = {{ server.notification.batch_timeout }}
+{%- endif %}
 
 # Number of workers for notification service, default value is 1. (integer
 # value)
diff --git a/ceilometer/files/pike/ceilometer-server.conf.Debian b/ceilometer/files/pike/ceilometer-server.conf.Debian
index a2a52a9..eca1c73 100644
--- a/ceilometer/files/pike/ceilometer-server.conf.Debian
+++ b/ceilometer/files/pike/ceilometer-server.conf.Debian
@@ -56,30 +56,42 @@
 [cors]
 
 
-{% if server.get('cors', {}).allowed_origin is defined %}
+{%- if server.get('cors', {}).allowed_origin is defined %}
 allowed_origin = {{ server.cors.allowed_origin }}
-{% endif %}
+{%- endif %}
 
-{% if server.get('cors', {}).allow_credentials is defined %}
+{%- if server.get('cors', {}).allow_credentials is defined %}
 allow_credentials = {{ server.cors.allow_credentials }}
-{% endif %}
+{%- endif %}
 
-{% if server.get('cors', {}).expose_headers is defined %}
+{%- if server.get('cors', {}).expose_headers is defined %}
 expose_headers = {{ server.cors.expose_headers }}
-{% endif %}
+{%- endif %}
 
-{% if server.get('cors', {}).max_age is defined %}
+{%- if server.get('cors', {}).max_age is defined %}
 max_age = {{ server.cors.max_age }}
-{% endif %}
+{%- endif %}
 
-{% if server.get('cors', {}).allow_methods is defined %}
+{%- if server.get('cors', {}).allow_methods is defined %}
 allow_methods = {{ server.cors.allow_methods }}
-{% endif %}
+{%- endif %}
 
-{% if server.get('cors', {}).allow_headers is defined %}
+{%- if server.get('cors', {}).allow_headers is defined %}
 allow_headers = {{ server.cors.allow_headers }}
-{% endif %}
+{%- endif %}
 
+[notification]
+{%- if server.get('notification', {}).workload_partitioning is defined %}
+workload_partitioning = {{ server.notification.workload_partitioning }}
+{%- endif %}
+
+{%- if server.get('notification', {}).batch_size is defined %}
+batch_size = {{ server.notification.batch_size }}
+{%- endif %}
+
+{%- if server.get('notification', {}).batch_timeout is defined %}
+batch_timeout = {{ server.notification.batch_timeout }}
+{%- endif %}
 
 [database]
 
diff --git a/ceilometer/files/pike/event_pipeline.yaml b/ceilometer/files/pike/event_pipeline.yaml
index 2979d85..aa0ea46 100644
--- a/ceilometer/files/pike/event_pipeline.yaml
+++ b/ceilometer/files/pike/event_pipeline.yaml
@@ -1,11 +1,12 @@
 {%- from "ceilometer/map.jinja" import server with context %}
 {%- from "ceilometer/map.jinja" import agent with context %}
 {%- if server.get('enabled', False) %}
-{%- set publisher = server.publisher %}
+{%- set publisher = server.get('publisher', {}) %}
 {%- else %}
-{%- set publisher = agent.publisher %}
+{%- set publisher = agent.get('publisher', {}) %}
 {%- endif %}
 {%- set publisher_lst = [] %}
+{%- if publisher %}
 {%- for k, v in publisher.items() %}
 {%- if v.get('enabled', False) and v.get('publish_event', False) %}
 {%- if k == 'default' %}
@@ -15,6 +16,9 @@
 {%- endif %}
 {%- endif %}
 {%- endfor %}
+{%- else %}
+{%- do publisher_lst.append( 'notifier://' ) %}
+{%- endif %}
 ---
 sources:
     - name: event_source
diff --git a/ceilometer/files/pike/pipeline.yaml b/ceilometer/files/pike/pipeline.yaml
index c2accf1..96ca2a9 100644
--- a/ceilometer/files/pike/pipeline.yaml
+++ b/ceilometer/files/pike/pipeline.yaml
@@ -1,11 +1,12 @@
 {%- from "ceilometer/map.jinja" import server with context %}
 {%- from "ceilometer/map.jinja" import agent with context %}
 {%- if server.get('enabled', False) %}
-{%- set publisher = server.publisher %}
+{%- set publisher = server.get('publisher', {}) %}
 {%- else %}
-{%- set publisher = agent.publisher %}
+{%- set publisher = agent.get('publisher', {}) %}
 {%- endif %}
 {%- set publisher_lst = [] %}
+{%- if publisher %}
 {%- for k, v in publisher.items() %}
 {%- if v.get('enabled', False) and v.get('publish_metric', False) %}
 {%- if k == 'default' %}
@@ -17,6 +18,9 @@
 {%- endif %}
 {%- endif %}
 {%- endfor %}
+{%- else %}
+{%- do publisher_lst.append( 'notifier://' ) %}
+{%- endif %}
 ---
 sources:
     - name: meter_source
diff --git a/ceilometer/files/queens/ceilometer-server.conf.Debian b/ceilometer/files/queens/ceilometer-server.conf.Debian
index e4ea563..2190366 100644
--- a/ceilometer/files/queens/ceilometer-server.conf.Debian
+++ b/ceilometer/files/queens/ceilometer-server.conf.Debian
@@ -233,6 +233,9 @@
 # This option is deprecated for removal.
 # Its value may be silently ignored in the future.
 #workload_partitioning = false
+{%- if server.get('notification', {}).workload_partitioning is defined %}
+workload_partitioning = {{ server.notification.workload_partitioning }}
+{%- endif %}
 
 # Messaging URLs to listen for notifications. Example:
 # rabbit://user:pass@host1:port1[,user:pass@hostN:portN]/virtual_host
@@ -246,10 +249,16 @@
 # advised when transformations are applied in pipeline. (integer value)
 # Minimum value: 1
 #batch_size = 100
+{%- if server.get('notification', {}).batch_size is defined %}
+batch_size = {{ server.notification.batch_size }}
+{%- endif %}
 
 # Number of seconds to wait before publishing samples when batch_size is not
 # reached (None means indefinitely) (integer value)
 #batch_timeout = 5
+{%- if server.get('notification', {}).batch_timeout is defined %}
+batch_timeout = {{ server.notification.batch_timeout }}
+{%- endif %}
 
 # Number of workers for notification service, default value is 1. (integer
 # value)
diff --git a/ceilometer/files/queens/event_pipeline.yaml b/ceilometer/files/queens/event_pipeline.yaml
index 2979d85..aa0ea46 100644
--- a/ceilometer/files/queens/event_pipeline.yaml
+++ b/ceilometer/files/queens/event_pipeline.yaml
@@ -1,11 +1,12 @@
 {%- from "ceilometer/map.jinja" import server with context %}
 {%- from "ceilometer/map.jinja" import agent with context %}
 {%- if server.get('enabled', False) %}
-{%- set publisher = server.publisher %}
+{%- set publisher = server.get('publisher', {}) %}
 {%- else %}
-{%- set publisher = agent.publisher %}
+{%- set publisher = agent.get('publisher', {}) %}
 {%- endif %}
 {%- set publisher_lst = [] %}
+{%- if publisher %}
 {%- for k, v in publisher.items() %}
 {%- if v.get('enabled', False) and v.get('publish_event', False) %}
 {%- if k == 'default' %}
@@ -15,6 +16,9 @@
 {%- endif %}
 {%- endif %}
 {%- endfor %}
+{%- else %}
+{%- do publisher_lst.append( 'notifier://' ) %}
+{%- endif %}
 ---
 sources:
     - name: event_source
diff --git a/ceilometer/files/queens/pipeline.yaml b/ceilometer/files/queens/pipeline.yaml
index c2accf1..96ca2a9 100644
--- a/ceilometer/files/queens/pipeline.yaml
+++ b/ceilometer/files/queens/pipeline.yaml
@@ -1,11 +1,12 @@
 {%- from "ceilometer/map.jinja" import server with context %}
 {%- from "ceilometer/map.jinja" import agent with context %}
 {%- if server.get('enabled', False) %}
-{%- set publisher = server.publisher %}
+{%- set publisher = server.get('publisher', {}) %}
 {%- else %}
-{%- set publisher = agent.publisher %}
+{%- set publisher = agent.get('publisher', {}) %}
 {%- endif %}
 {%- set publisher_lst = [] %}
+{%- if publisher %}
 {%- for k, v in publisher.items() %}
 {%- if v.get('enabled', False) and v.get('publish_metric', False) %}
 {%- if k == 'default' %}
@@ -17,6 +18,9 @@
 {%- endif %}
 {%- endif %}
 {%- endfor %}
+{%- else %}
+{%- do publisher_lst.append( 'notifier://' ) %}
+{%- endif %}
 ---
 sources:
     - name: meter_source
diff --git a/ceilometer/meta/fluentd.yml b/ceilometer/meta/fluentd.yml
index d5d868e..bbf25df 100644
--- a/ceilometer/meta/fluentd.yml
+++ b/ceilometer/meta/fluentd.yml
@@ -43,8 +43,9 @@
                 value: INFO
               - name: programname
                 value: ceilometer-wsgi
+                # Apache logs response time in microseconds
               - name: http_response_time
-                value: ${ record['http_response_time'].to_i/100000.to_f }
+                value: ${ record['http_response_time'].to_i/10**6.to_f }
         match:
           send_to_default:
             tag: openstack.ceilometer
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..57f1430
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,38 @@
+salt-formula-ceilometer (2016.12.1-2xenial1) xenial; urgency=medium
+
+  * Fix files/pike symlink
+
+ -- devops <devops@mirantis.com>  Tue, 06 Feb 2018 15:40:55 +0200
+
+salt-formula-ceilometer (2016.12.1-1xenial1) xenial; urgency=medium
+
+  * Ubuntu xenial build
+
+ -- Filip Pytloun <filip@pytloun.cz>  Tue, 24 Jan 2017 12:21:17 +0100
+
+salt-formula-ceilometer (2016.12.1-1) unstable; urgency=medium
+
+  * New upstream release
+  * d/{control,copyright}: Use my @debian.org email address
+  * Bumped debhelper version to 10
+
+ -- Ondřej Nový <onovy@debian.org>  Sun, 25 Dec 2016 17:05:26 +0100
+
+salt-formula-ceilometer (2016.4.1-3) unstable; urgency=medium
+
+  * Added Debian tests
+
+ -- Ondřej Nový <novy@ondrej.org>  Wed, 08 Jun 2016 21:27:12 +0200
+
+salt-formula-ceilometer (2016.4.1-2) unstable; urgency=medium
+
+  * d/copyright: Added myself to Debian part
+  * Added myself as uploader
+
+ -- Ondřej Nový <novy@ondrej.org>  Wed, 11 May 2016 23:57:58 +0200
+
+salt-formula-ceilometer (2016.4.1-1) unstable; urgency=medium
+
+  * Initial release (Closes: #821460)
+
+ -- Filip Pytloun <filip@pytloun.cz>  Mon, 18 Apr 2016 16:03:21 +0200
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..62d6300
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,25 @@
+Source: salt-formula-ceilometer
+Maintainer: PKG OpenStack <openstack-devel@lists.alioth.debian.org>
+Uploaders: Filip Pytloun <filip@pytloun.cz>,
+           Ondřej Nový <onovy@debian.org>,
+Section: admin
+Priority: extra
+Build-Depends: debhelper (>= 9),
+               openstack-pkg-tools,
+Build-Depends-Indep: python-all,
+                     python-yaml,
+                     salt-formula-keystone,
+Standards-Version: 3.9.6
+Homepage: https://wiki.openstack.org/wiki/OpenStackSalt
+Vcs-Browser: https://anonscm.debian.org/cgit/openstack/salt-formula-ceilometer.git/
+Vcs-Git: https://anonscm.debian.org/git/openstack/salt-formula-ceilometer.git
+
+Package: salt-formula-ceilometer
+Architecture: all
+Depends: ${misc:Depends},
+Description: Salt formula for OpenStack Ceilometer
+ Salt is a powerful remote execution manager that can be used to
+ administer servers in a fast and efficient way.
+ .
+ This SaltStack formula manages both installation and configuration of
+ OpenStack Ceilometer.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..c06d132
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,28 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: salt-formula-ceilometer
+Source: https://github.com/openstack/salt-formula-ceilometer
+
+Files: *
+Copyright: 2014-2016 tcp cloud
+License: Apache-2.0
+
+Files: debian/*
+Copyright: (c) 2016, Filip Pytloun <filip@pytloun.cz>
+           (c) 2016, Ondřej Nový <onovy@debian.org>
+License: Apache-2.0
+
+License: Apache-2.0
+ 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.
+ .
+ On Debian-based systems the full text of the Apache version 2.0 license
+ can be found in `/usr/share/common-licenses/Apache-2.0'.
diff --git a/debian/docs b/debian/docs
new file mode 100644
index 0000000..a1320b1
--- /dev/null
+++ b/debian/docs
@@ -0,0 +1 @@
+README.rst
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644
index 0000000..d6f9d4f
--- /dev/null
+++ b/debian/gbp.conf
@@ -0,0 +1,8 @@
+[DEFAULT]
+upstream-branch = master
+debian-branch = debian/xenial
+upstream-tag = %(version)s
+compression = xz
+
+[buildpackage]
+export-dir = ../build-area/
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..f7d5908
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+include /usr/share/openstack-pkg-tools/pkgos.make
+
+%:
+	dh $@
+
diff --git a/debian/salt-formula-ceilometer.postinst b/debian/salt-formula-ceilometer.postinst
new file mode 100644
index 0000000..843c4d1
--- /dev/null
+++ b/debian/salt-formula-ceilometer.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+dpkg-maintscript-helper symlink_to_dir \
+        /usr/share/salt-formulas/env/ceilometer/files/pike /usr/share/salt-formulas/env/ceilometer/files/ocata salt-formula-ceilometer -- "$@"
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/salt-formula-ceilometer.postrm b/debian/salt-formula-ceilometer.postrm
new file mode 100644
index 0000000..843c4d1
--- /dev/null
+++ b/debian/salt-formula-ceilometer.postrm
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+dpkg-maintscript-helper symlink_to_dir \
+        /usr/share/salt-formulas/env/ceilometer/files/pike /usr/share/salt-formulas/env/ceilometer/files/ocata salt-formula-ceilometer -- "$@"
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/salt-formula-ceilometer.preinst b/debian/salt-formula-ceilometer.preinst
new file mode 100644
index 0000000..843c4d1
--- /dev/null
+++ b/debian/salt-formula-ceilometer.preinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+dpkg-maintscript-helper symlink_to_dir \
+        /usr/share/salt-formulas/env/ceilometer/files/pike /usr/share/salt-formulas/env/ceilometer/files/ocata salt-formula-ceilometer -- "$@"
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/tests/control b/debian/tests/control
new file mode 100644
index 0000000..685e62b
--- /dev/null
+++ b/debian/tests/control
@@ -0,0 +1,2 @@
+Test-Command: cd tests && ./run_tests.sh
+Restrictions: allow-stderr
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..60a37f1
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,3 @@
+version=3
+opts="uversionmangle=s/\.(b|rc)/~$1/" \
+https://github.com/openstack/salt-formula-ceilometer/tags .*/(\d[\d\.]+)\.tar\.gz
diff --git a/metadata/service/agent/cluster.yml b/metadata/service/agent/cluster/common.yml
similarity index 83%
rename from metadata/service/agent/cluster.yml
rename to metadata/service/agent/cluster/common.yml
index 2132fe1..778dfbe 100644
--- a/metadata/service/agent/cluster.yml
+++ b/metadata/service/agent/cluster/common.yml
@@ -13,11 +13,6 @@
       enabled: true
       version: ${_param:ceilometer_version}
       secret: ${_param:ceilometer_secret_key}
-      publisher:
-        default:
-          enabled: true
-          publish_event: true
-          publish_metric: true
       identity:
         engine: keystone
         host: ${_param:cluster_vip_address}
@@ -43,5 +38,3 @@
         password: ${_param:rabbitmq_openstack_password}
         virtual_host: '/openstack'
         ha_queues: true
-        # Workaround for https://bugs.launchpad.net/ceilometer/+bug/1337715
-        rpc_thread_pool_size: 5
diff --git a/metadata/service/agent/cluster/init.yml b/metadata/service/agent/cluster/init.yml
new file mode 100644
index 0000000..258640a
--- /dev/null
+++ b/metadata/service/agent/cluster/init.yml
@@ -0,0 +1,12 @@
+applications:
+- ceilometer
+classes:
+- service.ceilometer.agent.cluster.common
+parameters:
+  ceilometer:
+    agent:
+      publisher:
+        default:
+          enabled: true
+          publish_event: true
+          publish_metric: true
\ No newline at end of file
diff --git a/metadata/service/agent/single.yml b/metadata/service/agent/single/common.yml
similarity index 83%
rename from metadata/service/agent/single.yml
rename to metadata/service/agent/single/common.yml
index 1f1fca2..34739ad 100644
--- a/metadata/service/agent/single.yml
+++ b/metadata/service/agent/single/common.yml
@@ -13,11 +13,6 @@
       enabled: true
       version: ${_param:ceilometer_version}
       secret: ${_param:ceilometer_secret_key}
-      publisher:
-        default:
-          enabled: true
-          publish_event: true
-          publish_metric: true
       identity:
         engine: keystone
         host: ${_param:cluster_vip_address}
@@ -42,5 +37,3 @@
         user: openstack
         password: ${_param:rabbitmq_openstack_password}
         virtual_host: '/openstack'
-        # Workaround for https://bugs.launchpad.net/ceilometer/+bug/1337715
-        rpc_thread_pool_size: 5
diff --git a/metadata/service/agent/single/init.yml b/metadata/service/agent/single/init.yml
new file mode 100644
index 0000000..e444d7d
--- /dev/null
+++ b/metadata/service/agent/single/init.yml
@@ -0,0 +1,12 @@
+applications:
+- ceilometer
+classes:
+- service.ceilometer.agent.single.common
+parameters:
+  ceilometer:
+    agent:
+      publisher:
+        default:
+          enabled: true
+          publish_event: true
+          publish_metric: true
\ No newline at end of file
diff --git a/metadata/service/server/cluster.yml b/metadata/service/server/cluster.yml
deleted file mode 100644
index 33df2b4..0000000
--- a/metadata/service/server/cluster.yml
+++ /dev/null
@@ -1,63 +0,0 @@
-applications:
-- ceilometer
-classes:
-- service.ceilometer.support
-parameters:
-  _param:
-    keystone_ceilometer_endpoint_type: internalURL
-    openstack_log_appender: false
-    openstack_fluentd_handler_enabled: false
-    openstack_ossyslog_handler_enabled: false
-  ceilometer:
-    server:
-      enabled: true
-      version: ${_param:ceilometer_version}
-      cluster: true
-      secret: ${_param:ceilometer_secret_key}
-      ttl: 86400
-      publisher:
-        default:
-          enabled: true
-          publish_event: true
-          publish_metric: true
-      bind:
-        host: ${_param:cluster_local_address}
-        port: 8777
-      identity:
-        engine: keystone
-        host: ${_param:cluster_vip_address}
-        port: 35357
-        tenant: service
-        user: ceilometer
-        password: ${_param:keystone_ceilometer_password}
-        endpoint_type: ${_param:keystone_ceilometer_endpoint_type}
-      logging:
-        log_appender: ${_param:openstack_log_appender}
-        log_handlers:
-          watchedfile:
-            enabled: true
-          fluentd:
-            enabled: ${_param:openstack_fluentd_handler_enabled}
-          ossyslog:
-            enabled: ${_param:openstack_ossyslog_handler_enabled}
-      message_queue:
-        engine: rabbitmq
-        host: ${_param:cluster_vip_address}
-        port: 5672
-        user: openstack
-        password: ${_param:rabbitmq_openstack_password}
-        virtual_host: '/openstack'
-        # Workaround for https://bugs.launchpad.net/ceilometer/+bug/1337715
-        rpc_thread_pool_size: 5
-      database:
-        engine: mongodb
-        members:
-        - host: ${_param:cluster_node01_address}
-          port: 27017
-        - host: ${_param:cluster_node02_address}
-          port: 27017
-        - host: ${_param:cluster_node03_address}
-          port: 27017
-        name: ceilometer
-        user: ceilometer
-        password: ${_param:mongodb_ceilometer_password}
diff --git a/metadata/service/agent/single.yml b/metadata/service/server/cluster/common.yml
similarity index 82%
copy from metadata/service/agent/single.yml
copy to metadata/service/server/cluster/common.yml
index 1f1fca2..d8ffb2e 100644
--- a/metadata/service/agent/single.yml
+++ b/metadata/service/server/cluster/common.yml
@@ -9,15 +9,15 @@
     openstack_fluentd_handler_enabled: false
     openstack_ossyslog_handler_enabled: false
   ceilometer:
-    agent:
+    server:
       enabled: true
       version: ${_param:ceilometer_version}
+      cluster: true
       secret: ${_param:ceilometer_secret_key}
-      publisher:
-        default:
-          enabled: true
-          publish_event: true
-          publish_metric: true
+      ttl: 86400
+      bind:
+        host: ${_param:cluster_local_address}
+        port: 8777
       identity:
         engine: keystone
         host: ${_param:cluster_vip_address}
@@ -42,5 +42,3 @@
         user: openstack
         password: ${_param:rabbitmq_openstack_password}
         virtual_host: '/openstack'
-        # Workaround for https://bugs.launchpad.net/ceilometer/+bug/1337715
-        rpc_thread_pool_size: 5
diff --git a/metadata/service/server/cluster/init.yml b/metadata/service/server/cluster/init.yml
new file mode 100644
index 0000000..a530b0f
--- /dev/null
+++ b/metadata/service/server/cluster/init.yml
@@ -0,0 +1,24 @@
+applications:
+- ceilometer
+classes:
+- service.ceilometer.server.cluster.common
+parameters:
+  ceilometer:
+    server:
+      publisher:
+        default:
+          enabled: true
+          publish_event: true
+          publish_metric: true
+      database:
+        engine: mongodb
+        members:
+        - host: ${_param:cluster_node01_address}
+          port: 27017
+        - host: ${_param:cluster_node02_address}
+          port: 27017
+        - host: ${_param:cluster_node03_address}
+          port: 27017
+        name: ceilometer
+        user: ceilometer
+        password: ${_param:mongodb_ceilometer_password}
diff --git a/metadata/service/server/single.yml b/metadata/service/server/single.yml
deleted file mode 100644
index 5c5ddf8..0000000
--- a/metadata/service/server/single.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-applications:
-- ceilometer
-classes:
-- service.ceilometer.support
-parameters:
-  _param:
-    keystone_ceilometer_endpoint_type: internalURL
-    openstack_log_appender: false
-    openstack_fluentd_handler_enabled: false
-    openstack_ossyslog_handler_enabled: false
-  ceilometer:
-    server:
-      enabled: true
-      version: ${_param:ceilometer_version}
-      secret: ${_param:ceilometer_secret_key}
-      ttl: 86400
-      publisher:
-        default:
-          enabled: true
-          publish_event: true
-          publish_metric: true
-      bind:
-        host: ${_param:single_address}
-        port: 8777
-      identity:
-        engine: keystone
-        host: ${_param:single_address}
-        port: 35357
-        tenant: service
-        user: ceilometer
-        password: ${_param:keystone_ceilometer_password}
-        endpoint_type: ${_param:keystone_ceilometer_endpoint_type}
-      logging:
-        log_appender: ${_param:openstack_log_appender}
-        log_handlers:
-          watchedfile:
-            enabled: true
-          fluentd:
-            enabled: ${_param:openstack_fluentd_handler_enabled}
-          ossyslog:
-            enabled: ${_param:openstack_ossyslog_handler_enabled}
-      message_queue:
-        engine: rabbitmq
-        host: ${_param:single_address}
-        port: 5672
-        user: openstack
-        password: ${_param:rabbitmq_openstack_password}
-        virtual_host: '/openstack'
-        ha_queues: true
-        # Workaround for https://bugs.launchpad.net/ceilometer/+bug/1337715
-        rpc_thread_pool_size: 5
-      database:
-        engine: mongodb
-        host: ${_param:ceilometer_database_host}
-        port: 27017
-        name: ceilometer
-        user: ceilometer
-        password: ${_param:mongodb_ceilometer_password}
diff --git a/metadata/service/agent/cluster.yml b/metadata/service/server/single/common.yml
similarity index 77%
copy from metadata/service/agent/cluster.yml
copy to metadata/service/server/single/common.yml
index 2132fe1..bb60d05 100644
--- a/metadata/service/agent/cluster.yml
+++ b/metadata/service/server/single/common.yml
@@ -9,18 +9,17 @@
     openstack_fluentd_handler_enabled: false
     openstack_ossyslog_handler_enabled: false
   ceilometer:
-    agent:
+    server:
       enabled: true
       version: ${_param:ceilometer_version}
       secret: ${_param:ceilometer_secret_key}
-      publisher:
-        default:
-          enabled: true
-          publish_event: true
-          publish_metric: true
+      ttl: 86400
+      bind:
+        host: ${_param:single_address}
+        port: 8777
       identity:
         engine: keystone
-        host: ${_param:cluster_vip_address}
+        host: ${_param:single_address}
         port: 35357
         tenant: service
         user: ceilometer
@@ -37,11 +36,9 @@
             enabled: ${_param:openstack_ossyslog_handler_enabled}
       message_queue:
         engine: rabbitmq
-        host: ${_param:cluster_vip_address}
+        host: ${_param:single_address}
         port: 5672
         user: openstack
         password: ${_param:rabbitmq_openstack_password}
         virtual_host: '/openstack'
         ha_queues: true
-        # Workaround for https://bugs.launchpad.net/ceilometer/+bug/1337715
-        rpc_thread_pool_size: 5
diff --git a/metadata/service/server/single/init.yml b/metadata/service/server/single/init.yml
new file mode 100644
index 0000000..95f193e
--- /dev/null
+++ b/metadata/service/server/single/init.yml
@@ -0,0 +1,19 @@
+applications:
+- ceilometer
+classes:
+- service.ceilometer.server.single.common
+parameters:
+  ceilometer:
+    server:
+      publisher:
+        default:
+          enabled: true
+          publish_event: true
+          publish_metric: true
+      database:
+        engine: mongodb
+        host: ${_param:ceilometer_database_host}
+        port: 27017
+        name: ceilometer
+        user: ceilometer
+        password: ${_param:mongodb_ceilometer_password}
diff --git a/tests/pillar/server_cluster.sls b/tests/pillar/server_cluster.sls
index 7a6c50d..6aec6f1 100644
--- a/tests/pillar/server_cluster.sls
+++ b/tests/pillar/server_cluster.sls
@@ -3,7 +3,7 @@
     debug: true
     region: RegionOne
     enabled: true
-    version: mitaka
+    version: pike
     cluster: true
     secret: password
     ttl: 86400
@@ -59,6 +59,9 @@
         enabled: true
         host: 127.0.0.4
         port: 8086
+    notification:
+      batch_timeout: 10
+      batch_size: 100
       policy:
         segregation: 'rule:context_is_admin'
         'telemetry:get_resource':