From c1c9f0dd5245dccc4aee6ad853acc5281778b180 Mon Sep 17 00:00:00 2001 From: Ryan Bak Date: Thu, 27 Oct 2016 09:18:55 -0600 Subject: [PATCH] Add new config values for rabbitmq check Change-Id: I229c412deee8dd8ae49a1771112c5bcd84d8e407 --- manifests/checks/instances/rabbitmq.pp | 49 ++++++++++++---- spec/classes/monasca_checks_rabbitmq_spec.rb | 61 ++++++++++++++++++++ templates/checks/rabbitmq.erb | 14 ++++- 3 files changed, 113 insertions(+), 11 deletions(-) create mode 100644 spec/classes/monasca_checks_rabbitmq_spec.rb diff --git a/manifests/checks/instances/rabbitmq.pp b/manifests/checks/instances/rabbitmq.pp index 23e5375..16b6f20 100644 --- a/manifests/checks/instances/rabbitmq.pp +++ b/manifests/checks/instances/rabbitmq.pp @@ -5,34 +5,59 @@ # === Parameters: # # [*rabbitmq_api_url*] -# url of rabbit server +# (Required) url of rabbit server # # [*rabbitmq_user*] -# username for rabbit server +# (Optional) username for rabbit server +# Defaults to undef. # # [*rabbitmq_pass*] -# password for rabbit server +# (Optional) password for rabbit server +# Defaults to undef. # # [*queues*] -# rabbit queues to check +# (Optional) an explicit list of rabbit queues to check +# Defaults to undef. # # [*nodes*] -# rabbit nodes to check +# (Optional) an explicit list of rabbit nodes to check +# Defaults to undef. # # [*exchanges*] -# rabbit exchanges to check +# (Optional) an explicit list of rabbit exchanges to check +# Defaults to undef. +# +# [*queues_regexes*] +# (Optional) a list of regex for rabbit queues to check +# Defaults to undef. +# +# [*nodes_regexes*] +# (Optional) a list of regex for rabbit nodes to check +# Defaults to undef. +# +# [*exchanges_regexes*] +# (Optional) a list of regex for rabbit exchanges to check +# Defaults to undef. # # [*max_detailed_queues*] -# maximum number of detailed queues to check +# (Optional) maximum number of detailed queues to check +# Defaults to undef. # # [*max_detailed_exchanges*] -# maximum number of detailed exchanges to check +# (Optional) maximum number of detailed exchanges to check +# Defaults to undef. # # [*max_detailed_nodes*] -# maximum number of detailed nodes to check +# (Optional) maximum number of detailed nodes to check +# Defaults to undef. +# +# [*whitelist*] +# (Optional) A dictionary of the node, queue and exchange metrics to collect +# Defaults to undef. # # [*dimensions*] -# any additional dimensions for the check +# (Optional) any additional dimensions for the check +# Defaults to undef. # define monasca::checks::instances::rabbitmq ( $rabbitmq_api_url, @@ -41,9 +66,13 @@ define monasca::checks::instances::rabbitmq ( $queues = undef, $nodes = undef, $exchanges = undef, + $queues_regexes = undef, + $nodes_regexes = undef, + $exchanges_regexes = undef, $max_detailed_queues = undef, $max_detailed_exchanges = undef, $max_detailed_nodes = undef, + $whitelist = undef, $dimensions = undef, ) { $conf_dir = $::monasca::agent::conf_dir diff --git a/spec/classes/monasca_checks_rabbitmq_spec.rb b/spec/classes/monasca_checks_rabbitmq_spec.rb new file mode 100644 index 0000000..762d59d --- /dev/null +++ b/spec/classes/monasca_checks_rabbitmq_spec.rb @@ -0,0 +1,61 @@ +require 'spec_helper' + +describe 'monasca::checks::rabbitmq' do + describe 'on debian platforms' do + let :facts do + @default_facts.merge({ + :osfamily => 'Debian', + }) + end + + let :rabbitmq_fragment do + "test_instance_rabbitmq_instance" + end + + let :pre_condition do + "class { 'monasca::agent': + url => 'http://127.0.0.1', + username => 'user', + password => 'password', + keystone_url => 'http://127.0.0.1:5000', + install_python_deps => false, + }" + end + + let(:params) { { + :instances => { + 'test_instance' => { + 'rabbitmq_api_url' => 'url', + 'rabbitmq_user' => 'user', + 'rabbitmq_pass' => 'password', + 'queues' => ['test_queue'], + 'nodes' => ['test_node'], + 'exchanges' => ['test_exchange'], + 'queues_regexes' => ['test_queue_regex'], + 'nodes_regexes' => ['test_node_regex'], + 'exchanges_regexes' => ['test_exchange_regex'], + 'max_detailed_queues' => 1000, + 'max_detailed_exchanges' => 100, + 'max_detailed_nodes' => 10, + 'whitelist' => {}, + } + }, + } } + + it 'builds the rabbitmq config file properly' do + is_expected.to contain_concat_fragment(rabbitmq_fragment).with_content(/^\s*rabbitmq_api_url: url$/) + is_expected.to contain_concat_fragment(rabbitmq_fragment).with_content(/^\s*rabbitmq_user: user$/) + is_expected.to contain_concat_fragment(rabbitmq_fragment).with_content(/^\s*rabbitmq_pass: password$/) + is_expected.to contain_concat_fragment(rabbitmq_fragment).with_content(/^\s*queues: \["test_queue"\]$/) + is_expected.to contain_concat_fragment(rabbitmq_fragment).with_content(/^\s*nodes: \["test_node"\]$/) + is_expected.to contain_concat_fragment(rabbitmq_fragment).with_content(/^\s*exchanges: \["test_exchange"\]$/) + is_expected.to contain_concat_fragment(rabbitmq_fragment).with_content(/^\s*queues_regexes: \["test_queue_regex"\]$/) + is_expected.to contain_concat_fragment(rabbitmq_fragment).with_content(/^\s*nodes_regexes: \["test_node_regex"\]$/) + is_expected.to contain_concat_fragment(rabbitmq_fragment).with_content(/^\s*exchanges_regexes: \["test_exchange_regex"\]$/) + is_expected.to contain_concat_fragment(rabbitmq_fragment).with_content(/^\s*max_detailed_queues: 1000$/) + is_expected.to contain_concat_fragment(rabbitmq_fragment).with_content(/^\s*max_detailed_exchanges: 100$/) + is_expected.to contain_concat_fragment(rabbitmq_fragment).with_content(/^\s*max_detailed_nodes: 10$/) + is_expected.to contain_concat_fragment(rabbitmq_fragment).with_content(/^\s*whitelist: {}$/) + end + end +end diff --git a/templates/checks/rabbitmq.erb b/templates/checks/rabbitmq.erb index bbd4b75..d13da29 100644 --- a/templates/checks/rabbitmq.erb +++ b/templates/checks/rabbitmq.erb @@ -15,6 +15,15 @@ <%- if @exchanges -%> exchanges: <%= @exchanges %> <%- end -%> +<%- if @queues_regexes -%> + queues_regexes: <%= @queues_regexes %> +<%- end -%> +<%- if @nodes_regexes -%> + nodes_regexes: <%= @nodes_regexes %> +<%- end -%> +<%- if @exchanges_regexes -%> + exchanges_regexes: <%= @exchanges_regexes %> +<%- end -%> <%- if @max_detailed_queues -%> max_detailed_queues: <%= @max_detailed_queues %> <%- end -%> @@ -24,6 +33,9 @@ <%- if @max_detailed_nodes -%> max_detailed_nodes: <%= @max_detailed_nodes %> <%- end -%> +<%- if @whitelist -%> + whitelist: <%= @whitelist %> +<%- end -%> <%- if @dimensions -%> dimensions: <%= @dimensions %> -<%- end -%> \ No newline at end of file +<%- end -%>