summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorR.I.Pienaar <rip@devco.net>2012-06-23 15:37:34 -0700
committerR.I.Pienaar <rip@devco.net>2012-06-23 15:37:34 -0700
commit6b725dd5e15552659d008e7e32e1a4fb7df34012 (patch)
treec38e5065136b28164fb134a35a0ec84a40d0fc28
parent99f3eb83f77ae68664eb2b346df4e4db6f21f1b3 (diff)
parent534fd8b7a4793aed7a2f85d88772ce542785c6d0 (diff)
downloadpuppet-concat-6b725dd5e15552659d008e7e32e1a4fb7df34012.tar.gz
puppet-concat-6b725dd5e15552659d008e7e32e1a4fb7df34012.tar.bz2
Merge pull request #24 from pabelanger/improvements
Improvements
-rw-r--r--.fixtures.yml3
-rw-r--r--.gemfile5
-rw-r--r--.gitignore1
-rw-r--r--.travis.yml12
-rw-r--r--Rakefile15
-rw-r--r--manifests/init.pp138
-rw-r--r--spec/defines/init_spec.rb57
-rw-r--r--spec/fixtures/manifests/site.pp0
-rw-r--r--spec/spec_helper.rb10
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
diff --git a/Rakefile b/Rakefile
index 764aebd..14f1c24 100644
--- a/Rakefile
+++ b/Rakefile
@@ -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'