)]}'
{"nova/compute/resource_tracker.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"52afc55e37c3bada0e679a8e5a4418884564a4e3","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                                        \u0027evacuation\u0027)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"def _normalize_inventory_from_cn_obj(inv_data, cn):"},{"line_number":86,"context_line":"    \"\"\"Helper function that injects various information from a compute node"},{"line_number":87,"context_line":"    object into the inventory dict returned from the virt driver\u0027s"},{"line_number":88,"context_line":"    get_inventory() method. This function allows us to marry information like"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_b404f77f","line":85,"updated":"2019-07-23 11:04:11.000000000","message":"This function is only used if a virt driver doesn\u0027t implement the \u0027update_provider_tree\u0027 interface, which is deprecated behavior that we\u0027ll remove in U. I don\u0027t think we need to make these changes since they\u0027ll never be hit by any in-tree drivers and it\u0027s unlikely that out-of-tree drivers that haven\u0027t gotten around to implementing \u0027update_provider_tree\u0027 care much for PCPUs either","commit_id":"62dbbb66652b4e958aa714fed3279712e7b0eaf7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"52afc55e37c3bada0e679a8e5a4418884564a4e3","unresolved":false,"context_lines":[{"line_number":1053,"context_line":"            # update_provider_tree isn\u0027t implemented yet - try get_inventory"},{"line_number":1054,"context_line":"            try:"},{"line_number":1055,"context_line":"                inv_data \u003d self.driver.get_inventory(nodename)"},{"line_number":1056,"context_line":"                _normalize_inventory_from_cn_obj(inv_data, compute_node)"},{"line_number":1057,"context_line":"            except NotImplementedError:"},{"line_number":1058,"context_line":"                # Eventually all virt drivers will return an inventory dict in"},{"line_number":1059,"context_line":"                # the format that the placement API expects and we\u0027ll be able"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_34f8077b","line":1056,"updated":"2019-07-23 11:04:11.000000000","message":"See here","commit_id":"62dbbb66652b4e958aa714fed3279712e7b0eaf7"}],"nova/objects/instance_numa_topology.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"52afc55e37c3bada0e679a8e5a4418884564a4e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7faddb67_7433df63","updated":"2019-07-23 11:04:11.000000000","message":"Do we need any of these changes? Given that we\u0027re not supporting both PCPU and VCPU allocations for a single instance, it seems we could continue to just use \u0027cpuset\u0027 to track vCPUs of any type for now?","commit_id":"62dbbb66652b4e958aa714fed3279712e7b0eaf7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eb176778a215e160996c577e369ca3d391c5ff01","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    def __len__(self):"},{"line_number":91,"context_line":"        return len(self.cpuset)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @classmethod"},{"line_number":94,"context_line":"    def _from_dict(cls, data_dict):"},{"line_number":95,"context_line":"        # NOTE(sahid): Used as legacy, could be renamed in"},{"line_number":96,"context_line":"        # _legacy_from_dict_ to the future to avoid confusing."},{"line_number":97,"context_line":"        cpuset \u003d hardware.parse_cpu_spec(data_dict.get(\u0027cpus\u0027, \u0027\u0027))"},{"line_number":98,"context_line":"        pcpuset \u003d hardware.parse_cpu_spec(data_dict.get(\u0027pcpus\u0027, \u0027\u0027))"},{"line_number":99,"context_line":"        memory \u003d data_dict.get(\u0027mem\u0027, {}).get(\u0027total\u0027, 0)"},{"line_number":100,"context_line":"        cell_id \u003d data_dict.get(\u0027id\u0027)"},{"line_number":101,"context_line":"        pagesize \u003d data_dict.get(\u0027pagesize\u0027)"},{"line_number":102,"context_line":"        return cls(id\u003dcell_id, cpuset\u003dcpuset, pcpuset\u003dpcpuset,"},{"line_number":103,"context_line":"                   memory\u003dmemory, pagesize\u003dpagesize)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @property"},{"line_number":106,"context_line":"    def siblings(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_b73052a0","line":103,"range":{"start_line":93,"start_character":0,"end_line":103,"end_character":52},"updated":"2019-08-06 11:23:06.000000000","message":"You definitely don\u0027t need this. I\u0027ve a patch [1] up to remove this in my series since this is only needed for realllly old database entries, the likes of which we\u0027re probably never going to encounter now\n\n[1] https://review.opendev.org/#/c/537414/","commit_id":"62dbbb66652b4e958aa714fed3279712e7b0eaf7"}],"nova/objects/numa.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eb176778a215e160996c577e369ca3d391c5ff01","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                pin_siblings.update(sib)"},{"line_number":134,"context_line":"        self.unpin_cpus(pin_siblings)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @classmethod"},{"line_number":137,"context_line":"    def _from_dict(cls, data_dict):"},{"line_number":138,"context_line":"        cpuset \u003d hardware.parse_cpu_spec("},{"line_number":139,"context_line":"            data_dict.get(\u0027cpus\u0027, \u0027\u0027))"},{"line_number":140,"context_line":"        pcpuset \u003d hardware.parse_cpu_spec("},{"line_number":141,"context_line":"            data_dict.get(\u0027pcpus\u0027, \u0027\u0027))"},{"line_number":142,"context_line":"        cpu_usage \u003d data_dict.get(\u0027cpu_usage\u0027, 0)"},{"line_number":143,"context_line":"        memory \u003d data_dict.get(\u0027mem\u0027, {}).get(\u0027total\u0027, 0)"},{"line_number":144,"context_line":"        memory_usage \u003d data_dict.get(\u0027mem\u0027, {}).get(\u0027used\u0027, 0)"},{"line_number":145,"context_line":"        cell_id \u003d data_dict.get(\u0027id\u0027)"},{"line_number":146,"context_line":"        return cls(id\u003dcell_id, cpuset\u003dcpuset, pcpuset\u003dpcpuset, memory\u003dmemory,"},{"line_number":147,"context_line":"                   cpu_usage\u003dcpu_usage, memory_usage\u003dmemory_usage,"},{"line_number":148,"context_line":"                   mempages\u003d[], pinned_cpus\u003dset([]), siblings\u003d[])"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def can_fit_pagesize(self, pagesize, memory, use_free\u003dTrue):"},{"line_number":151,"context_line":"        \"\"\"Returns whether memory can fit into a given pagesize."}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_47f52c56","line":148,"range":{"start_line":136,"start_character":0,"end_line":148,"end_character":65},"updated":"2019-08-06 11:23:06.000000000","message":"As with the previous file, we can drop this due to [1]. I\u0027ve done that in my series.\n\n[1] https://review.opendev.org/#/c/537414/","commit_id":"62dbbb66652b4e958aa714fed3279712e7b0eaf7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eb176778a215e160996c577e369ca3d391c5ff01","unresolved":false,"context_lines":[{"line_number":218,"context_line":"    # Version 1.0: Initial version"},{"line_number":219,"context_line":"    # Version 1.1: Update NUMACell to 1.1"},{"line_number":220,"context_line":"    # Version 1.2: Update NUMACell to 1.2"},{"line_number":221,"context_line":"    # Version 1.3: Update NUMACell to 1.4"},{"line_number":222,"context_line":"    VERSION \u003d \u00271.3\u0027"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    fields \u003d {"},{"line_number":225,"context_line":"        \u0027cells\u0027: fields.ListOfObjectsField(\u0027NUMACell\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_3db01c43","line":222,"range":{"start_line":221,"start_character":0,"end_line":222,"end_character":19},"updated":"2019-08-06 11:23:06.000000000","message":"Is this necessary?","commit_id":"62dbbb66652b4e958aa714fed3279712e7b0eaf7"}],"nova/tests/unit/compute/test_resource_tracker.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eb176778a215e160996c577e369ca3d391c5ff01","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7faddb67_3ddedc6c","updated":"2019-08-06 11:23:06.000000000","message":"As noted previously, no changes to \u0027normalize_inventory\u0027 should be necessary meaning none of these changes should be necessary","commit_id":"62dbbb66652b4e958aa714fed3279712e7b0eaf7"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eb176778a215e160996c577e369ca3d391c5ff01","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"        self.assertFalse(drvr.need_legacy_block_device_info)"},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"    @mock.patch.object(host.Host, \"has_min_version\")"},{"line_number":1037,"context_line":"    @mock.patch.object(objects.Service, \"get_minimum_version\","},{"line_number":1038,"context_line":"                       return_value\u003dobjects.service.SERVICE_VERSION)"},{"line_number":1039,"context_line":"    def test_min_version_start_ok(self, mock_get_version, mock_version):"},{"line_number":1040,"context_line":"        mock_version.return_value \u003d True"},{"line_number":1041,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_bd388c9f","line":1038,"range":{"start_line":1037,"start_character":0,"end_line":1038,"end_character":68},"updated":"2019-08-06 11:23:06.000000000","message":"This should be unnecessary, no? The only reason I can see that this would be necessary now is because of the \u0027_does_compute_support_shared_or_dedicated_cpus\u0027 function, but you\u0027re mocking this out globally above. What am I missing?","commit_id":"62dbbb66652b4e958aa714fed3279712e7b0eaf7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eb176778a215e160996c577e369ca3d391c5ff01","unresolved":false,"context_lines":[{"line_number":1139,"context_line":"                libvirt_driver.NEXT_MIN_LIBVIRT_VERSION))}"},{"line_number":1140,"context_line":"        version_arg_found \u003d False"},{"line_number":1141,"context_line":"        for call in mock_warning.call_args_list:"},{"line_number":1142,"context_line":"            try:"},{"line_number":1143,"context_line":"                if call[0][1] \u003d\u003d expected_arg:"},{"line_number":1144,"context_line":"                    version_arg_found \u003d True"},{"line_number":1145,"context_line":"                    break"},{"line_number":1146,"context_line":"            except IndexError:"},{"line_number":1147,"context_line":"                pass"},{"line_number":1148,"context_line":"        self.assertFalse(version_arg_found)"},{"line_number":1149,"context_line":""},{"line_number":1150,"context_line":"    @mock.patch.object(fakelibvirt.Connection, \u0027getVersion\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_7d3e948b","line":1147,"range":{"start_line":1142,"start_character":0,"end_line":1147,"end_character":20},"updated":"2019-08-06 11:23:06.000000000","message":"Seems unrelated?","commit_id":"62dbbb66652b4e958aa714fed3279712e7b0eaf7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eb176778a215e160996c577e369ca3d391c5ff01","unresolved":false,"context_lines":[{"line_number":1173,"context_line":"                libvirt_driver.NEXT_MIN_QEMU_VERSION))}"},{"line_number":1174,"context_line":"        version_arg_found \u003d False"},{"line_number":1175,"context_line":"        for call in mock_warning.call_args_list:"},{"line_number":1176,"context_line":"            try:"},{"line_number":1177,"context_line":"                if call[0][1] \u003d\u003d expected_arg:"},{"line_number":1178,"context_line":"                    version_arg_found \u003d True"},{"line_number":1179,"context_line":"                    break"},{"line_number":1180,"context_line":"            except IndexError:"},{"line_number":1181,"context_line":"                pass"},{"line_number":1182,"context_line":"        self.assertFalse(version_arg_found)"},{"line_number":1183,"context_line":""},{"line_number":1184,"context_line":"    # NOTE(sdague): python2.7 and python3.5 have different behaviors"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_9d41100d","line":1181,"range":{"start_line":1176,"start_character":0,"end_line":1181,"end_character":20},"updated":"2019-08-06 11:23:06.000000000","message":"unrelated?","commit_id":"62dbbb66652b4e958aa714fed3279712e7b0eaf7"}],"nova/tests/unit/virt/test_hardware.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"52afc55e37c3bada0e679a8e5a4418884564a4e3","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from nova import test"},{"line_number":31,"context_line":"from nova.tests.unit import fake_pci_device_pools as fake_pci"},{"line_number":32,"context_line":"from nova.virt import hardware as hw"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CONF \u003d cfg.CONF"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class InstanceInfoTests(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_b4771709","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":15},"updated":"2019-07-23 11:04:11.000000000","message":"This seems unneccesary","commit_id":"62dbbb66652b4e958aa714fed3279712e7b0eaf7"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"52afc55e37c3bada0e679a8e5a4418884564a4e3","unresolved":false,"context_lines":[{"line_number":638,"context_line":"        ctx \u003d nova_context.get_admin_context()"},{"line_number":639,"context_line":"        if not self._does_compute_support_shared_or_dedicated_cpus(ctx):"},{"line_number":640,"context_line":"            LOG.warning(\"The``vcpu_pin_set`` conf option is deprecated in \""},{"line_number":641,"context_line":"                        \"`Train` release and will be removed in `U`.\")"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"        # TODO(sbauza): Remove this code once mediated devices are persisted"},{"line_number":644,"context_line":"        # across reboots."}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_945f7b71","line":641,"updated":"2019-07-23 11:04:11.000000000","message":"I\u0027d avoided doing all these checks here since we\u0027re going to log continuously (every time this function gets hit, which is quite often).\n\nBetter to do it at startup, IMO","commit_id":"62dbbb66652b4e958aa714fed3279712e7b0eaf7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"52afc55e37c3bada0e679a8e5a4418884564a4e3","unresolved":false,"context_lines":[{"line_number":6609,"context_line":"                  otherwise false"},{"line_number":6610,"context_line":"        \"\"\""},{"line_number":6611,"context_line":"        supports_shared_or_dedicated \u003d False"},{"line_number":6612,"context_line":"        if objects.Service.get_minimum_version(context, \u0027nova-compute\u0027) \u003e\u003d 37:"},{"line_number":6613,"context_line":"            if (CONF.compute.cpu_shared_set or"},{"line_number":6614,"context_line":"                CONF.compute.cpu_dedicated_set) and ("},{"line_number":6615,"context_line":"                    not CONF.vcpu_pin_set):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_d498931c","line":6612,"range":{"start_line":6612,"start_character":0,"end_line":6612,"end_character":78},"updated":"2019-07-23 11:04:11.000000000","message":"Why 37? That exists and says it\u0027s for \"prep_resize takes a RequestSpec object\". I don\u0027t see any changes to the \u0027Service\u0027 object in this change, which I expected based on this","commit_id":"62dbbb66652b4e958aa714fed3279712e7b0eaf7"}]}
