Skip to content

Commit

Permalink
removes packages that can still run docker after docker-ce is removed. (
Browse files Browse the repository at this point in the history
#379)

* removes leftover packages if present

* paramatise packages to remove when uninstalling
  • Loading branch information
davejrt authored and florindragos committed Nov 28, 2018
1 parent 2d3f4d6 commit 10bdd1e
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 3 deletions.
6 changes: 6 additions & 0 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@
# An array of additional packages that need to be installed to support
# docker. Defaults change depending on the operating system.
#
# [*dependent_packages*]
# An array of packages installed by the docker-ce package v 18.09 and later.
# Used when uninstalling to ensure containers cannot be run on the system.
# Defaults change depending on the operating system.
#
# [*tcp_bind*]
# The tcp socket to bind to in the format
# tcp://127.0.0.1:4243
Expand Down Expand Up @@ -386,6 +391,7 @@
Optional[String] $version = $docker::params::version,
String $ensure = $docker::params::ensure,
Variant[Array[String], Hash] $prerequired_packages = $docker::params::prerequired_packages,
Array $dependent_packages = $docker::params::dependent_packages,
String $docker_ce_start_command = $docker::params::docker_ce_start_command,
Optional[String] $docker_ce_package_name = $docker::params::docker_ce_package_name,
Optional[String] $docker_ce_source_location = $docker::params::package_ce_source_location,
Expand Down
9 changes: 8 additions & 1 deletion manifests/install.pp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@
$nuget_package_provider_version = $docker::nuget_package_provider_version,
$docker_msft_provider_version = $docker::docker_msft_provider_version,
$docker_ee_package_name = $docker::docker_ee_package_name,
$docker_download_url = $docker::package_location
$docker_download_url = $docker::package_location,
$dependent_packages = $docker::dependent_packages,

) {
$docker_start_command = $docker::docker_start_command
if $::osfamily {
Expand Down Expand Up @@ -88,6 +90,11 @@
ensure => $ensure,
name => $docker::docker_package_name,
}))
if $ensure == 'absent' {
ensure_resource('package', $dependent_packages, {
ensure => $ensure,
})
}
} else {
if $ensure == 'absent' {
exec { 'remove-docker-package':
Expand Down
2 changes: 2 additions & 0 deletions manifests/params.pp
Original file line number Diff line number Diff line change
Expand Up @@ -305,4 +305,6 @@
'RedHat' => ['device-mapper'],
default => [],
}
$dependent_packages = ['docker-ce-cli','containerd.io']

}
11 changes: 9 additions & 2 deletions spec/classes/docker_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -706,21 +706,28 @@
} }
it { should contain_file(service_config_file).with_content(/-g \/mnt\/docker/) }
end

context 'with custom root dir && Docker version > 17.05' do
let(:params) { {
'root_dir' => '/mnt/docker',
'version' => '18.03',
} }
it { should contain_file(service_config_file).with_content(/--data-root \/mnt\/docker/) }
end


context 'with ensure absent' do
let(:params) { {'ensure' => 'absent' } }
it { should contain_package('docker').with_ensure('absent') }
end

context 'with ensure absent and ' do
let(:params) { {'ensure' => 'absent' } }
it { should contain_package('docker').with_ensure('absent') }
it { should contain_package('docker-ce-cli').with_ensure('absent') }
it { should contain_package('containerd.io').with_ensure('absent') }
end

context 'with an invalid combination of devicemapper options' do
let(:params) {
{ 'dm_datadev' => '/dev/mapper/vg_test-docker--pool_tdata',
Expand Down

0 comments on commit 10bdd1e

Please sign in to comment.