)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8caab858900d0e1128180f33f3ae65a9420a887f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1d895da6_84d541f8","updated":"2023-04-07 19:23:39.000000000","message":"Still working on tests and things above this","commit_id":"2f1966d41ebbaee696c2f4c807f956d485d953d2"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"449bc84c8c8365c4a3a75c6fb66d8e12bf83c281","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"479d92d2_bc8384ec","updated":"2023-05-08 14:45:32.000000000","message":"recheck must be unrelated failure.. passes locally for me","commit_id":"7e461dfcbdb7526d8b22408db9e560a15c90c981"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a8fb8519dd57ff43014d9ea26fd74de3785951c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d0535a91_145b322c","updated":"2023-05-22 13:34:26.000000000","message":"I think the bottom few of these could go in now","commit_id":"2130fa7e906be98f3667e74f52470509ea1ebcec"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"bfd965b42c16a653a2f5dd401ae8f8a3c31d2e72","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c0739780_4edacb43","updated":"2023-05-08 23:04:22.000000000","message":"Still working on this stack","commit_id":"2130fa7e906be98f3667e74f52470509ea1ebcec"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5e188383da6a65c35a246300c10badfce7f2647f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b21ee9b3_2dc67418","updated":"2023-05-18 19:44:02.000000000","message":"recheck grenade failed doing some early upgrade stuff","commit_id":"2130fa7e906be98f3667e74f52470509ea1ebcec"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4fe29ca1a1fe13a66324ce633796b961a2c9ad57","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b952dd49_12e14491","updated":"2023-05-18 17:27:21.000000000","message":"recheck neutron binding failure","commit_id":"2130fa7e906be98f3667e74f52470509ea1ebcec"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a9fd97970bc68f582faf325e0a0aedea7eb6dd86","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"adbdf7ad_371bd839","updated":"2023-05-30 19:40:25.000000000","message":"recheck grenade failed mid-upgrade in cinder","commit_id":"2d1ac0ebad93c3250c2f3ccb337a0d6909fcb577"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"732e712a43c4b5953aaa83c0244b4e463cf24575","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"7814ccb5_885451b6","updated":"2023-05-31 13:50:49.000000000","message":"recheck known functional failure","commit_id":"2d1ac0ebad93c3250c2f3ccb337a0d6909fcb577"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"50fd25ac5ad9f547626e02f5c16ec11a12b981db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"5aa99089_42943d08","updated":"2023-06-26 15:40:05.000000000","message":"everything seems good to me, I just have one comment about the UT modification and where we inject the change, which ideally could be closer to the ComputeNode object instantiation (mostly for code maintainance and readability) but this doesn\u0027t look worth holding the approval.\n\nAdded also a few resolved comments for helping other core reviewers.","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5e38cbf9abcf7783b0dd285fb9033f0b64373af0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3ac10bab_b42370bb","updated":"2023-07-14 01:44:40.000000000","message":"ill try and find some time to review the rest of the series soon but this looks like a good start","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"179c7cbc6e12537cd7cfca3bd620503b68699c28","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"508b9728_8e92d8f5","updated":"2023-06-01 18:31:10.000000000","message":"recheck a volume test failed with IO errors on the device...","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"86097db463f891ea766aa5a6367ce6a36ace45de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"5fb9a745_c0090c7e","updated":"2023-05-31 16:30:15.000000000","message":"recheck job timeout but tempest was making progress","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"afd0ea38a5d0a51737a312b81a981a78c961c1a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f67f8b2b_572626aa","updated":"2023-07-14 15:30:54.000000000","message":"recheck known mkfs slowness timeout test issue","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4f99ac001270210b45001eb6781ce7b2815fdcf7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"b131872f_087d66d1","updated":"2023-07-14 17:47:54.000000000","message":"recheck neutron did not start","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"83c9eed8e0b6c56e2426ac54e7a65eb40d3f565f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1fa6fdf2_3be8cfef","updated":"2023-07-14 12:55:23.000000000","message":"recheck unrelated resize test fail","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"}],"nova/compute/manager.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"50fd25ac5ad9f547626e02f5c16ec11a12b981db","unresolved":false,"context_lines":[{"line_number":675,"context_line":"        # NOTE(russellb) Load the driver last.  It may call back into the"},{"line_number":676,"context_line":"        # compute manager via the virtapi, so we want it to be fully"},{"line_number":677,"context_line":"        # initialized before that happens."},{"line_number":678,"context_line":"        self.service_ref \u003d None"},{"line_number":679,"context_line":"        self.driver \u003d driver.load_compute_driver(self.virtapi, compute_driver)"},{"line_number":680,"context_line":"        self.rt \u003d resource_tracker.ResourceTracker("},{"line_number":681,"context_line":"            self.host, self.driver, reportclient\u003dself.reportclient)"}],"source_content_type":"text/x-python","patch_set":8,"id":"e6450f7f_0fa3c17c","line":678,"updated":"2023-06-26 15:40:05.000000000","message":"This is OK because while we can have multiple ComputeNodes per ComputeManager, we only have *one* service running.","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"50fd25ac5ad9f547626e02f5c16ec11a12b981db","unresolved":false,"context_lines":[{"line_number":1750,"context_line":"                            instance_uuid\u003dmigration.instance_uuid)"},{"line_number":1751,"context_line":"        self._waiting_live_migrations.clear()"},{"line_number":1752,"context_line":""},{"line_number":1753,"context_line":"    def pre_start_hook(self, service_ref):"},{"line_number":1754,"context_line":"        \"\"\"After the service is initialized, but before we fully bring"},{"line_number":1755,"context_line":"        the service up by listening on RPC queues, make sure to update"},{"line_number":1756,"context_line":"        our available resources (and indirectly our available nodes)."}],"source_content_type":"text/x-python","patch_set":8,"id":"b396f055_b2306017","line":1753,"updated":"2023-06-26 15:40:05.000000000","message":"cool, right place IMO to set the service_ref","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5e38cbf9abcf7783b0dd285fb9033f0b64373af0","unresolved":false,"context_lines":[{"line_number":1750,"context_line":"                            instance_uuid\u003dmigration.instance_uuid)"},{"line_number":1751,"context_line":"        self._waiting_live_migrations.clear()"},{"line_number":1752,"context_line":""},{"line_number":1753,"context_line":"    def pre_start_hook(self, service_ref):"},{"line_number":1754,"context_line":"        \"\"\"After the service is initialized, but before we fully bring"},{"line_number":1755,"context_line":"        the service up by listening on RPC queues, make sure to update"},{"line_number":1756,"context_line":"        our available resources (and indirectly our available nodes)."}],"source_content_type":"text/x-python","patch_set":8,"id":"1e94464e_57157c5a","line":1753,"in_reply_to":"b396f055_b2306017","updated":"2023-07-14 01:44:40.000000000","message":"funnily enough i did the same in my healthcheck poc\nhttps://review.opendev.org/c/openstack/nova/+/827844/5/nova/compute/manager.py","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"}],"nova/compute/resource_tracker.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"50fd25ac5ad9f547626e02f5c16ec11a12b981db","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    \"\"\""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def __init__(self, host, driver, reportclient\u003dNone):"},{"line_number":94,"context_line":"        self.service_ref \u003d None"},{"line_number":95,"context_line":"        self.host \u003d host"},{"line_number":96,"context_line":"        self.driver \u003d driver"},{"line_number":97,"context_line":"        self.pci_tracker \u003d None"}],"source_content_type":"text/x-python","patch_set":8,"id":"85248dfc_14850360","line":94,"updated":"2023-06-26 15:40:05.000000000","message":"ditto here, we only have *one* RPC service, while the RT tracks *multiple* ComputeNode resources (see L99), so this is OK to add it here.","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"50fd25ac5ad9f547626e02f5c16ec11a12b981db","unresolved":false,"context_lines":[{"line_number":694,"context_line":"        return (nodename not in self.compute_nodes or"},{"line_number":695,"context_line":"                not self.driver.node_is_available(nodename))"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"    def _init_compute_node(self, context, resources):"},{"line_number":698,"context_line":"        \"\"\"Initialize the compute node if it does not already exist."},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"        The resource tracker will be inoperable if compute_node"}],"source_content_type":"text/x-python","patch_set":8,"id":"fea3f40f_50dc991c","line":697,"updated":"2023-06-26 15:40:05.000000000","message":"this method is called *after* pre_start_hook, so we\u0027re fine, service_ref is then set.","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5e38cbf9abcf7783b0dd285fb9033f0b64373af0","unresolved":true,"context_lines":[{"line_number":723,"context_line":"                cn.service_id \u003d self.service_ref.id"},{"line_number":724,"context_line":"            elif cn.service_id !\u003d self.service_ref.id:"},{"line_number":725,"context_line":"                LOG.warning(\u0027Moving ComputeNode %s from service %i to %i\u0027,"},{"line_number":726,"context_line":"                            cn.uuid, cn.service_id, self.service_ref.id)"},{"line_number":727,"context_line":"                cn.service_id \u003d self.service_ref.id"},{"line_number":728,"context_line":"            self._copy_resources(cn, resources)"},{"line_number":729,"context_line":"            self._setup_pci_tracker(context, cn, resources)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7d8daac2_bdecce08","line":726,"updated":"2023-07-14 01:44:40.000000000","message":"this could happen for ironic.\notherwise im not sure how we would get here.","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"}],"nova/service.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"50fd25ac5ad9f547626e02f5c16ec11a12b981db","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        self.service_ref \u003d service_ref"},{"line_number":447,"context_line":"        if self.manager:"},{"line_number":448,"context_line":"            self.manager.init_host()"},{"line_number":449,"context_line":"            self.manager.pre_start_hook(self.service_ref)"},{"line_number":450,"context_line":"            if self.backdoor_port is not None:"},{"line_number":451,"context_line":"                self.manager.backdoor_port \u003d self.backdoor_port"},{"line_number":452,"context_line":"        self.server.start()"}],"source_content_type":"text/x-python","patch_set":8,"id":"f5d55f87_0353ddc7","line":449,"updated":"2023-06-26 15:40:05.000000000","message":"++","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"50fd25ac5ad9f547626e02f5c16ec11a12b981db","unresolved":true,"context_lines":[{"line_number":212,"context_line":"        self.service \u003d objects.Service(id\u003d7,"},{"line_number":213,"context_line":"                                       host\u003dself.compute.host)"},{"line_number":214,"context_line":"        # NOTE(danms): This calls update_available_resource() for us"},{"line_number":215,"context_line":"        self.compute.pre_start_hook(self.service)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        self.user_id \u003d \u0027fake\u0027"},{"line_number":218,"context_line":"        self.project_id \u003d \u0027fake\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"ea67241e_dadc3518","line":215,"updated":"2023-06-26 15:40:05.000000000","message":"nit: this is fine to add this line here in order to populate service_ref but you could move the Service creation before the ComputeNode object to mimic the actual behavior, ie. before L153 (and then inject the service_ref right after L153)","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ec2ae6f9d7d5accb8d7a8972ea1af6c37e913367","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        self.service \u003d objects.Service(id\u003d7,"},{"line_number":213,"context_line":"                                       host\u003dself.compute.host)"},{"line_number":214,"context_line":"        # NOTE(danms): This calls update_available_resource() for us"},{"line_number":215,"context_line":"        self.compute.pre_start_hook(self.service)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        self.user_id \u003d \u0027fake\u0027"},{"line_number":218,"context_line":"        self.project_id \u003d \u0027fake\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"f24bfd7e_69de2922","line":215,"in_reply_to":"925e4d23_1a06ab55","updated":"2023-07-11 12:34:29.000000000","message":"Fair enough 👍","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e89f18127943b26215aabb459184b6c2629ed794","unresolved":true,"context_lines":[{"line_number":212,"context_line":"        self.service \u003d objects.Service(id\u003d7,"},{"line_number":213,"context_line":"                                       host\u003dself.compute.host)"},{"line_number":214,"context_line":"        # NOTE(danms): This calls update_available_resource() for us"},{"line_number":215,"context_line":"        self.compute.pre_start_hook(self.service)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        self.user_id \u003d \u0027fake\u0027"},{"line_number":218,"context_line":"        self.project_id \u003d \u0027fake\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"925e4d23_1a06ab55","line":215,"in_reply_to":"ea67241e_dadc3518","updated":"2023-06-26 15:45:39.000000000","message":"I could, but I opted to put it here since I\u0027m removing the update_available_resource() call and replacing it with this, which does it. I didn\u0027t want to break or change anything else that might be depending on it happening here.","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"}],"nova/tests/unit/compute/test_resource_tracker.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"50fd25ac5ad9f547626e02f5c16ec11a12b981db","unresolved":false,"context_lines":[{"line_number":509,"context_line":"        rt \u003d resource_tracker.ResourceTracker(hostname, vd)"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"    fake_service \u003d objects.Service(id\u003d_SERVICE_ID, host\u003dhostname)"},{"line_number":512,"context_line":"    rt.set_service_ref(fake_service)"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"    return (rt, query_client_mock, report_client_mock, vd)"},{"line_number":515,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"6c14650c_9fb79c4d","line":512,"updated":"2023-06-26 15:40:05.000000000","message":"right place to add it","commit_id":"afad847e4d52243f4899591aa0907e347b37b6cf"}]}
