)]}'
{"lib/puppet/provider/cinder_type/openstack.rb":[{"author":{"_account_id":16771,"name":"mpolenchuk","email":"mpolenchuk@mirantis.com","username":"mpolenchuk"},"change_message_id":"5656fa208673d8feeec2da6b801a2ae983a1fd0c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    @property_hash[:ensure] \u003d\u003d :present"},{"line_number":29,"context_line":"  end"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"  def properties"},{"line_number":32,"context_line":"    @property_hash[:properties]"},{"line_number":33,"context_line":"  end"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"  def properties\u003d(value)"},{"line_number":36,"context_line":"    @property_flush[:properties] \u003d value"},{"line_number":37,"context_line":"  end"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"  def self.instances"},{"line_number":40,"context_line":"    list \u003d request(\u0027volume type\u0027, \u0027list\u0027, \u0027--long\u0027)"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"5a5ae5dd_b2c3b9ec","line":37,"range":{"start_line":31,"start_character":2,"end_line":37,"end_character":5},"updated":"2016-02-05 08:52:51.000000000","message":"mk_resource_methods should do a trick","commit_id":"df702dce66ed777eedc825bafcf57383f8f6d70e"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"427f1964bfd0fe25377fc660153f5ad24f06ffa4","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    @property_hash[:ensure] \u003d\u003d :present"},{"line_number":29,"context_line":"  end"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"  def properties"},{"line_number":32,"context_line":"    @property_hash[:properties]"},{"line_number":33,"context_line":"  end"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"  def properties\u003d(value)"},{"line_number":36,"context_line":"    @property_flush[:properties] \u003d value"},{"line_number":37,"context_line":"  end"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"  def self.instances"},{"line_number":40,"context_line":"    list \u003d request(\u0027volume type\u0027, \u0027list\u0027, \u0027--long\u0027)"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"5a5ae5dd_e8185e77","line":37,"range":{"start_line":31,"start_character":2,"end_line":37,"end_character":5},"in_reply_to":"5a5ae5dd_b2c3b9ec","updated":"2016-02-05 09:12:39.000000000","message":"According to the documentation, mk_resource_methods will use only @property_hash (is) variable. I\u0027m using here also @property_flush (should) variable, which will checked on flushing.","commit_id":"df702dce66ed777eedc825bafcf57383f8f6d70e"},{"author":{"_account_id":16771,"name":"mpolenchuk","email":"mpolenchuk@mirantis.com","username":"mpolenchuk"},"change_message_id":"ff28fb34a80b3de6a0551c0a769b9694f8470c9c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    @property_hash[:ensure] \u003d\u003d :present"},{"line_number":29,"context_line":"  end"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"  def properties"},{"line_number":32,"context_line":"    @property_hash[:properties]"},{"line_number":33,"context_line":"  end"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"  def properties\u003d(value)"},{"line_number":36,"context_line":"    @property_flush[:properties] \u003d value"},{"line_number":37,"context_line":"  end"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"  def self.instances"},{"line_number":40,"context_line":"    list \u003d request(\u0027volume type\u0027, \u0027list\u0027, \u0027--long\u0027)"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"5a5ae5dd_68154e47","line":37,"range":{"start_line":31,"start_character":2,"end_line":37,"end_character":5},"in_reply_to":"5a5ae5dd_e8185e77","updated":"2016-02-05 09:28:56.000000000","message":"Ok thanx, my bad","commit_id":"df702dce66ed777eedc825bafcf57383f8f6d70e"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"e90cb95ea468f88cf95bbd9fc39e317161330801","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    return h"},{"line_number":74,"context_line":"  end"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"  def flush"},{"line_number":77,"context_line":"    if @property_flush \u0026\u0026 !@property_flush.empty?"},{"line_number":78,"context_line":"      properties \u003d []"},{"line_number":79,"context_line":"      @property_flush[:properties].each do |key,value|"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"3a57f1b5_1a6a06b4","line":76,"updated":"2016-02-11 10:37:30.000000000","message":"You don\u0027t really need a flush definition here are you\u0027re updating only one parameter.  This could go straight in the \"def properties\u003d(value)\" definition.\n\nYou could then make use of mk_resource_methods and remove the def initialize.","commit_id":"7c811c17a0835369c2734881a44985dea3edc20a"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"0562f0a2d443a768d2724dd513afaac0fe69f090","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"  def properties\u003d(value)"},{"line_number":36,"context_line":"    properties \u003d []"},{"line_number":37,"context_line":"    (value - @property_hash[:properties]).each do |item|"},{"line_number":38,"context_line":"      properties \u003c\u003c \u0027--property\u0027 \u003c\u003c item"},{"line_number":39,"context_line":"    end"},{"line_number":40,"context_line":"    unless properties.empty?"}],"source_content_type":"text/x-ruby","patch_set":11,"id":"dae33548_bd22c3b7","line":37,"updated":"2016-02-15 11:46:05.000000000","message":"I\u0027m not familiar with the update of a property in glance, so take this with a grain of salt, it may be irrelevant.\n\nHow would an user update the *value* of a key ?  As I see it you cannot do that using this simple set difference, each new value would become a new property.\n\nWouldn\u0027t it be possible to take the hash out of properties and check the key for existing one and update their value instead of creating new one, only creating new one when needed ?","commit_id":"d383273a433f074fbbe703f39b45935de5d2d235"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"54c623639c3d49eb185efcba90b6014cf2696073","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"  def properties\u003d(value)"},{"line_number":36,"context_line":"    properties \u003d []"},{"line_number":37,"context_line":"    (value - @property_hash[:properties]).each do |item|"},{"line_number":38,"context_line":"      properties \u003c\u003c \u0027--property\u0027 \u003c\u003c item"},{"line_number":39,"context_line":"    end"},{"line_number":40,"context_line":"    unless properties.empty?"}],"source_content_type":"text/x-ruby","patch_set":11,"id":"dae33548_641fc05f","line":37,"in_reply_to":"dae33548_9e64d522","updated":"2016-02-16 15:45:05.000000000","message":"Yeah, \u0027volume type set --property key2\u003dnew_value\u0027 will update current key2 to new_value.","commit_id":"d383273a433f074fbbe703f39b45935de5d2d235"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"8308dabc420702d22719ecd2548b915a5fb3e92c","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"  def properties\u003d(value)"},{"line_number":36,"context_line":"    properties \u003d []"},{"line_number":37,"context_line":"    (value - @property_hash[:properties]).each do |item|"},{"line_number":38,"context_line":"      properties \u003c\u003c \u0027--property\u0027 \u003c\u003c item"},{"line_number":39,"context_line":"    end"},{"line_number":40,"context_line":"    unless properties.empty?"}],"source_content_type":"text/x-ruby","patch_set":11,"id":"dae33548_c3f6c6d6","line":37,"in_reply_to":"dae33548_bd22c3b7","updated":"2016-02-15 12:10:28.000000000","message":"irb(main):001:0\u003e properties_is \u003d [ \u0027key1\u003dvalue1\u0027, \u0027key2\u003dvalue2\u0027, \u0027key3\u003dvalue3\u0027 ]\n\u003d\u003e [\"key1\u003dvalue1\", \"key2\u003dvalue2\", \"key3\u003dvalue3\"]\n  irb(main):002:0\u003e properties_should \u003d [ \u0027key1\u003dvalue1\u0027, \u0027key2\u003dnew_value2\u0027, \u0027key4\u003dvalue4\u0027 ]\n\u003d\u003e [\"key1\u003dvalue1\", \"key2\u003dnew_value2\", \"key4\u003dvalue4\"]\n  irb(main):003:0\u003e properties_should - properties_is\n\u003d\u003e [\"key2\u003dnew_value2\", \"key4\u003dvalue4\"]\n\nit will work correctly if we want to update existing key. openstack client is also will update existing key.","commit_id":"d383273a433f074fbbe703f39b45935de5d2d235"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"22ad2baab92bdbab0cddc4b0b4c35f2b47096f1b","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"  def properties\u003d(value)"},{"line_number":36,"context_line":"    properties \u003d []"},{"line_number":37,"context_line":"    (value - @property_hash[:properties]).each do |item|"},{"line_number":38,"context_line":"      properties \u003c\u003c \u0027--property\u0027 \u003c\u003c item"},{"line_number":39,"context_line":"    end"},{"line_number":40,"context_line":"    unless properties.empty?"}],"source_content_type":"text/x-ruby","patch_set":11,"id":"dae33548_9e64d522","line":37,"in_reply_to":"dae33548_c3f6c6d6","updated":"2016-02-16 15:31:02.000000000","message":"Ok, so the \n\n   volume type set --property key2\u003dnew_value\n\ncommand will detect the existing key2 and update it.  no need for a specific \" volume type update\" or whatever.  Nice.\nSo you\u0027re code is enough :)","commit_id":"d383273a433f074fbbe703f39b45935de5d2d235"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"8308dabc420702d22719ecd2548b915a5fb3e92c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"  end"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"  def self.instances"},{"line_number":47,"context_line":"    list \u003d request(\u0027volume type\u0027, \u0027list\u0027, \u0027--long\u0027)"},{"line_number":48,"context_line":"    list.collect do |type|"},{"line_number":49,"context_line":"      new({"},{"line_number":50,"context_line":"        :name       \u003d\u003e type[:name],"}],"source_content_type":"text/x-ruby","patch_set":11,"id":"dae33548_83b03ef6","line":47,"updated":"2016-02-15 12:10:28.000000000","message":"also i have a question to reviewers here: do we need to cache list of types or not?","commit_id":"d383273a433f074fbbe703f39b45935de5d2d235"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"54c623639c3d49eb185efcba90b6014cf2696073","unresolved":false,"context_lines":[{"line_number":44,"context_line":"  end"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"  def self.instances"},{"line_number":47,"context_line":"    list \u003d request(\u0027volume type\u0027, \u0027list\u0027, \u0027--long\u0027)"},{"line_number":48,"context_line":"    list.collect do |type|"},{"line_number":49,"context_line":"      new({"},{"line_number":50,"context_line":"        :name       \u003d\u003e type[:name],"}],"source_content_type":"text/x-ruby","patch_set":11,"id":"dae33548_4903b50f","line":47,"in_reply_to":"dae33548_491a956f","updated":"2016-02-16 15:45:05.000000000","message":"Yes, and as we have only one provider for now - cache is not needed now.","commit_id":"d383273a433f074fbbe703f39b45935de5d2d235"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"22ad2baab92bdbab0cddc4b0b4c35f2b47096f1b","unresolved":false,"context_lines":[{"line_number":44,"context_line":"  end"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"  def self.instances"},{"line_number":47,"context_line":"    list \u003d request(\u0027volume type\u0027, \u0027list\u0027, \u0027--long\u0027)"},{"line_number":48,"context_line":"    list.collect do |type|"},{"line_number":49,"context_line":"      new({"},{"line_number":50,"context_line":"        :name       \u003d\u003e type[:name],"}],"source_content_type":"text/x-ruby","patch_set":11,"id":"dae33548_491a956f","line":47,"in_reply_to":"dae33548_83b03ef6","updated":"2016-02-16 15:31:02.000000000","message":"As explain by _ody_ and my during the meeting, this is called once by provider.  So, as long as you don\u0027t have any other provider using it, no need to cache it.","commit_id":"d383273a433f074fbbe703f39b45935de5d2d235"}],"lib/puppet/type/cinder_type.rb":[{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"e90cb95ea468f88cf95bbd9fc39e317161330801","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"  newproperty(:properties) do"},{"line_number":12,"context_line":"    desc \u0027The properties of the cinder type. Should be string in format: \u003ckey\u003e\u003d\u003cvalue\u003e, .., \u003ckey\u003e\u003d\u003cvalue\u003e\u0027"},{"line_number":13,"context_line":"    newvalues(/^(([\\w]+\u003d[\\w]+(,[\\w]+\\b)*)(, )*?)+$/)"},{"line_number":14,"context_line":"    munge do |value|"},{"line_number":15,"context_line":"    h \u003d Hash.new"},{"line_number":16,"context_line":"      value.split(\", \").map{|el| el.strip()}.each do |pair|"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"3a57f1b5_f907ff19","line":13,"updated":"2016-02-11 10:37:30.000000000","message":"This regex is contrived and kind of false.  This string works for instance:\n\n\"a\u003da,aaa,a, , , , , , b\u003db, , , \"\n\nand this one does not:\n\nvmware:vmdk_type\u003dthin\n\nCheck here: http://rubular.com/r/jXio0y3zav\n\nA better one is \n\n^\\s*[^\u003d]+\u003d[^\u003d,\\s]+(?:\\s*,\\s*[^\u003d]+\u003d[^\u003d,\\s]+)*$\n\nhttp://rubular.com/r/2za1ioPA1g","commit_id":"7c811c17a0835369c2734881a44985dea3edc20a"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"e90cb95ea468f88cf95bbd9fc39e317161330801","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    newvalues(/^(([\\w]+\u003d[\\w]+(,[\\w]+\\b)*)(, )*?)+$/)"},{"line_number":14,"context_line":"    munge do |value|"},{"line_number":15,"context_line":"    h \u003d Hash.new"},{"line_number":16,"context_line":"      value.split(\", \").map{|el| el.strip()}.each do |pair|"},{"line_number":17,"context_line":"        key, value \u003d pair.split(\"\u003d\")"},{"line_number":18,"context_line":"        h[key] \u003d value"},{"line_number":19,"context_line":"      end"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"3a57f1b5_85d21cd1","line":16,"updated":"2016-02-11 10:37:30.000000000","message":"This split may fail with \"type_1\u003dvalue_1,type_2\u003dvalue_2\" kind of string (without space after the comma).\n\nA better one would be\n\nsplit(/\\s*,\\s*/)\n\nThis would also avoid the call to strip.","commit_id":"7c811c17a0835369c2734881a44985dea3edc20a"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"b307991b5a2b8ed34c142f75ed380b66bd93bec3","unresolved":false,"context_lines":[{"line_number":15,"context_line":"      is.sort \u003d\u003d should.sort"},{"line_number":16,"context_line":"    end"},{"line_number":17,"context_line":"    validate do |value|"},{"line_number":18,"context_line":"      raise ArgumentError, \"Properties doesn\u0027t match\" unless value.reject { |i| i.match(/^\\s*[^\u003d\\s]+\u003d[^\u003d\\s,]+$/) }.empty?"},{"line_number":19,"context_line":"    end"},{"line_number":20,"context_line":"    munge do |value|"},{"line_number":21,"context_line":"    h \u003d Hash.new"}],"source_content_type":"text/x-ruby","patch_set":9,"id":"3a57f1b5_c3b47036","line":18,"updated":"2016-02-11 17:48:41.000000000","message":"1/ The regexp is wrong :)\n\nAs it can be :\n\n\"key\u003dvalue1,value2\"\n\nthen the regex should be\n\n/^\\s*[^\u003d\\s]+\u003d[^\u003d\\s]+$/\n\nwithout the comma.  If you remove the \\s in the same character list, then the user can even do:\n\n\"key\u003dvalue1, value2\"\n\nNot sure that is something we want though, as we must make sure that the later cli command would work like this.  Better require no space.  Your call.\n\n2/ You should give a more informative message\n\n\"Property should be in the form of \u003ckey\u003dvalue1[,value2, ...]\"\n\n3/ Could you check that puppet is failing if the parameter is not array (I don\u0027t think so)\nIf that is not the case then:\n\nif !value.is_a?(Array)\n  raise ..., \"property should be an array of properties\"\nend\n\nor take this into account with by doing \nif !value.is_a?(Array); v \u003d [value]; end","commit_id":"3d16805edae317d2437cfd26a901af2b941aafa5"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"34bd13754b026619538a9ab48ba5f4083144bc5f","unresolved":false,"context_lines":[{"line_number":15,"context_line":"      is.sort \u003d\u003d should.sort"},{"line_number":16,"context_line":"    end"},{"line_number":17,"context_line":"    validate do |value|"},{"line_number":18,"context_line":"      raise ArgumentError, \"Properties doesn\u0027t match\" unless value.reject { |i| i.match(/^\\s*[^\u003d\\s]+\u003d[^\u003d\\s,]+$/) }.empty?"},{"line_number":19,"context_line":"    end"},{"line_number":20,"context_line":"    munge do |value|"},{"line_number":21,"context_line":"    h \u003d Hash.new"}],"source_content_type":"text/x-ruby","patch_set":9,"id":"3a57f1b5_a9e56ea4","line":18,"in_reply_to":"3a57f1b5_c3b47036","updated":"2016-02-12 13:02:10.000000000","message":"validate receive *each* element of the array, not the array.  It stop as soon as it fails.\n\nSo you should have a check like this:\n\n    raise ArgumentError, \"Properties doesn\u0027t match\" unless value.match(/^\\s*[^\u003d\\s]+\u003d[^\u003d\\s]+$/)\n\n(I also \"fixed\" the regex here)","commit_id":"3d16805edae317d2437cfd26a901af2b941aafa5"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"34bd13754b026619538a9ab48ba5f4083144bc5f","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    end"},{"line_number":20,"context_line":"    munge do |value|"},{"line_number":21,"context_line":"    h \u003d Hash.new"},{"line_number":22,"context_line":"      value.each do |item|"},{"line_number":23,"context_line":"        key, value \u003d pair.split(\"\u003d\")"},{"line_number":24,"context_line":"        h[key] \u003d value"},{"line_number":25,"context_line":"      end"}],"source_content_type":"text/x-ruby","patch_set":9,"id":"3a57f1b5_8988b2c6","line":22,"updated":"2016-02-12 13:02:10.000000000","message":"Idem here, the munge receive each element of the array not the array.","commit_id":"3d16805edae317d2437cfd26a901af2b941aafa5"}],"manifests/keystone/auth.pp":[{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"c4d5383c360b7a05dd7ca62b6cc391b4ee72319a","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"  if $configure_user_role {"},{"line_number":183,"context_line":"    Keystone_user_role[\"${auth_name}@${tenant}\"] ~\u003e Service \u003c| name \u003d\u003d \u0027cinder-api\u0027 |\u003e"},{"line_number":184,"context_line":"    Keystone_user_role[\"${auth_name}@${tenant}\"] -\u003e Cinder::Type \u003c| |\u003e"},{"line_number":185,"context_line":"  }"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"}"}],"source_content_type":"text/x-puppet","patch_set":13,"id":"7af24918_63712944","side":"PARENT","line":184,"range":{"start_line":184,"start_character":4,"end_line":184,"end_character":70},"updated":"2016-03-03 13:42:36.000000000","message":"that should be kept :)","commit_id":"06e52c20785a35abc75555ab332a603cf63bb877"}],"manifests/type.pp":[{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"d9976027a20065fd0944b6a547af330f6d7b710d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# \u003d\u003d Define: cinder::type"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Creates cinder type and assigns backends."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-puppet","patch_set":12,"id":"bae84128_9cf0cfca","side":"PARENT","line":1,"updated":"2016-02-24 14:52:30.000000000","message":"For backwards compatibility, we should keep this file and update it with a warning about the new types.","commit_id":"9cdc6f0eb9197e557f27fd7c6bf8393f4b13bde8"}],"manifests/type_set.pp":[{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"d9976027a20065fd0944b6a547af330f6d7b710d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# \u003d\u003dDefine: cinder::type_set"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Assigns keys after the volume type is set."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-puppet","patch_set":12,"id":"bae84128_bcbf93ce","side":"PARENT","line":1,"updated":"2016-02-24 14:52:30.000000000","message":"same","commit_id":"9cdc6f0eb9197e557f27fd7c6bf8393f4b13bde8"}],"spec/unit/provider/cinder_type/openstack_spec.rb":[{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"34bd13754b026619538a9ab48ba5f4083144bc5f","unresolved":false,"context_lines":[{"line_number":16,"context_line":"      {"},{"line_number":17,"context_line":"         :name       \u003d\u003e \u0027Backend_1\u0027,"},{"line_number":18,"context_line":"         :ensure     \u003d\u003e :present,"},{"line_number":19,"context_line":"         :properties \u003d\u003e \u0027key\u003dvalue, new_key\u003dnew_value\u0027,"},{"line_number":20,"context_line":"      }"},{"line_number":21,"context_line":"    end"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":9,"id":"3a57f1b5_29741e34","line":19,"updated":"2016-02-12 13:02:10.000000000","message":"Should be [\u0027key\u003dvalue\u0027, \u0027new_key\u003dnew_value\u0027]","commit_id":"3d16805edae317d2437cfd26a901af2b941aafa5"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"0562f0a2d443a768d2724dd513afaac0fe69f090","unresolved":false,"context_lines":[{"line_number":74,"context_line":"      end"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"      describe \u0027#string2array\u0027 do"},{"line_number":77,"context_line":"        it \u0027should return hash with key-value\u0027 do"},{"line_number":78,"context_line":"          s \u003d \"key\u003d\u0027value\u0027, key2\u003d\u0027value2\u0027\""},{"line_number":79,"context_line":"          expect(provider_class.string2array(s)).to eq([\u0027key\u003dvalue\u0027, \u0027key2\u003dvalue2\u0027])"},{"line_number":80,"context_line":"        end"}],"source_content_type":"text/x-ruby","patch_set":11,"id":"dae33548_bd3c8330","line":77,"updated":"2016-02-15 11:46:05.000000000","message":"return *array*","commit_id":"d383273a433f074fbbe703f39b45935de5d2d235"}],"spec/unit/type/cinder_type_spec.rb":[{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"b307991b5a2b8ed34c142f75ed380b66bd93bec3","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    service \u003d Puppet::Type.type(:service).new(:name \u003d\u003e \u0027cinder-api\u0027)"},{"line_number":21,"context_line":"    correct_input \u003d {"},{"line_number":22,"context_line":"      :name       \u003d\u003e \u0027test_type\u0027,"},{"line_number":23,"context_line":"      :properties \u003d\u003e [\u0027some_key1\u003dsome_value2\u0027, \u0027somekey\u003d2\u0027]"},{"line_number":24,"context_line":"    }"},{"line_number":25,"context_line":"    cinder_type \u003d Puppet::Type.type(:cinder_type).new(correct_input)"},{"line_number":26,"context_line":"    catalog.add_resource service, cinder_type"}],"source_content_type":"text/x-ruby","patch_set":9,"id":"3a57f1b5_4344001a","line":23,"updated":"2016-02-11 17:48:41.000000000","message":"You should check this case as well:\n\n[\u0027key1\u003dv1,v2\u0027, \u0027key3\u003dv3\u0027]","commit_id":"3d16805edae317d2437cfd26a901af2b941aafa5"}]}
