From 24e9ffc0b57f5af963a2c806502a14f8e69da8ab Mon Sep 17 00:00:00 2001 From: Jaime Fullaondo Date: Thu, 5 Jul 2018 12:27:01 +0200 Subject: [PATCH 1/3] [agents] allow provider service override --- manifests/redhat/agent5.pp | 24 ++++++++++++----- manifests/redhat/agent6.pp | 24 ++++++++++++----- manifests/ubuntu/agent5.pp | 24 ++++++++++++----- manifests/ubuntu/agent6.pp | 24 ++++++++++++----- spec/classes/datadog_agent_redhat_spec.rb | 30 +++++++++++++++++++++ spec/classes/datadog_agent_ubuntu_spec.rb | 32 +++++++++++++++++++++++ 6 files changed, 134 insertions(+), 24 deletions(-) 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_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 From 6fc0f258df8030f874b16884eb8439ee76eafda2 Mon Sep 17 00:00:00 2001 From: Jaime Fullaondo Date: Thu, 5 Jul 2018 12:46:11 +0200 Subject: [PATCH 2/3] [ci] pinning fog-openstack for older rubies --- Gemfile | 1 + 1 file changed, 1 insertion(+) 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" From 9db03e8b8d043806eb8a47343084ace60b0c91c8 Mon Sep 17 00:00:00 2001 From: Jaime Fullaondo Date: Fri, 6 Jul 2018 11:59:29 +0200 Subject: [PATCH 3/3] [main] adding service provider option to main manifest + test cleanup --- manifests/init.pp | 21 ++++++++++------ spec/classes/datadog_agent_spec.rb | 40 ++++++++++++++++++++++++++++-- 2 files changed, 51 insertions(+), 10 deletions(-) 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/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