puppet 3.3.1.rc3 → 3.3.1
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.
- checksums.yaml +4 -4
- data/lib/puppet/network/formats.rb +18 -8
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/parser/functions/create_resources.rb +4 -4
- data/lib/puppet/version.rb +1 -1
- data/spec/integration/type/file_spec.rb +2 -2
- data/spec/unit/indirector/rest_spec.rb +2 -1
- data/spec/unit/network/formats_spec.rb +21 -11
- data/spec/unit/network/http/handler_spec.rb +18 -4
- data/spec/unit/node/environment_spec.rb +1 -1
- data/spec/unit/parser/files_spec.rb +2 -3
- data/spec/unit/settings/file_setting_spec.rb +1 -3
- data/spec/unit/util_spec.rb +1 -0
- metadata +4 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: ee9d3b6d97827d31437f89eddf9f9ebe7bdba1c8
         | 
| 4 | 
            +
              data.tar.gz: aa84cc4a207e01010674f784720f9dba747dd7d6
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d43b4ec3e3857c62ce765f57d12508ff11a4a9728f06449d4abb231b80fa7c142e36f913e7ddf439956212388e459d083e23f2ea68c7e82bfe600c1aa1b30a7e
         | 
| 7 | 
            +
              data.tar.gz: 8e12c44a4422f68e9c06b814d88f29c199668d40db3f8a9e366a5de1142a908e27699d01159847fa7dde52b3abe8879b18c2aad0a0b9c188701476db2ab32dd5
         | 
| @@ -3,18 +3,28 @@ require 'puppet/network/format_handler' | |
| 3 3 | 
             
            Puppet::Network::FormatHandler.create_serialized_formats(:yaml) do
         | 
| 4 4 | 
             
              def intern(klass, text)
         | 
| 5 5 | 
             
                data = YAML.load(text, :safe => true, :deserialize_symbols => true)
         | 
| 6 | 
            -
                 | 
| 7 | 
            -
                klass.from_pson(data)
         | 
| 6 | 
            +
                data_to_instance(klass, data)
         | 
| 8 7 | 
             
              end
         | 
| 9 8 |  | 
| 10 9 | 
             
              def intern_multiple(klass, text)
         | 
| 11 | 
            -
                YAML.load(text, :safe => true, :deserialize_symbols => true) | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 10 | 
            +
                data = YAML.load(text, :safe => true, :deserialize_symbols => true)
         | 
| 11 | 
            +
                unless data.respond_to?(:collect)
         | 
| 12 | 
            +
                  raise Puppet::Network::FormatHandler::FormatError, "Serialized YAML did not contain a collection of instances when calling intern_multiple"
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                data.collect do |datum|
         | 
| 16 | 
            +
                  data_to_instance(klass, datum)
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              def data_to_instance(klass, data)
         | 
| 21 | 
            +
                return data if data.is_a?(klass)
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                unless data.is_a? Hash
         | 
| 24 | 
            +
                  raise Puppet::Network::FormatHandler::FormatError, "Serialized YAML did not contain a valid instance of #{klass}"
         | 
| 17 25 | 
             
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                klass.from_pson(data)
         | 
| 18 28 | 
             
              end
         | 
| 19 29 |  | 
| 20 30 | 
             
              def render(instance)
         | 
| @@ -255,7 +255,6 @@ module Puppet::Network::HTTP::Handler | |
| 255 255 |  | 
| 256 256 | 
             
              def read_body_into_model(model_class, request)
         | 
| 257 257 | 
             
                data = body(request).to_s
         | 
| 258 | 
            -
                raise ArgumentError, "No data to save" if !data or data.empty?
         | 
| 259 258 |  | 
| 260 259 | 
             
                format = request_format(request)
         | 
| 261 260 | 
             
                model_class.convert_from(format, data)
         | 
| @@ -7,11 +7,11 @@ Puppet::Parser::Functions::newfunction(:create_resources, :arity => -3, :doc => | |
| 7 7 | 
             
                    # A hash of user resources:
         | 
| 8 8 | 
             
                    $myusers = {
         | 
| 9 9 | 
             
                      'nick' => { uid    => '1330',
         | 
| 10 | 
            -
                                   | 
| 11 | 
            -
                                  groups => ['developers', 'operations', 'release'], }
         | 
| 10 | 
            +
                                  gid    => allstaff,
         | 
| 11 | 
            +
                                  groups => ['developers', 'operations', 'release'], },
         | 
| 12 12 | 
             
                      'dan'  => { uid    => '1308',
         | 
| 13 | 
            -
                                   | 
| 14 | 
            -
                                  groups => ['developers', 'prosvc', 'release'], }
         | 
| 13 | 
            +
                                  gid    => allstaff,
         | 
| 14 | 
            +
                                  groups => ['developers', 'prosvc', 'release'], },
         | 
| 15 15 | 
             
                    }
         | 
| 16 16 |  | 
| 17 17 | 
             
                    create_resources(user, $myusers)
         | 
    
        data/lib/puppet/version.rb
    CHANGED
    
    
| @@ -1004,8 +1004,8 @@ describe Puppet::Type.type(:file) do | |
| 1004 1004 | 
             
                    catalog.add_resource file
         | 
| 1005 1005 | 
             
                    catalog.apply
         | 
| 1006 1006 |  | 
| 1007 | 
            -
                    get_owner(path).should  | 
| 1008 | 
            -
                    get_group(path).should  | 
| 1007 | 
            +
                    get_owner(path).should =~ /^S\-1\-5\-.*$/
         | 
| 1008 | 
            +
                    get_group(path).should =~ /^S\-1\-0\-0.*$/
         | 
| 1009 1009 | 
             
                    get_mode(path).should == 0644
         | 
| 1010 1010 | 
             
                  end
         | 
| 1011 1011 | 
             
                end
         | 
| @@ -4,6 +4,8 @@ require 'puppet/indirector' | |
| 4 4 | 
             
            require 'puppet/indirector/errors'
         | 
| 5 5 | 
             
            require 'puppet/indirector/rest'
         | 
| 6 6 |  | 
| 7 | 
            +
            HTTP_ERROR_CODES = [300, 400, 500]
         | 
| 8 | 
            +
             | 
| 7 9 | 
             
            # Just one from each category since the code makes no real distinctions
         | 
| 8 10 | 
             
            shared_examples_for "a REST terminus method" do |terminus_method|
         | 
| 9 11 | 
             
              describe "when talking to an older master" do
         | 
| @@ -26,7 +28,6 @@ shared_examples_for "a REST terminus method" do |terminus_method| | |
| 26 28 | 
             
                end
         | 
| 27 29 | 
             
              end
         | 
| 28 30 |  | 
| 29 | 
            -
              HTTP_ERROR_CODES = [300, 400, 500]
         | 
| 30 31 | 
             
              HTTP_ERROR_CODES.each do |code|
         | 
| 31 32 | 
             
                describe "when the response code is #{code}" do
         | 
| 32 33 | 
             
                  let(:response) { mock_response(code, 'error messaged!!!') }
         | 
| @@ -63,27 +63,31 @@ describe "Puppet Network Format" do | |
| 63 63 | 
             
                  @yaml.intern(String, YAML.dump(:foo)).should == "foo"
         | 
| 64 64 | 
             
                end
         | 
| 65 65 |  | 
| 66 | 
            -
                it "should fail when type does not match deserialized form and has no from_pson" do
         | 
| 67 | 
            -
                  expect do
         | 
| 68 | 
            -
                    @yaml.intern(Hash, YAML.dump("foo"))
         | 
| 69 | 
            -
                  end.to raise_error(NoMethodError)
         | 
| 70 | 
            -
                end
         | 
| 71 | 
            -
             | 
| 72 66 | 
             
                it "should load from yaml when deserializing an array" do
         | 
| 73 67 | 
             
                  text = YAML.dump(["foo"])
         | 
| 74 68 | 
             
                  @yaml.intern_multiple(String, text).should == ["foo"]
         | 
| 75 69 | 
             
                end
         | 
| 76 70 |  | 
| 77 | 
            -
                it " | 
| 71 | 
            +
                it "fails intelligibly instead of calling to_pson with something other than a hash" do
         | 
| 72 | 
            +
                  expect do
         | 
| 73 | 
            +
                    @yaml.intern(Puppet::Node, '')
         | 
| 74 | 
            +
                  end.to raise_error(Puppet::Network::FormatHandler::FormatError, /did not contain a valid instance/)
         | 
| 75 | 
            +
                end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                it "fails intelligibly when intern_multiple is called and yaml doesn't decode to an array" do
         | 
| 78 78 | 
             
                  expect do
         | 
| 79 | 
            -
                    @yaml.intern_multiple( | 
| 80 | 
            -
                  end.to raise_error( | 
| 79 | 
            +
                    @yaml.intern_multiple(Puppet::Node, '')
         | 
| 80 | 
            +
                  end.to raise_error(Puppet::Network::FormatHandler::FormatError, /did not contain a collection/)
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                it "fails intelligibly instead of calling to_pson with something other than a hash when interning multiple" do
         | 
| 84 | 
            +
                  expect do
         | 
| 85 | 
            +
                    @yaml.intern_multiple(Puppet::Node, YAML.dump(["hello"]))
         | 
| 86 | 
            +
                  end.to raise_error(Puppet::Network::FormatHandler::FormatError, /did not contain a valid instance/)
         | 
| 81 87 | 
             
                end
         | 
| 82 88 | 
             
              end
         | 
| 83 89 |  | 
| 84 90 | 
             
              describe "base64 compressed yaml", :if => Puppet.features.zlib? do
         | 
| 85 | 
            -
                yaml = Puppet::Network::FormatHandler.format(:b64_zlib_yaml)
         | 
| 86 | 
            -
             | 
| 87 91 | 
             
                before do
         | 
| 88 92 | 
             
                  @yaml = Puppet::Network::FormatHandler.format(:b64_zlib_yaml)
         | 
| 89 93 | 
             
                end
         | 
| @@ -294,6 +298,12 @@ describe "Puppet Network Format" do | |
| 294 298 | 
             
                    PsonTest.expects(:from_pson).with("baz").returns "BAZ"
         | 
| 295 299 | 
             
                    @pson.intern_multiple(PsonTest, text).should == %w{BAR BAZ}
         | 
| 296 300 | 
             
                  end
         | 
| 301 | 
            +
             | 
| 302 | 
            +
                  it "fails intelligibly when given invalid data" do
         | 
| 303 | 
            +
                    expect do
         | 
| 304 | 
            +
                      @pson.intern(Puppet::Node, '')
         | 
| 305 | 
            +
                    end.to raise_error(PSON::ParserError, /source did not contain any PSON/)
         | 
| 306 | 
            +
                  end
         | 
| 297 307 | 
             
                end
         | 
| 298 308 | 
             
              end
         | 
| 299 309 |  | 
| @@ -17,6 +17,10 @@ describe Puppet::Network::HTTP::Handler do | |
| 17 17 | 
             
                    @data = data
         | 
| 18 18 | 
             
                  end
         | 
| 19 19 |  | 
| 20 | 
            +
                  def self.from_raw(raw)
         | 
| 21 | 
            +
                    new(nil, raw)
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
             | 
| 20 24 | 
             
                  def self.from_pson(pson)
         | 
| 21 25 | 
             
                    new(pson["name"], pson["data"])
         | 
| 22 26 | 
             
                  end
         | 
| @@ -33,7 +37,6 @@ describe Puppet::Network::HTTP::Handler do | |
| 33 37 | 
             
                  end
         | 
| 34 38 | 
             
                end
         | 
| 35 39 |  | 
| 36 | 
            -
                # The subclass must not be all caps even though the superclass is
         | 
| 37 40 | 
             
                class Puppet::TestModel::Memory < Puppet::Indirector::Memory
         | 
| 38 41 | 
             
                end
         | 
| 39 42 |  | 
| @@ -443,12 +446,23 @@ describe Puppet::Network::HTTP::Handler do | |
| 443 446 | 
             
                end
         | 
| 444 447 |  | 
| 445 448 | 
             
                describe "when saving a model instance" do
         | 
| 446 | 
            -
                  it " | 
| 447 | 
            -
                     | 
| 449 | 
            +
                  it "allows an empty body when the format supports it" do
         | 
| 450 | 
            +
                    class Puppet::TestModel::Nonvalidatingmemory < Puppet::TestModel::Memory
         | 
| 451 | 
            +
                      def validate_key(_)
         | 
| 452 | 
            +
                        # nothing
         | 
| 453 | 
            +
                      end
         | 
| 454 | 
            +
                    end
         | 
| 455 | 
            +
             | 
| 456 | 
            +
                    indirection.terminus_class = :nonvalidatingmemory
         | 
| 457 | 
            +
             | 
| 458 | 
            +
                    data = Puppet::TestModel.new("test", '')
         | 
| 448 459 | 
             
                    request = a_request_that_submits(data)
         | 
| 460 | 
            +
                    request[:content_type_header] = "application/x-raw"
         | 
| 449 461 | 
             
                    request[:body] = ''
         | 
| 450 462 |  | 
| 451 | 
            -
                     | 
| 463 | 
            +
                    handler.do_save(indirection.name, "test", {}, request, response)
         | 
| 464 | 
            +
             | 
| 465 | 
            +
                    Puppet::TestModel.indirection.find("test").data.should == ''
         | 
| 452 466 | 
             
                  end
         | 
| 453 467 |  | 
| 454 468 | 
             
                  it "saves the data sent in the request" do
         | 
| @@ -143,7 +143,7 @@ describe Puppet::Node::Environment do | |
| 143 143 | 
             
                  it "should use the current working directory to fully-qualify unqualified paths" do
         | 
| 144 144 | 
             
                    FileTest.stubs(:directory?).returns true
         | 
| 145 145 |  | 
| 146 | 
            -
                    two = File.expand_path( | 
| 146 | 
            +
                    two = File.expand_path("two")
         | 
| 147 147 | 
             
                    env.validate_dirs([@path_one, 'two']).should == [@path_one, two]
         | 
| 148 148 | 
             
                  end
         | 
| 149 149 | 
             
                end
         | 
| @@ -70,9 +70,8 @@ describe Puppet::Parser::Files do | |
| 70 70 | 
             
                it "should accept relative templatedirs" do
         | 
| 71 71 | 
             
                  FileTest.stubs(:exist?).returns true
         | 
| 72 72 | 
             
                  Puppet[:templatedir] = "my/templates"
         | 
| 73 | 
            -
                   | 
| 74 | 
            -
                   | 
| 75 | 
            -
                  Puppet::Parser::Files.find_template("mytemplate").should == File.expand_path(File.join(Dir.getwd,"my/templates/mytemplate"))
         | 
| 73 | 
            +
                  File.expects(:directory?).with(File.expand_path("my/templates")).returns(true)
         | 
| 74 | 
            +
                  Puppet::Parser::Files.find_template("mytemplate").should == File.expand_path("my/templates/mytemplate")
         | 
| 76 75 | 
             
                end
         | 
| 77 76 |  | 
| 78 77 | 
             
                it "should use the environment templatedir if no module is found and an environment is specified" do
         | 
| @@ -170,9 +170,7 @@ describe Puppet::Settings::FileSetting do | |
| 170 170 |  | 
| 171 171 | 
             
                it "should fully qualified returned files if necessary (#795)" do
         | 
| 172 172 | 
             
                  @settings.stubs(:value).with(:myfile).returns "myfile"
         | 
| 173 | 
            -
                  path = File. | 
| 174 | 
            -
                  # Dir.getwd can return windows paths with backslashes, so we normalize them using expand_path
         | 
| 175 | 
            -
                  path = File.expand_path(path) if Puppet.features.microsoft_windows?
         | 
| 173 | 
            +
                  path = File.expand_path('myfile')
         | 
| 176 174 | 
             
                  @file.to_resource.title.should == path
         | 
| 177 175 | 
             
                end
         | 
| 178 176 |  | 
    
        data/spec/unit/util_spec.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: puppet
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3.3.1 | 
| 4 | 
            +
              version: 3.3.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Puppet Labs
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2013-10- | 
| 11 | 
            +
            date: 2013-10-07 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: facter
         | 
| @@ -2172,9 +2172,9 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 2172 2172 | 
             
                  version: '0'
         | 
| 2173 2173 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 2174 2174 | 
             
              requirements:
         | 
| 2175 | 
            -
              - - ' | 
| 2175 | 
            +
              - - '>='
         | 
| 2176 2176 | 
             
                - !ruby/object:Gem::Version
         | 
| 2177 | 
            -
                  version:  | 
| 2177 | 
            +
                  version: '0'
         | 
| 2178 2178 | 
             
            requirements: []
         | 
| 2179 2179 | 
             
            rubyforge_project: puppet
         | 
| 2180 2180 | 
             
            rubygems_version: 2.0.3
         |