)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"e5b6a08373a2aeb635af13fb697e11c11ef0eb56","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Eyal Leshem \u003ceyal.leshem@toganetworks.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-07-03 08:09:52 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Create create field type of DhcpOptsDictField"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As json accept only string as keys - when creating int -\u003e string field type"},{"line_number":10,"context_line":"The key will serialize as \"str\" and the validate will fail when desrialzing it."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f1d235d_7a9cadbf","line":7,"range":{"start_line":7,"start_character":7,"end_line":7,"end_character":13},"updated":"2017-07-03 13:56:16.000000000","message":"not necessary?","commit_id":"99d0430dc86ac3d1a520d11457e609ea4227cc8d"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"750b1e2b76335f4ee94ee6d18fc79025b6741ccd","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Eyal Leshem \u003ceyal.leshem@toganetworks.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-07-03 08:09:52 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Create create field type of DhcpOptsDictField"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As json accept only string as keys - when creating int -\u003e string field type"},{"line_number":10,"context_line":"The key will serialize as \"str\" and the validate will fail when desrialzing it."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f1d235d_6c187474","line":7,"range":{"start_line":7,"start_character":7,"end_line":7,"end_character":13},"in_reply_to":"3f1d235d_7a9cadbf","updated":"2017-07-03 18:28:34.000000000","message":"removed","commit_id":"99d0430dc86ac3d1a520d11457e609ea4227cc8d"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"e5b6a08373a2aeb635af13fb697e11c11ef0eb56","unresolved":false,"context_lines":[{"line_number":10,"context_line":"The key will serialize as \"str\" and the validate will fail when desrialzing it."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"so change the extra-dhcp option to DhcpOptsDictField"},{"line_number":13,"context_line":"(Field type that relvant represt dhcp-opt)"},{"line_number":14,"context_line":"and add test that check and validate the serialization .."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Related-bug: #1585170"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f1d235d_5a51f10d","line":13,"range":{"start_line":13,"start_character":17,"end_line":13,"end_character":24},"updated":"2017-07-03 13:56:16.000000000","message":"relevant?","commit_id":"99d0430dc86ac3d1a520d11457e609ea4227cc8d"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"750b1e2b76335f4ee94ee6d18fc79025b6741ccd","unresolved":false,"context_lines":[{"line_number":10,"context_line":"The key will serialize as \"str\" and the validate will fail when desrialzing it."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"so change the extra-dhcp option to DhcpOptsDictField"},{"line_number":13,"context_line":"(Field type that relvant represt dhcp-opt)"},{"line_number":14,"context_line":"and add test that check and validate the serialization .."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Related-bug: #1585170"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f1d235d_4c293888","line":13,"range":{"start_line":13,"start_character":17,"end_line":13,"end_character":24},"in_reply_to":"3f1d235d_5a51f10d","updated":"2017-07-03 18:28:34.000000000","message":"Is typo - also removed ..","commit_id":"99d0430dc86ac3d1a520d11457e609ea4227cc8d"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"e5b6a08373a2aeb635af13fb697e11c11ef0eb56","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"so change the extra-dhcp option to DhcpOptsDictField"},{"line_number":13,"context_line":"(Field type that relvant represt dhcp-opt)"},{"line_number":14,"context_line":"and add test that check and validate the serialization .."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Related-bug: #1585170"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f1d235d_1a749998","line":14,"range":{"start_line":14,"start_character":54,"end_line":14,"end_character":57},"updated":"2017-07-03 13:56:16.000000000","message":"just one period?","commit_id":"99d0430dc86ac3d1a520d11457e609ea4227cc8d"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"750b1e2b76335f4ee94ee6d18fc79025b6741ccd","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"so change the extra-dhcp option to DhcpOptsDictField"},{"line_number":13,"context_line":"(Field type that relvant represt dhcp-opt)"},{"line_number":14,"context_line":"and add test that check and validate the serialization .."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Related-bug: #1585170"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f1d235d_2c2cbc97","line":14,"range":{"start_line":14,"start_character":54,"end_line":14,"end_character":57},"in_reply_to":"3f1d235d_1a749998","updated":"2017-07-03 18:28:34.000000000","message":"I meant unit-test , tried to do it more clear in the commit message ..","commit_id":"99d0430dc86ac3d1a520d11457e609ea4227cc8d"}],"dragonflow/controller/dhcp_app.py":[{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"c0c86716b976e60446226f6f251bea580e835363","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                nexthop\u003dlport.ip))"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        routes_bin \u003d b\u0027\u0027"},{"line_number":220,"context_line":"        opt_key \u003d str(dhcp.DHCP_CLASSLESS_ROUTE_OPT)"},{"line_number":221,"context_line":"        opt \u003d lport.extra_dhcp_options.get(opt_key)"},{"line_number":222,"context_line":"        if opt:"},{"line_number":223,"context_line":"            dest_cidr, _c, via \u003d opt.partition(\u0027,\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_ce02f20b","line":220,"range":{"start_line":220,"start_character":18,"end_line":220,"end_character":21},"updated":"2017-07-03 08:29:12.000000000","message":"Nitpicking, but any chance we can avoid this cast and maybe convert it inside?\n\nWe\u0027re parsing the dictionary in the field anyway, we might as well convert all the tag keys to integers (and covert back to strings when serializing)","commit_id":"99d0430dc86ac3d1a520d11457e609ea4227cc8d"}],"dragonflow/db/field_types.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"1672db45d049067171acdc90b14ed3fb8ae82cc3","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":"from jsonmodels import errors"},{"line_number":13,"context_line":"from jsonmodels import fields"},{"line_number":14,"context_line":"from sets import Set"},{"line_number":15,"context_line":"import netaddr"},{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f201791_a5861c65","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":20},"updated":"2017-06-28 14:16:08.000000000","message":"Hacking rules state that you should import modules, not objects within modules. i.e.: import sets, and use sets.Set.\n\nAdditionally, please don\u0027t use \u0027sets\u0027. It is deprecated[1].\n\n[1] https://docs.python.org/2/library/sets.html","commit_id":"391b3cba0523e1abd336d4a61ac5fc7cb3f3ce47"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"1672db45d049067171acdc90b14ed3fb8ae82cc3","unresolved":false,"context_lines":[{"line_number":240,"context_line":"    string(represented the dhcp tag) -\u003e"},{"line_number":241,"context_line":"    string - represent the dhcp value \u0027\u0027\u0027"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    valid_tags \u003d Set([str(x) for x in range(1, 255)])"},{"line_number":244,"context_line":"    valid_tags.add(\"siaddr\")"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    types \u003d (dict,)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f201791_45106800","line":243,"range":{"start_line":243,"start_character":22,"end_line":243,"end_character":53},"updated":"2017-06-28 14:16:08.000000000","message":"You don\u0027t need to put the comprehention in a list. This also works:\n\nset(str(x) for x in range(1, 255))","commit_id":"391b3cba0523e1abd336d4a61ac5fc7cb3f3ce47"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"59f662855932098e23dd9e525145ee3774b108c5","unresolved":false,"context_lines":[{"line_number":240,"context_line":"    string - represent the dhcp value"},{"line_number":241,"context_line":"    \u0027\u0027\u0027"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    valid_tags \u003d set([str(x) for x in range(1, 255)])"},{"line_number":244,"context_line":"    valid_tags.add(\"siaddr\")"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    types \u003d (dict,)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f1d235d_2f21b24e","line":243,"range":{"start_line":243,"start_character":21,"end_line":243,"end_character":22},"updated":"2017-06-29 11:12:55.000000000","message":"You\u0027re still creating here a list that you don\u0027t need.\n\nset(str(x) for x in range(1, 255))","commit_id":"02fbf032bd0fee95a81d59c2cc54ac0b8a801b43"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"e5b6a08373a2aeb635af13fb697e11c11ef0eb56","unresolved":false,"context_lines":[{"line_number":240,"context_line":"    string - represent the dhcp value"},{"line_number":241,"context_line":"    \u0027\u0027\u0027"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    valid_tags \u003d set(str(x) for x in range(1, 255))"},{"line_number":244,"context_line":"    valid_tags.add(\"siaddr\")"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    types \u003d (dict,)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_da23c104","line":243,"range":{"start_line":243,"start_character":17,"end_line":243,"end_character":51},"updated":"2017-07-03 13:56:16.000000000","message":"Do we need to maintain this almost 1k bytes data to just verify a int in string value? Maybe we can just convert string to int and then verify it, Or follow Dima\u0027s comment to use int as key here.","commit_id":"99d0430dc86ac3d1a520d11457e609ea4227cc8d"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"566d36e5104f3c964c57814cce795c6cdc9562a9","unresolved":false,"context_lines":[{"line_number":240,"context_line":"    string - represent the dhcp value"},{"line_number":241,"context_line":"    \u0027\u0027\u0027"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    valid_tags \u003d set(str(x) for x in range(1, 255))"},{"line_number":244,"context_line":"    valid_tags.add(\"siaddr\")"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    types \u003d (dict,)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_e1b314e8","line":243,"range":{"start_line":243,"start_character":17,"end_line":243,"end_character":51},"in_reply_to":"3f1d235d_4c77f8a1","updated":"2017-07-06 06:53:34.000000000","message":"String keys are just a JSON limitation, I\u0027d rather not leak it into our models.\n\nPython has no issue with int keys and I think its preferable seeing that tags are integers.\nIf siaddr does not fit the bill here, it\u0027s more the reason to store it elsewhere. It is not a DHCP tag anyway.","commit_id":"99d0430dc86ac3d1a520d11457e609ea4227cc8d"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"750b1e2b76335f4ee94ee6d18fc79025b6741ccd","unresolved":false,"context_lines":[{"line_number":240,"context_line":"    string - represent the dhcp value"},{"line_number":241,"context_line":"    \u0027\u0027\u0027"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    valid_tags \u003d set(str(x) for x in range(1, 255))"},{"line_number":244,"context_line":"    valid_tags.add(\"siaddr\")"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    types \u003d (dict,)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_4c77f8a1","line":243,"range":{"start_line":243,"start_character":17,"end_line":243,"end_character":51},"in_reply_to":"3f1d235d_da23c104","updated":"2017-07-03 18:28:34.000000000","message":"I think that use 1k of data (one instance per process .. ) , worth avoiding code that: \n1.  check if it siaddr \n 1.1 if not - try to convert it to int\n   1.1.1 if exception - raise validation error \n   1.1.2 if it\u0027s int check that it between 1 to 255 \n\nalso if we adjust dima solution - we will not be able to use int in the validation. \nAs int is not valid json-key - \nTo treat the value as int  we should override the \"to_struct\" and \"parse_value\" - that convert from int to string while serializing (and from string to int in the oppsite direction )  - but in the json-models the validate done after parse_value -  and it\u0027s will be on the string anyway .. (see jsonmodels/fields.py:34)","commit_id":"99d0430dc86ac3d1a520d11457e609ea4227cc8d"}],"dragonflow/db/models/l2.py":[{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"9db13daf10e5b9997b218974e5f39b987fde0147","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    device_id \u003d fields.StringField()"},{"line_number":114,"context_line":"    qos_policy \u003d df_fields.ReferenceField(qos.QosPolicy)"},{"line_number":115,"context_line":"    remote_vtep \u003d fields.BoolField()"},{"line_number":116,"context_line":"    extra_dhcp_options \u003d df_fields.StringStringDictField()"},{"line_number":117,"context_line":"    binding_vnic_type \u003d df_fields.EnumField(portbindings.VNIC_TYPES)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def __init__(self, ofport\u003dNone, is_local\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f201791_e7547800","line":116,"range":{"start_line":116,"start_character":35,"end_line":116,"end_character":56},"updated":"2017-06-26 08:47:06.000000000","message":"Sorry for late reply, I think \u0027List of DHCPOption\u0027 was a more self-documenting and readable type than \u0027Dictionary of string-\u003estring\u0027.","commit_id":"44ac88f0f946fcc29d06f4386b5b96f01426cf5a"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"101da66e87c4d9245e1d20ad53f83ee0cdd74f04","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    device_id \u003d fields.StringField()"},{"line_number":114,"context_line":"    qos_policy \u003d df_fields.ReferenceField(qos.QosPolicy)"},{"line_number":115,"context_line":"    remote_vtep \u003d fields.BoolField()"},{"line_number":116,"context_line":"    extra_dhcp_options \u003d df_fields.StringStringDictField()"},{"line_number":117,"context_line":"    binding_vnic_type \u003d df_fields.EnumField(portbindings.VNIC_TYPES)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def __init__(self, ofport\u003dNone, is_local\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f201791_a778c0c3","line":116,"range":{"start_line":116,"start_character":35,"end_line":116,"end_character":56},"in_reply_to":"5f201791_e7547800","updated":"2017-06-26 10:54:37.000000000","message":"But it\u0027s describe string-\u003estring dictionary, and the extra-dhcp-opt just use this field type ...","commit_id":"44ac88f0f946fcc29d06f4386b5b96f01426cf5a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"2c7485a7b6cccd02bcfa1351a0da9ceabd2eec71","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    mac_address \u003d df_fields.MacAddressField(required\u003dTrue)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class DHCPOption(models.Base):"},{"line_number":77,"context_line":"    tag \u003d fields.IntField(required\u003dTrue)"},{"line_number":78,"context_line":"    value \u003d fields.StringField(required\u003dTrue)"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f201791_8b845dd4","line":76,"updated":"2017-06-28 08:32:35.000000000","message":"Is this class still used?","commit_id":"7e8d95d20df9e4f974e8a49ed8e9a4301560b67b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"2c7485a7b6cccd02bcfa1351a0da9ceabd2eec71","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    device_id \u003d fields.StringField()"},{"line_number":114,"context_line":"    qos_policy \u003d df_fields.ReferenceField(qos.QosPolicy)"},{"line_number":115,"context_line":"    remote_vtep \u003d fields.BoolField()"},{"line_number":116,"context_line":"    extra_dhcp_options \u003d df_fields.StringStringDictField()"},{"line_number":117,"context_line":"    binding_vnic_type \u003d df_fields.EnumField(portbindings.VNIC_TYPES)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def __init__(self, ofport\u003dNone, is_local\u003dNone,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f201791_eb9751eb","line":116,"range":{"start_line":116,"start_character":35,"end_line":116,"end_character":56},"updated":"2017-06-28 08:32:35.000000000","message":"Carrying over the conversation from PS1, in any case, this needs to be validated that the keys and values are legal.","commit_id":"7e8d95d20df9e4f974e8a49ed8e9a4301560b67b"}],"dragonflow/neutron/db/models/l2.py":[{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"492feb473c50c0b010a087ec791eaa8be7bf4209","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    return supported_allowed_address_pairs"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def _build_dhcp_parmas(port):"},{"line_number":74,"context_line":"    dhcp_opt_dict \u003d {}"},{"line_number":75,"context_line":"    opts \u003d port.get(extra_dhcp_opt.EXTRADHCPOPTS, [])"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3f1d235d_037686d9","line":73,"range":{"start_line":73,"start_character":15,"end_line":73,"end_character":22},"updated":"2017-07-11 12:11:01.000000000","message":"Typo: params","commit_id":"ea0d36b525c384e61e8fad650b62bf396edc8cda"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"1ce6db959aa9be64ff71343572f596a48aa08dfe","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    return supported_allowed_address_pairs"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def _build_dhcp_parmas(port):"},{"line_number":74,"context_line":"    dhcp_opt_dict \u003d {}"},{"line_number":75,"context_line":"    opts \u003d port.get(extra_dhcp_opt.EXTRADHCPOPTS, [])"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3f1d235d_402eaafa","line":73,"range":{"start_line":73,"start_character":15,"end_line":73,"end_character":22},"in_reply_to":"3f1d235d_037686d9","updated":"2017-07-12 11:39:58.000000000","message":"fixed","commit_id":"ea0d36b525c384e61e8fad650b62bf396edc8cda"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"492feb473c50c0b010a087ec791eaa8be7bf4209","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    dhcp_opt_dict \u003d {}"},{"line_number":75,"context_line":"    opts \u003d port.get(extra_dhcp_opt.EXTRADHCPOPTS, [])"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    for opt in opts:"},{"line_number":78,"context_line":"        dhcp_opt_dict[opt[\u0027opt_name\u0027]] \u003d opt[\u0027opt_value\u0027]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    ret \u003d {\"opts\": dhcp_opt_dict}"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3f1d235d_a328f296","line":78,"range":{"start_line":77,"start_character":4,"end_line":78,"end_character":57},"updated":"2017-07-11 12:11:01.000000000","message":"What about siaddr?\nOther than that, no need to copy the dict explicitly:\n\nsiaddr \u003d opts.pop(\u0027siaddr\u0027)\nreturn {\u0027siaddar\u0027: siaddr, \u0027opts\u0027: opts}","commit_id":"ea0d36b525c384e61e8fad650b62bf396edc8cda"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"1ce6db959aa9be64ff71343572f596a48aa08dfe","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    dhcp_opt_dict \u003d {}"},{"line_number":75,"context_line":"    opts \u003d port.get(extra_dhcp_opt.EXTRADHCPOPTS, [])"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    for opt in opts:"},{"line_number":78,"context_line":"        dhcp_opt_dict[opt[\u0027opt_name\u0027]] \u003d opt[\u0027opt_value\u0027]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    ret \u003d {\"opts\": dhcp_opt_dict}"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3f1d235d_80ee02b2","line":78,"range":{"start_line":77,"start_character":4,"end_line":78,"end_character":57},"in_reply_to":"3f1d235d_a328f296","updated":"2017-07-12 11:39:58.000000000","message":"1. I added a mention to siaddr code. \n2. The opts from the port is a List.","commit_id":"ea0d36b525c384e61e8fad650b62bf396edc8cda"}],"dragonflow/tests/unit/test_app_base.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bbe6600eef32f60295cd940959c8cbd6d2ad1603","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        device_owner\u003ddevice_owner,"},{"line_number":180,"context_line":"        device_id\u003ddevice_id,"},{"line_number":181,"context_line":"        # binding_vnic_type\u003dbinding_vnic_type,"},{"line_number":182,"context_line":"        dhcp_params\u003d{} if not dhcp_params else dhcp_params,"},{"line_number":183,"context_line":"    )"},{"line_number":184,"context_line":"    fake_port.is_local \u003d is_local"},{"line_number":185,"context_line":"    fake_port.ofport \u003d ofport"}],"source_content_type":"text/x-python","patch_set":15,"id":"1f1a1f67_dfdec50f","line":182,"range":{"start_line":182,"start_character":0,"end_line":182,"end_character":59},"updated":"2017-07-18 08:15:51.000000000","message":"nit: I think this isn\u0027t needed anymore","commit_id":"492487b65e82358540b6f520fe2d152d2671d568"}],"dragonflow/tests/unit/test_dhcp_app.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"e5b6a08373a2aeb635af13fb697e11c11ef0eb56","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        fake_lport \u003d copy.deepcopy(test_app_base.fake_local_port1)"},{"line_number":144,"context_line":"        json \u003d fake_lport.to_json()"},{"line_number":145,"context_line":"        loaded_lport \u003d l2.LogicalPort.from_json(json)"},{"line_number":146,"context_line":"        loaded_lport.validate()"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_5af4515b","line":146,"range":{"start_line":146,"start_character":0,"end_line":146,"end_character":31},"updated":"2017-07-03 13:56:16.000000000","message":"I guess UT should at least assert something.","commit_id":"99d0430dc86ac3d1a520d11457e609ea4227cc8d"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"750b1e2b76335f4ee94ee6d18fc79025b6741ccd","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        fake_lport \u003d copy.deepcopy(test_app_base.fake_local_port1)"},{"line_number":144,"context_line":"        json \u003d fake_lport.to_json()"},{"line_number":145,"context_line":"        loaded_lport \u003d l2.LogicalPort.from_json(json)"},{"line_number":146,"context_line":"        loaded_lport.validate()"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_6cbbd40d","line":146,"range":{"start_line":146,"start_character":0,"end_line":146,"end_character":31},"in_reply_to":"3f1d235d_5af4515b","updated":"2017-07-03 18:28:34.000000000","message":"If the validate will fail it will throw exception from the validate..","commit_id":"99d0430dc86ac3d1a520d11457e609ea4227cc8d"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"492feb473c50c0b010a087ec791eaa8be7bf4209","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            subnet, test_app_base.fake_local_port1)"},{"line_number":140,"context_line":"        self.assertEqual(\u002710.0.0.1\u0027, str(gateway_ip))"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def test_extra_dhcp_params_serilization(self):"},{"line_number":143,"context_line":"        fake_lport \u003d copy.deepcopy(test_app_base.fake_local_port1)"},{"line_number":144,"context_line":"        json \u003d fake_lport.to_json()"},{"line_number":145,"context_line":"        loaded_lport \u003d l2.LogicalPort.from_json(json)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f1d235d_c3064e21","line":142,"updated":"2017-07-11 12:11:01.000000000","message":"serialization","commit_id":"ea0d36b525c384e61e8fad650b62bf396edc8cda"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"492feb473c50c0b010a087ec791eaa8be7bf4209","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        self.assertEqual(\u002710.0.0.1\u0027, str(gateway_ip))"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def test_extra_dhcp_params_serilization(self):"},{"line_number":143,"context_line":"        fake_lport \u003d copy.deepcopy(test_app_base.fake_local_port1)"},{"line_number":144,"context_line":"        json \u003d fake_lport.to_json()"},{"line_number":145,"context_line":"        loaded_lport \u003d l2.LogicalPort.from_json(json)"},{"line_number":146,"context_line":"        loaded_lport.validate()"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f1d235d_353bf5d1","line":146,"range":{"start_line":143,"start_character":8,"end_line":146,"end_character":31},"updated":"2017-07-11 12:11:01.000000000","message":"This is best suited to the tests file dedicated test_model_fields, please add more cases as well (validation success, validation failure, to_struct returns correct primitives, parse returns expected object, etc)","commit_id":"ea0d36b525c384e61e8fad650b62bf396edc8cda"}]}
