)]}'
{"dragonflow/controller/common/cidr_list.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"21adbbc29b9967bf3e6b43786b3293b41bd18d53","unresolved":false,"context_lines":[{"line_number":41,"context_line":"\r"},{"line_number":42,"context_line":"    @staticmethod\r"},{"line_number":43,"context_line":"    def _remove_one_address(cidr_list, address_to_remove):\r"},{"line_number":44,"context_line":"        \"\"\"cidr_list - IPNetwork list\r"},{"line_number":45,"context_line":"           address_to_remove - IPAddress\r"},{"line_number":46,"context_line":"        \"\"\"\r"},{"line_number":47,"context_line":"        added_cidr \u003d []\r"},{"line_number":48,"context_line":"        removed_cidr \u003d []\r"},{"line_number":49,"context_line":"        new_cidr_list \u003d cidr_list\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ff52f3f_05da56e8","line":46,"range":{"start_line":44,"start_character":0,"end_line":46,"end_character":11},"updated":"2017-04-12 23:30:57.000000000","message":"some comments here?","commit_id":"e9b91f80233409fc09b16a0fd7ec723ec330374f"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"1b0c5934075de862edcd19400a0203702307eaf2","unresolved":false,"context_lines":[{"line_number":41,"context_line":"\r"},{"line_number":42,"context_line":"    @staticmethod\r"},{"line_number":43,"context_line":"    def _remove_one_address(cidr_list, address_to_remove):\r"},{"line_number":44,"context_line":"        \"\"\"cidr_list - IPNetwork list\r"},{"line_number":45,"context_line":"           address_to_remove - IPAddress\r"},{"line_number":46,"context_line":"        \"\"\"\r"},{"line_number":47,"context_line":"        added_cidr \u003d []\r"},{"line_number":48,"context_line":"        removed_cidr \u003d []\r"},{"line_number":49,"context_line":"        new_cidr_list \u003d cidr_list\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"7ffa3b31_42f02bca","line":46,"range":{"start_line":44,"start_character":0,"end_line":46,"end_character":11},"in_reply_to":"9ff52f3f_05da56e8","updated":"2017-04-17 03:46:01.000000000","message":"Done","commit_id":"e9b91f80233409fc09b16a0fd7ec723ec330374f"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"21adbbc29b9967bf3e6b43786b3293b41bd18d53","unresolved":false,"context_lines":[{"line_number":63,"context_line":"\r"},{"line_number":64,"context_line":"    @staticmethod\r"},{"line_number":65,"context_line":"    def _add_one_address(cidr_list, address_to_add):\r"},{"line_number":66,"context_line":"        \"\"\"cidr_list - IPNetwork list\r"},{"line_number":67,"context_line":"           address_to_add - IPAddress\r"},{"line_number":68,"context_line":"        \"\"\"\r"},{"line_number":69,"context_line":"        position \u003d None\r"},{"line_number":70,"context_line":"        address_version \u003d netaddr.IPAddress(address_to_add).version\r"},{"line_number":71,"context_line":"        for index in range(len(cidr_list)):\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ff52f3f_e5d652c4","line":68,"range":{"start_line":66,"start_character":0,"end_line":68,"end_character":11},"updated":"2017-04-12 23:30:57.000000000","message":"ditto","commit_id":"e9b91f80233409fc09b16a0fd7ec723ec330374f"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"1b0c5934075de862edcd19400a0203702307eaf2","unresolved":false,"context_lines":[{"line_number":63,"context_line":"\r"},{"line_number":64,"context_line":"    @staticmethod\r"},{"line_number":65,"context_line":"    def _add_one_address(cidr_list, address_to_add):\r"},{"line_number":66,"context_line":"        \"\"\"cidr_list - IPNetwork list\r"},{"line_number":67,"context_line":"           address_to_add - IPAddress\r"},{"line_number":68,"context_line":"        \"\"\"\r"},{"line_number":69,"context_line":"        position \u003d None\r"},{"line_number":70,"context_line":"        address_version \u003d netaddr.IPAddress(address_to_add).version\r"},{"line_number":71,"context_line":"        for index in range(len(cidr_list)):\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"7ffa3b31_22ed1fef","line":68,"range":{"start_line":66,"start_character":0,"end_line":68,"end_character":11},"in_reply_to":"9ff52f3f_e5d652c4","updated":"2017-04-17 03:46:01.000000000","message":"Done","commit_id":"e9b91f80233409fc09b16a0fd7ec723ec330374f"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"21adbbc29b9967bf3e6b43786b3293b41bd18d53","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        self._list \u003d []\r"},{"line_number":129,"context_line":"\r"},{"line_number":130,"context_line":"    def remove_addresses_and_get_changes(self, address_list):\r"},{"line_number":131,"context_line":"        \"\"\"address_list - IPAddress or string list\r"},{"line_number":132,"context_line":"        \"\"\"\r"},{"line_number":133,"context_line":"        added_cidr \u003d []\r"},{"line_number":134,"context_line":"        removed_cidr \u003d []\r"},{"line_number":135,"context_line":"        new_cidr_list \u003d self._list\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ff52f3f_45e97e7e","line":132,"range":{"start_line":131,"start_character":0,"end_line":132,"end_character":11},"updated":"2017-04-12 23:30:57.000000000","message":"ditto","commit_id":"e9b91f80233409fc09b16a0fd7ec723ec330374f"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"1b0c5934075de862edcd19400a0203702307eaf2","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        self._list \u003d []\r"},{"line_number":129,"context_line":"\r"},{"line_number":130,"context_line":"    def remove_addresses_and_get_changes(self, address_list):\r"},{"line_number":131,"context_line":"        \"\"\"address_list - IPAddress or string list\r"},{"line_number":132,"context_line":"        \"\"\"\r"},{"line_number":133,"context_line":"        added_cidr \u003d []\r"},{"line_number":134,"context_line":"        removed_cidr \u003d []\r"},{"line_number":135,"context_line":"        new_cidr_list \u003d self._list\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"7ffa3b31_62e32707","line":132,"range":{"start_line":131,"start_character":0,"end_line":132,"end_character":11},"in_reply_to":"9ff52f3f_45e97e7e","updated":"2017-04-17 03:46:01.000000000","message":"Done","commit_id":"e9b91f80233409fc09b16a0fd7ec723ec330374f"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"21adbbc29b9967bf3e6b43786b3293b41bd18d53","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        self._list \u003d new_cidr_list\r"},{"line_number":149,"context_line":"        return filtered_added_cidr, filtered_removed_cidr\r"},{"line_number":150,"context_line":"\r"},{"line_number":151,"context_line":"    def add_addresses_and_get_changes(self, address_list):\r"},{"line_number":152,"context_line":"        \"\"\"address_list - IPAddress or string list\r"},{"line_number":153,"context_line":"        \"\"\"\r"},{"line_number":154,"context_line":"        added_cidr \u003d []\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ff52f3f_a5e04a98","line":151,"range":{"start_line":151,"start_character":8,"end_line":151,"end_character":37},"updated":"2017-04-12 23:30:57.000000000","message":"This is very much the same as remove_addresses_and_get_changes, is there a way to eliminate the duplicates?","commit_id":"e9b91f80233409fc09b16a0fd7ec723ec330374f"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"1b0c5934075de862edcd19400a0203702307eaf2","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        self._list \u003d new_cidr_list\r"},{"line_number":149,"context_line":"        return filtered_added_cidr, filtered_removed_cidr\r"},{"line_number":150,"context_line":"\r"},{"line_number":151,"context_line":"    def add_addresses_and_get_changes(self, address_list):\r"},{"line_number":152,"context_line":"        \"\"\"address_list - IPAddress or string list\r"},{"line_number":153,"context_line":"        \"\"\"\r"},{"line_number":154,"context_line":"        added_cidr \u003d []\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"7ffa3b31_82e63316","line":151,"range":{"start_line":151,"start_character":8,"end_line":151,"end_character":37},"in_reply_to":"9ff52f3f_a5e04a98","updated":"2017-04-17 03:46:01.000000000","message":"Done","commit_id":"e9b91f80233409fc09b16a0fd7ec723ec330374f"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0460fdda4b5de9990c17209630d75e1def79a1bf","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    A class for saving a set of network addresses in CIDR list format.\r"},{"line_number":22,"context_line":"    \"\"\"\r"},{"line_number":23,"context_line":"    def __init__(self):\r"},{"line_number":24,"context_line":"        super(CIDRList, self).__init__()\r"},{"line_number":25,"context_line":"        self._list \u003d []\r"},{"line_number":26,"context_line":"\r"},{"line_number":27,"context_line":"    @staticmethod\r"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ffa3b31_73499f89","line":24,"range":{"start_line":24,"start_character":8,"end_line":24,"end_character":40},"updated":"2017-04-18 06:42:35.000000000","message":"This is not needed","commit_id":"92c8ab6189557e580545d40c4553c3914f6dbdc0"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0460fdda4b5de9990c17209630d75e1def79a1bf","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        super(CIDRList, self).__init__()\r"},{"line_number":25,"context_line":"        self._list \u003d []\r"},{"line_number":26,"context_line":"\r"},{"line_number":27,"context_line":"    @staticmethod\r"},{"line_number":28,"context_line":"    def _if_cidrs_can_be_merged(cidr1, cidr2):\r"},{"line_number":29,"context_line":"        \"\"\"Internal interface. Check those two cidrs if can be merged.\r"},{"line_number":30,"context_line":"           @param cidr1 - IPNetwork\r"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ffa3b31_93142b50","line":27,"range":{"start_line":27,"start_character":4,"end_line":27,"end_character":17},"updated":"2017-04-18 06:42:35.000000000","message":"If you\u0027re not using object state in the functions below, maybe they can be module functions rather that static methods.","commit_id":"92c8ab6189557e580545d40c4553c3914f6dbdc0"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0460fdda4b5de9990c17209630d75e1def79a1bf","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        if (cidr1.version \u003d\u003d cidr2.version and\r"},{"line_number":34,"context_line":"                cidr1.last + 1 \u003d\u003d cidr2.first and\r"},{"line_number":35,"context_line":"                cidr1.netmask \u003d\u003d cidr2.netmask):\r"},{"line_number":36,"context_line":"            netmask_int \u003d int(cidr1.netmask)\r"},{"line_number":37,"context_line":"            if netmask_int \u003e 0:\r"},{"line_number":38,"context_line":"                parent_netmask_int \u003d (netmask_int \u0026 (netmask_int \u003c\u003c 1))\r"},{"line_number":39,"context_line":"                cidr1_parent_cidr \u003d cidr1.network \u0026 parent_netmask_int\r"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ffa3b31_164b6959","line":36,"range":{"start_line":36,"start_character":26,"end_line":36,"end_character":44},"updated":"2017-04-18 06:42:35.000000000","message":"I think you can use cidr1.prefixlen here","commit_id":"92c8ab6189557e580545d40c4553c3914f6dbdc0"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0460fdda4b5de9990c17209630d75e1def79a1bf","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        removed_cidr \u003d []\r"},{"line_number":55,"context_line":"        new_cidr_list \u003d cidr_list\r"},{"line_number":56,"context_line":"\r"},{"line_number":57,"context_line":"        for index in range(len(cidr_list)):\r"},{"line_number":58,"context_line":"            cidr_item \u003d cidr_list[index]\r"},{"line_number":59,"context_line":"            if address_to_remove in cidr_item:\r"},{"line_number":60,"context_line":"                removed_cidr \u003d [cidr_item]\r"},{"line_number":61,"context_line":"                added_cidr \u003d netaddr.cidr_exclude(cidr_item, address_to_remove)\r"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ffa3b31_366545e2","line":58,"range":{"start_line":57,"start_character":0,"end_line":58,"end_character":40},"updated":"2017-04-18 06:42:35.000000000","message":"for cidr_item in cidr_list:","commit_id":"92c8ab6189557e580545d40c4553c3914f6dbdc0"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0460fdda4b5de9990c17209630d75e1def79a1bf","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                removed_cidr \u003d [cidr_item]\r"},{"line_number":61,"context_line":"                added_cidr \u003d netaddr.cidr_exclude(cidr_item, address_to_remove)\r"},{"line_number":62,"context_line":"\r"},{"line_number":63,"context_line":"                new_cidr_list \u003d cidr_list[:index]\r"},{"line_number":64,"context_line":"                new_cidr_list.extend(added_cidr)\r"},{"line_number":65,"context_line":"                new_cidr_list.extend(cidr_list[(index + 1):])\r"},{"line_number":66,"context_line":"                break\r"},{"line_number":67,"context_line":"\r"},{"line_number":68,"context_line":"        return new_cidr_list, added_cidr, removed_cidr\r"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ffa3b31_f68c7d80","line":65,"range":{"start_line":63,"start_character":16,"end_line":65,"end_character":61},"updated":"2017-04-18 06:42:35.000000000","message":"I think you simplify it:\n\nnew_cidr_list \u003d cidr_list[:]\nnew_cidr_list.remove(cidr_item)\nnew_cidr_list.extend(added_cidr)","commit_id":"92c8ab6189557e580545d40c4553c3914f6dbdc0"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0460fdda4b5de9990c17209630d75e1def79a1bf","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                new_cidr_list \u003d cidr_list[:index]\r"},{"line_number":64,"context_line":"                new_cidr_list.extend(added_cidr)\r"},{"line_number":65,"context_line":"                new_cidr_list.extend(cidr_list[(index + 1):])\r"},{"line_number":66,"context_line":"                break\r"},{"line_number":67,"context_line":"\r"},{"line_number":68,"context_line":"        return new_cidr_list, added_cidr, removed_cidr\r"},{"line_number":69,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ffa3b31_d684e160","line":66,"range":{"start_line":66,"start_character":16,"end_line":66,"end_character":21},"updated":"2017-04-18 06:42:35.000000000","message":"Can move here the return below for extra brievety","commit_id":"92c8ab6189557e580545d40c4553c3914f6dbdc0"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0460fdda4b5de9990c17209630d75e1def79a1bf","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        return new_cidr_list, added_cidr, removed_cidr\r"},{"line_number":69,"context_line":"\r"},{"line_number":70,"context_line":"    @staticmethod\r"},{"line_number":71,"context_line":"    def _add_one_address(cidr_list, address_to_add):\r"},{"line_number":72,"context_line":"        \"\"\"Internal interface. Add one address to the cidr list, and get a new\r"},{"line_number":73,"context_line":"           cidr list and the changed cidrs.\r"},{"line_number":74,"context_line":"           @param cidr_list - IPNetwork list\r"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ffa3b31_36466523","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":24},"updated":"2017-04-18 06:42:35.000000000","message":"I have a very hard time to figure our what goes on here without comments.","commit_id":"92c8ab6189557e580545d40c4553c3914f6dbdc0"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0460fdda4b5de9990c17209630d75e1def79a1bf","unresolved":false,"context_lines":[{"line_number":75,"context_line":"           @param address_to_add - IPAddress\r"},{"line_number":76,"context_line":"        \"\"\"\r"},{"line_number":77,"context_line":"        position \u003d None\r"},{"line_number":78,"context_line":"        address_version \u003d netaddr.IPAddress(address_to_add).version\r"},{"line_number":79,"context_line":"        for index in range(len(cidr_list)):\r"},{"line_number":80,"context_line":"            cidr_item \u003d cidr_list[index]\r"},{"line_number":81,"context_line":"            if cidr_item.version \u003e address_version:\r"},{"line_number":82,"context_line":"                position \u003d index\r"},{"line_number":83,"context_line":"                break\r"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ffa3b31_56dd716e","line":80,"range":{"start_line":78,"start_character":0,"end_line":80,"end_character":40},"updated":"2017-04-18 06:42:35.000000000","message":"Same as above","commit_id":"92c8ab6189557e580545d40c4553c3914f6dbdc0"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0460fdda4b5de9990c17209630d75e1def79a1bf","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        added_cidr \u003d []\r"},{"line_number":141,"context_line":"        removed_cidr \u003d []\r"},{"line_number":142,"context_line":"        new_cidr_list \u003d cidr_list\r"},{"line_number":143,"context_line":"        for removed_ip in addresses_to_remove:\r"},{"line_number":144,"context_line":"            new_cidr_list, temp_added_cidr, temp_removed_cidr \u003d \\\r"},{"line_number":145,"context_line":"                CIDRList._remove_one_address(\r"},{"line_number":146,"context_line":"                    new_cidr_list, netaddr.IPAddress(removed_ip)\r"},{"line_number":147,"context_line":"                )\r"},{"line_number":148,"context_line":"            added_cidr.extend(temp_added_cidr)\r"},{"line_number":149,"context_line":"            removed_cidr.extend(temp_removed_cidr)\r"},{"line_number":150,"context_line":"\r"},{"line_number":151,"context_line":"        for added_ip in addresses_to_add:\r"},{"line_number":152,"context_line":"            new_cidr_list, temp_added_cidr, temp_removed_cidr \u003d \\\r"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ffa3b31_960f79e0","line":149,"range":{"start_line":143,"start_character":8,"end_line":149,"end_character":50},"updated":"2017-04-18 06:42:35.000000000","message":"Why is it better to remove IPs one by one rather than getting the difference between two IPSets?","commit_id":"92c8ab6189557e580545d40c4553c3914f6dbdc0"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0460fdda4b5de9990c17209630d75e1def79a1bf","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        return new_cidr_list, filtered_added_cidr, filtered_removed_cidr\r"},{"line_number":165,"context_line":"\r"},{"line_number":166,"context_line":"    def get_cidr_list(self):\r"},{"line_number":167,"context_line":"        return self._list\r"},{"line_number":168,"context_line":"\r"},{"line_number":169,"context_line":"    def clear(self):\r"},{"line_number":170,"context_line":"        self._list \u003d []\r"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ffa3b31_b334c7fc","line":167,"updated":"2017-04-18 06:42:35.000000000","message":"I think you might want to return a copy here","commit_id":"92c8ab6189557e580545d40c4553c3914f6dbdc0"}],"dragonflow/tests/unit/test_cidr_list.py":[{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0460fdda4b5de9990c17209630d75e1def79a1bf","unresolved":false,"context_lines":[{"line_number":23,"context_line":"\r"},{"line_number":24,"context_line":"class TestCIDRList(tests_base.BaseTestCase):\r"},{"line_number":25,"context_line":"\r"},{"line_number":26,"context_line":"    def test_cidr_list(self):\r"},{"line_number":27,"context_line":"        # initial aggregate addresses list\r"},{"line_number":28,"context_line":"        aggreate_addresses \u003d cidr_list.CIDRList()\r"},{"line_number":29,"context_line":"        aggreate_addresses.add_addresses_and_get_changes([\u0027192.168.10.6\u0027])\r"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ffa3b31_36f425cf","line":26,"updated":"2017-04-18 06:42:35.000000000","message":"Please split this into small and atomic tests.","commit_id":"92c8ab6189557e580545d40c4553c3914f6dbdc0"}]}
