Add ability to override meters.yaml and event_definitions.yaml

This change will allow deployer to override meters.yaml and
event_definitions.yaml files, if he would like to change layout/data,
which will be stored in gnocchi, and the way it will be
updated/stored.

Change-Id: I6bfe03dc1f5ad795d91534b1a51c4d8889bb3ed1
This commit is contained in:
Dmitriy Rabotjagov 2018-12-06 18:12:31 +02:00
parent 8ba1f3829b
commit 508f077c61
3 changed files with 25 additions and 1 deletions

View File

@ -288,6 +288,8 @@ ceilometer_role_project_group: ceilometer_all
# template engine and copied to the target host. If they do
# not exist then the default files will be sourced from the
# service git repository.
ceilometer_data_meters_default_file_path: "/etc/openstack_deploy/ceilometer/meters.yaml"
ceilometer_event_definitions_default_file_path: "/etc/openstack_deploy/ceilometer/event_definitions.yaml"
ceilometer_gnocchi_resources_default_file_path: "/etc/openstack_deploy/ceilometer/gnocchi_resources.yaml"
ceilometer_loadbalancer_v2_meter_definitions_default_file_path: "/etc/openstack_deploy/ceilometer/loadbalancer_v2_meter_definitions.yaml"
ceilometer_osprofiler_event_definitions_default_file_path: "/etc/openstack_deploy/ceilometer/osprofiler_event_definitions.yaml"
@ -297,6 +299,8 @@ ceilometer_polling_default_file_path: "/etc/openstack_deploy/ceilometer/polling.
# paths will be used to find the files from the git config
# lookup location.
ceilometer_git_config_lookup_location: https://git.openstack.org/cgit/openstack/ceilometer/plain
ceilometer_data_meters_git_file_path: "ceilometer/data/meters.d/meters.yaml?h={{ ceilometer_git_install_branch }}"
ceilometer_event_definitions_git_file_path: "ceilometer/pipeline/data/event_definitions.yaml?h={{ ceilometer_git_install_branch }}"
ceilometer_gnocchi_resources_git_file_path: "ceilometer/publisher/data/gnocchi_resources.yaml?h={{ ceilometer_git_install_branch }}"
ceilometer_loadbalancer_v2_meter_definitions_git_file_path: "etc/ceilometer/examples/loadbalancer_v2_meter_definitions.yaml?h={{ ceilometer_git_install_branch }}"
ceilometer_osprofiler_event_definitions_git_file_path: "etc/ceilometer/examples/osprofiler_event_definitions.yaml?h={{ ceilometer_git_install_branch }}"
@ -305,6 +309,8 @@ ceilometer_polling_git_file_path: "etc/ceilometer/polling.yaml?h={{ ceilometer_g
## Tunable var-based overrides
# The contents of these are templated over the default files.
ceilometer_ceilometer_conf_overrides: {}
ceilometer_data_meters_yaml_overrides: {}
ceilometer_event_definitions_yaml_overrides: {}
ceilometer_gnocchi_resources_yaml_overrides: {}
ceilometer_loadbalancer_v2_meter_definitions_yaml_overrides: {}
ceilometer_osprofiler_event_definitions_yaml_overrides: {}

View File

@ -18,10 +18,12 @@
url: "{{ item }}"
return_content: yes
with_items:
- "{{ ceilometer_git_config_lookup_location }}/{{ ceilometer_data_meters_git_file_path }}"
- "{{ ceilometer_git_config_lookup_location }}/{{ ceilometer_event_definitions_git_file_path }}"
- "{{ ceilometer_git_config_lookup_location }}/{{ ceilometer_gnocchi_resources_git_file_path }}"
- "{{ ceilometer_git_config_lookup_location }}/{{ ceilometer_loadbalancer_v2_meter_definitions_git_file_path }}"
- "{{ ceilometer_git_config_lookup_location }}/{{ ceilometer_osprofiler_event_definitions_git_file_path }}"
- "{{ ceilometer_git_config_lookup_location }}/{{ ceilometer_polling_git_file_path }}"
- "{{ ceilometer_git_config_lookup_location }}/{{ ceilometer_gnocchi_resources_git_file_path }}"
register: _git_file_fetch
- name: Copy ceilometer configuration files
@ -66,6 +68,16 @@
config_type: "yaml"
list_extend: false
content: "{{ ceilometer_polling_user_content | default(ceilometer_polling_default_content, true) }}"
- dest: "{{ ceilometer_lib_dir }}/ceilometer/data/meters.d/meters.yaml"
config_overrides: "{{ ceilometer_data_meters_yaml_overrides }}"
config_type: "yaml"
list_extend: false
content: "{{ ceilometer_data_meters_user_content | default(ceilometer_data_meters_default_content, true) }}"
- dest: "{{ ceilometer_lib_dir }}/ceilometer/pipeline/data/event_definitions.yaml"
config_overrides: "{{ ceilometer_event_definitions_yaml_overrides }}"
config_type: "yaml"
list_extend: false
content: "{{ ceilometer_event_definitions_user_content | default(ceilometer_event_definitions_default_content, true) }}"
- dest: "{{ ceilometer_lib_dir }}/ceilometer/publisher/data/gnocchi_resources.yaml"
config_overrides: "{{ ceilometer_gnocchi_resources_yaml_overrides }}"
config_type: "yaml"

View File

@ -14,12 +14,18 @@
# limitations under the License.
# These vars find a file on the deployment node, if it exists - otherwise the result is empty.
ceilometer_data_meters_user_content: "{{ lookup('pipe', 'cat ' ~ ceilometer_data_meters_default_file_path ~ ' 2>/dev/null || true') }}"
ceilometer_event_definitions_user_content: "{{ lookup('pipe', 'cat ' ~ ceilometer_event_definitions_default_file_path ~ ' 2>/dev/null || true') }}"
ceilometer_gnocchi_resources_user_content: "{{ lookup('pipe', 'cat ' ~ ceilometer_gnocchi_resources_default_file_path ~ ' 2>/dev/null || true') }}"
ceilometer_loadbalancer_v2_meter_definitions_user_content: "{{ lookup('pipe', 'cat ' ~ ceilometer_loadbalancer_v2_meter_definitions_default_file_path ~ ' 2>/dev/null || true') }}"
ceilometer_osprofiler_event_definitions_user_content: "{{ lookup('pipe', 'cat ' ~ ceilometer_osprofiler_event_definitions_default_file_path ~ ' 2>/dev/null || true') }}"
ceilometer_polling_user_content: "{{ lookup('pipe', 'cat ' ~ ceilometer_polling_default_file_path ~ ' 2>/dev/null || true') }}"
# These vars find the appropriate result content from the with_items loop
ceilometer_data_meters_default_content: |
{{ _git_file_fetch.results | selectattr('item', 'equalto', ceilometer_git_config_lookup_location ~ '/' ~ ceilometer_data_meters_git_file_path) | map(attribute='content') | first }}
ceilometer_event_definitions_default_content: |
{{ _git_file_fetch.results | selectattr('item', 'equalto', ceilometer_git_config_lookup_location ~ '/' ~ ceilometer_event_definitions_git_file_path) | map(attribute='content') | first }}
ceilometer_gnocchi_resources_default_content: |
{{ _git_file_fetch.results | selectattr('item', 'equalto', ceilometer_git_config_lookup_location ~ '/' ~ ceilometer_gnocchi_resources_git_file_path) | map(attribute='content') | first }}
ceilometer_loadbalancer_v2_meter_definitions_default_content: |