Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
# the scheme: "fact_name:fact_value".
# $puppet_run_reports
# Will send results from your puppet agent runs back to the datadog service.
# $manage_ruby
# Invoke the ruby class to manage ruby install
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that $manage_dogapi_gem seems more fitting for what this switch enables.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, the current name is a bit misleading.

# $puppetmaster_user
# Will chown the api key used by the report processor to this user.
# Defaults to the user the puppetmaster is configured to run as.
Expand Down Expand Up @@ -243,6 +245,7 @@
$service_ensure = 'running',
$service_enable = true,
Boolean $manage_repo = true,
Boolean $manage_ruby = true,
$hostname_extraction_regex = undef,
Boolean $hostname_fqdn = false,
$dogstatsd_port = 8125,
Expand Down Expand Up @@ -706,6 +709,7 @@
class { 'datadog_agent::reports':
api_key => $api_key,
datadog_site => $datadog_site,
manage_ruby => $manage_ruby,
puppet_gem_provider => $puppet_gem_provider,
dogapi_version => $datadog_agent::params::dogapi_version,
puppetmaster_user => $puppetmaster_user,
Expand Down
36 changes: 20 additions & 16 deletions manifests/reports.pp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
$api_key,
$puppetmaster_user,
$dogapi_version,
$manage_ruby = true,
$hostname_extraction_regex = undef,
$datadog_site = 'datadoghq.com',
$puppet_gem_provider = $datadog_agent::params::gem_provider,
Expand All @@ -29,20 +30,28 @@
} else {

include datadog_agent
$rubydev_package = $datadog_agent::params::rubydev_package

# check to make sure that you're not installing rubydev somewhere else
if ! defined(Package[$rubydev_package]) {
package {$rubydev_package:
ensure => installed,
before => Package['dogapi']
if $manage_ruby {
$rubydev_package = $datadog_agent::params::rubydev_package

# check to make sure that you're not installing rubydev somewhere else
if ! defined(Package[$rubydev_package]) {
package {$rubydev_package:
ensure => installed,
before => Package['dogapi']
}
}

if (! defined(Package['rubygems'])) {
# Ensure rubygems is installed
class { 'ruby':
rubygems_update => false
}
}
}

if (! defined(Package['rubygems'])) {
# Ensure rubygems is installed
class { 'ruby':
rubygems_update => false
package{ 'dogapi':
ensure => $dogapi_version,
provider => $puppet_gem_provider,
}
}

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

package{ 'dogapi':
ensure => $dogapi_version,
provider => $puppet_gem_provider,
}

}
}
37 changes: 37 additions & 0 deletions spec/classes/datadog_agent_reports_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -188,4 +188,41 @@
it { is_expected.to contain_file(conf_file).without_content(%r{hostname_extraction_regex:}) }
end
end

context 'disabled ruby-manage' do
let(:params) do
{
api_key: 'notanapikey',
hostname_extraction_regex: nil,
dogapi_version: 'installed',
puppetmaster_user: 'puppet',
puppet_gem_provider: 'gem',
manage_ruby: false,
}
end

describe 'datadog_agent class dogapi version override' do
let(:facts) do
{
operatingsystem: 'Debian',
osfamily: 'debian',
}
end

it { is_expected.not_to contain_class('ruby').with_rubygems_update(false) }
it { is_expected.not_to contain_class('ruby::params') }
it { is_expected.not_to contain_package('ruby').with_ensure('installed') }
it { is_expected.not_to contain_package('rubygems').with_ensure('installed') }

it { is_expected.not_to contain_package('ruby-dev') }

it { is_expected.not_to contain_package('dogapi') }

it do
is_expected.to contain_file('/etc/datadog-agent/datadog-reports.yaml')\
.with_owner('puppet')\
.with_group('root')
end
end
end
end