)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"40f1432bebd3b1ae992d564fb0b8ced90573f4e3","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-02-29 17:20:56 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add custom SQLAlchemy type for MACAddress"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I5aed64b083fb848cb16bd34b1ca167a264531e03"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7af24918_466e54ca","line":8,"updated":"2016-03-01 15:43:39.000000000","message":"Please add more description why is this needed and a link to bug or blueprint","commit_id":"b83e8480ea754e328f2d2708829de493a106f332"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"6c85613fa9db131dba76531331b84a3ade194d65","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7af24918_5faa88d5","line":10,"updated":"2016-03-01 20:22:08.000000000","message":"Could you add the reference to the dependency?","commit_id":"b83e8480ea754e328f2d2708829de493a106f332"}],"neutron/db/sqlalchemytypes.py":[{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"c844c37fb9efe17eab8cddec1b44c6ef711b3479","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    def process_result_value(self, value, dialect):"},{"line_number":24,"context_line":"        return netaddr.EUI(value)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def process_bind_param(self, value, dialect):"},{"line_number":27,"context_line":"        return str(value)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7af24918_ef09a285","line":26,"updated":"2016-03-03 12:48:50.000000000","message":"As it was introduced in IP and CIDR SQLAlchemy patches, please add validation before writing to DB:\nraise AttributeError(_(\"Received type \u0027%(type)s\u0027 and value \"\n                                   \"\u0027%(value)s\u0027. Expecting netaddr.IPNetwork \"\n                                   \"type.\") % {\u0027type\u0027: type(value),\n                                               \u0027value\u0027: value})","commit_id":"88bb2426cfe8e52f8dd5a8939160e8a28a30a6a5"},{"author":{"_account_id":19591,"name":"Saisrikiran Mudigonda","email":"saisrikiran.mudigonda@intel.com","username":"saisrikiran"},"change_message_id":"9d0dfd18db9a31c8271fcada037902b8b68d1ad8","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    def process_result_value(self, value, dialect):"},{"line_number":24,"context_line":"        return netaddr.EUI(value)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def process_bind_param(self, value, dialect):"},{"line_number":27,"context_line":"        return str(value)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7af24918_a450060c","line":26,"in_reply_to":"7af24918_ef09a285","updated":"2016-03-04 17:44:41.000000000","message":"Thanks Artur for the comments. I have uploaded PS 6 with the changes.","commit_id":"88bb2426cfe8e52f8dd5a8939160e8a28a30a6a5"}],"neutron/tests/tools.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"9ccd049e8535ff5a795357587a7acf2f19a83f5e","unresolved":false,"context_lines":[{"line_number":190,"context_line":"    return False"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"def get_random_mac():"},{"line_number":194,"context_line":"    \"\"\"Generate a random mac address starting with fe:16:3e\"\"\""},{"line_number":195,"context_line":"    mac \u003d [0xfe, 0x16, 0x3e,"},{"line_number":196,"context_line":"        random.randint(0x00, 0xff),"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_201e005f","line":193,"updated":"2016-03-09 17:37:57.000000000","message":"Maybe better move it up to line 180.","commit_id":"57e6bf3dcea1082e11a6da3e8f61f031d506a7ea"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"ad51d24330da71faea4fc24282510d1017669e7b","unresolved":false,"context_lines":[{"line_number":190,"context_line":"    return False"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"def get_random_mac():"},{"line_number":194,"context_line":"    \"\"\"Generate a random mac address starting with fe:16:3e\"\"\""},{"line_number":195,"context_line":"    mac \u003d [0xfe, 0x16, 0x3e,"},{"line_number":196,"context_line":"        random.randint(0x00, 0xff),"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_89dcb713","line":193,"in_reply_to":"5aef4532_201e005f","updated":"2016-03-14 11:43:34.000000000","message":"After the rebase, it\u0027s better off here.","commit_id":"57e6bf3dcea1082e11a6da3e8f61f031d506a7ea"}],"neutron/tests/unit/db/test_sqlalchemytypes.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"9ccd049e8535ff5a795357587a7acf2f19a83f5e","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    # Test for multiple macs using generate_random_mac"},{"line_number":81,"context_line":"    # from tools"},{"line_number":82,"context_line":"    def test_multiple_macs(self):"},{"line_number":83,"context_line":"        wrong_macs \u003d [\u0027CA:FE:DE:AD:BE:EF\u0027, \u002700:11:22:33:44:55\u0027]"},{"line_number":84,"context_line":"        [mac for mac in wrong_macs"},{"line_number":85,"context_line":"         if mac.lower().startswith(\u0027fa:16:3e\u0027)]"},{"line_number":86,"context_line":"        self.assertRaises(DBError, self._add_row, \u0027fake_id\u0027, mac)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_60048849","line":83,"updated":"2016-03-09 17:37:57.000000000","message":"how are those \u0027wrong\u0027?..","commit_id":"57e6bf3dcea1082e11a6da3e8f61f031d506a7ea"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"9ccd049e8535ff5a795357587a7acf2f19a83f5e","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    # from tools"},{"line_number":82,"context_line":"    def test_multiple_macs(self):"},{"line_number":83,"context_line":"        wrong_macs \u003d [\u0027CA:FE:DE:AD:BE:EF\u0027, \u002700:11:22:33:44:55\u0027]"},{"line_number":84,"context_line":"        [mac for mac in wrong_macs"},{"line_number":85,"context_line":"         if mac.lower().startswith(\u0027fa:16:3e\u0027)]"},{"line_number":86,"context_line":"        self.assertRaises(DBError, self._add_row, \u0027fake_id\u0027, mac)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        correct_macs \u003d [\u0027FA:16:3E:11:22:33\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_e05ff8e2","line":85,"range":{"start_line":84,"start_character":8,"end_line":85,"end_character":47},"updated":"2016-03-09 17:37:57.000000000","message":"I don\u0027t get the test at all. So that will just set mac to the last value in the list, right?","commit_id":"57e6bf3dcea1082e11a6da3e8f61f031d506a7ea"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"9ccd049e8535ff5a795357587a7acf2f19a83f5e","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        correct_macs \u003d [\u0027FA:16:3E:11:22:33\u0027,"},{"line_number":89,"context_line":"                        \u0027fA:16:3e:11:22:44\u0027,"},{"line_number":90,"context_line":"                        \u0027Fa:16:3E:11:22:55\u0027]"},{"line_number":91,"context_line":"        [mac for mac in correct_macs"},{"line_number":92,"context_line":"         if mac.lower().correct_macs.startswith(\u0027fa:16:3e\u0027)]"},{"line_number":93,"context_line":"        self.assertRaises(DBError, self._add_row, \u0027fake_id\u0027, mac)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        multiple_macs \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_00a2e44a","line":92,"range":{"start_line":91,"start_character":8,"end_line":92,"end_character":60},"updated":"2016-03-09 17:37:57.000000000","message":"same weird construction. what\u0027s the intent here?","commit_id":"57e6bf3dcea1082e11a6da3e8f61f031d506a7ea"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"9ccd049e8535ff5a795357587a7acf2f19a83f5e","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                        \u0027Fa:16:3E:11:22:55\u0027]"},{"line_number":91,"context_line":"        [mac for mac in correct_macs"},{"line_number":92,"context_line":"         if mac.lower().correct_macs.startswith(\u0027fa:16:3e\u0027)]"},{"line_number":93,"context_line":"        self.assertRaises(DBError, self._add_row, \u0027fake_id\u0027, mac)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        multiple_macs \u003d []"},{"line_number":96,"context_line":"        for i in range(5):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_c0c2bce8","line":93,"updated":"2016-03-09 17:37:57.000000000","message":"so why would it fail if it\u0027s correct MAC?","commit_id":"57e6bf3dcea1082e11a6da3e8f61f031d506a7ea"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"9ccd049e8535ff5a795357587a7acf2f19a83f5e","unresolved":false,"context_lines":[{"line_number":92,"context_line":"         if mac.lower().correct_macs.startswith(\u0027fa:16:3e\u0027)]"},{"line_number":93,"context_line":"        self.assertRaises(DBError, self._add_row, \u0027fake_id\u0027, mac)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        multiple_macs \u003d []"},{"line_number":96,"context_line":"        for i in range(5):"},{"line_number":97,"context_line":"            multiple_macs.extend(tools.get_random_mac())"},{"line_number":98,"context_line":"        [mac for mac in multiple_macs"},{"line_number":99,"context_line":"            if mac.lower().multiple_macs.startswith(\u0027fa:16:3e\u0027)]"},{"line_number":100,"context_line":"        self.assertEqual(len(mac), len(multiple_macs))"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_a07fb0a9","line":100,"range":{"start_line":95,"start_character":8,"end_line":100,"end_character":54},"updated":"2016-03-09 17:37:57.000000000","message":"In this section, you don\u0027t touch any code for the new custom type at all. What\u0027s the intent here?","commit_id":"57e6bf3dcea1082e11a6da3e8f61f031d506a7ea"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"40ad90e30aa97332dbbd95ed681edcba15ac3b68","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        self.assertEqual(0, len(objs))"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def test_wrong_mac(self):"},{"line_number":230,"context_line":"        wrong_macs \u003d [\"fake\", \"FK:16:3E:00:00:02\", \"FA:16:3E:00:00:020\", \"\"]"},{"line_number":231,"context_line":"        for mac in wrong_macs:"},{"line_number":232,"context_line":"            self.assertRaises(exception.DBError, self._add_row,"},{"line_number":233,"context_line":"                              id\u003duuidutils.generate_uuid(), mac\u003dmac)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_3008422c","line":230,"updated":"2016-03-14 20:15:08.000000000","message":"I think that we can use negative MAC Addresses \n\nhttps://github.com/drkjam/netaddr/blob/rel-0.7.x/netaddr/eui/__init__.py#L382","commit_id":"9f2122605b3258c9edfb3a6ae1fce95943f074df"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1f16188398dfe86ad1e8a66002d3a8b1547f73a7","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        self.assertEqual(0, len(objs))"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def test_wrong_mac(self):"},{"line_number":230,"context_line":"        wrong_macs \u003d [\"fake\", \"FK:16:3E:00:00:02\", \"FA:16:3E:00:00:020\", \"\"]"},{"line_number":231,"context_line":"        for mac in wrong_macs:"},{"line_number":232,"context_line":"            self.assertRaises(exception.DBError, self._add_row,"},{"line_number":233,"context_line":"                              id\u003duuidutils.generate_uuid(), mac\u003dmac)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1af94dfe_1950f15d","line":230,"in_reply_to":"1af94dfe_21613d3a","updated":"2016-03-16 16:23:49.000000000","message":"OK. But it seems netaddr allows for integers too, so that\u0027s ok. If you feel like expanding for more test cases, you can upload a patch adding them.","commit_id":"9f2122605b3258c9edfb3a6ae1fce95943f074df"},{"author":{"_account_id":19591,"name":"Saisrikiran Mudigonda","email":"saisrikiran.mudigonda@intel.com","username":"saisrikiran"},"change_message_id":"8b8ad67655c2f79a8df91d08a216ffcc59565016","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        self.assertEqual(0, len(objs))"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def test_wrong_mac(self):"},{"line_number":230,"context_line":"        wrong_macs \u003d [\"fake\", \"FK:16:3E:00:00:02\", \"FA:16:3E:00:00:020\", \"\"]"},{"line_number":231,"context_line":"        for mac in wrong_macs:"},{"line_number":232,"context_line":"            self.assertRaises(exception.DBError, self._add_row,"},{"line_number":233,"context_line":"                              id\u003duuidutils.generate_uuid(), mac\u003dmac)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1af94dfe_21613d3a","line":230,"in_reply_to":"3afc51ec_200c62ec","updated":"2016-03-16 15:42:26.000000000","message":"The negative MAC Addresses test was supposed to test all MAC\u0027s not starting with FA:16:3E, since, all MAC\u0027s generated by Neutron must start with this sequence.","commit_id":"9f2122605b3258c9edfb3a6ae1fce95943f074df"},{"author":{"_account_id":20996,"name":"Avinash Raghavendra","email":"avinash.raghavendra@ericsson.com","username":"eragavi"},"change_message_id":"0795e6b2de789d4027ecdd686a93ed82994ab91a","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        self.assertEqual(0, len(objs))"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def test_wrong_mac(self):"},{"line_number":230,"context_line":"        wrong_macs \u003d [\"fake\", \"FK:16:3E:00:00:02\", \"FA:16:3E:00:00:020\", \"\"]"},{"line_number":231,"context_line":"        for mac in wrong_macs:"},{"line_number":232,"context_line":"            self.assertRaises(exception.DBError, self._add_row,"},{"line_number":233,"context_line":"                              id\u003duuidutils.generate_uuid(), mac\u003dmac)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_d9fae9bc","line":230,"in_reply_to":"3afc51ec_3008422c","updated":"2016-03-14 21:04:57.000000000","message":"@Victor, what do mean a negative MAC address? the above link show all Fs.","commit_id":"9f2122605b3258c9edfb3a6ae1fce95943f074df"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3de9cc4c3d5f26c15144a37385c0769d2fb83faf","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        self.assertEqual(0, len(objs))"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def test_wrong_mac(self):"},{"line_number":230,"context_line":"        wrong_macs \u003d [\"fake\", \"FK:16:3E:00:00:02\", \"FA:16:3E:00:00:020\", \"\"]"},{"line_number":231,"context_line":"        for mac in wrong_macs:"},{"line_number":232,"context_line":"            self.assertRaises(exception.DBError, self._add_row,"},{"line_number":233,"context_line":"                              id\u003duuidutils.generate_uuid(), mac\u003dmac)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_200c62ec","line":230,"in_reply_to":"3afc51ec_d9fae9bc","updated":"2016-03-15 07:37:58.000000000","message":"I will add -1 to the cases.","commit_id":"9f2122605b3258c9edfb3a6ae1fce95943f074df"}]}
