)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"68ddec7aebb162e3b0df2a33b54c0e19bf7e6a89","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  This call to \u0027get_host_numa_usage_from_instance\u0027 was passing in a"},{"line_number":26,"context_line":"  \u0027ComputeNode\u0027 object, whose \u0027numa_topology\u0027 field is of type"},{"line_number":27,"context_line":"  \u0027StringField\u0027 meaning the value could be in string format, and a dict,"},{"line_number":28,"context_line":"  \u0027usage\u0027, which may have contained a \u0027numa_topology\u0027 key. Now we simply"},{"line_number":29,"context_line":"  check if the usage dict\u0027s \u0027numa_topology\u0027 field is set and, if so,"},{"line_number":30,"context_line":"  pass that and the ComputeNode\u0027s \u0027numa_topology\u0027 field into the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_edb6078b","line":27,"range":{"start_line":27,"start_character":34,"end_line":27,"end_character":59},"updated":"2019-07-24 17:16:41.000000000","message":"is is string format and must be converted back to an object","commit_id":"91cce8b4435481e83dea881eb34e4e596ffddb19"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"68ddec7aebb162e3b0df2a33b54c0e19bf7e6a89","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  \u0027usage\u0027, which may have contained a \u0027numa_topology\u0027 key. Now we simply"},{"line_number":29,"context_line":"  check if the usage dict\u0027s \u0027numa_topology\u0027 field is set and, if so,"},{"line_number":30,"context_line":"  pass that and the ComputeNode\u0027s \u0027numa_topology\u0027 field into the"},{"line_number":31,"context_line":"  \u0027numa_usage_from_instances\u0027 function, stopping to covert the former to"},{"line_number":32,"context_line":"  an object if necessary."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"nova/scheduler/host_manager.py"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_cdad4b32","line":31,"range":{"start_line":31,"start_character":52,"end_line":31,"end_character":58},"updated":"2019-07-24 17:16:41.000000000","message":"convert","commit_id":"91cce8b4435481e83dea881eb34e4e596ffddb19"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"68ddec7aebb162e3b0df2a33b54c0e19bf7e6a89","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  \u0027usage\u0027, which may have contained a \u0027numa_topology\u0027 key. Now we simply"},{"line_number":29,"context_line":"  check if the usage dict\u0027s \u0027numa_topology\u0027 field is set and, if so,"},{"line_number":30,"context_line":"  pass that and the ComputeNode\u0027s \u0027numa_topology\u0027 field into the"},{"line_number":31,"context_line":"  \u0027numa_usage_from_instances\u0027 function, stopping to covert the former to"},{"line_number":32,"context_line":"  an object if necessary."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"nova/scheduler/host_manager.py"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_8da75350","line":32,"range":{"start_line":31,"start_character":40,"end_line":32,"end_character":25},"updated":"2019-07-24 17:16:41.000000000","message":"To the best of my knowledge, this is always necessary so I probably should remove the check","commit_id":"91cce8b4435481e83dea881eb34e4e596ffddb19"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1490661a1018d5c93d0975d8207de2ff51e36e01","unresolved":false,"context_lines":[{"line_number":15,"context_line":"and we did any conversion necessary to get these before the call. We"},{"line_number":16,"context_line":"already have such a function, \u0027numa_usage_from_instances\u0027, which was"},{"line_number":17,"context_line":"actually being called by \u0027get_host_numa_usage_from_instance\u0027 once it"},{"line_number":18,"context_line":"finished fishing through object soup, and there are only to non-test"},{"line_number":19,"context_line":"callers to \u0027get_host_numa_usage_from_instance\u0027 to be updated. This means"},{"line_number":20,"context_line":"we can make the below changes and remove this awful function once and"},{"line_number":21,"context_line":"for all."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7faddb67_c542713e","line":18,"range":{"start_line":18,"start_character":57,"end_line":18,"end_character":59},"updated":"2019-08-02 18:10:51.000000000","message":"two","commit_id":"b3e038069619f027703ac7b5543fb829db684e72"}],"nova/compute/resource_tracker.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e67cb2625b9b64bad7ddea73cd65abfd5b30763e","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"        if cn.numa_topology and usage.get(\u0027numa_topology\u0027):"},{"line_number":1083,"context_line":"            instance_numa_topology \u003d usage.get(\u0027numa_topology\u0027)"},{"line_number":1084,"context_line":"            host_numa_topology \u003d cn.numa_topology"},{"line_number":1085,"context_line":"            if isinstance(host_numa_topology, six.string_types):"},{"line_number":1086,"context_line":"                # legacy compute nodes may be storing this as a string"},{"line_number":1087,"context_line":"                host_numa_topology \u003d objects.NUMATopology.obj_from_db_obj("},{"line_number":1088,"context_line":"                    host_numa_topology)"},{"line_number":1089,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_e255b1fb","line":1086,"range":{"start_line":1085,"start_character":0,"end_line":1086,"end_character":70},"updated":"2019-07-24 17:20:38.000000000","message":"Remove this check - this is always a string until we have object version 2.0","commit_id":"54525598adfaa741fefd0e05e7ce126e9f761bad"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"421ae807bfc95ebd70d7778ac8a572edae50aad5","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"        if cn.numa_topology and usage.get(\u0027numa_topology\u0027):"},{"line_number":1083,"context_line":"            instance_numa_topology \u003d usage.get(\u0027numa_topology\u0027)"},{"line_number":1084,"context_line":"            host_numa_topology \u003d cn.numa_topology"},{"line_number":1085,"context_line":"            if isinstance(host_numa_topology, six.string_types):"},{"line_number":1086,"context_line":"                # legacy compute nodes may be storing this as a string"},{"line_number":1087,"context_line":"                host_numa_topology \u003d objects.NUMATopology.obj_from_db_obj("},{"line_number":1088,"context_line":"                    host_numa_topology)"},{"line_number":1089,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_f470080b","line":1086,"range":{"start_line":1085,"start_character":0,"end_line":1086,"end_character":70},"in_reply_to":"7faddb67_e255b1fb","updated":"2019-07-25 09:23:43.000000000","message":"Done","commit_id":"54525598adfaa741fefd0e05e7ce126e9f761bad"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a96b78c9cbcdf9e1b15d36ae87097c1ae4aded82","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from oslo_serialization import jsonutils"},{"line_number":29,"context_line":"from oslo_utils import excutils"},{"line_number":30,"context_line":"import retrying"},{"line_number":31,"context_line":"import six"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"from nova.compute import claims"},{"line_number":34,"context_line":"from nova.compute import monitors"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_b8b7ded8","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":10},"updated":"2019-07-25 15:34:03.000000000","message":"Need to drop this. Will do so when I respin","commit_id":"26ed4f1e17cd008745448ff795453635b365f277"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e900a1412e011a31c039b849115fab971c57bfad","unresolved":false,"context_lines":[{"line_number":1083,"context_line":"        # calculate the NUMA usage, assuming the instance is actually using"},{"line_number":1084,"context_line":"        # NUMA, of course"},{"line_number":1085,"context_line":"        if cn.numa_topology and usage.get(\u0027numa_topology\u0027):"},{"line_number":1086,"context_line":"            instance_numa_topology \u003d usage.get(\u0027numa_topology\u0027)"},{"line_number":1087,"context_line":"            # the ComputeNode.numa_topology field is a StringField, so"},{"line_number":1088,"context_line":"            # deserialize"},{"line_number":1089,"context_line":"            host_numa_topology \u003d objects.NUMATopology.obj_from_db_obj("}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_62aa7ad2","line":1086,"range":{"start_line":1086,"start_character":37,"end_line":1086,"end_character":63},"updated":"2019-08-20 21:56:47.000000000","message":"suggest usage[\u0027numa_topology\u0027] here, since we already proved it exists above","commit_id":"58dea1df1c9bd2644e9712c1548091d662ac879f"}],"nova/scheduler/host_manager.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e67cb2625b9b64bad7ddea73cd65abfd5b30763e","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        self.vcpus_used \u003d compute.vcpus_used"},{"line_number":226,"context_line":"        self.updated \u003d compute.updated_at"},{"line_number":227,"context_line":"        self.numa_topology \u003d compute.numa_topology"},{"line_number":228,"context_line":"        if isinstance(self.numa_topology, six.string_types):"},{"line_number":229,"context_line":"            # legacy compute nodes may be storing this as a string"},{"line_number":230,"context_line":"            self.numa_topology \u003d objects.NUMATopology.obj_from_db_obj("},{"line_number":231,"context_line":"                self.numa_topology)"},{"line_number":232,"context_line":"        self.pci_stats \u003d pci_stats.PciDeviceStats("}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_025b2d2e","line":229,"range":{"start_line":228,"start_character":0,"end_line":229,"end_character":66},"updated":"2019-07-24 17:20:38.000000000","message":"Remove this check - this is always a string","commit_id":"54525598adfaa741fefd0e05e7ce126e9f761bad"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"421ae807bfc95ebd70d7778ac8a572edae50aad5","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        self.vcpus_used \u003d compute.vcpus_used"},{"line_number":226,"context_line":"        self.updated \u003d compute.updated_at"},{"line_number":227,"context_line":"        self.numa_topology \u003d compute.numa_topology"},{"line_number":228,"context_line":"        if isinstance(self.numa_topology, six.string_types):"},{"line_number":229,"context_line":"            # legacy compute nodes may be storing this as a string"},{"line_number":230,"context_line":"            self.numa_topology \u003d objects.NUMATopology.obj_from_db_obj("},{"line_number":231,"context_line":"                self.numa_topology)"},{"line_number":232,"context_line":"        self.pci_stats \u003d pci_stats.PciDeviceStats("}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_146cc434","line":229,"range":{"start_line":228,"start_character":0,"end_line":229,"end_character":66},"in_reply_to":"7faddb67_025b2d2e","updated":"2019-07-25 09:23:43.000000000","message":"Done","commit_id":"54525598adfaa741fefd0e05e7ce126e9f761bad"}],"nova/tests/unit/scheduler/test_host_manager.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"7b400266d289a5c0cc9256afee42d57afd89ff22","unresolved":false,"context_lines":[{"line_number":1401,"context_line":""},{"line_number":1402,"context_line":"    @mock.patch(\u0027nova.utils.synchronized\u0027,"},{"line_number":1403,"context_line":"                side_effect\u003dlambda a: lambda f: lambda *args: f(*args))"},{"line_number":1404,"context_line":"    @mock.patch(\u0027nova.virt.hardware.numa_usage_from_instance_numa\u0027)"},{"line_number":1405,"context_line":"    @mock.patch(\u0027nova.objects.Instance\u0027)"},{"line_number":1406,"context_line":"    @mock.patch(\u0027nova.virt.hardware.numa_fit_instance_to_host\u0027)"},{"line_number":1407,"context_line":"    def test_stat_consumption_from_instance(self,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_441a8d17","line":1404,"range":{"start_line":1404,"start_character":36,"end_line":1404,"end_character":65},"updated":"2019-07-25 02:48:28.000000000","message":"This method does not exist at the moment.\nIt will be added in https://review.opendev.org/#/c/672565/ .","commit_id":"54525598adfaa741fefd0e05e7ce126e9f761bad"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"421ae807bfc95ebd70d7778ac8a572edae50aad5","unresolved":false,"context_lines":[{"line_number":1401,"context_line":""},{"line_number":1402,"context_line":"    @mock.patch(\u0027nova.utils.synchronized\u0027,"},{"line_number":1403,"context_line":"                side_effect\u003dlambda a: lambda f: lambda *args: f(*args))"},{"line_number":1404,"context_line":"    @mock.patch(\u0027nova.virt.hardware.numa_usage_from_instance_numa\u0027)"},{"line_number":1405,"context_line":"    @mock.patch(\u0027nova.objects.Instance\u0027)"},{"line_number":1406,"context_line":"    @mock.patch(\u0027nova.virt.hardware.numa_fit_instance_to_host\u0027)"},{"line_number":1407,"context_line":"    def test_stat_consumption_from_instance(self,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_14da84e8","line":1404,"range":{"start_line":1404,"start_character":36,"end_line":1404,"end_character":65},"in_reply_to":"7faddb67_441a8d17","updated":"2019-07-25 09:23:43.000000000","message":"Done","commit_id":"54525598adfaa741fefd0e05e7ce126e9f761bad"}]}
