)]}'
{"dragonflow/controller/df_local_controller.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"cf58fa82cbfca8d9e849201fb664c9e19b33b335","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            self.db_consistency_manager.add_handler(handler)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def _register_models(self):"},{"line_number":207,"context_line":"        self._register_legacy_model_refreshers()"},{"line_number":208,"context_line":"        self._register_legacy_model_consistency_handlers()"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        for model in model_framework.iter_models():"},{"line_number":211,"context_line":"            # FIXME (dimak) do not register topicless models for now"},{"line_number":212,"context_line":"            if issubclass(model, mixins.Topic):"},{"line_number":213,"context_line":"                df_db_objects_refresh.add_refresher("},{"line_number":214,"context_line":"                    df_db_objects_refresh.DfObjectRefresher("},{"line_number":215,"context_line":"                        model.__name__,"},{"line_number":216,"context_line":"                        functools.partial(self.db_store2.get_keys_by_topic,"},{"line_number":217,"context_line":"                                          model),"},{"line_number":218,"context_line":"                        functools.partial(self.nb_api.get_all, model),"},{"line_number":219,"context_line":"                        self.update,"},{"line_number":220,"context_line":"                        functools.partial(self.delete_by_id, model),"},{"line_number":221,"context_line":"                    ),"},{"line_number":222,"context_line":"                )"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"                if (self.enable_db_consistency and"},{"line_number":225,"context_line":"                        issubclass(model, mixins.Version)):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a30ddce_25f56456","line":222,"range":{"start_line":207,"start_character":0,"end_line":222,"end_character":17},"updated":"2017-03-10 10:00:26.000000000","message":"The change will make the lport get updated before lswitch. So, when lport is processed, there is no lswitch in local cache and lport will not be processed.","commit_id":"34f9ee4b09936ab2c2d4057489bdd57e0c4be85e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"311d3d98d9f856a6b730459b715107ab27688b9e","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            self.db_consistency_manager.add_handler(handler)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def _register_models(self):"},{"line_number":207,"context_line":"        self._register_legacy_model_refreshers()"},{"line_number":208,"context_line":"        self._register_legacy_model_consistency_handlers()"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        for model in model_framework.iter_models():"},{"line_number":211,"context_line":"            # FIXME (dimak) do not register topicless models for now"},{"line_number":212,"context_line":"            if issubclass(model, mixins.Topic):"},{"line_number":213,"context_line":"                df_db_objects_refresh.add_refresher("},{"line_number":214,"context_line":"                    df_db_objects_refresh.DfObjectRefresher("},{"line_number":215,"context_line":"                        model.__name__,"},{"line_number":216,"context_line":"                        functools.partial(self.db_store2.get_keys_by_topic,"},{"line_number":217,"context_line":"                                          model),"},{"line_number":218,"context_line":"                        functools.partial(self.nb_api.get_all, model),"},{"line_number":219,"context_line":"                        self.update,"},{"line_number":220,"context_line":"                        functools.partial(self.delete_by_id, model),"},{"line_number":221,"context_line":"                    ),"},{"line_number":222,"context_line":"                )"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"                if (self.enable_db_consistency and"},{"line_number":225,"context_line":"                        issubclass(model, mixins.Version)):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_0551ae0e","line":222,"range":{"start_line":207,"start_character":0,"end_line":222,"end_character":17},"in_reply_to":"9a30ddce_25f56456","updated":"2017-03-19 12:32:51.000000000","message":"I\u0027ll switch the order. Any migrated model should already have all the models it depends on migrated too.","commit_id":"34f9ee4b09936ab2c2d4057489bdd57e0c4be85e"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0098814d9ed98f650f2aaad8aaabba7c1901ac34","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def _logical_port_process(self, lport, original_lport\u003dNone):"},{"line_number":305,"context_line":"        lswitch \u003d self.db_store2.get_one("},{"line_number":306,"context_line":"            l2.LogicalSwitch(id\u003dlport.get_lswitch_id()))"},{"line_number":307,"context_line":"        if not lswitch:"},{"line_number":308,"context_line":"            LOG.warning(_LW(\"Could not find lswitch for lport: %s\"),"},{"line_number":309,"context_line":"                        lport.get_id())"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_604090a6","line":306,"range":{"start_line":306,"start_character":38,"end_line":306,"end_character":54},"updated":"2017-03-19 15:46:59.000000000","message":"nit: lport.id","commit_id":"57d21db42827ba3e805c3b3932db18ddcfc8ee6f"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ca3cfd6c8cc68210ac7ce2aad04f68edf338d74f","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def _logical_port_process(self, lport, original_lport\u003dNone):"},{"line_number":305,"context_line":"        lswitch \u003d self.db_store2.get_one("},{"line_number":306,"context_line":"            l2.LogicalSwitch(id\u003dlport.get_lswitch_id()))"},{"line_number":307,"context_line":"        if not lswitch:"},{"line_number":308,"context_line":"            LOG.warning(_LW(\"Could not find lswitch for lport: %s\"),"},{"line_number":309,"context_line":"                        lport.get_id())"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_e8c46260","line":306,"range":{"start_line":306,"start_character":38,"end_line":306,"end_character":54},"in_reply_to":"1a1ced50_604090a6","updated":"2017-03-20 03:15:56.000000000","message":"I don\u0027t think that\u0027s right. We want the lswitch attached to the lport. Its ID is lport.get_lswitch_id().\n\nIn any case, this will become \u0027lswitch \u003d lport.lswitch\u0027 once the lport move is made.","commit_id":"57d21db42827ba3e805c3b3932db18ddcfc8ee6f"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"b40bab144e4ffb3131911c38cece34bfe00e1a4e","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def _logical_port_process(self, lport, original_lport\u003dNone):"},{"line_number":305,"context_line":"        lswitch \u003d self.db_store2.get_one("},{"line_number":306,"context_line":"            l2.LogicalSwitch(id\u003dlport.get_lswitch_id()))"},{"line_number":307,"context_line":"        if not lswitch:"},{"line_number":308,"context_line":"            LOG.warning(_LW(\"Could not find lswitch for lport: %s\"),"},{"line_number":309,"context_line":"                        lport.get_id())"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_1df9f980","line":306,"range":{"start_line":306,"start_character":38,"end_line":306,"end_character":54},"in_reply_to":"1a1ced50_e8c46260","updated":"2017-03-20 08:29:06.000000000","message":"Oh, sorry, you\u0027re right. Missed that.","commit_id":"57d21db42827ba3e805c3b3932db18ddcfc8ee6f"}],"dragonflow/controller/dhcp_app.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"118580f4dabcbd4045cfbb8e8cae5d2ee1f74c03","unresolved":false,"context_lines":[{"line_number":476,"context_line":"    def _is_ipv4(self, subnet):"},{"line_number":477,"context_line":"        try:"},{"line_number":478,"context_line":"            return subnet.cidr.version \u003d\u003d 4"},{"line_number":479,"context_line":"        except TypeError:"},{"line_number":480,"context_line":"            return False"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    def _block_port_dhcp_traffic(self, unique_key, hard_timeout):"},{"line_number":483,"context_line":"        match \u003d self.parser.OFPMatch(reg6\u003dunique_key)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ffe62b97_2857b25a","line":480,"range":{"start_line":479,"start_character":0,"end_line":480,"end_character":24},"updated":"2017-03-29 02:46:58.000000000","message":"The type error is not likely to happen in new code.","commit_id":"ca783a9a516f9ac87740237d750d3bd7542da3f1"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d860cf03aa962e059c2e70866b51b52e0b56621e","unresolved":false,"context_lines":[{"line_number":476,"context_line":"    def _is_ipv4(self, subnet):"},{"line_number":477,"context_line":"        try:"},{"line_number":478,"context_line":"            return subnet.cidr.version \u003d\u003d 4"},{"line_number":479,"context_line":"        except TypeError:"},{"line_number":480,"context_line":"            return False"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    def _block_port_dhcp_traffic(self, unique_key, hard_timeout):"},{"line_number":483,"context_line":"        match \u003d self.parser.OFPMatch(reg6\u003dunique_key)"}],"source_content_type":"text/x-python","patch_set":14,"id":"dfeb2761_1146cf50","line":480,"range":{"start_line":479,"start_character":0,"end_line":480,"end_character":24},"in_reply_to":"ffe62b97_2857b25a","updated":"2017-04-03 07:40:55.000000000","message":"Done","commit_id":"ca783a9a516f9ac87740237d750d3bd7542da3f1"}],"dragonflow/controller/dnat_app.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"118580f4dabcbd4045cfbb8e8cae5d2ee1f74c03","unresolved":false,"context_lines":[{"line_number":523,"context_line":"    def _update_floatingip_gateway(self, fip, lswitch):"},{"line_number":524,"context_line":"        subnets \u003d lswitch.subnets"},{"line_number":525,"context_line":"        for subnet in subnets:"},{"line_number":526,"context_line":"            if subnet.cidr \u003d\u003d fip.get_external_cidr():"},{"line_number":527,"context_line":"                # external gateway ip changed"},{"line_number":528,"context_line":"                if subnet.gateway_ip !\u003d fip.get_external_gateway_ip():"},{"line_number":529,"context_line":"                    fip.set_external_gateway_ip(subnet.gateway_ip)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ffe62b97_f3a9ba8f","line":526,"range":{"start_line":526,"start_character":15,"end_line":526,"end_character":26},"updated":"2017-03-29 02:46:58.000000000","message":"subnet.cidr is a netaddr.IPNetwork object, fip.get_external_cidr() is a string for now. The \"\u003d\u003d\" might not work here.","commit_id":"ca783a9a516f9ac87740237d750d3bd7542da3f1"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d860cf03aa962e059c2e70866b51b52e0b56621e","unresolved":false,"context_lines":[{"line_number":523,"context_line":"    def _update_floatingip_gateway(self, fip, lswitch):"},{"line_number":524,"context_line":"        subnets \u003d lswitch.subnets"},{"line_number":525,"context_line":"        for subnet in subnets:"},{"line_number":526,"context_line":"            if subnet.cidr \u003d\u003d fip.get_external_cidr():"},{"line_number":527,"context_line":"                # external gateway ip changed"},{"line_number":528,"context_line":"                if subnet.gateway_ip !\u003d fip.get_external_gateway_ip():"},{"line_number":529,"context_line":"                    fip.set_external_gateway_ip(subnet.gateway_ip)"}],"source_content_type":"text/x-python","patch_set":14,"id":"dfeb2761_d1ece72a","line":526,"range":{"start_line":526,"start_character":15,"end_line":526,"end_character":26},"in_reply_to":"ffe62b97_f3a9ba8f","updated":"2017-04-03 07:40:55.000000000","message":"Done","commit_id":"ca783a9a516f9ac87740237d750d3bd7542da3f1"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"118580f4dabcbd4045cfbb8e8cae5d2ee1f74c03","unresolved":false,"context_lines":[{"line_number":525,"context_line":"        for subnet in subnets:"},{"line_number":526,"context_line":"            if subnet.cidr \u003d\u003d fip.get_external_cidr():"},{"line_number":527,"context_line":"                # external gateway ip changed"},{"line_number":528,"context_line":"                if subnet.gateway_ip !\u003d fip.get_external_gateway_ip():"},{"line_number":529,"context_line":"                    fip.set_external_gateway_ip(subnet.gateway_ip)"},{"line_number":530,"context_line":"                    return fip"},{"line_number":531,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":14,"id":"ffe62b97_b397b248","line":528,"range":{"start_line":528,"start_character":16,"end_line":528,"end_character":70},"updated":"2017-03-29 02:46:58.000000000","message":"Similar comment here.","commit_id":"ca783a9a516f9ac87740237d750d3bd7542da3f1"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d860cf03aa962e059c2e70866b51b52e0b56621e","unresolved":false,"context_lines":[{"line_number":525,"context_line":"        for subnet in subnets:"},{"line_number":526,"context_line":"            if subnet.cidr \u003d\u003d fip.get_external_cidr():"},{"line_number":527,"context_line":"                # external gateway ip changed"},{"line_number":528,"context_line":"                if subnet.gateway_ip !\u003d fip.get_external_gateway_ip():"},{"line_number":529,"context_line":"                    fip.set_external_gateway_ip(subnet.gateway_ip)"},{"line_number":530,"context_line":"                    return fip"},{"line_number":531,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":14,"id":"dfeb2761_91f65ff9","line":528,"range":{"start_line":528,"start_character":16,"end_line":528,"end_character":70},"in_reply_to":"ffe62b97_b397b248","updated":"2017-04-03 07:40:55.000000000","message":"Done","commit_id":"ca783a9a516f9ac87740237d750d3bd7542da3f1"}],"dragonflow/db/models/l2.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"cf58fa82cbfca8d9e849201fb664c9e19b33b335","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@mf.construct_nb_db_model"},{"line_number":23,"context_line":"class HostRoute(mf.ModelBase):"},{"line_number":24,"context_line":"    id \u003d None"},{"line_number":25,"context_line":"    destination \u003d df_fields.IpNetworkField(required\u003dTrue)"},{"line_number":26,"context_line":"    nexthop \u003d df_fields.IpAddressField(required\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a30ddce_838c8d36","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":30},"updated":"2017-03-10 10:00:26.000000000","message":"This should be in a common place, as l3 and bgp might also use it.","commit_id":"34f9ee4b09936ab2c2d4057489bdd57e0c4be85e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"311d3d98d9f856a6b730459b715107ab27688b9e","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@mf.construct_nb_db_model"},{"line_number":23,"context_line":"class HostRoute(mf.ModelBase):"},{"line_number":24,"context_line":"    id \u003d None"},{"line_number":25,"context_line":"    destination \u003d df_fields.IpNetworkField(required\u003dTrue)"},{"line_number":26,"context_line":"    nexthop \u003d df_fields.IpAddressField(required\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_455ba62e","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":30},"in_reply_to":"9a30ddce_838c8d36","updated":"2017-03-19 12:32:51.000000000","message":"Will move.","commit_id":"34f9ee4b09936ab2c2d4057489bdd57e0c4be85e"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"4115ec55d53267cb3fbf88519409188071e157d1","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from dragonflow.db.models import qos"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"@mf.register_model"},{"line_number":24,"context_line":"@mf.construct_nb_db_model"},{"line_number":25,"context_line":"class Subnet(mf.ModelBase, mixins.Name, mixins.Topic):"},{"line_number":26,"context_line":"    enable_dhcp \u003d fields.BoolField()"}],"source_content_type":"text/x-python","patch_set":13,"id":"ffe62b97_90c5205e","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":18},"updated":"2017-03-27 11:36:45.000000000","message":"Do you intent to elevate Subnet to a first class model? If so, table_name should be defined.","commit_id":"487b6127a7bbcacd5d781551f9761f70b1fee866"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d4136c9027dabf6074b667fb27b436afc6be0bb2","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from dragonflow.db.models import qos"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"@mf.register_model"},{"line_number":24,"context_line":"@mf.construct_nb_db_model"},{"line_number":25,"context_line":"class Subnet(mf.ModelBase, mixins.Name, mixins.Topic):"},{"line_number":26,"context_line":"    enable_dhcp \u003d fields.BoolField()"}],"source_content_type":"text/x-python","patch_set":13,"id":"ffe62b97_d0ccc862","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":18},"in_reply_to":"ffe62b97_90c5205e","updated":"2017-03-27 11:37:35.000000000","message":"No. Will remove.","commit_id":"487b6127a7bbcacd5d781551f9761f70b1fee866"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"590068563b7b5ace48676e1e0a09fbf21ef79279","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self.subnets.append(subnet)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def remove_subnet(self, subnet_id):"},{"line_number":59,"context_line":"        for idx, subnet in enumerate(self.subnets):"},{"line_number":60,"context_line":"            if subnet.id \u003d\u003d subnet_id:"},{"line_number":61,"context_line":"                return self.subnets.pop(idx)"}],"source_content_type":"text/x-python","patch_set":14,"id":"dfeb2761_17b81574","line":61,"range":{"start_line":59,"start_character":0,"end_line":61,"end_character":44},"updated":"2017-04-01 09:27:43.000000000","message":"This is something of removing elements inside iteration. Although it will not cause error in the list scenario, it is better to remove items in other way. For example:\n\nself.subnets[:] \u003d [subnet for subnet in self.subnets if subnet.id !\u003d subnet_id]","commit_id":"ca783a9a516f9ac87740237d750d3bd7542da3f1"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d860cf03aa962e059c2e70866b51b52e0b56621e","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self.subnets.append(subnet)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def remove_subnet(self, subnet_id):"},{"line_number":59,"context_line":"        for idx, subnet in enumerate(self.subnets):"},{"line_number":60,"context_line":"            if subnet.id \u003d\u003d subnet_id:"},{"line_number":61,"context_line":"                return self.subnets.pop(idx)"}],"source_content_type":"text/x-python","patch_set":14,"id":"dfeb2761_f1e92b1a","line":61,"range":{"start_line":59,"start_character":0,"end_line":61,"end_character":44},"in_reply_to":"dfeb2761_17b81574","updated":"2017-04-03 07:40:55.000000000","message":"I am not sure I understand the problem:\n\n* The iteration ends when the item is found (No more calls to iterator from enumerate after the list has changed)\n\n* We always iterate a list, since we iterate our own self.subnets\n\n* We want to return the removed item. That will require two iterations using the recommended solution here\n\n* We can assume each subnet (identified by id) appears only once. So we don\u0027t have to worry about removing only the first item.\n\nI can change it if you insist, but I think the code is all right as it is.","commit_id":"ca783a9a516f9ac87740237d750d3bd7542da3f1"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"955a1bd3e533a914c4af014821bdabf3fae87889","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    def remove_subnet(self, subnet_id):"},{"line_number":59,"context_line":"        for idx, subnet in enumerate(self.subnets):"},{"line_number":60,"context_line":"            if subnet.id \u003d\u003d subnet_id:"},{"line_number":61,"context_line":"                return self.subnets.pop(idx)"}],"source_content_type":"text/x-python","patch_set":15,"id":"dfeb2761_6c565e5f","line":61,"range":{"start_line":61,"start_character":0,"end_line":61,"end_character":44},"updated":"2017-04-03 08:17:37.000000000","message":"Never mind, I overlook the \"return\" here, and I thought you want to pop all items with id \u003d\u003d subnet_id (That was something I wanted to do when I thought of this piece of code).","commit_id":"8d54eeb4209d22b54b20c7fb12ad0b4a3e642fc7"}],"dragonflow/tests/unit/test_app_base.py":[{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"b40bab144e4ffb3131911c38cece34bfe00e1a4e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.topology \u003d self.controller.topology \u003d topology.Topology("},{"line_number":49,"context_line":"            self.controller, enable_selective_topo_dist)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        # CLear old objects from cache"},{"line_number":52,"context_line":"        db_store2._instance \u003d None"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        # Add basic network topology"},{"line_number":55,"context_line":"        self.controller.update(fake_logic_switch1)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_20c5ae8d","line":52,"range":{"start_line":51,"start_character":0,"end_line":52,"end_character":34},"updated":"2017-03-20 08:29:06.000000000","message":"Already handled by https://review.openstack.org/#/c/441930. Since it was moved a few lines above it won\u0027t conflict with this and we might end up with this happening twice.","commit_id":"57d21db42827ba3e805c3b3932db18ddcfc8ee6f"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"9f9a532bdeabd4dae47b664a5fdc942fc86f75fd","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            self.controller, enable_selective_topo_dist)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # CLear old objects from cache"},{"line_number":56,"context_line":"        db_store2._instance \u003d None"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        # Add basic network topology"},{"line_number":59,"context_line":"        self.controller.update(fake_logic_switch1)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a1ced50_009d1259","line":56,"updated":"2017-03-20 08:30:09.000000000","message":"Comment from PS5 applies here.","commit_id":"28c804eb862ec51ddaa243c340926b676a7e3b51"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0efd467106e27150a7f5aaa58b29acebb95ee21e","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            self.controller, enable_selective_topo_dist)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # CLear old objects from cache"},{"line_number":56,"context_line":"        db_store2._instance \u003d None"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        # Add basic network topology"},{"line_number":59,"context_line":"        self.controller.update(fake_logic_switch1)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a1ced50_e60c8e96","line":56,"in_reply_to":"1a1ced50_009d1259","updated":"2017-03-20 09:30:42.000000000","message":"Sorry - missed the comment from PS5. Will fix.","commit_id":"28c804eb862ec51ddaa243c340926b676a7e3b51"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"e6e3ddbe4591f4830da0ad0af9953e4acde3b67d","unresolved":false,"context_lines":[{"line_number":93,"context_line":"fake_lswitch_default_subnets \u003d [l2.Subnet(dhcp_ip\u003d\"10.0.0.2\","},{"line_number":94,"context_line":"                                          name\u003d\"private-subnet\","},{"line_number":95,"context_line":"                                          enable_dhcp\u003dTrue,"},{"line_number":96,"context_line":"                                          # lswitch\u003d\"fake_switch1\","},{"line_number":97,"context_line":"                                          topic\u003d\"fake_tenant1\","},{"line_number":98,"context_line":"                                          gateway_ip\u003d\"10.0.0.1\","},{"line_number":99,"context_line":"                                          cidr\u003d\"10.0.0.0/24\","}],"source_content_type":"text/x-python","patch_set":17,"id":"dfeb2761_00008900","line":96,"range":{"start_line":96,"start_character":0,"end_line":96,"end_character":67},"updated":"2017-04-04 10:09:59.000000000","message":"Please remove this comment","commit_id":"cf73c07cc8c126d49ba24640de15df36e48e1564"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"2cad52b3529f9dfdcb6847e74dbab71278933dfc","unresolved":false,"context_lines":[{"line_number":93,"context_line":"fake_lswitch_default_subnets \u003d [l2.Subnet(dhcp_ip\u003d\"10.0.0.2\","},{"line_number":94,"context_line":"                                          name\u003d\"private-subnet\","},{"line_number":95,"context_line":"                                          enable_dhcp\u003dTrue,"},{"line_number":96,"context_line":"                                          # lswitch\u003d\"fake_switch1\","},{"line_number":97,"context_line":"                                          topic\u003d\"fake_tenant1\","},{"line_number":98,"context_line":"                                          gateway_ip\u003d\"10.0.0.1\","},{"line_number":99,"context_line":"                                          cidr\u003d\"10.0.0.0/24\","}],"source_content_type":"text/x-python","patch_set":17,"id":"dfeb2761_6badede7","line":96,"range":{"start_line":96,"start_character":0,"end_line":96,"end_character":67},"in_reply_to":"dfeb2761_00008900","updated":"2017-04-04 14:14:15.000000000","message":"Done","commit_id":"cf73c07cc8c126d49ba24640de15df36e48e1564"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"e6e3ddbe4591f4830da0ad0af9953e4acde3b67d","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"external_switch1_subnets \u003d [l2.Subnet(name\u003d\"public-subnet\","},{"line_number":116,"context_line":"                                      enable_dhcp\u003dFalse,"},{"line_number":117,"context_line":"                                      # lswitch\u003d\"fake_external_switch1\","},{"line_number":118,"context_line":"                                      topic\u003d\"fake_tenant1\","},{"line_number":119,"context_line":"                                      gateway_ip\u003d\"172.24.4.1\","},{"line_number":120,"context_line":"                                      cidr\u003d\"172.24.4.0/24\","}],"source_content_type":"text/x-python","patch_set":17,"id":"dfeb2761_e0024509","line":117,"range":{"start_line":117,"start_character":0,"end_line":117,"end_character":72},"updated":"2017-04-04 10:09:59.000000000","message":"ditto","commit_id":"cf73c07cc8c126d49ba24640de15df36e48e1564"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"2cad52b3529f9dfdcb6847e74dbab71278933dfc","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"external_switch1_subnets \u003d [l2.Subnet(name\u003d\"public-subnet\","},{"line_number":116,"context_line":"                                      enable_dhcp\u003dFalse,"},{"line_number":117,"context_line":"                                      # lswitch\u003d\"fake_external_switch1\","},{"line_number":118,"context_line":"                                      topic\u003d\"fake_tenant1\","},{"line_number":119,"context_line":"                                      gateway_ip\u003d\"172.24.4.1\","},{"line_number":120,"context_line":"                                      cidr\u003d\"172.24.4.0/24\","}],"source_content_type":"text/x-python","patch_set":17,"id":"dfeb2761_2bb3654f","line":117,"range":{"start_line":117,"start_character":0,"end_line":117,"end_character":72},"in_reply_to":"dfeb2761_e0024509","updated":"2017-04-04 14:14:15.000000000","message":"Done","commit_id":"cf73c07cc8c126d49ba24640de15df36e48e1564"}],"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":"cf58fa82cbfca8d9e849201fb664c9e19b33b335","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from dragonflow.controller.common import constants as const"},{"line_number":26,"context_line":"from dragonflow.tests.unit import test_app_base"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class Option(object):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a30ddce_a3ac31a1","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":29},"updated":"2017-03-10 10:00:26.000000000","message":"This is redundant.","commit_id":"34f9ee4b09936ab2c2d4057489bdd57e0c4be85e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"311d3d98d9f856a6b730459b715107ab27688b9e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from dragonflow.controller.common import constants as const"},{"line_number":26,"context_line":"from dragonflow.tests.unit import test_app_base"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class Option(object):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_a5637adb","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":29},"in_reply_to":"9a30ddce_a3ac31a1","updated":"2017-03-19 12:32:51.000000000","message":"Will remove.","commit_id":"34f9ee4b09936ab2c2d4057489bdd57e0c4be85e"}],"dragonflow/tests/unit/test_topology.py":[{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"ee1b800b9bd0f402bfdf82506f3e507bf87d4013","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    :type instances:    iterable of instances"},{"line_number":32,"context_line":"    \"\"\""},{"line_number":33,"context_line":"    alls \u003d {}"},{"line_number":34,"context_line":"    for instance in instances:"},{"line_number":35,"context_line":"        try:"},{"line_number":36,"context_line":"            alls[instance.__class__].append(instance)"},{"line_number":37,"context_line":"        except KeyError:"},{"line_number":38,"context_line":"            alls[instance.__class__] \u003d [instance]"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def nb_api_get_all(inst, topic\u003dNone):"},{"line_number":41,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":18,"id":"bff0334d_f5e2702f","line":38,"range":{"start_line":34,"start_character":0,"end_line":38,"end_character":49},"updated":"2017-04-05 18:48:54.000000000","message":"nit: alls.setdefault(type(instance), []).append(instance)","commit_id":"bf30e2e9a0a29291a867e7e2eeccdcf7c2217285"}]}
