)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"2ad61ef879bebc64c7b2e05722ee51febe385b86","unresolved":false,"context_lines":[{"line_number":23,"context_line":"network_api.cleanup_instance_network_on_host is done successfully, then"},{"line_number":24,"context_line":"call _cleanup_allocated_networks"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"close-bug: #1597596"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Change-Id: Ida5a48d0e8612af639e6f4ce9fe590c798f4de51"},{"line_number":29,"context_line":"Signed-off-by: aihuaedwardli \u003caihuaedwardli@yahoo.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1aa78d24_8f961e3d","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":5},"updated":"2016-07-06 11:12:12.000000000","message":"nit: This should be \"closes\" to allow Launchpad to track this correctly. If you have to push a new patchset I would advise you to change that.","commit_id":"739379fe76c51cbf510929d0b6516070638cc18a"},{"author":{"_account_id":18445,"name":"Aihua Edward Li","email":"aihuaedwardli@yahoo.com","username":"aihuaedwardli"},"change_message_id":"81db0fe31c034f73ee2824f5d95d8c688cba4be8","unresolved":false,"context_lines":[{"line_number":23,"context_line":"network_api.cleanup_instance_network_on_host is done successfully, then"},{"line_number":24,"context_line":"call _cleanup_allocated_networks"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"close-bug: #1597596"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Change-Id: Ida5a48d0e8612af639e6f4ce9fe590c798f4de51"},{"line_number":29,"context_line":"Signed-off-by: aihuaedwardli \u003caihuaedwardli@yahoo.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1aa78d24_0edfb00d","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":5},"in_reply_to":"1aa78d24_8f961e3d","updated":"2016-07-06 20:29:24.000000000","message":"Yes, changed. Thanks.","commit_id":"739379fe76c51cbf510929d0b6516070638cc18a"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"db27fdf80c528091680281725f821f21c0b74e37","unresolved":false,"context_lines":[{"line_number":22,"context_line":"resturn a boolean flag to indicate the cleanup\u0027s success. If the"},{"line_number":23,"context_line":"network_api.cleanup_instance_network_on_host is done successfully, then"},{"line_number":24,"context_line":"call _cleanup_allocated_networks"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"passed local unit tests"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"closes-bug: #1597596"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1aa78d24_be080f92","line":26,"range":{"start_line":25,"start_character":0,"end_line":26,"end_character":23},"updated":"2016-07-13 15:20:24.000000000","message":"we must have unit tests in the code base","commit_id":"cf3b925a5ed8427266ad4f2ec050c0bdad426076"}],"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"186cc9616ab5b536f27f15a963d21b551bec099d","unresolved":false,"context_lines":[{"line_number":1805,"context_line":"                # rescheduling."},{"line_number":1806,"context_line":"                # call cleanup allocated networks when"},{"line_number":1807,"context_line":"                # cleanup_instance_network_on_host is not successful"},{"line_number":1808,"context_line":"                if not self.network_api.cleanup_instance_network_on_host("},{"line_number":1809,"context_line":"                        context, instance, self.host):"},{"line_number":1810,"context_line":"                    self._cleanup_allocated_networks(context, instance,"},{"line_number":1811,"context_line":"                        requested_networks)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_c019cb23","line":1808,"range":{"start_line":1808,"start_character":40,"end_line":1808,"end_character":72},"updated":"2016-07-07 14:31:31.000000000","message":"I\u0027m not sure that this method was actually meant for this, it just seems to be in a convenient spot for this. I\u0027d like Alex Xu to take a look at this sine he added this code, but I think it was for migration.","commit_id":"76d3e1b3c3b9e719710f6d3c3250e3522a0b8f11"},{"author":{"_account_id":18445,"name":"Aihua Edward Li","email":"aihuaedwardli@yahoo.com","username":"aihuaedwardli"},"change_message_id":"4b55265b8fc57d6b92ccda1768598e2cf116a7cf","unresolved":false,"context_lines":[{"line_number":1805,"context_line":"                # rescheduling."},{"line_number":1806,"context_line":"                # call cleanup allocated networks when"},{"line_number":1807,"context_line":"                # cleanup_instance_network_on_host is not successful"},{"line_number":1808,"context_line":"                if not self.network_api.cleanup_instance_network_on_host("},{"line_number":1809,"context_line":"                        context, instance, self.host):"},{"line_number":1810,"context_line":"                    self._cleanup_allocated_networks(context, instance,"},{"line_number":1811,"context_line":"                        requested_networks)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_df3eabd9","line":1808,"range":{"start_line":1808,"start_character":40,"end_line":1808,"end_character":72},"in_reply_to":"1aa78d24_c019cb23","updated":"2016-07-08 04:47:04.000000000","message":"when network_api is neutron_v2/api, its implementation is empty. That\u0027s definitely an issue.","commit_id":"76d3e1b3c3b9e719710f6d3c3250e3522a0b8f11"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"186cc9616ab5b536f27f15a963d21b551bec099d","unresolved":false,"context_lines":[{"line_number":4178,"context_line":"        self._power_off_instance(context, instance, clean_shutdown)"},{"line_number":4179,"context_line":"        current_power_state \u003d self._get_power_state(context, instance)"},{"line_number":4180,"context_line":""},{"line_number":4181,"context_line":"        self.network_api.cleanup_instance_network_on_host(context, instance,"},{"line_number":4182,"context_line":"                                                          instance.host)"},{"line_number":4183,"context_line":"        network_info \u003d self.network_api.get_instance_nw_info(context, instance)"},{"line_number":4184,"context_line":"        block_device_info \u003d self._get_instance_block_device_info(context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_20dfef3a","line":4181,"updated":"2016-07-07 14:31:31.000000000","message":"What about here? Do we need to do anything?","commit_id":"76d3e1b3c3b9e719710f6d3c3250e3522a0b8f11"},{"author":{"_account_id":18445,"name":"Aihua Edward Li","email":"aihuaedwardli@yahoo.com","username":"aihuaedwardli"},"change_message_id":"4b55265b8fc57d6b92ccda1768598e2cf116a7cf","unresolved":false,"context_lines":[{"line_number":4178,"context_line":"        self._power_off_instance(context, instance, clean_shutdown)"},{"line_number":4179,"context_line":"        current_power_state \u003d self._get_power_state(context, instance)"},{"line_number":4180,"context_line":""},{"line_number":4181,"context_line":"        self.network_api.cleanup_instance_network_on_host(context, instance,"},{"line_number":4182,"context_line":"                                                          instance.host)"},{"line_number":4183,"context_line":"        network_info \u003d self.network_api.get_instance_nw_info(context, instance)"},{"line_number":4184,"context_line":"        block_device_info \u003d self._get_instance_block_device_info(context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_3f0b6f2d","line":4181,"in_reply_to":"1aa78d24_20dfef3a","updated":"2016-07-08 04:47:04.000000000","message":"This code will not get affected by this patch.","commit_id":"76d3e1b3c3b9e719710f6d3c3250e3522a0b8f11"},{"author":{"_account_id":17714,"name":"Augustina Ragwitz","email":"auggy@cpan.org","username":"mmmpork"},"change_message_id":"6236430b2b2875de6d67584280304866dccbb48f","unresolved":false,"context_lines":[{"line_number":1807,"context_line":"                # cleanup_instance_network_on_host is not successful"},{"line_number":1808,"context_line":"                if not self.network_api.cleanup_instance_network_on_host("},{"line_number":1809,"context_line":"                        context, instance, self.host):"},{"line_number":1810,"context_line":"                    self._cleanup_allocated_networks(context, instance,"},{"line_number":1811,"context_line":"                        requested_networks)"},{"line_number":1812,"context_line":""},{"line_number":1813,"context_line":"            self._nil_out_instance_obj_host_and_node(instance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_7cdf050d","line":1810,"updated":"2016-07-12 18:32:21.000000000","message":"Unit test coverage is needed for this new code path.","commit_id":"cf3b925a5ed8427266ad4f2ec050c0bdad426076"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"db27fdf80c528091680281725f821f21c0b74e37","unresolved":false,"context_lines":[{"line_number":1807,"context_line":"                # cleanup_instance_network_on_host is not successful"},{"line_number":1808,"context_line":"                if not self.network_api.cleanup_instance_network_on_host("},{"line_number":1809,"context_line":"                        context, instance, self.host):"},{"line_number":1810,"context_line":"                    self._cleanup_allocated_networks(context, instance,"},{"line_number":1811,"context_line":"                        requested_networks)"},{"line_number":1812,"context_line":""},{"line_number":1813,"context_line":"            self._nil_out_instance_obj_host_and_node(instance)"},{"line_number":1814,"context_line":"            instance.task_state \u003d task_states.SCHEDULING"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_1eae8380","line":1811,"range":{"start_line":1810,"start_character":19,"end_line":1811,"end_character":43},"updated":"2016-07-13 15:20:24.000000000","message":"This looks wrong to me. Basically we are ignoring the result of the \u0027if\u0027. \nReading the bug description seems that we need to deallocate just the port, but here we call the _cleanup_allocated_networks which ends up in calling the network_api.deallocate_for_instance which is, according to the docstring, the method to deallocate all network structures related to the instance.","commit_id":"cf3b925a5ed8427266ad4f2ec050c0bdad426076"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"49be8b5d7a9e5fffbfc9d8559465e347054f508e","unresolved":false,"context_lines":[{"line_number":1729,"context_line":"        # check if the network is immobile"},{"line_number":1730,"context_line":"        scheduler_hints \u003d filter_properties.get(\u0027scheduler_hints\u0027) or {}"},{"line_number":1731,"context_line":"        bridge_network \u003d scheduler_hints.get(\u0027bridge_network\u0027, False)"},{"line_number":1732,"context_line":"        auto_net \u003d scheduler_hints.get(\u0027auto-net\u0027, False)"},{"line_number":1733,"context_line":"        return bridge_network and auto_net"},{"line_number":1734,"context_line":""},{"line_number":1735,"context_line":"    @hooks.add_hook(\u0027build_instance\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_9d1c3379","line":1732,"updated":"2016-07-17 18:59:07.000000000","message":"Can you please explain where these two scheduler hints are coming from? I can\u0027t find these strings anywhere else in the nova code.","commit_id":"ed47bdcf8c51b130625eede0ab02c8d0e9a356a8"},{"author":{"_account_id":18445,"name":"Aihua Edward Li","email":"aihuaedwardli@yahoo.com","username":"aihuaedwardli"},"change_message_id":"1d7719c7ad66cc34cf0d03f8cd804ae8eaeb56d7","unresolved":false,"context_lines":[{"line_number":1729,"context_line":"        # check if the network is immobile"},{"line_number":1730,"context_line":"        scheduler_hints \u003d filter_properties.get(\u0027scheduler_hints\u0027) or {}"},{"line_number":1731,"context_line":"        bridge_network \u003d scheduler_hints.get(\u0027bridge_network\u0027, False)"},{"line_number":1732,"context_line":"        auto_net \u003d scheduler_hints.get(\u0027auto-net\u0027, False)"},{"line_number":1733,"context_line":"        return bridge_network and auto_net"},{"line_number":1734,"context_line":""},{"line_number":1735,"context_line":"    @hooks.add_hook(\u0027build_instance\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_abc0c8e1","line":1732,"in_reply_to":"dada55a8_9d1c3379","updated":"2016-07-18 05:57:02.000000000","message":"These two hints are currently our own customized hints passed from nova-scheduler. \nFrom previous review comments, the best way to fix the issue is do cleanup along in the same path as the deallocate_networks_on_reschedule and deallocate_sriov_ports_on_reschedule, all of them are fixed, immobile networks. \nI was thinking to got an quick fix on the issue using these two scheduler hints first. If necessary, I can add a proposal to bring in our overall idea on using these scheduler hints to help the nova scheduler.","commit_id":"ed47bdcf8c51b130625eede0ab02c8d0e9a356a8"}],"nova/network/base_api.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"000f0a516e2c15b261da459eb41fba80c0bd0a14","unresolved":false,"context_lines":[{"line_number":348,"context_line":"        :param context: The request context."},{"line_number":349,"context_line":"        :param instance: nova.objects.instance.Instance object."},{"line_number":350,"context_line":"        :param host: The host which network should be cleanup for instance."},{"line_number":351,"context_line":"        :retruns: boolean to indicate cleanup success"},{"line_number":352,"context_line":"        \"\"\""},{"line_number":353,"context_line":"        raise NotImplementedError()"},{"line_number":354,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_448e9d2e","line":351,"updated":"2016-07-07 10:47:28.000000000","message":"nit: returns","commit_id":"76d3e1b3c3b9e719710f6d3c3250e3522a0b8f11"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"db27fdf80c528091680281725f821f21c0b74e37","unresolved":false,"context_lines":[{"line_number":348,"context_line":"        :param context: The request context."},{"line_number":349,"context_line":"        :param instance: nova.objects.instance.Instance object."},{"line_number":350,"context_line":"        :param host: The host which network should be cleanup for instance."},{"line_number":351,"context_line":"        :returns: boolean to indicate cleanup success"},{"line_number":352,"context_line":"        \"\"\""},{"line_number":353,"context_line":"        raise NotImplementedError()"},{"line_number":354,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_bef2cf6c","line":351,"range":{"start_line":351,"start_character":0,"end_line":351,"end_character":53},"updated":"2016-07-13 15:20:24.000000000","message":"actually we don\u0027t return a boolean here, we do in the sub-classes","commit_id":"cf3b925a5ed8427266ad4f2ec050c0bdad426076"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"db27fdf80c528091680281725f821f21c0b74e37","unresolved":false,"context_lines":[{"line_number":2000,"context_line":""},{"line_number":2001,"context_line":"    def cleanup_instance_network_on_host(self, context, instance, host):"},{"line_number":2002,"context_line":"        \"\"\"Cleanup network for specified instance on host.\"\"\""},{"line_number":2003,"context_line":"        return False"},{"line_number":2004,"context_line":""},{"line_number":2005,"context_line":"    def _update_port_binding_for_instance(self, context, instance, host):"},{"line_number":2006,"context_line":"        if not self._has_port_binding_extension(context, refresh_cache\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_12079718","line":2003,"range":{"start_line":2003,"start_character":0,"end_line":2003,"end_character":20},"updated":"2016-07-13 15:20:24.000000000","message":"minor: I prefer the \u0027pass\u0027 making the code more readable. Looking at the method name I do not expect to get returned a bool.\nThe default return value is None so we can use it to check what this method does.","commit_id":"cf3b925a5ed8427266ad4f2ec050c0bdad426076"}]}
