)]}'
{"nova/tests/functional/integrated_helpers.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"322b8a93b2b96ea26fc047fc4fdb2f53b5341ef8","unresolved":false,"context_lines":[{"line_number":910,"context_line":"        expected_vcpu_usage \u003d CONF.reserved_host_cpus + flavor[\u0027vcpus\u0027]"},{"line_number":911,"context_line":"        self.assertEqual(expected_vcpu_usage, hypervisor[\u0027vcpus_used\u0027])"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"    def get_unused_flavor_name_id(self):"},{"line_number":914,"context_line":"        flavors \u003d self.api.get_flavors()"},{"line_number":915,"context_line":"        flavor_names \u003d list()"},{"line_number":916,"context_line":"        flavor_ids \u003d list()"}],"source_content_type":"text/x-python","patch_set":23,"id":"5faad753_92130f0e","line":913,"updated":"2019-09-06 23:44:04.000000000","message":"this is bizarrely written","commit_id":"97f20d9a52cbe25dce1d3a4f636eb3b46e2c7a6e"}],"nova/tests/functional/libvirt/integrated_helpers.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"322b8a93b2b96ea26fc047fc4fdb2f53b5341ef8","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            fixtures.MockPatch("},{"line_number":42,"context_line":"                \u0027nova.virt.libvirt.driver.LibvirtDriver.spawn\u0027))"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        self.useFixture(fake_imagebackend.ImageBackendFixture())"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def start_compute(self):"},{"line_number":47,"context_line":"        self.compute \u003d self._start_compute(CONF.host)"}],"source_content_type":"text/x-python","patch_set":23,"id":"5faad753_126abf7f","line":44,"updated":"2019-09-06 23:44:04.000000000","message":"please move this into the setUp of the new test suite, since you need it there and not in the other subclasses of LibvirtProviderUsageBaseTestCase.","commit_id":"97f20d9a52cbe25dce1d3a4f636eb3b46e2c7a6e"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"4fe22b4f739f8dce6cb2100a2a21723baa7ed8df","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            fixtures.MockPatch("},{"line_number":42,"context_line":"                \u0027nova.virt.libvirt.driver.LibvirtDriver.spawn\u0027))"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        self.useFixture(fake_imagebackend.ImageBackendFixture())"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def start_compute(self):"},{"line_number":47,"context_line":"        self.compute \u003d self._start_compute(CONF.host)"}],"source_content_type":"text/x-python","patch_set":23,"id":"5faad753_9598cb6a","line":44,"in_reply_to":"5faad753_126abf7f","updated":"2019-09-09 07:56:58.000000000","message":"Done","commit_id":"97f20d9a52cbe25dce1d3a4f636eb3b46e2c7a6e"}],"nova/tests/functional/libvirt/test_vpmem.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4c57d4a0f552315c916be1bc7562a5f9ead9a1e8","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        self.flags(pmem_namespaces\u003d\"4GB:ns_0,SMALL:ns_1|ns_2\","},{"line_number":38,"context_line":"                   group\u003d\u0027libvirt\u0027)"},{"line_number":39,"context_line":"        self.fake_pmem_namespaces \u003d \u0027\u0027\u0027"},{"line_number":40,"context_line":"            [{\"dev\":\"namespace0.0\","},{"line_number":41,"context_line":"            \"mode\":\"devdax\","},{"line_number":42,"context_line":"            \"map\":\"mem\","},{"line_number":43,"context_line":"            \"size\":4292870144,"},{"line_number":44,"context_line":"            \"uuid\":\"24ffd5e4-2b39-4f28-88b3-d6dc1ec44863\","},{"line_number":45,"context_line":"            \"daxregion\":{\"id\": 0, \"size\": 4292870144,\"align\": 2097152,"},{"line_number":46,"context_line":"            \"devices\":[{\"chardev\":\"dax0.0\","},{"line_number":47,"context_line":"            \"size\":4292870144}]},"},{"line_number":48,"context_line":"            \"name\":\"ns_0\","},{"line_number":49,"context_line":"            \"numa_node\":0},"},{"line_number":50,"context_line":"            {\"dev\":\"namespace0.1\","},{"line_number":51,"context_line":"            \"mode\":\"devdax\","},{"line_number":52,"context_line":"            \"map\":\"mem\","},{"line_number":53,"context_line":"            \"size\":4292870144,"},{"line_number":54,"context_line":"            \"uuid\":\"ac64fe52-de38-465b-b32b-947a6773ac66\","},{"line_number":55,"context_line":"            \"daxregion\":{\"id\": 0, \"size\": 4292870144,\"align\": 2097152,"},{"line_number":56,"context_line":"            \"devices\":[{\"chardev\":\"dax0.1\","},{"line_number":57,"context_line":"            \"size\":4292870144}]},"},{"line_number":58,"context_line":"            \"name\":\"ns_1\","},{"line_number":59,"context_line":"            \"numa_node\":0},"},{"line_number":60,"context_line":"            {\"dev\":\"namespace0.2\","},{"line_number":61,"context_line":"            \"mode\":\"devdax\","},{"line_number":62,"context_line":"            \"map\":\"mem\","},{"line_number":63,"context_line":"            \"size\":4292870144,"},{"line_number":64,"context_line":"            \"uuid\":\"2ff41eba-db9c-4bb9-a959-31d992568a3e\","},{"line_number":65,"context_line":"            \"raw_uuid\":\"0b61823b-5668-4856-842d-c644dae83410\","},{"line_number":66,"context_line":"            \"daxregion\":{\"id\":0, \"size\":4292870144, \"align\":2097152,"},{"line_number":67,"context_line":"            \"devices\":[{\"chardev\":\"dax0.2\","},{"line_number":68,"context_line":"            \"size\":4292870144}]},"},{"line_number":69,"context_line":"            \"name\":\"ns_2\","},{"line_number":70,"context_line":"            \"numa_node\":0}]\u0027\u0027\u0027"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        _p \u003d mock.patch(\u0027nova.privsep.libvirt.cleanup_vpmem\u0027)"},{"line_number":73,"context_line":"        self.mock_cleanup_pmem \u003d _p.start()"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_3d2371c0","line":70,"range":{"start_line":39,"start_character":0,"end_line":70,"end_character":30},"updated":"2019-09-03 16:52:26.000000000","message":"This is JSON, right? How about we store it as Python objects and simply dump to JSON (jsonutils.dumps). It would make it a lot easier to read and modify","commit_id":"445d060cad26898840b0253f9183e9d72766b70a"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"a2cca2deb92390c05df42aeee46e6935483096eb","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        self.flags(pmem_namespaces\u003d\"4GB:ns_0,SMALL:ns_1|ns_2\","},{"line_number":38,"context_line":"                   group\u003d\u0027libvirt\u0027)"},{"line_number":39,"context_line":"        self.fake_pmem_namespaces \u003d \u0027\u0027\u0027"},{"line_number":40,"context_line":"            [{\"dev\":\"namespace0.0\","},{"line_number":41,"context_line":"            \"mode\":\"devdax\","},{"line_number":42,"context_line":"            \"map\":\"mem\","},{"line_number":43,"context_line":"            \"size\":4292870144,"},{"line_number":44,"context_line":"            \"uuid\":\"24ffd5e4-2b39-4f28-88b3-d6dc1ec44863\","},{"line_number":45,"context_line":"            \"daxregion\":{\"id\": 0, \"size\": 4292870144,\"align\": 2097152,"},{"line_number":46,"context_line":"            \"devices\":[{\"chardev\":\"dax0.0\","},{"line_number":47,"context_line":"            \"size\":4292870144}]},"},{"line_number":48,"context_line":"            \"name\":\"ns_0\","},{"line_number":49,"context_line":"            \"numa_node\":0},"},{"line_number":50,"context_line":"            {\"dev\":\"namespace0.1\","},{"line_number":51,"context_line":"            \"mode\":\"devdax\","},{"line_number":52,"context_line":"            \"map\":\"mem\","},{"line_number":53,"context_line":"            \"size\":4292870144,"},{"line_number":54,"context_line":"            \"uuid\":\"ac64fe52-de38-465b-b32b-947a6773ac66\","},{"line_number":55,"context_line":"            \"daxregion\":{\"id\": 0, \"size\": 4292870144,\"align\": 2097152,"},{"line_number":56,"context_line":"            \"devices\":[{\"chardev\":\"dax0.1\","},{"line_number":57,"context_line":"            \"size\":4292870144}]},"},{"line_number":58,"context_line":"            \"name\":\"ns_1\","},{"line_number":59,"context_line":"            \"numa_node\":0},"},{"line_number":60,"context_line":"            {\"dev\":\"namespace0.2\","},{"line_number":61,"context_line":"            \"mode\":\"devdax\","},{"line_number":62,"context_line":"            \"map\":\"mem\","},{"line_number":63,"context_line":"            \"size\":4292870144,"},{"line_number":64,"context_line":"            \"uuid\":\"2ff41eba-db9c-4bb9-a959-31d992568a3e\","},{"line_number":65,"context_line":"            \"raw_uuid\":\"0b61823b-5668-4856-842d-c644dae83410\","},{"line_number":66,"context_line":"            \"daxregion\":{\"id\":0, \"size\":4292870144, \"align\":2097152,"},{"line_number":67,"context_line":"            \"devices\":[{\"chardev\":\"dax0.2\","},{"line_number":68,"context_line":"            \"size\":4292870144}]},"},{"line_number":69,"context_line":"            \"name\":\"ns_2\","},{"line_number":70,"context_line":"            \"numa_node\":0}]\u0027\u0027\u0027"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        _p \u003d mock.patch(\u0027nova.privsep.libvirt.cleanup_vpmem\u0027)"},{"line_number":73,"context_line":"        self.mock_cleanup_pmem \u003d _p.start()"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_683114a2","line":70,"range":{"start_line":39,"start_character":0,"end_line":70,"end_character":30},"in_reply_to":"7faddb67_3d2371c0","updated":"2019-09-04 13:01:25.000000000","message":"I just try to simulate the real result return from nova.privsep.libvirt.get_pmem_namespaces.So I prefer this json string here.","commit_id":"445d060cad26898840b0253f9183e9d72766b70a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"322b8a93b2b96ea26fc047fc4fdb2f53b5341ef8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":23,"id":"5faad753_b2896b27","line":1,"updated":"2019-09-06 23:44:04.000000000","message":"I ran out of time/energy this evening, but at a glance, some things stand out in addition to the specific comments below:\n\n- It looks like you\u0027ve copied/rewritten several helper methods that you should be able to inherit, if you choose the right base class(es).\n- Your actual test cases are only asserting instance operations. They should also be introspecting the instances themselves, asserting things like VPMEM allocations.","commit_id":"97f20d9a52cbe25dce1d3a4f636eb3b46e2c7a6e"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"4fe22b4f739f8dce6cb2100a2a21723baa7ed8df","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":23,"id":"5faad753_4824f6c6","line":1,"in_reply_to":"5faad753_b2896b27","updated":"2019-09-09 07:56:58.000000000","message":"I do copy the get_unused_flavor_name_id from other base class, because ProviderUsageBaseTestCase does not has this helper method, and I need this to create new flavor.\n\nI have looked many base test classes, and this one is best I think, I can use it to check allocations and resource report easily. \n\nI will add vpmems allocations check.","commit_id":"97f20d9a52cbe25dce1d3a4f636eb3b46e2c7a6e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"322b8a93b2b96ea26fc047fc4fdb2f53b5341ef8","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            \"name\":\"ns_2\","},{"line_number":70,"context_line":"            \"numa_node\":0}]\u0027\u0027\u0027"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        _p \u003d mock.patch(\u0027nova.privsep.libvirt.cleanup_vpmem\u0027)"},{"line_number":73,"context_line":"        self.mock_cleanup_pmem \u003d _p.start()"},{"line_number":74,"context_line":"        self.addCleanup(_p.stop)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        _p \u003d mock.patch("},{"line_number":77,"context_line":"            \u0027nova.privsep.libvirt.get_pmem_namespaces\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"5faad753_b2364bb4","line":74,"range":{"start_line":72,"start_character":0,"end_line":74,"end_character":32},"updated":"2019-09-06 23:44:04.000000000","message":"If you\n\n import fixtures\n\nthen you can spell this\n\n self.useFixture(fixtures.MockPatch(\n     \u0027nova.privsep.libvirt.cleanup_vpmem\u0027))\n\nSimilar below.","commit_id":"97f20d9a52cbe25dce1d3a4f636eb3b46e2c7a6e"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"4fe22b4f739f8dce6cb2100a2a21723baa7ed8df","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            \"name\":\"ns_2\","},{"line_number":70,"context_line":"            \"numa_node\":0}]\u0027\u0027\u0027"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        _p \u003d mock.patch(\u0027nova.privsep.libvirt.cleanup_vpmem\u0027)"},{"line_number":73,"context_line":"        self.mock_cleanup_pmem \u003d _p.start()"},{"line_number":74,"context_line":"        self.addCleanup(_p.stop)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        _p \u003d mock.patch("},{"line_number":77,"context_line":"            \u0027nova.privsep.libvirt.get_pmem_namespaces\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"5faad753_d530830a","line":74,"range":{"start_line":72,"start_character":0,"end_line":74,"end_character":32},"in_reply_to":"5faad753_b2364bb4","updated":"2019-09-09 07:56:58.000000000","message":"Done","commit_id":"97f20d9a52cbe25dce1d3a4f636eb3b46e2c7a6e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"322b8a93b2b96ea26fc047fc4fdb2f53b5341ef8","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            hostname\u003dhostname)"},{"line_number":101,"context_line":"        return fake_connection"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _assert_vpmem_equal(self, expected, actual):"},{"line_number":104,"context_line":"        for field in [\u0027label\u0027, \u0027name\u0027, \u0027devpath\u0027,"},{"line_number":105,"context_line":"                      \u0027size\u0027, \u0027align\u0027]:"},{"line_number":106,"context_line":"            self.assertEqual(getattr(expected, field),"},{"line_number":107,"context_line":"                             getattr(actual, field))"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def _assert_vpmems_equal(self, expected, actual):"},{"line_number":110,"context_line":"        for name, expect_vpmem in expected.items():"}],"source_content_type":"text/x-python","patch_set":23,"id":"5faad753_12ff1fab","line":107,"range":{"start_line":103,"start_character":0,"end_line":107,"end_character":52},"updated":"2019-09-06 23:44:04.000000000","message":"why doesn\u0027t \n\n self.assertEqual(expected, actual)\n\njust work?","commit_id":"97f20d9a52cbe25dce1d3a4f636eb3b46e2c7a6e"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"4fe22b4f739f8dce6cb2100a2a21723baa7ed8df","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            hostname\u003dhostname)"},{"line_number":101,"context_line":"        return fake_connection"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _assert_vpmem_equal(self, expected, actual):"},{"line_number":104,"context_line":"        for field in [\u0027label\u0027, \u0027name\u0027, \u0027devpath\u0027,"},{"line_number":105,"context_line":"                      \u0027size\u0027, \u0027align\u0027]:"},{"line_number":106,"context_line":"            self.assertEqual(getattr(expected, field),"},{"line_number":107,"context_line":"                             getattr(actual, field))"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def _assert_vpmems_equal(self, expected, actual):"},{"line_number":110,"context_line":"        for name, expect_vpmem in expected.items():"}],"source_content_type":"text/x-python","patch_set":23,"id":"5faad753_352b1795","line":107,"range":{"start_line":103,"start_character":0,"end_line":107,"end_character":52},"in_reply_to":"5faad753_12ff1fab","updated":"2019-09-09 07:56:58.000000000","message":"I forgot to update this, LibvirtVPMEMDevice object support comparing directly now.","commit_id":"97f20d9a52cbe25dce1d3a4f636eb3b46e2c7a6e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"322b8a93b2b96ea26fc047fc4fdb2f53b5341ef8","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            self.assertEqual(getattr(expected, field),"},{"line_number":107,"context_line":"                             getattr(actual, field))"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def _assert_vpmems_equal(self, expected, actual):"},{"line_number":110,"context_line":"        for name, expect_vpmem in expected.items():"},{"line_number":111,"context_line":"            actual_vpmem \u003d actual[name]"},{"line_number":112,"context_line":"            self._assert_vpmem_equal(expect_vpmem, actual_vpmem)"}],"source_content_type":"text/x-python","patch_set":23,"id":"5faad753_922c6f48","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":28},"updated":"2019-09-06 23:44:04.000000000","message":"this isn\u0027t covering dicts of different sizes.\n\nThere\u0027s an assertDictEqual() method that you should be able to use instead of this.","commit_id":"97f20d9a52cbe25dce1d3a4f636eb3b46e2c7a6e"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"4fe22b4f739f8dce6cb2100a2a21723baa7ed8df","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            self.assertEqual(getattr(expected, field),"},{"line_number":107,"context_line":"                             getattr(actual, field))"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def _assert_vpmems_equal(self, expected, actual):"},{"line_number":110,"context_line":"        for name, expect_vpmem in expected.items():"},{"line_number":111,"context_line":"            actual_vpmem \u003d actual[name]"},{"line_number":112,"context_line":"            self._assert_vpmem_equal(expect_vpmem, actual_vpmem)"}],"source_content_type":"text/x-python","patch_set":23,"id":"5faad753_35047717","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":28},"in_reply_to":"5faad753_922c6f48","updated":"2019-09-09 07:56:58.000000000","message":"Yes, you\u0027re right, these two functions will be dropped.\nand use assertDictEqual instead.","commit_id":"97f20d9a52cbe25dce1d3a4f636eb3b46e2c7a6e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"501d377313b86dda420afb318431687a06c7f756","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        allocs \u003d self._get_allocations_by_server_uuid(server_id)"},{"line_number":165,"context_line":"        for alloc in allocs.values():"},{"line_number":166,"context_line":"            alloc_resources \u003d alloc[\u0027resources\u0027]"},{"line_number":167,"context_line":"            if set(vpmem_allocs.keys()) \u003c set(alloc_resources.keys()):"},{"line_number":168,"context_line":"                for vpmem_rc in vpmem_allocs:"},{"line_number":169,"context_line":"                    self.assertEqual(vpmem_allocs[vpmem_rc],"},{"line_number":170,"context_line":"                                     alloc_resources[vpmem_rc])"}],"source_content_type":"text/x-python","patch_set":24,"id":"5faad753_544803cb","line":167,"range":{"start_line":167,"start_character":61,"end_line":167,"end_character":68},"updated":"2019-09-09 22:07:24.000000000","message":"redundant","commit_id":"b80725a3587fd919760ba9d2aeba9d128c981149"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"501d377313b86dda420afb318431687a06c7f756","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        allocs \u003d self._get_allocations_by_server_uuid(server_id)"},{"line_number":165,"context_line":"        for alloc in allocs.values():"},{"line_number":166,"context_line":"            alloc_resources \u003d alloc[\u0027resources\u0027]"},{"line_number":167,"context_line":"            if set(vpmem_allocs.keys()) \u003c set(alloc_resources.keys()):"},{"line_number":168,"context_line":"                for vpmem_rc in vpmem_allocs:"},{"line_number":169,"context_line":"                    self.assertEqual(vpmem_allocs[vpmem_rc],"},{"line_number":170,"context_line":"                                     alloc_resources[vpmem_rc])"}],"source_content_type":"text/x-python","patch_set":24,"id":"5faad753_943e7b27","line":167,"range":{"start_line":167,"start_character":31,"end_line":167,"end_character":38},"updated":"2019-09-09 22:07:24.000000000","message":"redundant","commit_id":"b80725a3587fd919760ba9d2aeba9d128c981149"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"11aa354ee333b228932658bf979ea82454c82973","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        allocs \u003d self._get_allocations_by_server_uuid(server_id)"},{"line_number":165,"context_line":"        for alloc in allocs.values():"},{"line_number":166,"context_line":"            alloc_resources \u003d alloc[\u0027resources\u0027]"},{"line_number":167,"context_line":"            if set(vpmem_allocs.keys()) \u003c set(alloc_resources.keys()):"},{"line_number":168,"context_line":"                for vpmem_rc in vpmem_allocs:"},{"line_number":169,"context_line":"                    self.assertEqual(vpmem_allocs[vpmem_rc],"},{"line_number":170,"context_line":"                                     alloc_resources[vpmem_rc])"}],"source_content_type":"text/x-python","patch_set":24,"id":"5faad753_363c66be","line":167,"range":{"start_line":167,"start_character":61,"end_line":167,"end_character":68},"in_reply_to":"5faad753_544803cb","updated":"2019-09-10 07:19:46.000000000","message":"Done","commit_id":"b80725a3587fd919760ba9d2aeba9d128c981149"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"11aa354ee333b228932658bf979ea82454c82973","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        allocs \u003d self._get_allocations_by_server_uuid(server_id)"},{"line_number":165,"context_line":"        for alloc in allocs.values():"},{"line_number":166,"context_line":"            alloc_resources \u003d alloc[\u0027resources\u0027]"},{"line_number":167,"context_line":"            if set(vpmem_allocs.keys()) \u003c set(alloc_resources.keys()):"},{"line_number":168,"context_line":"                for vpmem_rc in vpmem_allocs:"},{"line_number":169,"context_line":"                    self.assertEqual(vpmem_allocs[vpmem_rc],"},{"line_number":170,"context_line":"                                     alloc_resources[vpmem_rc])"}],"source_content_type":"text/x-python","patch_set":24,"id":"5faad753_d64ab253","line":167,"range":{"start_line":167,"start_character":31,"end_line":167,"end_character":38},"in_reply_to":"5faad753_943e7b27","updated":"2019-09-10 07:19:46.000000000","message":"Done","commit_id":"b80725a3587fd919760ba9d2aeba9d128c981149"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"501d377313b86dda420afb318431687a06c7f756","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                for vpmem_rc in vpmem_allocs:"},{"line_number":169,"context_line":"                    self.assertEqual(vpmem_allocs[vpmem_rc],"},{"line_number":170,"context_line":"                                     alloc_resources[vpmem_rc])"},{"line_number":171,"context_line":"                return"},{"line_number":172,"context_line":"        self.fail(\"Check vpmem allocations failed\")"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"5faad753_347ea7e4","line":171,"range":{"start_line":171,"start_character":16,"end_line":171,"end_character":22},"updated":"2019-09-09 22:07:24.000000000","message":"This is kind of brittle: it breaks as soon as there\u0027s resources across more than one provider. But I guess since it\u0027s specific to vpmem which can currently only exist in the root provider, meh.","commit_id":"b80725a3587fd919760ba9d2aeba9d128c981149"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"11aa354ee333b228932658bf979ea82454c82973","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                for vpmem_rc in vpmem_allocs:"},{"line_number":169,"context_line":"                    self.assertEqual(vpmem_allocs[vpmem_rc],"},{"line_number":170,"context_line":"                                     alloc_resources[vpmem_rc])"},{"line_number":171,"context_line":"                return"},{"line_number":172,"context_line":"        self.fail(\"Check vpmem allocations failed\")"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"5faad753_76a89eda","line":171,"range":{"start_line":171,"start_character":16,"end_line":171,"end_character":22},"in_reply_to":"5faad753_347ea7e4","updated":"2019-09-10 07:19:46.000000000","message":"I update this method to make it strong and more compatible.","commit_id":"b80725a3587fd919760ba9d2aeba9d128c981149"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"369ac48fd2fa5dd6786f34ddf91ade9db6deaba2","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                alloc_resources \u003d alloc[\u0027resources\u0027]"},{"line_number":168,"context_line":"                if vpmem_rc in alloc_resources:"},{"line_number":169,"context_line":"                    self.assertEqual(amount, alloc_resources[vpmem_rc])"},{"line_number":170,"context_line":"                    break"},{"line_number":171,"context_line":"            else:"},{"line_number":172,"context_line":"                self.fail(\"Check vpmem allocations failed\")"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"5faad753_9ba8d6db","line":170,"range":{"start_line":170,"start_character":20,"end_line":170,"end_character":25},"updated":"2019-09-10 15:54:15.000000000","message":"This will bail too early if there are resources from multiple resource classes in the same provider.\n\nWe know we\u0027re expecting the vpmem allocations to be on the compute resource provider, yes? So perhaps we can pass in that UUID from the caller, and this method can be simplified to:\n\n cn_allocs \u003d self._get_allocations_by_server_uuid(server_id)[cn_uuid][\u0027resources\u0027]\n for rc, amount in vpmem_allocs.items():\n     self.assertEqual(amount, cn_allocs[rc])","commit_id":"ab0645ea561c8cdf72de139f7059cb7ffe3e4c17"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"e085338b6531f29a3c1fb2565bb269b21de715e2","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                alloc_resources \u003d alloc[\u0027resources\u0027]"},{"line_number":168,"context_line":"                if vpmem_rc in alloc_resources:"},{"line_number":169,"context_line":"                    self.assertEqual(amount, alloc_resources[vpmem_rc])"},{"line_number":170,"context_line":"                    break"},{"line_number":171,"context_line":"            else:"},{"line_number":172,"context_line":"                self.fail(\"Check vpmem allocations failed\")"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"5faad753_943176ef","line":170,"range":{"start_line":170,"start_character":20,"end_line":170,"end_character":25},"in_reply_to":"5faad753_9ba8d6db","updated":"2019-09-11 08:14:54.000000000","message":"Done","commit_id":"ab0645ea561c8cdf72de139f7059cb7ffe3e4c17"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"369ac48fd2fa5dd6786f34ddf91ade9db6deaba2","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def test_create_servers_with_vpmem(self):"},{"line_number":183,"context_line":"        # Start one compute service"},{"line_number":184,"context_line":"        self.compute1 \u003d self._start_compute_service(\u0027host1\u0027)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        # Boot two servers with pmem"},{"line_number":187,"context_line":"        server1 \u003d self._create_server(self.flavor, self.compute1.host)"}],"source_content_type":"text/x-python","patch_set":25,"id":"5faad753_5ec7ab13","line":184,"range":{"start_line":184,"start_character":8,"end_line":184,"end_character":21},"updated":"2019-09-10 15:54:15.000000000","message":"nit: there\u0027s no need for this to be an instance attr, is there? Same throughout.","commit_id":"ab0645ea561c8cdf72de139f7059cb7ffe3e4c17"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"29520307d1088c40ca08cf4a83ab2ede36a839b4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class VPMEMTestBase(integrated_helpers.LibvirtProviderUsageBaseTestCase):"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    FAKE_LIBVIRT_VERSION \u003d 5000000"},{"line_number":33,"context_line":"    FAKE_QEMU_VERSION \u003d 3001000"}],"source_content_type":"text/x-python","patch_set":35,"id":"5faad753_9990b950","line":30,"updated":"2019-09-11 23:05:25.000000000","message":"Most of this is identical to what\u0027s done in \u0027nova.tests.functional.libvirt.base.ServersTestBase\u0027. Is there any reason you can\u0027t sublass that instead?","commit_id":"1f6532fba68211eed47b948b58fe65a8e69fc789"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"267eb82e8674d2bac136c09766d296a2d84b4c0f","unresolved":false,"context_lines":[{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class VPMEMTestBase(integrated_helpers.LibvirtProviderUsageBaseTestCase):"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    FAKE_LIBVIRT_VERSION \u003d 5000000"},{"line_number":33,"context_line":"    FAKE_QEMU_VERSION \u003d 3001000"}],"source_content_type":"text/x-python","patch_set":35,"id":"5faad753_beaeb695","line":30,"in_reply_to":"5faad753_9990b950","updated":"2019-09-12 04:28:55.000000000","message":"I think ServersTestBase\u0027s goal is to test simple vm creating.\n\n*ServersTestBase\nServersTestBase can not simplify this functional test, I tried it before. We need add placement fixture and related functions to get provider, allocations or some other things(in future), and other fixtures used in this file are also required for ServersTestBase.\nfor _get_connection_, we need override that, because we need pass the QEMU version to it.\n\n*LibvirtProviderUsageBaseTestCase\nI look throught again, foud:\nalready have _wait_for_state_change, so we can drop that override method.\nI think this functional test is more like ServerMovingTests, both LibvirtProviderUsageBaseTestCase and ServerMovingTests inherit from ProviderUsageBaseTestCase\n\n\nfor create/delete/resize_server/... functions, I just want them easy to used/called, so I create new functions for packaging api post.","commit_id":"1f6532fba68211eed47b948b58fe65a8e69fc789"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e7fea2e1301590ffce18907489a3c2c7e3f2cc18","unresolved":false,"context_lines":[{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class VPMEMTestBase(integrated_helpers.LibvirtProviderUsageBaseTestCase):"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    FAKE_LIBVIRT_VERSION \u003d 5000000"},{"line_number":33,"context_line":"    FAKE_QEMU_VERSION \u003d 3001000"}],"source_content_type":"text/x-python","patch_set":35,"id":"5faad753_9532b45d","line":30,"in_reply_to":"5faad753_beaeb695","updated":"2019-09-12 20:29:51.000000000","message":"Okay, thanks for the context. We can clean this up later (I have a lot more cleanup to do with these functional tests)","commit_id":"1f6532fba68211eed47b948b58fe65a8e69fc789"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"29520307d1088c40ca08cf4a83ab2ede36a839b4","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        self.flags(pmem_namespaces\u003d\"4GB:ns_0,SMALL:ns_1|ns_2\","},{"line_number":39,"context_line":"                   group\u003d\u0027libvirt\u0027)"},{"line_number":40,"context_line":"        self.fake_pmem_namespaces \u003d \u0027\u0027\u0027"},{"line_number":41,"context_line":"            [{\"dev\":\"namespace0.0\","},{"line_number":42,"context_line":"            \"mode\":\"devdax\","},{"line_number":43,"context_line":"            \"map\":\"mem\","},{"line_number":44,"context_line":"            \"size\":4292870144,"},{"line_number":45,"context_line":"            \"uuid\":\"24ffd5e4-2b39-4f28-88b3-d6dc1ec44863\","},{"line_number":46,"context_line":"            \"daxregion\":{\"id\": 0, \"size\": 4292870144,\"align\": 2097152,"},{"line_number":47,"context_line":"            \"devices\":[{\"chardev\":\"dax0.0\","},{"line_number":48,"context_line":"            \"size\":4292870144}]},"},{"line_number":49,"context_line":"            \"name\":\"ns_0\","},{"line_number":50,"context_line":"            \"numa_node\":0},"},{"line_number":51,"context_line":"            {\"dev\":\"namespace0.1\","},{"line_number":52,"context_line":"            \"mode\":\"devdax\","},{"line_number":53,"context_line":"            \"map\":\"mem\","},{"line_number":54,"context_line":"            \"size\":4292870144,"},{"line_number":55,"context_line":"            \"uuid\":\"ac64fe52-de38-465b-b32b-947a6773ac66\","},{"line_number":56,"context_line":"            \"daxregion\":{\"id\": 0, \"size\": 4292870144,\"align\": 2097152,"},{"line_number":57,"context_line":"            \"devices\":[{\"chardev\":\"dax0.1\","},{"line_number":58,"context_line":"            \"size\":4292870144}]},"},{"line_number":59,"context_line":"            \"name\":\"ns_1\","},{"line_number":60,"context_line":"            \"numa_node\":0},"},{"line_number":61,"context_line":"            {\"dev\":\"namespace0.2\","},{"line_number":62,"context_line":"            \"mode\":\"devdax\","},{"line_number":63,"context_line":"            \"map\":\"mem\","},{"line_number":64,"context_line":"            \"size\":4292870144,"},{"line_number":65,"context_line":"            \"uuid\":\"2ff41eba-db9c-4bb9-a959-31d992568a3e\","},{"line_number":66,"context_line":"            \"raw_uuid\":\"0b61823b-5668-4856-842d-c644dae83410\","},{"line_number":67,"context_line":"            \"daxregion\":{\"id\":0, \"size\":4292870144, \"align\":2097152,"},{"line_number":68,"context_line":"            \"devices\":[{\"chardev\":\"dax0.2\","},{"line_number":69,"context_line":"            \"size\":4292870144}]},"},{"line_number":70,"context_line":"            \"name\":\"ns_2\","},{"line_number":71,"context_line":"            \"numa_node\":0}]\u0027\u0027\u0027"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":74,"context_line":"            \u0027nova.privsep.libvirt.cleanup_vpmem\u0027))"}],"source_content_type":"text/x-python","patch_set":35,"id":"5faad753_99cbd970","line":71,"range":{"start_line":40,"start_character":0,"end_line":71,"end_character":30},"updated":"2019-09-11 23:05:25.000000000","message":"Isn\u0027t this duplicated from somewhere (unit tests?). Could you reference that instead?","commit_id":"1f6532fba68211eed47b948b58fe65a8e69fc789"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"267eb82e8674d2bac136c09766d296a2d84b4c0f","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        self.flags(pmem_namespaces\u003d\"4GB:ns_0,SMALL:ns_1|ns_2\","},{"line_number":39,"context_line":"                   group\u003d\u0027libvirt\u0027)"},{"line_number":40,"context_line":"        self.fake_pmem_namespaces \u003d \u0027\u0027\u0027"},{"line_number":41,"context_line":"            [{\"dev\":\"namespace0.0\","},{"line_number":42,"context_line":"            \"mode\":\"devdax\","},{"line_number":43,"context_line":"            \"map\":\"mem\","},{"line_number":44,"context_line":"            \"size\":4292870144,"},{"line_number":45,"context_line":"            \"uuid\":\"24ffd5e4-2b39-4f28-88b3-d6dc1ec44863\","},{"line_number":46,"context_line":"            \"daxregion\":{\"id\": 0, \"size\": 4292870144,\"align\": 2097152,"},{"line_number":47,"context_line":"            \"devices\":[{\"chardev\":\"dax0.0\","},{"line_number":48,"context_line":"            \"size\":4292870144}]},"},{"line_number":49,"context_line":"            \"name\":\"ns_0\","},{"line_number":50,"context_line":"            \"numa_node\":0},"},{"line_number":51,"context_line":"            {\"dev\":\"namespace0.1\","},{"line_number":52,"context_line":"            \"mode\":\"devdax\","},{"line_number":53,"context_line":"            \"map\":\"mem\","},{"line_number":54,"context_line":"            \"size\":4292870144,"},{"line_number":55,"context_line":"            \"uuid\":\"ac64fe52-de38-465b-b32b-947a6773ac66\","},{"line_number":56,"context_line":"            \"daxregion\":{\"id\": 0, \"size\": 4292870144,\"align\": 2097152,"},{"line_number":57,"context_line":"            \"devices\":[{\"chardev\":\"dax0.1\","},{"line_number":58,"context_line":"            \"size\":4292870144}]},"},{"line_number":59,"context_line":"            \"name\":\"ns_1\","},{"line_number":60,"context_line":"            \"numa_node\":0},"},{"line_number":61,"context_line":"            {\"dev\":\"namespace0.2\","},{"line_number":62,"context_line":"            \"mode\":\"devdax\","},{"line_number":63,"context_line":"            \"map\":\"mem\","},{"line_number":64,"context_line":"            \"size\":4292870144,"},{"line_number":65,"context_line":"            \"uuid\":\"2ff41eba-db9c-4bb9-a959-31d992568a3e\","},{"line_number":66,"context_line":"            \"raw_uuid\":\"0b61823b-5668-4856-842d-c644dae83410\","},{"line_number":67,"context_line":"            \"daxregion\":{\"id\":0, \"size\":4292870144, \"align\":2097152,"},{"line_number":68,"context_line":"            \"devices\":[{\"chardev\":\"dax0.2\","},{"line_number":69,"context_line":"            \"size\":4292870144}]},"},{"line_number":70,"context_line":"            \"name\":\"ns_2\","},{"line_number":71,"context_line":"            \"numa_node\":0}]\u0027\u0027\u0027"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":74,"context_line":"            \u0027nova.privsep.libvirt.cleanup_vpmem\u0027))"}],"source_content_type":"text/x-python","patch_set":35,"id":"5faad753_fe92ee4a","line":71,"range":{"start_line":40,"start_character":0,"end_line":71,"end_character":30},"in_reply_to":"5faad753_99cbd970","updated":"2019-09-12 04:28:55.000000000","message":"I\u0027ll try","commit_id":"1f6532fba68211eed47b948b58fe65a8e69fc789"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"3993c8f10f3141068fd85c56da276e0cc0afb5a6","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        self.flags(pmem_namespaces\u003d\"4GB:ns_0,SMALL:ns_1|ns_2\","},{"line_number":39,"context_line":"                   group\u003d\u0027libvirt\u0027)"},{"line_number":40,"context_line":"        self.fake_pmem_namespaces \u003d \u0027\u0027\u0027"},{"line_number":41,"context_line":"            [{\"dev\":\"namespace0.0\","},{"line_number":42,"context_line":"            \"mode\":\"devdax\","},{"line_number":43,"context_line":"            \"map\":\"mem\","},{"line_number":44,"context_line":"            \"size\":4292870144,"},{"line_number":45,"context_line":"            \"uuid\":\"24ffd5e4-2b39-4f28-88b3-d6dc1ec44863\","},{"line_number":46,"context_line":"            \"daxregion\":{\"id\": 0, \"size\": 4292870144,\"align\": 2097152,"},{"line_number":47,"context_line":"            \"devices\":[{\"chardev\":\"dax0.0\","},{"line_number":48,"context_line":"            \"size\":4292870144}]},"},{"line_number":49,"context_line":"            \"name\":\"ns_0\","},{"line_number":50,"context_line":"            \"numa_node\":0},"},{"line_number":51,"context_line":"            {\"dev\":\"namespace0.1\","},{"line_number":52,"context_line":"            \"mode\":\"devdax\","},{"line_number":53,"context_line":"            \"map\":\"mem\","},{"line_number":54,"context_line":"            \"size\":4292870144,"},{"line_number":55,"context_line":"            \"uuid\":\"ac64fe52-de38-465b-b32b-947a6773ac66\","},{"line_number":56,"context_line":"            \"daxregion\":{\"id\": 0, \"size\": 4292870144,\"align\": 2097152,"},{"line_number":57,"context_line":"            \"devices\":[{\"chardev\":\"dax0.1\","},{"line_number":58,"context_line":"            \"size\":4292870144}]},"},{"line_number":59,"context_line":"            \"name\":\"ns_1\","},{"line_number":60,"context_line":"            \"numa_node\":0},"},{"line_number":61,"context_line":"            {\"dev\":\"namespace0.2\","},{"line_number":62,"context_line":"            \"mode\":\"devdax\","},{"line_number":63,"context_line":"            \"map\":\"mem\","},{"line_number":64,"context_line":"            \"size\":4292870144,"},{"line_number":65,"context_line":"            \"uuid\":\"2ff41eba-db9c-4bb9-a959-31d992568a3e\","},{"line_number":66,"context_line":"            \"raw_uuid\":\"0b61823b-5668-4856-842d-c644dae83410\","},{"line_number":67,"context_line":"            \"daxregion\":{\"id\":0, \"size\":4292870144, \"align\":2097152,"},{"line_number":68,"context_line":"            \"devices\":[{\"chardev\":\"dax0.2\","},{"line_number":69,"context_line":"            \"size\":4292870144}]},"},{"line_number":70,"context_line":"            \"name\":\"ns_2\","},{"line_number":71,"context_line":"            \"numa_node\":0}]\u0027\u0027\u0027"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":74,"context_line":"            \u0027nova.privsep.libvirt.cleanup_vpmem\u0027))"}],"source_content_type":"text/x-python","patch_set":35,"id":"5faad753_171d6d65","line":71,"range":{"start_line":40,"start_character":0,"end_line":71,"end_character":30},"in_reply_to":"5faad753_c10cf33c","updated":"2019-09-12 07:31:46.000000000","message":"Actually, I think put this here can let us check if the expected_vpmems(Line 108) is consistent with this.","commit_id":"1f6532fba68211eed47b948b58fe65a8e69fc789"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"bb3ed1d8ab4b13b8ca7aed9932c3943d769221d8","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        self.flags(pmem_namespaces\u003d\"4GB:ns_0,SMALL:ns_1|ns_2\","},{"line_number":39,"context_line":"                   group\u003d\u0027libvirt\u0027)"},{"line_number":40,"context_line":"        self.fake_pmem_namespaces \u003d \u0027\u0027\u0027"},{"line_number":41,"context_line":"            [{\"dev\":\"namespace0.0\","},{"line_number":42,"context_line":"            \"mode\":\"devdax\","},{"line_number":43,"context_line":"            \"map\":\"mem\","},{"line_number":44,"context_line":"            \"size\":4292870144,"},{"line_number":45,"context_line":"            \"uuid\":\"24ffd5e4-2b39-4f28-88b3-d6dc1ec44863\","},{"line_number":46,"context_line":"            \"daxregion\":{\"id\": 0, \"size\": 4292870144,\"align\": 2097152,"},{"line_number":47,"context_line":"            \"devices\":[{\"chardev\":\"dax0.0\","},{"line_number":48,"context_line":"            \"size\":4292870144}]},"},{"line_number":49,"context_line":"            \"name\":\"ns_0\","},{"line_number":50,"context_line":"            \"numa_node\":0},"},{"line_number":51,"context_line":"            {\"dev\":\"namespace0.1\","},{"line_number":52,"context_line":"            \"mode\":\"devdax\","},{"line_number":53,"context_line":"            \"map\":\"mem\","},{"line_number":54,"context_line":"            \"size\":4292870144,"},{"line_number":55,"context_line":"            \"uuid\":\"ac64fe52-de38-465b-b32b-947a6773ac66\","},{"line_number":56,"context_line":"            \"daxregion\":{\"id\": 0, \"size\": 4292870144,\"align\": 2097152,"},{"line_number":57,"context_line":"            \"devices\":[{\"chardev\":\"dax0.1\","},{"line_number":58,"context_line":"            \"size\":4292870144}]},"},{"line_number":59,"context_line":"            \"name\":\"ns_1\","},{"line_number":60,"context_line":"            \"numa_node\":0},"},{"line_number":61,"context_line":"            {\"dev\":\"namespace0.2\","},{"line_number":62,"context_line":"            \"mode\":\"devdax\","},{"line_number":63,"context_line":"            \"map\":\"mem\","},{"line_number":64,"context_line":"            \"size\":4292870144,"},{"line_number":65,"context_line":"            \"uuid\":\"2ff41eba-db9c-4bb9-a959-31d992568a3e\","},{"line_number":66,"context_line":"            \"raw_uuid\":\"0b61823b-5668-4856-842d-c644dae83410\","},{"line_number":67,"context_line":"            \"daxregion\":{\"id\":0, \"size\":4292870144, \"align\":2097152,"},{"line_number":68,"context_line":"            \"devices\":[{\"chardev\":\"dax0.2\","},{"line_number":69,"context_line":"            \"size\":4292870144}]},"},{"line_number":70,"context_line":"            \"name\":\"ns_2\","},{"line_number":71,"context_line":"            \"numa_node\":0}]\u0027\u0027\u0027"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":74,"context_line":"            \u0027nova.privsep.libvirt.cleanup_vpmem\u0027))"}],"source_content_type":"text/x-python","patch_set":35,"id":"5faad753_c10cf33c","line":71,"range":{"start_line":40,"start_character":0,"end_line":71,"end_character":30},"in_reply_to":"5faad753_fe92ee4a","updated":"2019-09-12 05:23:26.000000000","message":"Do you mean to put this into nova/tests/unit/virt/libvirt/fakelibvirt.py?","commit_id":"1f6532fba68211eed47b948b58fe65a8e69fc789"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"785671e677478fcac3e47205927a3fb8bf138027","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        self._wait_for_state_change(self.api, server3, \u0027ERROR\u0027)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        # Delete server2, one \u0027SMALL\u0027 VPMEM will be released"},{"line_number":189,"context_line":"        self._delete_server(server2)"},{"line_number":190,"context_line":"        server3 \u003d self._create_server(self.flavor, self.compute1.host)"},{"line_number":191,"context_line":"        self._wait_for_state_change(self.api, server3, \u0027ACTIVE\u0027)"},{"line_number":192,"context_line":"        self._check_vpmem_allocations({\u0027CUSTOM_PMEM_NAMESPACE_SMALL\u0027: 1},"}],"source_content_type":"text/x-python","patch_set":43,"id":"3fa7e38b_3eb42ff1","line":189,"updated":"2019-12-19 14:41:00.000000000","message":"Need to wait for this server to be gone before continuing otherwise you\u0027re racing for resources, see:\n\nhttps://bugs.launchpad.net/nova/+bug/1856902","commit_id":"198573976fa6bebc6d046bd608b4319b7fce93ac"}],"nova/tests/unit/virt/libvirt/fake_imagebackend.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"322b8a93b2b96ea26fc047fc4fdb2f53b5341ef8","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":"        return image_init"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def _fake_cache(self, fetch_func, filename, size\u003dNone, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":23,"id":"5faad753_b2040bc8","line":183,"updated":"2019-09-06 23:44:04.000000000","message":"this blew my mind","commit_id":"97f20d9a52cbe25dce1d3a4f636eb3b46e2c7a6e"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"4fe22b4f739f8dce6cb2100a2a21723baa7ed8df","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":"        return image_init"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def _fake_cache(self, fetch_func, filename, size\u003dNone, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":23,"id":"5faad753_e87da2e7","line":183,"in_reply_to":"5faad753_b2040bc8","updated":"2019-09-09 07:56:58.000000000","message":"fake this because of https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L1318","commit_id":"97f20d9a52cbe25dce1d3a4f636eb3b46e2c7a6e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e7fea2e1301590ffce18907489a3c2c7e3f2cc18","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":"        return image_init"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def _fake_cache(self, fetch_func, filename, size\u003dNone, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":41,"id":"5faad753_23337816","line":183,"range":{"start_line":183,"start_character":0,"end_line":183,"end_character":41},"updated":"2019-09-12 20:29:51.000000000","message":"You should add a comment explaining why this is necessary","commit_id":"7a8db87893fd8e45157b0792dd38f1f64a0f3b10"}],"nova/tests/unit/virt/libvirt/fakelibvirt.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4c57d4a0f552315c916be1bc7562a5f9ead9a1e8","unresolved":false,"context_lines":[{"line_number":1237,"context_line":"class Connection(object):"},{"line_number":1238,"context_line":"    def __init__(self, uri\u003dNone, readonly\u003dFalse, version\u003dFAKE_LIBVIRT_VERSION,"},{"line_number":1239,"context_line":"                 hv_version\u003dFAKE_QEMU_VERSION, host_info\u003dNone, pci_info\u003dNone,"},{"line_number":1240,"context_line":"                 mdev_info\u003dNone, hostname\u003dNone):"},{"line_number":1241,"context_line":"        if not uri or uri \u003d\u003d \u0027\u0027:"},{"line_number":1242,"context_line":"            if allow_default_uri_connection:"},{"line_number":1243,"context_line":"                uri \u003d \u0027qemu:///session\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_fd015908","line":1240,"range":{"start_line":1240,"start_character":42,"end_line":1240,"end_character":47},"updated":"2019-09-03 16:52:26.000000000","message":"\u0027compute1\u0027","commit_id":"445d060cad26898840b0253f9183e9d72766b70a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4c57d4a0f552315c916be1bc7562a5f9ead9a1e8","unresolved":false,"context_lines":[{"line_number":1237,"context_line":"class Connection(object):"},{"line_number":1238,"context_line":"    def __init__(self, uri\u003dNone, readonly\u003dFalse, version\u003dFAKE_LIBVIRT_VERSION,"},{"line_number":1239,"context_line":"                 hv_version\u003dFAKE_QEMU_VERSION, host_info\u003dNone, pci_info\u003dNone,"},{"line_number":1240,"context_line":"                 mdev_info\u003dNone, hostname\u003dNone):"},{"line_number":1241,"context_line":"        if not uri or uri \u003d\u003d \u0027\u0027:"},{"line_number":1242,"context_line":"            if allow_default_uri_connection:"},{"line_number":1243,"context_line":"                uri \u003d \u0027qemu:///session\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_5d098d2e","line":1240,"range":{"start_line":1240,"start_character":31,"end_line":1240,"end_character":46},"updated":"2019-09-03 16:52:26.000000000","message":"Nice. I\u0027ve been meaning to do this for a while.","commit_id":"445d060cad26898840b0253f9183e9d72766b70a"},{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"492aba36881849265a4067a914beed5228f599ce","unresolved":false,"context_lines":[{"line_number":1237,"context_line":"class Connection(object):"},{"line_number":1238,"context_line":"    def __init__(self, uri\u003dNone, readonly\u003dFalse, version\u003dFAKE_LIBVIRT_VERSION,"},{"line_number":1239,"context_line":"                 hv_version\u003dFAKE_QEMU_VERSION, host_info\u003dNone, pci_info\u003dNone,"},{"line_number":1240,"context_line":"                 mdev_info\u003dNone, hostname\u003dNone):"},{"line_number":1241,"context_line":"        if not uri or uri \u003d\u003d \u0027\u0027:"},{"line_number":1242,"context_line":"            if allow_default_uri_connection:"},{"line_number":1243,"context_line":"                uri \u003d \u0027qemu:///session\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"5faad753_e2187f76","line":1240,"range":{"start_line":1240,"start_character":42,"end_line":1240,"end_character":47},"in_reply_to":"7faddb67_fd015908","updated":"2019-09-06 10:44:25.000000000","message":"Done","commit_id":"445d060cad26898840b0253f9183e9d72766b70a"}]}
