From 3fa30c96b45f40211f60cd6c1c8ca2053b460631 Mon Sep 17 00:00:00 2001 From: Yanis Guenane Date: Thu, 6 Aug 2015 13:15:56 +0200 Subject: [PATCH] Reflect provider change in puppet-openstacklib With the creation of the new openstack_config provider, some processing that was done in tuskar_config has been centralized in openstack_config. Impacted methods are : * section * setting * separator Also, this commit adds the fact that, when passing a specific string (ensure_absent_val) the provider will behave as if ensure => absent was specified. '' is the default value for ensure_absent_val. The use case is the following : tuskar_config { 'DEFAULT/foo' : value => 'bar' } # will work as usual tuskar_config { 'DEFAULT/foo' : value => '' } # will mean absent That means that all the current : if $myvar { tuskar_config { 'DEFAULT/foo' : value => $myvar } } else { tuskar_config { 'DEFAULT/foo' : ensure => absent } } can be removed in favor of : tuskar_config { 'DEFAULT/foo' : value => $myvar } If for any reason '' turns out to be a valid value for a specific parameter. One could by pass that doing the following : tuskar_config { 'DEFAULT/foo' : value => '', ensure_absent_val => 'foo' } Change-Id: I177eee770243749d0c63b90e1d8581c7c92f8b4b --- README.md | 30 +++++++++++++++++++ .../provider/tuskar_config/ini_setting.rb | 19 +----------- lib/puppet/type/tuskar_config.rb | 9 +++++- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index ce38bab..dc0ee7a 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,36 @@ Implementation tuskar is a combination of Puppet manifest and ruby code to delivery configuration and extra functionality through types and providers. +### Types + +#### tuskar_config + +The `tuskar_config` provider is a children of the ini_setting provider. It allows one to write an entry in the `/etc/tuskar/tuskar.conf` file. + +```puppet +tuskar_config { 'DEFAULT/verbose' : + value => true, +} +``` + +This will write `verbose=true` in the `[DEFAULT]` section. + +##### name + +Section/setting name to manage from `tuskar.conf` + +##### value + +The value of the setting to be defined. + +##### secret + +Whether to hide the value from Puppet logs. Defaults to `false`. + +##### ensure_absent_val + +If value is equal to ensure_absent_val then the resource will behave as if `ensure => absent` was specified. Defaults to `` + Limitations ----------- diff --git a/lib/puppet/provider/tuskar_config/ini_setting.rb b/lib/puppet/provider/tuskar_config/ini_setting.rb index 4bd0867..a1d59c1 100644 --- a/lib/puppet/provider/tuskar_config/ini_setting.rb +++ b/lib/puppet/provider/tuskar_config/ini_setting.rb @@ -1,27 +1,10 @@ Puppet::Type.type(:tuskar_config).provide( :ini_setting, - :parent => Puppet::Type.type(:ini_setting).provider(:ruby) + :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) ) do - def section - resource[:name].split('/', 2).first - end - - def setting - resource[:name].split('/', 2).last - end - - def separator - '=' - end - def self.file_path '/etc/tuskar/tuskar.conf' end - # added for backwards compatibility with older versions of inifile - def file_path - self.class.file_path - end - end diff --git a/lib/puppet/type/tuskar_config.rb b/lib/puppet/type/tuskar_config.rb index d78cc9e..f61139c 100644 --- a/lib/puppet/type/tuskar_config.rb +++ b/lib/puppet/type/tuskar_config.rb @@ -3,7 +3,7 @@ Puppet::Type.newtype(:tuskar_config) do ensurable newparam(:name, :namevar => true) do - desc 'Section/setting name to manage from /etc/tuskar/tuskar.conf' + desc 'Section/setting name to manage from tuskar.conf' newvalues(/\S+\/\S+/) end @@ -14,6 +14,7 @@ Puppet::Type.newtype(:tuskar_config) do value.capitalize! if value =~ /^(true|false)$/i value end + newvalues(/^[\S ]*$/) def is_to_s( currentvalue ) if resource.secret? @@ -39,4 +40,10 @@ Puppet::Type.newtype(:tuskar_config) do defaultto false end + + newparam(:ensure_absent_val) do + desc 'A value that is specified as the value property will behave as if ensure => absent was specified' + defaultto('') + end + end