)]}'
{"nova/tests/functional/libvirt/test_numa_servers.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9598b0daf1e6d96a906b740d9733c55902aa7750","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        separate host NUMA node."},{"line_number":134,"context_line":"        \"\"\""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        host_info \u003d fakelibvirt.HostInfo(cpu_nodes\u003d1, cpu_sockets\u003d1,"},{"line_number":137,"context_line":"                                         cpu_cores\u003d2, kB_mem\u003d15740000)"},{"line_number":138,"context_line":"        fake_connection \u003d self._get_connection(host_info\u003dhost_info)"},{"line_number":139,"context_line":"        self.mock_conn.return_value \u003d fake_connection"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_ed5c70ee","line":136,"range":{"start_line":136,"start_character":41,"end_line":136,"end_character":52},"updated":"2019-09-12 18:03:24.000000000","message":"✔","commit_id":"03c0ccfa955e817bbe2fae62c4b9dff4fa0cc119"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9598b0daf1e6d96a906b740d9733c55902aa7750","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        self.compute_rp_uuids \u003d {}"},{"line_number":186,"context_line":"        for host in [\u0027test_compute0\u0027, \u0027test_compute1\u0027]:"},{"line_number":187,"context_line":"            fake_connection \u003d self._get_connection(host_info\u003dhost_info)"},{"line_number":188,"context_line":"            fake_connection.getHostname \u003d lambda: host"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"            # This is fun. Firstly we need to do a global\u0027ish mock so we can"},{"line_number":191,"context_line":"            # actually start the service."}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_6dfde0af","line":188,"range":{"start_line":188,"start_character":12,"end_line":188,"end_character":54},"updated":"2019-09-12 18:03:24.000000000","message":"should this not be a mock.patch.object?","commit_id":"03c0ccfa955e817bbe2fae62c4b9dff4fa0cc119"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9598b0daf1e6d96a906b740d9733c55902aa7750","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"            # Once that\u0027s done, we need to do some tweaks to each individual"},{"line_number":197,"context_line":"            # compute \"service\" to make sure they return unique objects"},{"line_number":198,"context_line":"            compute.driver._host.get_connection \u003d lambda: fake_connection"},{"line_number":199,"context_line":"            self.computes[host] \u003d compute"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"            # and save the UUIDs for the corresponding resource providers"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_6d1640f4","line":198,"range":{"start_line":198,"start_character":12,"end_line":198,"end_character":73},"updated":"2019-09-12 18:03:24.000000000","message":"ditto","commit_id":"03c0ccfa955e817bbe2fae62c4b9dff4fa0cc119"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9598b0daf1e6d96a906b740d9733c55902aa7750","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                expected_usage \u003d {\u0027VCPU\u0027: 0, \u0027DISK_GB\u0027: 0,"},{"line_number":227,"context_line":"                                  \u0027MEMORY_MB\u0027: 0}"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"            compute_usage \u003d self.placement_api.get("},{"line_number":230,"context_line":"                \u0027/resource_providers/%s/usages\u0027 % compute_rp_uuid).body["},{"line_number":231,"context_line":"                    \u0027usages\u0027]"},{"line_number":232,"context_line":"            self.assertEqual(expected_usage, compute_usage)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        # We reset mock_filter because we want to ensure it\u0027s called as part of"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_0dbeacd4","line":231,"range":{"start_line":229,"start_character":28,"end_line":231,"end_character":29},"updated":"2019-09-12 18:03:24.000000000","message":"self._get_provider_usages","commit_id":"03c0ccfa955e817bbe2fae62c4b9dff4fa0cc119"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9598b0daf1e6d96a906b740d9733c55902aa7750","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        # We reset mock_filter because we want to ensure it\u0027s called as part of"},{"line_number":235,"context_line":"        # the *migration*"},{"line_number":236,"context_line":"        self.mock_filter.reset_mock()"},{"line_number":237,"context_line":"        self.assertEqual(0, len(self.mock_filter.call_args_list))"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        extra_spec \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027}"},{"line_number":240,"context_line":"        flavor_b_id \u003d self._create_flavor(extra_spec\u003dextra_spec)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_edb8f0e5","line":237,"range":{"start_line":237,"start_character":8,"end_line":237,"end_character":65},"updated":"2019-09-12 18:03:24.000000000","message":"wouldn\u0027t think this is necessary; you\u0027re basically proving that reset_mock() works","commit_id":"03c0ccfa955e817bbe2fae62c4b9dff4fa0cc119"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9598b0daf1e6d96a906b740d9733c55902aa7750","unresolved":false,"context_lines":[{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        # TODO(stephenfin): The mock of \u0027migrate_disk_and_power_off\u0027 should"},{"line_number":243,"context_line":"        # probably be less...dumb"},{"line_number":244,"context_line":"        with mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":245,"context_line":"                        \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027):"},{"line_number":246,"context_line":"            post \u003d {\u0027resize\u0027: {\u0027flavorRef\u0027: flavor_b_id}}"},{"line_number":247,"context_line":"            self.api.post_server_action(server[\u0027id\u0027], post)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_0d8c6c34","line":244,"range":{"start_line":244,"start_character":23,"end_line":244,"end_character":64},"updated":"2019-09-12 18:03:24.000000000","message":".object($dest_compute.driver, ...) -- is that what you meant by \"less dumb\"?","commit_id":"03c0ccfa955e817bbe2fae62c4b9dff4fa0cc119"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9598b0daf1e6d96a906b740d9733c55902aa7750","unresolved":false,"context_lines":[{"line_number":268,"context_line":"                expected_usage \u003d {\u0027VCPU\u0027: 2, \u0027DISK_GB\u0027: 20,"},{"line_number":269,"context_line":"                                  \u0027MEMORY_MB\u0027: 2048}"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"            compute_usage \u003d self.placement_api.get("},{"line_number":272,"context_line":"                \u0027/resource_providers/%s/usages\u0027 % compute_rp_uuid).body["},{"line_number":273,"context_line":"                    \u0027usages\u0027]"},{"line_number":274,"context_line":"            self.assertEqual(expected_usage, compute_usage)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        self.assertEqual(1, len(self.mock_filter.call_args_list))"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_8da4dca7","line":273,"range":{"start_line":271,"start_character":28,"end_line":273,"end_character":29},"updated":"2019-09-12 18:03:24.000000000","message":"self._get_provider_usages","commit_id":"03c0ccfa955e817bbe2fae62c4b9dff4fa0cc119"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9598b0daf1e6d96a906b740d9733c55902aa7750","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                    \u0027usages\u0027]"},{"line_number":274,"context_line":"            self.assertEqual(expected_usage, compute_usage)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        self.assertEqual(1, len(self.mock_filter.call_args_list))"},{"line_number":277,"context_line":"        args, kwargs \u003d self.mock_filter.call_args_list[0]"},{"line_number":278,"context_line":"        self.assertEqual(2, len(args))"},{"line_number":279,"context_line":"        self.assertEqual({}, kwargs)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        # Now confirm the resize and ensure our inventories update"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_6dc0802b","line":279,"range":{"start_line":276,"start_character":0,"end_line":279,"end_character":36},"updated":"2019-09-12 18:03:24.000000000","message":"assuming you really can\u0027t validate the args, this could be spelled\n\n self.mock_filter.assert_called_once_with(mock.ANY, mock.ANY)","commit_id":"03c0ccfa955e817bbe2fae62c4b9dff4fa0cc119"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9598b0daf1e6d96a906b740d9733c55902aa7750","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027ACTIVE\u0027)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        for host, compute_rp_uuid in self.compute_rp_uuids.items():"},{"line_number":289,"context_line":"            # TODO(stephenfin): This should use PCPU when we support those"},{"line_number":290,"context_line":"            if host \u003d\u003d original_host:"},{"line_number":291,"context_line":"                # the host that had the instance should no longer have"},{"line_number":292,"context_line":"                # alocations since the resize has been confirmed"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_adcf5854","line":289,"range":{"start_line":289,"start_character":32,"end_line":289,"end_character":74},"updated":"2019-09-12 18:03:24.000000000","message":"Is there no way to assert that the dest is now pinned otherwise? Cause I don\u0027t see where this test does that, and that seems like it should be one of the main criteria.\n\n[Later] Okay, this satisfies https://review.opendev.org/#/c/671801/48/nova/tests/functional/libvirt/test_numa_servers.py@487","commit_id":"03c0ccfa955e817bbe2fae62c4b9dff4fa0cc119"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9598b0daf1e6d96a906b740d9733c55902aa7750","unresolved":false,"context_lines":[{"line_number":298,"context_line":"                expected_usage \u003d {\u0027VCPU\u0027: 2, \u0027DISK_GB\u0027: 20,"},{"line_number":299,"context_line":"                                  \u0027MEMORY_MB\u0027: 2048}"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"            compute_usage \u003d self.placement_api.get("},{"line_number":302,"context_line":"                \u0027/resource_providers/%s/usages\u0027 % compute_rp_uuid).body["},{"line_number":303,"context_line":"                    \u0027usages\u0027]"},{"line_number":304,"context_line":"            self.assertEqual(expected_usage, compute_usage)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_2de4c8e0","line":303,"range":{"start_line":301,"start_character":28,"end_line":303,"end_character":29},"updated":"2019-09-12 18:03:24.000000000","message":"self._get_provider_usages","commit_id":"03c0ccfa955e817bbe2fae62c4b9dff4fa0cc119"}],"nova/tests/unit/virt/libvirt/fake_imagebackend.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5ae8585ff26cde36e9b6565dd49d520d2f4c73cf","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"            return disk"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        image_init.SUPPORTS_CLONE \u003d False"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        return image_init"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5faad753_cf5e5175","line":183,"updated":"2019-09-12 14:02:54.000000000","message":"I don\u0027t want to bikeshed while we\u0027re so close to FF but I have no crazy idea why we need this in this change.\n\nSome docstring explaining would be awesome.\nHint: this can be a FUP.","commit_id":"9a5813c9347ac4220ca7fa8b4cd4873efa377f3e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"08711a314e641f0e35b2c6a72576b199f384df34","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"            return disk"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        image_init.SUPPORTS_CLONE \u003d False"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        return image_init"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5faad753_ef646d24","line":183,"in_reply_to":"5faad753_cf5e5175","updated":"2019-09-12 14:07:48.000000000","message":"Done","commit_id":"9a5813c9347ac4220ca7fa8b4cd4873efa377f3e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9598b0daf1e6d96a906b740d9733c55902aa7750","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"            return disk"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        image_init.SUPPORTS_CLONE \u003d False"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        return image_init"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5faad753_52752531","line":183,"in_reply_to":"5faad753_ef646d24","updated":"2019-09-12 18:03:24.000000000","message":"yeah, https://review.opendev.org/#/c/678470/23/nova/tests/unit/virt/libvirt/fake_imagebackend.py@183","commit_id":"9a5813c9347ac4220ca7fa8b4cd4873efa377f3e"}]}
