)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"83b53f214e1681b368a684cbad45334295c43084","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support port-list by node_id"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The API service exposes \"GET /nodes/UUID/ports\", but the client library doesn\u0027t implement this."},{"line_number":10,"context_line":"It is needed by the Nova driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Id3bb9d7d8c46102f4cb63a3ee65306cc07afb812"},{"line_number":13,"context_line":"Fixes: bug 1239028"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAATn%2F%2FyNE%3D","line":10,"updated":"2013-10-29 05:35:53.000000000","message":"Commit messages should wrap at 70 characters. https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"990062c42e6143526f5ff55580eb10719c924a14"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"da378a548acfa684f91be847bc482f1f3cbcfc81","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support port-list by node_id"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The API service exposes \"GET /nodes/UUID/ports\", but the client library doesn\u0027t implement this."},{"line_number":10,"context_line":"It is needed by the Nova driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Id3bb9d7d8c46102f4cb63a3ee65306cc07afb812"},{"line_number":13,"context_line":"Fixes: bug 1239028"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAATn%2F%2FxjY%3D","line":10,"in_reply_to":"AAAATn%2F%2FyNE%3D","updated":"2013-10-29 08:51:21.000000000","message":"Thanks for your comments.","commit_id":"990062c42e6143526f5ff55580eb10719c924a14"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"83b53f214e1681b368a684cbad45334295c43084","unresolved":false,"context_lines":[{"line_number":10,"context_line":"It is needed by the Nova driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Id3bb9d7d8c46102f4cb63a3ee65306cc07afb812"},{"line_number":13,"context_line":"Fixes: bug 1239028"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAATn%2F%2FyNA%3D","line":13,"updated":"2013-10-29 05:35:53.000000000","message":"The preferred syntax is Closes-Bug: #1239028","commit_id":"990062c42e6143526f5ff55580eb10719c924a14"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"da378a548acfa684f91be847bc482f1f3cbcfc81","unresolved":false,"context_lines":[{"line_number":10,"context_line":"It is needed by the Nova driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Id3bb9d7d8c46102f4cb63a3ee65306cc07afb812"},{"line_number":13,"context_line":"Fixes: bug 1239028"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAATn%2F%2FxjU%3D","line":13,"in_reply_to":"AAAATn%2F%2FyNA%3D","updated":"2013-10-29 08:51:21.000000000","message":"Done","commit_id":"990062c42e6143526f5ff55580eb10719c924a14"}],"ironicclient/tests/v1/test_port.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"fdc6a283e61eba600017fe40d925b02ef803f97d","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            {},"},{"line_number":78,"context_line":"            {\"ports\": {}},"},{"line_number":79,"context_line":"        ),"},{"line_number":80,"context_line":"    },"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fy2k%3D","line":80,"updated":"2013-10-28 23:01:01.000000000","message":"This is very odd formatting. I would have expected:\n\n \u0027/v1/1/ports\u0027: {\n     \u0027GET\u0027: ({}, {\"ports\": [PORT]}),\n     },\n \u0027/v1/2/ports\u0027: {\n     \u0027GET\u0027: ({}, {\"ports\": {}}),\n     },\n\nOr perhaps split the keys of the method dict out. What is unusual is a new line for the start of the nested dicts.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ac88ff81d3ffa34185fd32ffa6404f480455fbe7","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            {},"},{"line_number":78,"context_line":"            {\"ports\": {}},"},{"line_number":79,"context_line":"        ),"},{"line_number":80,"context_line":"    },"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FyvM%3D","line":80,"in_reply_to":"AAAATn%2F%2Fy2k%3D","updated":"2013-10-28 23:34:05.000000000","message":"Got it, thank your comment, will format.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"fdc6a283e61eba600017fe40d925b02ef803f97d","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        ports \u003d self.mgr.list(fields\u003dfields)"},{"line_number":104,"context_line":"        expect \u003d ["},{"line_number":105,"context_line":"            (\u0027GET\u0027, \u0027/v1/1/ports\u0027, {}, None),"},{"line_number":106,"context_line":"        ]"},{"line_number":107,"context_line":"        self.assertEqual(self.api.calls, expect)"},{"line_number":108,"context_line":"        self.assertEqual(len(ports), 1)"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fy2Y%3D","line":106,"updated":"2013-10-28 23:01:01.000000000","message":"This fits on one line, no need to spread it out.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ac88ff81d3ffa34185fd32ffa6404f480455fbe7","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        ports \u003d self.mgr.list(fields\u003dfields)"},{"line_number":104,"context_line":"        expect \u003d ["},{"line_number":105,"context_line":"            (\u0027GET\u0027, \u0027/v1/1/ports\u0027, {}, None),"},{"line_number":106,"context_line":"        ]"},{"line_number":107,"context_line":"        self.assertEqual(self.api.calls, expect)"},{"line_number":108,"context_line":"        self.assertEqual(len(ports), 1)"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FyvE%3D","line":106,"in_reply_to":"AAAATn%2F%2Fy2Y%3D","updated":"2013-10-28 23:34:05.000000000","message":"OK, will do","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"fdc6a283e61eba600017fe40d925b02ef803f97d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        expect \u003d ["},{"line_number":105,"context_line":"            (\u0027GET\u0027, \u0027/v1/1/ports\u0027, {}, None),"},{"line_number":106,"context_line":"        ]"},{"line_number":107,"context_line":"        self.assertEqual(self.api.calls, expect)"},{"line_number":108,"context_line":"        self.assertEqual(len(ports), 1)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_ports_list_with_invalid_node_id(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fy2U%3D","line":107,"updated":"2013-10-28 23:01:01.000000000","message":"this is minor, but assertEqual takes (expected, observed) - your parameter orders are reversed, through most of this file.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ac88ff81d3ffa34185fd32ffa6404f480455fbe7","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        expect \u003d ["},{"line_number":105,"context_line":"            (\u0027GET\u0027, \u0027/v1/1/ports\u0027, {}, None),"},{"line_number":106,"context_line":"        ]"},{"line_number":107,"context_line":"        self.assertEqual(self.api.calls, expect)"},{"line_number":108,"context_line":"        self.assertEqual(len(ports), 1)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_ports_list_with_invalid_node_id(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fyu8%3D","line":107,"in_reply_to":"AAAATn%2F%2Fy2U%3D","updated":"2013-10-28 23:34:05.000000000","message":"OK, yes, will remove this line.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"fdc6a283e61eba600017fe40d925b02ef803f97d","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            (\u0027GET\u0027, \u0027/v1/1/ports\u0027, {}, None),"},{"line_number":106,"context_line":"        ]"},{"line_number":107,"context_line":"        self.assertEqual(self.api.calls, expect)"},{"line_number":108,"context_line":"        self.assertEqual(len(ports), 1)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_ports_list_with_invalid_node_id(self):"},{"line_number":111,"context_line":"        fields \u003d {\u0027node_id\u0027: 2}"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fy2Q%3D","line":108,"updated":"2013-10-28 23:01:01.000000000","message":"This would be better as\n\n self.assertThat(ports, HasLength(1))","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ac88ff81d3ffa34185fd32ffa6404f480455fbe7","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            (\u0027GET\u0027, \u0027/v1/1/ports\u0027, {}, None),"},{"line_number":106,"context_line":"        ]"},{"line_number":107,"context_line":"        self.assertEqual(self.api.calls, expect)"},{"line_number":108,"context_line":"        self.assertEqual(len(ports), 1)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_ports_list_with_invalid_node_id(self):"},{"line_number":111,"context_line":"        fields \u003d {\u0027node_id\u0027: 2}"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fyu4%3D","line":108,"in_reply_to":"AAAATn%2F%2Fy2Q%3D","updated":"2013-10-28 23:34:05.000000000","message":"OK, good comments.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"32a3f3bd42671e2eaf1e7025554e8fdf06067bb9","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            (\u0027GET\u0027, \u0027/v1/1/ports\u0027, {}, None),"},{"line_number":106,"context_line":"        ]"},{"line_number":107,"context_line":"        self.assertEqual(self.api.calls, expect)"},{"line_number":108,"context_line":"        self.assertEqual(len(ports), 1)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_ports_list_with_invalid_node_id(self):"},{"line_number":111,"context_line":"        fields \u003d {\u0027node_id\u0027: 2}"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fyg0%3D","line":108,"in_reply_to":"AAAATn%2F%2Fy2Q%3D","updated":"2013-10-29 01:56:34.000000000","message":"lifeless, I try witl HasLength, get error with flake8 validation, but not sure where defined such method, can you help how to import such HasLength - 1 undefined name \u0027HasLength\u0027\n\nSo will use len method now.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":8968,"name":"Max Lobur","email":"max_lobur@outlook.com","username":"max_lobur"},"change_message_id":"f14d85617f61466c07a58bb68437bd7aeb3e0587","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        self.assertEqual(self.api.calls, expect)"},{"line_number":108,"context_line":"        self.assertEqual(len(ports), 1)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_ports_list_with_invalid_node_id(self):"},{"line_number":111,"context_line":"        fields \u003d {\u0027node_id\u0027: 2}"},{"line_number":112,"context_line":"        ports \u003d self.mgr.list(fields\u003dfields)"},{"line_number":113,"context_line":"        expect \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FztI%3D","line":110,"updated":"2013-10-28 19:09:32.000000000","message":"Maybe I misunderstood this, but it seems this test uses valid node Id, but this node (2) have no ports. Not sure if we can truly test invalid node id here since we need to have an API stub for each call... Therefore I would suggest just to rename these two tests to \n\ntest_ports_list_one_port\n\ntest_ports_list_no_ports\n\nor something like that.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ac88ff81d3ffa34185fd32ffa6404f480455fbe7","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        self.assertEqual(self.api.calls, expect)"},{"line_number":108,"context_line":"        self.assertEqual(len(ports), 1)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_ports_list_with_invalid_node_id(self):"},{"line_number":111,"context_line":"        fields \u003d {\u0027node_id\u0027: 2}"},{"line_number":112,"context_line":"        ports \u003d self.mgr.list(fields\u003dfields)"},{"line_number":113,"context_line":"        expect \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fyuo%3D","line":110,"in_reply_to":"AAAATn%2F%2FztI%3D","updated":"2013-10-28 23:34:05.000000000","message":"Thank you Max, will rename.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"fdc6a283e61eba600017fe40d925b02ef803f97d","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        self.assertEqual(len(ports), 1)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_ports_list_with_invalid_node_id(self):"},{"line_number":111,"context_line":"        fields \u003d {\u0027node_id\u0027: 2}"},{"line_number":112,"context_line":"        ports \u003d self.mgr.list(fields\u003dfields)"},{"line_number":113,"context_line":"        expect \u003d ["},{"line_number":114,"context_line":"            (\u0027GET\u0027, \u0027/v1/2/ports\u0027, {}, None),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fy18%3D","line":111,"updated":"2013-10-28 23:01:01.000000000","message":"So the node id really should be invalid here - like 99 or something - or as Max says, the test isn\u0027t doing what it\u0027s name implies.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ac88ff81d3ffa34185fd32ffa6404f480455fbe7","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        self.assertEqual(len(ports), 1)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_ports_list_with_invalid_node_id(self):"},{"line_number":111,"context_line":"        fields \u003d {\u0027node_id\u0027: 2}"},{"line_number":112,"context_line":"        ports \u003d self.mgr.list(fields\u003dfields)"},{"line_number":113,"context_line":"        expect \u003d ["},{"line_number":114,"context_line":"            (\u0027GET\u0027, \u0027/v1/2/ports\u0027, {}, None),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fyuk%3D","line":111,"in_reply_to":"AAAATn%2F%2Fy18%3D","updated":"2013-10-28 23:34:05.000000000","message":"yes, will change the method name","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"fdc6a283e61eba600017fe40d925b02ef803f97d","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        ports \u003d self.mgr.list(fields\u003dfields)"},{"line_number":113,"context_line":"        expect \u003d ["},{"line_number":114,"context_line":"            (\u0027GET\u0027, \u0027/v1/2/ports\u0027, {}, None),"},{"line_number":115,"context_line":"        ]"},{"line_number":116,"context_line":"        self.assertEqual(self.api.calls, expect)"},{"line_number":117,"context_line":"        self.assertEqual(len(ports), 0)"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fy2I%3D","line":115,"updated":"2013-10-28 23:01:01.000000000","message":"Also fits on one line.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ac88ff81d3ffa34185fd32ffa6404f480455fbe7","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        ports \u003d self.mgr.list(fields\u003dfields)"},{"line_number":113,"context_line":"        expect \u003d ["},{"line_number":114,"context_line":"            (\u0027GET\u0027, \u0027/v1/2/ports\u0027, {}, None),"},{"line_number":115,"context_line":"        ]"},{"line_number":116,"context_line":"        self.assertEqual(self.api.calls, expect)"},{"line_number":117,"context_line":"        self.assertEqual(len(ports), 0)"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fyug%3D","line":115,"in_reply_to":"AAAATn%2F%2Fy2I%3D","updated":"2013-10-28 23:34:05.000000000","message":"OK.thanks.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"fdc6a283e61eba600017fe40d925b02ef803f97d","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            (\u0027GET\u0027, \u0027/v1/2/ports\u0027, {}, None),"},{"line_number":115,"context_line":"        ]"},{"line_number":116,"context_line":"        self.assertEqual(self.api.calls, expect)"},{"line_number":117,"context_line":"        self.assertEqual(len(ports), 0)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def test_ports_show(self):"},{"line_number":120,"context_line":"        port \u003d self.mgr.get(PORT[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fy2E%3D","line":117,"updated":"2013-10-28 23:01:01.000000000","message":"HasLength here too please.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ac88ff81d3ffa34185fd32ffa6404f480455fbe7","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            (\u0027GET\u0027, \u0027/v1/2/ports\u0027, {}, None),"},{"line_number":115,"context_line":"        ]"},{"line_number":116,"context_line":"        self.assertEqual(self.api.calls, expect)"},{"line_number":117,"context_line":"        self.assertEqual(len(ports), 0)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def test_ports_show(self):"},{"line_number":120,"context_line":"        port \u003d self.mgr.get(PORT[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fyuc%3D","line":117,"in_reply_to":"AAAATn%2F%2Fy2E%3D","updated":"2013-10-28 23:34:05.000000000","message":"Ok, thank you.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"83b53f214e1681b368a684cbad45334295c43084","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def test_ports_list_one_port(self):"},{"line_number":92,"context_line":"        fields \u003d {\"node_id\": 1}"},{"line_number":93,"context_line":"        ports \u003d self.mgr.list(fields\u003dfields)"},{"line_number":94,"context_line":"        self.assertEqual(len(ports), 1)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_ports_list_no_ports(self):"},{"line_number":97,"context_line":"        fields \u003d {\u0027node_id\u0027: 2}"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FyNc%3D","line":94,"updated":"2013-10-29 05:35:53.000000000","message":"I think you misunderstood me. I was suggesting your assertions should be :\n\n self.assertEqual(expect, self.api.calls)\n self.assertThat(ports, HasLength(1))\n\ninstead you seem to have removed one of your key assertions :(.\n\nHasLength comes from testtools.matchers:\n\nfrom testtools.matchers import HasLength #noqa","commit_id":"990062c42e6143526f5ff55580eb10719c924a14"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"83b53f214e1681b368a684cbad45334295c43084","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    def test_ports_list_no_ports(self):"},{"line_number":97,"context_line":"        fields \u003d {\u0027node_id\u0027: 2}"},{"line_number":98,"context_line":"        ports \u003d self.mgr.list(fields\u003dfields)"},{"line_number":99,"context_line":"        self.assertEqual(len(ports), 0)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def test_ports_show(self):"},{"line_number":102,"context_line":"        port \u003d self.mgr.get(PORT[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FyNQ%3D","line":99,"updated":"2013-10-29 05:35:53.000000000","message":"Same mysterious removal of an assertion here.","commit_id":"990062c42e6143526f5ff55580eb10719c924a14"}],"ironicclient/v1/port.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"fdc6a283e61eba600017fe40d925b02ef803f97d","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def list(self, fields\u003dNone):"},{"line_number":36,"context_line":"        node_id \u003d None"},{"line_number":37,"context_line":"        if fields:"},{"line_number":38,"context_line":"            node_id \u003d fields[\u0027node_id\u0027]"},{"line_number":39,"context_line":"        if node_id:"},{"line_number":40,"context_line":"            return self._list(\u0027/v1/%s/ports\u0027 % node_id, \"ports\")"},{"line_number":41,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fy10%3D","line":38,"updated":"2013-10-28 23:01:01.000000000","message":"I would write those three lines as:\n\n node_id \u003d (fields or {}).get(\u0027node_id\u0027)","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ac88ff81d3ffa34185fd32ffa6404f480455fbe7","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def list(self, fields\u003dNone):"},{"line_number":36,"context_line":"        node_id \u003d None"},{"line_number":37,"context_line":"        if fields:"},{"line_number":38,"context_line":"            node_id \u003d fields[\u0027node_id\u0027]"},{"line_number":39,"context_line":"        if node_id:"},{"line_number":40,"context_line":"            return self._list(\u0027/v1/%s/ports\u0027 % node_id, \"ports\")"},{"line_number":41,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FyuY%3D","line":38,"in_reply_to":"AAAATn%2F%2Fy10%3D","updated":"2013-10-28 23:34:05.000000000","message":"Good comments, will fix,thank you.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"}],"ironicclient/v1/port_shell.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"fdc6a283e61eba600017fe40d925b02ef803f97d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\"List ports.\"\"\""},{"line_number":45,"context_line":"    query_fields_list \u003d [\u0027node_id\u0027]"},{"line_number":46,"context_line":"    fields \u003d dict((k, v) for (k, v) in vars(args).items()"},{"line_number":47,"context_line":"                  if k in query_fields_list and not (v is None))"},{"line_number":48,"context_line":"    port \u003d cc.port.list(fields)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    field_labels \u003d [\u0027UUID\u0027, \u0027Address\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fy1k%3D","line":47,"updated":"2013-10-28 23:01:01.000000000","message":"\u0027not (v is None)\u0027 is not idiomatic.\n\nPlease say\n\n \u0027v is not None\u0027\n\ninstead.\n\nSeparately, mapping over query_fields_list might be easier to reason about, and in fact as we have precisely one fields we\u0027re pulling out... why not say this really simply?\n\nfields\u003ddict(node_id\u003dargs.node_id)\n\n?","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ac88ff81d3ffa34185fd32ffa6404f480455fbe7","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\"List ports.\"\"\""},{"line_number":45,"context_line":"    query_fields_list \u003d [\u0027node_id\u0027]"},{"line_number":46,"context_line":"    fields \u003d dict((k, v) for (k, v) in vars(args).items()"},{"line_number":47,"context_line":"                  if k in query_fields_list and not (v is None))"},{"line_number":48,"context_line":"    port \u003d cc.port.list(fields)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    field_labels \u003d [\u0027UUID\u0027, \u0027Address\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FyuU%3D","line":47,"in_reply_to":"AAAATn%2F%2Fy1k%3D","updated":"2013-10-28 23:34:05.000000000","message":"Ok, will do","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"fdc6a283e61eba600017fe40d925b02ef803f97d","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    fields \u003d dict((k, v) for (k, v) in vars(args).items()"},{"line_number":47,"context_line":"                  if k in query_fields_list and not (v is None))"},{"line_number":48,"context_line":"    port \u003d cc.port.list(fields)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    field_labels \u003d [\u0027UUID\u0027, \u0027Address\u0027]"},{"line_number":51,"context_line":"    fields \u003d [\u0027uuid\u0027, \u0027address\u0027]"},{"line_number":52,"context_line":"    utils.print_list(port, fields, field_labels, sortby\u003d1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fy1g%3D","line":49,"updated":"2013-10-28 23:01:01.000000000","message":"Whats the blank line for?","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ac88ff81d3ffa34185fd32ffa6404f480455fbe7","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    fields \u003d dict((k, v) for (k, v) in vars(args).items()"},{"line_number":47,"context_line":"                  if k in query_fields_list and not (v is None))"},{"line_number":48,"context_line":"    port \u003d cc.port.list(fields)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    field_labels \u003d [\u0027UUID\u0027, \u0027Address\u0027]"},{"line_number":51,"context_line":"    fields \u003d [\u0027uuid\u0027, \u0027address\u0027]"},{"line_number":52,"context_line":"    utils.print_list(port, fields, field_labels, sortby\u003d1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FyuQ%3D","line":49,"in_reply_to":"AAAATn%2F%2Fy1g%3D","updated":"2013-10-28 23:34:05.000000000","message":"Ok, will remove. thanks.","commit_id":"70a48a5dbfb784c9c00aca36548314123cad3cc2"}]}
