Merge "Add process checks for Ceilometer"
diff --git a/.gitreview b/.gitreview
deleted file mode 100644
index a9eba8d..0000000
--- a/.gitreview
+++ /dev/null
@@ -1,4 +0,0 @@
-[gerrit]
-host=gerrit.mcp.mirantis.net
-port=29418
-project=salt-formulas/ceilometer.git
diff --git a/.kitchen.travis.yml b/.kitchen.travis.yml
new file mode 100644
index 0000000..0c0fef8
--- /dev/null
+++ b/.kitchen.travis.yml
@@ -0,0 +1,6 @@
+suites:
+
+ - name: <%= ENV['SUITE'] %>
+ provisioner:
+ pillars-from-files:
+ ceilometer.sls: tests/pillar/<%= ENV['SUITE'] %>.sls
diff --git a/.kitchen.yml b/.kitchen.yml
index a12d27d..8a6a314 100644
--- a/.kitchen.yml
+++ b/.kitchen.yml
@@ -33,9 +33,9 @@
sudo: true
platforms:
- - name: ubuntu-xenial
+ - name: <%=ENV['PLATFORM'] || 'ubuntu-xenial'%>
driver_config:
- image: trevorj/salty-whales:xenial
+ image: <%=ENV['PLATFORM'] || 'trevorj/salty-whales:xenial'%>
platform: ubuntu
suites:
diff --git a/.travis.yml b/.travis.yml
index 4f34af2..5589b31 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -17,16 +17,17 @@
- bundle install
env:
- - PLATFORM=trevorj/salty-whales:trusty
- - PLATFORM=trevorj/salty-whales:xenial
-
+ - PLATFORM=trevorj/salty-whales:xenial SUITE=agent_cluster
+ - PLATFORM=trevorj/salty-whales:xenial SUITE=agent_single
+ - PLATFORM=trevorj/salty-whales:xenial SUITE=server_cluster
+ - PLATFORM=trevorj/salty-whales:xenial SUITE=server_single
before_script:
- set -o pipefail
- make test | tail
script:
- - test ! -e .kitchen.yml || bundle exec kitchen test -t tests/integration
+ - KITCHEN_LOCAL_YAML=.kitchen.travis.yml bundle exec kitchen test -t tests/integration
notifications:
webhooks:
diff --git a/README.rst b/README.rst
index f5dc16d..44e9150 100644
--- a/README.rst
+++ b/README.rst
@@ -43,6 +43,22 @@
password: pwd
virtual_host: '/openstack'
+Enable CORS parameters
+------------------------------
+
+.. code-block:: yaml
+
+ ceilometer:
+ server:
+ cors:
+ allowed_origin: https:localhost.local,http:localhost.local
+ expose_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
+ allow_methods: GET,PUT,POST,DELETE,PATCH
+ allow_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
+ allow_credentials: True
+ max_age: 86400
+
+
Configuration of policy.json file
---------------------------------
diff --git a/ceilometer/files/mitaka/ceilometer-server.conf.Debian b/ceilometer/files/mitaka/ceilometer-server.conf.Debian
index 2d8f6e0..f746b4d 100644
--- a/ceilometer/files/mitaka/ceilometer-server.conf.Debian
+++ b/ceilometer/files/mitaka/ceilometer-server.conf.Debian
@@ -86,6 +86,20 @@
# option. (string value)
#control_exchange = openstack
+# List of pollsters (or wildcard templates) to be used while polling
+#pollster_list =
+{%- if server.pollster_list is defined %}
+pollster_list = {{ server.pollster_list }}
+{%- endif %}
+
+# To reduce polling agent load, samples are sent to the notification
+# agent in a batch. To gain higher throughput at the cost of load set
+# this to False.
+#batch_polled_samples = True
+{%- if server.batch_polled_samples is defined %}
+batch_polled_samples = {{ server.batch_polled_samples|lower }}
+{%- endif %}
+
[alarm]
#
@@ -665,3 +679,49 @@
# Disables X.509 certificate validation when an SSL connection
# to Identity Service is established. (boolean value)
#insecure=false
+
+
+[cors]
+#
+# From oslo.middleware
+#
+
+# Indicate whether this resource may be shared with the domain received in the
+# requests "origin" header. (list value)
+#allowed_origin = <None>
+{% if server.get('cors', {}).allowed_origin is defined %}
+allowed_origin = {{ server.cors.allowed_origin }}
+{% endif %}
+
+# Indicate that the actual request can include user credentials (boolean value)
+#allow_credentials = true
+{% if server.get('cors', {}).allow_credentials is defined %}
+allow_credentials = {{ server.cors.allow_credentials }}
+{% endif %}
+
+# Indicate which headers are safe to expose to the API. Defaults to HTTP Simple
+# Headers. (list value)
+#expose_headers = X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
+{% if server.get('cors', {}).expose_headers is defined %}
+expose_headers = {{ server.cors.expose_headers }}
+{% endif %}
+
+# Maximum cache age of CORS preflight requests. (integer value)
+#max_age = 3600
+{% if server.get('cors', {}).max_age is defined %}
+max_age = {{ server.cors.max_age }}
+{% endif %}
+
+
+# Indicate which methods can be used during the actual request. (list value)
+#allow_methods = GET,PUT,POST,DELETE,PATCH
+{% if server.get('cors', {}).allow_methods is defined %}
+allow_methods = {{ server.cors.allow_methods }}
+{% endif %}
+
+# Indicate which header field names may be used during the actual request.
+# (list value)
+#allow_headers = X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token,X-Project-Id,X-Project-Name,X-Project-Domain-Id,X-Project-Domain-Name,X-Domain-Id,X-Domain-Name
+{% if server.get('cors', {}).allow_headers is defined %}
+allow_headers = {{ server.cors.allow_headers }}
+{% endif %}
diff --git a/ceilometer/files/newton/ceilometer-agent.conf.Debian b/ceilometer/files/newton/ceilometer-agent.conf.Debian
index df0d8e2..3c8df67 100644
--- a/ceilometer/files/newton/ceilometer-agent.conf.Debian
+++ b/ceilometer/files/newton/ceilometer-agent.conf.Debian
@@ -978,7 +978,7 @@
project_name = {{ agent.identity.tenant }}
username = {{ agent.identity.user }}
password = {{ agent.identity.password }}
-auth_uri=http://{{ agent.identity.host }}:5000/v3
+auth_url=http://{{ agent.identity.host }}:5000/v3
token_cache_time = -1
interface=internalURL
region_name={{ agent.get('region', 'RegionOne') }}
\ No newline at end of file
diff --git a/ceilometer/files/newton/ceilometer-server.conf.Debian b/ceilometer/files/newton/ceilometer-server.conf.Debian
index c98713e..82e1deb 100644
--- a/ceilometer/files/newton/ceilometer-server.conf.Debian
+++ b/ceilometer/files/newton/ceilometer-server.conf.Debian
@@ -222,6 +222,19 @@
# value means endless wait. (integer value)
#graceful_shutdown_timeout = 60
+# List of pollsters (or wildcard templates) to be used while polling
+#pollster_list =
+{%- if server.pollster_list is defined %}
+pollster_list = {{ server.pollster_list }}
+{%- endif %}
+
+# To reduce polling agent load, samples are sent to the notification
+# agent in a batch. To gain higher throughput at the cost of load set
+# this to False.
+#batch_polled_samples = True
+{%- if server.batch_polled_samples is defined %}
+batch_polled_samples = {{ server.batch_polled_samples|lower }}
+{%- endif %}
[cors]
@@ -232,23 +245,41 @@
# Indicate whether this resource may be shared with the domain received in the
# requests "origin" header. (list value)
#allowed_origin = <None>
+{% if server.get('cors', {}).allowed_origin is defined %}
+allowed_origin = {{ server.cors.allowed_origin }}
+{% endif %}
# Indicate that the actual request can include user credentials (boolean value)
#allow_credentials = true
+{% if server.get('cors', {}).allow_credentials is defined %}
+allow_credentials = {{ server.cors.allow_credentials }}
+{% endif %}
# Indicate which headers are safe to expose to the API. Defaults to HTTP Simple
# Headers. (list value)
#expose_headers = Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma
+{% if server.get('cors', {}).expose_headers is defined %}
+expose_headers = {{ server.cors.expose_headers }}
+{% endif %}
# Maximum cache age of CORS preflight requests. (integer value)
#max_age = 3600
+{% if server.get('cors', {}).max_age is defined %}
+max_age = {{ server.cors.max_age }}
+{% endif %}
# Indicate which methods can be used during the actual request. (list value)
#allow_methods = GET,POST,PUT,DELETE,OPTIONS
+{% if server.get('cors', {}).allow_methods is defined %}
+allow_methods = {{ server.cors.allow_methods }}
+{% endif %}
# Indicate which header field names may be used during the actual request.
# (list value)
#allow_headers = Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma
+{% if server.get('cors', {}).allow_headers is defined %}
+allow_headers = {{ server.cors.allow_headers }}
+{% endif %}
[cors.subdomain]
@@ -1001,7 +1032,7 @@
project_name = {{ server.identity.tenant }}
username = {{ server.identity.user }}
password = {{ server.identity.password }}
-auth_uri=http://{{ server.identity.host }}:5000/v3
+auth_url=http://{{ server.identity.host }}:5000/v3
token_cache_time = -1
interface=internalURL
region_name={{ server.get('region', 'RegionOne') }}
\ No newline at end of file
diff --git a/ceilometer/files/ocata/ceilometer-api.apache2.conf.Debian b/ceilometer/files/newton/ceilometer.apache2.conf.Debian
similarity index 100%
copy from ceilometer/files/ocata/ceilometer-api.apache2.conf.Debian
copy to ceilometer/files/newton/ceilometer.apache2.conf.Debian
diff --git a/ceilometer/files/ocata/ceilometer-server.conf.Debian b/ceilometer/files/ocata/ceilometer-server.conf.Debian
index 78c6462..0316403 100644
--- a/ceilometer/files/ocata/ceilometer-server.conf.Debian
+++ b/ceilometer/files/ocata/ceilometer-server.conf.Debian
@@ -474,6 +474,19 @@
# value means endless wait. (integer value)
#graceful_shutdown_timeout = 60
+# List of pollsters (or wildcard templates) to be used while polling
+#pollster_list =
+{%- if server.pollster_list is defined %}
+pollster_list = {{ server.pollster_list }}
+{%- endif %}
+
+# To reduce polling agent load, samples are sent to the notification
+# agent in a batch. To gain higher throughput at the cost of load set
+# this to False.
+#batch_polled_samples = True
+{%- if server.batch_polled_samples is defined %}
+batch_polled_samples = {{ server.batch_polled_samples|lower }}
+{%- endif %}
[api]
@@ -614,23 +627,41 @@
# requests "origin" header. Format: "<protocol>://<host>[:<port>]", no trailing
# slash. Example: https://horizon.example.com (list value)
#allowed_origin = <None>
+{% if server.get('cors', {}).allowed_origin is defined %}
+allowed_origin = {{ server.cors.allowed_origin }}
+{% endif %}
# Indicate that the actual request can include user credentials (boolean value)
#allow_credentials = true
+{% if server.get('cors', {}).allow_credentials is defined %}
+allow_credentials = {{ server.cors.allow_credentials }}
+{% endif %}
# Indicate which headers are safe to expose to the API. Defaults to HTTP Simple
# Headers. (list value)
#expose_headers = X-Auth-Token,X-Subject-Token,X-Service-Token,X-Openstack-Request-Id
+{% if server.get('cors', {}).expose_headers is defined %}
+expose_headers = {{ server.cors.expose_headers }}
+{% endif %}
# Maximum cache age of CORS preflight requests. (integer value)
#max_age = 3600
+{% if server.get('cors', {}).max_age is defined %}
+max_age = {{ server.cors.max_age }}
+{% endif %}
# Indicate which methods can be used during the actual request. (list value)
#allow_methods = GET,PUT,POST,DELETE,PATCH
+{% if server.get('cors', {}).allow_methods is defined %}
+allow_methods = {{ server.cors.allow_methods }}
+{% endif %}
# Indicate which header field names may be used during the actual request.
# (list value)
#allow_headers = X-Auth-Token,X-Identity-Status,X-Roles,X-Service-Catalog,X-User-Id,X-Tenant-Id,X-Openstack-Request-Id
+{% if server.get('cors', {}).allow_headers is defined %}
+allow_headers = {{ server.cors.allow_headers }}
+{% endif %}
[cors.subdomain]
diff --git a/ceilometer/files/ocata/ceilometer-api.apache2.conf.Debian b/ceilometer/files/ocata/ceilometer.apache2.conf.Debian
similarity index 100%
rename from ceilometer/files/ocata/ceilometer-api.apache2.conf.Debian
rename to ceilometer/files/ocata/ceilometer.apache2.conf.Debian
diff --git a/ceilometer/map.jinja b/ceilometer/map.jinja
index 9dd00c2..6f40616 100644
--- a/ceilometer/map.jinja
+++ b/ceilometer/map.jinja
@@ -47,15 +47,15 @@
# packages/services, because alarming is implemented by Aodh and collector
# stuff is implemented by the ceilometer_collector service.
# The ceilometer api for Ocata and newer is served by webserver.
-{%- if salt['pillar.get']('ceilometer:server:version', 'mitaka') in ['liberty', 'juno', 'kilo'] or salt['pillar.get']('ceilometer:server:version', 'ocata') in ['liberty', 'juno', 'kilo'] %}
+{%- if salt['pillar.get']('ceilometer:server:version', 'mitaka') in ['liberty', 'juno', 'kilo'] %}
{%- do server.update({'pkgs': pkgs.basic + pkgs.collector + pkgs.alarm}) %}
{%- do server.update({'services': services.basic + services.collector + services.alarm + services.webserved}) %}
{%- else %}
{%- do server.update({'pkgs': pkgs.basic + pkgs.db_drivers}) %}
-{%- if salt['pillar.get']('ceilometer:server:version', 'ocata') in ['mitaka', 'newton'] %}
+{%- if salt['pillar.get']('ceilometer:server:version', 'ocata') in ['mitaka'] %}
{%- do server.update({'services': services.basic + services.webserved}) %}
{%- else %}
-# Ocata version of ceilometer api is served by webserver
+# Newton and Ocata versions of ceilometer api are served by webserver
{%- do server.update({'services': services.basic}) %}
{%- endif %}
{%- endif %}
diff --git a/ceilometer/server.sls b/ceilometer/server.sls
index 9f81738..d0f1fc6 100644
--- a/ceilometer/server.sls
+++ b/ceilometer/server.sls
@@ -86,20 +86,30 @@
{%- endif %}
-# for Ocata and newer
-{%- if server.version not in ['liberty', 'juno', 'kilo', 'mitaka', 'newton'] %}
+# for Newton and newer
+{%- if server.version not in ['liberty', 'juno', 'kilo', 'mitaka'] %}
-/etc/apache2/sites-available/ceilometer-api.conf:
+ceilometer_api_apache_config:
file.managed:
- - source: salt://ceilometer/files/{{ server.version }}/ceilometer-api.apache2.conf.Debian
+ {%- if server.version == 'newton' %}
+ - name: /etc/apache2/sites-available/ceilometer.conf
+ {%- else %}
+ - name: /etc/apache2/sites-available/ceilometer-api.conf
+ {%- endif %}
+ - source: salt://ceilometer/files/{{ server.version }}/ceilometer.apache2.conf.Debian
- template: jinja
- require:
- pkg: ceilometer_server_packages
ceilometer_api_config:
file.symlink:
+ {%- if server.version == 'newton' %}
+ - name: /etc/apache2/sites-enabled/ceilometer.conf
+ - target: /etc/apache2/sites-available/ceilometer.conf
+ {%- else %}
- name: /etc/apache2/sites-enabled/ceilometer-api.conf
- target: /etc/apache2/sites-available/ceilometer-api.conf
+ {%- endif %}
ceilometer_apache_restart:
service.running:
@@ -107,7 +117,7 @@
- name: apache2
- watch:
- file: /etc/ceilometer/ceilometer.conf
- - file: /etc/apache2/sites-available/ceilometer-api.conf
+ - file: ceilometer_api_apache_config
- file: /etc/ceilometer/event_definitions.yaml
- file: /etc/ceilometer/event_pipeline.yaml
- file: /etc/ceilometer/gabbi_pipeline.yaml
@@ -115,7 +125,6 @@
{%- endif %}
-
ceilometer_server_services:
service.running:
- names: {{ server.services }}