From 508f077c61377133197efbd5b60e14627884b7d2 Mon Sep 17 00:00:00 2001 From: Dmitriy Rabotjagov Date: Thu, 6 Dec 2018 18:12:31 +0200 Subject: [PATCH] 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 --- defaults/main.yml | 6 ++++++ tasks/ceilometer_post_install.yml | 14 +++++++++++++- vars/main.yml | 6 ++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/defaults/main.yml b/defaults/main.yml index 3ea16d9b..9f523d69 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -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: {} diff --git a/tasks/ceilometer_post_install.yml b/tasks/ceilometer_post_install.yml index 1312fe50..ae8a38d6 100644 --- a/tasks/ceilometer_post_install.yml +++ b/tasks/ceilometer_post_install.yml @@ -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" diff --git a/vars/main.yml b/vars/main.yml index ce038e5a..8c879278 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -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: |