)]}'
{"nova/compute/api.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a250688c6aeced8c2b0dcd187fcb8d01f50e5888","unresolved":false,"context_lines":[{"line_number":2397,"context_line":"                    sysmeta \u003d getattr(instance,"},{"line_number":2398,"context_line":"                                      obj_base.get_attrname("},{"line_number":2399,"context_line":"                                          \u0027system_metadata\u0027))"},{"line_number":2400,"context_line":"                    instance.host \u003d sysmeta.get(\u0027shelved_host\u0027)"},{"line_number":2401,"context_line":"                self.network_api.deallocate_for_instance(elevated,"},{"line_number":2402,"context_line":"                                                         instance)"},{"line_number":2403,"context_line":"            finally:"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_66fcce3e","line":2400,"updated":"2020-01-09 12:14:46.000000000","message":"Can we also drop this logic now?\n\n// later\n\nI dropped this logic and every unit and func test passes for me. So I think we should try to remove this hack (maybe in a separate patch for visibility)","commit_id":"df001770938afdad61f4579498d4153450554788"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ed5ca4aee4895e042a4ef42cf5b4508322579445","unresolved":false,"context_lines":[{"line_number":2397,"context_line":"                    sysmeta \u003d getattr(instance,"},{"line_number":2398,"context_line":"                                      obj_base.get_attrname("},{"line_number":2399,"context_line":"                                          \u0027system_metadata\u0027))"},{"line_number":2400,"context_line":"                    instance.host \u003d sysmeta.get(\u0027shelved_host\u0027)"},{"line_number":2401,"context_line":"                self.network_api.deallocate_for_instance(elevated,"},{"line_number":2402,"context_line":"                                                         instance)"},{"line_number":2403,"context_line":"            finally:"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_a26fd5c5","line":2400,"in_reply_to":"3fa7e38b_66fcce3e","updated":"2020-01-14 14:13:10.000000000","message":"Done (in a follow-up)","commit_id":"df001770938afdad61f4579498d4153450554788"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dee57d14accf40c57262caf858e1b59b0a8c5d5a","unresolved":false,"context_lines":[{"line_number":2397,"context_line":"                    sysmeta \u003d getattr(instance,"},{"line_number":2398,"context_line":"                                      obj_base.get_attrname("},{"line_number":2399,"context_line":"                                          \u0027system_metadata\u0027))"},{"line_number":2400,"context_line":"                    instance.host \u003d sysmeta.get(\u0027shelved_host\u0027)"},{"line_number":2401,"context_line":"                self.network_api.deallocate_for_instance(elevated,"},{"line_number":2402,"context_line":"                                                         instance)"},{"line_number":2403,"context_line":"            finally:"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_0264a9b2","line":2400,"in_reply_to":"3fa7e38b_a26fd5c5","updated":"2020-01-14 14:19:04.000000000","message":"https://review.opendev.org/#/c/702440/","commit_id":"df001770938afdad61f4579498d4153450554788"}],"nova/compute/manager.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a250688c6aeced8c2b0dcd187fcb8d01f50e5888","unresolved":false,"context_lines":[{"line_number":2230,"context_line":"            # default value in the driver is False, but that method was really"},{"line_number":2231,"context_line":"            # only meant for Ironic and should be removed when nova-network is"},{"line_number":2232,"context_line":"            # removed (since is_neutron() will then always be True)."},{"line_number":2233,"context_line":"            # NOTE(vladikr): SR-IOV ports should be deallocated to"},{"line_number":2234,"context_line":"            # allow new sriov pci devices to be allocated on a new host."},{"line_number":2235,"context_line":"            # Otherwise, if devices with pci addresses are already allocated"},{"line_number":2236,"context_line":"            # on the destination host, the instance will fail to spawn."},{"line_number":2237,"context_line":"            # info_cache.network_info should be present at this stage."},{"line_number":2238,"context_line":"            if (self.driver.deallocate_networks_on_reschedule(instance) or"},{"line_number":2239,"context_line":"                utils.is_neutron() or"},{"line_number":2240,"context_line":"                self.deallocate_sriov_ports_on_reschedule(instance)):"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_8698ea19","side":"PARENT","line":2237,"range":{"start_line":2233,"start_character":0,"end_line":2237,"end_character":70},"updated":"2020-01-09 12:14:46.000000000","message":"I was first wondering if this is relevant for the neutron case too. But based on the code below it was not run in case of neutron as \u0027or\u0027 is lazy so this change should be OK.","commit_id":"656c18eaf290a3b6ddf743c953f5cdf1d3fb2f05"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ed5ca4aee4895e042a4ef42cf5b4508322579445","unresolved":false,"context_lines":[{"line_number":2230,"context_line":"            # default value in the driver is False, but that method was really"},{"line_number":2231,"context_line":"            # only meant for Ironic and should be removed when nova-network is"},{"line_number":2232,"context_line":"            # removed (since is_neutron() will then always be True)."},{"line_number":2233,"context_line":"            # NOTE(vladikr): SR-IOV ports should be deallocated to"},{"line_number":2234,"context_line":"            # allow new sriov pci devices to be allocated on a new host."},{"line_number":2235,"context_line":"            # Otherwise, if devices with pci addresses are already allocated"},{"line_number":2236,"context_line":"            # on the destination host, the instance will fail to spawn."},{"line_number":2237,"context_line":"            # info_cache.network_info should be present at this stage."},{"line_number":2238,"context_line":"            if (self.driver.deallocate_networks_on_reschedule(instance) or"},{"line_number":2239,"context_line":"                utils.is_neutron() or"},{"line_number":2240,"context_line":"                self.deallocate_sriov_ports_on_reschedule(instance)):"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_826e59c6","side":"PARENT","line":2237,"range":{"start_line":2233,"start_character":0,"end_line":2237,"end_character":70},"in_reply_to":"3fa7e38b_8698ea19","updated":"2020-01-14 14:13:10.000000000","message":"Yup, that\u0027s how I was reading it too","commit_id":"656c18eaf290a3b6ddf743c953f5cdf1d3fb2f05"}],"nova/objects/network_request.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a250688c6aeced8c2b0dcd187fcb8d01f50e5888","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def obj_load_attr(self, attr):"},{"line_number":50,"context_line":"        setattr(self, attr, None)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    # TODO(stephenfin): Drop the two item tuple case when we drop it entirely"},{"line_number":53,"context_line":"    def to_tuple(self):"},{"line_number":54,"context_line":"        address \u003d str(self.address) if self.address is not None else None"},{"line_number":55,"context_line":"        if utils.is_neutron():"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_66584e56","line":52,"range":{"start_line":52,"start_character":58,"end_line":52,"end_character":77},"updated":"2020-01-09 12:14:46.000000000","message":"You mean when we drop the whole class?","commit_id":"df001770938afdad61f4579498d4153450554788"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bac72ed1492dfe24a3dcaa0fe196ba08a8a1dd1b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def obj_load_attr(self, attr):"},{"line_number":50,"context_line":"        setattr(self, attr, None)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    # TODO(stephenfin): Drop the two item tuple case when we drop it entirely"},{"line_number":53,"context_line":"    def to_tuple(self):"},{"line_number":54,"context_line":"        address \u003d str(self.address) if self.address is not None else None"},{"line_number":55,"context_line":"        if utils.is_neutron():"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_730d353f","line":52,"range":{"start_line":52,"start_character":58,"end_line":52,"end_character":77},"in_reply_to":"3fa7e38b_66584e56","updated":"2020-01-14 10:44:00.000000000","message":"s/it/nova-network/","commit_id":"df001770938afdad61f4579498d4153450554788"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1e5b3590b7a1913f9d6f99b23af6e9ed9c94b04d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def obj_load_attr(self, attr):"},{"line_number":50,"context_line":"        setattr(self, attr, None)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    # TODO(stephenfin): Drop the two item tuple case when we drop it entirely"},{"line_number":53,"context_line":"    def to_tuple(self):"},{"line_number":54,"context_line":"        address \u003d str(self.address) if self.address is not None else None"},{"line_number":55,"context_line":"        if utils.is_neutron():"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_c23531a9","line":52,"range":{"start_line":52,"start_character":58,"end_line":52,"end_character":77},"in_reply_to":"3fa7e38b_730d353f","updated":"2020-01-14 14:17:08.000000000","message":"Note that I address this in https://review.opendev.org/#/c/696518/ so this isn\u0027t worth fixing, IMO","commit_id":"df001770938afdad61f4579498d4153450554788"}],"nova/tests/unit/api/openstack/compute/test_networks.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a250688c6aeced8c2b0dcd187fcb8d01f50e5888","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                    # However, \u0027injected\u0027 value can be None if neutron."},{"line_number":133,"context_line":"                    # So here changes the value to False just for passing"},{"line_number":134,"context_line":"                    # following _from_db_object()."},{"line_number":135,"context_line":"                    # TODO(stephenfin): Fix this"},{"line_number":136,"context_line":"                    network[\u0027injected\u0027] \u003d False"},{"line_number":137,"context_line":"                return objects.Network._from_db_object(context,"},{"line_number":138,"context_line":"                                                       objects.Network(),"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_29ad49e6","line":135,"updated":"2020-01-09 12:14:46.000000000","message":"So if we only have neutron from this onward then network[\u0027injected\u0027] can be None but cannot be boolean. If this is a workaround to pass nova-net based unit test then this workaround can be removed when such tests are removed or translated to use neutron.\n\n// later\n\nI\u0027ve simply removed the workaround and unit tests pass for me.","commit_id":"df001770938afdad61f4579498d4153450554788"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ed5ca4aee4895e042a4ef42cf5b4508322579445","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                    # However, \u0027injected\u0027 value can be None if neutron."},{"line_number":133,"context_line":"                    # So here changes the value to False just for passing"},{"line_number":134,"context_line":"                    # following _from_db_object()."},{"line_number":135,"context_line":"                    # TODO(stephenfin): Fix this"},{"line_number":136,"context_line":"                    network[\u0027injected\u0027] \u003d False"},{"line_number":137,"context_line":"                return objects.Network._from_db_object(context,"},{"line_number":138,"context_line":"                                                       objects.Network(),"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_62023d0b","line":135,"in_reply_to":"3fa7e38b_29ad49e6","updated":"2020-01-14 14:13:10.000000000","message":"This is removed later in the series (change I68bfa77a520382317fc490a4f6c12dd62fc6dcda) so I hope we can keep this as-is for now?","commit_id":"df001770938afdad61f4579498d4153450554788"}],"nova/tests/unit/test_metadata.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a250688c6aeced8c2b0dcd187fcb8d01f50e5888","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import os"},{"line_number":23,"context_line":"import re"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"try:  # python 2"},{"line_number":26,"context_line":"    import pickle"},{"line_number":27,"context_line":"except ImportError:  # python 3"},{"line_number":28,"context_line":"    import cPickle as pickle"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from keystoneauth1 import exceptions as ks_exceptions"},{"line_number":31,"context_line":"from keystoneauth1 import session"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_49a0c591","line":28,"range":{"start_line":25,"start_character":0,"end_line":28,"end_character":28},"updated":"2020-01-09 12:14:46.000000000","message":"Can we just drop the py2 branch now?","commit_id":"df001770938afdad61f4579498d4153450554788"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ed5ca4aee4895e042a4ef42cf5b4508322579445","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import os"},{"line_number":23,"context_line":"import re"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"try:  # python 2"},{"line_number":26,"context_line":"    import pickle"},{"line_number":27,"context_line":"except ImportError:  # python 3"},{"line_number":28,"context_line":"    import cPickle as pickle"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from keystoneauth1 import exceptions as ks_exceptions"},{"line_number":31,"context_line":"from keystoneauth1 import session"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_223525dd","line":28,"range":{"start_line":25,"start_character":0,"end_line":28,"end_character":28},"in_reply_to":"3fa7e38b_49a0c591","updated":"2020-01-14 14:13:10.000000000","message":"I shouldn\u0027t have touched this, sorry /o\\ We can, but let\u0027s do that separately.","commit_id":"df001770938afdad61f4579498d4153450554788"}],"nova/virt/driver.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a7c95af716e2e232887ff93122ee43c2dba68833","unresolved":false,"context_lines":[{"line_number":1503,"context_line":"        \"\"\""},{"line_number":1504,"context_line":"        raise NotImplementedError()"},{"line_number":1505,"context_line":""},{"line_number":1506,"context_line":"    def deallocate_networks_on_reschedule(self, instance):"},{"line_number":1507,"context_line":"        \"\"\"Does the driver want networks deallocated on reschedule?\"\"\""},{"line_number":1508,"context_line":"        return False"},{"line_number":1509,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_6560fdd1","side":"PARENT","line":1506,"updated":"2020-01-14 21:10:23.000000000","message":"worth a ML post telling 3p drivers that this method is obsolete so they can remove it?","commit_id":"656c18eaf290a3b6ddf743c953f5cdf1d3fb2f05"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b97f01297b07668a1259ae9597e8c2886b94f369","unresolved":false,"context_lines":[{"line_number":1503,"context_line":"        \"\"\""},{"line_number":1504,"context_line":"        raise NotImplementedError()"},{"line_number":1505,"context_line":""},{"line_number":1506,"context_line":"    def deallocate_networks_on_reschedule(self, instance):"},{"line_number":1507,"context_line":"        \"\"\"Does the driver want networks deallocated on reschedule?\"\"\""},{"line_number":1508,"context_line":"        return False"},{"line_number":1509,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_4975d396","side":"PARENT","line":1506,"in_reply_to":"3fa7e38b_6560fdd1","updated":"2020-01-15 11:22:58.000000000","message":"done http://lists.openstack.org/pipermail/openstack-discuss/2020-January/012007.html","commit_id":"656c18eaf290a3b6ddf743c953f5cdf1d3fb2f05"}]}
