)]}'
{"nova/network/neutronv2/api.py":[{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"2f4d6366624714cc8e7356ff523b8a52df2dbfa2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1ac06dbe_4f13aa0d","updated":"2016-08-22 17:32:02.000000000","message":"A function name remove_fixed_ip should not be removing floating IP IMO. Please try to make a private function starting with _ to do that.","commit_id":"ff74c8d59aafe17534abb0cfde2daa5e16e91789"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3bf20a47991d52480495a60d2156ee49cbeb9d68","unresolved":false,"context_lines":[{"line_number":1373,"context_line":"                instance_id\u003dinstance.uuid)"},{"line_number":1374,"context_line":""},{"line_number":1375,"context_line":"    def _remove_floating_ip(self, neutron_client, address, port_id):"},{"line_number":1376,"context_line":"        floating_ips \u003d self._get_floating_ips_by_fixed_and_port("},{"line_number":1377,"context_line":"                                neutron_client, address, port_id)"},{"line_number":1378,"context_line":"        for floating_ip in floating_ips:"},{"line_number":1379,"context_line":"            neutron_client.update_floatingip("},{"line_number":1380,"context_line":"                floating_ip[\u0027id\u0027], {\u0027floatingip\u0027: {\u0027port_id\u0027: None}})"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_fae486ae","line":1377,"range":{"start_line":1376,"start_character":0,"end_line":1377,"end_character":65},"updated":"2017-11-22 10:05:02.000000000","message":"This doesn\u0027t raise an exception as it calls \u0027_safe_get_floating_ips\u0027, which handles it...","commit_id":"40715f25c3dc5d0c924b03aa1cb7437bd04e5b9e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3bf20a47991d52480495a60d2156ee49cbeb9d68","unresolved":false,"context_lines":[{"line_number":1376,"context_line":"        floating_ips \u003d self._get_floating_ips_by_fixed_and_port("},{"line_number":1377,"context_line":"                                neutron_client, address, port_id)"},{"line_number":1378,"context_line":"        for floating_ip in floating_ips:"},{"line_number":1379,"context_line":"            neutron_client.update_floatingip("},{"line_number":1380,"context_line":"                floating_ip[\u0027id\u0027], {\u0027floatingip\u0027: {\u0027port_id\u0027: None}})"},{"line_number":1381,"context_line":""},{"line_number":1382,"context_line":"    @base_api.refresh_cache"},{"line_number":1383,"context_line":"    def remove_fixed_ip_from_instance(self, context, instance, address):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_7ab87675","line":1380,"range":{"start_line":1379,"start_character":0,"end_line":1380,"end_character":69},"updated":"2017-11-22 10:05:02.000000000","message":"But what about this? It seems this can only raise \u0027neutronclient.common.exceptions.ConnectionFailed\u0027, but do we need to handle that? We do handle it for \u0027neutron.update_port\u0027","commit_id":"40715f25c3dc5d0c924b03aa1cb7437bd04e5b9e"}],"nova/tests/unit/network/test_neutronv2.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"61a50dff7136cca85f294bbfd5f13c9cde113a5c","unresolved":false,"context_lines":[{"line_number":2491,"context_line":"    def test_remove_fixed_ip_from_instance(self, mock_get_inst_nw_info,"},{"line_number":2492,"context_line":"                                                  mock_get_client):"},{"line_number":2493,"context_line":"        api \u003d neutronapi.API()"},{"line_number":2494,"context_line":"        self.mox.ResetAll()"},{"line_number":2495,"context_line":"        mock_get_client.return_value \u003d mock.Mock()"},{"line_number":2496,"context_line":"        mock_client \u003d mock_get_client()"},{"line_number":2497,"context_line":"        instance \u003d self._fake_instance_object(self.instance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_b910fda9","line":2494,"updated":"2016-08-03 08:00:33.000000000","message":"It seems this test uses mock. Do we still needs to touch mox at all?","commit_id":"ff74c8d59aafe17534abb0cfde2daa5e16e91789"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9893ade868a7af923c87d4a14b9150946e8f9510","unresolved":false,"context_lines":[{"line_number":2491,"context_line":"    def test_remove_fixed_ip_from_instance(self, mock_get_inst_nw_info,"},{"line_number":2492,"context_line":"                                                  mock_get_client):"},{"line_number":2493,"context_line":"        api \u003d neutronapi.API()"},{"line_number":2494,"context_line":"        self.mox.ResetAll()"},{"line_number":2495,"context_line":"        mock_get_client.return_value \u003d mock.Mock()"},{"line_number":2496,"context_line":"        mock_client \u003d mock_get_client()"},{"line_number":2497,"context_line":"        instance \u003d self._fake_instance_object(self.instance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_3795c486","line":2494,"in_reply_to":"bacf61ea_66440774","updated":"2016-08-23 07:40:53.000000000","message":"I see. I still feel that it is a bit of mix between mock and mox, but other tests in this file do the same so it might be OK.","commit_id":"ff74c8d59aafe17534abb0cfde2daa5e16e91789"},{"author":{"_account_id":20217,"name":"Anusha Unnam","email":"anusha.unnam25@gmail.com","username":"aunnam"},"change_message_id":"4212bba859692e6dbbb08b35aa86e369436732a0","unresolved":false,"context_lines":[{"line_number":2491,"context_line":"    def test_remove_fixed_ip_from_instance(self, mock_get_inst_nw_info,"},{"line_number":2492,"context_line":"                                                  mock_get_client):"},{"line_number":2493,"context_line":"        api \u003d neutronapi.API()"},{"line_number":2494,"context_line":"        self.mox.ResetAll()"},{"line_number":2495,"context_line":"        mock_get_client.return_value \u003d mock.Mock()"},{"line_number":2496,"context_line":"        mock_client \u003d mock_get_client()"},{"line_number":2497,"context_line":"        instance \u003d self._fake_instance_object(self.instance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_66440774","line":2494,"in_reply_to":"bacf61ea_b910fda9","updated":"2016-08-03 15:56:09.000000000","message":"Yes this test is using mock, but if I don\u0027t add this here, my test is failing, I suppose because of this code \nhttps://github.com/openstack/nova/blob/master/nova/tests/unit/network/test_neutronv2.py#L803\nSo, it is internally calling mox here, so i had to add mox.ResetAll()","commit_id":"ff74c8d59aafe17534abb0cfde2daa5e16e91789"}]}
