)]}'
{"nova/tests/functional/regressions/test_bug_1839560.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"445dd5c48febbc42f5f660c7690709eb8fcdbfda","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_update_available_resource_node_recreate(self):"},{"line_number":60,"context_line":"        # First we create a compute service to manage a couple of fake nodes."},{"line_number":61,"context_line":"        compute \u003d self.start_service(\u0027compute\u0027, \u0027node1\u0027)"},{"line_number":62,"context_line":"        # When start_service runs, it will create the node1 ComputeNode."},{"line_number":63,"context_line":"        compute.manager.driver._set_nodes([\u0027node1\u0027, \u0027node2\u0027])"},{"line_number":64,"context_line":"        # Run the update_available_resource periodic to register node2."}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_37e529dd","line":61,"range":{"start_line":61,"start_character":48,"end_line":61,"end_character":55},"updated":"2019-08-12 23:52:45.000000000","message":"It\u0027s pretty confusing that the host has the same name as one of the compute nodes. That doesn\u0027t happen irl, right?\n\nI guess we\u0027re doing this because start_service first tries to register a compute node named after the host, and then before the driver kicks in, it\u0027ll see that node which isn\u0027t in the driver\u0027s list, so it\u0027ll think it\u0027s orphaned and delete it.\n\nWhich would be okay, and is what normally happens in ironic-driver-land -- but it would mess up the check on L68-9.\n\nUgh.","commit_id":"89dd74ac7f1028daadf86cb18948e27fe9d1d411"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2c085233f3fc6814575a0993724826df2836f3e4","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_update_available_resource_node_recreate(self):"},{"line_number":60,"context_line":"        # First we create a compute service to manage a couple of fake nodes."},{"line_number":61,"context_line":"        compute \u003d self.start_service(\u0027compute\u0027, \u0027node1\u0027)"},{"line_number":62,"context_line":"        # When start_service runs, it will create the node1 ComputeNode."},{"line_number":63,"context_line":"        compute.manager.driver._set_nodes([\u0027node1\u0027, \u0027node2\u0027])"},{"line_number":64,"context_line":"        # Run the update_available_resource periodic to register node2."}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_de9dbe0a","line":61,"range":{"start_line":61,"start_character":48,"end_line":61,"end_character":55},"in_reply_to":"7faddb67_37e529dd","updated":"2019-08-13 19:41:30.000000000","message":"Yup. So rather than startup a compute with host\u003d\u0027host1\u0027, then deliberately deal with removing the \u0027host1\u0027 node, I just went with node1 and then node2 and yes it\u0027s sort of confusing but I thought the other thing was gross as well.","commit_id":"89dd74ac7f1028daadf86cb18948e27fe9d1d411"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"679dbafb87838ff6541ab9625b6cd4d50f74b7b4","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_update_available_resource_node_recreate(self):"},{"line_number":60,"context_line":"        # First we create a compute service to manage a couple of fake nodes."},{"line_number":61,"context_line":"        compute \u003d self.start_service(\u0027compute\u0027, \u0027node1\u0027)"},{"line_number":62,"context_line":"        # When start_service runs, it will create the node1 ComputeNode."},{"line_number":63,"context_line":"        compute.manager.driver._set_nodes([\u0027node1\u0027, \u0027node2\u0027])"},{"line_number":64,"context_line":"        # Run the update_available_resource periodic to register node2."}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_209dccba","line":61,"range":{"start_line":61,"start_character":48,"end_line":61,"end_character":55},"in_reply_to":"7faddb67_de9dbe0a","updated":"2019-08-13 19:59:23.000000000","message":"ack","commit_id":"89dd74ac7f1028daadf86cb18948e27fe9d1d411"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"445dd5c48febbc42f5f660c7690709eb8fcdbfda","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        # But the node2 ComputeNode is still in the database with deleted!\u003d0."},{"line_number":89,"context_line":"        with utils.temporary_mutation(ctxt, read_deleted\u003d\u0027yes\u0027):"},{"line_number":90,"context_line":"            cn \u003d objects.ComputeNode.get_by_host_and_nodename("},{"line_number":91,"context_line":"                ctxt, \u0027node1\u0027, \u0027node2\u0027)"},{"line_number":92,"context_line":"            self.assertTrue(cn.deleted)"},{"line_number":93,"context_line":"        # Now stub the driver again to report node2 as being back and run"},{"line_number":94,"context_line":"        # the periodic task."}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_57e8e5b1","line":91,"range":{"start_line":91,"start_character":22,"end_line":91,"end_character":38},"updated":"2019-08-12 23:52:45.000000000","message":"it\u0027s particularly confusing here","commit_id":"89dd74ac7f1028daadf86cb18948e27fe9d1d411"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"94fb25fcb8bfdb6d6702de5e6cb188d9a9201bb9","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        # But the node2 ComputeNode is still in the database with deleted!\u003d0."},{"line_number":89,"context_line":"        with utils.temporary_mutation(ctxt, read_deleted\u003d\u0027yes\u0027):"},{"line_number":90,"context_line":"            cn \u003d objects.ComputeNode.get_by_host_and_nodename("},{"line_number":91,"context_line":"                ctxt, \u0027node1\u0027, \u0027node2\u0027)"},{"line_number":92,"context_line":"            self.assertTrue(cn.deleted)"},{"line_number":93,"context_line":"        # Now stub the driver again to report node2 as being back and run"},{"line_number":94,"context_line":"        # the periodic task."}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_1fb49f35","line":91,"range":{"start_line":91,"start_character":22,"end_line":91,"end_character":38},"in_reply_to":"7faddb67_009a10c4","updated":"2019-08-14 17:26:26.000000000","message":"I think that mocking out the fake driver\u0027s get_available_nodes() would be the only way to make this better, but I agree, it\u0027s not really worth it. We have elsewhere that the host and node name match in the tests.","commit_id":"89dd74ac7f1028daadf86cb18948e27fe9d1d411"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"50e5101659ec403e6f917511bf644d915b5bd8f6","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        # But the node2 ComputeNode is still in the database with deleted!\u003d0."},{"line_number":89,"context_line":"        with utils.temporary_mutation(ctxt, read_deleted\u003d\u0027yes\u0027):"},{"line_number":90,"context_line":"            cn \u003d objects.ComputeNode.get_by_host_and_nodename("},{"line_number":91,"context_line":"                ctxt, \u0027node1\u0027, \u0027node2\u0027)"},{"line_number":92,"context_line":"            self.assertTrue(cn.deleted)"},{"line_number":93,"context_line":"        # Now stub the driver again to report node2 as being back and run"},{"line_number":94,"context_line":"        # the periodic task."}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_9f0f2f38","line":91,"range":{"start_line":91,"start_character":22,"end_line":91,"end_character":38},"in_reply_to":"7faddb67_1fb49f35","updated":"2019-08-14 18:21:20.000000000","message":"\u003e I think that mocking out the fake driver\u0027s get_available_nodes()\n \u003e would be the only way to make this better, but I agree, it\u0027s not\n \u003e really worth it. We have elsewhere that the host and node name\n \u003e match in the tests.\n\nThat\u0027s what the old fake.set_nodes/restore_nodes globals were for, but those were removed so I\u0027m dealing with things this way.","commit_id":"89dd74ac7f1028daadf86cb18948e27fe9d1d411"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2c085233f3fc6814575a0993724826df2836f3e4","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        # But the node2 ComputeNode is still in the database with deleted!\u003d0."},{"line_number":89,"context_line":"        with utils.temporary_mutation(ctxt, read_deleted\u003d\u0027yes\u0027):"},{"line_number":90,"context_line":"            cn \u003d objects.ComputeNode.get_by_host_and_nodename("},{"line_number":91,"context_line":"                ctxt, \u0027node1\u0027, \u0027node2\u0027)"},{"line_number":92,"context_line":"            self.assertTrue(cn.deleted)"},{"line_number":93,"context_line":"        # Now stub the driver again to report node2 as being back and run"},{"line_number":94,"context_line":"        # the periodic task."}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_be8242a4","line":91,"range":{"start_line":91,"start_character":22,"end_line":91,"end_character":38},"in_reply_to":"7faddb67_57e8e5b1","updated":"2019-08-13 19:41:30.000000000","message":"Would using named args help?","commit_id":"89dd74ac7f1028daadf86cb18948e27fe9d1d411"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"679dbafb87838ff6541ab9625b6cd4d50f74b7b4","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        # But the node2 ComputeNode is still in the database with deleted!\u003d0."},{"line_number":89,"context_line":"        with utils.temporary_mutation(ctxt, read_deleted\u003d\u0027yes\u0027):"},{"line_number":90,"context_line":"            cn \u003d objects.ComputeNode.get_by_host_and_nodename("},{"line_number":91,"context_line":"                ctxt, \u0027node1\u0027, \u0027node2\u0027)"},{"line_number":92,"context_line":"            self.assertTrue(cn.deleted)"},{"line_number":93,"context_line":"        # Now stub the driver again to report node2 as being back and run"},{"line_number":94,"context_line":"        # the periodic task."}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_009a10c4","line":91,"range":{"start_line":91,"start_character":22,"end_line":91,"end_character":38},"in_reply_to":"7faddb67_be8242a4","updated":"2019-08-13 19:59:23.000000000","message":"meh","commit_id":"89dd74ac7f1028daadf86cb18948e27fe9d1d411"}],"nova/virt/fake.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"445dd5c48febbc42f5f660c7690709eb8fcdbfda","unresolved":false,"context_lines":[{"line_number":736,"context_line":"            PredictableNodeUUIDDriver, self).get_available_resource(nodename)"},{"line_number":737,"context_line":"        # This is used in ComputeNode.update_from_virt_driver which is called"},{"line_number":738,"context_line":"        # from the ResourceTracker when creating a ComputeNode."},{"line_number":739,"context_line":"        resources[\u0027uuid\u0027] \u003d uuid.uuid5(uuid.NAMESPACE_DNS, nodename)"},{"line_number":740,"context_line":"        return resources"},{"line_number":741,"context_line":""},{"line_number":742,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_97909d44","line":739,"range":{"start_line":739,"start_character":33,"end_line":739,"end_character":38},"updated":"2019-08-12 23:52:45.000000000","message":"✔","commit_id":"89dd74ac7f1028daadf86cb18948e27fe9d1d411"}]}
