Skip to content

Commit 9841316

Browse files
remicalixtetruthbk
authored andcommitted
[reports] make gem provider configurable at the datadog-agent class level. (DataDog#486)
* [reports] make gem provider configurable at the datadog-agent class level. * Add default value for gem provider in report class * [reports] adding spec test for alternative gem providers + fix * [docs] adding note regarding gem provider for dogapi
1 parent 1033df1 commit 9841316

6 files changed

Lines changed: 49 additions & 3 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,6 @@ Gemfile.lock
99
.ruby-version
1010

1111
tests/.vagrant
12+
13+
# mac stuff
14+
.DS_Store

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ Once the `datadog_agent` module is installed on your `puppetserver`/`puppetmaste
123123
- If you are on Puppet Enterprise or POSS (ie. >=3.7.0), there is a soft dependency for reporting on the `puppetserver_gem` module. Install with `puppet module install puppetlabs-puppetserver_gem` - installing manually with `gem` does *not* work.
124124
- You may install `dogapi-rb` with `gem` as the system-level Ruby is used.
125125
- The gem provider is configurable by setting it to `puppetserver_gem` (set by default on PE/POSS (>=3.7.0)) or `gem` if on older versions of Puppet.
126+
- For users running puppet in standalone/masterless mode you will need to set the `puppet_gem_provider` to `puppet_gem` (or `gem` depending on versions) to ensure the `dogapi-rb` is available.
126127
127128
3. Include any other integrations you want the agent to use, for example:
128129

manifests/init.pp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@
235235
$facts_to_tags = [],
236236
$puppet_run_reports = false,
237237
$puppetmaster_user = $settings::user,
238+
String $puppet_gem_provider = $datadog_agent::params::gem_provider,
238239
$non_local_traffic = false,
239240
$dogstreams = [],
240241
$log_level = 'info',
@@ -696,6 +697,7 @@
696697
class { 'datadog_agent::reports':
697698
api_key => $api_key,
698699
datadog_site => $datadog_site,
700+
puppet_gem_provider => $puppet_gem_provider,
699701
dogapi_version => $datadog_agent::params::dogapi_version,
700702
puppetmaster_user => $puppetmaster_user,
701703
hostname_extraction_regex => $hostname_extraction_regex,

manifests/params.pp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
$service_name = 'datadog-agent'
2323
$agent_version = 'latest'
2424
$dogapi_version = 'installed'
25+
$gem_provider = 'puppetserver_gem'
2526
$conf_dir_purge = false
2627
$apt_default_release = 'stable'
2728
$apm_default_enabled = false

manifests/reports.pp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
$dogapi_version,
2020
$hostname_extraction_regex = undef,
2121
$datadog_site = 'datadoghq.com',
22-
) {
22+
$puppet_gem_provider = $datadog_agent::params::gem_provider,
23+
) inherits datadog_agent::params {
2324

2425
include datadog_agent
25-
include datadog_agent::params
2626
$rubydev_package = $datadog_agent::params::rubydev_package
2727

2828
# check to make sure that you're not installing rubydev somewhere else
@@ -51,6 +51,6 @@
5151

5252
package{ 'dogapi':
5353
ensure => $dogapi_version,
54-
provider => 'puppetserver_gem',
54+
provider => $puppet_gem_provider,
5555
}
5656
}

spec/classes/datadog_agent_reports_spec.rb

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,45 @@
9999
end
100100
end
101101

102+
context 'specific gem provider' do
103+
let(:params) do
104+
{
105+
api_key: 'notanapikey',
106+
puppetmaster_user: 'puppet',
107+
dogapi_version: '1.2.2',
108+
puppet_gem_provider: 'gem',
109+
110+
}
111+
end
112+
let(:conf_file) { '/etc/datadog-agent/datadog-reports.yaml' }
113+
114+
describe "datadog_agent class puppet gem provider override" do
115+
let(:facts) do
116+
{
117+
operatingsystem: 'Debian',
118+
osfamily: 'debian'
119+
}
120+
end
121+
122+
it { should contain_class('ruby').with_rubygems_update(false) }
123+
it { should contain_class('ruby::params') }
124+
it { should contain_package('ruby').with_ensure('installed') }
125+
it { should contain_package('rubygems').with_ensure('installed') }
126+
127+
it do
128+
should contain_package('ruby-dev')\
129+
.with_ensure('installed')\
130+
.that_comes_before('Package[dogapi]')
131+
end
132+
133+
it do
134+
should contain_package('dogapi')\
135+
.with_ensure('1.2.2')
136+
.with_provider('gem')
137+
end
138+
end
139+
end
140+
102141
context 'EU site in report' do
103142
let(:params) do
104143
{

0 commit comments

Comments
 (0)