)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a41d3a8f24be546def12f00b8a03bef6f020b47d","unresolved":false,"context_lines":[{"line_number":11,"context_line":"patch itroduces a singleton object in memory providing needed interface"},{"line_number":12,"context_line":"for handling local vlan mappings."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-implements: blueprint vlan-aware-vms"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I514c7632c1c26d6cfeb706fc5d829a46dcce3782"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bacf61ea_c61c016d","line":14,"updated":"2016-08-02 20:53:07.000000000","message":"it sounds to me that this refactoring has merit in its own rights whether or not this is used in the context of vlan-aware-vms.","commit_id":"407e97a20a4fed75677bdef1d8783d4eaa036066"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"59d660efce782702fc7a6f826ca54db79561bdc6","unresolved":false,"context_lines":[{"line_number":11,"context_line":"patch itroduces a singleton object in memory providing needed interface"},{"line_number":12,"context_line":"for handling local vlan mappings."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-implements: blueprint vlan-aware-vms"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I514c7632c1c26d6cfeb706fc5d829a46dcce3782"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bacf61ea_9fb999ef","line":14,"in_reply_to":"bacf61ea_c61c016d","updated":"2016-08-03 08:26:23.000000000","message":"Should I just remove this line or open a bug for refactoring?","commit_id":"407e97a20a4fed75677bdef1d8783d4eaa036066"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"940de12310456742fb6fae9bdb913d0d59fd0695","unresolved":false,"context_lines":[{"line_number":11,"context_line":"patch itroduces a singleton object in memory providing needed interface"},{"line_number":12,"context_line":"for handling local vlan mappings."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-implements: blueprint vlan-aware-vms"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I514c7632c1c26d6cfeb706fc5d829a46dcce3782"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bacf61ea_4a153ae3","line":14,"updated":"2016-08-04 21:16:08.000000000","message":"would this effort be beneficial for [1]? If so perhaps you can add that too?\n\n[1] http://docs.openstack.org/developer/python-neutronclient/#using-neutronclient","commit_id":"589460653a5709e7804888680f3be28731d7c569"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"79549c995c9aab015c78d381a5b42b402f9b0ffc","unresolved":false,"context_lines":[{"line_number":11,"context_line":"patch itroduces a singleton object in memory providing needed interface"},{"line_number":12,"context_line":"for handling local vlan mappings."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-implements: blueprint vlan-aware-vms"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I514c7632c1c26d6cfeb706fc5d829a46dcce3782"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bacf61ea_80140ea0","line":14,"in_reply_to":"bacf61ea_4a153ae3","updated":"2016-08-05 13:53:43.000000000","message":"I don\u0027t get it, the vlan manager is a structure inside of ovs agent, it won\u0027t influence neutron client. Can you please elaborate?","commit_id":"589460653a5709e7804888680f3be28731d7c569"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"92dd6b59d007ddfc7b5f26b744d0fd056ae900e6","unresolved":false,"context_lines":[{"line_number":11,"context_line":"patch itroduces a singleton object in memory providing needed interface"},{"line_number":12,"context_line":"for handling local vlan mappings."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-implements: blueprint vlan-aware-vms"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I514c7632c1c26d6cfeb706fc5d829a46dcce3782"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bacf61ea_fd65a8e0","line":14,"in_reply_to":"bacf61ea_80140ea0","updated":"2016-08-05 16:27:07.000000000","message":"doh, wrong paste :)\n\nI meant https://blueprints.launchpad.net/neutron/+spec/l2-api-extensions","commit_id":"589460653a5709e7804888680f3be28731d7c569"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e82cc10ce71255595281de6dee00066dcbb586f0","unresolved":false,"context_lines":[{"line_number":11,"context_line":"patch itroduces a singleton object in memory providing needed interface"},{"line_number":12,"context_line":"for handling local vlan mappings."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-implements: blueprint vlan-aware-vms"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I514c7632c1c26d6cfeb706fc5d829a46dcce3782"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bacf61ea_eb9f74ff","line":14,"in_reply_to":"bacf61ea_fd65a8e0","updated":"2016-08-08 08:07:56.000000000","message":"aha, that makes more sense :) I\u0027ll add it here then.","commit_id":"589460653a5709e7804888680f3be28731d7c569"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"d7c33a701ad4132b4afd458fa96a9743426dff62","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jakub Libosvar \u003clibosvar@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-08-09 12:54:41 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"ovs-agent: Seperate VLAN mapping outside of the agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously, local mapping from tunnel ids or vlan ids to internal vlans"},{"line_number":10,"context_line":"was held in ovs agent itself not exposing this mapping outside. This"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"9ad45d7e_3fa1e0f8","line":7,"range":{"start_line":7,"start_character":14,"end_line":7,"end_character":15},"updated":"2016-08-11 18:03:26.000000000","message":"spelling nit: Separate","commit_id":"a0543fda17852f3119232cf574277b363a5d7d24"}],"neutron/agent/securitygroups_rpc.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"940de12310456742fb6fae9bdb913d0d59fd0695","unresolved":false,"context_lines":[{"line_number":85,"context_line":"class SecurityGroupAgentRpc(object):"},{"line_number":86,"context_line":"    \"\"\"Enables SecurityGroup agent support in agent implementations.\"\"\""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    # TODO(jlibosva): Add deprecation warning"},{"line_number":89,"context_line":"    def __init__(self, context, plugin_rpc, local_vlan_map\u003dNone,"},{"line_number":90,"context_line":"                 defer_refresh_firewall\u003dFalse, integration_bridge\u003dNone):"},{"line_number":91,"context_line":"        self.context \u003d context"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_cadf6a38","line":88,"updated":"2016-08-04 21:16:08.000000000","message":"what\u0027s holding you up?","commit_id":"589460653a5709e7804888680f3be28731d7c569"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"79549c995c9aab015c78d381a5b42b402f9b0ffc","unresolved":false,"context_lines":[{"line_number":85,"context_line":"class SecurityGroupAgentRpc(object):"},{"line_number":86,"context_line":"    \"\"\"Enables SecurityGroup agent support in agent implementations.\"\"\""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    # TODO(jlibosva): Add deprecation warning"},{"line_number":89,"context_line":"    def __init__(self, context, plugin_rpc, local_vlan_map\u003dNone,"},{"line_number":90,"context_line":"                 defer_refresh_firewall\u003dFalse, integration_bridge\u003dNone):"},{"line_number":91,"context_line":"        self.context \u003d context"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_00fbfe79","line":88,"in_reply_to":"bacf61ea_cadf6a38","updated":"2016-08-05 13:53:43.000000000","message":"Lack of knowledge on how to deprecate a parameter :)","commit_id":"589460653a5709e7804888680f3be28731d7c569"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"508b3229e397a5a34c1aff8751352aab9e82ff3d","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.context \u003d context"},{"line_number":92,"context_line":"        self.plugin_rpc \u003d plugin_rpc"},{"line_number":93,"context_line":"        self.init_firewall(defer_refresh_firewall, integration_bridge)"},{"line_number":94,"context_line":"        if local_vlan_map is not None:"},{"line_number":95,"context_line":"            vlanmanager.deprecate_local_vlan_map_in_object("},{"line_number":96,"context_line":"                self.__class__.__name__)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def init_firewall(self, defer_refresh_firewall\u003dFalse,"},{"line_number":99,"context_line":"                      integration_bridge\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_51255ba9","line":96,"range":{"start_line":94,"start_character":8,"end_line":96,"end_character":40},"updated":"2016-08-09 01:32:30.000000000","message":"Is it worth it taking wrapping this into its own function?","commit_id":"63126525bbb982e4ef21f1ad6204452fa2e56b3c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"88e45a8bc70375dd43102333d59bf3318bc9ab6e","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.context \u003d context"},{"line_number":92,"context_line":"        self.plugin_rpc \u003d plugin_rpc"},{"line_number":93,"context_line":"        self.init_firewall(defer_refresh_firewall, integration_bridge)"},{"line_number":94,"context_line":"        if local_vlan_map is not None:"},{"line_number":95,"context_line":"            vlanmanager.deprecate_local_vlan_map_in_object("},{"line_number":96,"context_line":"                self.__class__.__name__)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def init_firewall(self, defer_refresh_firewall\u003dFalse,"},{"line_number":99,"context_line":"                      integration_bridge\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_ad5a6e81","line":96,"range":{"start_line":94,"start_character":8,"end_line":96,"end_character":40},"in_reply_to":"9ad45d7e_51255ba9","updated":"2016-08-09 08:53:56.000000000","message":"Done","commit_id":"63126525bbb982e4ef21f1ad6204452fa2e56b3c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"16e0c08125f9dfabccabf871be198139c5cefc9b","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.context \u003d context"},{"line_number":92,"context_line":"        self.plugin_rpc \u003d plugin_rpc"},{"line_number":93,"context_line":"        self.init_firewall(defer_refresh_firewall, integration_bridge)"},{"line_number":94,"context_line":"        vlanmanager.deprecate_local_vlan_map_in_object(local_vlan_map,"},{"line_number":95,"context_line":"                                                       self.__class__.__name__)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def init_firewall(self, defer_refresh_firewall\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad45d7e_e263c3da","line":94,"updated":"2016-08-09 13:47:07.000000000","message":"I don\u0027t see the value in this deprecation warning because you\u0027ve already broken it by not storing the vlan manager as expected. It would be better to just remove the local_vlan_map argument completely if you\u0027re ignoring it so they get an explicit traceback.","commit_id":"8f344753fa6f0fa7b96fbbb15be5702cbde8aeb9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"aeee57900f8109b8da585bc6641532c9e79c5c81","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.context \u003d context"},{"line_number":92,"context_line":"        self.plugin_rpc \u003d plugin_rpc"},{"line_number":93,"context_line":"        self.init_firewall(defer_refresh_firewall, integration_bridge)"},{"line_number":94,"context_line":"        vlanmanager.deprecate_local_vlan_map_in_object(local_vlan_map,"},{"line_number":95,"context_line":"                                                       self.__class__.__name__)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def init_firewall(self, defer_refresh_firewall\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad45d7e_60422140","line":94,"in_reply_to":"9ad45d7e_7df5b2c9","updated":"2016-08-09 16:44:24.000000000","message":"Done","commit_id":"8f344753fa6f0fa7b96fbbb15be5702cbde8aeb9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"5b4192e2a452e3615367ab194b438d9a00fec619","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.context \u003d context"},{"line_number":92,"context_line":"        self.plugin_rpc \u003d plugin_rpc"},{"line_number":93,"context_line":"        self.init_firewall(defer_refresh_firewall, integration_bridge)"},{"line_number":94,"context_line":"        vlanmanager.deprecate_local_vlan_map_in_object(local_vlan_map,"},{"line_number":95,"context_line":"                                                       self.__class__.__name__)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def init_firewall(self, defer_refresh_firewall\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad45d7e_7df5b2c9","line":94,"in_reply_to":"9ad45d7e_e263c3da","updated":"2016-08-09 14:05:41.000000000","message":"You\u0027re right. Though I think it\u0027s better to issue deprecation warning but I should keep compatibility by keeping L93 from previous version.","commit_id":"8f344753fa6f0fa7b96fbbb15be5702cbde8aeb9"}],"neutron/plugins/ml2/drivers/l2pop/rpc_manager/l2population_rpc.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"940de12310456742fb6fae9bdb913d0d59fd0695","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        \u0027\u0027\u0027"},{"line_number":224,"context_line":"        pass"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    # TODO(jlibosva): Add deprecation warning"},{"line_number":227,"context_line":"    def get_agent_ports(self, fdb_entries, local_vlan_map\u003dNone):"},{"line_number":228,"context_line":"        \"\"\"Generator to yield port info."},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_8a8e122c","line":226,"updated":"2016-08-04 21:16:08.000000000","message":"rather than adding deprecation warning everywhere have you consider turning the existing local_vlan_map into a property accessor and have the deprecation in a single place?","commit_id":"589460653a5709e7804888680f3be28731d7c569"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"79549c995c9aab015c78d381a5b42b402f9b0ffc","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        \u0027\u0027\u0027"},{"line_number":224,"context_line":"        pass"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    # TODO(jlibosva): Add deprecation warning"},{"line_number":227,"context_line":"    def get_agent_ports(self, fdb_entries, local_vlan_map\u003dNone):"},{"line_number":228,"context_line":"        \"\"\"Generator to yield port info."},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_607e3ae5","line":226,"in_reply_to":"bacf61ea_8a8e122c","updated":"2016-08-05 13:53:43.000000000","message":"It\u0027s not about using the attribute but passing local_vlan_map to methods. I want to get rid of that argument in next release.","commit_id":"589460653a5709e7804888680f3be28731d7c569"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"508b3229e397a5a34c1aff8751352aab9e82ff3d","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        :param fdb_entries: l2pop fdb entries"},{"line_number":233,"context_line":"        :param local_vlan_map: Deprecated."},{"line_number":234,"context_line":"        \"\"\""},{"line_number":235,"context_line":"        if local_vlan_map is not None:"},{"line_number":236,"context_line":"            vlanmanager.deprecate_local_vlan_map_in_object("},{"line_number":237,"context_line":"                \"%s.get_agent_ports()\" % self.__class__.__name__)"},{"line_number":238,"context_line":"        vlan_manager \u003d vlanmanager.LocalVlanManager()"},{"line_number":239,"context_line":"        for network_id, values in fdb_entries.items():"},{"line_number":240,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_b13ad7cb","line":237,"range":{"start_line":235,"start_character":0,"end_line":237,"end_character":65},"updated":"2016-08-09 01:32:30.000000000","message":"you seem to repeat it multiple times.","commit_id":"63126525bbb982e4ef21f1ad6204452fa2e56b3c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"88e45a8bc70375dd43102333d59bf3318bc9ab6e","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        :param fdb_entries: l2pop fdb entries"},{"line_number":233,"context_line":"        :param local_vlan_map: Deprecated."},{"line_number":234,"context_line":"        \"\"\""},{"line_number":235,"context_line":"        if local_vlan_map is not None:"},{"line_number":236,"context_line":"            vlanmanager.deprecate_local_vlan_map_in_object("},{"line_number":237,"context_line":"                \"%s.get_agent_ports()\" % self.__class__.__name__)"},{"line_number":238,"context_line":"        vlan_manager \u003d vlanmanager.LocalVlanManager()"},{"line_number":239,"context_line":"        for network_id, values in fdb_entries.items():"},{"line_number":240,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_ed546655","line":237,"range":{"start_line":235,"start_character":0,"end_line":237,"end_character":65},"in_reply_to":"9ad45d7e_b13ad7cb","updated":"2016-08-09 08:53:56.000000000","message":"Done","commit_id":"63126525bbb982e4ef21f1ad6204452fa2e56b3c"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"508b3229e397a5a34c1aff8751352aab9e82ff3d","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        :param local_ip: local IP address of this agent."},{"line_number":313,"context_line":"        :param local_vlan_map: Deprecated."},{"line_number":314,"context_line":"        \u0027\u0027\u0027"},{"line_number":315,"context_line":"        if local_vlan_map is not None:"},{"line_number":316,"context_line":"            vlanmanager.deprecate_local_vlan_map_in_object("},{"line_number":317,"context_line":"                \"%s.fdb_chg_ip_tun()\" % self.__class__.__name__)"},{"line_number":318,"context_line":"        vlan_manager \u003d vlanmanager.LocalVlanManager()"},{"line_number":319,"context_line":"        for network_id, agent_ports in fdb_entries.items():"},{"line_number":320,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_9137d3e2","line":317,"range":{"start_line":315,"start_character":8,"end_line":317,"end_character":64},"updated":"2016-08-09 01:32:30.000000000","message":"here too.","commit_id":"63126525bbb982e4ef21f1ad6204452fa2e56b3c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"88e45a8bc70375dd43102333d59bf3318bc9ab6e","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        :param local_ip: local IP address of this agent."},{"line_number":313,"context_line":"        :param local_vlan_map: Deprecated."},{"line_number":314,"context_line":"        \u0027\u0027\u0027"},{"line_number":315,"context_line":"        if local_vlan_map is not None:"},{"line_number":316,"context_line":"            vlanmanager.deprecate_local_vlan_map_in_object("},{"line_number":317,"context_line":"                \"%s.fdb_chg_ip_tun()\" % self.__class__.__name__)"},{"line_number":318,"context_line":"        vlan_manager \u003d vlanmanager.LocalVlanManager()"},{"line_number":319,"context_line":"        for network_id, agent_ports in fdb_entries.items():"},{"line_number":320,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_cd51a264","line":317,"range":{"start_line":315,"start_character":8,"end_line":317,"end_character":64},"in_reply_to":"9ad45d7e_9137d3e2","updated":"2016-08-09 08:53:56.000000000","message":"Done","commit_id":"63126525bbb982e4ef21f1ad6204452fa2e56b3c"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"16e0c08125f9dfabccabf871be198139c5cefc9b","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        vlanmanager.deprecate_local_vlan_map_in_object("},{"line_number":316,"context_line":"            local_vlan_map,"},{"line_number":317,"context_line":"            \"%s.fdb_chg_ip_tun()\" % self.__class__.__name__)"},{"line_number":318,"context_line":"        vlan_manager \u003d vlanmanager.LocalVlanManager()"},{"line_number":319,"context_line":"        for network_id, agent_ports in fdb_entries.items():"},{"line_number":320,"context_line":"            try:"},{"line_number":321,"context_line":"                lvm \u003d vlan_manager.get(network_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad45d7e_229cbbbf","line":318,"updated":"2016-08-09 13:47:07.000000000","message":"if this is a deprecation, you have to honor local_vlan_map if it\u0027s passed in. This means that you will need to make this code compatible with either an old map or the manager. So L321 will have to check for None and catch an exception.\n\n\nOtherwise this is going to immediately break out of tree plugins:\n\nhttp://git.openstack.org/cgit/openstack/networking-ofagent/tree/networking_ofagent/plugins/ofagent/agent/ofa_neutron_agent.py#n354","commit_id":"8f344753fa6f0fa7b96fbbb15be5702cbde8aeb9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"5b4192e2a452e3615367ab194b438d9a00fec619","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        vlanmanager.deprecate_local_vlan_map_in_object("},{"line_number":316,"context_line":"            local_vlan_map,"},{"line_number":317,"context_line":"            \"%s.fdb_chg_ip_tun()\" % self.__class__.__name__)"},{"line_number":318,"context_line":"        vlan_manager \u003d vlanmanager.LocalVlanManager()"},{"line_number":319,"context_line":"        for network_id, agent_ports in fdb_entries.items():"},{"line_number":320,"context_line":"            try:"},{"line_number":321,"context_line":"                lvm \u003d vlan_manager.get(network_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad45d7e_7d1c9213","line":318,"in_reply_to":"9ad45d7e_229cbbbf","updated":"2016-08-09 14:05:41.000000000","message":"Thanks for catching this!","commit_id":"8f344753fa6f0fa7b96fbbb15be5702cbde8aeb9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"aeee57900f8109b8da585bc6641532c9e79c5c81","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        vlanmanager.deprecate_local_vlan_map_in_object("},{"line_number":316,"context_line":"            local_vlan_map,"},{"line_number":317,"context_line":"            \"%s.fdb_chg_ip_tun()\" % self.__class__.__name__)"},{"line_number":318,"context_line":"        vlan_manager \u003d vlanmanager.LocalVlanManager()"},{"line_number":319,"context_line":"        for network_id, agent_ports in fdb_entries.items():"},{"line_number":320,"context_line":"            try:"},{"line_number":321,"context_line":"                lvm \u003d vlan_manager.get(network_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad45d7e_4d911652","line":318,"in_reply_to":"9ad45d7e_7d1c9213","updated":"2016-08-09 16:44:24.000000000","message":"Done","commit_id":"8f344753fa6f0fa7b96fbbb15be5702cbde8aeb9"}],"neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"b3cfd2aa9e5340e62fbc7d63771bb93554267855","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            connection, constants.EXTENSION_DRIVER_TYPE,"},{"line_number":385,"context_line":"            self.agent_api)"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    def get_net_uuid(self, vif_id):"},{"line_number":388,"context_line":"        for network_id, vlan_mapping in self.vlan_manager.items():"},{"line_number":389,"context_line":"            if vif_id in vlan_mapping.vif_ports:"},{"line_number":390,"context_line":"                return network_id"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_61a79c0b","line":387,"updated":"2016-08-04 14:27:30.000000000","message":"we can move this method inside the VlanManager...","commit_id":"407e97a20a4fed75677bdef1d8783d4eaa036066"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0cb976db9d543041f817cb940857b45a19b8a99d","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            connection, constants.EXTENSION_DRIVER_TYPE,"},{"line_number":385,"context_line":"            self.agent_api)"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    def get_net_uuid(self, vif_id):"},{"line_number":388,"context_line":"        for network_id, vlan_mapping in self.vlan_manager.items():"},{"line_number":389,"context_line":"            if vif_id in vlan_mapping.vif_ports:"},{"line_number":390,"context_line":"                return network_id"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_edd53de5","line":387,"in_reply_to":"bacf61ea_61a79c0b","updated":"2016-08-04 14:51:53.000000000","message":"Done","commit_id":"407e97a20a4fed75677bdef1d8783d4eaa036066"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"874f8dda854388eec158c83e964a662cfe832124","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        self._restore_local_vlan_map()"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        # Security group agent support"},{"line_number":230,"context_line":"        self.sg_agent \u003d sg_rpc.SecurityGroupAgentRpc("},{"line_number":231,"context_line":"            self.context, self.sg_plugin_rpc, defer_refresh_firewall\u003dTrue,"},{"line_number":232,"context_line":"            integration_bridge\u003dself.int_br)"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_4280cf46","line":230,"updated":"2016-08-09 13:47:15.000000000","message":"Ah, didn\u0027t notice the arg change. More comments on this in the next patchset.","commit_id":"79ee035f73a2ae82321d1124531cd4359e50acec"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"74d6226149ba68aceee3c75d255c81d427778354","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        self._restore_local_vlan_map()"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        # Security group agent support"},{"line_number":230,"context_line":"        self.sg_agent \u003d sg_rpc.SecurityGroupAgentRpc("},{"line_number":231,"context_line":"            self.context, self.sg_plugin_rpc, defer_refresh_firewall\u003dTrue,"},{"line_number":232,"context_line":"            integration_bridge\u003dself.int_br)"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_b2fda63c","line":230,"updated":"2016-08-09 10:08:00.000000000","message":"unrelated change","commit_id":"79ee035f73a2ae82321d1124531cd4359e50acec"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"12836c5540164357968e5fe73dc2cb134de3abe6","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        self._restore_local_vlan_map()"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        # Security group agent support"},{"line_number":230,"context_line":"        self.sg_agent \u003d sg_rpc.SecurityGroupAgentRpc("},{"line_number":231,"context_line":"            self.context, self.sg_plugin_rpc, defer_refresh_firewall\u003dTrue,"},{"line_number":232,"context_line":"            integration_bridge\u003dself.int_br)"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_04bb8ce6","line":230,"in_reply_to":"9ad45d7e_b2fda63c","updated":"2016-08-09 12:09:39.000000000","message":"It removes self.local_vlan_map as we don\u0027t need to pass it anymore since it\u0027s singleton in memory.","commit_id":"79ee035f73a2ae82321d1124531cd4359e50acec"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"16e0c08125f9dfabccabf871be198139c5cefc9b","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    word_fmt \u003d \u0027%.2x\u0027"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"class LocalVLANMapping(object):"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def __init__(self, vlan, network_type, physical_network, segmentation_id,"},{"line_number":77,"context_line":"                 vif_ports\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad45d7e_029ff7b4","side":"PARENT","line":74,"updated":"2016-08-09 13:47:07.000000000","message":"Removing this object is going to break out of tree plugins. Please deprecate instead:\n\nhttp://git.openstack.org/cgit/openstack/networking-vsphere/tree/networking_vsphere/agent/ovsvapp_agent.py#n463","commit_id":"17d85e4748f05b9785686f1164b6a4fe2963b8eb"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"5b4192e2a452e3615367ab194b438d9a00fec619","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    word_fmt \u003d \u0027%.2x\u0027"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"class LocalVLANMapping(object):"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def __init__(self, vlan, network_type, physical_network, segmentation_id,"},{"line_number":77,"context_line":"                 vif_ports\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad45d7e_5db54eec","side":"PARENT","line":74,"in_reply_to":"9ad45d7e_029ff7b4","updated":"2016-08-09 14:05:41.000000000","message":"Done","commit_id":"17d85e4748f05b9785686f1164b6a4fe2963b8eb"}],"neutron/plugins/ml2/drivers/openvswitch/agent/vlanmanager.py":[{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"b3cfd2aa9e5340e62fbc7d63771bb93554267855","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        for item in self.mapping.items():"},{"line_number":70,"context_line":"            yield item"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def add(self, net_id, vlan, network_type, physical_network,"},{"line_number":73,"context_line":"            segmentation_id, vif_ports\u003dNone):"},{"line_number":74,"context_line":"        self.mapping[net_id] \u003d LocalVLANMapping("},{"line_number":75,"context_line":"            vlan, network_type, physical_network, segmentation_id, vif_ports)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_523864a0","line":72,"updated":"2016-08-04 14:27:30.000000000","message":"this is a bit tricky but if somebody tries to override an entry we should raise. The caller of VlanManager should check if the key is there before inserting a new one but we should enforce that, otherwise we might end up with 2 say extensions that might use a different vlan for the same network.","commit_id":"407e97a20a4fed75677bdef1d8783d4eaa036066"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0cb976db9d543041f817cb940857b45a19b8a99d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        for item in self.mapping.items():"},{"line_number":70,"context_line":"            yield item"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def add(self, net_id, vlan, network_type, physical_network,"},{"line_number":73,"context_line":"            segmentation_id, vif_ports\u003dNone):"},{"line_number":74,"context_line":"        self.mapping[net_id] \u003d LocalVLANMapping("},{"line_number":75,"context_line":"            vlan, network_type, physical_network, segmentation_id, vif_ports)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_4d2c4902","line":72,"in_reply_to":"bacf61ea_523864a0","updated":"2016-08-04 14:51:53.000000000","message":"Done","commit_id":"407e97a20a4fed75677bdef1d8783d4eaa036066"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"940de12310456742fb6fae9bdb913d0d59fd0695","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        return id(self)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class VlanManager(object):"},{"line_number":61,"context_line":"    \"\"\"Singleton manager that maps internal VLAN mapping to external network"},{"line_number":62,"context_line":"    segmentation ids."},{"line_number":63,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_ca000a69","line":60,"updated":"2016-08-04 21:16:08.000000000","message":"should this be called LocalVlanManager? I know...it\u0027s a little longer.","commit_id":"589460653a5709e7804888680f3be28731d7c569"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"79549c995c9aab015c78d381a5b42b402f9b0ffc","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        return id(self)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class VlanManager(object):"},{"line_number":61,"context_line":"    \"\"\"Singleton manager that maps internal VLAN mapping to external network"},{"line_number":62,"context_line":"    segmentation ids."},{"line_number":63,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_e06a2a19","line":60,"in_reply_to":"bacf61ea_ca000a69","updated":"2016-08-05 13:53:43.000000000","message":"Done","commit_id":"589460653a5709e7804888680f3be28731d7c569"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"874f8dda854388eec158c83e964a662cfe832124","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                (self.vlan, self.network_type, self.physical_network,"},{"line_number":54,"context_line":"                 self.segmentation_id))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __eq__(self, other):"},{"line_number":57,"context_line":"        is_equal \u003d True"},{"line_number":58,"context_line":"        for attr in [\u0027vlan\u0027, \u0027network_type\u0027, \u0027physical_network\u0027,"},{"line_number":59,"context_line":"                     \u0027segmentation_id\u0027, \u0027vif_ports\u0027]:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_0286d764","line":56,"updated":"2016-08-09 13:47:15.000000000","message":"No, that wouldn\u0027t be consistent with what is normally expected from an equality check.\n\n1 \u003d\u003d \u0027a\u0027\nFalse","commit_id":"79ee035f73a2ae82321d1124531cd4359e50acec"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"74d6226149ba68aceee3c75d255c81d427778354","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                (self.vlan, self.network_type, self.physical_network,"},{"line_number":54,"context_line":"                 self.segmentation_id))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __eq__(self, other):"},{"line_number":57,"context_line":"        is_equal \u003d True"},{"line_number":58,"context_line":"        for attr in [\u0027vlan\u0027, \u0027network_type\u0027, \u0027physical_network\u0027,"},{"line_number":59,"context_line":"                     \u0027segmentation_id\u0027, \u0027vif_ports\u0027]:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_72032e43","line":56,"updated":"2016-08-09 10:08:00.000000000","message":"The _UNDEFINED object is unnecessary.\n\nreturn all(hasattr(other, a) and getattr(self, a) \u003d\u003d getattr(other, a)\n           for a in [\u0027vlan\u0027, \u0027network_type\u0027, \u0027phsyical_network\u0027,\n                     \u0027segmentation_id\u0027, \u0027vif_ports\u0027])","commit_id":"79ee035f73a2ae82321d1124531cd4359e50acec"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f4a105d33c1183d4a50d46ca4088a1865a3b385d","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                (self.vlan, self.network_type, self.physical_network,"},{"line_number":54,"context_line":"                 self.segmentation_id))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __eq__(self, other):"},{"line_number":57,"context_line":"        is_equal \u003d True"},{"line_number":58,"context_line":"        for attr in [\u0027vlan\u0027, \u0027network_type\u0027, \u0027physical_network\u0027,"},{"line_number":59,"context_line":"                     \u0027segmentation_id\u0027, \u0027vif_ports\u0027]:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_a4028009","line":56,"in_reply_to":"9ad45d7e_24397042","updated":"2016-08-09 12:16:34.000000000","message":"Maybe we should raise a TypeError when comparing apples to oranges.","commit_id":"79ee035f73a2ae82321d1124531cd4359e50acec"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"12836c5540164357968e5fe73dc2cb134de3abe6","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                (self.vlan, self.network_type, self.physical_network,"},{"line_number":54,"context_line":"                 self.segmentation_id))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __eq__(self, other):"},{"line_number":57,"context_line":"        is_equal \u003d True"},{"line_number":58,"context_line":"        for attr in [\u0027vlan\u0027, \u0027network_type\u0027, \u0027physical_network\u0027,"},{"line_number":59,"context_line":"                     \u0027segmentation_id\u0027, \u0027vif_ports\u0027]:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_24397042","line":56,"in_reply_to":"9ad45d7e_72032e43","updated":"2016-08-09 12:09:39.000000000","message":"Done","commit_id":"79ee035f73a2ae82321d1124531cd4359e50acec"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"74d6226149ba68aceee3c75d255c81d427778354","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                return network_id"},{"line_number":104,"context_line":"        raise VifIdNotFound(vif_id\u003dvif_id)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def get(self, key):"},{"line_number":107,"context_line":"        return self.mapping[key]"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def pop(self, key):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_52feea38","line":106,"updated":"2016-08-09 10:08:00.000000000","message":"I don\u0027t understand why you aren\u0027t just calling .get on the dictionary here. It\u0027s leaking KeyErrors to the users of this manager which is an implementation detail of this using a dict. Just leave it returning None to maintain the semantics of \u0027.get\u0027 or turn it into a VlanManager-specific exception if you are going to force callers to catch exceptions.","commit_id":"79ee035f73a2ae82321d1124531cd4359e50acec"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"874f8dda854388eec158c83e964a662cfe832124","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                return network_id"},{"line_number":104,"context_line":"        raise VifIdNotFound(vif_id\u003dvif_id)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def get(self, key):"},{"line_number":107,"context_line":"        return self.mapping[key]"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def pop(self, key):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_627d136e","line":106,"updated":"2016-08-09 13:47:15.000000000","message":"Right in the definition it says it comes from a dictionary, but the caller to this function doesn\u0027t think they are working with a dictionary. And if they did think they were working with a dictionary they certainly wouldn\u0027t expect a KeyError when calling \u0027.get()\u0027, which is expected to return None!","commit_id":"79ee035f73a2ae82321d1124531cd4359e50acec"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"12836c5540164357968e5fe73dc2cb134de3abe6","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                return network_id"},{"line_number":104,"context_line":"        raise VifIdNotFound(vif_id\u003dvif_id)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def get(self, key):"},{"line_number":107,"context_line":"        return self.mapping[key]"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def pop(self, key):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad45d7e_c44fb4bb","line":106,"in_reply_to":"9ad45d7e_52feea38","updated":"2016-08-09 12:09:39.000000000","message":"I consider KeyError generic exception, not strictly tied with dictionaries, doc says: \"Raised when a mapping (dictionary) key is not found in the set of existing keys.\"\n\nI\u0027ll try to implement a custom exception.","commit_id":"79ee035f73a2ae82321d1124531cd4359e50acec"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"16e0c08125f9dfabccabf871be198139c5cefc9b","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                 self.segmentation_id))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def __eq__(self, other):"},{"line_number":59,"context_line":"        if not isinstance(other, LocalVLANMapping):"},{"line_number":60,"context_line":"            raise TypeError(_(\"Incompatible type %s with LocalVLANMapping\") %"},{"line_number":61,"context_line":"                            type(other))"},{"line_number":62,"context_line":"        return all(getattr(self, attr) \u003d\u003d getattr(other, attr)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad45d7e_c25e7f11","line":59,"updated":"2016-08-09 13:47:07.000000000","message":"see comment on previous patch. Breaking equality comparisons with a TypeError because of a type mismatch is not normal. It forces people to check for None as a separate step.","commit_id":"8f344753fa6f0fa7b96fbbb15be5702cbde8aeb9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"5b4192e2a452e3615367ab194b438d9a00fec619","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                 self.segmentation_id))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def __eq__(self, other):"},{"line_number":59,"context_line":"        if not isinstance(other, LocalVLANMapping):"},{"line_number":60,"context_line":"            raise TypeError(_(\"Incompatible type %s with LocalVLANMapping\") %"},{"line_number":61,"context_line":"                            type(other))"},{"line_number":62,"context_line":"        return all(getattr(self, attr) \u003d\u003d getattr(other, attr)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad45d7e_fda402ba","line":59,"in_reply_to":"9ad45d7e_c25e7f11","updated":"2016-08-09 14:05:41.000000000","message":"Stupid me :)","commit_id":"8f344753fa6f0fa7b96fbbb15be5702cbde8aeb9"}],"neutron/service.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bcb9b1e805deceb109a02653483a9f96bacceab7","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    service_plugins \u003d ("},{"line_number":151,"context_line":"        manager.NeutronManager.get_service_plugins().values())"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"#    if cfg.CONF.rpc_workers \u003c 1:"},{"line_number":154,"context_line":"#        cfg.CONF.set_override(\u0027rpc_workers\u0027, 1)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    # If 0 \u003c rpc_workers then start_rpc_listeners would be called in a"}],"source_content_type":"text/x-python","patch_set":5,"id":"bacf61ea_0215fbe3","line":153,"range":{"start_line":153,"start_character":0,"end_line":153,"end_character":33},"updated":"2016-08-04 15:07:49.000000000","message":"Ooops :)","commit_id":"8e0d0f32ae1c1b460e632bae16357949e336cf96"}],"neutron/tests/unit/plugins/ml2/drivers/l2pop/rpc_manager/l2population_rpc_base.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"508b3229e397a5a34c1aff8751352aab9e82ff3d","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        }"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        self.vlan_manager \u003d self.useFixture("},{"line_number":117,"context_line":"            test_vlanmanager.LocalVlanManagerFixture()).manager"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        for i in range(3):"},{"line_number":120,"context_line":"            self.vlan_manager.add("}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_11d5a342","line":117,"range":{"start_line":117,"start_character":29,"end_line":117,"end_character":52},"updated":"2016-08-09 01:32:30.000000000","message":"are you sure this is the best place for this fixture?","commit_id":"63126525bbb982e4ef21f1ad6204452fa2e56b3c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"88e45a8bc70375dd43102333d59bf3318bc9ab6e","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        }"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        self.vlan_manager \u003d self.useFixture("},{"line_number":117,"context_line":"            test_vlanmanager.LocalVlanManagerFixture()).manager"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        for i in range(3):"},{"line_number":120,"context_line":"            self.vlan_manager.add("}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_4d4f7292","line":117,"range":{"start_line":117,"start_character":29,"end_line":117,"end_character":52},"in_reply_to":"9ad45d7e_11d5a342","updated":"2016-08-09 08:53:56.000000000","message":"You mean we should create it earlier before FakeAgent()?","commit_id":"63126525bbb982e4ef21f1ad6204452fa2e56b3c"}],"neutron/tests/unit/plugins/ml2/drivers/l2pop/rpc_manager/test_l2population_rpc.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"508b3229e397a5a34c1aff8751352aab9e82ff3d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    l2population_rpc_base.TestL2populationRpcCallBackTunnelMixinBase):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def test_get_agent_ports_no_data(self):"},{"line_number":28,"context_line":"        self.vlan_manager.mapping \u003d {}"},{"line_number":29,"context_line":"        self.assertFalse("},{"line_number":30,"context_line":"            list(self.fakeagent.get_agent_ports(self.fdb_entries1)))"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_91c19383","line":28,"updated":"2016-08-09 01:32:30.000000000","message":"help me see it: where is this coming from?","commit_id":"63126525bbb982e4ef21f1ad6204452fa2e56b3c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"85a243b4c411359b73d5c3a1659215f0324aee63","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    l2population_rpc_base.TestL2populationRpcCallBackTunnelMixinBase):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def test_get_agent_ports_no_data(self):"},{"line_number":28,"context_line":"        self.vlan_manager.mapping \u003d {}"},{"line_number":29,"context_line":"        self.assertFalse("},{"line_number":30,"context_line":"            list(self.fakeagent.get_agent_ports(self.fdb_entries1)))"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_28778c3b","line":28,"in_reply_to":"9ad45d7e_081ba873","updated":"2016-08-09 08:57:44.000000000","message":"Ah, the setUp() populates vlan manager with data: https://review.openstack.org/#/c/349990/8/neutron/tests/unit/plugins/ml2/drivers/l2pop/rpc_manager/l2population_rpc_base.py@120 so we need to clear out all the mappings.","commit_id":"63126525bbb982e4ef21f1ad6204452fa2e56b3c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"88e45a8bc70375dd43102333d59bf3318bc9ab6e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    l2population_rpc_base.TestL2populationRpcCallBackTunnelMixinBase):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def test_get_agent_ports_no_data(self):"},{"line_number":28,"context_line":"        self.vlan_manager.mapping \u003d {}"},{"line_number":29,"context_line":"        self.assertFalse("},{"line_number":30,"context_line":"            list(self.fakeagent.get_agent_ports(self.fdb_entries1)))"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_081ba873","line":28,"in_reply_to":"9ad45d7e_91c19383","updated":"2016-08-09 08:53:56.000000000","message":"Previously, we passed local_vlan_map to get_agent_ports() (see on the right side removed {}). This clears the mapping on vlan manager, so get_agent_ports() is called with empty mapping in vlanmanager - that reflects the former test case.\n\nIt\u0027s here to explicitly clear the mapping. Do you think comment here is better?","commit_id":"63126525bbb982e4ef21f1ad6204452fa2e56b3c"}],"neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_vlanmanager.py":[{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"b3cfd2aa9e5340e62fbc7d63771bb93554267855","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    def _setUp(self):"},{"line_number":25,"context_line":"        super(VlanManagerFixture, self)._setUp()"},{"line_number":26,"context_line":"        self.vlan_manager \u003d vlanmanager.VlanManager()"},{"line_number":27,"context_line":"        del vlanmanager.VlanManager._instance"},{"line_number":28,"context_line":"        self.manager \u003d vlanmanager.VlanManager()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def restore_manager(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_3e2dc146","line":27,"updated":"2016-08-04 14:27:30.000000000","message":"I don\u0027t get this del here :/","commit_id":"407e97a20a4fed75677bdef1d8783d4eaa036066"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0cb976db9d543041f817cb940857b45a19b8a99d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    def _setUp(self):"},{"line_number":25,"context_line":"        super(VlanManagerFixture, self)._setUp()"},{"line_number":26,"context_line":"        self.vlan_manager \u003d vlanmanager.VlanManager()"},{"line_number":27,"context_line":"        del vlanmanager.VlanManager._instance"},{"line_number":28,"context_line":"        self.manager \u003d vlanmanager.VlanManager()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def restore_manager(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_2d663551","line":27,"in_reply_to":"bacf61ea_3e2dc146","updated":"2016-08-04 14:51:53.000000000","message":"That\u0027s to have a unique singleton object per test - otherwise line below would always return the same object. I\u0027ll add a comment here.","commit_id":"407e97a20a4fed75677bdef1d8783d4eaa036066"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"f4ca34dfdfb23938a666d36d21f7a6e6c830cb0d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        # Remove _instance attribute from VlanManager in order to not obtain a"},{"line_number":28,"context_line":"        # singleton"},{"line_number":29,"context_line":"        del vlanmanager.VlanManager._instance"},{"line_number":30,"context_line":"        self.manager \u003d vlanmanager.VlanManager()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def restore_manager(self):"},{"line_number":33,"context_line":"        vlanmanager.VlanManager._instance \u003d self.vlan_manager"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_b2c5275d","line":30,"updated":"2016-08-05 13:45:57.000000000","message":"is this used?","commit_id":"589460653a5709e7804888680f3be28731d7c569"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"4bd3c30bd896275bae27ab37cd53de93151a5f27","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        # Remove _instance attribute from VlanManager in order to not obtain a"},{"line_number":28,"context_line":"        # singleton"},{"line_number":29,"context_line":"        del vlanmanager.VlanManager._instance"},{"line_number":30,"context_line":"        self.manager \u003d vlanmanager.VlanManager()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def restore_manager(self):"},{"line_number":33,"context_line":"        vlanmanager.VlanManager._instance \u003d self.vlan_manager"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_2099e279","line":30,"in_reply_to":"bacf61ea_b2c5275d","updated":"2016-08-05 13:50:42.000000000","message":"Yes, on L40","commit_id":"589460653a5709e7804888680f3be28731d7c569"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"f4ca34dfdfb23938a666d36d21f7a6e6c830cb0d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        del vlanmanager.VlanManager._instance"},{"line_number":30,"context_line":"        self.manager \u003d vlanmanager.VlanManager()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def restore_manager(self):"},{"line_number":33,"context_line":"        vlanmanager.VlanManager._instance \u003d self.vlan_manager"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_72cf2f7f","line":32,"updated":"2016-08-05 13:45:57.000000000","message":"is this used?","commit_id":"589460653a5709e7804888680f3be28731d7c569"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"4bd3c30bd896275bae27ab37cd53de93151a5f27","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        del vlanmanager.VlanManager._instance"},{"line_number":30,"context_line":"        self.manager \u003d vlanmanager.VlanManager()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def restore_manager(self):"},{"line_number":33,"context_line":"        vlanmanager.VlanManager._instance \u003d self.vlan_manager"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_8091ae49","line":32,"in_reply_to":"bacf61ea_72cf2f7f","updated":"2016-08-05 13:50:42.000000000","message":"Good catch, there is missing self.addCleanup(self.restore_manager) on L31","commit_id":"589460653a5709e7804888680f3be28731d7c569"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"508b3229e397a5a34c1aff8751352aab9e82ff3d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        super(LocalVlanManagerFixture, self)._setUp()"},{"line_number":26,"context_line":"        self.vlan_manager \u003d vlanmanager.LocalVlanManager()"},{"line_number":27,"context_line":"        self.addCleanup(self.restore_manager)"},{"line_number":28,"context_line":"        # Remove _instance attribute from VlanManager in order to not obtain a"},{"line_number":29,"context_line":"        # singleton"},{"line_number":30,"context_line":"        del vlanmanager.LocalVlanManager._instance"},{"line_number":31,"context_line":"        self.manager \u003d vlanmanager.LocalVlanManager()"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_71417f0b","line":28,"updated":"2016-08-09 01:32:30.000000000","message":"let\u0027s hope we rooted out all chances for test contention ;)","commit_id":"63126525bbb982e4ef21f1ad6204452fa2e56b3c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"88e45a8bc70375dd43102333d59bf3318bc9ab6e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        super(LocalVlanManagerFixture, self)._setUp()"},{"line_number":26,"context_line":"        self.vlan_manager \u003d vlanmanager.LocalVlanManager()"},{"line_number":27,"context_line":"        self.addCleanup(self.restore_manager)"},{"line_number":28,"context_line":"        # Remove _instance attribute from VlanManager in order to not obtain a"},{"line_number":29,"context_line":"        # singleton"},{"line_number":30,"context_line":"        del vlanmanager.LocalVlanManager._instance"},{"line_number":31,"context_line":"        self.manager \u003d vlanmanager.LocalVlanManager()"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_a8f37c09","line":28,"in_reply_to":"9ad45d7e_71417f0b","updated":"2016-08-09 08:53:56.000000000","message":"Should we add a test for the fixture? :D","commit_id":"63126525bbb982e4ef21f1ad6204452fa2e56b3c"}]}
