Skip to content

Commit f776182

Browse files
authored
Merge branch 'main' into patch-1
2 parents d6db5b1 + c3b49a0 commit f776182

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+4926
-3659
lines changed

.rubocop.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ Metrics/AbcSize:
108108
Enabled: false
109109
Metrics/BlockLength:
110110
Enabled: false
111+
Metrics/BlockNesting:
112+
Enabled: false
111113
Metrics/ClassLength:
112114
Enabled: false
113115
Metrics/CyclomaticComplexity:
@@ -136,3 +138,11 @@ Style/IfUnlessModifier:
136138
Enabled: false
137139
Style/SymbolProc:
138140
Enabled: false
141+
Style/IdenticalConditionalBranches:
142+
Enabled: false
143+
Style/IfInsideElse:
144+
Enabled: false
145+
Lint/UnderscorePrefixedVariableName:
146+
Enabled: false
147+
Lint/UselessAssignment:
148+
Enabled: false

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ jobs:
5555
stage: spec
5656
branches:
5757
only:
58-
- master
58+
- main
5959
- /^v\d/
6060
- release
6161
notifications:
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
require 'open3'
2+
require 'json'
3+
4+
module Puppet::Parser::Functions
5+
# Checks if at least one parammeter is changed
6+
newfunction(:docker_params_changed, type: :rvalue) do |args|
7+
opts = args[0] || {}
8+
return_value = []
9+
10+
if opts['sanitised_title'] && opts['osfamily']
11+
stdout, stderr, status = Open3.capture3("docker inspect #{opts['sanitised_title']}")
12+
if stderr.to_s == '' && status.to_s.include?('exit 0')
13+
param_changed = false
14+
inspect_hash = JSON.parse(stdout)[0]
15+
16+
# check if the image was changed
17+
param_changed = true if opts['image'] && opts['image'] != inspect_hash['Config']['Image']
18+
19+
# check if something on volumes or mounts was changed(a new volume/mount was added or removed)
20+
param_changed = true if opts['volumes'].is_a?(String) && opts['volumes'].include?(':') && opts['volumes'] != inspect_hash['Mounts'].to_a[0] && opts['osfamily'] != 'windows'
21+
param_changed = true if opts['volumes'].is_a?(String) && !opts['volumes'].include?(':') && opts['volumes'] != inspect_hash['Config']['Volumes'].to_a[0] && opts['osfamily'] != 'windows'
22+
param_changed = true if opts['volumes'].is_a?(String) && opts['volumes'].scan(%r{(?=:)}).count == 2 && opts['volumes'] != inspect_hash['Mounts'].to_a[0] && opts['osfamily'] == 'windows'
23+
param_changed = if opts['volumes'].is_a?(String) && opts['volumes'].scan(%r{(?=:)}).count == 1 && opts['volumes'] != inspect_hash['Config']['Volumes'].to_a[0] && opts['osfamily'] == 'windows'
24+
true
25+
else
26+
param_changed
27+
end
28+
29+
pp_paths = opts['volumes'].reject { |item| item.include?(':') } if opts['volumes'].is_a?(Array) && opts['osfamily'] != 'windows'
30+
pp_mounts = opts['volumes'].select { |item| item.include?(':') } if opts['volumes'].is_a?(Array) && opts['osfamily'] != 'windows'
31+
pp_paths = opts['volumes'].select { |item| item.scan(%r{(?=:)}).count == 1 } if opts['volumes'].is_a?(Array) && opts['osfamily'] == 'windows'
32+
pp_mounts = opts['volumes'].select { |item| item.scan(%r{(?=:)}).count == 2 } if opts['volumes'].is_a?(Array) && opts['osfamily'] == 'windows'
33+
34+
inspect_paths = if inspect_hash['Config']['Volumes']
35+
inspect_hash['Config']['Volumes'].keys
36+
else
37+
[]
38+
end
39+
param_changed = true if pp_paths != inspect_paths
40+
41+
names = inspect_hash['Mounts'].map { |item| item.values[1] } if inspect_hash['Mounts']
42+
pp_names = pp_mounts.map { |item| item.split(':')[0] } if pp_mounts
43+
names = names.select { |item| pp_names.include?(item) } if names && pp_names
44+
destinations = inspect_hash['Mounts'].map { |item| item.values[3] } if inspect_hash['Mounts']
45+
pp_destinations = pp_mounts.map { |item| item.split(':')[1] } if pp_mounts && opts['osfamily'] != 'windows'
46+
pp_destinations = pp_mounts.map { |item| "#{item.split(':')[1].downcase}:#{item.split(':')[2]}" } if pp_mounts && opts['osfamily'] == 'windows'
47+
destinations = destinations.select { |item| pp_destinations.include?(item) } if destinations && pp_destinations
48+
49+
param_changed = true if pp_names != names
50+
param_changed = true if pp_destinations != destinations
51+
param_changed = true if pp_mounts != [] && inspect_hash['Mounts'].nil?
52+
53+
# check if something on ports was changed(some ports were added or removed)
54+
55+
ports = inspect_hash['HostConfig']['PortBindings'].keys
56+
ports = ports.map { |item| item.split('/')[0] }
57+
pp_ports = opts['ports'].sort if opts['ports'].is_a?(Array)
58+
pp_ports = [opts['ports']] if opts['ports'].is_a?(String)
59+
60+
param_changed = true if pp_ports && pp_ports != ports
61+
62+
return_value << if param_changed
63+
'PARAM_CHANGED'
64+
else
65+
'NO_CHANGE'
66+
end
67+
else
68+
return_value << 'CONTAINER_NOT_FOUND'
69+
end
70+
else
71+
return_value << 'ARG_REQUIRED_MISSING'
72+
end
73+
74+
return_value.flatten.join(' ')
75+
end
76+
end

lib/puppet/parser/functions/docker_run_flags.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ module Puppet::Parser::Functions
2323
end
2424

2525
if opts['net'].is_a? String
26-
flags << "--net #{opts['net']}"
26+
flags << "--net #{opts['net'].shellescape}"
2727
end
2828

2929
if opts['memory_limit']

lib/puppet/parser/functions/docker_service_flags.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ module Puppet::Parser::Functions
5959
end
6060

6161
if opts['user'] && opts['user'].to_s != 'undef'
62-
flags << "--user '#{opts['publish']}'"
62+
flags << "--user '#{opts['user']}'"
6363
end
6464

6565
if opts['workdir'] && opts['workdir'].to_s != 'undef'

manifests/config.pp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22
#
33
class docker::config {
44
if $facts['os']['family'] != 'windows' {
5-
docker::system_user { $docker::docker_users: }
5+
$docker::docker_users.each |$user| {
6+
docker::system_user { $user: }
7+
}
68
} else {
7-
docker::windows_account { $docker::docker_users: }
9+
$docker::docker_users.each |$user| {
10+
docker::windows_account { $user: }
11+
}
812
}
913
}

manifests/init.pp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,7 @@
578578
$package_repos = $docker_ce_channel
579579
$release = $docker_ce_release
580580
}
581-
'Redhat' : {
581+
'RedHat' : {
582582
$package_location = $docker_ce_source_location
583583
$package_key_source = $docker_ce_key_source
584584
$package_key_check_source = true
@@ -598,25 +598,26 @@
598598
}
599599
} else {
600600
case $facts['os']['family'] {
601-
'Debian' : {
601+
'Debian': {
602602
$package_location = $docker_package_location
603603
$package_key_source = $docker_package_key_source
604604
$package_key_check_source = $docker_package_key_check_source
605605
$package_key = $docker_package_key_id
606606
$package_repos = 'main'
607607
$release = $docker_package_release
608608
}
609-
'Redhat' : {
609+
'RedHat': {
610610
$package_location = $docker_package_location
611611
$package_key_source = $docker_package_key_source
612612
$package_key_check_source = $docker_package_key_check_source
613613
}
614-
default : {
614+
default: {
615615
$package_location = $docker_package_location
616616
$package_key_source = $docker_package_key_source
617617
$package_key_check_source = $docker_package_key_check_source
618618
}
619619
}
620+
620621
$docker_start_command = $docker_engine_start_command
621622
$docker_package_name = $docker_engine_package_name
622623
}

manifests/params.pp

Lines changed: 36 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -86,25 +86,24 @@
8686
$os_lc = downcase($facts['os']['name'])
8787
$docker_msft_provider_version = undef
8888
$nuget_package_provider_version = undef
89+
$docker_command = 'docker'
8990

9091
if ($facts['os']['family'] == 'windows') {
92+
$compose_install_path = "${::docker_program_files_path}/Docker"
93+
$compose_version = '1.21.2'
9194
$docker_ee_package_name = 'Docker'
95+
$machine_install_path = "${::docker_program_files_path}/Docker"
9296
$tls_cacert = "${::docker_program_data_path}/docker/certs.d/ca.pem"
9397
$tls_cert = "${::docker_program_data_path}/docker/certs.d/server-cert.pem"
9498
$tls_key = "${::docker_program_data_path}/docker/certs.d/server-key.pem"
95-
$compose_version = '1.21.2'
96-
$compose_install_path = "${::docker_program_files_path}/Docker"
97-
$machine_install_path = "${::docker_program_files_path}/Docker"
98-
$docker_command = 'docker'
9999
} else {
100+
$compose_install_path = '/usr/local/bin'
101+
$compose_version = '1.21.2'
100102
$docker_ee_package_name = 'docker-ee'
103+
$machine_install_path = '/usr/local/bin'
101104
$tls_cacert = '/etc/docker/tls/ca.pem'
102105
$tls_cert = '/etc/docker/tls/cert.pem'
103106
$tls_key = '/etc/docker/tls/key.pem'
104-
$compose_version = '1.21.2'
105-
$compose_install_path = '/usr/local/bin'
106-
$machine_install_path = '/usr/local/bin'
107-
$docker_command = 'docker'
108107
}
109108

110109
case $facts['os']['family'] {
@@ -114,16 +113,15 @@
114113
$package_release = "ubuntu-${facts['os']['distro']['codename']}"
115114

116115
if (versioncmp($facts['os']['release']['full'], '15.04') >= 0) {
117-
$service_provider = 'systemd'
118-
$storage_config = '/etc/default/docker-storage'
116+
$service_after_override = undef
119117
$service_config_template = 'docker/etc/sysconfig/docker.systemd.erb'
118+
$service_hasrestart = true
119+
$service_hasstatus = true
120120
$service_overrides_template = 'docker/etc/systemd/system/docker.service.d/service-overrides-debian.conf.erb'
121-
$socket_overrides_template = 'docker/etc/systemd/system/docker.socket.d/socket-overrides.conf.erb'
121+
$service_provider = 'systemd'
122122
$socket_override = false
123-
$service_after_override = undef
124-
$service_hasstatus = true
125-
$service_hasrestart = true
126-
123+
$socket_overrides_template = 'docker/etc/systemd/system/docker.socket.d/socket-overrides.conf.erb'
124+
$storage_config = '/etc/default/docker-storage'
127125
include docker::systemd_reload
128126
} else {
129127
$service_config_template = 'docker/etc/default/docker.erb'
@@ -153,15 +151,15 @@
153151
}
154152
}
155153

156-
$service_name = $service_name_default
154+
$apt_source_pin_level = 500
157155
$docker_group = $docker_group_default
158-
$socket_group = $socket_group_default
159-
$use_upstream_package_source = true
160156
$pin_upstream_package_source = true
161-
$apt_source_pin_level = 500
162157
$repo_opt = undef
163158
$service_config = undef
159+
$service_name = $service_name_default
160+
$socket_group = $socket_group_default
164161
$storage_setup_file = undef
162+
$use_upstream_package_source = true
165163

166164
$package_ce_source_location = "https://download.docker.com/linux/${os_lc}"
167165
$package_ce_key_source = "https://download.docker.com/linux/${os_lc}/gpg"
@@ -185,39 +183,38 @@
185183
}
186184
}
187185
'RedHat' : {
186+
$service_after_override = undef
188187
$service_config = '/etc/sysconfig/docker'
189-
$storage_config = '/etc/sysconfig/docker-storage'
190-
$storage_setup_file = '/etc/sysconfig/docker-storage-setup'
191-
$service_hasstatus = true
192-
$service_hasrestart = true
193-
194-
$service_provider = 'systemd'
195188
$service_config_template = 'docker/etc/sysconfig/docker.systemd.erb'
189+
$service_hasrestart = true
190+
$service_hasstatus = true
196191
$service_overrides_template = 'docker/etc/systemd/system/docker.service.d/service-overrides-rhel.conf.erb'
197-
$socket_overrides_template = 'docker/etc/systemd/system/docker.socket.d/socket-overrides.conf.erb'
192+
$service_provider = 'systemd'
198193
$socket_override = false
199-
$service_after_override = undef
194+
$socket_overrides_template = 'docker/etc/systemd/system/docker.socket.d/socket-overrides.conf.erb'
195+
$storage_config = '/etc/sysconfig/docker-storage'
196+
$storage_setup_file = '/etc/sysconfig/docker-storage-setup'
200197
$use_upstream_package_source = true
201198

202-
$package_ce_source_location = "https://download.docker.com/linux/centos/${facts['os']['release']['major']}/${facts['os']['architecture']}/${docker_ce_channel}"
203-
$package_ce_key_source = 'https://download.docker.com/linux/centos/gpg'
199+
$apt_source_pin_level = undef
200+
$detach_service_in_init = false
204201
$package_ce_key_id = undef
202+
$package_ce_key_source = 'https://download.docker.com/linux/centos/gpg'
205203
$package_ce_release = undef
206-
$package_key_id = undef
207-
$package_release = undef
208-
$package_source_location = "https://yum.dockerproject.org/repo/main/centos/${facts['os']['release']['major']}"
209-
$package_key_source = 'https://yum.dockerproject.org/gpg'
210-
$package_key_check_source = true
211-
$package_ee_source_location = $docker_ee_source_location
212-
$package_ee_key_source = $docker_ee_key_source
204+
$package_ce_source_location = "https://download.docker.com/linux/centos/${facts['os']['release']['major']}/${facts['os']['architecture']}/${docker_ce_channel}"
213205
$package_ee_key_id = $docker_ee_key_id
206+
$package_ee_key_source = $docker_ee_key_source
207+
$package_ee_package_name = $docker_ee_package_name
214208
$package_ee_release = undef
215209
$package_ee_repos = $docker_ee_repos
216-
$package_ee_package_name = $docker_ee_package_name
210+
$package_ee_source_location = $docker_ee_source_location
211+
$package_key_check_source = true
212+
$package_key_id = undef
213+
$package_key_source = 'https://yum.dockerproject.org/gpg'
214+
$package_release = undef
215+
$package_source_location = "https://yum.dockerproject.org/repo/main/centos/${facts['os']['release']['major']}"
217216
$pin_upstream_package_source = undef
218-
$apt_source_pin_level = undef
219217
$service_name = $service_name_default
220-
$detach_service_in_init = false
221218

222219
if $use_upstream_package_source {
223220
$docker_group = $docker_group_default

manifests/registry.pp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,15 @@
5151
$docker_command = $docker::params::docker_command
5252

5353
if $facts['os']['family'] == 'windows' {
54-
$exec_environment = ["PATH=${::docker_program_files_path}/Docker/"]
54+
$exec_environment = [ "PATH=${::docker_program_files_path}/Docker/", ]
5555
$exec_timeout = 3000
56-
$exec_path = ["${::docker_program_files_path}/Docker/"]
56+
$exec_path = [ "${::docker_program_files_path}/Docker/", ]
5757
$exec_provider = 'powershell'
5858
$password_env = '$env:password'
5959
$exec_user = undef
6060
} else {
6161
$exec_environment = []
62-
$exec_path = ['/bin', '/usr/bin']
62+
$exec_path = [ '/bin', '/usr/bin', ]
6363
$exec_timeout = 0
6464
$exec_provider = undef
6565
$password_env = "\${password}"
@@ -80,14 +80,14 @@
8080
$auth_cmd = "${docker_command} login -u '${username}' -p \"${password_env}\" -e '${email}' ${server}"
8181
$auth_environment = "password=${password}"
8282
} elsif $username != undef and $password != undef {
83-
$auth_cmd = "${docker_command} login -u '${username}' -p \"${password_env}\" ${server}"
83+
$auth_cmd = "${docker_command} login -u '${username}' -p \"${password_env}\" ${server}"
8484
$auth_environment = "password=${password}"
8585
} else {
86-
$auth_cmd = "${docker_command} login ${server}"
86+
$auth_cmd = "${docker_command} login ${server}"
8787
$auth_environment = ''
8888
}
8989
} else {
90-
$auth_cmd = "${docker_command} logout ${server}"
90+
$auth_cmd = "${docker_command} logout ${server}"
9191
$auth_environment = ''
9292
}
9393

0 commit comments

Comments
 (0)