)]}'
{"recipes/mysql-server.rb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"18bce4a7529c37a30265f900cccaac9f0d016f97","unresolved":false,"context_lines":[{"line_number":49,"context_line":"  port node[\u0027mysql\u0027][\u0027port\u0027]"},{"line_number":50,"context_line":"  data_dir node[\u0027mysql\u0027][\u0027data_dir\u0027]"},{"line_number":51,"context_line":"  server_root_password super_password"},{"line_number":52,"context_line":"  server_debian_password node[\u0027mysql\u0027][\u0027server_debian_password\u0027]"},{"line_number":53,"context_line":"  server_repl_password node[\u0027mysql\u0027][\u0027server_repl_password\u0027]"},{"line_number":54,"context_line":"  allow_remote_root node[\u0027mysql\u0027][\u0027allow_remote_root\u0027]"},{"line_number":55,"context_line":"  remove_anonymous_users node[\u0027mysql\u0027][\u0027remove_anonymous_users\u0027]"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"fa98f980_07a8e81e","line":52,"updated":"2014-09-03 17:47:24.000000000","message":"Should we allow these two passwords to also come from a databag when nil?","commit_id":"a796bf6dc3a02318527d4df65d8b911b51eefc48"},{"author":{"_account_id":8001,"name":"John Warren","email":"jswarren@us.ibm.com","username":"jswarren"},"change_message_id":"fc5a7c1c59159ea43af30725176779ffaa02abf3","unresolved":false,"context_lines":[{"line_number":49,"context_line":"  port node[\u0027mysql\u0027][\u0027port\u0027]"},{"line_number":50,"context_line":"  data_dir node[\u0027mysql\u0027][\u0027data_dir\u0027]"},{"line_number":51,"context_line":"  server_root_password super_password"},{"line_number":52,"context_line":"  server_debian_password node[\u0027mysql\u0027][\u0027server_debian_password\u0027]"},{"line_number":53,"context_line":"  server_repl_password node[\u0027mysql\u0027][\u0027server_repl_password\u0027]"},{"line_number":54,"context_line":"  allow_remote_root node[\u0027mysql\u0027][\u0027allow_remote_root\u0027]"},{"line_number":55,"context_line":"  remove_anonymous_users node[\u0027mysql\u0027][\u0027remove_anonymous_users\u0027]"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"fa98f980_f4b5d47e","line":52,"in_reply_to":"fa98f980_07a8e81e","updated":"2014-09-08 14:40:35.000000000","message":"I\u0027m not disagreeing that this might be worthwhile to do.  However, it is my understanding that the scope of individual patches should be as focused as possible and that these additional changes are outside the scope of this change (as described in the commit message) and its associated blueprint referenced in the topic.  Also note that the additional required attributes [\u0027openstack\u0027][\u0027db\u0027][\u0027debian_user_use_databag\u0027] and [\u0027openstack\u0027][\u0027db\u0027][\u0027repl_user_use_databag\u0027] would need to be defined in the common cookbook before these changes could be made here.","commit_id":"a796bf6dc3a02318527d4df65d8b911b51eefc48"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"18bce4a7529c37a30265f900cccaac9f0d016f97","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  remove_anonymous_users node[\u0027mysql\u0027][\u0027remove_anonymous_users\u0027]"},{"line_number":56,"context_line":"  remove_test_database node[\u0027mysql\u0027][\u0027remove_test_database\u0027]"},{"line_number":57,"context_line":"  root_network_acl node[\u0027mysql\u0027][\u0027root_network_acl\u0027]"},{"line_number":58,"context_line":"  version node[\u0027mysql\u0027][\u0027version\u0027]"},{"line_number":59,"context_line":"  action :create"},{"line_number":60,"context_line":"end"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":3,"id":"fa98f980_47be7066","line":58,"updated":"2014-09-03 17:47:24.000000000","message":"This is specified twice, already at top","commit_id":"a796bf6dc3a02318527d4df65d8b911b51eefc48"},{"author":{"_account_id":8001,"name":"John Warren","email":"jswarren@us.ibm.com","username":"jswarren"},"change_message_id":"fc5a7c1c59159ea43af30725176779ffaa02abf3","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  remove_anonymous_users node[\u0027mysql\u0027][\u0027remove_anonymous_users\u0027]"},{"line_number":56,"context_line":"  remove_test_database node[\u0027mysql\u0027][\u0027remove_test_database\u0027]"},{"line_number":57,"context_line":"  root_network_acl node[\u0027mysql\u0027][\u0027root_network_acl\u0027]"},{"line_number":58,"context_line":"  version node[\u0027mysql\u0027][\u0027version\u0027]"},{"line_number":59,"context_line":"  action :create"},{"line_number":60,"context_line":"end"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":3,"id":"fa98f980_14bb3873","line":58,"in_reply_to":"fa98f980_47be7066","updated":"2014-09-08 14:40:35.000000000","message":"Done","commit_id":"a796bf6dc3a02318527d4df65d8b911b51eefc48"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"c27ef103f3ff02a4addcd51803a1c407c1800582","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"if node[\u0027openstack\u0027][\u0027db\u0027][\u0027root_user_use_databag\u0027]"},{"line_number":31,"context_line":"  super_password \u003d get_password \u0027user\u0027, node[\u0027openstack\u0027][\u0027db\u0027][\u0027root_user_key\u0027]"},{"line_number":32,"context_line":"  node.set_unless[\u0027mysql\u0027][\u0027server_root_password\u0027] \u003d super_password"},{"line_number":33,"context_line":"else"},{"line_number":34,"context_line":"  super_password \u003d node[\u0027mysql\u0027][\u0027server_root_password\u0027]"},{"line_number":35,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"fa98f980_026e96c9","side":"PARENT","line":32,"updated":"2014-09-08 15:03:24.000000000","message":"For the readme update, it was this logic change that I was thinking needed some explanation.","commit_id":"35fd6af84c497b426a0ab074e30e9ab95fac89d3"},{"author":{"_account_id":8001,"name":"John Warren","email":"jswarren@us.ibm.com","username":"jswarren"},"change_message_id":"f9fc9c2f59de868814f86d546ba7196c47613f8f","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"if node[\u0027openstack\u0027][\u0027db\u0027][\u0027root_user_use_databag\u0027]"},{"line_number":31,"context_line":"  super_password \u003d get_password \u0027user\u0027, node[\u0027openstack\u0027][\u0027db\u0027][\u0027root_user_key\u0027]"},{"line_number":32,"context_line":"  node.set_unless[\u0027mysql\u0027][\u0027server_root_password\u0027] \u003d super_password"},{"line_number":33,"context_line":"else"},{"line_number":34,"context_line":"  super_password \u003d node[\u0027mysql\u0027][\u0027server_root_password\u0027]"},{"line_number":35,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"fa98f980_683663e9","side":"PARENT","line":32,"in_reply_to":"fa98f980_026e96c9","updated":"2014-09-08 15:59:45.000000000","message":"I believe this (the _unless portion) to be a bug, because it allows the node attribute and the \"super_password\" variable value to have different values, which causes the recipe to fail.  I have added an explanation in the readme file about how in the update code this node attribute is ignored and left unchanged if the \"root_user_use_databag\" attribute is set to true.  The purpose of this change is to get secrets in data bags out of node attributes; in order to meet that goal, this line must be removed.","commit_id":"35fd6af84c497b426a0ab074e30e9ab95fac89d3"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"c27ef103f3ff02a4addcd51803a1c407c1800582","unresolved":false,"context_lines":[{"line_number":62,"context_line":"# installed."},{"line_number":63,"context_line":"server_resource \u003d mysql_service node[\u0027mysql\u0027][\u0027service_name\u0027]"},{"line_number":64,"context_line":"server_version \u003d server_resource.parsed_version"},{"line_number":65,"context_line":"node.set[\u0027mysql\u0027][\u0027version\u0027] \u003d server_version"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"template \u0027/etc/mysql/conf.d/openstack.cnf\u0027 do"},{"line_number":68,"context_line":"  owner \u0027mysql\u0027"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"fa98f980_824a8653","line":65,"updated":"2014-09-08 15:03:24.000000000","message":"Why is this needed?  The version is used above already, so setting it after use seems odd and unnecessary.\n\nAnd if this is useful for something, it should also be noted in the Readme.","commit_id":"e4e561e529f11fc8bc4de22154ee78a5375b0103"},{"author":{"_account_id":8001,"name":"John Warren","email":"jswarren@us.ibm.com","username":"jswarren"},"change_message_id":"f9fc9c2f59de868814f86d546ba7196c47613f8f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"# installed."},{"line_number":63,"context_line":"server_resource \u003d mysql_service node[\u0027mysql\u0027][\u0027service_name\u0027]"},{"line_number":64,"context_line":"server_version \u003d server_resource.parsed_version"},{"line_number":65,"context_line":"node.set[\u0027mysql\u0027][\u0027version\u0027] \u003d server_version"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"template \u0027/etc/mysql/conf.d/openstack.cnf\u0027 do"},{"line_number":68,"context_line":"  owner \u0027mysql\u0027"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"fa98f980_3de65f17","line":65,"in_reply_to":"fa98f980_824a8653","updated":"2014-09-08 15:59:45.000000000","message":"This setting is not used above if it is nil, which is its default value--in that case a platform-specific default value is used by the resource instead.  It is arguably desirable to have the recipe behavior remain the same with regard to version--that is for a platform-specific version to be installed when no version is explicitly specified and for the installed version to be reflected as a node attribute.  Also note that this value is used in the openstack.cnf template, where it would not be good for it to be set to nil.  I\u0027m thinking that usage of this attribute should be left to the mysql cookbook documentation.  In any event, I believed that the comments I added above the code block in question adequately described the purpose--that is for the node attribute value to reflect the version of mysql that was installed.  Please let me know how the comment could be made more clear.  One possibility might be to add a comment to line #47 indicating what happens when the version node attribute is nil.","commit_id":"e4e561e529f11fc8bc4de22154ee78a5375b0103"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"a066717aaf5daad8b51b32f4db249eb2111b3096","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"include_recipe \u0027openstack-ops-database::mysql-client\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"mysql_service node[\u0027mysql\u0027][\u0027service_name\u0027] do"},{"line_number":48,"context_line":"  version node[\u0027mysql\u0027][\u0027version\u0027]"},{"line_number":49,"context_line":"  port node[\u0027mysql\u0027][\u0027port\u0027]"},{"line_number":50,"context_line":"  data_dir node[\u0027mysql\u0027][\u0027data_dir\u0027]"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"fa98f980_4fd62229","line":47,"updated":"2014-09-16 15:25:52.000000000","message":"Since there are a bunch of pwds here, maybe add the sensitive attribute here?\n\nhttps://review.openstack.org/#/c/118749/2/recipes/openrc.rb","commit_id":"e9c15039a0f95a013d361b03c1804bf067bc940b"},{"author":{"_account_id":8001,"name":"John Warren","email":"jswarren@us.ibm.com","username":"jswarren"},"change_message_id":"3a8df6d4869e3507ef58c3cbb194fb34350ecaa4","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"include_recipe \u0027openstack-ops-database::mysql-client\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"mysql_service node[\u0027mysql\u0027][\u0027service_name\u0027] do"},{"line_number":48,"context_line":"  version node[\u0027mysql\u0027][\u0027version\u0027]"},{"line_number":49,"context_line":"  port node[\u0027mysql\u0027][\u0027port\u0027]"},{"line_number":50,"context_line":"  data_dir node[\u0027mysql\u0027][\u0027data_dir\u0027]"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"fa98f980_a87064dd","line":47,"in_reply_to":"fa98f980_4fd62229","updated":"2014-09-16 17:14:17.000000000","message":"Done","commit_id":"e9c15039a0f95a013d361b03c1804bf067bc940b"}],"spec/mysql-server_spec.rb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"a066717aaf5daad8b51b32f4db249eb2111b3096","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    it \u0027creates mysql service\u0027 do"},{"line_number":62,"context_line":"      node.set[\u0027openstack\u0027][\u0027use_databags\u0027] \u003d false"},{"line_number":63,"context_line":"      node.set[\u0027openstack\u0027][\u0027db\u0027][\u0027root_user_use_databag\u0027] \u003d true"},{"line_number":64,"context_line":"      node.set[\u0027openstack\u0027][\u0027secret\u0027][\u0027mysqlroot\u0027][\u0027user\u0027] \u003d \u0027abc123\u0027"},{"line_number":65,"context_line":"      expect(chef_run).to create_mysql_service(\u0027default\u0027).with("},{"line_number":66,"context_line":"        server_root_password: \u0027abc123\u0027)"},{"line_number":67,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"fa98f980_ef46f6bf","line":64,"updated":"2014-09-16 15:25:52.000000000","message":"I\u0027m confused here, seems like another test is needed here.  I see the spec_helper stub for get_password returning abc123, but don\u0027t see where that is used here.","commit_id":"e9c15039a0f95a013d361b03c1804bf067bc940b"},{"author":{"_account_id":8001,"name":"John Warren","email":"jswarren@us.ibm.com","username":"jswarren"},"change_message_id":"3a8df6d4869e3507ef58c3cbb194fb34350ecaa4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    it \u0027creates mysql service\u0027 do"},{"line_number":62,"context_line":"      node.set[\u0027openstack\u0027][\u0027use_databags\u0027] \u003d false"},{"line_number":63,"context_line":"      node.set[\u0027openstack\u0027][\u0027db\u0027][\u0027root_user_use_databag\u0027] \u003d true"},{"line_number":64,"context_line":"      node.set[\u0027openstack\u0027][\u0027secret\u0027][\u0027mysqlroot\u0027][\u0027user\u0027] \u003d \u0027abc123\u0027"},{"line_number":65,"context_line":"      expect(chef_run).to create_mysql_service(\u0027default\u0027).with("},{"line_number":66,"context_line":"        server_root_password: \u0027abc123\u0027)"},{"line_number":67,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"fa98f980_a37fa565","line":64,"in_reply_to":"fa98f980_ef46f6bf","updated":"2014-09-16 17:14:17.000000000","message":"Lines #62 and #64 in this version didn\u0027t do anything since the spec_helper stub is invoked instead of the actual method, so I removed them in patch set #10.  The point of the test is to verify that get_password is used to get the password and using the stub accomplishes that.","commit_id":"e9c15039a0f95a013d361b03c1804bf067bc940b"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a22723d50c021888fa9c10a5fe0c3582db0f7950","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    it \u0027includes mysql recipes\u0027 do"},{"line_number":36,"context_line":"      expect(chef_run).to include_recipe \u0027openstack-ops-database::mysql-client\u0027"},{"line_number":37,"context_line":"      expect(chef_run).to include_recipe \u0027mysql::server\u0027"},{"line_number":38,"context_line":"    end"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    it \u0027creates template /etc/mysql/conf.d/openstack.cnf\u0027 do"}],"source_content_type":"text/x-ruby","patch_set":11,"id":"fa98f980_be84e90b","side":"PARENT","line":37,"updated":"2014-09-18 11:41:06.000000000","message":"Can we replace this with a create_mysql_service test which is provided by mysql cookbook ChefSpec matchers.","commit_id":"35fd6af84c497b426a0ab074e30e9ab95fac89d3"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"92342566ae3e1fa9133aa8161e4fc9ac0bd140f1","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    it \u0027includes mysql recipes\u0027 do"},{"line_number":36,"context_line":"      expect(chef_run).to include_recipe \u0027openstack-ops-database::mysql-client\u0027"},{"line_number":37,"context_line":"      expect(chef_run).to include_recipe \u0027mysql::server\u0027"},{"line_number":38,"context_line":"    end"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    it \u0027creates template /etc/mysql/conf.d/openstack.cnf\u0027 do"}],"source_content_type":"text/x-ruby","patch_set":11,"id":"fa98f980_dfae072f","side":"PARENT","line":37,"in_reply_to":"fa98f980_3f71d30c","updated":"2014-09-18 13:55:00.000000000","message":"Line 64 is exactly what I was looking for.  Sorry that I missed it.","commit_id":"35fd6af84c497b426a0ab074e30e9ab95fac89d3"},{"author":{"_account_id":8001,"name":"John Warren","email":"jswarren@us.ibm.com","username":"jswarren"},"change_message_id":"c8b3c781d2c5c05ee432f1d8b0bd1cd05304c1a2","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    it \u0027includes mysql recipes\u0027 do"},{"line_number":36,"context_line":"      expect(chef_run).to include_recipe \u0027openstack-ops-database::mysql-client\u0027"},{"line_number":37,"context_line":"      expect(chef_run).to include_recipe \u0027mysql::server\u0027"},{"line_number":38,"context_line":"    end"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    it \u0027creates template /etc/mysql/conf.d/openstack.cnf\u0027 do"}],"source_content_type":"text/x-ruby","patch_set":11,"id":"fa98f980_3f71d30c","side":"PARENT","line":37,"in_reply_to":"fa98f980_be84e90b","updated":"2014-09-18 13:51:00.000000000","message":"Can you clarify what you mean, if line 64 of the updated version isn\u0027t what you are referring to?","commit_id":"35fd6af84c497b426a0ab074e30e9ab95fac89d3"}]}
