)]}'
{"nova/compute/resource_tracker.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"526556178ef980f3673825649889b0dd4dfbec76","unresolved":false,"context_lines":[{"line_number":454,"context_line":"            if instance_type is not None:"},{"line_number":455,"context_line":"                numa_topology \u003d self._get_migration_context_resource("},{"line_number":456,"context_line":"                    \u0027numa_topology\u0027, instance, prefix\u003dprefix)"},{"line_number":457,"context_line":"                usage \u003d self._get_usage_dict("},{"line_number":458,"context_line":"                        instance_type, numa_topology\u003dnuma_topology)"},{"line_number":459,"context_line":"                self._drop_pci_devices(instance, nodename, prefix)"},{"line_number":460,"context_line":"                self._update_usage(usage, nodename, sign\u003d-1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_328b3023","line":457,"updated":"2018-07-23 14:26:18.000000000","message":"OK here we pass a flavor.","commit_id":"ea87ac5677b4a4d96a57ba4e0d1c1a459a062047"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"526556178ef980f3673825649889b0dd4dfbec76","unresolved":false,"context_lines":[{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"        if itype:"},{"line_number":1026,"context_line":"            cn \u003d self.compute_nodes[nodename]"},{"line_number":1027,"context_line":"            usage \u003d self._get_usage_dict("},{"line_number":1028,"context_line":"                        itype, numa_topology\u003dnuma_topology)"},{"line_number":1029,"context_line":"            if self.pci_tracker and sign:"},{"line_number":1030,"context_line":"                self.pci_tracker.update_pci_for_instance("}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_b288a021","line":1027,"updated":"2018-07-23 14:26:18.000000000","message":"here it\u0027s a flavor","commit_id":"ea87ac5677b4a4d96a57ba4e0d1c1a459a062047"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"526556178ef980f3673825649889b0dd4dfbec76","unresolved":false,"context_lines":[{"line_number":1134,"context_line":"                self.reportclient.update_instance_allocation(context, cn,"},{"line_number":1135,"context_line":"                                                             instance, sign)"},{"line_number":1136,"context_line":"            # new instance, update compute node resource usage:"},{"line_number":1137,"context_line":"            self._update_usage(self._get_usage_dict(instance), nodename,"},{"line_number":1138,"context_line":"                               sign\u003dsign)"},{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"        cn.current_workload \u003d self.stats.calculate_workload()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_32749037","line":1137,"updated":"2018-07-23 14:26:18.000000000","message":"here it\u0027s an instance","commit_id":"ea87ac5677b4a4d96a57ba4e0d1c1a459a062047"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"526556178ef980f3673825649889b0dd4dfbec76","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"        \"\"\""},{"line_number":1455,"context_line":"        usage \u003d {}"},{"line_number":1456,"context_line":"        if isinstance(object_or_dict, objects.Instance):"},{"line_number":1457,"context_line":"            is_bfv \u003d compute_utils.is_volume_backed_instance("},{"line_number":1458,"context_line":"                object_or_dict._context, object_or_dict)"},{"line_number":1459,"context_line":"            usage \u003d {\u0027memory_mb\u0027: object_or_dict.flavor.memory_mb,"},{"line_number":1460,"context_line":"                     \u0027vcpus\u0027: object_or_dict.flavor.vcpus,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_f2a29897","line":1457,"updated":"2018-07-23 14:26:18.000000000","message":"It is unfortunate that we have to call this for each instance because it\u0027s going to query the DB for the BlockDeviceMappingList, which for a lot of operations outside the periodic task for update_available_resource, we probably have the bdms in scope (for things like resize), so it would be nice at some point to optimize this to pass down the is_bfv flag or rely on something like that (maybe cache it in the ResourceTracker process itself per instance b/c it shouldn\u0027t change over the lifetime of the instance). We could also just cheat and look at instance.image_ref and if it\u0027s \u0027\u0027 then we know it\u0027s volume-backed, but again, we could handle that kind of optimization in a follow up.","commit_id":"ea87ac5677b4a4d96a57ba4e0d1c1a459a062047"}],"nova/tests/unit/compute/test_resource_tracker.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9c4413cde5a630a57c28c2dc2a9bd60cacddfabf","unresolved":false,"context_lines":[{"line_number":2680,"context_line":"    @mock.patch(\u0027nova.compute.utils.is_volume_backed_instance\u0027)"},{"line_number":2681,"context_line":"    def test_get_usage_dict_return_0_root_gb_for_bfv_instance("},{"line_number":2682,"context_line":"            self, mock_check_bfv):"},{"line_number":2683,"context_line":"        mock_check_bfv.retur_value \u003d True"},{"line_number":2684,"context_line":"        result \u003d self.rt._get_usage_dict(self.instance)"},{"line_number":2685,"context_line":"        self.assertEqual(0, result[\u0027root_gb\u0027])"},{"line_number":2686,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_4ca88cd9","line":2683,"range":{"start_line":2683,"start_character":23,"end_line":2683,"end_character":34},"updated":"2018-07-23 15:44:39.000000000","message":"This is busted but doesn\u0027t fail because it\u0027s mock, but the code is checking for truthy behavior. I\u0027ll fix in a follow up.","commit_id":"f63fd14975cda83d24121b010cbedfc3a7e5ff1f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5dc922681408eaae0d741135f5096df28d539b9e","unresolved":false,"context_lines":[{"line_number":2680,"context_line":"    @mock.patch(\u0027nova.compute.utils.is_volume_backed_instance\u0027)"},{"line_number":2681,"context_line":"    def test_get_usage_dict_return_0_root_gb_for_bfv_instance("},{"line_number":2682,"context_line":"            self, mock_check_bfv):"},{"line_number":2683,"context_line":"        mock_check_bfv.retur_value \u003d True"},{"line_number":2684,"context_line":"        result \u003d self.rt._get_usage_dict(self.instance)"},{"line_number":2685,"context_line":"        self.assertEqual(0, result[\u0027root_gb\u0027])"},{"line_number":2686,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_cfffae67","line":2683,"range":{"start_line":2683,"start_character":23,"end_line":2683,"end_character":34},"in_reply_to":"5f7c97a3_4ca88cd9","updated":"2018-07-23 16:34:03.000000000","message":"https://review.openstack.org/#/c/584962/","commit_id":"f63fd14975cda83d24121b010cbedfc3a7e5ff1f"}]}
