)]}'
{"ironic/common/exception.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e9a0b592073940847fa8c55bbf7e4874f9776553","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"class FailedToUpdateMacOnPort(IronicException):"},{"line_number":205,"context_line":"    message \u003d _(\"Update mac address on port: %(port_id)s failed.\")"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"class ChassisNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2BuIQ%3D","line":205,"updated":"2014-03-24 21:17:56.000000000","message":"tiny nit. I think it is MAC, not mac.","commit_id":"81ee29f668a246dcd67dd28259db153fa4809d71"}],"ironic/common/neutron.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"862cccbdc4961060b683614407d7a4244362722f","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def update_port_address(self, port_id, address):"},{"line_number":95,"context_line":"        \"\"\"Update a port\u0027s mac address."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        :param port_id: id of the port."},{"line_number":98,"context_line":"        :param address: new mac address."},{"line_number":99,"context_line":"        :raises: FailedToUpdateMacOnPort"},{"line_number":100,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2Bmcw%3D","line":97,"updated":"2014-03-25 16:40:17.000000000","message":"The port_id here is quite confusing, when you first look at it you think that it\u0027s the port id from Ironic, but it\u0027s not, it\u0027s the vif_port_id from Neutron. I can see that update_port_dhcp_opts() has the same, but I would prefer to us to update this string to be more specific about which \"port id\" we are talking about here.","commit_id":"c63e1d9f603ce2268afa29553a8dc8d17e37193a"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"862cccbdc4961060b683614407d7a4244362722f","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        try:"},{"line_number":103,"context_line":"            self.client.update_port(port_id, port_req_body)"},{"line_number":104,"context_line":"        except neutron_client_exc.NeutronClientException:"},{"line_number":105,"context_line":"            LOG.exception(_(\"Failed to update mac on Neutron port %s.\"),"},{"line_number":106,"context_line":"                          port_id)"},{"line_number":107,"context_line":"            raise exception.FailedToUpdateMacOnPort(port_id\u003dport_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2Bmbw%3D","line":105,"updated":"2014-03-25 16:40:17.000000000","message":"s/mac/MAC address/g","commit_id":"c63e1d9f603ce2268afa29553a8dc8d17e37193a"}],"ironic/conductor/manager.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"065ec406c8ad5c7a2333b23589ab3cfa2bee7120","unresolved":false,"context_lines":[{"line_number":713,"context_line":"                 Neutron failed."},{"line_number":714,"context_line":"        \"\"\""},{"line_number":715,"context_line":"        port_uuid \u003d port_obj.uuid"},{"line_number":716,"context_line":"        LOG.debug(_(\"RPC update_port called for port %s.\") % port_uuid)"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"        with task_manager.acquire(context, port_obj.node_id) as task:"},{"line_number":719,"context_line":"            node \u003d task.node"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F%2BCE%3D","line":716,"updated":"2014-03-12 16:33:13.000000000","message":"For python logging, don\u0027t interpolate here. Instead do:\n    LOG.debug(_(\"RPC update_port called for port %s.\"), port_uuid)","commit_id":"00c69fdcd54ecc4e717309cf6a964a29b30f43fa"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"19c8bca4dfbf73cad7607a19eee7d355b0047b3a","unresolved":false,"context_lines":[{"line_number":713,"context_line":"                 Neutron failed."},{"line_number":714,"context_line":"        \"\"\""},{"line_number":715,"context_line":"        port_uuid \u003d port_obj.uuid"},{"line_number":716,"context_line":"        LOG.debug(_(\"RPC update_port called for port %s.\") % port_uuid)"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"        with task_manager.acquire(context, port_obj.node_id) as task:"},{"line_number":719,"context_line":"            node \u003d task.node"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F9PY%3D","line":716,"in_reply_to":"AAAAWH%2F%2F%2BCE%3D","updated":"2014-03-12 17:45:17.000000000","message":"Done","commit_id":"00c69fdcd54ecc4e717309cf6a964a29b30f43fa"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e9a0b592073940847fa8c55bbf7e4874f9776553","unresolved":false,"context_lines":[{"line_number":803,"context_line":"                        api.update_port_address(vif, port_obj.address)"},{"line_number":804,"context_line":"                    except exception.FailedToUpdateMacOnPort as e:"},{"line_number":805,"context_line":"                        with excutils.save_and_reraise_exception():"},{"line_number":806,"context_line":"                            node.last_error \u003d str(e)"},{"line_number":807,"context_line":"                            node.save(context)"},{"line_number":808,"context_line":"                else:"},{"line_number":809,"context_line":"                    LOG.warning(_(\"No VIF found for port %(port)s when \""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2BuAY%3D","line":806,"updated":"2014-03-24 21:17:56.000000000","message":"I thought we were only going to set node.last_error for async operations?","commit_id":"81ee29f668a246dcd67dd28259db153fa4809d71"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"6c05cdcd30617da4ad2f771524317f9ee3940d10","unresolved":false,"context_lines":[{"line_number":803,"context_line":"                        api.update_port_address(vif, port_obj.address)"},{"line_number":804,"context_line":"                    except exception.FailedToUpdateMacOnPort as e:"},{"line_number":805,"context_line":"                        with excutils.save_and_reraise_exception():"},{"line_number":806,"context_line":"                            node.last_error \u003d str(e)"},{"line_number":807,"context_line":"                            node.save(context)"},{"line_number":808,"context_line":"                else:"},{"line_number":809,"context_line":"                    LOG.warning(_(\"No VIF found for port %(port)s when \""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2Bs3M%3D","line":806,"in_reply_to":"AAAAWH%2F%2BuAY%3D","updated":"2014-03-24 23:54:30.000000000","message":"yes -- this should just raise, since it\u0027s synchronous.","commit_id":"81ee29f668a246dcd67dd28259db153fa4809d71"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e9a0b592073940847fa8c55bbf7e4874f9776553","unresolved":false,"context_lines":[{"line_number":807,"context_line":"                            node.save(context)"},{"line_number":808,"context_line":"                else:"},{"line_number":809,"context_line":"                    LOG.warning(_(\"No VIF found for port %(port)s when \""},{"line_number":810,"context_line":"                        \"attempting to update Neutron port mac address.\"),"},{"line_number":811,"context_line":"                        {\u0027port\u0027: port_uuid})"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"            port_obj.save(context)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2BuAQ%3D","line":810,"updated":"2014-03-24 21:17:56.000000000","message":"tiny nit. I think it is MAC, not mac.","commit_id":"81ee29f668a246dcd67dd28259db153fa4809d71"}],"ironic/tests/conductor/test_manager.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"065ec406c8ad5c7a2333b23589ab3cfa2bee7120","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"        res \u003d self.service.update_port(self.context, port)"},{"line_number":1005,"context_line":"        self.assertEqual(new_extra, res.extra)"},{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"    def test_update_port_address(self):"},{"line_number":1008,"context_line":"        ndict \u003d utils.get_test_node(driver\u003d\u0027fake\u0027)"},{"line_number":1009,"context_line":"        self.dbapi.create_node(ndict)"},{"line_number":1010,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F%2BEA%3D","line":1007,"updated":"2014-03-12 16:33:13.000000000","message":"Please use mock-decorators","commit_id":"00c69fdcd54ecc4e717309cf6a964a29b30f43fa"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"19c8bca4dfbf73cad7607a19eee7d355b0047b3a","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"        res \u003d self.service.update_port(self.context, port)"},{"line_number":1005,"context_line":"        self.assertEqual(new_extra, res.extra)"},{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"    def test_update_port_address(self):"},{"line_number":1008,"context_line":"        ndict \u003d utils.get_test_node(driver\u003d\u0027fake\u0027)"},{"line_number":1009,"context_line":"        self.dbapi.create_node(ndict)"},{"line_number":1010,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F9PI%3D","line":1007,"in_reply_to":"AAAAWH%2F%2F%2BEA%3D","updated":"2014-03-12 17:45:17.000000000","message":"Done","commit_id":"00c69fdcd54ecc4e717309cf6a964a29b30f43fa"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"065ec406c8ad5c7a2333b23589ab3cfa2bee7120","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"            self.assertEqual(new_address, res.address)"},{"line_number":1019,"context_line":"            mac_update_mock.assert_called_once_with(\u0027fake-id\u0027, new_address)"},{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"    def test_update_port_address_fail(self):"},{"line_number":1022,"context_line":"        ndict \u003d utils.get_test_node(driver\u003d\u0027fake\u0027)"},{"line_number":1023,"context_line":"        node \u003d self.dbapi.create_node(ndict)"},{"line_number":1024,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F%2BD8%3D","line":1021,"updated":"2014-03-12 16:33:13.000000000","message":"ditto","commit_id":"00c69fdcd54ecc4e717309cf6a964a29b30f43fa"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"19c8bca4dfbf73cad7607a19eee7d355b0047b3a","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"            self.assertEqual(new_address, res.address)"},{"line_number":1019,"context_line":"            mac_update_mock.assert_called_once_with(\u0027fake-id\u0027, new_address)"},{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"    def test_update_port_address_fail(self):"},{"line_number":1022,"context_line":"        ndict \u003d utils.get_test_node(driver\u003d\u0027fake\u0027)"},{"line_number":1023,"context_line":"        node \u003d self.dbapi.create_node(ndict)"},{"line_number":1024,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F9PA%3D","line":1021,"in_reply_to":"AAAAWH%2F%2F%2BD8%3D","updated":"2014-03-12 17:45:17.000000000","message":"Done","commit_id":"00c69fdcd54ecc4e717309cf6a964a29b30f43fa"}],"ironic/tests/test_neutron.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"065ec406c8ad5c7a2333b23589ab3cfa2bee7120","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                        api.update_port_dhcp_opts,"},{"line_number":116,"context_line":"                        port_id, opts)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def test_neutron_address_update(self):"},{"line_number":119,"context_line":"        address \u003d \u0027fe:54:00:77:07:d9\u0027"},{"line_number":120,"context_line":"        port_id \u003d \u0027fake-port-id\u0027"},{"line_number":121,"context_line":"        expected \u003d {\u0027port\u0027: {\u0027mac_address\u0027: address}}"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F%2BD4%3D","line":118,"updated":"2014-03-12 16:33:13.000000000","message":"ditto","commit_id":"00c69fdcd54ecc4e717309cf6a964a29b30f43fa"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"19c8bca4dfbf73cad7607a19eee7d355b0047b3a","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                        api.update_port_dhcp_opts,"},{"line_number":116,"context_line":"                        port_id, opts)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def test_neutron_address_update(self):"},{"line_number":119,"context_line":"        address \u003d \u0027fe:54:00:77:07:d9\u0027"},{"line_number":120,"context_line":"        port_id \u003d \u0027fake-port-id\u0027"},{"line_number":121,"context_line":"        expected \u003d {\u0027port\u0027: {\u0027mac_address\u0027: address}}"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F9O0%3D","line":118,"in_reply_to":"AAAAWH%2F%2F%2BD4%3D","updated":"2014-03-12 17:45:17.000000000","message":"Done","commit_id":"00c69fdcd54ecc4e717309cf6a964a29b30f43fa"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"065ec406c8ad5c7a2333b23589ab3cfa2bee7120","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                api.update_port_address(port_id, address)"},{"line_number":132,"context_line":"                mock_update_port.assert_called_once_with(port_id, expected)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def test_neutron_address_update_with_execption(self):"},{"line_number":135,"context_line":"        address \u003d \u0027fe:54:00:77:07:d9\u0027"},{"line_number":136,"context_line":"        port_id \u003d \u0027fake-port-id\u0027"},{"line_number":137,"context_line":"        my_context \u003d context.RequestContext(user\u003d\u0027test-user\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F%2BD0%3D","line":134,"updated":"2014-03-12 16:33:13.000000000","message":"ditto","commit_id":"00c69fdcd54ecc4e717309cf6a964a29b30f43fa"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"19c8bca4dfbf73cad7607a19eee7d355b0047b3a","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                api.update_port_address(port_id, address)"},{"line_number":132,"context_line":"                mock_update_port.assert_called_once_with(port_id, expected)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def test_neutron_address_update_with_execption(self):"},{"line_number":135,"context_line":"        address \u003d \u0027fe:54:00:77:07:d9\u0027"},{"line_number":136,"context_line":"        port_id \u003d \u0027fake-port-id\u0027"},{"line_number":137,"context_line":"        my_context \u003d context.RequestContext(user\u003d\u0027test-user\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F9Ow%3D","line":134,"in_reply_to":"AAAAWH%2F%2F%2BD0%3D","updated":"2014-03-12 17:45:17.000000000","message":"Done","commit_id":"00c69fdcd54ecc4e717309cf6a964a29b30f43fa"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"ca540d8b6e77d3ef1721e00044fd3f0e7867c030","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @mock.patch.object(client.Client, \u0027update_port\u0027)"},{"line_number":133,"context_line":"    @mock.patch.object(client.Client, \u0027__init__\u0027)"},{"line_number":134,"context_line":"    def test_neutron_address_update_with_execption(self, mock_client_init,"},{"line_number":135,"context_line":"                                                   mock_update_port):"},{"line_number":136,"context_line":"        address \u003d \u0027fe:54:00:77:07:d9\u0027"},{"line_number":137,"context_line":"        port_id \u003d \u0027fake-port-id\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FREg%3D","line":134,"updated":"2014-03-19 01:02:50.000000000","message":"Minor nit: s/execption/exception/","commit_id":"446244dc44129bb16dbb067ea0133f08dd35fb5b"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"1ea81fa4d12846120a7a8b029220378816629aab","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @mock.patch.object(client.Client, \u0027update_port\u0027)"},{"line_number":133,"context_line":"    @mock.patch.object(client.Client, \u0027__init__\u0027)"},{"line_number":134,"context_line":"    def test_neutron_address_update_with_execption(self, mock_client_init,"},{"line_number":135,"context_line":"                                                   mock_update_port):"},{"line_number":136,"context_line":"        address \u003d \u0027fe:54:00:77:07:d9\u0027"},{"line_number":137,"context_line":"        port_id \u003d \u0027fake-port-id\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FOss%3D","line":134,"in_reply_to":"AAAAWH%2F%2FREg%3D","updated":"2014-03-19 09:12:35.000000000","message":"Done","commit_id":"446244dc44129bb16dbb067ea0133f08dd35fb5b"}]}
