)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"9d0379f24b8a715413c76117ffe0481e5dbd0d1c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Roey Chen \u003croeyc@mellanox.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-05-22 17:21:50 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"MLNX Agent: Process port_update notifications in the main agent loop"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closes-Bug: #1279655"},{"line_number":10,"context_line":"Change-Id: I63dda60cb3cf171e5e9111a1ecf95e45e1d86362"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5adbc538_9f73eeb0","line":7,"updated":"2014-05-26 05:35:14.000000000","message":"Please provide reference like in https://review.openstack.org/#/c/62875/","commit_id":"12a87bc0f255412aa43fbdc21ce384d89adca396"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"befb6e2145dd23e64a78d108b891ace0c563c22b","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Closes-Bug: 1279655"},{"line_number":21,"context_line":"Change-Id: I63dda60cb3cf171e5e9111a1ecf95e45e1d86362"},{"line_number":22,"context_line":"Signed-off-by: Roey Chen \u003croeyc@mellanox.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"baada198_fafd1e09","line":22,"updated":"2014-08-11 14:44:14.000000000","message":"OpenStack doesn\u0027t require or use \"Signed-off-by\" lines in commits. You\u0027ve already signed the CLA to get to the point of proposing this commit.","commit_id":"fa5eb301dc83f15a30bc40344caca26183147f59"}],"neutron/plugins/mlnx/agent/eswitch_neutron_agent.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"9d0379f24b8a715413c76117ffe0481e5dbd0d1c","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        resync_a \u003d False"},{"line_number":268,"context_line":"        resync_b \u003d False"},{"line_number":269,"context_line":"        if \u0027security_groups\u0027 in port_info and port_info.get(\u0027updated\u0027):"},{"line_number":270,"context_line":"            self.refresh_firewall()"},{"line_number":271,"context_line":"        device_added_updated \u003d port_info[\u0027added\u0027] | port_info[\u0027updated\u0027]"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        if device_added_updated:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5adbc538_df3d76bd","line":270,"updated":"2014-05-26 05:35:14.000000000","message":"No security groups support , so no need to refresh, according to previous method, there is no key \u0027security_groups\u0027 in the port_info dictionary","commit_id":"12a87bc0f255412aa43fbdc21ce384d89adca396"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"9d0379f24b8a715413c76117ffe0481e5dbd0d1c","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            start \u003d time.time()"},{"line_number":275,"context_line":"            resync_a \u003d self.treat_devices_added_or_updated(device_added_updated)"},{"line_number":276,"context_line":"            LOG.debug(_(\"process_network_ports - treat_device_added_or_updated \""},{"line_number":277,"context_line":"                        \"completed in %.3f\"), time.time() - start)"},{"line_number":278,"context_line":"        if port_info[\u0027removed\u0027]:"},{"line_number":279,"context_line":"            start \u003d time.time()"},{"line_number":280,"context_line":"            resync_b \u003d self.treat_devices_removed(port_info[\u0027removed\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"5adbc538_bf67cae9","line":277,"updated":"2014-05-26 05:35:14.000000000","message":"Why this log is needed?","commit_id":"12a87bc0f255412aa43fbdc21ce384d89adca396"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"9d0379f24b8a715413c76117ffe0481e5dbd0d1c","unresolved":false,"context_lines":[{"line_number":278,"context_line":"        if port_info[\u0027removed\u0027]:"},{"line_number":279,"context_line":"            start \u003d time.time()"},{"line_number":280,"context_line":"            resync_b \u003d self.treat_devices_removed(port_info[\u0027removed\u0027])"},{"line_number":281,"context_line":"            LOG.debug(_(\"process_network_ports - treat_device_removed \""},{"line_number":282,"context_line":"                        \"completed in %.3f\"), time.time() - start)"},{"line_number":283,"context_line":"        # If one of the above opertaions fails \u003d\u003e resync with plugin"},{"line_number":284,"context_line":"        return (resync_a | resync_b)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5adbc538_df6496e7","line":281,"updated":"2014-05-26 05:35:14.000000000","message":"Why this log is needed?","commit_id":"12a87bc0f255412aa43fbdc21ce384d89adca396"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"9d0379f24b8a715413c76117ffe0481e5dbd0d1c","unresolved":false,"context_lines":[{"line_number":303,"context_line":"    def treat_devices_added_or_updated(self, devices):"},{"line_number":304,"context_line":"        resync \u003d False"},{"line_number":305,"context_line":"        for device in devices:"},{"line_number":306,"context_line":"            LOG.info(_(\"Adding port with mac %s\"), device)"},{"line_number":307,"context_line":"            try:"},{"line_number":308,"context_line":"                dev_details \u003d self.plugin_rpc.get_device_details("},{"line_number":309,"context_line":"                    self.context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5adbc538_bf398ada","line":306,"updated":"2014-05-26 05:35:14.000000000","message":"Adding or updating","commit_id":"12a87bc0f255412aa43fbdc21ce384d89adca396"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"9d0379f24b8a715413c76117ffe0481e5dbd0d1c","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                if dev_details.get(\u0027admin_state_up\u0027):"},{"line_number":329,"context_line":"                    LOG.debug(_(\"Setting status for %s to UP\"), device)"},{"line_number":330,"context_line":"                    self.plugin_rpc.update_device_up("},{"line_number":331,"context_line":"                        self.context, device, self.agent_id, cfg.CONF.host)"},{"line_number":332,"context_line":"                else:"},{"line_number":333,"context_line":"                    LOG.debug(_(\"Setting status for %s to DOWN\"), device)"},{"line_number":334,"context_line":"                    self.plugin_rpc.update_device_down("}],"source_content_type":"text/x-python","patch_set":2,"id":"5adbc538_3f4d7a73","line":331,"updated":"2014-05-26 05:35:14.000000000","message":"Why use host from config?","commit_id":"12a87bc0f255412aa43fbdc21ce384d89adca396"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"9d0379f24b8a715413c76117ffe0481e5dbd0d1c","unresolved":false,"context_lines":[{"line_number":380,"context_line":""},{"line_number":381,"context_line":"            try:"},{"line_number":382,"context_line":"                port_info \u003d self.scan_ports(ports)"},{"line_number":383,"context_line":"                # notify plugin about port deltas"},{"line_number":384,"context_line":"                LOG.debug(_(\"Agent loop process devices!\"))"},{"line_number":385,"context_line":"                # If treat devices fails - must resync with plugin"},{"line_number":386,"context_line":"                ports \u003d port_info[\u0027current\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5adbc538_5f2b2682","line":383,"updated":"2014-05-26 05:35:14.000000000","message":"Comment is confusing, there is no notifications","commit_id":"12a87bc0f255412aa43fbdc21ce384d89adca396"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"9d0379f24b8a715413c76117ffe0481e5dbd0d1c","unresolved":false,"context_lines":[{"line_number":396,"context_line":"            except Exception:"},{"line_number":397,"context_line":"                LOG.exception(_(\"Error in agent event loop\"))"},{"line_number":398,"context_line":"                sync \u003d True"},{"line_number":399,"context_line":"                # Put the pors back in self.updated_ports"},{"line_number":400,"context_line":"                self.updated_ports |\u003d updated_ports"},{"line_number":401,"context_line":"            # sleep till end of polling interval"},{"line_number":402,"context_line":"            elapsed \u003d (time.time() - start)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5adbc538_3f265abb","line":399,"updated":"2014-05-26 05:35:14.000000000","message":"The comment is not required, code is self explained","commit_id":"12a87bc0f255412aa43fbdc21ce384d89adca396"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"f12410f65015ccc05d5b28c2c659b41761c5d441","unresolved":false,"context_lines":[{"line_number":316,"context_line":"                                    dev_details[\u0027segmentation_id\u0027],"},{"line_number":317,"context_line":"                                    dev_details[\u0027admin_state_up\u0027])"},{"line_number":318,"context_line":"                if dev_details.get(\u0027admin_state_up\u0027):"},{"line_number":319,"context_line":"                    LOG.debug(_(\"Setting status for %s to UP\"), device)"},{"line_number":320,"context_line":"                    self.plugin_rpc.update_device_up("},{"line_number":321,"context_line":"                        self.context, device, self.agent_id)"},{"line_number":322,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_1c4df1c4","line":319,"updated":"2014-06-17 11:06:41.000000000","message":"According to https://github.com/openstack/neutron/blob/master/HACKING.rst, debug messages do not require translation anymore.\nCan you please remove it?","commit_id":"f4e3cda10ed976374bf304060230994c7ef121d3"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"17365e447274ac72022527ff119032a4ccee1101","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        self._setup_rpc()"},{"line_number":210,"context_line":"        self.init_firewall()"},{"line_number":211,"context_line":"        # Stores port update notifications for processing in main rpc loop"},{"line_number":212,"context_line":"        self.updated_ports \u003d set()"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def _setup_eswitches(self, interface_mapping):"},{"line_number":215,"context_line":"        daemon \u003d cfg.CONF.ESWITCH.daemon_endpoint"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_f2f6a98f","line":212,"updated":"2014-06-17 13:52:20.000000000","message":"this should be before _setup_rpc() call above.\ncf. commit 717a0a0ab4436e2904360fe4e34226af7d0e412d","commit_id":"9d9f0aae66cfd0cb108d966e5271c02e278ce845"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"927a9c4d3588add51c56bb432ebe3a79a39141b6","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            except Exception as e:"},{"line_number":294,"context_line":"                LOG.debug(_(\"Unable to get device dev_details for device \""},{"line_number":295,"context_line":"                          \"with mac_address %(device)s: due to %(exc)s\"),"},{"line_number":296,"context_line":"                          {\u0027device\u0027: device, \u0027exc\u0027: e})"},{"line_number":297,"context_line":"                resync \u003d True"},{"line_number":298,"context_line":"                continue"},{"line_number":299,"context_line":"            if \u0027port_id\u0027 in dev_details:"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_16777009","line":296,"updated":"2014-07-31 08:31:51.000000000","message":"do not localize debug logs.","commit_id":"363631459c17be7b0e28c96907ca60e69e3c697b"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"61f72ac818e36434dd9c2a81c0a4259adaec1339","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            self.eswitch.remove_network(network_id)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def port_update(self, context, **kwargs):"},{"line_number":171,"context_line":"        port \u003d kwargs.get(\u0027port\u0027)"},{"line_number":172,"context_line":"        self.agent.add_port_update(port[\u0027mac_address\u0027])"},{"line_number":173,"context_line":"        LOG.debug(\"port_update message processed for port with mac %s\","},{"line_number":174,"context_line":"                  port[\u0027mac_address\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"baada198_946fca60","line":171,"updated":"2014-08-08 18:27:39.000000000","message":"nitpicking: why are you still using kwargs?","commit_id":"66304856d45742cc652447b1854f0287665e4a0f"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"9f2ec2aebd5ce7b53645ebc04ab8fd049d1e2519","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            self.eswitch.remove_network(network_id)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def port_update(self, context, **kwargs):"},{"line_number":171,"context_line":"        port \u003d kwargs.get(\u0027port\u0027)"},{"line_number":172,"context_line":"        self.agent.add_port_update(port[\u0027mac_address\u0027])"},{"line_number":173,"context_line":"        LOG.debug(\"port_update message processed for port with mac %s\","},{"line_number":174,"context_line":"                  port[\u0027mac_address\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"baada198_2dc4e90c","line":171,"in_reply_to":"baada198_946fca60","updated":"2014-08-09 07:39:50.000000000","message":"What do you mean?","commit_id":"66304856d45742cc652447b1854f0287665e4a0f"}],"neutron/tests/unit/mlnx/test_mlnx_neutron_agent.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"9d0379f24b8a715413c76117ffe0481e5dbd0d1c","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                                                             updated_ports)"},{"line_number":174,"context_line":"                device_removed.assert_called_once_with(removed_ports)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def test_add_port_update(self):"},{"line_number":177,"context_line":"        mac_addr \u003d \u002710:20:30:40:50:60\u0027"},{"line_number":178,"context_line":"        self.agent.add_port_update(mac_addr)"},{"line_number":179,"context_line":"        self.assertEqual(set([mac_addr]), self.agent.updated_ports)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5adbc538_3f749a9b","line":176,"updated":"2014-05-26 05:35:14.000000000","message":"Please add test with port object and not just Mac","commit_id":"12a87bc0f255412aa43fbdc21ce384d89adca396"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"982215a121ae1af5408f8fb4ea0756e1a38e36c9","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def setUp(self):"},{"line_number":51,"context_line":"        super(TestMlnxEswitchRpcCallbacks, self).setUp()"},{"line_number":52,"context_line":"        agent \u003d mock.Mock()"},{"line_number":53,"context_line":"        self.rpc_callbacks \u003d \\"},{"line_number":54,"context_line":"            eswitch_neutron_agent.MlnxEswitchRpcCallbacks(\u0027context\u0027, agent)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def test_port_update(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_0d6a5782","line":53,"updated":"2014-08-05 16:31:47.000000000","message":"line continuations are not allowed per hacking.\n\nself.rpc_callbacks \u003d eswitch_neutron_agent.MlnxEswitchRpcCallbacks(\n    \u0027context\u0027,\n    agent\n)","commit_id":"d580b18f1fb94fb5824778a20b1cd7950b9035d6"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"2a80f8e732f4c4b33a8bf1d0b1436ff265f00146","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def setUp(self):"},{"line_number":51,"context_line":"        super(TestMlnxEswitchRpcCallbacks, self).setUp()"},{"line_number":52,"context_line":"        agent \u003d mock.Mock()"},{"line_number":53,"context_line":"        self.rpc_callbacks \u003d \\"},{"line_number":54,"context_line":"            eswitch_neutron_agent.MlnxEswitchRpcCallbacks(\u0027context\u0027, agent)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def test_port_update(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_d341dc0b","line":53,"in_reply_to":"baada198_0d6a5782","updated":"2014-08-05 17:25:50.000000000","message":"Done","commit_id":"d580b18f1fb94fb5824778a20b1cd7950b9035d6"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"9d531853948ca8bc1e5031d8e42542ee2ea3e617","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def setUp(self):"},{"line_number":51,"context_line":"        super(TestMlnxEswitchRpcCallbacks, self).setUp()"},{"line_number":52,"context_line":"        agent \u003d mock.Mock()"},{"line_number":53,"context_line":"        self.rpc_callbacks \u003d \\"},{"line_number":54,"context_line":"            eswitch_neutron_agent.MlnxEswitchRpcCallbacks(\u0027context\u0027, agent)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def test_port_update(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_d72c5a4c","line":53,"in_reply_to":"baada198_0d6a5782","updated":"2014-08-06 00:16:16.000000000","message":"H904 was removed in hacking upstream.\ndo we want neutron-local check?","commit_id":"d580b18f1fb94fb5824778a20b1cd7950b9035d6"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"61f72ac818e36434dd9c2a81c0a4259adaec1339","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                self.assertFalse(self.agent.treat_devices_removed([{}]))"},{"line_number":157,"context_line":"                self.assertTrue(port_release.called)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def test_process_network_ports(self):"},{"line_number":160,"context_line":"        current_ports \u003d set([\u002710:20:30:40:50:60\u0027])"},{"line_number":161,"context_line":"        added_ports \u003d set([\u002711:21:31:41:51:61\u0027])"},{"line_number":162,"context_line":"        updated_ports \u003d set([\u002712:22:32:42:52:62\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"baada198_14065a74","line":159,"updated":"2014-08-08 18:27:39.000000000","message":"more nitpicking. This would be more complete if you follow the same testing patter as ovs neutron agent:\n\n 734     def _test_process_network_ports(self, port_info):\n 735         with contextlib.nested(\n 736             mock.patch.object(self.agent.sg_agent, \"setup_port_filters\"),\n 737             mock.patch.object(self.agent, \"treat_devices_added_or_updated\",\n 738                               return_value\u003d[]),\n 739             mock.patch.object(self.agent, \"treat_devices_removed\",\n 740                               return_value\u003dFalse)\n 741         ) as (setup_port_filters, device_added_updated, device_removed):\n 742             self.assertFalse(self.agent.process_network_ports(port_info,\n 743                                                               False))\n 744             setup_port_filters.assert_called_once_with(       \n 745                 port_info[\u0027added\u0027], port_info.get(\u0027updated\u0027, set()))\n 746             device_added_updated.assert_called_once_with(\n 747                 port_info[\u0027added\u0027] | port_info.get(\u0027updated\u0027, set()), False)\n 748             device_removed.assert_called_once_with(port_info[\u0027removed\u0027])\n 749             \n 750     def test_process_network_ports(self):\n 751         self._test_process_network_ports(\n 752             {\u0027current\u0027: set([\u0027tap0\u0027]),\n 753              \u0027removed\u0027: set([\u0027eth0\u0027]),\n 754              \u0027added\u0027: set([\u0027eth1\u0027])})\n 755              \n 756     def test_process_network_port_with_updated_ports(self):\n 757         self._test_process_network_ports(\n 758             {\u0027current\u0027: set([\u0027tap0\u0027, \u0027tap1\u0027]),\n 759              \u0027updated\u0027: set([\u0027tap1\u0027, \u0027eth1\u0027]),\n 760              \u0027removed\u0027: set([\u0027eth0\u0027]),\n 761              \u0027added\u0027: set([\u0027eth1\u0027])})","commit_id":"66304856d45742cc652447b1854f0287665e4a0f"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"9f2ec2aebd5ce7b53645ebc04ab8fd049d1e2519","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                self.assertFalse(self.agent.treat_devices_removed([{}]))"},{"line_number":157,"context_line":"                self.assertTrue(port_release.called)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def test_process_network_ports(self):"},{"line_number":160,"context_line":"        current_ports \u003d set([\u002710:20:30:40:50:60\u0027])"},{"line_number":161,"context_line":"        added_ports \u003d set([\u002711:21:31:41:51:61\u0027])"},{"line_number":162,"context_line":"        updated_ports \u003d set([\u002712:22:32:42:52:62\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"baada198_70addb31","line":159,"in_reply_to":"baada198_14065a74","updated":"2014-08-09 07:39:50.000000000","message":"Allright, thanks.","commit_id":"66304856d45742cc652447b1854f0287665e4a0f"}]}
