)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"871dddcccc8405cc4a6743ffeca67f85bf6e2480","unresolved":false,"context_lines":[{"line_number":10,"context_line":"It integrates the VersionedObject with the existing code."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Integration revealed that using IPAddress is not correct for allowed"},{"line_number":13,"context_line":"address pairs, because the address can also represent a network."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Another issue revealed by the integration is that we must retain the"},{"line_number":16,"context_line":"original string format passed by users through API for MAC addresses."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1a122d0e_1e0d9137","line":13,"range":{"start_line":13,"start_character":56,"end_line":13,"end_character":63},"updated":"2016-04-18 09:10:25.000000000","message":"subnet or cidr","commit_id":"0ac390d2d465a7ee7f5468ac6a871f28d65685c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"7abb4031ee67b6dedbb2b7396faf03fd3a46d544","unresolved":false,"context_lines":[{"line_number":10,"context_line":"It integrates the VersionedObject with the existing code."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Integration revealed that using IPAddress is not correct for allowed"},{"line_number":13,"context_line":"address pairs, because the address can also represent a network."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Another issue revealed by the integration is that we must retain the"},{"line_number":16,"context_line":"original string format passed by users through API for MAC addresses."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1a122d0e_369224a0","line":13,"range":{"start_line":13,"start_character":56,"end_line":13,"end_character":63},"in_reply_to":"1a122d0e_1e0d9137","updated":"2016-04-18 14:04:31.000000000","message":"Done","commit_id":"0ac390d2d465a7ee7f5468ac6a871f28d65685c7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"871dddcccc8405cc4a6743ffeca67f85bf6e2480","unresolved":false,"context_lines":[{"line_number":22,"context_line":"which is contradictory to how API currently behaves (returning mask-less"},{"line_number":23,"context_line":"addresses for /32 - for ipv4 - and /128 - for ipv6 - prefix lengths)."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"To solve those issues, \u0027stubborn\u0027 flavours for netaddr.EUI and"},{"line_number":26,"context_line":"netaddr.IPNetwork types are introduced. Those \u0027stubborn\u0027 flavours"},{"line_number":27,"context_line":"attempt to retain the original string representation, as passed by the"},{"line_number":28,"context_line":"caller."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1a122d0e_be357ddb","line":25,"range":{"start_line":25,"start_character":34,"end_line":25,"end_character":42},"updated":"2016-04-18 09:10:25.000000000","message":"flavors","commit_id":"0ac390d2d465a7ee7f5468ac6a871f28d65685c7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"871dddcccc8405cc4a6743ffeca67f85bf6e2480","unresolved":false,"context_lines":[{"line_number":22,"context_line":"which is contradictory to how API currently behaves (returning mask-less"},{"line_number":23,"context_line":"addresses for /32 - for ipv4 - and /128 - for ipv6 - prefix lengths)."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"To solve those issues, \u0027stubborn\u0027 flavours for netaddr.EUI and"},{"line_number":26,"context_line":"netaddr.IPNetwork types are introduced. Those \u0027stubborn\u0027 flavours"},{"line_number":27,"context_line":"attempt to retain the original string representation, as passed by the"},{"line_number":28,"context_line":"caller."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1a122d0e_7efac5be","line":25,"range":{"start_line":25,"start_character":24,"end_line":25,"end_character":32},"updated":"2016-04-18 09:10:25.000000000","message":"this name is really dodgy. when i first looked at this is was not easily understood.\nMaybe consider Persistent or Original or Authentic","commit_id":"0ac390d2d465a7ee7f5468ac6a871f28d65685c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"7abb4031ee67b6dedbb2b7396faf03fd3a46d544","unresolved":false,"context_lines":[{"line_number":22,"context_line":"which is contradictory to how API currently behaves (returning mask-less"},{"line_number":23,"context_line":"addresses for /32 - for ipv4 - and /128 - for ipv6 - prefix lengths)."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"To solve those issues, \u0027stubborn\u0027 flavours for netaddr.EUI and"},{"line_number":26,"context_line":"netaddr.IPNetwork types are introduced. Those \u0027stubborn\u0027 flavours"},{"line_number":27,"context_line":"attempt to retain the original string representation, as passed by the"},{"line_number":28,"context_line":"caller."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1a122d0e_f671cca9","line":25,"range":{"start_line":25,"start_character":24,"end_line":25,"end_character":32},"in_reply_to":"1a122d0e_7efac5be","updated":"2016-04-18 14:04:31.000000000","message":"Done","commit_id":"0ac390d2d465a7ee7f5468ac6a871f28d65685c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"7abb4031ee67b6dedbb2b7396faf03fd3a46d544","unresolved":false,"context_lines":[{"line_number":22,"context_line":"which is contradictory to how API currently behaves (returning mask-less"},{"line_number":23,"context_line":"addresses for /32 - for ipv4 - and /128 - for ipv6 - prefix lengths)."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"To solve those issues, \u0027stubborn\u0027 flavours for netaddr.EUI and"},{"line_number":26,"context_line":"netaddr.IPNetwork types are introduced. Those \u0027stubborn\u0027 flavours"},{"line_number":27,"context_line":"attempt to retain the original string representation, as passed by the"},{"line_number":28,"context_line":"caller."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1a122d0e_5669a0bd","line":25,"range":{"start_line":25,"start_character":34,"end_line":25,"end_character":42},"in_reply_to":"1a122d0e_be357ddb","updated":"2016-04-18 14:04:31.000000000","message":"Done","commit_id":"0ac390d2d465a7ee7f5468ac6a871f28d65685c7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"871dddcccc8405cc4a6743ffeca67f85bf6e2480","unresolved":false,"context_lines":[{"line_number":23,"context_line":"addresses for /32 - for ipv4 - and /128 - for ipv6 - prefix lengths)."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"To solve those issues, \u0027stubborn\u0027 flavours for netaddr.EUI and"},{"line_number":26,"context_line":"netaddr.IPNetwork types are introduced. Those \u0027stubborn\u0027 flavours"},{"line_number":27,"context_line":"attempt to retain the original string representation, as passed by the"},{"line_number":28,"context_line":"caller."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1a122d0e_fe4d3573","line":26,"range":{"start_line":26,"start_character":57,"end_line":26,"end_character":65},"updated":"2016-04-18 09:10:25.000000000","message":"ditto","commit_id":"0ac390d2d465a7ee7f5468ac6a871f28d65685c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"7abb4031ee67b6dedbb2b7396faf03fd3a46d544","unresolved":false,"context_lines":[{"line_number":23,"context_line":"addresses for /32 - for ipv4 - and /128 - for ipv6 - prefix lengths)."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"To solve those issues, \u0027stubborn\u0027 flavours for netaddr.EUI and"},{"line_number":26,"context_line":"netaddr.IPNetwork types are introduced. Those \u0027stubborn\u0027 flavours"},{"line_number":27,"context_line":"attempt to retain the original string representation, as passed by the"},{"line_number":28,"context_line":"caller."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1a122d0e_3664e4e3","line":26,"range":{"start_line":26,"start_character":57,"end_line":26,"end_character":65},"in_reply_to":"1a122d0e_fe4d3573","updated":"2016-04-18 14:04:31.000000000","message":"Done","commit_id":"0ac390d2d465a7ee7f5468ac6a871f28d65685c7"},{"author":{"_account_id":12906,"name":"tonytan4ever","email":"tony.tan@rackspace.com","username":"tonytan4ever"},"change_message_id":"c2bda4c0279dcd593f7f35c67b8ec239b0e9f43c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     tonytan4ever \u003ctonytan198211@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-04-28 15:06:55 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Integrate the port allowed address pairs VersionedObject in Neutron"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch is dependent on commit I8d03528f8f45f5f50fa467b39245a513a37c5d89."},{"line_number":10,"context_line":"It integrates the VersionedObject with the existing code."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"dab17558_bb5c6d26","line":7,"updated":"2016-05-06 19:29:30.000000000","message":"The commit message is too long ( \u003e65 chars)\nNeeds to fix","commit_id":"737e4d8f0bfcd2bdeed93711048d965a55943d1b"}],"neutron/common/utils.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"cffd3adbd82c586ca3012e2fa7385fd03664e5cf","unresolved":false,"context_lines":[{"line_number":651,"context_line":""},{"line_number":652,"context_line":"class _StubbornBase(object):"},{"line_number":653,"context_line":"    \u0027\u0027\u0027"},{"line_number":654,"context_line":"    This class retains format of the address string passed during"},{"line_number":655,"context_line":"    initialization."},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"    This is useful when we want to make sure that we retain the format passed"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_ba6f6991","line":654,"updated":"2016-04-15 21:32:23.000000000","message":"This comment may be too specific. Maybe docstring should move into subclasses.","commit_id":"435697b76a28bc31b9d3dab5e6b9f4617339e29f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"3a309a6a2e45222144f032c6560c063a147866b4","unresolved":false,"context_lines":[{"line_number":651,"context_line":""},{"line_number":652,"context_line":"class _StubbornBase(object):"},{"line_number":653,"context_line":"    \u0027\u0027\u0027"},{"line_number":654,"context_line":"    This class retains format of the address string passed during"},{"line_number":655,"context_line":"    initialization."},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"    This is useful when we want to make sure that we retain the format passed"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_6cbfd1fb","line":654,"range":{"start_line":654,"start_character":23,"end_line":654,"end_character":29},"updated":"2016-04-17 09:16:17.000000000","message":"the format","commit_id":"435697b76a28bc31b9d3dab5e6b9f4617339e29f"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"25044c8c7c135129d641e1a0553af90ca1cd866d","unresolved":false,"context_lines":[{"line_number":651,"context_line":""},{"line_number":652,"context_line":"class _StubbornBase(object):"},{"line_number":653,"context_line":"    \u0027\u0027\u0027"},{"line_number":654,"context_line":"    This class retains format of the address string passed during"},{"line_number":655,"context_line":"    initialization."},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"    This is useful when we want to make sure that we retain the format passed"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_7c181285","line":654,"range":{"start_line":654,"start_character":23,"end_line":654,"end_character":29},"in_reply_to":"1a122d0e_6cbfd1fb","updated":"2016-04-18 08:28:00.000000000","message":"Done","commit_id":"435697b76a28bc31b9d3dab5e6b9f4617339e29f"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"29491d29da4a3cc64ce9a55358a801bb0263e8ea","unresolved":false,"context_lines":[{"line_number":649,"context_line":"    return inner"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"class _AuthenticBase(object):"},{"line_number":653,"context_line":"    def __init__(self, addr, **kwargs):"},{"line_number":654,"context_line":"        super(_AuthenticBase, self).__init__(addr, **kwargs)"},{"line_number":655,"context_line":"        self._initial_value \u003d addr"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"    def __str__(self):"},{"line_number":658,"context_line":"        if isinstance(self._initial_value, six.string_types):"},{"line_number":659,"context_line":"            return self._initial_value"},{"line_number":660,"context_line":"        return super(_AuthenticBase, self).__str__()"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def __deepcopy__(self, memo):"},{"line_number":663,"context_line":"        return self.__class__(self._initial_value)"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"class AuthenticEUI(_AuthenticBase, netaddr.EUI):"},{"line_number":667,"context_line":"    \u0027\u0027\u0027"},{"line_number":668,"context_line":"    This class retains the format of the MAC address string passed during"},{"line_number":669,"context_line":"    initialization."},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"    This is useful when we want to make sure that we retain the format passed"},{"line_number":672,"context_line":"    by a user through API."},{"line_number":673,"context_line":"    \u0027\u0027\u0027"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":""},{"line_number":676,"context_line":"class AuthenticIPNetwork(_AuthenticBase, netaddr.IPNetwork):"},{"line_number":677,"context_line":"    \u0027\u0027\u0027"},{"line_number":678,"context_line":"    This class retains the format of the IP network string passed during"},{"line_number":679,"context_line":"    initialization."},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    This is useful when we want to make sure that we retain the format passed"},{"line_number":682,"context_line":"    by a user through API."},{"line_number":683,"context_line":"    \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_3b80e4f6","line":683,"range":{"start_line":652,"start_character":0,"end_line":683,"end_character":7},"updated":"2016-04-20 10:23:57.000000000","message":"Can we push this as separate patch and merge it into master so other changes can take it up also?","commit_id":"1eae8a1c06f3d0b1e44a7e1e4829492c9b4700c8"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"3d0845de75f55c139afeedab5326b98e4830b522","unresolved":false,"context_lines":[{"line_number":659,"context_line":"            return self._initial_value"},{"line_number":660,"context_line":"        return super(_AuthenticBase, self).__str__()"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def __deepcopy__(self, memo):"},{"line_number":663,"context_line":"        return self.__class__(self._initial_value)"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"bab6814e_3c3dacc4","line":662,"updated":"2016-05-20 10:56:28.000000000","message":"why do we need to override deepcopy?","commit_id":"e369d1109efcdf24c984d0c5aa0aefe1906333d1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a976aaaf7f0bdc9d30f1346f0bd2c3ec782ad010","unresolved":false,"context_lines":[{"line_number":659,"context_line":"            return self._initial_value"},{"line_number":660,"context_line":"        return super(_AuthenticBase, self).__str__()"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def __deepcopy__(self, memo):"},{"line_number":663,"context_line":"        return self.__class__(self._initial_value)"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"bab6814e_03b04389","line":662,"in_reply_to":"bab6814e_3c3dacc4","updated":"2016-05-20 13:04:22.000000000","message":"In base modify_fields_to_db, we deepcopy fields. Since netaddr.* classes are __slot__based, their dicts are not copied, so we are forced to hack it around here.","commit_id":"e369d1109efcdf24c984d0c5aa0aefe1906333d1"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"3d0845de75f55c139afeedab5326b98e4830b522","unresolved":false,"context_lines":[{"line_number":663,"context_line":"        return self.__class__(self._initial_value)"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"class AuthenticEUI(_AuthenticBase, netaddr.EUI):"},{"line_number":667,"context_line":"    \u0027\u0027\u0027"},{"line_number":668,"context_line":"    This class retains the format of the MAC address string passed during"},{"line_number":669,"context_line":"    initialization."}],"source_content_type":"text/x-python","patch_set":19,"id":"bab6814e_598fe2cb","line":666,"updated":"2016-05-20 10:56:28.000000000","message":"do we need some validation to make sure that the addr passed is an actual MAC. If we pass a string I am afraid that there\u0027s no validation. In any case can you please add an unit test checking that bad values raise an exception? Ditto for the other class.","commit_id":"e369d1109efcdf24c984d0c5aa0aefe1906333d1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a976aaaf7f0bdc9d30f1346f0bd2c3ec782ad010","unresolved":false,"context_lines":[{"line_number":663,"context_line":"        return self.__class__(self._initial_value)"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"class AuthenticEUI(_AuthenticBase, netaddr.EUI):"},{"line_number":667,"context_line":"    \u0027\u0027\u0027"},{"line_number":668,"context_line":"    This class retains the format of the MAC address string passed during"},{"line_number":669,"context_line":"    initialization."}],"source_content_type":"text/x-python","patch_set":19,"id":"bab6814e_83a8b38e","line":666,"in_reply_to":"bab6814e_598fe2cb","updated":"2016-05-20 13:04:22.000000000","message":"netaddr.EUI will handle validation for us. I will add some negative tests.","commit_id":"e369d1109efcdf24c984d0c5aa0aefe1906333d1"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"9b48c6df896af547f7ccf7495acb378d61e4664e","unresolved":false,"context_lines":[{"line_number":649,"context_line":"    return inner"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"class _AuthenticBase(object):"},{"line_number":653,"context_line":"    def __init__(self, addr, **kwargs):"},{"line_number":654,"context_line":"        super(_AuthenticBase, self).__init__(addr, **kwargs)"},{"line_number":655,"context_line":"        self._initial_value \u003d addr"}],"source_content_type":"text/x-python","patch_set":20,"id":"bab6814e_6a2394bd","line":652,"updated":"2016-05-23 14:32:59.000000000","message":"just some bikeshedding, \n\nSomething like \"UnmodifiedBase\" or \"OriginalBase\" sounds better to me. \"Authentic\" sounds strange, then the other EUI /IPNetwork, etc are not authentic?\n\nsince this is highly subjective, and I\u0027m not a native speaker, please, only consider this if you need to respin and you believe it makes any sense at all.","commit_id":"8ecb28dd09aedc0df6b91af4712aa8469a90e850"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"028f1652754ab14ea46b065b76d4ce28f5ee9cac","unresolved":false,"context_lines":[{"line_number":649,"context_line":"    return inner"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"class _AuthenticBase(object):"},{"line_number":653,"context_line":"    def __init__(self, addr, **kwargs):"},{"line_number":654,"context_line":"        super(_AuthenticBase, self).__init__(addr, **kwargs)"},{"line_number":655,"context_line":"        self._initial_value \u003d addr"}],"source_content_type":"text/x-python","patch_set":20,"id":"bab6814e_e962ef3c","line":652,"in_reply_to":"bab6814e_6a2394bd","updated":"2016-05-23 15:00:09.000000000","message":"I was suggested the name by some other contributor when I used \u0027Stubborn\u0027 before. I prefer not to name-shed too much.","commit_id":"8ecb28dd09aedc0df6b91af4712aa8469a90e850"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4191bc31765679df0918b6a675d69603770f2856","unresolved":false,"context_lines":[{"line_number":649,"context_line":"    return inner"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"class _AuthenticBase(object):"},{"line_number":653,"context_line":"    def __init__(self, addr, **kwargs):"},{"line_number":654,"context_line":"        super(_AuthenticBase, self).__init__(addr, **kwargs)"},{"line_number":655,"context_line":"        self._initial_value \u003d addr"}],"source_content_type":"text/x-python","patch_set":20,"id":"bab6814e_d52df8fe","line":652,"in_reply_to":"bab6814e_e962ef3c","updated":"2016-05-23 15:59:09.000000000","message":"FYI from Mac thesaurus:\n\n\"Authentic - made or done in the traditional or original way, or in a way that faithfully resembles an original\"","commit_id":"8ecb28dd09aedc0df6b91af4712aa8469a90e850"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"9b48c6df896af547f7ccf7495acb378d61e4664e","unresolved":false,"context_lines":[{"line_number":650,"context_line":""},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"class _AuthenticBase(object):"},{"line_number":653,"context_line":"    def __init__(self, addr, **kwargs):"},{"line_number":654,"context_line":"        super(_AuthenticBase, self).__init__(addr, **kwargs)"},{"line_number":655,"context_line":"        self._initial_value \u003d addr"},{"line_number":656,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"bab6814e_053ab998","line":653,"updated":"2016-05-23 14:32:59.000000000","message":"given the addr parameter, I\u0027d call this \"AuthenticAddrBase or\" \"UnmodifiedAddrBase\", etc... :) (more bikeshedding, you know..)\n\nunless addr parameter can be changed into \"value\", and then it\u0027s a more generic base.","commit_id":"8ecb28dd09aedc0df6b91af4712aa8469a90e850"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"028f1652754ab14ea46b065b76d4ce28f5ee9cac","unresolved":false,"context_lines":[{"line_number":650,"context_line":""},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"class _AuthenticBase(object):"},{"line_number":653,"context_line":"    def __init__(self, addr, **kwargs):"},{"line_number":654,"context_line":"        super(_AuthenticBase, self).__init__(addr, **kwargs)"},{"line_number":655,"context_line":"        self._initial_value \u003d addr"},{"line_number":656,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"bab6814e_0937734d","line":653,"in_reply_to":"bab6814e_053ab998","updated":"2016-05-23 15:00:09.000000000","message":"yes, value could work, but current subclasses are all addresses (network and mac), so meh for the change.","commit_id":"8ecb28dd09aedc0df6b91af4712aa8469a90e850"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"4dfabb5215f429f35e2094042f82773f760a83ad","unresolved":false,"context_lines":[{"line_number":658,"context_line":"        if isinstance(self._initial_value, six.string_types):"},{"line_number":659,"context_line":"            return self._initial_value"},{"line_number":660,"context_line":"        return super(_AuthenticBase, self).__str__()"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    # NOTE(ihrachys): override deepcopy because netaddr.* classes are"},{"line_number":663,"context_line":"    # slot-based and hence would not copy _initial_value"},{"line_number":664,"context_line":"    def __deepcopy__(self, memo):"}],"source_content_type":"text/x-python","patch_set":20,"id":"9abb7d3a_172b6f95","line":661,"updated":"2016-05-31 12:33:25.000000000","message":"You may also want to define\n\n  __repr__ \u003d __str__","commit_id":"8ecb28dd09aedc0df6b91af4712aa8469a90e850"}],"neutron/db/allowed_address_pairs/models.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4a966033d34059379ff3b05440a6e355ad84232c","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutron.db import models_v2"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class AllowedAddressPair(model_base.BASEV2):"},{"line_number":21,"context_line":"    port_id \u003d sa.Column(sa.String(36),"},{"line_number":22,"context_line":"                        sa.ForeignKey(\u0027ports.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":23,"context_line":"                        primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":18,"id":"dab17558_ac0688cb","line":20,"updated":"2016-05-16 12:46:34.000000000","message":"what about a database migration?","commit_id":"fac88a1bb87aca59a59cee99463dcba8c8a77600"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"62d134e8784f02a5a7db115f97e3d8eb14d7c76e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutron.db import models_v2"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class AllowedAddressPair(model_base.BASEV2):"},{"line_number":21,"context_line":"    port_id \u003d sa.Column(sa.String(36),"},{"line_number":22,"context_line":"                        sa.ForeignKey(\u0027ports.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":23,"context_line":"                        primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":18,"id":"dab17558_ec9c1010","line":20,"in_reply_to":"dab17558_ac0688cb","updated":"2016-05-16 12:54:42.000000000","message":"Do we need one when copy/paste the same structure from one file to the other?","commit_id":"fac88a1bb87aca59a59cee99463dcba8c8a77600"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"0967372a959b9adee8ca4b554356199cd9442ab2","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutron.db import models_v2"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class AllowedAddressPair(model_base.BASEV2):"},{"line_number":21,"context_line":"    port_id \u003d sa.Column(sa.String(36),"},{"line_number":22,"context_line":"                        sa.ForeignKey(\u0027ports.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":23,"context_line":"                        primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":18,"id":"bab6814e_b86d9234","line":20,"in_reply_to":"dab17558_ec9c1010","updated":"2016-05-18 16:50:58.000000000","message":"Yes, it\u0027s just a code move, no new tables introduced.","commit_id":"fac88a1bb87aca59a59cee99463dcba8c8a77600"}],"neutron/db/allowedaddresspairs_db.py":[{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"e43fdc5b2bb0c8a418f89b567ffb07e1c41f288e","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib.api import validators"},{"line_number":17,"context_line":"from oslo_db import exception as db_exc"},{"line_number":18,"context_line":"import sqlalchemy as sa"},{"line_number":19,"context_line":"from sqlalchemy import orm"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"dab17558_aad3485e","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":39},"updated":"2016-05-09 13:02:24.000000000","message":"Import not used.","commit_id":"737e4d8f0bfcd2bdeed93711048d965a55943d1b"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"e43fdc5b2bb0c8a418f89b567ffb07e1c41f288e","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib.api import validators"},{"line_number":17,"context_line":"from oslo_db import exception as db_exc"},{"line_number":18,"context_line":"import sqlalchemy as sa"},{"line_number":19,"context_line":"from sqlalchemy import orm"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutron.api.v2 import attributes as attr"}],"source_content_type":"text/x-python","patch_set":17,"id":"dab17558_aaece829","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":23},"updated":"2016-05-09 13:02:24.000000000","message":"Import not used.","commit_id":"737e4d8f0bfcd2bdeed93711048d965a55943d1b"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"e43fdc5b2bb0c8a418f89b567ffb07e1c41f288e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from neutron_lib.api import validators"},{"line_number":17,"context_line":"from oslo_db import exception as db_exc"},{"line_number":18,"context_line":"import sqlalchemy as sa"},{"line_number":19,"context_line":"from sqlalchemy import orm"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutron.api.v2 import attributes as attr"},{"line_number":22,"context_line":"from neutron.db import db_base_plugin_v2"}],"source_content_type":"text/x-python","patch_set":17,"id":"dab17558_eacd50b8","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":25},"updated":"2016-05-09 13:02:24.000000000","message":"Import not used.","commit_id":"737e4d8f0bfcd2bdeed93711048d965a55943d1b"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"9b48c6df896af547f7ccf7495acb378d61e4664e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                        port_id\u003dport[\u0027id\u0027],"},{"line_number":49,"context_line":"                        mac_address\u003dmac_address,"},{"line_number":50,"context_line":"                        ip_address\u003dip_address)"},{"line_number":51,"context_line":"                    pair_obj.create()"},{"line_number":52,"context_line":"        except obj_base.NeutronDbObjectDuplicateEntry:"},{"line_number":53,"context_line":"            raise addr_pair.DuplicateAddressPairInRequest("},{"line_number":54,"context_line":"                mac_address\u003daddress_pair[\u0027mac_address\u0027],"}],"source_content_type":"text/x-python","patch_set":20,"id":"bab6814e_25ea5d74","line":51,"updated":"2016-05-23 14:32:59.000000000","message":"oh, beautiful!","commit_id":"8ecb28dd09aedc0df6b91af4712aa8469a90e850"}],"neutron/db/migration/models/head.py":[{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"e43fdc5b2bb0c8a418f89b567ffb07e1c41f288e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from neutron.db import agents_db  # noqa"},{"line_number":26,"context_line":"from neutron.db import agentschedulers_db  # noqa"},{"line_number":27,"context_line":"from neutron.db.allowed_address_pairs import models  # noqa"},{"line_number":28,"context_line":"from neutron.db import bgp_db  # noqa"},{"line_number":29,"context_line":"from neutron.db import bgp_dragentscheduler_db  # noqa"},{"line_number":30,"context_line":"from neutron.db import dns_db  # noqa"},{"line_number":31,"context_line":"from neutron.db import dvr_mac_db  # noqa"},{"line_number":32,"context_line":"from neutron.db import external_net_db  # noqa"}],"source_content_type":"text/x-python","patch_set":17,"id":"dab17558_ca05ecc2","line":29,"range":{"start_line":28,"start_character":0,"end_line":29,"end_character":46},"updated":"2016-05-09 13:02:24.000000000","message":"This changes are not relevant to this patch.","commit_id":"737e4d8f0bfcd2bdeed93711048d965a55943d1b"}],"neutron/objects/common_types.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3bf72d8a3ab00b7a708a862f1b2633c88c47aad2","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    AUTO_TYPE \u003d MACAddress()"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"class IPNetwork(obj_fields.FieldType):"},{"line_number":146,"context_line":"    \"\"\"IPNetwork custom field."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    This custom field is different from the one provided by"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_dae7c510","line":145,"updated":"2016-04-15 21:36:29.000000000","message":"maybe field type name should be explicit it allows IPAddresses too?","commit_id":"435697b76a28bc31b9d3dab5e6b9f4617339e29f"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"25044c8c7c135129d641e1a0553af90ca1cd866d","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    AUTO_TYPE \u003d MACAddress()"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"class IPNetwork(obj_fields.FieldType):"},{"line_number":146,"context_line":"    \"\"\"IPNetwork custom field."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    This custom field is different from the one provided by"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_97b069f6","line":145,"in_reply_to":"1a122d0e_dae7c510","updated":"2016-04-18 08:28:00.000000000","message":"Actually, we don\u0027t need IPAddress here, it\u0027s ok to allow IPNetworks with /32 or /128 prefix len.","commit_id":"435697b76a28bc31b9d3dab5e6b9f4617339e29f"}],"neutron/tests/tools.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a5920e15659031d7ec71f2d766b5eb1254f10e0d","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                             random.randint(3, 254))"},{"line_number":204,"context_line":"    else:"},{"line_number":205,"context_line":"        random.seed()"},{"line_number":206,"context_line":"        ip \u003d IPAddress(\u00272001::cafe:0\u0027) + random.getrandbits(16)"},{"line_number":207,"context_line":"        return ip"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7af24918_5a6f8ffb","line":206,"updated":"2016-03-03 23:26:47.000000000","message":"nit: 2001:db8: prefix please :)\n\nAnd over in ipv6_utils.py there is a method...\n\nip \u003d ipv6_utils.get_ipv6_addr_by_EUI64(\u00272001:db8::/64\u0027, get_random_mac()).format()\n\nbut what you have seems to work.","commit_id":"41e4bbbb061eddfa1e0c45589c687ed5993ab007"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"2d9b229358ac0b5aa4d699f772f95e34651d1b00","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                             random.randint(3, 254))"},{"line_number":204,"context_line":"    else:"},{"line_number":205,"context_line":"        random.seed()"},{"line_number":206,"context_line":"        ip \u003d IPAddress(\u00272001::cafe:0\u0027) + random.getrandbits(16)"},{"line_number":207,"context_line":"        return ip"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_9866bb27","line":206,"in_reply_to":"7af24918_5a6f8ffb","updated":"2016-03-08 15:46:31.000000000","message":"Didn\u0027t know this. Good feedback Brian. Updated.","commit_id":"41e4bbbb061eddfa1e0c45589c687ed5993ab007"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"1f7f8498558e55fccc116b9202bf7b9f857236a0","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        return \u002710.%d.%d.0/%d\u0027 % (random.randint(3, 254),"},{"line_number":250,"context_line":"                                  random.randint(3, 254),"},{"line_number":251,"context_line":"                                  24)"},{"line_number":252,"context_line":"    return \u00272001:db8:%x::/%d\u0027 % (random.getrandbits(16), 64)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"def get_random_mac():"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a122d0e_18f2bc6f","line":252,"range":{"start_line":252,"start_character":26,"end_line":252,"end_character":28},"updated":"2016-04-18 12:22:15.000000000","message":"As said in [1] we may need to add IPv6 specific tests... I can add such in [1] if you like...\n\n[1] https://review.openstack.org/#/c/306931/1/neutron/tests/tools.py@251","commit_id":"0ac390d2d465a7ee7f5468ac6a871f28d65685c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"76d8d10ee323e43a17604678e5bc401490b691ef","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        return \u002710.%d.%d.0/%d\u0027 % (random.randint(3, 254),"},{"line_number":250,"context_line":"                                  random.randint(3, 254),"},{"line_number":251,"context_line":"                                  24)"},{"line_number":252,"context_line":"    return \u00272001:db8:%x::/%d\u0027 % (random.getrandbits(16), 64)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"def get_random_mac():"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a122d0e_532417ae","line":252,"range":{"start_line":252,"start_character":26,"end_line":252,"end_character":28},"in_reply_to":"1a122d0e_18f2bc6f","updated":"2016-04-18 12:27:37.000000000","message":"Please do. I changed it here only to pass my own tests.","commit_id":"0ac390d2d465a7ee7f5468ac6a871f28d65685c7"}],"neutron/tests/unit/objects/test_base.py":[{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"e0f0e100d8d750c273ff980185b448ee9a9a7fb2","unresolved":false,"context_lines":[{"line_number":240,"context_line":"    common_types.ListOfIPNetworksField: get_list_of_random_networks,"},{"line_number":241,"context_line":"    common_types.IPVersionEnumField: tools.get_random_ip_version,"},{"line_number":242,"context_line":"    obj_fields.DateTimeField: timeutils.utcnow,"},{"line_number":243,"context_line":"    obj_fields.IPAddressField: tools.get_random_ip_address,"},{"line_number":244,"context_line":"    common_types.MACAddressField: tools.get_random_EUI,"},{"line_number":245,"context_line":"}"},{"line_number":246,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"dab17558_6f9ca0c0","side":"PARENT","line":243,"updated":"2016-05-16 09:18:05.000000000","message":"This should not be removed even when we change in current patch the field type in object. The IPAddressField will be used in other places.","commit_id":"1019d2b1e5c4c6a8729598e2c57e650fc94ce2f7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"0967372a959b9adee8ca4b554356199cd9442ab2","unresolved":false,"context_lines":[{"line_number":240,"context_line":"    common_types.ListOfIPNetworksField: get_list_of_random_networks,"},{"line_number":241,"context_line":"    common_types.IPVersionEnumField: tools.get_random_ip_version,"},{"line_number":242,"context_line":"    obj_fields.DateTimeField: timeutils.utcnow,"},{"line_number":243,"context_line":"    obj_fields.IPAddressField: tools.get_random_ip_address,"},{"line_number":244,"context_line":"    common_types.MACAddressField: tools.get_random_EUI,"},{"line_number":245,"context_line":"}"},{"line_number":246,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"bab6814e_1865be44","side":"PARENT","line":243,"in_reply_to":"dab17558_6f9ca0c0","updated":"2016-05-18 16:50:58.000000000","message":"Anything to make you happy.","commit_id":"1019d2b1e5c4c6a8729598e2c57e650fc94ce2f7"}]}
