diff --git a/README.md b/README.md index 23f18f0..79e6cb6 100644 --- a/README.md +++ b/README.md @@ -120,6 +120,11 @@ Default: undef Type: string Default: undef +`ensure` +Set to `absent` to disable and remove packages. +Type: string +Default: present + ## Limitations Tested on: diff --git a/manifests/init.pp b/manifests/init.pp index 7d7987e..976a267 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -24,6 +24,11 @@ # Required: true # Default: undef # +# [*ensure*] +# Set to "absent" to disable and remove packages. +# Required: false +# Default: 'present' +# # === Examples # # class {'::adcli': @@ -52,6 +57,10 @@ $ad_join_os = $adcli::params::ad_join_os, $ad_join_os_version = $adcli::params::ad_join_os_version, $ad_join_os_service_pack = $adcli::params::ad_join_os_service_pack, + Enum[ + 'present', + 'absent' + ] $ensure = $adcli::params::ensure, ) inherits adcli::params { validate_legacy(String, 'validate_string', $ad_domain) validate_legacy(String, 'validate_string', $ad_join_username) @@ -63,9 +72,19 @@ validate_legacy(String, 'validate_string', $ad_join_os_version) validate_legacy(String, 'validate_string', $ad_join_os_service_pack) - anchor { 'adcli::begin': } - -> class { '::adcli::install': } - -> class { '::adcli::join': } - -> anchor { 'adcli::end': } - + case $ensure { + 'present': { + anchor { 'adcli::begin': } + -> class { 'adcli::install': + ensure => $ensure, + } + -> class { 'adcli::join': } + -> anchor { 'adcli::end': } + } + default: { + class { 'adcli::install': + ensure => $ensure, + } + } + } } diff --git a/manifests/install.pp b/manifests/install.pp index 9b7a611..0ccada8 100644 --- a/manifests/install.pp +++ b/manifests/install.pp @@ -4,9 +4,11 @@ # # See README.md for more details # -class adcli::install { +class adcli::install ( + Enum['present', 'absent'] $ensure, +) { package { 'adcli': - ensure => present, + ensure => $ensure, } } diff --git a/manifests/params.pp b/manifests/params.pp index 7f83a93..846a8c8 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -20,7 +20,7 @@ $ad_join_os = undef $ad_join_os_version = undef $ad_join_os_service_pack = undef - + $ensure = 'present' if $::osfamily == 'RedHat' and $::operatingsystemmajrelease < '6' { fail("Unsupported platform: puppet-adcli does not currently support RedHat ${::operatingsystemmajrelease}") diff --git a/spec/classes/init_spec.rb b/spec/classes/init_spec.rb index 03752bb..7c24b2b 100644 --- a/spec/classes/init_spec.rb +++ b/spec/classes/init_spec.rb @@ -30,6 +30,16 @@ it { is_expected.to contain_package('adcli').with_ensure('present') } it { is_expected.to contain_exec('adcli_join') } end + + context 'with ensure set to absent' do + before do + params.merge!( + :ensure => 'absent' + ) + end + it { is_expected.to contain_class('adcli::install') } + it { is_expected.to contain_package('adcli').with_ensure('absent') } + end end describe 'on RedHat 7.2' do