)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e067ec16c81d713ff15e57859193c6adc7c31c33","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sean Dague \u003csean@dague.net\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-01 12:07:41 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"fix virtual machine evacuate under neutron"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As reported in bug #1430042 when using evacuate + neutron virtual"},{"line_number":10,"context_line":"machines fail to evacuate because of a failure to update port"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7aaa499b_6173ba4e","line":7,"updated":"2015-04-12 15:38:47.000000000","message":"Actually this patch also fixed for nova-network case. The floatingip setup also will be update on the new host","commit_id":"27e98bb56f914e9a7df8d649fef76cf0ee3e0883"}],"nova/compute/manager.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"bfb72fe6185975c6622d28598ae9c15434d8f979","unresolved":false,"context_lines":[{"line_number":2844,"context_line":""},{"line_number":2845,"context_line":"        if recreate:"},{"line_number":2846,"context_line":"            migration \u003d {\u0027source_compute\u0027: instance[\u0027host\u0027],"},{"line_number":2847,"context_line":"                         \u0027dest_compute\u0027: self.host, }"},{"line_number":2848,"context_line":"            self.conductor_api.network_migrate_instance_finish("},{"line_number":2849,"context_line":"                context, instance, migration)"},{"line_number":2850,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_1b418138","line":2847,"updated":"2015-04-09 13:46:33.000000000","message":"A few tests were failed due to -\u003e \n AttributeError: \u0027LocalAPI\u0027 object has no attribute \u0027network_migrate_instance_finish\u0027","commit_id":"27e98bb56f914e9a7df8d649fef76cf0ee3e0883"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e067ec16c81d713ff15e57859193c6adc7c31c33","unresolved":false,"context_lines":[{"line_number":2846,"context_line":"            migration \u003d {\u0027source_compute\u0027: instance[\u0027host\u0027],"},{"line_number":2847,"context_line":"                         \u0027dest_compute\u0027: self.host, }"},{"line_number":2848,"context_line":"            self.conductor_api.network_migrate_instance_finish("},{"line_number":2849,"context_line":"                context, instance, migration)"},{"line_number":2850,"context_line":""},{"line_number":2851,"context_line":"        self.driver.spawn(context, instance, image_meta, injected_files,"},{"line_number":2852,"context_line":"                          admin_password, network_info\u003dnetwork_info,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aaa499b_819fe65e","line":2849,"updated":"2015-04-12 15:38:47.000000000","message":"we should call \u0027self.network_api.setup_instance_network_on_host\u0027. It is same with \u0027network_migrate_instance_finish\u0027, but \u0027network_migrate_instance_start/finish\u0027 is used for migration case.\n\nThere are similar case https://github.com/openstack/nova/blob/master/nova/compute/manager.py#L4469\n\nAnd we should call it before get network info https://github.com/openstack/nova/blob/master/nova/compute/manager.py#L2998","commit_id":"27e98bb56f914e9a7df8d649fef76cf0ee3e0883"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"805fdb6f252c114a53e69d398858bdff7862eca3","unresolved":false,"context_lines":[{"line_number":2846,"context_line":"            migration \u003d {\u0027source_compute\u0027: instance[\u0027host\u0027],"},{"line_number":2847,"context_line":"                         \u0027dest_compute\u0027: self.host, }"},{"line_number":2848,"context_line":"            self.conductor_api.network_migrate_instance_finish("},{"line_number":2849,"context_line":"                context, instance, migration)"},{"line_number":2850,"context_line":""},{"line_number":2851,"context_line":"        self.driver.spawn(context, instance, image_meta, injected_files,"},{"line_number":2852,"context_line":"                          admin_password, network_info\u003dnetwork_info,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_9a261767","line":2849,"in_reply_to":"7aaa499b_819fe65e","updated":"2015-04-23 17:30:58.000000000","message":"Done","commit_id":"27e98bb56f914e9a7df8d649fef76cf0ee3e0883"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"58c70c8487bea28da6e3e8f98ed6970f938a1de4","unresolved":false,"context_lines":[{"line_number":2846,"context_line":"            migration \u003d {\u0027source_compute\u0027: instance[\u0027host\u0027],"},{"line_number":2847,"context_line":"                         \u0027dest_compute\u0027: self.host, }"},{"line_number":2848,"context_line":"            self.conductor_api.network_migrate_instance_finish("},{"line_number":2849,"context_line":"                context, instance, migration)"},{"line_number":2850,"context_line":""},{"line_number":2851,"context_line":"        self.driver.spawn(context, instance, image_meta, injected_files,"},{"line_number":2852,"context_line":"                          admin_password, network_info\u003dnetwork_info,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aaa499b_91f23c6e","line":2849,"in_reply_to":"7aaa499b_819fe65e","updated":"2015-04-15 04:57:56.000000000","message":"Neutron would be happy if we changed https://github.com/openstack/nova/blob/master/nova/compute/manager.py#L2995 to call self.network_api.setup_instance_network_on_host() instead of self.network_api.setup_networks_on_host().\n\nDoes anyone know whether this would work for nova-network as well?  If not, mriedem and I came up with an alternate fix at https://review.openstack.org/#/c/173615/","commit_id":"27e98bb56f914e9a7df8d649fef76cf0ee3e0883"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"bf94e5cddec972c724ba6c6d4e53c62048395fea","unresolved":false,"context_lines":[{"line_number":2846,"context_line":"            migration \u003d {\u0027source_compute\u0027: instance[\u0027host\u0027],"},{"line_number":2847,"context_line":"                         \u0027dest_compute\u0027: self.host, }"},{"line_number":2848,"context_line":"            self.conductor_api.network_migrate_instance_finish("},{"line_number":2849,"context_line":"                context, instance, migration)"},{"line_number":2850,"context_line":""},{"line_number":2851,"context_line":"        self.driver.spawn(context, instance, image_meta, injected_files,"},{"line_number":2852,"context_line":"                          admin_password, network_info\u003dnetwork_info,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aaa499b_3c721fae","line":2849,"in_reply_to":"7aaa499b_91f23c6e","updated":"2015-04-15 05:14:14.000000000","message":"Just saw Alex\u0027s comment on the commit message.\n\nIf nova-network needs us to call self.network_api.setup_instance_network_on_host() as well, then maybe the simplest fix is simply to change  https://github.com/openstack/nova/blob/master/nova/compute/manager.py#L2995 to call self.network_api.setup_instance_network_on_host() right after self.network_api.setup_networks_on_host().","commit_id":"27e98bb56f914e9a7df8d649fef76cf0ee3e0883"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"62817a174548e10c3ac9e5ccdd05f2b9369b8be1","unresolved":false,"context_lines":[{"line_number":3012,"context_line":"            if recreate:"},{"line_number":3013,"context_line":"                self.network_api.setup_networks_on_host("},{"line_number":3014,"context_line":"                        context, instance, self.host)"},{"line_number":3015,"context_line":"                self.network_api.setup_instance_network_on_host("},{"line_number":3016,"context_line":"                        context, instance, self.host)"},{"line_number":3017,"context_line":""},{"line_number":3018,"context_line":"            network_info \u003d compute_utils.get_nw_info_for_instance(instance)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3acd31a7_a59ad312","line":3015,"updated":"2015-04-30 19:42:36.000000000","message":"Ewww, we at least need a note in here explaining why we have to call what looks like a completely redundant network API method.","commit_id":"dc7797e054602289610f132d9b3e6758e16275a3"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e8385dc833e8c42a7aa612247c591531a8555b24","unresolved":false,"context_lines":[{"line_number":3016,"context_line":"                # For nova-network this is needed to move floating IPs"},{"line_number":3017,"context_line":"                # For neutron this updates the host in the port binding"},{"line_number":3018,"context_line":"                self.network_api.setup_instance_network_on_host("},{"line_number":3019,"context_line":"                        context, instance, self.host)"},{"line_number":3020,"context_line":""},{"line_number":3021,"context_line":"            network_info \u003d compute_utils.get_nw_info_for_instance(instance)"},{"line_number":3022,"context_line":"            if bdms is None:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_9d07d217","line":3019,"updated":"2015-05-05 12:42:45.000000000","message":"Mmm, why not fixing directly the Network API using the same method for both Neutron and n-net ? I don\u0027t really like seeing different interfaces for different backends just because it makes things confusing.","commit_id":"114b4dc5757ee4991035be30932d5583c147cb56"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ca300f2c0a58a9ccc7477729f86cd4b65a1ab265","unresolved":false,"context_lines":[{"line_number":3015,"context_line":"                        context, instance, self.host)"},{"line_number":3016,"context_line":"                # For nova-network this is needed to move floating IPs"},{"line_number":3017,"context_line":"                # For neutron this updates the host in the port binding"},{"line_number":3018,"context_line":"                # TODO(cfriesen): should really try to unify these two API calls."},{"line_number":3019,"context_line":"                self.network_api.setup_instance_network_on_host("},{"line_number":3020,"context_line":"                        context, instance, self.host)"},{"line_number":3021,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3acd31a7_e8695ffa","line":3018,"updated":"2015-05-05 16:27:21.000000000","message":"Fair enough","commit_id":"40849a91b88673f80c86b6aa5c47d65ea616be66"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a244822ba74221ff743fb5f5342b1d211a70f65d","unresolved":false,"context_lines":[{"line_number":3015,"context_line":"                        context, instance, self.host)"},{"line_number":3016,"context_line":"                # For nova-network this is needed to move floating IPs"},{"line_number":3017,"context_line":"                # For neutron this updates the host in the port binding"},{"line_number":3018,"context_line":"                # TODO(cfriesen): this network_api call and the one above"},{"line_number":3019,"context_line":"                # are so similar, we should really try to unify them."},{"line_number":3020,"context_line":"                self.network_api.setup_instance_network_on_host("},{"line_number":3021,"context_line":"                        context, instance, self.host)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1aca2d91_3120699b","line":3018,"updated":"2015-05-06 13:41:29.000000000","message":"Yes we probably have to refactor this code; I guess this TODO should be more relevant in nova/network/api.py","commit_id":"7c81be3c2952f26e30bb8394c8e2803d31fc3b26"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"22c8bf9ebcba22602b0e191d57daaf21ffe4bbff","unresolved":false,"context_lines":[{"line_number":11353,"context_line":"            pass"},{"line_number":11354,"context_line":""},{"line_number":11355,"context_line":"        self.stubs.Set(network_api.API, \u0027setup_networks_on_host\u0027, fake)"},{"line_number":11356,"context_line":"        self.stubs.Set(network_api.API, \u0027setup_instance_network_on_host\u0027, fake)"},{"line_number":11357,"context_line":""},{"line_number":11358,"context_line":"        orig_image_ref \u003d None"},{"line_number":11359,"context_line":"        image_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ad32947_3aecbdc6","line":11356,"updated":"2015-04-28 08:48:35.000000000","message":"Should we add a test to assert \u0027setup_instance_network_on_host\u0027 called as expected?","commit_id":"3f193a47caa76c406a96af005d0d8641f2f35762"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"13f15f1c244cb61940660e884b9e36caeb054da2","unresolved":false,"context_lines":[{"line_number":11352,"context_line":"        network_api \u003d self.compute.network_api"},{"line_number":11353,"context_line":""},{"line_number":11354,"context_line":"        @mock.patch.object(network_api, \u0027setup_networks_on_host\u0027)"},{"line_number":11355,"context_line":"        @mock.patch.object(network_api, \u0027setup_instance_network_on_host\u0027)"},{"line_number":11356,"context_line":"        def _test_rebuild(mock_setup_instance_network_on_host,"},{"line_number":11357,"context_line":"                          mock_setup_networks_on_host):"},{"line_number":11358,"context_line":"            orig_image_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ad0253b_9da07592","line":11355,"updated":"2015-04-29 02:21:34.000000000","message":"how about use:\n\nwith contextlib.nested(mock.patch.object(....), mock.patch.object(...)) as (...):\n\nThen we needn\u0027t create internal function.","commit_id":"5615daf86730d6111eec1b1757bfaf73161f33a9"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"bf7caf6dae5612bffde7acb742a4c4cb07d066b7","unresolved":false,"context_lines":[{"line_number":11352,"context_line":"        network_api \u003d self.compute.network_api"},{"line_number":11353,"context_line":""},{"line_number":11354,"context_line":"        @mock.patch.object(network_api, \u0027setup_networks_on_host\u0027)"},{"line_number":11355,"context_line":"        @mock.patch.object(network_api, \u0027setup_instance_network_on_host\u0027)"},{"line_number":11356,"context_line":"        def _test_rebuild(mock_setup_instance_network_on_host,"},{"line_number":11357,"context_line":"                          mock_setup_networks_on_host):"},{"line_number":11358,"context_line":"            orig_image_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ad0253b_f8b5377e","line":11355,"in_reply_to":"5ad0253b_9da07592","updated":"2015-04-29 03:53:43.000000000","message":"The funny thing is that version 5 of the patch had it that way and Dan Smith mentioned that he preferred it this way.","commit_id":"5615daf86730d6111eec1b1757bfaf73161f33a9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"13f15f1c244cb61940660e884b9e36caeb054da2","unresolved":false,"context_lines":[{"line_number":11365,"context_line":"                image_ref, injected_files, \u0027newpass\u0027, {}, bdms, recreate\u003dTrue,"},{"line_number":11366,"context_line":"                on_shared_storage\u003don_shared_storage)"},{"line_number":11367,"context_line":"            self.assertTrue(mock_setup_networks_on_host.called)"},{"line_number":11368,"context_line":"            self.assertTrue(mock_setup_instance_network_on_host.called)"},{"line_number":11369,"context_line":""},{"line_number":11370,"context_line":"        _test_rebuild()"},{"line_number":11371,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5ad0253b_5daadd71","line":11368,"updated":"2015-04-29 02:21:34.000000000","message":"It better valid the parameter.\n\nmock_setup_instance_network_on_host.assert_called_once_with(....)","commit_id":"5615daf86730d6111eec1b1757bfaf73161f33a9"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"bf7caf6dae5612bffde7acb742a4c4cb07d066b7","unresolved":false,"context_lines":[{"line_number":11365,"context_line":"                image_ref, injected_files, \u0027newpass\u0027, {}, bdms, recreate\u003dTrue,"},{"line_number":11366,"context_line":"                on_shared_storage\u003don_shared_storage)"},{"line_number":11367,"context_line":"            self.assertTrue(mock_setup_networks_on_host.called)"},{"line_number":11368,"context_line":"            self.assertTrue(mock_setup_instance_network_on_host.called)"},{"line_number":11369,"context_line":""},{"line_number":11370,"context_line":"        _test_rebuild()"},{"line_number":11371,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5ad0253b_b8b0df8c","line":11368,"in_reply_to":"5ad0253b_5daadd71","updated":"2015-04-29 03:53:43.000000000","message":"okay, I can make that change.","commit_id":"5615daf86730d6111eec1b1757bfaf73161f33a9"}]}
