)]}'
{"tempest/common/resource_configuration.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"8eeec83e509f0cffaafe97b2e3964045846b9163","unresolved":false,"context_lines":[{"line_number":21,"context_line":"                 image_user\u003dNone, image_password\u003dNone,"},{"line_number":22,"context_line":"                 image_id_alt\u003dNone, flavor_id\u003dNone, flavor_id_alt\u003dNone):"},{"line_number":23,"context_line":"        if test_resources_file:"},{"line_number":24,"context_line":"            with open(test_resources_file, \u0027r\u0027) as f:"},{"line_number":25,"context_line":"                self.resources \u003d yaml.load(f)"},{"line_number":26,"context_line":"        else:"},{"line_number":27,"context_line":"            self.resources \u003d {\u0027resources\u0027: {"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_30944289","line":24,"updated":"2016-02-24 15:33:38.000000000","message":"It would be good to catch IOError and yaml.scanner.ScannerError here and log a nice message.","commit_id":"12e41b724b44852863e13f80bbcecdeebf44a1cd"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"528fdc143837a866702df0e33ea12ff4f0926602","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            except yaml.scanner.ScannerError:"},{"line_number":37,"context_line":"                LOG.error("},{"line_number":38,"context_line":"                    \u0027The test resources file: %s does not contain valid \u0027"},{"line_number":39,"context_line":"                    \u0027YAML\u0027 % test_resources_file)"},{"line_number":40,"context_line":"                raise"},{"line_number":41,"context_line":"            if \u0027resources\u0027 not in self.resources:"},{"line_number":42,"context_line":"                raise exceptions.InvalidConfiguration("}],"source_content_type":"text/x-python","patch_set":7,"id":"5aef4532_38ec50f2","line":39,"updated":"2016-03-10 10:40:51.000000000","message":"This should be LOG.error(\u0027... %s\u0027, test_resources_file). See https://www.simonmweber.com/2014/11/24/python-logging-traps.html","commit_id":"3a5fe564c858286ac5284f6193b984e4b19121c1"},{"author":{"_account_id":8001,"name":"John Warren","email":"jswarren@us.ibm.com","username":"jswarren"},"change_message_id":"c33a71663d162dfab2e2ab390ab4474f52b08632","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            except yaml.scanner.ScannerError:"},{"line_number":37,"context_line":"                LOG.error("},{"line_number":38,"context_line":"                    \u0027The test resources file: %s does not contain valid \u0027"},{"line_number":39,"context_line":"                    \u0027YAML\u0027 % test_resources_file)"},{"line_number":40,"context_line":"                raise"},{"line_number":41,"context_line":"            if \u0027resources\u0027 not in self.resources:"},{"line_number":42,"context_line":"                raise exceptions.InvalidConfiguration("}],"source_content_type":"text/x-python","patch_set":7,"id":"5aef4532_9d8ba31e","line":39,"in_reply_to":"5aef4532_38ec50f2","updated":"2016-03-11 04:12:21.000000000","message":"Done","commit_id":"3a5fe564c858286ac5284f6193b984e4b19121c1"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"528fdc143837a866702df0e33ea12ff4f0926602","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            if \u0027resources\u0027 not in self.resources:"},{"line_number":42,"context_line":"                raise exceptions.InvalidConfiguration("},{"line_number":43,"context_line":"                    \u0027Invalid test resources configuration file: %s \u0027"},{"line_number":44,"context_line":"                    \u0027missing definition of resources\u0027 % test_resources_file)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            self.resources \u003d {\u0027resources\u0027: {"}],"source_content_type":"text/x-python","patch_set":7,"id":"5aef4532_98bda4da","line":44,"updated":"2016-03-10 10:40:51.000000000","message":"same","commit_id":"3a5fe564c858286ac5284f6193b984e4b19121c1"},{"author":{"_account_id":8001,"name":"John Warren","email":"jswarren@us.ibm.com","username":"jswarren"},"change_message_id":"c33a71663d162dfab2e2ab390ab4474f52b08632","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            if \u0027resources\u0027 not in self.resources:"},{"line_number":42,"context_line":"                raise exceptions.InvalidConfiguration("},{"line_number":43,"context_line":"                    \u0027Invalid test resources configuration file: %s \u0027"},{"line_number":44,"context_line":"                    \u0027missing definition of resources\u0027 % test_resources_file)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            self.resources \u003d {\u0027resources\u0027: {"}],"source_content_type":"text/x-python","patch_set":7,"id":"5aef4532_dd852b08","line":44,"in_reply_to":"5aef4532_98bda4da","updated":"2016-03-11 04:12:21.000000000","message":"This is not a logging statement.","commit_id":"3a5fe564c858286ac5284f6193b984e4b19121c1"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"528fdc143837a866702df0e33ea12ff4f0926602","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    \u0027missing definition of resources\u0027 % test_resources_file)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            self.resources \u003d {\u0027resources\u0027: {"},{"line_number":48,"context_line":"                \u0027images\u0027: ["},{"line_number":49,"context_line":"                    {\u0027id\u0027: image_id, \u0027user\u0027: image_user,"},{"line_number":50,"context_line":"                     \u0027password\u0027: image_password},"}],"source_content_type":"text/x-python","patch_set":7,"id":"5aef4532_38bf30ab","line":47,"updated":"2016-03-10 10:40:51.000000000","message":"Formating is bad. The outter/toplevel key should be more to the left.\n\n  self.resources \u003d {\n    \u0027resources\u0027: {\n        \u0027images\u0027: [\n            {\u0027id\u0027: image_id, \u0027user\u0027: image_user,\n             \u0027password\u0027: image_password},\n            {\u0027id\u0027: image_id_alt}\n        ],\n        \u0027flavors\u0027: [\n            {\u0027id\u0027: flavor_id},\n            {\u0027id\u0027: flavor_id_alt}\n        ]\n    }\n}","commit_id":"3a5fe564c858286ac5284f6193b984e4b19121c1"},{"author":{"_account_id":8001,"name":"John Warren","email":"jswarren@us.ibm.com","username":"jswarren"},"change_message_id":"c33a71663d162dfab2e2ab390ab4474f52b08632","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    \u0027missing definition of resources\u0027 % test_resources_file)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            self.resources \u003d {\u0027resources\u0027: {"},{"line_number":48,"context_line":"                \u0027images\u0027: ["},{"line_number":49,"context_line":"                    {\u0027id\u0027: image_id, \u0027user\u0027: image_user,"},{"line_number":50,"context_line":"                     \u0027password\u0027: image_password},"}],"source_content_type":"text/x-python","patch_set":7,"id":"5aef4532_7d75f730","line":47,"in_reply_to":"5aef4532_38bf30ab","updated":"2016-03-11 04:12:21.000000000","message":"Done","commit_id":"3a5fe564c858286ac5284f6193b984e4b19121c1"}],"tempest/tests/common/test_resource_configuration.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"8eeec83e509f0cffaafe97b2e3964045846b9163","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"RESOURCES \u003d {\u0027resources\u0027: {"},{"line_number":23,"context_line":"    \u0027images\u0027: ["},{"line_number":24,"context_line":"        {\u0027id\u0027: \u0027e033ef95-bf59-4a52-853a-1f45821994b0\u0027, \u0027user\u0027: \u0027imageuser\u0027, "},{"line_number":25,"context_line":"         \u0027password\u0027: \u0027imagepassword\u0027},"},{"line_number":26,"context_line":"        {\u0027id\u0027: \u00271a37b4a4-ff58-497b-ab2a-115bc06b0769\u0027}],"},{"line_number":27,"context_line":"    \u0027flavors\u0027: ["}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_6a489db3","line":24,"updated":"2016-02-24 15:33:38.000000000","message":"trailing space","commit_id":"12e41b724b44852863e13f80bbcecdeebf44a1cd"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"24544088f0ed5a6af91c63293919a6057610a218","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    @mock.patch(\u0027yaml.load\u0027)"},{"line_number":47,"context_line":"    @mock.patch(\u0027six.moves.builtins.open\u0027, create\u003dTrue)"},{"line_number":48,"context_line":"    def test_resources_file_wo_resources(self, mock_open, mock_load):"},{"line_number":49,"context_line":"        yaml.load.return_value \u003d {}"},{"line_number":50,"context_line":"        self.assertRaises("},{"line_number":51,"context_line":"            exceptions.InvalidConfiguration,"},{"line_number":52,"context_line":"            resource_configuration.ResourceConfiguration,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_8a19fcd9","line":49,"updated":"2016-02-29 13:09:03.000000000","message":"You want mock_load here right ?\n\nI don\"t understand how this has passed the gate...","commit_id":"abb4935edd6be574348522596437f009236994e9"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"cea78fa19f4e70605688f03c65ebebe41cc07308","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    @mock.patch(\u0027yaml.load\u0027)"},{"line_number":47,"context_line":"    @mock.patch(\u0027six.moves.builtins.open\u0027, create\u003dTrue)"},{"line_number":48,"context_line":"    def test_resources_file_wo_resources(self, mock_open, mock_load):"},{"line_number":49,"context_line":"        yaml.load.return_value \u003d {}"},{"line_number":50,"context_line":"        self.assertRaises("},{"line_number":51,"context_line":"            exceptions.InvalidConfiguration,"},{"line_number":52,"context_line":"            resource_configuration.ResourceConfiguration,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_976473b9","line":49,"in_reply_to":"9aed3d3a_3954881f","updated":"2016-02-29 16:55:13.000000000","message":"This is confusing and unusual. And a static linter could complain that the variable \"mock_load\" is not used.\n\nCould you please update to use \"mock_load\" instead ?\n\nI will quickly approve afterward.","commit_id":"abb4935edd6be574348522596437f009236994e9"},{"author":{"_account_id":8001,"name":"John Warren","email":"jswarren@us.ibm.com","username":"jswarren"},"change_message_id":"cf677ab8ac1557579a5305b1c3910a9d2ecfb674","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    @mock.patch(\u0027yaml.load\u0027)"},{"line_number":47,"context_line":"    @mock.patch(\u0027six.moves.builtins.open\u0027, create\u003dTrue)"},{"line_number":48,"context_line":"    def test_resources_file_wo_resources(self, mock_open, mock_load):"},{"line_number":49,"context_line":"        yaml.load.return_value \u003d {}"},{"line_number":50,"context_line":"        self.assertRaises("},{"line_number":51,"context_line":"            exceptions.InvalidConfiguration,"},{"line_number":52,"context_line":"            resource_configuration.ResourceConfiguration,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_3954881f","line":49,"in_reply_to":"9aed3d3a_8a19fcd9","updated":"2016-02-29 14:23:00.000000000","message":"In the context of the method, mock_load and yaml.load are the same thing.  See http://paste.openstack.org/show/488564/","commit_id":"abb4935edd6be574348522596437f009236994e9"},{"author":{"_account_id":8001,"name":"John Warren","email":"jswarren@us.ibm.com","username":"jswarren"},"change_message_id":"251633edc8348cab92ed2c5f3547cd7c22a97815","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    @mock.patch(\u0027yaml.load\u0027)"},{"line_number":47,"context_line":"    @mock.patch(\u0027six.moves.builtins.open\u0027, create\u003dTrue)"},{"line_number":48,"context_line":"    def test_resources_file_wo_resources(self, mock_open, mock_load):"},{"line_number":49,"context_line":"        yaml.load.return_value \u003d {}"},{"line_number":50,"context_line":"        self.assertRaises("},{"line_number":51,"context_line":"            exceptions.InvalidConfiguration,"},{"line_number":52,"context_line":"            resource_configuration.ResourceConfiguration,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_7e339f14","line":49,"updated":"2016-03-09 13:49:18.000000000","message":"Can you explain why you made this change, especially after an earlier change did the exact opposite in response to a comment?  Also, why was the change made instead of commenting and letting the change owner address any concerns that may have motivated the change?","commit_id":"1a34692cd2aab02735e9e8a9b0965d9ced6d5d3f"},{"author":{"_account_id":9364,"name":"Stephen Lowrie","email":"stephen.lowrie@rackspace.com","username":"step6829"},"change_message_id":"5ec8bd5fc708fd285fa6d5247102b643bf5b90d2","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    @mock.patch(\u0027yaml.load\u0027)"},{"line_number":47,"context_line":"    @mock.patch(\u0027six.moves.builtins.open\u0027, create\u003dTrue)"},{"line_number":48,"context_line":"    def test_resources_file_wo_resources(self, mock_open, mock_load):"},{"line_number":49,"context_line":"        yaml.load.return_value \u003d {}"},{"line_number":50,"context_line":"        self.assertRaises("},{"line_number":51,"context_line":"            exceptions.InvalidConfiguration,"},{"line_number":52,"context_line":"            resource_configuration.ResourceConfiguration,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_141eae5e","line":49,"in_reply_to":"5aef4532_7e339f14","updated":"2016-03-09 16:46:27.000000000","message":"I didn\u0027t actually intend to make this change. I rebased a dependent patch to fix a merge conflict and it looks like it used a previous patch version for your patch.\n\nI\u0027m really not sure why it did that, the only conflict I was asked to resolve during the rebase was a deletion of a file.","commit_id":"1a34692cd2aab02735e9e8a9b0965d9ced6d5d3f"}]}
