)]}'
{"tempest/api/baremetal/test_nodes.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"b72ea42ed03fba6ae04f59e82d1e18b9629dae0b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        for name, value in six.iteritems(node):"},{"line_number":108,"context_line":"            if \u0027result\u0027 in value:"},{"line_number":109,"context_line":"                self.assertIn(value[\u0027result\u0027], [True, False, None])"},{"line_number":110,"context_line":"            for key, value2 in six.iteritems(value):"},{"line_number":111,"context_line":"                self.assertIn(key, [\u0027result\u0027, \u0027reason\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXX%2F%2F5LM%3D","line":110,"updated":"2014-04-25 14:07:50.000000000","message":"As far as I understand \"value\" is a dictionary object. \"value2\" variable is unused here. So I think there is no need to use iteritems(...) here. You can write \n\nfor key in value:\n    self.assertIn(key, [\u0027result\u0027, \u0027reason\u0027])","commit_id":"a8b73d6fe5e9b5d2ded551c82064190e64159991"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"0d902950220078275ff6051c7c14862b51f1504c","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        for name, value in six.iteritems(node):"},{"line_number":108,"context_line":"            if \u0027result\u0027 in value:"},{"line_number":109,"context_line":"                self.assertIn(value[\u0027result\u0027], [True, False, None])"},{"line_number":110,"context_line":"            for key, value2 in six.iteritems(value):"},{"line_number":111,"context_line":"                self.assertIn(key, [\u0027result\u0027, \u0027reason\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXX%2F%2FxUY%3D","line":110,"in_reply_to":"AAAAXX%2F%2F5LM%3D","updated":"2014-04-28 04:01:40.000000000","message":"I\u0027ll do it in the next patch.","commit_id":"a8b73d6fe5e9b5d2ded551c82064190e64159991"},{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"d56b32e9362db6a16faf47aeddd26b72a8d96c7b","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        created_node \u003d self.create_node(self.chassis[\u0027uuid\u0027], **params)[\u0027node\u0027]"},{"line_number":105,"context_line":"        resp, node \u003d self.client.validate_node(created_node[\u0027uuid\u0027])"},{"line_number":106,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":107,"context_line":"        for name, value in six.iteritems(node):"},{"line_number":108,"context_line":"            if \u0027result\u0027 in value:"},{"line_number":109,"context_line":"                self.assertIn(value[\u0027result\u0027], [True, False, None])"},{"line_number":110,"context_line":"            for key in value:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bad4c104_8f81014d","line":107,"updated":"2014-04-29 07:09:59.000000000","message":"*unused","commit_id":"95f858d64cbbd220f0052e8928115e6eef4a89a1"},{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"c3b2dff300bd23ac4f32e26dfbaef4b36bc0048c","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        created_node \u003d self.create_node(self.chassis[\u0027uuid\u0027], **params)[\u0027node\u0027]"},{"line_number":105,"context_line":"        resp, node \u003d self.client.validate_node(created_node[\u0027uuid\u0027])"},{"line_number":106,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":107,"context_line":"        for name, value in six.iteritems(node):"},{"line_number":108,"context_line":"            if \u0027result\u0027 in value:"},{"line_number":109,"context_line":"                self.assertIn(value[\u0027result\u0027], [True, False, None])"},{"line_number":110,"context_line":"            for key in value:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bad4c104_8faae1d2","line":107,"updated":"2014-04-29 07:08:27.000000000","message":"variable name is inused, may be would be better:\n\nfor value in node.values():\n\n?","commit_id":"95f858d64cbbd220f0052e8928115e6eef4a89a1"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"f66638fa0c52dcd7732d28575a40017cd9a1301c","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        created_node \u003d self.create_node(self.chassis[\u0027uuid\u0027], **params)[\u0027node\u0027]"},{"line_number":105,"context_line":"        resp, node \u003d self.client.validate_node(created_node[\u0027uuid\u0027])"},{"line_number":106,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":107,"context_line":"        for name, value in six.iteritems(node):"},{"line_number":108,"context_line":"            if \u0027result\u0027 in value:"},{"line_number":109,"context_line":"                self.assertIn(value[\u0027result\u0027], [True, False, None])"},{"line_number":110,"context_line":"            for key in value:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_921fb46b","line":107,"in_reply_to":"9ad9bd40_6387e3d7","updated":"2014-05-07 11:11:23.000000000","message":"Sorry for late reply. Thank you for showing example. I\u0027ll modify it in the next patch.","commit_id":"95f858d64cbbd220f0052e8928115e6eef4a89a1"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"6e26fef72c59d7e3de7759645d3e8b9a255d7868","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        created_node \u003d self.create_node(self.chassis[\u0027uuid\u0027], **params)[\u0027node\u0027]"},{"line_number":105,"context_line":"        resp, node \u003d self.client.validate_node(created_node[\u0027uuid\u0027])"},{"line_number":106,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":107,"context_line":"        for name, value in six.iteritems(node):"},{"line_number":108,"context_line":"            if \u0027result\u0027 in value:"},{"line_number":109,"context_line":"                self.assertIn(value[\u0027result\u0027], [True, False, None])"},{"line_number":110,"context_line":"            for key in value:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_6387e3d7","line":107,"in_reply_to":"bad4c104_8f81014d","updated":"2014-05-06 12:18:07.000000000","message":"Sergey are right. You can write something like this:\n\nfor values in node.values():\n    if \u0027result\u0027 in values:\n        self.assertIn(values[\u0027result\u0027], [True, False, None])\n    for value in values:\n        self.assertIn(value, [\u0027result\u0027, \u0027reason\u0027])","commit_id":"95f858d64cbbd220f0052e8928115e6eef4a89a1"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"6b794e56cb8b9282e05213f365139e8599d9a648","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        resp, node \u003d self.client.validate_node(created_node[\u0027uuid\u0027])"},{"line_number":106,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":107,"context_line":"        for values in node.values():"},{"line_number":108,"context_line":"            if \u0027result\u0027 in values:"},{"line_number":109,"context_line":"                self.assertIn(values[\u0027result\u0027], [True, False, None])"},{"line_number":110,"context_line":"            for value in values:"},{"line_number":111,"context_line":"                self.assertIn(value, [\u0027result\u0027, \u0027reason\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_4572eead","line":108,"updated":"2014-05-16 04:28:07.000000000","message":"The \u0027result\u0027 field should always be returned by the the Ironic API so I think we could get rid of this conditional here","commit_id":"5958777af1d6abc799643cf1520874eb4a98bef9"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"490e71d0770d76836ed0560a3e9d446d1b17a13f","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        resp, node \u003d self.client.validate_node(created_node[\u0027uuid\u0027])"},{"line_number":106,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":107,"context_line":"        for values in node.values():"},{"line_number":108,"context_line":"            if \u0027result\u0027 in values:"},{"line_number":109,"context_line":"                self.assertIn(values[\u0027result\u0027], [True, False, None])"},{"line_number":110,"context_line":"            for value in values:"},{"line_number":111,"context_line":"                self.assertIn(value, [\u0027result\u0027, \u0027reason\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_96f21504","line":108,"in_reply_to":"7adec928_4572eead","updated":"2014-05-20 01:33:40.000000000","message":"I\u0027ll modify it in the next patch.","commit_id":"5958777af1d6abc799643cf1520874eb4a98bef9"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"6b794e56cb8b9282e05213f365139e8599d9a648","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":107,"context_line":"        for values in node.values():"},{"line_number":108,"context_line":"            if \u0027result\u0027 in values:"},{"line_number":109,"context_line":"                self.assertIn(values[\u0027result\u0027], [True, False, None])"},{"line_number":110,"context_line":"            for value in values:"},{"line_number":111,"context_line":"                self.assertIn(value, [\u0027result\u0027, \u0027reason\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_e5a3faaf","line":109,"updated":"2014-05-16 04:28:07.000000000","message":"tiny python nit... In python the speed of construction of a tuple of constants is much faster than a list[1]. Note: That\u0027s the time it takes to create the object, the access time for the \"in\" operation is the same for list of tuples.\n\nIt\u0027s not a big deal here because the list is quite small (3 items) so we won\u0027t hit any performance issues :)\n\n[1] http://stackoverflow.com/questions/3340539/why-tuple-is-faster-than-list/3340881#3340881\n\n(answer 3 is also good)\n\n-- same comment apply for the list at L110","commit_id":"5958777af1d6abc799643cf1520874eb4a98bef9"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"490e71d0770d76836ed0560a3e9d446d1b17a13f","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":107,"context_line":"        for values in node.values():"},{"line_number":108,"context_line":"            if \u0027result\u0027 in values:"},{"line_number":109,"context_line":"                self.assertIn(values[\u0027result\u0027], [True, False, None])"},{"line_number":110,"context_line":"            for value in values:"},{"line_number":111,"context_line":"                self.assertIn(value, [\u0027result\u0027, \u0027reason\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_16bd2502","line":109,"in_reply_to":"7adec928_e5a3faaf","updated":"2014-05-20 01:33:40.000000000","message":"Right, I\u0027ll write like that.","commit_id":"5958777af1d6abc799643cf1520874eb4a98bef9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8f64c44c7fcf37b410157e1a5961c931c44129e9","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                  \u0027storage\u0027: \u0027100\u0027,"},{"line_number":96,"context_line":"                  \u0027memory\u0027: \u0027512\u0027}"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        created_node \u003d self.create_node(self.chassis[\u0027uuid\u0027], **params)[\u0027node\u0027]"},{"line_number":99,"context_line":"        resp, node \u003d self.client.validate_node(created_node[\u0027uuid\u0027])"},{"line_number":100,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":101,"context_line":"        for values in node.values():"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_89a213ac","line":98,"updated":"2014-06-20 08:48:33.000000000","message":"This new test fails like:\n\nhttp://logs.openstack.org/82/90282/5/check/check-tempest-dsvm-ironic-nv/2556019/logs/testr_results.html.gz\n\nTraceback (most recent call last):\n  File \"tempest/api/baremetal/test_nodes.py\", line 98, in test_validate_node\n    created_node \u003d self.create_node(self.chassis[\u0027uuid\u0027], **params)[\u0027node\u0027]\nTypeError: tuple indices must be integers, not str","commit_id":"ada1daaa5fedb24f6c6db8feec26b7c15f4092d5"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"00df3ce043011c29cb43075bc5ecfd4a7a65b525","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                  \u0027storage\u0027: \u0027100\u0027,"},{"line_number":96,"context_line":"                  \u0027memory\u0027: \u0027512\u0027}"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        created_node \u003d self.create_node(self.chassis[\u0027uuid\u0027], **params)[\u0027node\u0027]"},{"line_number":99,"context_line":"        resp, node \u003d self.client.validate_node(created_node[\u0027uuid\u0027])"},{"line_number":100,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":101,"context_line":"        for values in node.values():"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_2492069f","line":98,"in_reply_to":"1ae5cdf2_89a213ac","updated":"2014-06-20 09:12:10.000000000","message":"Done","commit_id":"ada1daaa5fedb24f6c6db8feec26b7c15f4092d5"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ea6efea8252b1846140ddfdd45a8ce5cd70a6b6c","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                  \u0027memory\u0027: \u0027512\u0027}"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        created_node \u003d self.create_node(self.chassis[\u0027uuid\u0027],"},{"line_number":99,"context_line":"                                        **params)[\u0027properties\u0027]"},{"line_number":100,"context_line":"        resp, node \u003d self.client.validate_node(created_node[\u0027uuid\u0027])"},{"line_number":101,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":102,"context_line":"        for values in node.values():"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_d2303ba0","line":99,"updated":"2014-06-20 13:09:15.000000000","message":"still an error happens like:\n \nTraceback (most recent call last):\n  File \"tempest/api/baremetal/test_nodes.py\", line 99, in test_validate_node\n    **params)[\u0027properties\u0027]\nTypeError: tuple indices must be integers, not str","commit_id":"5e8bec4f97b5bdbaabb6524506e0095fe7e658ba"}]}
