Skip to content

Commit 1477879

Browse files
authored
Add manage_dogapi_gem, making the management of ruby in reports optional (DataDog#613)
1 parent 38c3bef commit 1477879

3 files changed

Lines changed: 61 additions & 16 deletions

File tree

manifests/init.pp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
# the scheme: "fact_name:fact_value".
3333
# $puppet_run_reports
3434
# Will send results from your puppet agent runs back to the datadog service.
35+
# $manage_dogapi_gem
36+
# When reports are enabled, ensure the dogapi gem (required) is installed.
3537
# $puppetmaster_user
3638
# Will chown the api key used by the report processor to this user.
3739
# Defaults to the user the puppetmaster is configured to run as.
@@ -246,6 +248,7 @@
246248
$service_ensure = 'running',
247249
$service_enable = true,
248250
Boolean $manage_repo = true,
251+
Boolean $manage_dogapi_gem = true,
249252
Boolean $manage_install = true,
250253
$hostname_extraction_regex = undef,
251254
Boolean $hostname_fqdn = false,
@@ -715,6 +718,7 @@
715718
class { 'datadog_agent::reports':
716719
api_key => $api_key,
717720
datadog_site => $datadog_site,
721+
manage_dogapi_gem => $manage_dogapi_gem,
718722
puppet_gem_provider => $puppet_gem_provider,
719723
dogapi_version => $datadog_agent::params::dogapi_version,
720724
puppetmaster_user => $puppetmaster_user,

manifests/reports.pp

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
$api_key,
1818
$puppetmaster_user,
1919
$dogapi_version,
20+
$manage_dogapi_gem = true,
2021
$hostname_extraction_regex = undef,
2122
$datadog_site = 'datadoghq.com',
2223
$puppet_gem_provider = $datadog_agent::params::gem_provider,
@@ -29,20 +30,28 @@
2930
} else {
3031

3132
include datadog_agent
32-
$rubydev_package = $datadog_agent::params::rubydev_package
3333

34-
# check to make sure that you're not installing rubydev somewhere else
35-
if ! defined(Package[$rubydev_package]) {
36-
package {$rubydev_package:
37-
ensure => installed,
38-
before => Package['dogapi']
34+
if $manage_dogapi_gem {
35+
$rubydev_package = $datadog_agent::params::rubydev_package
36+
37+
# check to make sure that you're not installing rubydev somewhere else
38+
if ! defined(Package[$rubydev_package]) {
39+
package {$rubydev_package:
40+
ensure => installed,
41+
before => Package['dogapi']
42+
}
43+
}
44+
45+
if (! defined(Package['rubygems'])) {
46+
# Ensure rubygems is installed
47+
class { 'ruby':
48+
rubygems_update => false
49+
}
3950
}
40-
}
4151

42-
if (! defined(Package['rubygems'])) {
43-
# Ensure rubygems is installed
44-
class { 'ruby':
45-
rubygems_update => false
52+
package{ 'dogapi':
53+
ensure => $dogapi_version,
54+
provider => $puppet_gem_provider,
4655
}
4756
}
4857

@@ -55,10 +64,5 @@
5564
require => File['/etc/datadog-agent'],
5665
}
5766

58-
package{ 'dogapi':
59-
ensure => $dogapi_version,
60-
provider => $puppet_gem_provider,
61-
}
62-
6367
}
6468
}

spec/classes/datadog_agent_reports_spec.rb

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,4 +188,41 @@
188188
it { is_expected.to contain_file(conf_file).without_content(%r{hostname_extraction_regex:}) }
189189
end
190190
end
191+
192+
context 'disabled ruby-manage' do
193+
let(:params) do
194+
{
195+
api_key: 'notanapikey',
196+
hostname_extraction_regex: nil,
197+
dogapi_version: 'installed',
198+
puppetmaster_user: 'puppet',
199+
puppet_gem_provider: 'gem',
200+
manage_dogapi_gem: false,
201+
}
202+
end
203+
204+
describe 'datadog_agent class dogapi version override' do
205+
let(:facts) do
206+
{
207+
operatingsystem: 'Debian',
208+
osfamily: 'debian',
209+
}
210+
end
211+
212+
it { is_expected.not_to contain_class('ruby').with_rubygems_update(false) }
213+
it { is_expected.not_to contain_class('ruby::params') }
214+
it { is_expected.not_to contain_package('ruby').with_ensure('installed') }
215+
it { is_expected.not_to contain_package('rubygems').with_ensure('installed') }
216+
217+
it { is_expected.not_to contain_package('ruby-dev') }
218+
219+
it { is_expected.not_to contain_package('dogapi') }
220+
221+
it do
222+
is_expected.to contain_file('/etc/datadog-agent/datadog-reports.yaml')\
223+
.with_owner('puppet')\
224+
.with_group('root')
225+
end
226+
end
227+
end
191228
end

0 commit comments

Comments
 (0)