)]}'
{"lib/puppet_x/keystone/composite_namevar.rb":[{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"aa202904ec153eaf7800db8c3e12cafd63687fce","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        def self.included(klass)"},{"line_number":70,"context_line":"          klass.class_eval do"},{"line_number":71,"context_line":"            defaultto do"},{"line_number":72,"context_line":"              fail(\u0027Type is a required parameter\u0027)"},{"line_number":73,"context_line":"            end"},{"line_number":74,"context_line":"          end"},{"line_number":75,"context_line":"        end"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"3a29b11f_202598ad","line":72,"updated":"2015-10-24 15:26:40.000000000","message":"Does it tell you which parameter/property is required?","commit_id":"bc227084cf83a58596e9ad8249aad6693de5cbf7"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"35c2afecf3abd807c7b23c65d56c15967ae215aa","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        def self.included(klass)"},{"line_number":70,"context_line":"          klass.class_eval do"},{"line_number":71,"context_line":"            defaultto do"},{"line_number":72,"context_line":"              fail(\u0027Type is a required parameter\u0027)"},{"line_number":73,"context_line":"            end"},{"line_number":74,"context_line":"          end"},{"line_number":75,"context_line":"        end"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"3a29b11f_84d7c722","line":72,"updated":"2015-10-26 13:12:03.000000000","message":"I have fixed the code to do just that.  Thanks.","commit_id":"bc227084cf83a58596e9ad8249aad6693de5cbf7"}],"spec/acceptance/basic_keystone_spec.rb":[{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"9715c0c12c8a92dbb73f5c5ed7d270f41fd2585f","unresolved":false,"context_lines":[{"line_number":272,"context_line":"      end"},{"line_number":273,"context_line":"    end"},{"line_number":274,"context_line":"  end"},{"line_number":275,"context_line":"  describe \u0027composite namevar for keystone_service\u0027 do"},{"line_number":276,"context_line":"    let(:pp) do"},{"line_number":277,"context_line":"      \u003c\u003c-EOM"},{"line_number":278,"context_line":"      keystone_service { \u0027service_1::type_1\u0027: ensure \u003d\u003e present }"}],"source_content_type":"text/x-ruby","patch_set":10,"id":"fa80f949_d121dbb5","line":275,"updated":"2015-11-04 19:11:41.000000000","message":"could you move the test to the wsgi file, because this file aims to be dropped one day, since eventlet is dropped in Mitaka.\n\nThanks","commit_id":"95e0852c54275bcaa6340655c30f7bc5d68be4a3"}],"spec/shared_examples.rb":[{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"aa202904ec153eaf7800db8c3e12cafd63687fce","unresolved":false,"context_lines":[{"line_number":13,"context_line":"  end"},{"line_number":14,"context_line":"  let(:resource) { current_class.new(:title \u003d\u003e title) }"},{"line_number":15,"context_line":"  it \u0027should parse this title correctly\u0027 do"},{"line_number":16,"context_line":"    unless title.match(/[^@]::/) || !current_class.name.match(/(?:user|tenant)/i)"},{"line_number":17,"context_line":"      PuppetX::Keystone::CompositeNamevar.expects(:defaultto).returns(\u0027Default\u0027)"},{"line_number":18,"context_line":"    end"},{"line_number":19,"context_line":"    expect(resource.to_hash).to include(result)"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"3a29b11f_402a1480","line":16,"updated":"2015-10-24 15:26:40.000000000","message":"Does this check apply to all domain scoped resources?  So it will apply to groups and trusts?\nDoes this check catch keystone_user_role as well?","commit_id":"bc227084cf83a58596e9ad8249aad6693de5cbf7"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"35c2afecf3abd807c7b23c65d56c15967ae215aa","unresolved":false,"context_lines":[{"line_number":13,"context_line":"  end"},{"line_number":14,"context_line":"  let(:resource) { current_class.new(:title \u003d\u003e title) }"},{"line_number":15,"context_line":"  it \u0027should parse this title correctly\u0027 do"},{"line_number":16,"context_line":"    unless title.match(/[^@]::/) || !current_class.name.match(/(?:user|tenant)/i)"},{"line_number":17,"context_line":"      PuppetX::Keystone::CompositeNamevar.expects(:defaultto).returns(\u0027Default\u0027)"},{"line_number":18,"context_line":"    end"},{"line_number":19,"context_line":"    expect(resource.to_hash).to include(result)"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"3a29b11f_64d2ab36","line":16,"updated":"2015-10-26 13:12:03.000000000","message":"The \"to_hash\" is calling the title_definitions, so it should work to test any type that make use of composite namevar.  It is already used for kestone_user_role.  The call to defaultto here is very tighly bound to user and tenant resource, so I made it optional with the \"unless ...\" .  Maybe I should add it directly to user and tenant to keep this code more generic.  I really think that a big refactor using this kind of shared_examples could be useful to a lot of other modules.  But that refactor should wait for a specific patch I think.","commit_id":"bc227084cf83a58596e9ad8249aad6693de5cbf7"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"9199a3fe4cc9cfe9b67a6e47f9aa15e2a56275c7","unresolved":false,"context_lines":[{"line_number":32,"context_line":"  end"},{"line_number":33,"context_line":"  prefix \u003d \u0027\u0027"},{"line_number":34,"context_line":"  if attr.is_a?(String)"},{"line_number":35,"context_line":"    prefix \u003d attr"},{"line_number":36,"context_line":"  end"},{"line_number":37,"context_line":"  let(:resource) { described_class.new(:title \u003d\u003e title) }"},{"line_number":38,"context_line":"  it \u0027croak on the missing required parameter\u0027 do"}],"source_content_type":"text/x-ruby","patch_set":9,"id":"fa80f949_6d493c8b","line":35,"updated":"2015-11-04 15:22:32.000000000","message":"should this be prefix \u003d \"#{attr} \" ? or prefix \u003d attr + \u0027 \u0027?\nYou need a space after attr?","commit_id":"16329a756fbefeb49b18394e681486eec2228cdf"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"64284345ce661c5fb85f8cd06344828f8ed530c5","unresolved":false,"context_lines":[{"line_number":32,"context_line":"  end"},{"line_number":33,"context_line":"  prefix \u003d \u0027\u0027"},{"line_number":34,"context_line":"  if attr.is_a?(String)"},{"line_number":35,"context_line":"    prefix \u003d attr"},{"line_number":36,"context_line":"  end"},{"line_number":37,"context_line":"  let(:resource) { described_class.new(:title \u003d\u003e title) }"},{"line_number":38,"context_line":"  it \u0027croak on the missing required parameter\u0027 do"}],"source_content_type":"text/x-ruby","patch_set":9,"id":"fa80f949_f3018a6b","line":35,"in_reply_to":"fa80f949_6d493c8b","updated":"2015-11-04 17:01:17.000000000","message":"Well I tested that it\u0027s a string so I don\u0027t need the cast.  For the space well, it is required, so I\u0027ll add it.","commit_id":"16329a756fbefeb49b18394e681486eec2228cdf"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"9199a3fe4cc9cfe9b67a6e47f9aa15e2a56275c7","unresolved":false,"context_lines":[{"line_number":42,"context_line":"end"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"shared_examples_for \u0027croak on read-only parameter\u0027 do |resource|"},{"line_number":45,"context_line":"  prefix \u003d resource.delete(:_prefix)"},{"line_number":46,"context_line":"  it \u0027should raise an error\u0027 do"},{"line_number":47,"context_line":"    expect { described_class.new(resource) }"},{"line_number":48,"context_line":"      .to raise_error(Puppet::ResourceError, \"#{prefix}Read-only property\")"}],"source_content_type":"text/x-ruby","patch_set":9,"id":"fa80f949_ed552c1d","line":45,"updated":"2015-11-04 15:22:32.000000000","message":"see above","commit_id":"16329a756fbefeb49b18394e681486eec2228cdf"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"64284345ce661c5fb85f8cd06344828f8ed530c5","unresolved":false,"context_lines":[{"line_number":42,"context_line":"end"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"shared_examples_for \u0027croak on read-only parameter\u0027 do |resource|"},{"line_number":45,"context_line":"  prefix \u003d resource.delete(:_prefix)"},{"line_number":46,"context_line":"  it \u0027should raise an error\u0027 do"},{"line_number":47,"context_line":"    expect { described_class.new(resource) }"},{"line_number":48,"context_line":"      .to raise_error(Puppet::ResourceError, \"#{prefix}Read-only property\")"}],"source_content_type":"text/x-ruby","patch_set":9,"id":"fa80f949_d38326cb","line":45,"in_reply_to":"fa80f949_ed552c1d","updated":"2015-11-04 17:01:17.000000000","message":"delete would return \"nil\" if not there and nil is casted to \"\".  For the space, I\u0027ll add it too.","commit_id":"16329a756fbefeb49b18394e681486eec2228cdf"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"029cf570a386d7fff0fcebbe206bd19ee1599ed2","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  let(:resource) { described_class.new(:title \u003d\u003e title) }"},{"line_number":36,"context_line":"  it \u0027croak on the missing required parameter\u0027 do"},{"line_number":37,"context_line":"    expect { resource }"},{"line_number":38,"context_line":"      .to raise_error(Puppet::ResourceError, \"#{prefix} Required parameter.\")"},{"line_number":39,"context_line":"  end"},{"line_number":40,"context_line":"end"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":10,"id":"fa80f949_1e83f557","line":38,"updated":"2015-11-04 17:10:46.000000000","message":"If prefix \u003d\u003d \u0027\u0027 this will print \" Required parameter.\" with the leading space.  Is this ok?","commit_id":"95e0852c54275bcaa6340655c30f7bc5d68be4a3"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"2ba66c20bf81843b7314261485440b17729d04bf","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  let(:resource) { described_class.new(:title \u003d\u003e title) }"},{"line_number":36,"context_line":"  it \u0027croak on the missing required parameter\u0027 do"},{"line_number":37,"context_line":"    expect { resource }"},{"line_number":38,"context_line":"      .to raise_error(Puppet::ResourceError, \"#{prefix} Required parameter.\")"},{"line_number":39,"context_line":"  end"},{"line_number":40,"context_line":"end"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":10,"id":"fa80f949_85dc6913","line":38,"in_reply_to":"fa80f949_045ba22f","updated":"2015-11-04 20:55:56.000000000","message":"ack","commit_id":"95e0852c54275bcaa6340655c30f7bc5d68be4a3"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"2df49d764c0331ae0c6ef094b391daf0eb54d469","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  let(:resource) { described_class.new(:title \u003d\u003e title) }"},{"line_number":36,"context_line":"  it \u0027croak on the missing required parameter\u0027 do"},{"line_number":37,"context_line":"    expect { resource }"},{"line_number":38,"context_line":"      .to raise_error(Puppet::ResourceError, \"#{prefix} Required parameter.\")"},{"line_number":39,"context_line":"  end"},{"line_number":40,"context_line":"end"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":10,"id":"fa80f949_045ba22f","line":38,"in_reply_to":"fa80f949_1e83f557","updated":"2015-11-04 17:57:25.000000000","message":"It will not.  The required.rb implement the error like this :\n\n    \"#{custom}\" \\\n      \"Parameter #{name} failed on \" \\\n      \"#{resource.class.to_s.split(\u0027::\u0027)[-1]}[#{resource.name}]: \" \\\n      \u0027Required parameter.\u0027)\n\nso the user has always to pass:\n\n   \"Parameter foo failed on Keystone_blah[bar_name]:\"\n\nThis make the test very deterministic, which, I think, is good.","commit_id":"95e0852c54275bcaa6340655c30f7bc5d68be4a3"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"029cf570a386d7fff0fcebbe206bd19ee1599ed2","unresolved":false,"context_lines":[{"line_number":43,"context_line":"  prefix \u003d resource.delete(:_prefix)"},{"line_number":44,"context_line":"  it \u0027should raise an error\u0027 do"},{"line_number":45,"context_line":"    expect { described_class.new(resource) }"},{"line_number":46,"context_line":"      .to raise_error(Puppet::ResourceError, \"#{prefix} Read-only property.\")"},{"line_number":47,"context_line":"  end"},{"line_number":48,"context_line":"end"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":10,"id":"fa80f949_9e97e58f","line":46,"updated":"2015-11-04 17:10:46.000000000","message":"If prefix.nil? is true this will print \" Read-only property.\" with the leading space.  Is this ok?","commit_id":"95e0852c54275bcaa6340655c30f7bc5d68be4a3"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"2ba66c20bf81843b7314261485440b17729d04bf","unresolved":false,"context_lines":[{"line_number":43,"context_line":"  prefix \u003d resource.delete(:_prefix)"},{"line_number":44,"context_line":"  it \u0027should raise an error\u0027 do"},{"line_number":45,"context_line":"    expect { described_class.new(resource) }"},{"line_number":46,"context_line":"      .to raise_error(Puppet::ResourceError, \"#{prefix} Read-only property.\")"},{"line_number":47,"context_line":"  end"},{"line_number":48,"context_line":"end"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":10,"id":"fa80f949_65086592","line":46,"in_reply_to":"fa80f949_4478ca8f","updated":"2015-11-04 20:55:56.000000000","message":"ack","commit_id":"95e0852c54275bcaa6340655c30f7bc5d68be4a3"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"2df49d764c0331ae0c6ef094b391daf0eb54d469","unresolved":false,"context_lines":[{"line_number":43,"context_line":"  prefix \u003d resource.delete(:_prefix)"},{"line_number":44,"context_line":"  it \u0027should raise an error\u0027 do"},{"line_number":45,"context_line":"    expect { described_class.new(resource) }"},{"line_number":46,"context_line":"      .to raise_error(Puppet::ResourceError, \"#{prefix} Read-only property.\")"},{"line_number":47,"context_line":"  end"},{"line_number":48,"context_line":"end"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":10,"id":"fa80f949_4478ca8f","line":46,"in_reply_to":"fa80f949_9e97e58f","updated":"2015-11-04 17:57:25.000000000","message":"Same answer.  But this time it\u0027s puppet in validate which create the message.  I just copied it in the required resource.","commit_id":"95e0852c54275bcaa6340655c30f7bc5d68be4a3"}]}
