]> gitweb.fluxo.info Git - puppet-tftp.git/commitdiff
Add default module path for tftp::file
authorNan Liu <nan@puppetlabs.com>
Mon, 25 Jun 2012 19:12:06 +0000 (12:12 -0700)
committerNan Liu <nan@puppetlabs.com>
Mon, 25 Jun 2012 19:15:21 +0000 (12:15 -0700)
This change provides the convenience of using caller_module_name for
tftp files, so the following manifests can be abbreviated from:

    tftp::file { 'foo':
      source => 'puppet:///modules/example/foo',
    }

    tftp::file { 'baz/bar':
      source => 'puppet:///modules/example/baz/bar',
    }

to:

    tftp::file { [ 'foo', 'baz/bar' ]:
    }

This simplifies declaring large number of tftp files.

manifests/file.pp
spec/defines/tftp_file_spec.rb

index ec67f2c14fa21812e95c4e9c93fbe161ab4067cc..b3985c709d688c53c142076ee93673b2555d2b7b 100644 (file)
 #
 define tftp::file (
   $ensure       = file,
-  $recurse      = false,
   $owner        = 'tftp',
   $group        = 'tftp',
   $mode         = '0644',
+  $recurse      = false,
   $purge        = undef,
   $replace      = undef,
   $recurselimit = undef,
@@ -22,17 +22,28 @@ define tftp::file (
 ) {
   include 'tftp'
 
+  if $source {
+    $source_real = $source
+  } elsif $ensure != 'directory' and ! $content {
+    if $caller_module_name {
+      $mod = $caller_module_name
+    } else {
+      $mod = $module_name
+    }
+    $source_real = "puppet:///modules/${mod}/${name}"
+  }
+
   file { "${tftp::directory}/${name}":
     ensure       => $ensure,
-    recurse      => $recurse,
     owner        => $owner,
     group        => $group,
     mode         => $mode,
+    recurse      => $recurse,
     purge        => $purge,
     replace      => $replace,
     recurselimit => $recurselimit,
     content      => $content,
-    source       => $source,
+    source       => $source_real,
     require      => Class['tftp'],
   }
 }
index 6a032c0cc944625bcd5d3413a1fae5a9bebbcfee..0de1b6ff472bd59bbda939faeea682e76f8ad1d1 100644 (file)
@@ -11,10 +11,10 @@ describe 'tftp::file' do
     it { should include_class('tftp') }
     it { should contain_file('/srv/tftp/sample').with({
       'ensure'  => 'file',
-      'recurse' => false,
       'owner'   => 'tftp',
       'group'   => 'tftp',
-      'mode'    => '0644'
+      'mode'    => '0644',
+      'recurse' => false,
     }) }
   end
 
@@ -25,29 +25,29 @@ describe 'tftp::file' do
     it { should include_class('tftp') }
     it { should contain_file('/var/lib/tftpboot/sample').with({
       'ensure'  => 'file',
-      'recurse' => false,
       'owner'   => 'tftp',
       'group'   => 'tftp',
-      'mode'    => '0644'
+      'mode'    => '0644',
+      'recurse' => false,
     }) }
   end
 
   describe 'when deploying with parameters' do
-    let(:params) { {:ensure  => 'directory',
-                    :recurse => true,
-                    :owner   => 'root',
-                    :group   => 'root',
-                    :mode    => '0755' }}
+    let(:params) { {:ensure => 'directory',
+                    :owner  => 'root',
+                    :group  => 'root',
+                    :mode   => '0755',
+                    :recurse => true }}
     let(:facts) { { :operatingsystem => 'Debian',
                     :path            => '/usr/local/bin:/usr/bin:/bin', } }
 
     it { should include_class('tftp') }
     it { should contain_file('/srv/tftp/sample').with({
       'ensure'  => 'directory',
-      'recurse' => true,
       'owner'   => 'root',
       'group'   => 'root',
-      'mode'    => '0755'
+      'mode'    => '0755',
+      'recurse' => true,
     }) }
   end
 
@@ -61,14 +61,14 @@ describe 'tftp::file' do
       'recurse'      => false,
       'purge'        => nil,
       'replace'      => nil,
-      'recurselimit' => nil
+      'recurselimit' => nil,
     }) }
   end
 
   describe 'when deploying with recurse parameters' do
     let(:params) { {:ensure       => 'directory',
-                    :recurse      => true,
                     :mode         => '0755',
+                    :recurse      => true,
                     :recurselimit => 42,
                     :purge        => true,
                     :replace      => false }}
@@ -78,13 +78,60 @@ describe 'tftp::file' do
     it { should include_class('tftp') }
     it { should contain_file('/srv/tftp/sample').with({
       'ensure'       => 'directory',
-      'recurse'      => true,
       'owner'        => 'tftp',
       'group'        => 'tftp',
       'mode'         => '0755',
+      'recurse'      => true,
       'recurselimit' => 42,
       'purge'        => true,
       'replace'      => false,
     }) }
   end
+
+  describe 'when deploying directory' do
+    let(:params) { {:ensure => 'directory',
+                    :mode   => '0755' }}
+    let(:facts) { { :operatingsystem    => 'Debian',
+                    :caller_module_name => 'acme',
+                    :path               => '/usr/local/bin:/usr/bin:/bin', } }
+
+    it { should include_class('tftp') }
+    it { should contain_file('/srv/tftp/sample').with({
+      'ensure' => 'directory',
+      'mode'   => '0755',
+      'source' => nil,
+    }) }
+  end
+
+  describe 'when deploying file from another module' do
+    let(:params) { {:ensure => 'file',
+                    :mode   => '0755' }}
+    let(:facts) { { :operatingsystem    => 'Debian',
+                    :caller_module_name => 'acme',
+                    :path               => '/usr/local/bin:/usr/bin:/bin', } }
+
+    it { should include_class('tftp') }
+    it { should contain_file('/srv/tftp/sample').with({
+      'ensure' => 'file',
+      'mode'   => '0755',
+      'source' => 'puppet:///modules/acme/sample'
+    }) }
+  end
+
+  describe 'when deploying file with content' do
+    let(:params) { {:ensure  => 'file',
+                    :content => 'hi',
+                    :mode    => '0755' }}
+    let(:facts) { { :operatingsystem    => 'Debian',
+                    :caller_module_name => 'acme',
+                    :path               => '/usr/local/bin:/usr/bin:/bin', } }
+
+    it { should include_class('tftp') }
+    it { should contain_file('/srv/tftp/sample').with({
+      'ensure'  => 'file',
+      'mode'    => '0755',
+      'content' => 'hi',
+      'source'  => nil,
+    }) }
+  end
 end