puppet 2.7.24 → 2.7.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/Rakefile +10 -1
 - data/ext/packaging/tasks/00_utils.rake +3 -0
 - data/ext/packaging/tasks/jenkins.rake +6 -1
 - data/ext/packaging/tasks/pe_ship.rake +62 -34
 - data/ext/packaging/tasks/ship.rake +8 -4
 - data/ext/packaging/templates/packaging.xml.erb +7 -1
 - data/lib/puppet/type/file.rb +1 -3
 - data/lib/puppet/util.rb +12 -0
 - data/lib/puppet/version.rb +1 -1
 - data/spec/unit/type/file_spec.rb +67 -0
 - metadata +39 -62
 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -20,7 +20,11 @@ end 
     | 
|
| 
       20 
20 
     | 
    
         
             
            require 'rake'
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
22 
     | 
    
         
             
            Dir['tasks/**/*.rake'].each { |t| load t }
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            begin
         
     | 
| 
      
 25 
     | 
    
         
            +
              load File.join(File.dirname(__FILE__), 'ext', 'packaging', 'packaging.rake')
         
     | 
| 
      
 26 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
| 
       24 
28 
     | 
    
         | 
| 
       25 
29 
     | 
    
         
             
            build_defs_file = 'ext/build_defaults.yaml'
         
     | 
| 
       26 
30 
     | 
    
         
             
            if File.exist?(build_defs_file)
         
     | 
| 
         @@ -69,3 +73,8 @@ desc "Run the unit tests" 
     | 
|
| 
       69 
73 
     | 
    
         
             
            task :unit do
         
     | 
| 
       70 
74 
     | 
    
         
             
              Dir.chdir("test") { sh "rake" }
         
     | 
| 
       71 
75 
     | 
    
         
             
            end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            desc "Run the spec tests on windows"
         
     | 
| 
      
 78 
     | 
    
         
            +
            task :windows_spec do
         
     | 
| 
      
 79 
     | 
    
         
            +
              sh %{rspec --tag ~fails_on_windows #{ENV['TESTS'] || 'spec'}}
         
     | 
| 
      
 80 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -108,7 +108,12 @@ namespace :pl do 
     | 
|
| 
       108 
108 
     | 
    
         
             
                  #
         
     | 
| 
       109 
109 
     | 
    
         
             
                  # Determine the type of build we're doing to inform jenkins
         
     | 
| 
       110 
110 
     | 
    
         
             
                  build_type = case build_task
         
     | 
| 
       111 
     | 
    
         
            -
                    when /deb/ 
     | 
| 
      
 111 
     | 
    
         
            +
                    when /deb/
         
     | 
| 
      
 112 
     | 
    
         
            +
                      if @build.default_cow.split('-')[1] =~ /cumulus/
         
     | 
| 
      
 113 
     | 
    
         
            +
                        "cumulus"
         
     | 
| 
      
 114 
     | 
    
         
            +
                      else
         
     | 
| 
      
 115 
     | 
    
         
            +
                        "deb"
         
     | 
| 
      
 116 
     | 
    
         
            +
                      end
         
     | 
| 
       112 
117 
     | 
    
         
             
                    when /mock/ then "rpm"
         
     | 
| 
       113 
118 
     | 
    
         
             
                    when /dmg|apple/ then "dmg"
         
     | 
| 
       114 
119 
     | 
    
         
             
                    when /gem/ then "gem"
         
     | 
| 
         @@ -21,33 +21,46 @@ if @build.build_pe 
     | 
|
| 
       21 
21 
     | 
    
         
             
                  #   created for this specific deb ship. This enables us to escape the conflicts
         
     | 
| 
       22 
22 
     | 
    
         
             
                  #   introduced with simultaneous deb ships.
         
     | 
| 
       23 
23 
     | 
    
         
             
                  #
         
     | 
| 
       24 
     | 
    
         
            -
                  unless target_path
         
     | 
| 
       25 
     | 
    
         
            -
                    puts "Creating temporary incoming dir on #{@build.apt_host}"
         
     | 
| 
       26 
     | 
    
         
            -
                    target_path = %x{ssh -t #{@build.apt_host} 'mktemp -d -t incoming-XXXXXX'}.chomp
         
     | 
| 
       27 
     | 
    
         
            -
                  end
         
     | 
| 
       28 
24 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
                  #    
     | 
| 
       30 
     | 
    
         
            -
                  #    
     | 
| 
       31 
     | 
    
         
            -
                  #    
     | 
| 
       32 
     | 
    
         
            -
                  #
         
     | 
| 
       33 
     | 
    
         
            -
                  #   The layout that the reprepro library will expect is:
         
     | 
| 
       34 
     | 
    
         
            -
                  #
         
     | 
| 
       35 
     | 
    
         
            -
                  #     incoming_dir/{$dists}/*.deb
         
     | 
| 
       36 
     | 
    
         
            -
                  #
         
     | 
| 
       37 
     | 
    
         
            -
                  #   ex:
         
     | 
| 
       38 
     | 
    
         
            -
                  #     incoming_dir|
         
     | 
| 
       39 
     | 
    
         
            -
                  #                 |_lucid/*.deb
         
     | 
| 
       40 
     | 
    
         
            -
                  #                 |_squeeze/*.deb
         
     | 
| 
       41 
     | 
    
         
            -
                  #                 |_precise/*.deb
         
     | 
| 
       42 
     | 
    
         
            -
                  #                 |_wheezy/*.deb
         
     | 
| 
      
 25 
     | 
    
         
            +
                  #   We are going to iterate over every set of packages, adding them to
         
     | 
| 
      
 26 
     | 
    
         
            +
                  #   the repository set by set. This enables us to handle different
         
     | 
| 
      
 27 
     | 
    
         
            +
                  #   repositories per distribution. "pkg/pe/deb/" contains directories
         
     | 
| 
      
 28 
     | 
    
         
            +
                  #   named for every distribution, e.g. "lucid," "squeeze," etc.
         
     | 
| 
       43 
29 
     | 
    
         
             
                  #
         
     | 
| 
       44 
     | 
    
         
            -
                   
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                     
     | 
| 
       47 
     | 
    
         
            -
                       
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
      
 30 
     | 
    
         
            +
                  Dir["pkg/pe/deb/*"].each do |dist|
         
     | 
| 
      
 31 
     | 
    
         
            +
                    dist = File.basename(dist)
         
     | 
| 
      
 32 
     | 
    
         
            +
                    unless target_path
         
     | 
| 
      
 33 
     | 
    
         
            +
                      puts "Creating temporary incoming dir on #{@build.apt_host}"
         
     | 
| 
      
 34 
     | 
    
         
            +
                      target_path = %x{ssh -t #{@build.apt_host} 'mktemp -d -t incoming-XXXXXX'}.chomp
         
     | 
| 
      
 35 
     | 
    
         
            +
                    end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                    #   For reprepro, we ship just the debs into an incoming dir. On the remote end,
         
     | 
| 
      
 38 
     | 
    
         
            +
                    #   reprepro will pull these debs in and add them to the repositories based on the
         
     | 
| 
      
 39 
     | 
    
         
            +
                    #   dist, e.g. lucid, architecture notwithstanding.
         
     | 
| 
      
 40 
     | 
    
         
            +
                    #
         
     | 
| 
      
 41 
     | 
    
         
            +
                    #   The layout that the reprepro library will expect is:
         
     | 
| 
      
 42 
     | 
    
         
            +
                    #
         
     | 
| 
      
 43 
     | 
    
         
            +
                    #     incoming_dir/{$dists}/*.deb
         
     | 
| 
      
 44 
     | 
    
         
            +
                    #
         
     | 
| 
      
 45 
     | 
    
         
            +
                    #   ex:
         
     | 
| 
      
 46 
     | 
    
         
            +
                    #     incoming_dir|
         
     | 
| 
      
 47 
     | 
    
         
            +
                    #                 |_lucid/*.deb
         
     | 
| 
      
 48 
     | 
    
         
            +
                    #                 |_squeeze/*.deb
         
     | 
| 
      
 49 
     | 
    
         
            +
                    #                 |_precise/*.deb
         
     | 
| 
      
 50 
     | 
    
         
            +
                    #                 |_wheezy/*.deb
         
     | 
| 
      
 51 
     | 
    
         
            +
                    #
         
     | 
| 
      
 52 
     | 
    
         
            +
                    puts "Shipping PE debs to apt repo 'incoming' dir on #{@build.apt_host}"
         
     | 
| 
      
 53 
     | 
    
         
            +
                    retry_on_fail(:times => 3) do
         
     | 
| 
      
 54 
     | 
    
         
            +
                      Dir["pkg/pe/deb/#{dist}/*.deb"].each do |deb|
         
     | 
| 
      
 55 
     | 
    
         
            +
                        remote_ssh_cmd(@build.apt_host, "mkdir -p '#{target_path}/#{dist}'")
         
     | 
| 
      
 56 
     | 
    
         
            +
                        rsync_to(deb, @build.apt_host, "#{target_path}/#{dist}/#{File.basename(deb)}")
         
     | 
| 
       49 
57 
     | 
    
         
             
                      end
         
     | 
| 
       50 
58 
     | 
    
         
             
                    end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                    if @build.team == 'release'
         
     | 
| 
      
 61 
     | 
    
         
            +
                      Rake::Task["pe:remote:apt"].invoke(target_path, dist)
         
     | 
| 
      
 62 
     | 
    
         
            +
                    end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
       51 
64 
     | 
    
         
             
                  end
         
     | 
| 
       52 
65 
     | 
    
         | 
| 
       53 
66 
     | 
    
         
             
                  #   We also ship our PE artifacts to directories for archival purposes and to
         
     | 
| 
         @@ -81,10 +94,18 @@ if @build.build_pe 
     | 
|
| 
       81 
94 
     | 
    
         
             
                        rsync_to("pkg/pe/deb/#{dist}/pe-*_#{arch}.deb --ignore-existing", @build.apt_host, "#{archive_path}/" )
         
     | 
| 
       82 
95 
     | 
    
         
             
                      end
         
     | 
| 
       83 
96 
     | 
    
         | 
| 
       84 
     | 
    
         
            -
                      # Ship all-arch debs to same  
     | 
| 
      
 97 
     | 
    
         
            +
                      # Ship all-arch debs to same dist-location, but to all known
         
     | 
| 
      
 98 
     | 
    
         
            +
                      # architectures for this distribution.
         
     | 
| 
      
 99 
     | 
    
         
            +
                      #
         
     | 
| 
      
 100 
     | 
    
         
            +
                      # I am not proud of this. MM - 1/3/2014.
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
       85 
102 
     | 
    
         
             
                      unless Dir["pkg/pe/deb/#{dist}/pe-*_all.deb"].empty?
         
     | 
| 
       86 
     | 
    
         
            -
                         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
      
 103 
     | 
    
         
            +
                        if dist =~ /cumulus/
         
     | 
| 
      
 104 
     | 
    
         
            +
                          rsync_to("pkg/pe/deb/#{dist}/pe-*_all.deb --ignore-existing", @build.apt_host, "#{base_path}/#{dist}-powerpc/")
         
     | 
| 
      
 105 
     | 
    
         
            +
                        else
         
     | 
| 
      
 106 
     | 
    
         
            +
                          rsync_to("pkg/pe/deb/#{dist}/pe-*_all.deb --ignore-existing", @build.apt_host, "#{base_path}/#{dist}-i386/")
         
     | 
| 
      
 107 
     | 
    
         
            +
                          rsync_to("pkg/pe/deb/#{dist}/pe-*_all.deb --ignore-existing", @build.apt_host, "#{base_path}/#{dist}-amd64/")
         
     | 
| 
      
 108 
     | 
    
         
            +
                        end
         
     | 
| 
       88 
109 
     | 
    
         
             
                      end
         
     | 
| 
       89 
110 
     | 
    
         | 
| 
       90 
111 
     | 
    
         
             
                      unless Dir["pkg/pe/deb/#{dist}/pe-*"].select { |i| i !~ /^.*\.deb$/ }.empty?
         
     | 
| 
         @@ -102,10 +123,6 @@ if @build.build_pe 
     | 
|
| 
       102 
123 
     | 
    
         
             
                    end
         
     | 
| 
       103 
124 
     | 
    
         
             
                  end
         
     | 
| 
       104 
125 
     | 
    
         | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
                  if @build.team == 'release'
         
     | 
| 
       107 
     | 
    
         
            -
                    Rake::Task["pe:remote:apt"].invoke(target_path)
         
     | 
| 
       108 
     | 
    
         
            -
                  end
         
     | 
| 
       109 
126 
     | 
    
         
             
                end
         
     | 
| 
       110 
127 
     | 
    
         | 
| 
       111 
128 
     | 
    
         
             
                namespace :remote do
         
     | 
| 
         @@ -121,14 +138,25 @@ if @build.build_pe 
     | 
|
| 
       121 
138 
     | 
    
         
             
                  #   Per previous comments, the incoming directory must contain subdirectories named
         
     | 
| 
       122 
139 
     | 
    
         
             
                  #   for debian distributions.
         
     | 
| 
       123 
140 
     | 
    
         
             
                  desc "Remotely add shipped packages to apt repo on #{@build.apt_host}"
         
     | 
| 
       124 
     | 
    
         
            -
                  task :apt, :incoming do |t, args|
         
     | 
| 
      
 141 
     | 
    
         
            +
                  task :apt, :incoming, :dist do |t, args|
         
     | 
| 
      
 142 
     | 
    
         
            +
                    dist = args.dist
         
     | 
| 
      
 143 
     | 
    
         
            +
                    if dist =~ /cumulus/
         
     | 
| 
      
 144 
     | 
    
         
            +
                      reprepro_confdir = "/etc/reprepro/networking/#{@build.pe_version}/cumulus"
         
     | 
| 
      
 145 
     | 
    
         
            +
                      reprepro_basedir = "/opt/enterprise/networking/#{@build.pe_version}/cumulus"
         
     | 
| 
      
 146 
     | 
    
         
            +
                      reprepro_dbdir = "/var/lib/reprepro/networking/#{@build.pe_version}/cumulus"
         
     | 
| 
      
 147 
     | 
    
         
            +
                    else
         
     | 
| 
      
 148 
     | 
    
         
            +
                      reprepro_confdir = "/etc/reprepro/#{@build.pe_version}"
         
     | 
| 
      
 149 
     | 
    
         
            +
                      reprepro_basedir = "#{@build.apt_repo_path}/#{@build.pe_version}/repos/debian"
         
     | 
| 
      
 150 
     | 
    
         
            +
                      reprepro_dbdir = "/var/lib/reprepro/#{@build.pe_version}"
         
     | 
| 
      
 151 
     | 
    
         
            +
                    end
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
       125 
153 
     | 
    
         
             
                    incoming_dir = args.incoming
         
     | 
| 
       126 
154 
     | 
    
         
             
                    incoming_dir or fail "Adding packages to apt repo requires an incoming directory"
         
     | 
| 
       127 
155 
     | 
    
         
             
                    invoke_task("pl:fetch")
         
     | 
| 
       128 
156 
     | 
    
         
             
                    remote_ssh_cmd(@build.apt_host, "/usr/bin/repsimple add_all \
         
     | 
| 
       129 
     | 
    
         
            -
                        --confdir  
     | 
| 
       130 
     | 
    
         
            -
                        --basedir #{ 
     | 
| 
       131 
     | 
    
         
            -
                        --databasedir  
     | 
| 
      
 157 
     | 
    
         
            +
                        --confdir #{reprepro_confdir} \
         
     | 
| 
      
 158 
     | 
    
         
            +
                        --basedir #{reprepro_basedir} \
         
     | 
| 
      
 159 
     | 
    
         
            +
                        --databasedir #{reprepro_dbdir} \
         
     | 
| 
       132 
160 
     | 
    
         
             
                        --incomingdir #{incoming_dir}")
         
     | 
| 
       133 
161 
     | 
    
         | 
| 
       134 
162 
     | 
    
         
             
                    puts "Cleaning up apt repo 'incoming' dir on #{@build.apt_host}"
         
     | 
| 
         @@ -4,9 +4,11 @@ namespace :pl do 
     | 
|
| 
       4 
4 
     | 
    
         
             
                ["el", "fedora"].each do |dist|
         
     | 
| 
       5 
5 
     | 
    
         
             
                  retry_on_fail(:times => 3) do
         
     | 
| 
       6 
6 
     | 
    
         
             
                    pkgs = Dir["pkg/#{dist}/**/*.rpm"].map { |f| "'#{f.gsub("pkg/#{dist}/", "#{@build.yum_repo_path}/#{dist}/")}'"}
         
     | 
| 
       7 
     | 
    
         
            -
                     
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
                    unless pkgs.empty?
         
     | 
| 
      
 8 
     | 
    
         
            +
                      rsync_to("pkg/#{dist}", @build.yum_host, @build.yum_repo_path)
         
     | 
| 
      
 9 
     | 
    
         
            +
                      remote_set_immutable(@build.yum_host, pkgs)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    end
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end if File.directory?("pkg/#{dist}")
         
     | 
| 
       10 
12 
     | 
    
         
             
                end
         
     | 
| 
       11 
13 
     | 
    
         
             
              end
         
     | 
| 
       12 
14 
     | 
    
         | 
| 
         @@ -37,7 +39,9 @@ namespace :pl do 
     | 
|
| 
       37 
39 
     | 
    
         
             
              desc "Ship cow-built debs to #{@build.apt_host}"
         
     | 
| 
       38 
40 
     | 
    
         
             
              task :ship_debs do
         
     | 
| 
       39 
41 
     | 
    
         
             
                retry_on_fail(:times => 3) do
         
     | 
| 
       40 
     | 
    
         
            -
                   
     | 
| 
      
 42 
     | 
    
         
            +
                  if File.directory?("pkg/deb")
         
     | 
| 
      
 43 
     | 
    
         
            +
                    rsync_to('pkg/deb/', @build.apt_host, @build.apt_repo_path)
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
       41 
45 
     | 
    
         
             
                end
         
     | 
| 
       42 
46 
     | 
    
         
             
              end
         
     | 
| 
       43 
47 
     | 
    
         | 
| 
         @@ -55,7 +55,13 @@ pl:jenkins:uber_build NOTIFY=foo@puppetlabs.com
 
     | 
|
| 
       55 
55 
     | 
    
         
             
              <properties>
         
     | 
| 
       56 
56 
     | 
    
         
             
                <jp.ikedam.jenkins.plugins.groovy__label__assignment.GroovyLabelAssignmentProperty plugin="groovy-label-assignment@1.0.0">
         
     | 
| 
       57 
57 
     | 
    
         
             
                  <groovyScript>def labelMap = [
         
     | 
| 
       58 
     | 
    
         
            -
                    <% @build.cows.split(' ').each do |cow|  
     | 
| 
      
 58 
     | 
    
         
            +
                    <% @build.cows.split(' ').each do |cow| %>
         
     | 
| 
      
 59 
     | 
    
         
            +
                      <% if cow =~ /cumulus/ %>
         
     | 
| 
      
 60 
     | 
    
         
            +
                    "pl_deb COW=<%= cow %>": "cumulus",
         
     | 
| 
      
 61 
     | 
    
         
            +
                      <% else %>
         
     | 
| 
      
 62 
     | 
    
         
            +
                    "pl_deb COW=<%= cow %>": "deb",
         
     | 
| 
      
 63 
     | 
    
         
            +
                      <% end %>
         
     | 
| 
      
 64 
     | 
    
         
            +
                    <% end %>
         
     | 
| 
       59 
65 
     | 
    
         
             
                    <% @build.final_mocks.split(' ').each do |mock| %>"pl_mock MOCK=<%= mock %>": "rpm",<% end %>
         
     | 
| 
       60 
66 
     | 
    
         
             
                    "package_tar": "rpm",
         
     | 
| 
       61 
67 
     | 
    
         
             
                    <% if @build.build_gem then %>"package_gem": "gem",<% end %>
         
     | 
    
        data/lib/puppet/type/file.rb
    CHANGED
    
    | 
         @@ -736,10 +736,8 @@ Puppet::Type.newtype(:file) do 
     | 
|
| 
       736 
736 
     | 
    
         
             
              def write(property)
         
     | 
| 
       737 
737 
     | 
    
         
             
                remove_existing(:file)
         
     | 
| 
       738 
738 
     | 
    
         | 
| 
       739 
     | 
    
         
            -
                assumed_default_mode = 0644
         
     | 
| 
       740 
     | 
    
         
            -
             
     | 
| 
       741 
739 
     | 
    
         
             
                mode = self.should(:mode) # might be nil
         
     | 
| 
       742 
     | 
    
         
            -
                mode_int = mode ? symbolic_mode_to_int(mode,  
     | 
| 
      
 740 
     | 
    
         
            +
                mode_int = mode ? symbolic_mode_to_int(mode, Puppet::Util::DEFAULT_POSIX_MODE) : nil
         
     | 
| 
       743 
741 
     | 
    
         | 
| 
       744 
742 
     | 
    
         
             
                if write_temporary_file?
         
     | 
| 
       745 
743 
     | 
    
         
             
                  Puppet::Util.replace_file(self[:path], mode_int) do |file|
         
     | 
    
        data/lib/puppet/util.rb
    CHANGED
    
    | 
         @@ -538,9 +538,21 @@ module Util 
     | 
|
| 
       538 
538 
     | 
    
         
             
              # The default_mode is the mode to use when the target file doesn't already
         
     | 
| 
       539 
539 
     | 
    
         
             
              # exist; if the file is present we copy the existing mode/owner/group values
         
     | 
| 
       540 
540 
     | 
    
         
             
              # across.
         
     | 
| 
      
 541 
     | 
    
         
            +
             
     | 
| 
      
 542 
     | 
    
         
            +
              DEFAULT_POSIX_MODE = 0644
         
     | 
| 
      
 543 
     | 
    
         
            +
              DEFAULT_WINDOWS_MODE = nil
         
     | 
| 
      
 544 
     | 
    
         
            +
             
     | 
| 
       541 
545 
     | 
    
         
             
              def replace_file(file, default_mode, &block)
         
     | 
| 
       542 
546 
     | 
    
         
             
                raise Puppet::DevError, "replace_file requires a block" unless block_given?
         
     | 
| 
       543 
547 
     | 
    
         | 
| 
      
 548 
     | 
    
         
            +
                unless default_mode
         
     | 
| 
      
 549 
     | 
    
         
            +
                  if Puppet.features.microsoft_windows?
         
     | 
| 
      
 550 
     | 
    
         
            +
                    default_mode = DEFAULT_WINDOWS_MODE
         
     | 
| 
      
 551 
     | 
    
         
            +
                  else
         
     | 
| 
      
 552 
     | 
    
         
            +
                    default_mode = DEFAULT_POSIX_MODE
         
     | 
| 
      
 553 
     | 
    
         
            +
                  end
         
     | 
| 
      
 554 
     | 
    
         
            +
                end
         
     | 
| 
      
 555 
     | 
    
         
            +
             
     | 
| 
       544 
556 
     | 
    
         
             
                file     = Pathname(file)
         
     | 
| 
       545 
557 
     | 
    
         
             
                tempfile = Tempfile.new(file.basename.to_s, file.dirname.to_s)
         
     | 
| 
       546 
558 
     | 
    
         | 
    
        data/lib/puppet/version.rb
    CHANGED
    
    
    
        data/spec/unit/type/file_spec.rb
    CHANGED
    
    | 
         @@ -1148,6 +1148,73 @@ describe Puppet::Type.type(:file) do 
     | 
|
| 
       1148 
1148 
     | 
    
         
             
                    expect { file.write :NOTUSED }.to_not raise_error(Puppet::Error)
         
     | 
| 
       1149 
1149 
     | 
    
         
             
                  end
         
     | 
| 
       1150 
1150 
     | 
    
         
             
                end
         
     | 
| 
      
 1151 
     | 
    
         
            +
             
     | 
| 
      
 1152 
     | 
    
         
            +
                describe "when resource mode is supplied" do
         
     | 
| 
      
 1153 
     | 
    
         
            +
                  before { file.stubs(:property_fix) }
         
     | 
| 
      
 1154 
     | 
    
         
            +
             
     | 
| 
      
 1155 
     | 
    
         
            +
                  context "and writing temporary files" do
         
     | 
| 
      
 1156 
     | 
    
         
            +
                    before { file.stubs(:write_temporary_file?).returns(true) }
         
     | 
| 
      
 1157 
     | 
    
         
            +
             
     | 
| 
      
 1158 
     | 
    
         
            +
                    it "should convert symbolic mode to int" do
         
     | 
| 
      
 1159 
     | 
    
         
            +
                      file[:mode] = 'oga=r'
         
     | 
| 
      
 1160 
     | 
    
         
            +
                      Puppet::Util.expects(:replace_file).with(file[:path], 0444)
         
     | 
| 
      
 1161 
     | 
    
         
            +
                      file.write :NOTUSED
         
     | 
| 
      
 1162 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1163 
     | 
    
         
            +
             
     | 
| 
      
 1164 
     | 
    
         
            +
                    it "should support int modes" do
         
     | 
| 
      
 1165 
     | 
    
         
            +
                      file[:mode] = '0444'
         
     | 
| 
      
 1166 
     | 
    
         
            +
                      Puppet::Util.expects(:replace_file).with(file[:path], 0444)
         
     | 
| 
      
 1167 
     | 
    
         
            +
                      file.write :NOTUSED
         
     | 
| 
      
 1168 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1169 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1170 
     | 
    
         
            +
             
     | 
| 
      
 1171 
     | 
    
         
            +
                  context "and not writing temporary files" do
         
     | 
| 
      
 1172 
     | 
    
         
            +
                    before { file.stubs(:write_temporary_file?).returns(false) }
         
     | 
| 
      
 1173 
     | 
    
         
            +
             
     | 
| 
      
 1174 
     | 
    
         
            +
                    it "should set a umask of 0" do
         
     | 
| 
      
 1175 
     | 
    
         
            +
                      file[:mode] = 'oga=r'
         
     | 
| 
      
 1176 
     | 
    
         
            +
                      Puppet::Util.expects(:withumask).with(0)
         
     | 
| 
      
 1177 
     | 
    
         
            +
                      file.write :NOTUSED
         
     | 
| 
      
 1178 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1179 
     | 
    
         
            +
             
     | 
| 
      
 1180 
     | 
    
         
            +
                    it "should convert symbolic mode to int" do
         
     | 
| 
      
 1181 
     | 
    
         
            +
                      file[:mode] = 'oga=r'
         
     | 
| 
      
 1182 
     | 
    
         
            +
                      File.expects(:open).with(file[:path], anything, 0444)
         
     | 
| 
      
 1183 
     | 
    
         
            +
                      file.write :NOTUSED
         
     | 
| 
      
 1184 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1185 
     | 
    
         
            +
             
     | 
| 
      
 1186 
     | 
    
         
            +
                    it "should support int modes" do
         
     | 
| 
      
 1187 
     | 
    
         
            +
                      file[:mode] = '0444'
         
     | 
| 
      
 1188 
     | 
    
         
            +
                      File.expects(:open).with(file[:path], anything, 0444)
         
     | 
| 
      
 1189 
     | 
    
         
            +
                      file.write :NOTUSED
         
     | 
| 
      
 1190 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1191 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1192 
     | 
    
         
            +
                end
         
     | 
| 
      
 1193 
     | 
    
         
            +
             
     | 
| 
      
 1194 
     | 
    
         
            +
                describe "when resource mode is not supplied" do
         
     | 
| 
      
 1195 
     | 
    
         
            +
                  context "and content is supplied" do
         
     | 
| 
      
 1196 
     | 
    
         
            +
                    it "should default to 0644 mode" do
         
     | 
| 
      
 1197 
     | 
    
         
            +
                      file = described_class.new(:path => path, :content => "file content")
         
     | 
| 
      
 1198 
     | 
    
         
            +
             
     | 
| 
      
 1199 
     | 
    
         
            +
                      file.write :NOTUSED
         
     | 
| 
      
 1200 
     | 
    
         
            +
             
     | 
| 
      
 1201 
     | 
    
         
            +
                      expect(File.stat(file[:path]).mode & 0777).to eq(0644)
         
     | 
| 
      
 1202 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1203 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1204 
     | 
    
         
            +
             
     | 
| 
      
 1205 
     | 
    
         
            +
                  context "and no content is supplied" do
         
     | 
| 
      
 1206 
     | 
    
         
            +
                    it "should use puppet's default umask of 022" do
         
     | 
| 
      
 1207 
     | 
    
         
            +
                      file = described_class.new(:path => path)
         
     | 
| 
      
 1208 
     | 
    
         
            +
             
     | 
| 
      
 1209 
     | 
    
         
            +
                      umask_from_the_user = 0777
         
     | 
| 
      
 1210 
     | 
    
         
            +
                      Puppet::Util.withumask(umask_from_the_user) do
         
     | 
| 
      
 1211 
     | 
    
         
            +
                        file.write :NOTUSED
         
     | 
| 
      
 1212 
     | 
    
         
            +
                      end
         
     | 
| 
      
 1213 
     | 
    
         
            +
             
     | 
| 
      
 1214 
     | 
    
         
            +
                      expect(File.stat(file[:path]).mode & 0777).to eq(0644)
         
     | 
| 
      
 1215 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1216 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1217 
     | 
    
         
            +
                end
         
     | 
| 
       1151 
1218 
     | 
    
         
             
              end
         
     | 
| 
       1152 
1219 
     | 
    
         | 
| 
       1153 
1220 
     | 
    
         
             
              describe "#fail_if_checksum_is_wrong" do
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,50 +1,39 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            --- !ruby/object:Gem::Specification 
     | 
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: puppet
         
     | 
| 
       3 
     | 
    
         
            -
            version: !ruby/object:Gem::Version 
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
       5 
     | 
    
         
            -
              prerelease:  
     | 
| 
       6 
     | 
    
         
            -
              segments: 
         
     | 
| 
       7 
     | 
    
         
            -
              - 2
         
     | 
| 
       8 
     | 
    
         
            -
              - 7
         
     | 
| 
       9 
     | 
    
         
            -
              - 24
         
     | 
| 
       10 
     | 
    
         
            -
              version: 2.7.24
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.7.25
         
     | 
| 
      
 5 
     | 
    
         
            +
              prerelease: 
         
     | 
| 
       11 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
     | 
    
         
            -
            authors: 
     | 
| 
      
 7 
     | 
    
         
            +
            authors:
         
     | 
| 
       13 
8 
     | 
    
         
             
            - Puppet Labs
         
     | 
| 
       14 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       15 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       16 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
            dependencies: 
         
     | 
| 
       21 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2014-01-07 00:00:00.000000000 Z
         
     | 
| 
      
 13 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 14 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
       22 
15 
     | 
    
         
             
              name: facter
         
     | 
| 
       23 
     | 
    
         
            -
               
     | 
| 
       24 
     | 
    
         
            -
              requirement: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       25 
17 
     | 
    
         
             
                none: false
         
     | 
| 
       26 
     | 
    
         
            -
                requirements: 
     | 
| 
      
 18 
     | 
    
         
            +
                requirements:
         
     | 
| 
       27 
19 
     | 
    
         
             
                - - ~>
         
     | 
| 
       28 
     | 
    
         
            -
                  - !ruby/object:Gem::Version 
     | 
| 
       29 
     | 
    
         
            -
                     
     | 
| 
       30 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       31 
     | 
    
         
            -
                    - 1
         
     | 
| 
       32 
     | 
    
         
            -
                    - 5
         
     | 
| 
       33 
     | 
    
         
            -
                    version: "1.5"
         
     | 
| 
      
 20 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 21 
     | 
    
         
            +
                    version: '1.5'
         
     | 
| 
       34 
22 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       35 
     | 
    
         
            -
               
     | 
| 
      
 23 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 25 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 26 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 27 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 28 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 29 
     | 
    
         
            +
                    version: '1.5'
         
     | 
| 
       36 
30 
     | 
    
         
             
            description: Puppet, an automated configuration management tool
         
     | 
| 
       37 
31 
     | 
    
         
             
            email: puppet@puppetlabs.com
         
     | 
| 
       38 
     | 
    
         
            -
            executables: 
     | 
| 
      
 32 
     | 
    
         
            +
            executables:
         
     | 
| 
       39 
33 
     | 
    
         
             
            - filebucket
         
     | 
| 
       40 
34 
     | 
    
         
             
            - pi
         
     | 
| 
       41 
35 
     | 
    
         
             
            - puppet
         
     | 
| 
       42 
     | 
    
         
            -
            - puppetca
         
     | 
| 
       43 
     | 
    
         
            -
            - puppetd
         
     | 
| 
       44 
36 
     | 
    
         
             
            - puppetdoc
         
     | 
| 
       45 
     | 
    
         
            -
            - puppetmasterd
         
     | 
| 
       46 
     | 
    
         
            -
            - puppetqd
         
     | 
| 
       47 
     | 
    
         
            -
            - puppetrun
         
     | 
| 
       48 
37 
     | 
    
         
             
            - ralsh
         
     | 
| 
       49 
38 
     | 
    
         
             
            - puppetca
         
     | 
| 
       50 
39 
     | 
    
         
             
            - puppetd
         
     | 
| 
         @@ -52,10 +41,8 @@ executables: 
     | 
|
| 
       52 
41 
     | 
    
         
             
            - puppetqd
         
     | 
| 
       53 
42 
     | 
    
         
             
            - puppetrun
         
     | 
| 
       54 
43 
     | 
    
         
             
            extensions: []
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
44 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
            files: 
         
     | 
| 
      
 45 
     | 
    
         
            +
            files:
         
     | 
| 
       59 
46 
     | 
    
         
             
            - CHANGELOG
         
     | 
| 
       60 
47 
     | 
    
         
             
            - CONTRIBUTING.md
         
     | 
| 
       61 
48 
     | 
    
         
             
            - Gemfile
         
     | 
| 
         @@ -67,12 +54,7 @@ files: 
     | 
|
| 
       67 
54 
     | 
    
         
             
            - bin/filebucket
         
     | 
| 
       68 
55 
     | 
    
         
             
            - bin/pi
         
     | 
| 
       69 
56 
     | 
    
         
             
            - bin/puppet
         
     | 
| 
       70 
     | 
    
         
            -
            - bin/puppetca
         
     | 
| 
       71 
     | 
    
         
            -
            - bin/puppetd
         
     | 
| 
       72 
57 
     | 
    
         
             
            - bin/puppetdoc
         
     | 
| 
       73 
     | 
    
         
            -
            - bin/puppetmasterd
         
     | 
| 
       74 
     | 
    
         
            -
            - bin/puppetqd
         
     | 
| 
       75 
     | 
    
         
            -
            - bin/puppetrun
         
     | 
| 
       76 
58 
     | 
    
         
             
            - bin/ralsh
         
     | 
| 
       77 
59 
     | 
    
         
             
            - lib/puppet.rb
         
     | 
| 
       78 
60 
     | 
    
         
             
            - lib/puppet/agent.rb
         
     | 
| 
         @@ -2030,43 +2012,38 @@ files: 
     | 
|
| 
       2030 
2012 
     | 
    
         
             
            - spec/unit/util/zaml_spec.rb
         
     | 
| 
       2031 
2013 
     | 
    
         
             
            - spec/unit/util_spec.rb
         
     | 
| 
       2032 
2014 
     | 
    
         
             
            - spec/watchr.rb
         
     | 
| 
       2033 
     | 
    
         
            -
             
     | 
| 
      
 2015 
     | 
    
         
            +
            - bin/puppetca
         
     | 
| 
      
 2016 
     | 
    
         
            +
            - bin/puppetd
         
     | 
| 
      
 2017 
     | 
    
         
            +
            - bin/puppetmasterd
         
     | 
| 
      
 2018 
     | 
    
         
            +
            - bin/puppetqd
         
     | 
| 
      
 2019 
     | 
    
         
            +
            - bin/puppetrun
         
     | 
| 
       2034 
2020 
     | 
    
         
             
            homepage: http://puppetlabs.com
         
     | 
| 
       2035 
2021 
     | 
    
         
             
            licenses: []
         
     | 
| 
       2036 
     | 
    
         
            -
             
     | 
| 
       2037 
2022 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       2038 
     | 
    
         
            -
            rdoc_options: 
     | 
| 
      
 2023 
     | 
    
         
            +
            rdoc_options:
         
     | 
| 
       2039 
2024 
     | 
    
         
             
            - --title
         
     | 
| 
       2040 
2025 
     | 
    
         
             
            - Puppet - Configuration Management
         
     | 
| 
       2041 
2026 
     | 
    
         
             
            - --main
         
     | 
| 
       2042 
2027 
     | 
    
         
             
            - README
         
     | 
| 
       2043 
2028 
     | 
    
         
             
            - --line-numbers
         
     | 
| 
       2044 
     | 
    
         
            -
            require_paths: 
     | 
| 
      
 2029 
     | 
    
         
            +
            require_paths:
         
     | 
| 
       2045 
2030 
     | 
    
         
             
            - lib
         
     | 
| 
       2046 
     | 
    
         
            -
            required_ruby_version: !ruby/object:Gem::Requirement 
     | 
| 
      
 2031 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
       2047 
2032 
     | 
    
         
             
              none: false
         
     | 
| 
       2048 
     | 
    
         
            -
              requirements: 
     | 
| 
       2049 
     | 
    
         
            -
              - -  
     | 
| 
       2050 
     | 
    
         
            -
                - !ruby/object:Gem::Version 
     | 
| 
       2051 
     | 
    
         
            -
                   
     | 
| 
       2052 
     | 
    
         
            -
             
     | 
| 
       2053 
     | 
    
         
            -
                  - 0
         
     | 
| 
       2054 
     | 
    
         
            -
                  version: "0"
         
     | 
| 
       2055 
     | 
    
         
            -
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 2033 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 2034 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
      
 2035 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 2036 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 2037 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       2056 
2038 
     | 
    
         
             
              none: false
         
     | 
| 
       2057 
     | 
    
         
            -
              requirements: 
     | 
| 
       2058 
     | 
    
         
            -
              - -  
     | 
| 
       2059 
     | 
    
         
            -
                - !ruby/object:Gem::Version 
     | 
| 
       2060 
     | 
    
         
            -
                   
     | 
| 
       2061 
     | 
    
         
            -
                  segments: 
         
     | 
| 
       2062 
     | 
    
         
            -
                  - 0
         
     | 
| 
       2063 
     | 
    
         
            -
                  version: "0"
         
     | 
| 
      
 2039 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 2040 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
      
 2041 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 2042 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
       2064 
2043 
     | 
    
         
             
            requirements: []
         
     | 
| 
       2065 
     | 
    
         
            -
             
     | 
| 
       2066 
2044 
     | 
    
         
             
            rubyforge_project: puppet
         
     | 
| 
       2067 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 2045 
     | 
    
         
            +
            rubygems_version: 1.8.25
         
     | 
| 
       2068 
2046 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       2069 
2047 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       2070 
2048 
     | 
    
         
             
            summary: Puppet, an automated configuration management tool
         
     | 
| 
       2071 
2049 
     | 
    
         
             
            test_files: []
         
     | 
| 
       2072 
     | 
    
         
            -
             
     |