diff options
author | R.I.Pienaar <rip@devco.net> | 2012-06-23 15:37:34 -0700 |
---|---|---|
committer | R.I.Pienaar <rip@devco.net> | 2012-06-23 15:37:34 -0700 |
commit | 6b725dd5e15552659d008e7e32e1a4fb7df34012 (patch) | |
tree | c38e5065136b28164fb134a35a0ec84a40d0fc28 | |
parent | 99f3eb83f77ae68664eb2b346df4e4db6f21f1b3 (diff) | |
parent | 534fd8b7a4793aed7a2f85d88772ce542785c6d0 (diff) | |
download | puppet-concat-6b725dd5e15552659d008e7e32e1a4fb7df34012.tar.gz puppet-concat-6b725dd5e15552659d008e7e32e1a4fb7df34012.tar.bz2 |
Merge pull request #24 from pabelanger/improvements
Improvements
-rw-r--r-- | .fixtures.yml | 3 | ||||
-rw-r--r-- | .gemfile | 5 | ||||
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | .travis.yml | 12 | ||||
-rw-r--r-- | Rakefile | 15 | ||||
-rw-r--r-- | manifests/init.pp | 138 | ||||
-rw-r--r-- | spec/defines/init_spec.rb | 57 | ||||
-rw-r--r-- | spec/fixtures/manifests/site.pp | 0 | ||||
-rw-r--r-- | spec/spec_helper.rb | 10 |
9 files changed, 162 insertions, 79 deletions
diff --git a/.fixtures.yml b/.fixtures.yml new file mode 100644 index 0000000..2d6fee0 --- /dev/null +++ b/.fixtures.yml @@ -0,0 +1,3 @@ +fixtures: + symlinks: + 'concat': '#{source_dir}' diff --git a/.gemfile b/.gemfile new file mode 100644 index 0000000..9aad840 --- /dev/null +++ b/.gemfile @@ -0,0 +1,5 @@ +source :rubygems + +puppetversion = ENV.key?('PUPPET_VERSION') ? "= #{ENV['PUPPET_VERSION']}" : ['>= 2.7'] +gem 'puppet', puppetversion +gem 'puppetlabs_spec_helper', '>= 0.1.0' diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5fff1d9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +pkg diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..9d1c0cc --- /dev/null +++ b/.travis.yml @@ -0,0 +1,12 @@ +language: ruby +rvm: + - 1.8.7 +script: + - "rake lint" + - "rake spec" +branches: + only: + - master +env: + - PUPPET_VERSION=2.7.11 +gemfile: .gemfile @@ -1,13 +1,2 @@ -require 'rake' -require 'rspec/core/rake_task' - -task :default => [:spec] - -desc "Run all module spec tests (Requires rspec-puppet gem)" -RSpec::Core::RakeTask.new(:spec) - -desc "Build package" -task :build do - system("puppet-module build") -end - +require 'rubygems' +require 'puppetlabs_spec_helper/rake_tasks' diff --git a/manifests/init.pp b/manifests/init.pp index 0b3ed56..bd9d751 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -80,18 +80,32 @@ # # ACTIONS: # - Creates fragment directories if it didn't exist already -# - Executes the concatfragments.sh script to build the final file, this script will create -# directory/fragments.concat. Execution happens only when: +# - Executes the concatfragments.sh script to build the final file, this +# script will create directory/fragments.concat. Execution happens only +# when: # * The directory changes -# * fragments.concat != final destination, this means rebuilds will happen whenever -# someone changes or deletes the final file. Checking is done using /usr/bin/cmp. -# * The Exec gets notified by something else - like the concat::fragment define +# * fragments.concat != final destination, this means rebuilds will happen +# whenever someone changes or deletes the final file. Checking is done +# using /usr/bin/cmp. +# * The Exec gets notified by something else - like the concat::fragment +# define # - Copies the file over to the final destination using a file resource # # ALIASES: -# - The exec can notified using Exec["concat_/path/to/file"] or Exec["concat_/path/to/directory"] -# - The final file can be referened as File["/path/to/file"] or File["concat_/path/to/file"] -define concat($mode = '0644', $owner = $::id, $group = $concat::setup::root_group, $warn = false, $force = false, $backup = 'puppet', $gnu = undef, $order='alpha') { +# - The exec can notified using Exec["concat_/path/to/file"] or +# Exec["concat_/path/to/directory"] +# - The final file can be referened as File["/path/to/file"] or +# File["concat_/path/to/file"] +define concat( + $owner = $::id, + $group = $concat::setup::root_group, + $mode = '0644', + $warn = false, + $force = false, + $backup = 'puppet', + $gnu = undef, + $order='alpha' +) { $safe_name = regsubst($name, '/', '_', 'G') $concatdir = $concat::setup::concatdir $version = $concat::setup::majorversion @@ -100,9 +114,15 @@ define concat($mode = '0644', $owner = $::id, $group = $concat::setup::root_grou $default_warn_message = '# This file is managed by Puppet. DO NOT EDIT.' case $warn { - 'true',true,yes,on: { $warnmsg = $default_warn_message } - 'false',false,no,off: { $warnmsg = '' } - default: { $warnmsg = $warn } + 'true', true, yes, on: { + $warnmsg = $default_warn_message + } + 'false', false, no, off: { + $warnmsg = '' + } + default: { + $warnmsg = $warn + } } $warnmsg_escaped = regsubst($warnmsg, "'", "'\\\\''", 'G') @@ -112,67 +132,91 @@ define concat($mode = '0644', $owner = $::id, $group = $concat::setup::root_grou } case $force { - 'true',true,yes,on: { $forceflag = '-f' } - 'false',false,no,off: { $forceflag = '' } - default: { fail("Improper 'force' value given to concat: ${force}") } + 'true', true, yes, on: { + $forceflag = '-f' + } + 'false', false, no, off: { + $forceflag = '' + } + default: { +e fail("Improper 'force' value given to concat: ${force}") + } } case $order { - numeric: { $orderflag = '-n' } - alpha: { $orderflag = '' } - default: { fail("Improper 'order' value given to concat: ${order}") } + numeric: { + $orderflag = '-n' + } + alpha: { + $orderflag = '' + } + default: { + fail("Improper 'order' value given to concat: ${order}") + } } - File{ + File { owner => $::id, group => $group, mode => $mode, backup => $backup } - file{$fragdir: - ensure => directory; + file { $fragdir: + ensure => directory, + } - "${fragdir}/fragments": + $source_real = $version ? { + 24 => 'puppet:///concat/null', + default => undef, + } + + file { "${fragdir}/fragments": ensure => directory, - recurse => true, - purge => true, force => true, ignore => ['.svn', '.git', '.gitignore'], - source => $version ? { - 24 => 'puppet:///concat/null', - default => undef, - }, - notify => Exec["concat_${name}"]; + notify => Exec["concat_${name}"], + purge => true, + recurse => true, + source => $source_real, + } - "${fragdir}/fragments.concat": - ensure => present; + file { "${fragdir}/fragments.concat": + ensure => present, + } - "${fragdir}/${concat_name}": - ensure => present; + file { "${fragdir}/${concat_name}": + ensure => present, + } - $name: + file { $name: ensure => present, - source => "${fragdir}/${concat_name}", - owner => $owner, + alias => "concat_${name}", group => $group, - checksum => md5, mode => $mode, - alias => "concat_${name}"; + owner => $owner, + source => "${fragdir}/${concat_name}", } - exec{"concat_${name}": - notify => File[$name], - subscribe => File[$fragdir], - alias => "concat_${fragdir}", - require => [ File[$fragdir], File["${fragdir}/fragments"], File["${fragdir}/fragments.concat"] ], - unless => "${concat::setup::concatdir}/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} -t ${warnflag} ${forceflag} ${orderflag}", - command => "${concat::setup::concatdir}/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} ${warnflag} ${forceflag} ${orderflag}", + exec { "concat_${name}": + alias => "concat_${fragdir}", + command => "${concat::setup::concatdir}/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} ${warnflag} ${forceflag} ${orderflag}", + notify => File[$name], + require => [ + File[$fragdir], + File["${fragdir}/fragments"], + File["${fragdir}/fragments.concat"], + ], + subscribe => File[$fragdir], + unless => "${concat::setup::concatdir}/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} -t ${warnflag} ${forceflag} ${orderflag}", } + if $::id == 'root' { - Exec["concat_${name}"]{ - user => root, - group => $group, + Exec["concat_${name}"] { + user => root, + group => $group, } } } + +# vim:sw=2:ts=2:expandtab:textwidth=79 diff --git a/spec/defines/init_spec.rb b/spec/defines/init_spec.rb index d968a26..34fb24b 100644 --- a/spec/defines/init_spec.rb +++ b/spec/defines/init_spec.rb @@ -3,18 +3,55 @@ require 'spec_helper' describe 'concat' do basedir = '/var/lib/puppet/concat' let(:title) { '/etc/foo.bar' } - let(:facts) { { :concat_basedir => '/var/lib/puppet/concat' } } + let(:facts) { { + :concat_basedir => '/var/lib/puppet/concat', + :id => 'root', + } } let :pre_condition do 'include concat::setup' end - it { should contain_file("#{basedir}/_etc_foo.bar").with('ensure' => 'directory') } - it { should contain_file("#{basedir}/_etc_foo.bar/fragments").with('ensure' => 'directory') } - it { should contain_file("#{basedir}/_etc_foo.bar/fragments.concat").with('ensure' => 'present') } - it { should contain_file("/etc/foo.bar").with('ensure' => 'present') } - it { should contain_exec("concat_/etc/foo.bar").with_command( - "#{basedir}/bin/concatfragments.sh "+ - "-o #{basedir}/_etc_foo.bar/fragments.concat.out "+ - "-d #{basedir}/_etc_foo.bar ") - } + directories = [ + "#{basedir}/_etc_foo.bar", + "#{basedir}/_etc_foo.bar/fragments", + ] + + directories.each do |dirs| + it do + should contain_file(dirs).with({ + 'ensure' => 'directory', + 'backup' => 'puppet', + 'group' => 0, + 'mode' => '0644', + 'owner' => 'root', + }) + end + end + + files = [ + "/etc/foo.bar", + "#{basedir}/_etc_foo.bar/fragments.concat", + ] + + files.each do |file| + it do + should contain_file(file).with({ + 'ensure' => 'present', + 'backup' => 'puppet', + 'group' => 0, + 'mode' => '0644', + 'owner' => 'root', + }) + end + end + + it do + should contain_exec("concat_/etc/foo.bar").with_command( + "#{basedir}/bin/concatfragments.sh " + + "-o #{basedir}/_etc_foo.bar/fragments.concat.out " + + "-d #{basedir}/_etc_foo.bar " + ) + end end + +# vim:sw=2:ts=2:expandtab:textwidth=79 diff --git a/spec/fixtures/manifests/site.pp b/spec/fixtures/manifests/site.pp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/spec/fixtures/manifests/site.pp diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index e6e9309..2c6f566 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,9 +1 @@ -require 'puppet' -require 'rspec' -require 'rspec-puppet' - -RSpec.configure do |c| - c.module_path = File.expand_path(File.join(File.dirname(__FILE__), 'fixtures/modules/')) - # Using an empty site.pp file to avoid: https://github.com/rodjek/rspec-puppet/issues/15 - c.manifest_dir = File.expand_path(File.join(File.dirname(__FILE__), 'fixtures/manifests')) -end +require 'puppetlabs_spec_helper/module_spec_helper' |