diff --git a/Gemfile b/Gemfile index 20674fbe..2c3a19d2 100644 --- a/Gemfile +++ b/Gemfile @@ -14,6 +14,7 @@ group :test do end group :development do + gem "fog-openstack", "0.1.25" if RUBY_VERSION < '2.2.0' gem "beaker-rspec" gem "beaker", '3.31.0' gem "guard-rake" diff --git a/manifests/init.pp b/manifests/init.pp index c403fea3..0c2bad64 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -285,6 +285,7 @@ $agent5_repo_uri = $datadog_agent::params::agent5_default_repo, $agent6_repo_uri = $datadog_agent::params::agent6_default_repo, $apt_release = $datadog_agent::params::apt_default_release, + Optional[String] $service_provider = undef, ) inherits datadog_agent::params { # Allow ports to be passed as integers or strings. @@ -399,6 +400,7 @@ class { 'datadog_agent::ubuntu::agent5': service_ensure => $service_ensure, service_enable => $service_enable, + service_provider => $service_provider, location => $agent5_repo_uri, release => $apt_release, skip_apt_key_trusting => $skip_apt_key_trusting, @@ -407,6 +409,7 @@ class { 'datadog_agent::ubuntu::agent6': service_ensure => $service_ensure, service_enable => $service_enable, + service_provider => $service_provider, location => $agent6_repo_uri, release => $apt_release, skip_apt_key_trusting => $skip_apt_key_trusting, @@ -416,17 +419,19 @@ 'RedHat','CentOS','Fedora','Amazon','Scientific' : { if $agent5_enable { class { 'datadog_agent::redhat::agent5': - baseurl => $agent5_repo_uri, - manage_repo => $manage_repo, - service_ensure => $service_ensure, - service_enable => $service_enable, + baseurl => $agent5_repo_uri, + manage_repo => $manage_repo, + service_ensure => $service_ensure, + service_enable => $service_enable, + service_provider => $service_provider, } } else { class { 'datadog_agent::redhat::agent6': - baseurl => $agent6_repo_uri, - manage_repo => $manage_repo, - service_ensure => $service_ensure, - service_enable => $service_enable, + baseurl => $agent6_repo_uri, + manage_repo => $manage_repo, + service_ensure => $service_ensure, + service_enable => $service_enable, + service_provider => $service_provider, } } } diff --git a/manifests/redhat/agent5.pp b/manifests/redhat/agent5.pp index 5e81479a..00498b67 100644 --- a/manifests/redhat/agent5.pp +++ b/manifests/redhat/agent5.pp @@ -21,6 +21,7 @@ String $agent_version = 'latest', String $service_ensure = 'running', Boolean $service_enable = true, + Optional[String] $service_provider = undef, ) inherits datadog_agent::params { validate_legacy('Boolean', 'validate_bool', $manage_repo) @@ -89,12 +90,23 @@ ensure => $agent_version, } - service { $datadog_agent::params::service_name: - ensure => $service_ensure, - enable => $service_enable, - hasstatus => false, - pattern => 'dd-agent', - require => Package[$datadog_agent::params::package_name], + if $service_provider { + service { $datadog_agent::params::service_name: + ensure => $service_ensure, + enable => $service_enable, + provider => $service_provider, + hasstatus => false, + pattern => 'dd-agent', + require => Package[$datadog_agent::params::package_name], + } + } else { + service { $datadog_agent::params::service_name: + ensure => $service_ensure, + enable => $service_enable, + hasstatus => false, + pattern => 'dd-agent', + require => Package[$datadog_agent::params::package_name], + } } } diff --git a/manifests/redhat/agent6.pp b/manifests/redhat/agent6.pp index fd2df917..0144efb6 100644 --- a/manifests/redhat/agent6.pp +++ b/manifests/redhat/agent6.pp @@ -10,6 +10,7 @@ String $agent_version = 'latest', String $service_ensure = 'running', Boolean $service_enable = true, + Optional[String] $service_provider = undef, ) inherits datadog_agent::params { validate_legacy('Boolean', 'validate_bool', $manage_repo) @@ -63,12 +64,23 @@ ensure => $agent_version, } - service { $datadog_agent::params::service_name: - ensure => $service_ensure, - enable => $service_enable, - hasstatus => false, - pattern => 'dd-agent', - require => Package[$datadog_agent::params::package_name], + if $service_provider { + service { $datadog_agent::params::service_name: + ensure => $service_ensure, + enable => $service_enable, + provider => $service_provider, + hasstatus => false, + pattern => 'dd-agent', + require => Package[$datadog_agent::params::package_name], + } + } else { + service { $datadog_agent::params::service_name: + ensure => $service_ensure, + enable => $service_enable, + hasstatus => false, + pattern => 'dd-agent', + require => Package[$datadog_agent::params::package_name], + } } } diff --git a/manifests/ubuntu/agent5.pp b/manifests/ubuntu/agent5.pp index 44bb1cf1..c51ac4d3 100644 --- a/manifests/ubuntu/agent5.pp +++ b/manifests/ubuntu/agent5.pp @@ -21,6 +21,7 @@ Boolean $skip_apt_key_trusting = false, String $service_ensure = 'running', Boolean $service_enable = true, + Optional[String] $service_provider = undef, ) inherits datadog_agent::params{ ensure_packages(['apt-transport-https']) @@ -79,11 +80,22 @@ Exec['apt_update']], } - service { $datadog_agent::params::service_name: - ensure => $service_ensure, - enable => $service_enable, - hasstatus => false, - pattern => 'dd-agent', - require => Package[$datadog_agent::params::package_name], + if $service_provider { + service { $datadog_agent::params::service_name: + ensure => $service_ensure, + enable => $service_enable, + provider => $service_provider, + hasstatus => false, + pattern => 'dd-agent', + require => Package[$datadog_agent::params::package_name], + } + } else { + service { $datadog_agent::params::service_name: + ensure => $service_ensure, + enable => $service_enable, + hasstatus => false, + pattern => 'dd-agent', + require => Package[$datadog_agent::params::package_name], + } } } diff --git a/manifests/ubuntu/agent6.pp b/manifests/ubuntu/agent6.pp index e41bba8f..4dbf3cde 100644 --- a/manifests/ubuntu/agent6.pp +++ b/manifests/ubuntu/agent6.pp @@ -12,6 +12,7 @@ $skip_apt_key_trusting = false, $service_ensure = 'running', $service_enable = true, + Optional[String] $service_provider = undef, ) inherits datadog_agent::params { ensure_packages(['apt-transport-https']) @@ -45,11 +46,22 @@ Exec['apt_update']], } - service { $datadog_agent::params::service_name: - ensure => $service_ensure, - enable => $service_enable, - hasstatus => false, - pattern => 'dd-agent', - require => Package['datadog-agent'], + if $service_provider { + service { $datadog_agent::params::service_name: + ensure => $service_ensure, + enable => $service_enable, + provider => $service_provider, + hasstatus => false, + pattern => 'dd-agent', + require => Package['datadog-agent'], + } + } else { + service { $datadog_agent::params::service_name: + ensure => $service_ensure, + enable => $service_enable, + hasstatus => false, + pattern => 'dd-agent', + require => Package['datadog-agent'], + } } } diff --git a/spec/classes/datadog_agent_redhat_spec.rb b/spec/classes/datadog_agent_redhat_spec.rb index 2ab5a632..45b11683 100644 --- a/spec/classes/datadog_agent_redhat_spec.rb +++ b/spec/classes/datadog_agent_redhat_spec.rb @@ -28,6 +28,21 @@ should_not contain_yumrepo('datadog6') end end + context 'overriding provider' do + let(:params) {{ + service_provider: 'upstart', + }} + it do + should contain_service('datadog-agent')\ + .that_requires('package[datadog-agent]') + end + it do + should contain_service('datadog-agent').with( + 'provider' => 'upstart', + 'ensure' => 'running', + ) + end + end # it should install the packages @@ -76,6 +91,21 @@ should_not contain_yumrepo('datadog6') end end + context 'overriding provider' do + let(:params) {{ + service_provider: 'upstart', + }} + it do + should contain_service('datadog-agent')\ + .that_requires('package[datadog-agent]') + end + it do + should contain_service('datadog-agent').with( + 'provider' => 'upstart', + 'ensure' => 'running', + ) + end + end # it should install the packages diff --git a/spec/classes/datadog_agent_spec.rb b/spec/classes/datadog_agent_spec.rb index 9f95ad99..f4fd7342 100644 --- a/spec/classes/datadog_agent_spec.rb +++ b/spec/classes/datadog_agent_spec.rb @@ -813,6 +813,22 @@ )} end + context 'with service provider override' do + let(:params) {{ + :service_provider => 'upstart', + }} + it do + should contain_service('datadog-agent')\ + .that_requires('package[datadog-agent]') + end + it do + should contain_service('datadog-agent').with( + 'provider' => 'upstart', + 'ensure' => 'running', + ) + end + end + end end @@ -899,7 +915,9 @@ )} it { should contain_file('/etc/datadog-agent/datadog.yaml').with( 'content' => /^logs_enabled: false\n/, - 'content' => /^\ \ container_collect_all: false\n/, + )} + it { should contain_file('/etc/datadog-agent/datadog.yaml').with( + 'content' => /^logs_config:\n\ \ container_collect_all: false\n/, )} end end @@ -1051,8 +1069,26 @@ }} it { should contain_file('/etc/datadog-agent/datadog.yaml').with( 'content' => /^logs_enabled: true\n/, - 'content' => /^\ \ container_collect_all: true\n/, )} + it { should contain_file('/etc/datadog-agent/datadog.yaml').with( + 'content' => /^logs_config:\n\ \ container_collect_all: true\n/, + )} + end + + context 'with service provider override' do + let(:params) {{ + :service_provider => 'upstart', + }} + it do + should contain_service('datadog-agent')\ + .that_requires('package[datadog-agent]') + end + it do + should contain_service('datadog-agent').with( + 'provider' => 'upstart', + 'ensure' => 'running', + ) + end end end diff --git a/spec/classes/datadog_agent_ubuntu_spec.rb b/spec/classes/datadog_agent_ubuntu_spec.rb index e365378d..a028dfb6 100644 --- a/spec/classes/datadog_agent_ubuntu_spec.rb +++ b/spec/classes/datadog_agent_ubuntu_spec.rb @@ -45,6 +45,22 @@ should contain_service('datadog-agent')\ .that_requires('package[datadog-agent]') end + + context 'overriding provider' do + let(:params) {{ + service_provider: 'upstart', + }} + it do + should contain_service('datadog-agent')\ + .that_requires('package[datadog-agent]') + end + it do + should contain_service('datadog-agent').with( + 'provider' => 'upstart', + 'ensure' => 'running', + ) + end + end end describe 'datadog_agent::ubuntu::agent6' do @@ -93,4 +109,20 @@ should contain_service('datadog-agent')\ .that_requires('package[datadog-agent]') end + + context 'overriding provider' do + let(:params) {{ + service_provider: 'upstart', + }} + it do + should contain_service('datadog-agent')\ + .that_requires('package[datadog-agent]') + end + it do + should contain_service('datadog-agent').with( + 'provider' => 'upstart', + 'ensure' => 'running', + ) + end + end end