diff --git a/README.md b/README.md index 3a476ed1..9d9b42dd 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,7 @@ datadog_agent::install_integration { "mongo-1.9": ensure => present, integration_name => 'datadog-mongo', version => '1.9.0', + third_party => false, } ``` @@ -115,6 +116,8 @@ datadog_agent::install_integration { "mongo-1.9": - `present` (default) - `absent` (removes a previously pinned version of an integration) +To install a third-party integration set the `third_party` parameter to `true`. + ### Reporting Ensure the [dogapi][3] gem is available on your system. diff --git a/manifests/install_integration.pp b/manifests/install_integration.pp index 24e0aa7f..d6a9e421 100644 --- a/manifests/install_integration.pp +++ b/manifests/install_integration.pp @@ -2,13 +2,21 @@ Enum['present', 'absent'] $ensure = 'present', String $integration_name = undef, String $version = undef, + Boolean $third_party = false, ){ include datadog_agent if $ensure == 'present' { + + if $third_party { + $install_cmd = 'install --third-party' + } else { + $install_cmd = 'install' + } + exec { "install ${integration_name}==${version}": - command => "${datadog_agent::params::agent_binary} integration install ${integration_name}==${version}", + command => "${datadog_agent::params::agent_binary} integration ${install_cmd} ${integration_name}==${version}", user => $datadog_agent::dd_user, unless => "${datadog_agent::params::agent_binary} integration freeze | grep ${integration_name}==${version}", require => Package[$datadog_agent::params::package_name], diff --git a/spec/defines/datadog_agent__install_integration_spec.rb b/spec/defines/datadog_agent__install_integration_spec.rb index 4227696e..271c6b99 100644 --- a/spec/defines/datadog_agent__install_integration_spec.rb +++ b/spec/defines/datadog_agent__install_integration_spec.rb @@ -17,7 +17,7 @@ let(:agent_binary) { '/opt/datadog-agent/bin/agent/agent' } end - describe 'installing an integration' do + describe 'installing a core integration' do let(:pre_condition) { "class {'::datadog_agent': }" } let(:title) { 'test' } let(:params) do @@ -32,6 +32,22 @@ it { is_expected.to contain_exec('install datadog-mongo==1.9.0').with_command("#{agent_binary} integration install datadog-mongo==1.9.0") } end + describe 'installing a third-party integration' do + let(:pre_condition) { "class {'::datadog_agent': }" } + let(:title) { 'test' } + let(:params) do + { + integration_name: 'datadog-aqua', + version: '1.0.0', + third_party: true, + } + end + + it { is_expected.to compile } + + it { is_expected.to contain_exec('install datadog-aqua==1.0.0').with_command("#{agent_binary} integration install --third-party datadog-aqua==1.0.0") } + end + describe 'removing an integration' do let(:pre_condition) { "class {'::datadog_agent': }" } let(:title) { 'test' }