)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a47f3fa819ba70d363a3a3fd4bd65bef4ca52fe5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add custom OVO field type for MAC address"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: If791b25aa673dde32b41c799fad9dc36efc87d04"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a061dce_1c6a71ee","line":9,"updated":"2016-04-06 11:47:44.000000000","message":"Related-Bug would be of value.","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"0f406ed7263d5225456f75184a59ed55beb33404","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add custom OVO field type for MAC address"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: If791b25aa673dde32b41c799fad9dc36efc87d04"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a061dce_c9ccb86c","line":9,"in_reply_to":"9a061dce_1c6a71ee","updated":"2016-04-06 13:19:38.000000000","message":"Done","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"}],"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":"d1f41f09a07fa80b18a94291e9a842d7635ffb52","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":12,"context_line":"#    under the License."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import netaddr"},{"line_number":15,"context_line":"import six"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_versionedobjects import fields as obj_fields"}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_e89c555f","line":14,"updated":"2016-03-16 15:50:29.000000000","message":"please merge those 3party imports into the next section, since ovo is also 3party.","commit_id":"a538ca28bc492ec23e620596ae7d7e13a2ddf1cd"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"49da58066d72a29410f0d23675006d027222431f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":12,"context_line":"#    under the License."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import netaddr"},{"line_number":15,"context_line":"import six"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_versionedobjects import fields as obj_fields"}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_3705b613","line":14,"in_reply_to":"1af94dfe_e89c555f","updated":"2016-03-20 21:14:41.000000000","message":"ok, done.","commit_id":"a538ca28bc492ec23e620596ae7d7e13a2ddf1cd"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d1f41f09a07fa80b18a94291e9a842d7635ffb52","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from neutron.common import constants"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class IPV6ModeEnum(obj_fields.Enum):"},{"line_number":23,"context_line":"    \"\"\"IPV6 Mode custom Enum\"\"\""},{"line_number":24,"context_line":"    def __init__(self, **kwargs):"},{"line_number":25,"context_line":"        super(IPV6ModeEnum, self).__init__(valid_values\u003dconstants.IPV6_MODES,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_4bb0e343","line":22,"updated":"2016-03-16 15:50:29.000000000","message":"Don\u0027t you need to define a new type for mac as in here ^? I believe once you do, you can avoid some of method rewriting below, since base Field.coerce should call type.coerce method for you.","commit_id":"a538ca28bc492ec23e620596ae7d7e13a2ddf1cd"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"49da58066d72a29410f0d23675006d027222431f","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from neutron.common import constants"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class IPV6ModeEnum(obj_fields.Enum):"},{"line_number":23,"context_line":"    \"\"\"IPV6 Mode custom Enum\"\"\""},{"line_number":24,"context_line":"    def __init__(self, **kwargs):"},{"line_number":25,"context_line":"        super(IPV6ModeEnum, self).__init__(valid_values\u003dconstants.IPV6_MODES,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_8f1d2569","line":22,"in_reply_to":"1af94dfe_4bb0e343","updated":"2016-03-20 21:14:41.000000000","message":"I think MAC Address is an object and not an Enum. So, I am not sure that the same pattern applies for MAC? I think MAC is similar paradigm to IPAddress as defined in: https://github.com/openstack/oslo.versionedobjects/blob/master/oslo_versionedobjects/fields.py#L402","commit_id":"a538ca28bc492ec23e620596ae7d7e13a2ddf1cd"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d1f41f09a07fa80b18a94291e9a842d7635ffb52","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def _validate_value(self, value):"},{"line_number":35,"context_line":"        self.coerce(\u0027obj\u0027, \u0027attr\u0027, value)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def stringify(self, value):"},{"line_number":38,"context_line":"        self._validate_value(value)"},{"line_number":39,"context_line":"        return str(value)"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_e801f56b","line":37,"updated":"2016-03-16 15:50:29.000000000","message":"Please add a comment here describing why you need to redefine the method (\u0027to avoid quotes\u0027)","commit_id":"a538ca28bc492ec23e620596ae7d7e13a2ddf1cd"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"49da58066d72a29410f0d23675006d027222431f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def _validate_value(self, value):"},{"line_number":35,"context_line":"        self.coerce(\u0027obj\u0027, \u0027attr\u0027, value)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def stringify(self, value):"},{"line_number":38,"context_line":"        self._validate_value(value)"},{"line_number":39,"context_line":"        return str(value)"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_ef5b012d","line":37,"in_reply_to":"1af94dfe_e801f56b","updated":"2016-03-20 21:14:41.000000000","message":"No longer applies after update to testing to alloq override of stringify tests.","commit_id":"a538ca28bc492ec23e620596ae7d7e13a2ddf1cd"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d1f41f09a07fa80b18a94291e9a842d7635ffb52","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        return str(value)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class MACAddressField(obj_fields.AutoTypedField):"},{"line_number":43,"context_line":"    @staticmethod"},{"line_number":44,"context_line":"    def coerce(obj, attr, value):"},{"line_number":45,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_68f8454a","line":42,"updated":"2016-03-16 15:50:29.000000000","message":"Please add a comment describing why we use our custom field type while there is another one in the ovo library.","commit_id":"a538ca28bc492ec23e620596ae7d7e13a2ddf1cd"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"49da58066d72a29410f0d23675006d027222431f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        return str(value)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class MACAddressField(obj_fields.AutoTypedField):"},{"line_number":43,"context_line":"    @staticmethod"},{"line_number":44,"context_line":"    def coerce(obj, attr, value):"},{"line_number":45,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_4f414d39","line":42,"in_reply_to":"1af94dfe_68f8454a","updated":"2016-03-20 21:14:41.000000000","message":"Sure, added comment.","commit_id":"a538ca28bc492ec23e620596ae7d7e13a2ddf1cd"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d1f41f09a07fa80b18a94291e9a842d7635ffb52","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        except netaddr.AddrFormatError as e:"},{"line_number":48,"context_line":"            raise ValueError(six.text_type(e))"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def from_primitive(self, obj, attr, value):"},{"line_number":51,"context_line":"        return self.coerce(obj, attr, value)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_2babd7d7","line":50,"updated":"2016-03-16 15:50:29.000000000","message":"Not sure all of those methods here are needed. What are they for?","commit_id":"a538ca28bc492ec23e620596ae7d7e13a2ddf1cd"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"49da58066d72a29410f0d23675006d027222431f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        except netaddr.AddrFormatError as e:"},{"line_number":48,"context_line":"            raise ValueError(six.text_type(e))"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def from_primitive(self, obj, attr, value):"},{"line_number":51,"context_line":"        return self.coerce(obj, attr, value)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_8f4b6559","line":50,"in_reply_to":"1af94dfe_2babd7d7","updated":"2016-03-20 21:14:41.000000000","message":"Refer to the pattern for IPAddress on OVO.","commit_id":"a538ca28bc492ec23e620596ae7d7e13a2ddf1cd"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"7000002cda8f500fa0c2387ea6971e0abed8d6e2","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    AUTO_TYPE \u003d DscpMark()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"class BaseField(obj_fields.FieldType):"},{"line_number":79,"context_line":"    \"\"\"Base custom field.\"\"\""},{"line_number":80,"context_line":"    def from_primitive(self, obj, attr, value):"},{"line_number":81,"context_line":"        \"\"\"Override base implementation to return value as per field  type.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa0719c6_76b5f4cb","line":78,"updated":"2016-03-21 13:40:32.000000000","message":"YAGNI I don\u0027t see any need right now for this BaseField. We can abstract it later if we need to re-use the code. The name is also a bit vague...","commit_id":"593c13afc913f8db31dea99df53d610cd4604727"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"39b0d77dc1864e6d1ce94f2c1fa7c25b22204d97","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    AUTO_TYPE \u003d DscpMark()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"class BaseField(obj_fields.FieldType):"},{"line_number":79,"context_line":"    \"\"\"Base custom field.\"\"\""},{"line_number":80,"context_line":"    def from_primitive(self, obj, attr, value):"},{"line_number":81,"context_line":"        \"\"\"Override base implementation to return value as per field  type.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_455e3b77","line":78,"in_reply_to":"fa0719c6_76b5f4cb","updated":"2016-04-03 15:25:33.000000000","message":"Sure, agreed. Probably looking ahead. I will include in the one class.","commit_id":"593c13afc913f8db31dea99df53d610cd4604727"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"7000002cda8f500fa0c2387ea6971e0abed8d6e2","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        \"\"\"Override base implementation to return string value.\"\"\""},{"line_number":87,"context_line":"        return str(value)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def _validate_value(self, value):"},{"line_number":90,"context_line":"        self.coerce(\u0027obj\u0027, \u0027attr\u0027, value)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def stringify(self, value):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa0719c6_9657e801","line":89,"updated":"2016-03-21 13:40:32.000000000","message":"don\u0027t think you need this method and it\u0027s ugly to see \u0027obj\u0027 and \u0027attr\u0027 passed as args in the next line.\n\nyou can create an internal method like this:\n\ndef _convert_to_mac(self):\n    try:\n        return netaddr.EUI(value)\n    except netaddr.AddrFormatError as e:\n        raise ValueError(six.text_type(e))\n\nand use it both in stringify and in coerce","commit_id":"593c13afc913f8db31dea99df53d610cd4604727"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"39b0d77dc1864e6d1ce94f2c1fa7c25b22204d97","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        \"\"\"Override base implementation to return string value.\"\"\""},{"line_number":87,"context_line":"        return str(value)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def _validate_value(self, value):"},{"line_number":90,"context_line":"        self.coerce(\u0027obj\u0027, \u0027attr\u0027, value)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def stringify(self, value):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_c54a4bac","line":89,"in_reply_to":"fa0719c6_9657e801","updated":"2016-04-03 15:25:33.000000000","message":"Ok, better idea, thanks. Updated.","commit_id":"593c13afc913f8db31dea99df53d610cd4604727"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"7000002cda8f500fa0c2387ea6971e0abed8d6e2","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        try:"},{"line_number":106,"context_line":"            return netaddr.EUI(value)"},{"line_number":107,"context_line":"        except netaddr.AddrFormatError as e:"},{"line_number":108,"context_line":"            raise ValueError(six.text_type(e))"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa0719c6_d63a00cd","line":108,"updated":"2016-03-21 13:40:32.000000000","message":"can you add more info there? e.g. \"Value %(val)s is not a valid MAC address\"","commit_id":"593c13afc913f8db31dea99df53d610cd4604727"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"39b0d77dc1864e6d1ce94f2c1fa7c25b22204d97","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        try:"},{"line_number":106,"context_line":"            return netaddr.EUI(value)"},{"line_number":107,"context_line":"        except netaddr.AddrFormatError as e:"},{"line_number":108,"context_line":"            raise ValueError(six.text_type(e))"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_c5f88b4c","line":108,"in_reply_to":"fa0719c6_d63a00cd","updated":"2016-04-03 15:25:33.000000000","message":"Sure, updated error message.","commit_id":"593c13afc913f8db31dea99df53d610cd4604727"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c8cc1f4785af2f8feed75fe5a2bbce3226edf70e","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"class MACAddress(obj_fields.FieldType):"},{"line_number":152,"context_line":"    \"\"\"MACAddress custom field."},{"line_number":153,"context_line":"    This custom field is added as MACAddress field defined in Oslo Versioned"},{"line_number":154,"context_line":"    Objects is wrapper of String type and not netaddr EUI."},{"line_number":155,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_bdcac76c","line":152,"updated":"2016-04-04 07:11:39.000000000","message":"nit: In the docstring convention, the second line should be a blank line.","commit_id":"16577d52f61005eda498c1509d0d2eeaafcfcb88"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"d198e91fc07525d32f2be85787c556c9acb2d485","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"class MACAddress(obj_fields.FieldType):"},{"line_number":152,"context_line":"    \"\"\"MACAddress custom field."},{"line_number":153,"context_line":"    This custom field is added as MACAddress field defined in Oslo Versioned"},{"line_number":154,"context_line":"    Objects is wrapper of String type and not netaddr EUI."},{"line_number":155,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a061dce_5a27ff11","line":152,"in_reply_to":"ba0121b8_bdcac76c","updated":"2016-04-05 14:33:56.000000000","message":"Done","commit_id":"16577d52f61005eda498c1509d0d2eeaafcfcb88"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c8cc1f4785af2f8feed75fe5a2bbce3226edf70e","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    This custom field is added as MACAddress field defined in Oslo Versioned"},{"line_number":154,"context_line":"    Objects is wrapper of String type and not netaddr EUI."},{"line_number":155,"context_line":"    \"\"\""},{"line_number":156,"context_line":"    def from_primitive(self, obj, attr, value):"},{"line_number":157,"context_line":"        \"\"\"Override base implementation to return value as per field  type.\"\"\""},{"line_number":158,"context_line":"        return self.coerce(obj, attr, value)"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_bd22c7ff","line":156,"updated":"2016-04-04 07:11:39.000000000","message":"Should from_prmitive be @staticmethod?","commit_id":"16577d52f61005eda498c1509d0d2eeaafcfcb88"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"f25bf9bcc419e6432219c7d88d19927da449e82d","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    This custom field is added as MACAddress field defined in Oslo Versioned"},{"line_number":154,"context_line":"    Objects is wrapper of String type and not netaddr EUI."},{"line_number":155,"context_line":"    \"\"\""},{"line_number":156,"context_line":"    def from_primitive(self, obj, attr, value):"},{"line_number":157,"context_line":"        \"\"\"Override base implementation to return value as per field  type.\"\"\""},{"line_number":158,"context_line":"        return self.coerce(obj, attr, value)"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a061dce_c5185487","line":156,"in_reply_to":"9a061dce_0521ac9f","updated":"2016-04-05 14:36:56.000000000","message":"actually it can\u0027t be static because it needs to call self.coerce","commit_id":"16577d52f61005eda498c1509d0d2eeaafcfcb88"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a6f9f8ffa856645a446a4afbb2ac5f64c61e90e1","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    This custom field is added as MACAddress field defined in Oslo Versioned"},{"line_number":154,"context_line":"    Objects is wrapper of String type and not netaddr EUI."},{"line_number":155,"context_line":"    \"\"\""},{"line_number":156,"context_line":"    def from_primitive(self, obj, attr, value):"},{"line_number":157,"context_line":"        \"\"\"Override base implementation to return value as per field  type.\"\"\""},{"line_number":158,"context_line":"        return self.coerce(obj, attr, value)"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a061dce_3cc027e0","line":156,"in_reply_to":"9a061dce_c5185487","updated":"2016-04-06 04:58:24.000000000","message":"Ah.. you are right..","commit_id":"16577d52f61005eda498c1509d0d2eeaafcfcb88"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"d198e91fc07525d32f2be85787c556c9acb2d485","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    This custom field is added as MACAddress field defined in Oslo Versioned"},{"line_number":154,"context_line":"    Objects is wrapper of String type and not netaddr EUI."},{"line_number":155,"context_line":"    \"\"\""},{"line_number":156,"context_line":"    def from_primitive(self, obj, attr, value):"},{"line_number":157,"context_line":"        \"\"\"Override base implementation to return value as per field  type.\"\"\""},{"line_number":158,"context_line":"        return self.coerce(obj, attr, value)"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a061dce_0521ac9f","line":156,"in_reply_to":"ba0121b8_bd22c7ff","updated":"2016-04-05 14:33:56.000000000","message":"good catch!","commit_id":"16577d52f61005eda498c1509d0d2eeaafcfcb88"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c8cc1f4785af2f8feed75fe5a2bbce3226edf70e","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    Objects is wrapper of String type and not netaddr EUI."},{"line_number":155,"context_line":"    \"\"\""},{"line_number":156,"context_line":"    def from_primitive(self, obj, attr, value):"},{"line_number":157,"context_line":"        \"\"\"Override base implementation to return value as per field  type.\"\"\""},{"line_number":158,"context_line":"        return self.coerce(obj, attr, value)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_3dba37c1","line":157,"range":{"start_line":157,"start_character":68,"end_line":157,"end_character":70},"updated":"2016-04-04 07:11:39.000000000","message":"double spaces...","commit_id":"16577d52f61005eda498c1509d0d2eeaafcfcb88"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"d198e91fc07525d32f2be85787c556c9acb2d485","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    Objects is wrapper of String type and not netaddr EUI."},{"line_number":155,"context_line":"    \"\"\""},{"line_number":156,"context_line":"    def from_primitive(self, obj, attr, value):"},{"line_number":157,"context_line":"        \"\"\"Override base implementation to return value as per field  type.\"\"\""},{"line_number":158,"context_line":"        return self.coerce(obj, attr, value)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a061dce_1a8467d2","line":157,"range":{"start_line":157,"start_character":68,"end_line":157,"end_character":70},"in_reply_to":"ba0121b8_3dba37c1","updated":"2016-04-05 14:33:56.000000000","message":"Done","commit_id":"16577d52f61005eda498c1509d0d2eeaafcfcb88"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c8cc1f4785af2f8feed75fe5a2bbce3226edf70e","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            raise ValueError(\"Value \u0027%(val)s\u0027 is not a valid MAC accdress. \""},{"line_number":171,"context_line":"                             \"Error raised: %(err)s.\" %"},{"line_number":172,"context_line":"                             {\u0027val\u0027: value,"},{"line_number":173,"context_line":"                              \u0027err\u0027: six.text_type(e)})"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def stringify(self, value):"},{"line_number":176,"context_line":"        \"\"\"Override base implementation to check for valid value.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_bd912755","line":173,"range":{"start_line":173,"start_character":37,"end_line":173,"end_character":53},"updated":"2016-04-04 07:11:39.000000000","message":"six.text_type is unnecessary because %s does this.\n\n  \u0027err\u0027: e","commit_id":"16577d52f61005eda498c1509d0d2eeaafcfcb88"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"d198e91fc07525d32f2be85787c556c9acb2d485","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            raise ValueError(\"Value \u0027%(val)s\u0027 is not a valid MAC accdress. \""},{"line_number":171,"context_line":"                             \"Error raised: %(err)s.\" %"},{"line_number":172,"context_line":"                             {\u0027val\u0027: value,"},{"line_number":173,"context_line":"                              \u0027err\u0027: six.text_type(e)})"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def stringify(self, value):"},{"line_number":176,"context_line":"        \"\"\"Override base implementation to check for valid value.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a061dce_5a6edf2f","line":173,"range":{"start_line":173,"start_character":37,"end_line":173,"end_character":53},"in_reply_to":"ba0121b8_bd912755","updated":"2016-04-05 14:33:56.000000000","message":"Done","commit_id":"16577d52f61005eda498c1509d0d2eeaafcfcb88"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a47f3fa819ba70d363a3a3fd4bd65bef4ca52fe5","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    Objects is wrapper of String type and not netaddr EUI."},{"line_number":156,"context_line":"    \"\"\""},{"line_number":157,"context_line":"    def from_primitive(self, obj, attr, value):"},{"line_number":158,"context_line":"        \"\"\"Override base implementation to return value as per field type.\"\"\""},{"line_number":159,"context_line":"        return self.coerce(obj, attr, value)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_7c428d69","line":158,"updated":"2016-04-06 11:47:44.000000000","message":"Not an actual docstring. Should we make it a comment?","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"0f406ed7263d5225456f75184a59ed55beb33404","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    Objects is wrapper of String type and not netaddr EUI."},{"line_number":156,"context_line":"    \"\"\""},{"line_number":157,"context_line":"    def from_primitive(self, obj, attr, value):"},{"line_number":158,"context_line":"        \"\"\"Override base implementation to return value as per field type.\"\"\""},{"line_number":159,"context_line":"        return self.coerce(obj, attr, value)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_4406cf1d","line":158,"in_reply_to":"9a061dce_7c428d69","updated":"2016-04-06 13:19:38.000000000","message":"Done","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a47f3fa819ba70d363a3a3fd4bd65bef4ca52fe5","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    @staticmethod"},{"line_number":162,"context_line":"    def to_primitive(obj, attr, value):"},{"line_number":163,"context_line":"        \"\"\"Override base implementation to return string value.\"\"\""},{"line_number":164,"context_line":"        return str(value)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_dc7c79b7","line":163,"updated":"2016-04-06 11:47:44.000000000","message":"That is probably not an ideal docstring. Should have been a comment.","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"0f406ed7263d5225456f75184a59ed55beb33404","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    @staticmethod"},{"line_number":162,"context_line":"    def to_primitive(obj, attr, value):"},{"line_number":163,"context_line":"        \"\"\"Override base implementation to return string value.\"\"\""},{"line_number":164,"context_line":"        return str(value)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_04197779","line":163,"in_reply_to":"9a061dce_dc7c79b7","updated":"2016-04-06 13:19:38.000000000","message":"removed it actually. It\u0027s redundant","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c343c791182aec0be464a6fbade6ff69112e3504","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        try:"},{"line_number":169,"context_line":"            return netaddr.EUI(value)"},{"line_number":170,"context_line":"        except netaddr.AddrFormatError as e:"},{"line_number":171,"context_line":"            raise ValueError(\"Value \u0027%(val)s\u0027 is not a valid MAC accdress. \""},{"line_number":172,"context_line":"                             \"Error raised: %(err)s.\" %"},{"line_number":173,"context_line":"                             {\u0027val\u0027: value,"},{"line_number":174,"context_line":"                              \u0027err\u0027: e})"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_10f095c8","line":171,"updated":"2016-04-06 11:56:47.000000000","message":"address.","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"0f406ed7263d5225456f75184a59ed55beb33404","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        try:"},{"line_number":169,"context_line":"            return netaddr.EUI(value)"},{"line_number":170,"context_line":"        except netaddr.AddrFormatError as e:"},{"line_number":171,"context_line":"            raise ValueError(\"Value \u0027%(val)s\u0027 is not a valid MAC accdress. \""},{"line_number":172,"context_line":"                             \"Error raised: %(err)s.\" %"},{"line_number":173,"context_line":"                             {\u0027val\u0027: value,"},{"line_number":174,"context_line":"                              \u0027err\u0027: e})"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_e43c43ca","line":171,"in_reply_to":"9a061dce_10f095c8","updated":"2016-04-06 13:19:38.000000000","message":"Done","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c343c791182aec0be464a6fbade6ff69112e3504","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            return netaddr.EUI(value)"},{"line_number":170,"context_line":"        except netaddr.AddrFormatError as e:"},{"line_number":171,"context_line":"            raise ValueError(\"Value \u0027%(val)s\u0027 is not a valid MAC accdress. \""},{"line_number":172,"context_line":"                             \"Error raised: %(err)s.\" %"},{"line_number":173,"context_line":"                             {\u0027val\u0027: value,"},{"line_number":174,"context_line":"                              \u0027err\u0027: e})"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_7038f13d","line":172,"range":{"start_line":172,"start_character":30,"end_line":172,"end_character":44},"updated":"2016-04-06 11:56:47.000000000","message":"Suggest removing this. Instead, add : and %(err)s after \u0027MAC address\u0027.","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"0f406ed7263d5225456f75184a59ed55beb33404","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            return netaddr.EUI(value)"},{"line_number":170,"context_line":"        except netaddr.AddrFormatError as e:"},{"line_number":171,"context_line":"            raise ValueError(\"Value \u0027%(val)s\u0027 is not a valid MAC accdress. \""},{"line_number":172,"context_line":"                             \"Error raised: %(err)s.\" %"},{"line_number":173,"context_line":"                             {\u0027val\u0027: value,"},{"line_number":174,"context_line":"                              \u0027err\u0027: e})"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_e46a83b2","line":172,"range":{"start_line":172,"start_character":30,"end_line":172,"end_character":44},"in_reply_to":"9a061dce_7038f13d","updated":"2016-04-06 13:19:38.000000000","message":"Done","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a47f3fa819ba70d363a3a3fd4bd65bef4ca52fe5","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def stringify(self, value):"},{"line_number":177,"context_line":"        \"\"\"Override base implementation to check for valid value.\"\"\""},{"line_number":178,"context_line":"        MACAddress._convert_to_mac(value)"},{"line_number":179,"context_line":"        return str(value)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_5c3ea9da","line":178,"updated":"2016-04-06 11:47:44.000000000","message":"So where do you use the value?..","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"61733191ccfb49408d85af3d415ec9edeba53df5","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def stringify(self, value):"},{"line_number":177,"context_line":"        \"\"\"Override base implementation to check for valid value.\"\"\""},{"line_number":178,"context_line":"        MACAddress._convert_to_mac(value)"},{"line_number":179,"context_line":"        return str(value)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_1aa9cc24","line":178,"in_reply_to":"9a061dce_5a4fc46a","updated":"2016-04-06 13:31:35.000000000","message":"it\u0027s actually needed otherwise unit tests test_stringify_invalid fails, it\u0027s possible to call stringify without calling coearce first.","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"8825d592b3079f0c20fb106dcdeb41b7c7acbeb5","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def stringify(self, value):"},{"line_number":177,"context_line":"        \"\"\"Override base implementation to check for valid value.\"\"\""},{"line_number":178,"context_line":"        MACAddress._convert_to_mac(value)"},{"line_number":179,"context_line":"        return str(value)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_d37e2718","line":178,"in_reply_to":"9a061dce_5c3ea9da","updated":"2016-04-06 12:08:48.000000000","message":"OK, I guess it\u0027s just for validation?..","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"0f406ed7263d5225456f75184a59ed55beb33404","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def stringify(self, value):"},{"line_number":177,"context_line":"        \"\"\"Override base implementation to check for valid value.\"\"\""},{"line_number":178,"context_line":"        MACAddress._convert_to_mac(value)"},{"line_number":179,"context_line":"        return str(value)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_5a4fc46a","line":178,"in_reply_to":"9a061dce_d37e2718","updated":"2016-04-06 13:19:38.000000000","message":"since validation happens in coarce I think we can just use the base class method.","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a0763bda59235ca942bc720a075a0dc3f3e60a48","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    oslo.versionedobjects library: it uses netaddr.EUI type instead of strings."},{"line_number":156,"context_line":"    \"\"\""},{"line_number":157,"context_line":"    def _validate_value(self, value):"},{"line_number":158,"context_line":"        if not isinstance(value, netaddr.EUI):"},{"line_number":159,"context_line":"            msg \u003d _(\"Field value %s is not a netaddr.EUI\") % value"},{"line_number":160,"context_line":"            raise ValueError(msg)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_2206eb51","line":158,"updated":"2016-04-07 12:37:47.000000000","message":"Question: Why valid MAC string is not accepted here? I am not sure why we expect only an object of netaddr.EUI. I might be missing something.","commit_id":"b8cd05273f39d010c840c6a0aa89989e03233f95"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"987b77d5c1deb81f303caadc02d9e03150073378","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    oslo.versionedobjects library: it uses netaddr.EUI type instead of strings."},{"line_number":156,"context_line":"    \"\"\""},{"line_number":157,"context_line":"    def _validate_value(self, value):"},{"line_number":158,"context_line":"        if not isinstance(value, netaddr.EUI):"},{"line_number":159,"context_line":"            msg \u003d _(\"Field value %s is not a netaddr.EUI\") % value"},{"line_number":160,"context_line":"            raise ValueError(msg)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_a46686ea","line":158,"in_reply_to":"9a061dce_2206eb51","updated":"2016-04-07 13:13:01.000000000","message":"That\u0027s a good question, I wonder if we could take a MAC string, and auto convert to netaddr.EUI if that\u0027s a valid thing to do.\n\n@ihar?","commit_id":"b8cd05273f39d010c840c6a0aa89989e03233f95"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2ec97adad5b213b01c5244d724d5391cd4fec0eb","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    oslo.versionedobjects library: it uses netaddr.EUI type instead of strings."},{"line_number":156,"context_line":"    \"\"\""},{"line_number":157,"context_line":"    def _validate_value(self, value):"},{"line_number":158,"context_line":"        if not isinstance(value, netaddr.EUI):"},{"line_number":159,"context_line":"            msg \u003d _(\"Field value %s is not a netaddr.EUI\") % value"},{"line_number":160,"context_line":"            raise ValueError(msg)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_f5e66642","line":158,"in_reply_to":"9a061dce_67b2b0e6","updated":"2016-04-07 13:52:53.000000000","message":"Thanks for the clarification. It looks good to me too.","commit_id":"b8cd05273f39d010c840c6a0aa89989e03233f95"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4833d7f2d8fc7cd73824ac9ce415b49088e5f5ea","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    oslo.versionedobjects library: it uses netaddr.EUI type instead of strings."},{"line_number":156,"context_line":"    \"\"\""},{"line_number":157,"context_line":"    def _validate_value(self, value):"},{"line_number":158,"context_line":"        if not isinstance(value, netaddr.EUI):"},{"line_number":159,"context_line":"            msg \u003d _(\"Field value %s is not a netaddr.EUI\") % value"},{"line_number":160,"context_line":"            raise ValueError(msg)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_67b2b0e6","line":158,"in_reply_to":"9a061dce_a46686ea","updated":"2016-04-07 13:31:46.000000000","message":"For now, we try to be strict. If we see it leaves us uncomfortable later in the go, we can revisit.","commit_id":"b8cd05273f39d010c840c6a0aa89989e03233f95"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"2735a06e482b49339cb4b828d1d264139d5f118a","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        return super(MACAddress, self).coerce(obj, attr, value)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def stringify(self, value):"},{"line_number":167,"context_line":"        self._validate_value(value)"},{"line_number":168,"context_line":"        return super(MACAddress, self).stringify(value)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_91caa719","line":167,"updated":"2016-04-07 11:53:50.000000000","message":"why do you validate on stringify?\n\nI don\u0027t see that in other FieldType\u0027s:\nhttps://github.com/openstack/oslo.versionedobjects/blob/master/oslo_versionedobjects/fields.py","commit_id":"b8cd05273f39d010c840c6a0aa89989e03233f95"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"38e625b0090281c8c5c476ec4dadad40e19dcaad","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        return super(MACAddress, self).coerce(obj, attr, value)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def stringify(self, value):"},{"line_number":167,"context_line":"        self._validate_value(value)"},{"line_number":168,"context_line":"        return super(MACAddress, self).stringify(value)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_71f4335a","line":167,"in_reply_to":"9a061dce_91caa719","updated":"2016-04-07 12:09:17.000000000","message":"You are right, but let me do the cleanup in a follow up since it affect not just that type class: https://review.openstack.org/302704","commit_id":"b8cd05273f39d010c840c6a0aa89989e03233f95"}],"neutron/tests/unit/objects/test_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":"d1f41f09a07fa80b18a94291e9a842d7635ffb52","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def test_stringify_invalid(self):"},{"line_number":49,"context_line":"        for in_val in self.coerce_bad_values:"},{"line_number":50,"context_line":"            #self.field.stringify(in_val)"},{"line_number":51,"context_line":"            self.assertRaises(ValueError, self.field.stringify, in_val)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_e8ea95ab","line":50,"updated":"2016-03-16 15:50:29.000000000","message":"?","commit_id":"a538ca28bc492ec23e620596ae7d7e13a2ddf1cd"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"49da58066d72a29410f0d23675006d027222431f","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def test_stringify_invalid(self):"},{"line_number":49,"context_line":"        for in_val in self.coerce_bad_values:"},{"line_number":50,"context_line":"            #self.field.stringify(in_val)"},{"line_number":51,"context_line":"            self.assertRaises(ValueError, self.field.stringify, in_val)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_2f65f9e0","line":50,"in_reply_to":"1af94dfe_e8ea95ab","updated":"2016-03-20 21:14:41.000000000","message":"Oops, removed.","commit_id":"a538ca28bc492ec23e620596ae7d7e13a2ddf1cd"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c343c791182aec0be464a6fbade6ff69112e3504","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    def setUp(self):"},{"line_number":101,"context_line":"        super(MACAddressFieldTest, self).setUp()"},{"line_number":102,"context_line":"        self.field \u003d common_types.MACAddressField()"},{"line_number":103,"context_line":"        self.coerce_good_values \u003d [tools.get_random_mac()]"},{"line_number":104,"context_line":"        mac1 \u003d tools.get_random_mac()"},{"line_number":105,"context_line":"        mac2 \u003d tools.get_random_mac()"},{"line_number":106,"context_line":"        self.coerce_good_values \u003d [(mac1, mac1), (mac2, mac2)]"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_d07e1d18","line":103,"updated":"2016-04-06 11:56:47.000000000","message":"Redundant?","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c343c791182aec0be464a6fbade6ff69112e3504","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        self.coerce_good_values \u003d [tools.get_random_mac()]"},{"line_number":104,"context_line":"        mac1 \u003d tools.get_random_mac()"},{"line_number":105,"context_line":"        mac2 \u003d tools.get_random_mac()"},{"line_number":106,"context_line":"        self.coerce_good_values \u003d [(mac1, mac1), (mac2, mac2)]"},{"line_number":107,"context_line":"        self.coerce_bad_values \u003d [\u0027XXXX\u0027, \u0027ypp\u0027, \u0027g3:vvv\u0027]"},{"line_number":108,"context_line":"        self.to_primitive_values \u003d self.coerce_good_values"},{"line_number":109,"context_line":"        self.from_primitive_values \u003d self.coerce_good_values"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_f0e08198","line":106,"updated":"2016-04-06 11:56:47.000000000","message":"Wasn\u0027t the field type supposed to receive netaddr.EUI objects and not strings?","commit_id":"96f0687736487c7ef578b6db16bed53be99f4ec1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"53a1a10c5c0d8c717943035697642af746db3d36","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    def setUp(self):"},{"line_number":101,"context_line":"        super(MACAddressFieldTest, self).setUp()"},{"line_number":102,"context_line":"        self.field \u003d common_types.MACAddressField()"},{"line_number":103,"context_line":"        self.coerce_good_values \u003d [tools.get_random_mac()]"},{"line_number":104,"context_line":"        mac1 \u003d tools.get_random_mac()"},{"line_number":105,"context_line":"        mac2 \u003d tools.get_random_mac()"},{"line_number":106,"context_line":"        self.coerce_good_values \u003d [(mac1, mac1), (mac2, mac2)]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a061dce_32392bf3","line":103,"updated":"2016-04-07 08:13:51.000000000","message":"redundant?","commit_id":"66433d815f5ecf25ae407168a56ae22b487ce48e"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"53a1a10c5c0d8c717943035697642af746db3d36","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        super(MACAddressFieldTest, self).setUp()"},{"line_number":102,"context_line":"        self.field \u003d common_types.MACAddressField()"},{"line_number":103,"context_line":"        self.coerce_good_values \u003d [tools.get_random_mac()]"},{"line_number":104,"context_line":"        mac1 \u003d tools.get_random_mac()"},{"line_number":105,"context_line":"        mac2 \u003d tools.get_random_mac()"},{"line_number":106,"context_line":"        self.coerce_good_values \u003d [(mac1, mac1), (mac2, mac2)]"},{"line_number":107,"context_line":"        self.coerce_bad_values \u003d [\u0027XXXX\u0027, \u0027ypp\u0027, \u0027g3:vvv\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a061dce_2d970e3b","line":104,"updated":"2016-04-07 08:13:51.000000000","message":"we should make the field receive netaddr.EUI not strings.","commit_id":"66433d815f5ecf25ae407168a56ae22b487ce48e"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"98262b9a5479b76dde908dec48b525df15b8d440","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        super(MACAddressFieldTest, self).setUp()"},{"line_number":102,"context_line":"        self.field \u003d common_types.MACAddressField()"},{"line_number":103,"context_line":"        self.coerce_good_values \u003d [tools.get_random_mac()]"},{"line_number":104,"context_line":"        mac1 \u003d tools.get_random_mac()"},{"line_number":105,"context_line":"        mac2 \u003d tools.get_random_mac()"},{"line_number":106,"context_line":"        self.coerce_good_values \u003d [(mac1, mac1), (mac2, mac2)]"},{"line_number":107,"context_line":"        self.coerce_bad_values \u003d [\u0027XXXX\u0027, \u0027ypp\u0027, \u0027g3:vvv\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a061dce_087158a8","line":104,"in_reply_to":"9a061dce_2d970e3b","updated":"2016-04-07 08:23:21.000000000","message":"Agree with Ihar.","commit_id":"66433d815f5ecf25ae407168a56ae22b487ce48e"}]}
