From f69c046fe1a91d0b5280af9924ade93aa333fbe7 Mon Sep 17 00:00:00 2001 From: Yanis Guenane Date: Mon, 20 Jul 2015 10:13:24 +0200 Subject: [PATCH] Add swift::config class Other modules provide an X::config class to be able to specify parameters that are not yet part of the module. Swift was missing this feature. This commit aims to add it for puppet-swift. Change-Id: Ifb6f78f177d9cc721f8388290c983c49137a2557 --- manifests/config.pp | 30 ++++++++++++++++++++++++++++++ spec/classes/swift_config_spec.rb | 20 ++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 manifests/config.pp create mode 100644 spec/classes/swift_config_spec.rb diff --git a/manifests/config.pp b/manifests/config.pp new file mode 100644 index 00000000..9f8a4fe0 --- /dev/null +++ b/manifests/config.pp @@ -0,0 +1,30 @@ +# == Class: swift::config +# +# This class is used to manage arbitrary Swift configurations. +# +# === Parameters +# +# [*swift_config*] +# (optional) Allow configuration of arbitrary Swift configurations. +# The value is an hash of swift_config resources. Example: +# { 'DEFAULT/foo' => { value => 'fooValue'}, +# 'DEFAULT/bar' => { value => 'barValue'} +# } +# In yaml format, Example: +# swift_config: +# DEFAULT/foo: +# value: fooValue +# DEFAULT/bar: +# value: barValue +# +# NOTE: The configuration MUST NOT be already handled by this module +# or Puppet catalog compilation will fail with duplicate resources. +# +class swift::config ( + $swift_config = {}, +) { + + validate_hash($swift_config) + + create_resources('swift_config', $swift_config) +} diff --git a/spec/classes/swift_config_spec.rb b/spec/classes/swift_config_spec.rb new file mode 100644 index 00000000..b266f1c0 --- /dev/null +++ b/spec/classes/swift_config_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper' + +describe 'swift::config' do + + let :params do + { :swift_config => { + 'DEFAULT/foo' => { 'value' => 'fooValue' }, + 'DEFAULT/bar' => { 'value' => 'barValue' }, + 'DEFAULT/baz' => { 'ensure' => 'absent' } + } + } + end + + it 'configures arbitrary swift configurations' do + is_expected.to contain_swift_config('DEFAULT/foo').with_value('fooValue') + is_expected.to contain_swift_config('DEFAULT/bar').with_value('barValue') + is_expected.to contain_swift_config('DEFAULT/baz').with_ensure('absent') + end + +end