Skip to content

Commit

Permalink
Riak integration
Browse files Browse the repository at this point in the history
  • Loading branch information
Cristian Juve committed Aug 8, 2016
1 parent 902e099 commit 70109f1
Show file tree
Hide file tree
Showing 3 changed files with 128 additions and 0 deletions.
40 changes: 40 additions & 0 deletions manifests/integrations/riak.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Class: datadog_agent::integrations::riak
#
# This class will install the necessary configuration for the riak integration
#
# Parameters:
# $url:
# The URL for riak
# $tags
# Optional array of tags
#
# Sample Usage:
#
# include 'datadog_agent::integrations::riak'
#
# OR
#
# class { 'datadog_agent::integrations::riak' :
# url => 'http://localhost:8098/stats',
# }
#
class datadog_agent::integrations::riak(
$url = 'http://localhost:8098/stats',
$tags = [],
) inherits datadog_agent::params {
include datadog_agent

validate_string($url)
validate_array($tags)

file {
"${datadog_agent::params::conf_dir}/riak.yaml":
ensure => file,
owner => $datadog_agent::params::dd_user,
group => $datadog_agent::params::dd_group,
mode => '0644',
content => template('datadog_agent/agent-conf.d/riak.yaml.erb'),
require => Package[$datadog_agent::params::package_name],
notify => Service[$datadog_agent::params::service_name]
}
}
76 changes: 76 additions & 0 deletions spec/classes/datadog_agent_integrations_riak_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
require 'spec_helper'

describe 'datadog_agent::integrations::riak' do
let(:facts) {{
operatingsystem: 'Ubuntu',
}}
let(:conf_dir) { '/etc/dd-agent/conf.d' }
let(:dd_user) { 'dd-agent' }
let(:dd_group) { 'root' }
let(:dd_package) { 'datadog-agent' }
let(:dd_service) { 'datadog-agent' }
let(:conf_file) { "#{conf_dir}/riak.yaml" }

it { should compile.with_all_deps }
it { should contain_file(conf_file).with(
owner: dd_user,
group: dd_group,
mode: '0644',
)}
it { should contain_file(conf_file).that_requires("Package[#{dd_package}]") }
it { should contain_file(conf_file).that_notifies("Service[#{dd_service}]") }

context 'with default parameters' do
it { should contain_file(conf_file).with_content(%r{url: http://localhost:8098/stats}) }
it { should contain_file(conf_file).without_content(%r{tags: }) }
end

context 'with parameters set' do
let(:params) {{
url: 'http://foo.bar.baz:8098/stats',
tags: %w{ foo bar baz },
}}
it { should contain_file(conf_file).with_content(%r{url: http://foo.bar.baz:8098/stats}) }
it { should contain_file(conf_file).with_content(/tags:\s+- foo\s+- bar\s+- baz\s*?[^-]/m) }
end
context 'with tags parameter single value' do
let(:params) {{
tags: 'foo',
}}
it { should_not compile }

skip "this is currently unimplemented behavior" do
it { should contain_file(conf_file).with_content(/tags:\s+- foo\s*?[^-]/m) }
end
end
context 'with tags parameter array' do
let(:params) {{
tags: %w{ foo bar baz },
}}
it { should contain_file(conf_file).with_content(/tags:\s+- foo\s+- bar\s+- baz\s*?[^-]/m) }
end
context 'with tags parameter empty values' do
context 'mixed in with other tags' do
let(:params) {{
tags: [ 'foo', '', 'baz' ]
}}
it { should contain_file(conf_file).with_content(/tags:\s+- foo\s+- baz\s*?[^-]/m) }
end

context 'single element array of an empty string' do
let(:params) {{
tags: [''],
}}

skip("undefined behavior")
end

context 'single value empty string' do
let(:params) {{
tags: '',
}}

skip("doubly undefined behavior")
end
end
end
12 changes: 12 additions & 0 deletions templates/agent-conf.d/riak.yaml.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
init_config:

instances:
- url: <%= @url %>
<% if @tags and ! @tags.empty? -%>
tags:
<%- Array(@tags).each do |tag| -%>
<%- if tag != '' -%>
- <%= tag %>
<%- end -%>
<%- end -%>
<% end -%>

0 comments on commit 70109f1

Please sign in to comment.