)]}'
{"dragonflow/controller/sg_app.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"6211bbd53397763065511b4a74f8dd90819c1fc2","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        elif name \u003d\u003d n_const.PROTO_NAME_UDP:"},{"line_number":86,"context_line":"            return n_const.PROTO_NUM_UDP"},{"line_number":87,"context_line":"        else:"},{"line_number":88,"context_line":"            return int(name)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def _get_rule_flows_match_except_net_addresses(self, secgroup_rule):"},{"line_number":91,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a95cdbc_2fb98c2e","line":88,"range":{"start_line":88,"start_character":0,"end_line":88,"end_character":28},"updated":"2016-10-09 01:58:28.000000000","message":"Although it is legacy code, I think this might cause unexpected issue if code hits here. Maybe an error message  and returning None will be good","commit_id":"a8f97f2f39ad91628b9997a08aeabdaf1fefe50e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"29d540e0f54106a51f005512caeb1216e48d7bcf","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        elif name \u003d\u003d n_const.PROTO_NAME_UDP:"},{"line_number":86,"context_line":"            return n_const.PROTO_NUM_UDP"},{"line_number":87,"context_line":"        else:"},{"line_number":88,"context_line":"            return int(name)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def _get_rule_flows_match_except_net_addresses(self, secgroup_rule):"},{"line_number":91,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a95cdbc_45c31957","line":88,"range":{"start_line":88,"start_character":0,"end_line":88,"end_character":28},"in_reply_to":"1a95cdbc_2fb98c2e","updated":"2016-10-09 05:31:03.000000000","message":"Done","commit_id":"a8f97f2f39ad91628b9997a08aeabdaf1fefe50e"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"6211bbd53397763065511b4a74f8dd90819c1fc2","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            )"},{"line_number":103,"context_line":"            result_base[\u0027eth_type\u0027] \u003d ether.ETH_TYPE_IPV6"},{"line_number":104,"context_line":"            return [result_base]"},{"line_number":105,"context_line":"        else:"},{"line_number":106,"context_line":"            LOG.error(_LE(\"Unknown ethertype %s in security group rule\"),"},{"line_number":107,"context_line":"                      ethertype)"},{"line_number":108,"context_line":"            return None"},{"line_number":109,"context_line":"        protocol_name \u003d secgroup_rule.get_protocol()"},{"line_number":110,"context_line":"        if not protocol_name:"},{"line_number":111,"context_line":"            return [result_base]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a95cdbc_4fe25830","line":108,"range":{"start_line":105,"start_character":0,"end_line":108,"end_character":23},"updated":"2016-10-09 01:58:28.000000000","message":"If we can trust neutron, then this else is not required. As from the neutron api, the ethertype of sg rule can only be ipv4 or ipv6.\n\nhttps://github.com/openstack/neutron/blob/fcd47cca6e885df62f493348a9b9c3d9db44bf35/neutron/extensions/securitygroup.py#L261","commit_id":"a8f97f2f39ad91628b9997a08aeabdaf1fefe50e"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"1afd501fadb5fb572e10ec49a7ac356dc36e91bd","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            )"},{"line_number":103,"context_line":"            result_base[\u0027eth_type\u0027] \u003d ether.ETH_TYPE_IPV6"},{"line_number":104,"context_line":"            return [result_base]"},{"line_number":105,"context_line":"        else:"},{"line_number":106,"context_line":"            LOG.error(_LE(\"Unknown ethertype %s in security group rule\"),"},{"line_number":107,"context_line":"                      ethertype)"},{"line_number":108,"context_line":"            return None"},{"line_number":109,"context_line":"        protocol_name \u003d secgroup_rule.get_protocol()"},{"line_number":110,"context_line":"        if not protocol_name:"},{"line_number":111,"context_line":"            return [result_base]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a95cdbc_cf5ca87f","line":108,"range":{"start_line":105,"start_character":0,"end_line":108,"end_character":23},"in_reply_to":"1a95cdbc_4fe25830","updated":"2016-10-09 02:21:42.000000000","message":"+1, neutron nb api takes care of it.","commit_id":"a8f97f2f39ad91628b9997a08aeabdaf1fefe50e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"29d540e0f54106a51f005512caeb1216e48d7bcf","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            )"},{"line_number":103,"context_line":"            result_base[\u0027eth_type\u0027] \u003d ether.ETH_TYPE_IPV6"},{"line_number":104,"context_line":"            return [result_base]"},{"line_number":105,"context_line":"        else:"},{"line_number":106,"context_line":"            LOG.error(_LE(\"Unknown ethertype %s in security group rule\"),"},{"line_number":107,"context_line":"                      ethertype)"},{"line_number":108,"context_line":"            return None"},{"line_number":109,"context_line":"        protocol_name \u003d secgroup_rule.get_protocol()"},{"line_number":110,"context_line":"        if not protocol_name:"},{"line_number":111,"context_line":"            return [result_base]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a95cdbc_259fed5f","line":108,"range":{"start_line":105,"start_character":0,"end_line":108,"end_character":23},"in_reply_to":"1a95cdbc_cf5ca87f","updated":"2016-10-09 05:31:03.000000000","message":"Done","commit_id":"a8f97f2f39ad91628b9997a08aeabdaf1fefe50e"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"6211bbd53397763065511b4a74f8dd90819c1fc2","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            results \u003d [result_base]"},{"line_number":122,"context_line":"        elif (int(port_range_min) \u003d\u003d 1 and int(port_range_max) \u003d\u003d 65535):"},{"line_number":123,"context_line":"            results \u003d [result_base]"},{"line_number":124,"context_line":"        elif not (int(port_range_min) \u003d\u003d 1 and int(port_range_max) \u003d\u003d 65535):"},{"line_number":125,"context_line":"            port_range \u003d netaddr.IPRange(port_range_min, port_range_max)"},{"line_number":126,"context_line":"            key \u003d (\u0027tcp_dst\u0027 if protocol \u003d\u003d n_const.PROTO_NUM_TCP else"},{"line_number":127,"context_line":"                   \u0027udp_dst\u0027 if protocol \u003d\u003d n_const.PROTO_NUM_TCP else None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a95cdbc_6f2f143f","line":124,"range":{"start_line":124,"start_character":0,"end_line":124,"end_character":77},"updated":"2016-10-09 01:58:28.000000000","message":"not (int(port_range_min) \u003d\u003d 1 and int(port_range_max) \u003d\u003d 65535):\nwill always be true, because if not, code will stop at line 122.","commit_id":"a8f97f2f39ad91628b9997a08aeabdaf1fefe50e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"29d540e0f54106a51f005512caeb1216e48d7bcf","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            results \u003d [result_base]"},{"line_number":122,"context_line":"        elif (int(port_range_min) \u003d\u003d 1 and int(port_range_max) \u003d\u003d 65535):"},{"line_number":123,"context_line":"            results \u003d [result_base]"},{"line_number":124,"context_line":"        elif not (int(port_range_min) \u003d\u003d 1 and int(port_range_max) \u003d\u003d 65535):"},{"line_number":125,"context_line":"            port_range \u003d netaddr.IPRange(port_range_min, port_range_max)"},{"line_number":126,"context_line":"            key \u003d (\u0027tcp_dst\u0027 if protocol \u003d\u003d n_const.PROTO_NUM_TCP else"},{"line_number":127,"context_line":"                   \u0027udp_dst\u0027 if protocol \u003d\u003d n_const.PROTO_NUM_TCP else None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a95cdbc_658bb51f","line":124,"range":{"start_line":124,"start_character":0,"end_line":124,"end_character":77},"in_reply_to":"1a95cdbc_4f725812","updated":"2016-10-09 05:31:03.000000000","message":"Yes, this condition does look a bit silly :)\nDone and done.","commit_id":"a8f97f2f39ad91628b9997a08aeabdaf1fefe50e"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"1afd501fadb5fb572e10ec49a7ac356dc36e91bd","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            results \u003d [result_base]"},{"line_number":122,"context_line":"        elif (int(port_range_min) \u003d\u003d 1 and int(port_range_max) \u003d\u003d 65535):"},{"line_number":123,"context_line":"            results \u003d [result_base]"},{"line_number":124,"context_line":"        elif not (int(port_range_min) \u003d\u003d 1 and int(port_range_max) \u003d\u003d 65535):"},{"line_number":125,"context_line":"            port_range \u003d netaddr.IPRange(port_range_min, port_range_max)"},{"line_number":126,"context_line":"            key \u003d (\u0027tcp_dst\u0027 if protocol \u003d\u003d n_const.PROTO_NUM_TCP else"},{"line_number":127,"context_line":"                   \u0027udp_dst\u0027 if protocol \u003d\u003d n_const.PROTO_NUM_TCP else None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a95cdbc_4f725812","line":124,"range":{"start_line":124,"start_character":0,"end_line":124,"end_character":77},"in_reply_to":"1a95cdbc_6f2f143f","updated":"2016-10-09 02:21:42.000000000","message":"And also use constants for these (1, 65535) values.","commit_id":"a8f97f2f39ad91628b9997a08aeabdaf1fefe50e"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"6211bbd53397763065511b4a74f8dd90819c1fc2","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            results \u003d [result_base]"},{"line_number":124,"context_line":"        elif not (int(port_range_min) \u003d\u003d 1 and int(port_range_max) \u003d\u003d 65535):"},{"line_number":125,"context_line":"            port_range \u003d netaddr.IPRange(port_range_min, port_range_max)"},{"line_number":126,"context_line":"            key \u003d (\u0027tcp_dst\u0027 if protocol \u003d\u003d n_const.PROTO_NUM_TCP else"},{"line_number":127,"context_line":"                   \u0027udp_dst\u0027 if protocol \u003d\u003d n_const.PROTO_NUM_TCP else None)"},{"line_number":128,"context_line":"            results \u003d []"},{"line_number":129,"context_line":"            for cidr in port_range.cidrs():"},{"line_number":130,"context_line":"                result \u003d result_base.copy()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a95cdbc_6fd63429","line":127,"range":{"start_line":126,"start_character":0,"end_line":127,"end_character":76},"updated":"2016-10-09 01:58:28.000000000","message":"This is a bit complex here, and the key might be None in the case. So, maybe you could create a static dict for the mapping.","commit_id":"a8f97f2f39ad91628b9997a08aeabdaf1fefe50e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"29d540e0f54106a51f005512caeb1216e48d7bcf","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            results \u003d [result_base]"},{"line_number":124,"context_line":"        elif not (int(port_range_min) \u003d\u003d 1 and int(port_range_max) \u003d\u003d 65535):"},{"line_number":125,"context_line":"            port_range \u003d netaddr.IPRange(port_range_min, port_range_max)"},{"line_number":126,"context_line":"            key \u003d (\u0027tcp_dst\u0027 if protocol \u003d\u003d n_const.PROTO_NUM_TCP else"},{"line_number":127,"context_line":"                   \u0027udp_dst\u0027 if protocol \u003d\u003d n_const.PROTO_NUM_TCP else None)"},{"line_number":128,"context_line":"            results \u003d []"},{"line_number":129,"context_line":"            for cidr in port_range.cidrs():"},{"line_number":130,"context_line":"                result \u003d result_base.copy()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a95cdbc_858e012c","line":127,"range":{"start_line":126,"start_character":0,"end_line":127,"end_character":76},"in_reply_to":"1a95cdbc_6fd63429","updated":"2016-10-09 05:31:03.000000000","message":"Done","commit_id":"a8f97f2f39ad91628b9997a08aeabdaf1fefe50e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"c55039473895adb685b56a50d6b6ae7ca2587459","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        elif name \u003d\u003d n_const.PROTO_NAME_UDP:"},{"line_number":92,"context_line":"            return n_const.PROTO_NUM_UDP"},{"line_number":93,"context_line":"        else:"},{"line_number":94,"context_line":"            raise exceptions.UnsupportedTransportException(name)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _get_rule_flows_match_except_net_addresses(self, secgroup_rule):"},{"line_number":97,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_f644d94a","line":94,"updated":"2016-10-09 10:59:50.000000000","message":"Not sure about this. Looking at the api, both names and protocol number. I\u0027ll have to look into this deeper.","commit_id":"b18494f485607dce90ada14b2dd97bfb4528edb2"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"6a4f7b83cf2ef2fe279b6d90369be56116998cd2","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        \"\"\""},{"line_number":100,"context_line":"        new_cidr_array \u003d cidr_array | (netaddr.IPAddress(address),)"},{"line_number":101,"context_line":"        added_cidr \u003d new_cidr_array - cidr_array"},{"line_number":102,"context_line":"        removed_cidr \u003d cidr_array - new_cidr_array"},{"line_number":103,"context_line":"        return new_cidr_array, added_cidr, removed_cidr"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_29648420","line":102,"range":{"start_line":102,"start_character":8,"end_line":102,"end_character":50},"updated":"2016-10-13 07:09:14.000000000","message":"Actually, IPSet class rewrites the \u0027__sub__\u0027 method, so this removed_cidr will always be empty, and the added_cidr is not what is expected also. For example, cidr_array equals IPSet([\u0027192.168.10.4/32\u0027]), and after a address of \u0027192.168.10.5\u0027 added, new_cidr_array will be IPSet([\u0027192.168.10.4/31\u0027]). By current using of \u0027-\u0027, we will get the added_cidr of IPSet([\u0027192.168.10.5/32\u0027]), and the removed_cidr of IPSet([]). But the added_cidr we really wanted is IPSet([\u0027192.168.10.4/31\u0027])  while the removed_cidr is IPSet([\u0027192.168.10.4/32\u0027]).","commit_id":"8eacb1b6694372c13962b2064be0fad4549bbdd1"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"66088bb69f25b1e246fe696f4c528dc7104a649d","unresolved":false,"context_lines":[{"line_number":446,"context_line":"            for match_item in match_list:"},{"line_number":447,"context_line":"                parameters_merge \u003d match_item.copy()"},{"line_number":448,"context_line":"                parameters_merge[ipv4_match_item] \u003d \\"},{"line_number":449,"context_line":"                    SGApp._get_network_and_mask(added_cidr_item)"},{"line_number":450,"context_line":"                match \u003d parser.OFPMatch(**parameters_merge)"},{"line_number":451,"context_line":"                self.mod_flow("},{"line_number":452,"context_line":"                    self.get_datapath(),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a95cdbc_89751c33","line":449,"range":{"start_line":449,"start_character":20,"end_line":449,"end_character":25},"updated":"2016-10-10 14:35:41.000000000","message":"Why not use \"self\"?","commit_id":"8eacb1b6694372c13962b2064be0fad4549bbdd1"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bcee800cfe28feaf01b56ee616a673340f17204c","unresolved":false,"context_lines":[{"line_number":446,"context_line":"            for match_item in match_list:"},{"line_number":447,"context_line":"                parameters_merge \u003d match_item.copy()"},{"line_number":448,"context_line":"                parameters_merge[ipv4_match_item] \u003d \\"},{"line_number":449,"context_line":"                    SGApp._get_network_and_mask(added_cidr_item)"},{"line_number":450,"context_line":"                match \u003d parser.OFPMatch(**parameters_merge)"},{"line_number":451,"context_line":"                self.mod_flow("},{"line_number":452,"context_line":"                    self.get_datapath(),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a95cdbc_df28b288","line":449,"range":{"start_line":449,"start_character":20,"end_line":449,"end_character":25},"in_reply_to":"1a95cdbc_89751c33","updated":"2016-10-10 14:38:15.000000000","message":"static function, and this code was not modified (strictly speaking).","commit_id":"8eacb1b6694372c13962b2064be0fad4549bbdd1"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"66088bb69f25b1e246fe696f4c528dc7104a649d","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            for match_item in match_list:"},{"line_number":462,"context_line":"                parameters_merge \u003d match_item.copy()"},{"line_number":463,"context_line":"                parameters_merge[ipv4_match_item] \u003d \\"},{"line_number":464,"context_line":"                    SGApp._get_network_and_mask(removed_cidr_item)"},{"line_number":465,"context_line":"                match \u003d parser.OFPMatch(**parameters_merge)"},{"line_number":466,"context_line":"                self.mod_flow("},{"line_number":467,"context_line":"                    datapath\u003dself.get_datapath(),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a95cdbc_89ac3c8d","line":464,"range":{"start_line":464,"start_character":20,"end_line":464,"end_character":25},"updated":"2016-10-10 14:35:41.000000000","message":"Same here","commit_id":"8eacb1b6694372c13962b2064be0fad4549bbdd1"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bcee800cfe28feaf01b56ee616a673340f17204c","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            for match_item in match_list:"},{"line_number":462,"context_line":"                parameters_merge \u003d match_item.copy()"},{"line_number":463,"context_line":"                parameters_merge[ipv4_match_item] \u003d \\"},{"line_number":464,"context_line":"                    SGApp._get_network_and_mask(removed_cidr_item)"},{"line_number":465,"context_line":"                match \u003d parser.OFPMatch(**parameters_merge)"},{"line_number":466,"context_line":"                self.mod_flow("},{"line_number":467,"context_line":"                    datapath\u003dself.get_datapath(),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a95cdbc_1f569a05","line":464,"range":{"start_line":464,"start_character":20,"end_line":464,"end_character":25},"in_reply_to":"1a95cdbc_89ac3c8d","updated":"2016-10-10 14:38:15.000000000","message":"Same reply","commit_id":"8eacb1b6694372c13962b2064be0fad4549bbdd1"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"66088bb69f25b1e246fe696f4c528dc7104a649d","unresolved":false,"context_lines":[{"line_number":706,"context_line":"        addresses \u003d self.secgroup_aggregate_addresses[secgroup_id]"},{"line_number":707,"context_line":"        new_cidr_array, added_cidr, removed_cidr \u003d SGApp._add_one_address("},{"line_number":708,"context_line":"            addresses,"},{"line_number":709,"context_line":"            ip,"},{"line_number":710,"context_line":"        )"},{"line_number":711,"context_line":"        self.secgroup_aggregate_addresses[secgroup_id] \u003d new_cidr_array"},{"line_number":712,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a95cdbc_c4f62b5c","line":709,"range":{"start_line":709,"start_character":14,"end_line":709,"end_character":15},"updated":"2016-10-10 14:35:41.000000000","message":"Is the \",\" necessary?","commit_id":"8eacb1b6694372c13962b2064be0fad4549bbdd1"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bcee800cfe28feaf01b56ee616a673340f17204c","unresolved":false,"context_lines":[{"line_number":706,"context_line":"        addresses \u003d self.secgroup_aggregate_addresses[secgroup_id]"},{"line_number":707,"context_line":"        new_cidr_array, added_cidr, removed_cidr \u003d SGApp._add_one_address("},{"line_number":708,"context_line":"            addresses,"},{"line_number":709,"context_line":"            ip,"},{"line_number":710,"context_line":"        )"},{"line_number":711,"context_line":"        self.secgroup_aggregate_addresses[secgroup_id] \u003d new_cidr_array"},{"line_number":712,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a95cdbc_7f66beed","line":709,"range":{"start_line":709,"start_character":14,"end_line":709,"end_character":15},"in_reply_to":"1a95cdbc_c4f62b5c","updated":"2016-10-10 14:38:15.000000000","message":"No, but it is allowed, and considered good habit in some cases. If I will want to add another parameter to the call to _add_one_address, this line will remain unmodified.","commit_id":"8eacb1b6694372c13962b2064be0fad4549bbdd1"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"66088bb69f25b1e246fe696f4c528dc7104a649d","unresolved":false,"context_lines":[{"line_number":731,"context_line":"            new_cidr_array, added_cidr, removed_cidr \u003d \\"},{"line_number":732,"context_line":"                SGApp._remove_one_address("},{"line_number":733,"context_line":"                    aggregate_addresses_range,"},{"line_number":734,"context_line":"                    ip,"},{"line_number":735,"context_line":"                )"},{"line_number":736,"context_line":"            if not new_cidr_array:"},{"line_number":737,"context_line":"                del self.secgroup_aggregate_addresses[secgroup_id]"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a95cdbc_6470f70b","line":734,"range":{"start_line":734,"start_character":22,"end_line":734,"end_character":23},"updated":"2016-10-10 14:35:41.000000000","message":"Same here","commit_id":"8eacb1b6694372c13962b2064be0fad4549bbdd1"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bcee800cfe28feaf01b56ee616a673340f17204c","unresolved":false,"context_lines":[{"line_number":731,"context_line":"            new_cidr_array, added_cidr, removed_cidr \u003d \\"},{"line_number":732,"context_line":"                SGApp._remove_one_address("},{"line_number":733,"context_line":"                    aggregate_addresses_range,"},{"line_number":734,"context_line":"                    ip,"},{"line_number":735,"context_line":"                )"},{"line_number":736,"context_line":"            if not new_cidr_array:"},{"line_number":737,"context_line":"                del self.secgroup_aggregate_addresses[secgroup_id]"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a95cdbc_df9d12bd","line":734,"range":{"start_line":734,"start_character":22,"end_line":734,"end_character":23},"in_reply_to":"1a95cdbc_6470f70b","updated":"2016-10-10 14:38:15.000000000","message":"Same reply :)","commit_id":"8eacb1b6694372c13962b2064be0fad4549bbdd1"}]}
