Skip to content

Commit ee59a16

Browse files
authored
[agents] allow provider service override (DataDog#444)
* [agents] allow provider service override * [ci] pinning fog-openstack for older rubies * [main] adding service provider option to main manifest + test cleanup
1 parent 43bae1c commit ee59a16

9 files changed

Lines changed: 186 additions & 34 deletions

File tree

Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ group :test do
1414
end
1515

1616
group :development do
17+
gem "fog-openstack", "0.1.25" if RUBY_VERSION < '2.2.0'
1718
gem "beaker-rspec"
1819
gem "beaker", '3.31.0'
1920
gem "guard-rake"

manifests/init.pp

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,7 @@
285285
$agent5_repo_uri = $datadog_agent::params::agent5_default_repo,
286286
$agent6_repo_uri = $datadog_agent::params::agent6_default_repo,
287287
$apt_release = $datadog_agent::params::apt_default_release,
288+
Optional[String] $service_provider = undef,
288289
) inherits datadog_agent::params {
289290

290291
# Allow ports to be passed as integers or strings.
@@ -399,6 +400,7 @@
399400
class { 'datadog_agent::ubuntu::agent5':
400401
service_ensure => $service_ensure,
401402
service_enable => $service_enable,
403+
service_provider => $service_provider,
402404
location => $agent5_repo_uri,
403405
release => $apt_release,
404406
skip_apt_key_trusting => $skip_apt_key_trusting,
@@ -407,6 +409,7 @@
407409
class { 'datadog_agent::ubuntu::agent6':
408410
service_ensure => $service_ensure,
409411
service_enable => $service_enable,
412+
service_provider => $service_provider,
410413
location => $agent6_repo_uri,
411414
release => $apt_release,
412415
skip_apt_key_trusting => $skip_apt_key_trusting,
@@ -416,17 +419,19 @@
416419
'RedHat','CentOS','Fedora','Amazon','Scientific' : {
417420
if $agent5_enable {
418421
class { 'datadog_agent::redhat::agent5':
419-
baseurl => $agent5_repo_uri,
420-
manage_repo => $manage_repo,
421-
service_ensure => $service_ensure,
422-
service_enable => $service_enable,
422+
baseurl => $agent5_repo_uri,
423+
manage_repo => $manage_repo,
424+
service_ensure => $service_ensure,
425+
service_enable => $service_enable,
426+
service_provider => $service_provider,
423427
}
424428
} else {
425429
class { 'datadog_agent::redhat::agent6':
426-
baseurl => $agent6_repo_uri,
427-
manage_repo => $manage_repo,
428-
service_ensure => $service_ensure,
429-
service_enable => $service_enable,
430+
baseurl => $agent6_repo_uri,
431+
manage_repo => $manage_repo,
432+
service_ensure => $service_ensure,
433+
service_enable => $service_enable,
434+
service_provider => $service_provider,
430435
}
431436
}
432437
}

manifests/redhat/agent5.pp

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
String $agent_version = 'latest',
2222
String $service_ensure = 'running',
2323
Boolean $service_enable = true,
24+
Optional[String] $service_provider = undef,
2425
) inherits datadog_agent::params {
2526

2627
validate_legacy('Boolean', 'validate_bool', $manage_repo)
@@ -89,12 +90,23 @@
8990
ensure => $agent_version,
9091
}
9192

92-
service { $datadog_agent::params::service_name:
93-
ensure => $service_ensure,
94-
enable => $service_enable,
95-
hasstatus => false,
96-
pattern => 'dd-agent',
97-
require => Package[$datadog_agent::params::package_name],
93+
if $service_provider {
94+
service { $datadog_agent::params::service_name:
95+
ensure => $service_ensure,
96+
enable => $service_enable,
97+
provider => $service_provider,
98+
hasstatus => false,
99+
pattern => 'dd-agent',
100+
require => Package[$datadog_agent::params::package_name],
101+
}
102+
} else {
103+
service { $datadog_agent::params::service_name:
104+
ensure => $service_ensure,
105+
enable => $service_enable,
106+
hasstatus => false,
107+
pattern => 'dd-agent',
108+
require => Package[$datadog_agent::params::package_name],
109+
}
98110
}
99111

100112
}

manifests/redhat/agent6.pp

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
String $agent_version = 'latest',
1111
String $service_ensure = 'running',
1212
Boolean $service_enable = true,
13+
Optional[String] $service_provider = undef,
1314
) inherits datadog_agent::params {
1415

1516
validate_legacy('Boolean', 'validate_bool', $manage_repo)
@@ -63,12 +64,23 @@
6364
ensure => $agent_version,
6465
}
6566

66-
service { $datadog_agent::params::service_name:
67-
ensure => $service_ensure,
68-
enable => $service_enable,
69-
hasstatus => false,
70-
pattern => 'dd-agent',
71-
require => Package[$datadog_agent::params::package_name],
67+
if $service_provider {
68+
service { $datadog_agent::params::service_name:
69+
ensure => $service_ensure,
70+
enable => $service_enable,
71+
provider => $service_provider,
72+
hasstatus => false,
73+
pattern => 'dd-agent',
74+
require => Package[$datadog_agent::params::package_name],
75+
}
76+
} else {
77+
service { $datadog_agent::params::service_name:
78+
ensure => $service_ensure,
79+
enable => $service_enable,
80+
hasstatus => false,
81+
pattern => 'dd-agent',
82+
require => Package[$datadog_agent::params::package_name],
83+
}
7284
}
7385

7486
}

manifests/ubuntu/agent5.pp

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
Boolean $skip_apt_key_trusting = false,
2222
String $service_ensure = 'running',
2323
Boolean $service_enable = true,
24+
Optional[String] $service_provider = undef,
2425
) inherits datadog_agent::params{
2526

2627
ensure_packages(['apt-transport-https'])
@@ -79,11 +80,22 @@
7980
Exec['apt_update']],
8081
}
8182

82-
service { $datadog_agent::params::service_name:
83-
ensure => $service_ensure,
84-
enable => $service_enable,
85-
hasstatus => false,
86-
pattern => 'dd-agent',
87-
require => Package[$datadog_agent::params::package_name],
83+
if $service_provider {
84+
service { $datadog_agent::params::service_name:
85+
ensure => $service_ensure,
86+
enable => $service_enable,
87+
provider => $service_provider,
88+
hasstatus => false,
89+
pattern => 'dd-agent',
90+
require => Package[$datadog_agent::params::package_name],
91+
}
92+
} else {
93+
service { $datadog_agent::params::service_name:
94+
ensure => $service_ensure,
95+
enable => $service_enable,
96+
hasstatus => false,
97+
pattern => 'dd-agent',
98+
require => Package[$datadog_agent::params::package_name],
99+
}
88100
}
89101
}

manifests/ubuntu/agent6.pp

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
$skip_apt_key_trusting = false,
1313
$service_ensure = 'running',
1414
$service_enable = true,
15+
Optional[String] $service_provider = undef,
1516
) inherits datadog_agent::params {
1617

1718
ensure_packages(['apt-transport-https'])
@@ -45,11 +46,22 @@
4546
Exec['apt_update']],
4647
}
4748

48-
service { $datadog_agent::params::service_name:
49-
ensure => $service_ensure,
50-
enable => $service_enable,
51-
hasstatus => false,
52-
pattern => 'dd-agent',
53-
require => Package['datadog-agent'],
49+
if $service_provider {
50+
service { $datadog_agent::params::service_name:
51+
ensure => $service_ensure,
52+
enable => $service_enable,
53+
provider => $service_provider,
54+
hasstatus => false,
55+
pattern => 'dd-agent',
56+
require => Package['datadog-agent'],
57+
}
58+
} else {
59+
service { $datadog_agent::params::service_name:
60+
ensure => $service_ensure,
61+
enable => $service_enable,
62+
hasstatus => false,
63+
pattern => 'dd-agent',
64+
require => Package['datadog-agent'],
65+
}
5466
}
5567
}

spec/classes/datadog_agent_redhat_spec.rb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,21 @@
2828
should_not contain_yumrepo('datadog6')
2929
end
3030
end
31+
context 'overriding provider' do
32+
let(:params) {{
33+
service_provider: 'upstart',
34+
}}
35+
it do
36+
should contain_service('datadog-agent')\
37+
.that_requires('package[datadog-agent]')
38+
end
39+
it do
40+
should contain_service('datadog-agent').with(
41+
'provider' => 'upstart',
42+
'ensure' => 'running',
43+
)
44+
end
45+
end
3146

3247

3348
# it should install the packages
@@ -76,6 +91,21 @@
7691
should_not contain_yumrepo('datadog6')
7792
end
7893
end
94+
context 'overriding provider' do
95+
let(:params) {{
96+
service_provider: 'upstart',
97+
}}
98+
it do
99+
should contain_service('datadog-agent')\
100+
.that_requires('package[datadog-agent]')
101+
end
102+
it do
103+
should contain_service('datadog-agent').with(
104+
'provider' => 'upstart',
105+
'ensure' => 'running',
106+
)
107+
end
108+
end
79109

80110

81111
# it should install the packages

spec/classes/datadog_agent_spec.rb

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,22 @@
813813
)}
814814
end
815815

816+
context 'with service provider override' do
817+
let(:params) {{
818+
:service_provider => 'upstart',
819+
}}
820+
it do
821+
should contain_service('datadog-agent')\
822+
.that_requires('package[datadog-agent]')
823+
end
824+
it do
825+
should contain_service('datadog-agent').with(
826+
'provider' => 'upstart',
827+
'ensure' => 'running',
828+
)
829+
end
830+
end
831+
816832
end
817833
end
818834

@@ -899,7 +915,9 @@
899915
)}
900916
it { should contain_file('/etc/datadog-agent/datadog.yaml').with(
901917
'content' => /^logs_enabled: false\n/,
902-
'content' => /^\ \ container_collect_all: false\n/,
918+
)}
919+
it { should contain_file('/etc/datadog-agent/datadog.yaml').with(
920+
'content' => /^logs_config:\n\ \ container_collect_all: false\n/,
903921
)}
904922
end
905923
end
@@ -1051,8 +1069,26 @@
10511069
}}
10521070
it { should contain_file('/etc/datadog-agent/datadog.yaml').with(
10531071
'content' => /^logs_enabled: true\n/,
1054-
'content' => /^\ \ container_collect_all: true\n/,
10551072
)}
1073+
it { should contain_file('/etc/datadog-agent/datadog.yaml').with(
1074+
'content' => /^logs_config:\n\ \ container_collect_all: true\n/,
1075+
)}
1076+
end
1077+
1078+
context 'with service provider override' do
1079+
let(:params) {{
1080+
:service_provider => 'upstart',
1081+
}}
1082+
it do
1083+
should contain_service('datadog-agent')\
1084+
.that_requires('package[datadog-agent]')
1085+
end
1086+
it do
1087+
should contain_service('datadog-agent').with(
1088+
'provider' => 'upstart',
1089+
'ensure' => 'running',
1090+
)
1091+
end
10561092
end
10571093

10581094
end

spec/classes/datadog_agent_ubuntu_spec.rb

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,22 @@
4545
should contain_service('datadog-agent')\
4646
.that_requires('package[datadog-agent]')
4747
end
48+
49+
context 'overriding provider' do
50+
let(:params) {{
51+
service_provider: 'upstart',
52+
}}
53+
it do
54+
should contain_service('datadog-agent')\
55+
.that_requires('package[datadog-agent]')
56+
end
57+
it do
58+
should contain_service('datadog-agent').with(
59+
'provider' => 'upstart',
60+
'ensure' => 'running',
61+
)
62+
end
63+
end
4864
end
4965

5066
describe 'datadog_agent::ubuntu::agent6' do
@@ -93,4 +109,20 @@
93109
should contain_service('datadog-agent')\
94110
.that_requires('package[datadog-agent]')
95111
end
112+
113+
context 'overriding provider' do
114+
let(:params) {{
115+
service_provider: 'upstart',
116+
}}
117+
it do
118+
should contain_service('datadog-agent')\
119+
.that_requires('package[datadog-agent]')
120+
end
121+
it do
122+
should contain_service('datadog-agent').with(
123+
'provider' => 'upstart',
124+
'ensure' => 'running',
125+
)
126+
end
127+
end
96128
end

0 commit comments

Comments
 (0)