)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"457ff95f1706e20c572402c5098e8097ee6cd3f3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"network interfaces to attach. Originally, it accepts a list or a string."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"In case if a list value, the proper method iterates over it for"},{"line_number":13,"context_line":"processing and constructs a right structure for Nova-API. A tuple type"},{"line_number":14,"context_line":"is similar to a list type in the processing method and can look more"},{"line_number":15,"context_line":"logical for some developers (a tuple is a sequence of immutable python"},{"line_number":16,"context_line":"object, which can be ideal for predefined nics) and doensn\u0027t require"},{"line_number":17,"context_line":"anything to change in code except one validation check."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Also, this patch adds more info in the error message for validation"},{"line_number":20,"context_line":"step."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f201791_f7239304","line":17,"range":{"start_line":13,"start_character":58,"end_line":17,"end_character":55},"updated":"2017-06-20 18:19:35.000000000","message":"Why do we really need this right now though? Nothing is building off this. Did you just notice it and think it was odd and needed some future-proofing?","commit_id":"d459f1bf54a62052c96f6b01c32382102f04e414"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"81990862182da5839979bb8c946ec23691162814","unresolved":false,"context_lines":[{"line_number":10,"context_line":"network interfaces to attach. Originally, it accepts a list or a string."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"In case if a list value, the proper method iterates over it for"},{"line_number":13,"context_line":"processing and constructs a right structure for Nova-API. A tuple type"},{"line_number":14,"context_line":"is similar to a list type in the processing method and can look more"},{"line_number":15,"context_line":"logical for some developers (a tuple is a sequence of immutable python"},{"line_number":16,"context_line":"object, which can be ideal for predefined nics) and doensn\u0027t require"},{"line_number":17,"context_line":"anything to change in code except one validation check."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Also, this patch adds more info in the error message for validation"},{"line_number":20,"context_line":"step."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f201791_630d8036","line":17,"range":{"start_line":13,"start_character":58,"end_line":17,"end_character":55},"in_reply_to":"5f201791_f7239304","updated":"2017-06-20 21:31:30.000000000","message":"In some tool, which uses novaclient as python library I found a bug fix. It was the case when after some json/yaml loading/dumping original list object transforms into the tuple, which should we ok from the way how \"nics\" value is processed, but the novaclient fails. Also, from the error message, it was not obvious was is going wrong and why the \"nics\" value is not a list.","commit_id":"d459f1bf54a62052c96f6b01c32382102f04e414"}],"novaclient/tests/unit/v2/test_servers.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f25ac3ca9582a6f900babdb025e35e884b242e4f","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"                          flavor\u003d\u00271\u0027,"},{"line_number":1035,"context_line":"                          nics\u003d\u0027auto\u0027)"},{"line_number":1036,"context_line":""},{"line_number":1037,"context_line":"    def test__validate_create_nics(self):"},{"line_number":1038,"context_line":"        if self.cs.api_version \u003e api_versions.APIVersion(\u00272.36\u0027):"},{"line_number":1039,"context_line":"            self.assertRaises(ValueError,"},{"line_number":1040,"context_line":"                              self.cs.servers._validate_create_nics, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_2801536c","line":1037,"range":{"start_line":1037,"start_character":13,"end_line":1037,"end_character":14},"updated":"2017-07-14 14:21:49.000000000","message":"nit: I know why this is here, but I don\u0027t think you needed it. Meh","commit_id":"44447e38ed2db1f4d2ceb0ac033b87b4eda65d78"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"f2ecd997504418b19d785eb97bf6b18ed957ce97","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"                          flavor\u003d\u00271\u0027,"},{"line_number":1035,"context_line":"                          nics\u003d\u0027auto\u0027)"},{"line_number":1036,"context_line":""},{"line_number":1037,"context_line":"    def test__validate_create_nics(self):"},{"line_number":1038,"context_line":"        if self.cs.api_version \u003e api_versions.APIVersion(\u00272.36\u0027):"},{"line_number":1039,"context_line":"            self.assertRaises(ValueError,"},{"line_number":1040,"context_line":"                              self.cs.servers._validate_create_nics, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_33ac249f","line":1037,"range":{"start_line":1037,"start_character":13,"end_line":1037,"end_character":14},"in_reply_to":"1f1a1f67_2801536c","updated":"2017-07-14 14:42:26.000000000","message":"I need :) it is my preference to keep the full name of a tested method right after `test_` prefix of test name.","commit_id":"44447e38ed2db1f4d2ceb0ac033b87b4eda65d78"}],"novaclient/v2/servers.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"093488b00f7d6d123edcae6f8c8457d4a772b1b9","unresolved":false,"context_lines":[{"line_number":1315,"context_line":"                raise ValueError(\u0027nics are required after microversion 2.36\u0027)"},{"line_number":1316,"context_line":"        elif nics and not isinstance(nics, (list, tuple)):"},{"line_number":1317,"context_line":"            raise ValueError(\u0027nics must be a list or a tuple, but %s type is \u0027"},{"line_number":1318,"context_line":"                             \u0027found\u0027 % type(nics))"},{"line_number":1319,"context_line":""},{"line_number":1320,"context_line":"    def create(self, name, image, flavor, meta\u003dNone, files\u003dNone,"},{"line_number":1321,"context_line":"               reservation_id\u003dNone, min_count\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f201791_1e5bd12e","line":1318,"updated":"2017-06-20 14:25:15.000000000","message":"Rephrase the message as:\n\n    nics must be a list or a tuple, not %s","commit_id":"a82010944e716ee2c97ce18fa5cdbcffd74fc213"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"453dafb64e14bb7c4f143b9a08e557411306b76e","unresolved":false,"context_lines":[{"line_number":1315,"context_line":"                raise ValueError(\u0027nics are required after microversion 2.36\u0027)"},{"line_number":1316,"context_line":"        elif nics and not isinstance(nics, (list, tuple)):"},{"line_number":1317,"context_line":"            raise ValueError(\u0027nics must be a list or a tuple, but %s type is \u0027"},{"line_number":1318,"context_line":"                             \u0027found\u0027 % type(nics))"},{"line_number":1319,"context_line":""},{"line_number":1320,"context_line":"    def create(self, name, image, flavor, meta\u003dNone, files\u003dNone,"},{"line_number":1321,"context_line":"               reservation_id\u003dNone, min_count\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f201791_fecff554","line":1318,"in_reply_to":"5f201791_1e5bd12e","updated":"2017-06-20 14:36:47.000000000","message":"Done","commit_id":"a82010944e716ee2c97ce18fa5cdbcffd74fc213"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a1ee804077faa84c097b21c7868893a7669a4f80","unresolved":false,"context_lines":[{"line_number":1313,"context_line":"        if self.api_version \u003e api_versions.APIVersion(\u00272.36\u0027):"},{"line_number":1314,"context_line":"            if not nics:"},{"line_number":1315,"context_line":"                raise ValueError(\u0027nics are required after microversion 2.36\u0027)"},{"line_number":1316,"context_line":"        elif nics and not isinstance(nics, (list, tuple)):"},{"line_number":1317,"context_line":"            raise ValueError(\u0027nics must be a list or a tuple, not %s\u0027 %"},{"line_number":1318,"context_line":"                             type(nics))"},{"line_number":1319,"context_line":""},{"line_number":1320,"context_line":"    def create(self, name, image, flavor, meta\u003dNone, files\u003dNone,"},{"line_number":1321,"context_line":"               reservation_id\u003dNone, min_count\u003dNone,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_1f9f0660","line":1318,"range":{"start_line":1316,"start_character":0,"end_line":1318,"end_character":40},"updated":"2017-06-22 14:17:41.000000000","message":"Do we need a test for this? Looks like ServersV2_37Test.test_create_server_with_nics_auto in novaclient/tests/unit/v2/test_servers.py would be a good blueprint","commit_id":"d459f1bf54a62052c96f6b01c32382102f04e414"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"96b86ef9aa789fe7f9c05a4e0a08e54ee79f3140","unresolved":false,"context_lines":[{"line_number":1313,"context_line":"        if self.api_version \u003e api_versions.APIVersion(\u00272.36\u0027):"},{"line_number":1314,"context_line":"            if not nics:"},{"line_number":1315,"context_line":"                raise ValueError(\u0027nics are required after microversion 2.36\u0027)"},{"line_number":1316,"context_line":"        elif nics and not isinstance(nics, (list, tuple)):"},{"line_number":1317,"context_line":"            raise ValueError(\u0027nics must be a list or a tuple, not %s\u0027 %"},{"line_number":1318,"context_line":"                             type(nics))"},{"line_number":1319,"context_line":""},{"line_number":1320,"context_line":"    def create(self, name, image, flavor, meta\u003dNone, files\u003dNone,"},{"line_number":1321,"context_line":"               reservation_id\u003dNone, min_count\u003dNone,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f1a1f67_7b095893","line":1318,"range":{"start_line":1316,"start_character":0,"end_line":1318,"end_character":40},"in_reply_to":"5f201791_1f9f0660","updated":"2017-07-14 12:16:13.000000000","message":"done","commit_id":"d459f1bf54a62052c96f6b01c32382102f04e414"}]}
