)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be253ea713bb7261663f1c8a8fa0eccbd371e7d","unresolved":true,"context_lines":[{"line_number":30,"context_line":"Closes-Bug: #2139369"},{"line_number":31,"context_line":"Change-Id: Ie7f38dd813d62a71d0ccbe2fe167d6a72f2f6a01"},{"line_number":32,"context_line":"Signed-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e"},{"line_number":33,"context_line":"Co-authored-by: Cursor \u003ccursoragent@cursor.com\u003e"},{"line_number":34,"context_line":"Signed-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"8a3459bf_87ee6544","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":49},"updated":"2026-02-23 18:18:48.000000000","message":"i should fix this up so ill do one more minor revision\nill fix this once ci reports\nthen ill reappvoe and we cna review this in the irc meeting tomorrow\n\nif no other feedback is recived ill proceed withthis after the meeting","commit_id":"006bedd93710b8645538e665470a59c574fffcac"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5727655ef6c137b542c3dfb1d4a757d2373aa870","unresolved":false,"context_lines":[{"line_number":30,"context_line":"Closes-Bug: #2139369"},{"line_number":31,"context_line":"Change-Id: Ie7f38dd813d62a71d0ccbe2fe167d6a72f2f6a01"},{"line_number":32,"context_line":"Signed-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e"},{"line_number":33,"context_line":"Co-authored-by: Cursor \u003ccursoragent@cursor.com\u003e"},{"line_number":34,"context_line":"Signed-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"29c2a4fb_00a7db0d","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":49},"in_reply_to":"8a3459bf_87ee6544","updated":"2026-02-24 16:37:37.000000000","message":"Done","commit_id":"006bedd93710b8645538e665470a59c574fffcac"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"03706d4762893d858cc14f93707c8859d457cab9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2ac951fa_e8b9c9fa","updated":"2026-02-13 09:31:24.000000000","message":"This improves things to \"fail early\", but making the agent requiring Placement to be reachable at startup. Previously, the agent would start and only fail during `update_usage` periodic task. Operators need to be aware that the agent will now refuse to start if Placement is unavailable. This should go to update impact in reno notes","commit_id":"4ecd974db123dc65bba2031627b32fc48c7bd04b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cd9571971527553d8eb6e15e53627114562d5569","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"9eedb96b_36894726","in_reply_to":"2ac951fa_e8b9c9fa","updated":"2026-02-13 11:11:08.000000000","message":"yep this bring it inline with nova-compute\nif placmeemnt is not up nova-comptue cnat satart adn teh resouce provider that cyborg is depending on will not be aviable.\n\n\ni can call this out in the reno yes\nnext cycle i will proably spend some tiem reqorkign cybrog placement interaction so that it never uses the condurcotr to update the RPs moving all placment interaction to the agent instead.\n\nbut i need to spend more tiem planing that work before starting it.","commit_id":"4ecd974db123dc65bba2031627b32fc48c7bd04b"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"98a5ac6a53eeca814f1363763742a1b307b27474","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e51a64a5_bf652e5d","in_reply_to":"9eedb96b_36894726","updated":"2026-02-17 10:32:32.000000000","message":"thanks for addressing that","commit_id":"4ecd974db123dc65bba2031627b32fc48c7bd04b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c50ee29a228797dec7688ce3d59593b5959e4bd8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"9140a451_b174455b","updated":"2026-02-16 19:47:56.000000000","message":"im mostly happy with this ill revist the excption handelign but perhaps in a followup","commit_id":"992a3e229eff8d2944d9e4ff89d181fdcfa5fbcd"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"98a5ac6a53eeca814f1363763742a1b307b27474","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"d73b7d45_bb173743","in_reply_to":"9140a451_b174455b","updated":"2026-02-17 10:32:32.000000000","message":"thanks, that is acceptable, however, placing a TODO comment in the code would be helpful","commit_id":"992a3e229eff8d2944d9e4ff89d181fdcfa5fbcd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ed2477ed9fb0f51e0cad95440eb7ed8926fdc00b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"2e3f5a8d_ef057391","updated":"2026-02-19 17:26:14.000000000","message":"https://termbin.com/r7h7\nconfirmt this workign localy again im going to proceed with this and the preceedign patches","commit_id":"05b3090c94d473cf0176eed7300cbfe452ded7ad"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"98c55d55b65efb5c0b6b41c18e5aa549a25947df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"c32d5f3d_6395ec59","updated":"2026-02-18 00:21:20.000000000","message":"i think this is not good to go but ill leave this open for a few days for others to review.","commit_id":"05b3090c94d473cf0176eed7300cbfe452ded7ad"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4013f2b3a0b5972b9c3f9d1e363af009ab9961e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"a00514be_9f4fc2eb","updated":"2026-02-23 14:53:57.000000000","message":"i need to investaget the ci failure more","commit_id":"c16a7108fefdc6e29885d437e97562e65dbf003e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c8e8d2c9194d43b0518b99cfb4a81c40a7b19e8f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d69eaed8_7e3116c5","updated":"2026-02-23 17:44:18.000000000","message":"recheck restoring +2 lets run again to ensure stability in ci","commit_id":"ebb6432e20cf5dcf12b3965feb58af92974086d1"}],"cyborg/agent/manager.py":[{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"03706d4762893d858cc14f93707c8859d457cab9","unresolved":true,"context_lines":[{"line_number":67,"context_line":"        self.cond_api \u003d cond_api.ConductorAPI()"},{"line_number":68,"context_line":"        self.agent_api \u003d AgentAPI()"},{"line_number":69,"context_line":"        self.image_api \u003d ImageAPI()"},{"line_number":70,"context_line":"        self._rt \u003d ResourceTracker(self.resource_provider_name, self.cond_api)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _get_resource_provider_name(self):"},{"line_number":73,"context_line":"        \"\"\"Determine the correct resource provider name by querying Placement."}],"source_content_type":"text/x-python","patch_set":6,"id":"b963af75_91996881","line":70,"updated":"2026-02-13 09:31:24.000000000","message":"worth noting this extra fix of hte pre-existing latent bug in the commit message as it improves handling of `self.host is None`","commit_id":"4ecd974db123dc65bba2031627b32fc48c7bd04b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a856ed5f254dc2d893e4401592a82e3befed9762","unresolved":true,"context_lines":[{"line_number":67,"context_line":"        self.cond_api \u003d cond_api.ConductorAPI()"},{"line_number":68,"context_line":"        self.agent_api \u003d AgentAPI()"},{"line_number":69,"context_line":"        self.image_api \u003d ImageAPI()"},{"line_number":70,"context_line":"        self._rt \u003d ResourceTracker(self.resource_provider_name, self.cond_api)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _get_resource_provider_name(self):"},{"line_number":73,"context_line":"        \"\"\"Determine the correct resource provider name by querying Placement."}],"source_content_type":"text/x-python","patch_set":6,"id":"c8cdbbe8_3457072f","line":70,"in_reply_to":"b963af75_91996881","updated":"2026-02-16 17:15:06.000000000","message":"host is never none\nit default to socket.gethostname which returns localhost if it cant determin one.\nhttps://github.com/openstack/cyborg/blob/master/cyborg/conf/default.py#L35-L42\nbut it is still more robust then before yes.\n\nthe fact that that si never None is a effective fo libc behaviour which is very non obvious.\n\nhttps://docs.python.org/3/library/socket.html#socket.gethostname\n\nmusl libc i beilve has the same behvior but its techinally not soemthign that is defiend in teh python docs","commit_id":"4ecd974db123dc65bba2031627b32fc48c7bd04b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c50ee29a228797dec7688ce3d59593b5959e4bd8","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.cond_api \u003d cond_api.ConductorAPI()"},{"line_number":68,"context_line":"        self.agent_api \u003d AgentAPI()"},{"line_number":69,"context_line":"        self.image_api \u003d ImageAPI()"},{"line_number":70,"context_line":"        self._rt \u003d ResourceTracker(self.resource_provider_name, self.cond_api)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _get_resource_provider_name(self):"},{"line_number":73,"context_line":"        \"\"\"Determine the correct resource provider name by querying Placement."}],"source_content_type":"text/x-python","patch_set":6,"id":"dd119bdc_268c88ee","line":70,"in_reply_to":"c8cdbbe8_3457072f","updated":"2026-02-16 19:47:56.000000000","message":"Acknowledged","commit_id":"4ecd974db123dc65bba2031627b32fc48c7bd04b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c50ee29a228797dec7688ce3d59593b5959e4bd8","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        :returns: True if the resource provider exists, False otherwise."},{"line_number":112,"context_line":"        \"\"\""},{"line_number":113,"context_line":"        try:"},{"line_number":114,"context_line":"            resp \u003d self.placement_client.get("},{"line_number":115,"context_line":"                \"/resource_providers?name\u003d\" + hostname)"},{"line_number":116,"context_line":"            providers \u003d resp.json().get(\"resource_providers\", [])"},{"line_number":117,"context_line":"            return len(providers) \u003e 0"}],"source_content_type":"text/x-python","patch_set":8,"id":"ad744e92_f7d85856","line":114,"in_reply_to":"8f87d020_2cb84e5d","updated":"2026-02-16 19:47:56.000000000","message":"this is true but in this specific case if there is any error i want to catch it and return false\n\nwe will likely rewrok this more in the future.","commit_id":"992a3e229eff8d2944d9e4ff89d181fdcfa5fbcd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c50ee29a228797dec7688ce3d59593b5959e4bd8","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        :returns: True if the resource provider exists, False otherwise."},{"line_number":112,"context_line":"        \"\"\""},{"line_number":113,"context_line":"        try:"},{"line_number":114,"context_line":"            resp \u003d self.placement_client.get("},{"line_number":115,"context_line":"                \"/resource_providers?name\u003d\" + hostname)"},{"line_number":116,"context_line":"            providers \u003d resp.json().get(\"resource_providers\", [])"},{"line_number":117,"context_line":"            return len(providers) \u003e 0"}],"source_content_type":"text/x-python","patch_set":8,"id":"80fffcd2_4b21f9e6","line":114,"in_reply_to":"e93724d8_7efef79e","updated":"2026-02-16 19:47:56.000000000","message":"this si not usign untrusted input so this is fine.","commit_id":"992a3e229eff8d2944d9e4ff89d181fdcfa5fbcd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d5d9e54f9e41bcd1ed97594ff46d632dc924e0f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                \"/resource_providers?name\u003d\" + hostname)"},{"line_number":116,"context_line":"            providers \u003d resp.json().get(\"resource_providers\", [])"},{"line_number":117,"context_line":"            return len(providers) \u003e 0"},{"line_number":118,"context_line":"        except Exception as e:"},{"line_number":119,"context_line":"            LOG.warning("},{"line_number":120,"context_line":"                \"Failed to check resource provider \u0027%(name)s\u0027: %(err)s\","},{"line_number":121,"context_line":"                {\u0027name\u0027: hostname, \u0027err\u0027: e})"}],"source_content_type":"text/x-python","patch_set":8,"id":"5e84124e_a20bff46","line":118,"in_reply_to":"4347a4e2_f3b131e8","updated":"2026-02-23 18:04:13.000000000","message":"Acknowledged","commit_id":"992a3e229eff8d2944d9e4ff89d181fdcfa5fbcd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c50ee29a228797dec7688ce3d59593b5959e4bd8","unresolved":true,"context_lines":[{"line_number":115,"context_line":"                \"/resource_providers?name\u003d\" + hostname)"},{"line_number":116,"context_line":"            providers \u003d resp.json().get(\"resource_providers\", [])"},{"line_number":117,"context_line":"            return len(providers) \u003e 0"},{"line_number":118,"context_line":"        except Exception as e:"},{"line_number":119,"context_line":"            LOG.warning("},{"line_number":120,"context_line":"                \"Failed to check resource provider \u0027%(name)s\u0027: %(err)s\","},{"line_number":121,"context_line":"                {\u0027name\u0027: hostname, \u0027err\u0027: e})"}],"source_content_type":"text/x-python","patch_set":8,"id":"4347a4e2_f3b131e8","line":118,"in_reply_to":"e12a877b_dc20edc8","updated":"2026-02-16 19:47:56.000000000","message":"i guess i could catch keystoneauth1.exceptions.ClientError or a generic sdk excption but i may do that in a follup ill look into that tomorow\n\nthe placem client is unfortunly doing raise Excpton in a number of places\n\nhttps://github.com/openstack/cyborg/blob/master/cyborg/common/placement_client.py#L80-L82\n\nso i need to fix htat before we can really clean that up everyehere\n\nhttps://github.com/openstack/cyborg/blob/master/cyborg/common/placement_client.py#L40\n\nin this case i think if i catch keystoneauth1.exceptions.ClientError and exception.PlacementServerError it shoudl be enough","commit_id":"992a3e229eff8d2944d9e4ff89d181fdcfa5fbcd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7377c36ef3a63b2c8ed391261263e79586dd15da","unresolved":true,"context_lines":[{"line_number":103,"context_line":"            \"Placement, or set [agent] resource_provider_name to match \""},{"line_number":104,"context_line":"            \"the compute node\u0027s hypervisor_hostname.\", candidates)"},{"line_number":105,"context_line":"        raise exception.PlacementResourceProviderNotFound("},{"line_number":106,"context_line":"            resource_provider\u003dprimary)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def _check_resource_provider_exists(self, hostname):"},{"line_number":109,"context_line":"        \"\"\"Check if a resource provider exists in Placement."}],"source_content_type":"text/x-python","patch_set":10,"id":"12f174b1_863e9198","line":106,"updated":"2026-02-23 15:06:18.000000000","message":"so cyborg is failing here\n\nnova is creating the resouce provider at 19:58:42.317155 with name np139e779d9b9f4\n\n```\nFeb 19 19:58:42.189632 np139e779d9b9f4 nova-compute[70204]: DEBUG nova.compute.resource_tracker [None req-f9814eb3-7d0c-4d3b-8208-298fc77799da None None] Final resource view: name\u003dnp139e779d9b9f4 phys_ram\u003d7941MB used_ram\u003d512MB phys_disk\u003d53GB used_disk\u003d0GB total_vcpus\u003d4 used_vcpus\u003d0 pci_stats\u003d[] stats\u003d{\u0027failed_builds\u0027: \u00270\u0027, \u0027uptime\u0027: \u0027 19:58:39 up 11 min,  1 user,  load average: 2.15, 1.32, 0.65\\n\u0027} {{(pid\u003d70204) _report_final_resource_view /opt/stack/nova/nova/compute/resource_tracker.py:1168}}\nFeb 19 19:58:42.317155 np139e779d9b9f4 nova-compute[70204]: INFO nova.scheduler.client.report [None req-f9814eb3-7d0c-4d3b-8208-298fc77799da None None] [req-82ddfa47-b607-4de6-a1be-41702b60b8c5] Created resource provider record via placement API for resource provider with UUID a8c2cc8d-d94f-4e46-bc74-67941df21da6 and name np139e779d9b9f4.\n```\n\nand cyborg is failing at 19:58:41.307715 so before the resouce provider is created.\n\n```\nFeb 19 19:58:41.307715 np139e779d9b9f4 cyborg-agent[74266]: 2026-02-19 19:58:41.307 74266 ERROR cyborg cyborg.common.exception.PlacementResourceProviderNotFound: Placement resource provider not found: np139e779d9b9f4.\n```\n\nso this is causing the agent to fail fast like i wanted but we are not waitign for the nova-compute service ot create teh RP before starting cyborg.\n\nto address this i am going to add a second config option to contole the number of retires before we give up and exit and implement an expeneital back off.\n\ni.e. 1 second then 2 then 4 ectra.\n\nthat will give a bit of breathing room in start up ordering while still failing fast as we wanted.","commit_id":"c16a7108fefdc6e29885d437e97562e65dbf003e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d5d9e54f9e41bcd1ed97594ff46d632dc924e0f","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            \"Placement, or set [agent] resource_provider_name to match \""},{"line_number":104,"context_line":"            \"the compute node\u0027s hypervisor_hostname.\", candidates)"},{"line_number":105,"context_line":"        raise exception.PlacementResourceProviderNotFound("},{"line_number":106,"context_line":"            resource_provider\u003dprimary)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def _check_resource_provider_exists(self, hostname):"},{"line_number":109,"context_line":"        \"\"\"Check if a resource provider exists in Placement."}],"source_content_type":"text/x-python","patch_set":10,"id":"c899cd09_76061426","line":106,"in_reply_to":"12f174b1_863e9198","updated":"2026-02-23 18:04:13.000000000","message":"Done","commit_id":"c16a7108fefdc6e29885d437e97562e65dbf003e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"27100301e2aef87adabed46ff6cb2076f239c712","unresolved":true,"context_lines":[{"line_number":75,"context_line":"            except exception.PlacementResourceProviderNotFound:"},{"line_number":76,"context_line":"                if attempt \u003c retries:"},{"line_number":77,"context_line":"                    wait \u003d 2 ** attempt  # 1, 2, 4, 8, ..."},{"line_number":78,"context_line":"                    LOG.warning("},{"line_number":79,"context_line":"                        \"Resource provider not found in Placement, \""},{"line_number":80,"context_line":"                        \"retrying in %(wait)ds (attempt %(attempt)d/\""},{"line_number":81,"context_line":"                        \"%(total)d)\","}],"source_content_type":"text/x-python","patch_set":11,"id":"ff57a6d1_b066efd9","line":78,"in_reply_to":"c75e238d_2ae034b1","updated":"2026-02-23 17:48:00.000000000","message":"oh yes i shoudl fix that.","commit_id":"ebb6432e20cf5dcf12b3965feb58af92974086d1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d5d9e54f9e41bcd1ed97594ff46d632dc924e0f","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            except exception.PlacementResourceProviderNotFound:"},{"line_number":76,"context_line":"                if attempt \u003c retries:"},{"line_number":77,"context_line":"                    wait \u003d 2 ** attempt  # 1, 2, 4, 8, ..."},{"line_number":78,"context_line":"                    LOG.warning("},{"line_number":79,"context_line":"                        \"Resource provider not found in Placement, \""},{"line_number":80,"context_line":"                        \"retrying in %(wait)ds (attempt %(attempt)d/\""},{"line_number":81,"context_line":"                        \"%(total)d)\","}],"source_content_type":"text/x-python","patch_set":11,"id":"e7bfd9d9_10a3679e","line":78,"in_reply_to":"ff57a6d1_b066efd9","updated":"2026-02-23 18:04:13.000000000","message":"Done","commit_id":"ebb6432e20cf5dcf12b3965feb58af92974086d1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d5d9e54f9e41bcd1ed97594ff46d632dc924e0f","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        :returns: True if the resource provider exists, False otherwise."},{"line_number":134,"context_line":"        \"\"\""},{"line_number":135,"context_line":"        try:"},{"line_number":136,"context_line":"            resp \u003d self.placement_client.get("},{"line_number":137,"context_line":"                \"/resource_providers?name\u003d\" + hostname)"},{"line_number":138,"context_line":"            providers \u003d resp.json().get(\"resource_providers\", [])"},{"line_number":139,"context_line":"            return len(providers) \u003e 0"}],"source_content_type":"text/x-python","patch_set":11,"id":"f0dc95e8_da6f6813","line":136,"in_reply_to":"0fe20de8_91b6cef1","updated":"2026-02-23 18:04:13.000000000","message":"Done","commit_id":"ebb6432e20cf5dcf12b3965feb58af92974086d1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"27100301e2aef87adabed46ff6cb2076f239c712","unresolved":true,"context_lines":[{"line_number":133,"context_line":"        :returns: True if the resource provider exists, False otherwise."},{"line_number":134,"context_line":"        \"\"\""},{"line_number":135,"context_line":"        try:"},{"line_number":136,"context_line":"            resp \u003d self.placement_client.get("},{"line_number":137,"context_line":"                \"/resource_providers?name\u003d\" + hostname)"},{"line_number":138,"context_line":"            providers \u003d resp.json().get(\"resource_providers\", [])"},{"line_number":139,"context_line":"            return len(providers) \u003e 0"}],"source_content_type":"text/x-python","patch_set":11,"id":"0fe20de8_91b6cef1","line":136,"in_reply_to":"9c7fc3fa_a32a7846","updated":"2026-02-23 17:48:00.000000000","message":"ok lets just escape this it safe but we can do that quickly","commit_id":"ebb6432e20cf5dcf12b3965feb58af92974086d1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"27100301e2aef87adabed46ff6cb2076f239c712","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        :returns: True if the resource provider exists, False otherwise."},{"line_number":134,"context_line":"        \"\"\""},{"line_number":135,"context_line":"        try:"},{"line_number":136,"context_line":"            resp \u003d self.placement_client.get("},{"line_number":137,"context_line":"                \"/resource_providers?name\u003d\" + hostname)"},{"line_number":138,"context_line":"            providers \u003d resp.json().get(\"resource_providers\", [])"},{"line_number":139,"context_line":"            return len(providers) \u003e 0"}],"source_content_type":"text/x-python","patch_set":11,"id":"ed1c2c2a_55d8bfb7","line":136,"in_reply_to":"d3cea2d5_31e77755","updated":"2026-02-23 17:48:00.000000000","message":"this is not handelign untrusted data","commit_id":"ebb6432e20cf5dcf12b3965feb58af92974086d1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d5d9e54f9e41bcd1ed97594ff46d632dc924e0f","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        try:"},{"line_number":136,"context_line":"            resp \u003d self.placement_client.get("},{"line_number":137,"context_line":"                \"/resource_providers?name\u003d\" + hostname)"},{"line_number":138,"context_line":"            providers \u003d resp.json().get(\"resource_providers\", [])"},{"line_number":139,"context_line":"            return len(providers) \u003e 0"},{"line_number":140,"context_line":"        except (ks_exc.ClientException,"},{"line_number":141,"context_line":"                exception.PlacementServerError) as e:"}],"source_content_type":"text/x-python","patch_set":11,"id":"56a784b4_ef1c965e","line":138,"in_reply_to":"190cfaaa_606d31c7","updated":"2026-02-23 18:04:13.000000000","message":"Done","commit_id":"ebb6432e20cf5dcf12b3965feb58af92974086d1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"27100301e2aef87adabed46ff6cb2076f239c712","unresolved":true,"context_lines":[{"line_number":135,"context_line":"        try:"},{"line_number":136,"context_line":"            resp \u003d self.placement_client.get("},{"line_number":137,"context_line":"                \"/resource_providers?name\u003d\" + hostname)"},{"line_number":138,"context_line":"            providers \u003d resp.json().get(\"resource_providers\", [])"},{"line_number":139,"context_line":"            return len(providers) \u003e 0"},{"line_number":140,"context_line":"        except (ks_exc.ClientException,"},{"line_number":141,"context_line":"                exception.PlacementServerError) as e:"}],"source_content_type":"text/x-python","patch_set":11,"id":"190cfaaa_606d31c7","line":138,"in_reply_to":"e7a97ec4_4f48dd48","updated":"2026-02-23 17:48:00.000000000","message":"ok i will also adress this","commit_id":"ebb6432e20cf5dcf12b3965feb58af92974086d1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be253ea713bb7261663f1c8a8fa0eccbd371e7d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- coding: utf-8 -*-"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":12,"id":"88f9f9b6_5f4990bb","line":1,"in_reply_to":"525322bf_b72957c6","updated":"2026-02-23 18:18:48.000000000","message":"yes... not sure why it was reproted here but ill fix that","commit_id":"006bedd93710b8645538e665470a59c574fffcac"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be253ea713bb7261663f1c8a8fa0eccbd371e7d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                break"},{"line_number":76,"context_line":"            except exception.PlacementResourceProviderNotFound:"},{"line_number":77,"context_line":"                if attempt \u003c retries:"},{"line_number":78,"context_line":"                    wait \u003d 2 ** attempt  # 1, 2, 4, 8, ..."},{"line_number":79,"context_line":"                    LOG.warning("},{"line_number":80,"context_line":"                        \"Resource provider not found in Placement, \""},{"line_number":81,"context_line":"                        \"retrying in %(wait)ds (attempt %(attempt)d/\""}],"source_content_type":"text/x-python","patch_set":12,"id":"1d611d89_a605aff7","line":78,"in_reply_to":"7d6aa943_6d8f5b0b","updated":"2026-02-23 18:18:48.000000000","message":"it could but no this is a nit.\n\nwe coudl add max of 8 or similar but i think this is fine","commit_id":"006bedd93710b8645538e665470a59c574fffcac"}],"cyborg/conf/agent.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9e7d1cec6a416cc9321891fff0bcb4b2bfb8717c","unresolved":true,"context_lines":[{"line_number":34,"context_line":"                      \u0027exponential backoff (1s, 2s, 4s, ...) between \u0027"},{"line_number":35,"context_line":"                      \u0027attempts. Set to 0 to fail immediately without \u0027"},{"line_number":36,"context_line":"                      \u0027retrying.\u0027)),"},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027resource_provider_name\u0027,"},{"line_number":38,"context_line":"               default\u003dsocket.getfqdn(),"},{"line_number":39,"context_line":"               help\u003d_(\u0027Name of the compute resource provider in Placement. \u0027"},{"line_number":40,"context_line":"                      \u0027This should match the hypervisor_hostname used by Nova \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"80e4f072_1f313b1f","line":37,"in_reply_to":"172401e4_82e14394","updated":"2026-02-23 17:58:04.000000000","message":"ill also fix this by adding sample_default so that when we generate docs we do not call this.","commit_id":"ebb6432e20cf5dcf12b3965feb58af92974086d1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d5d9e54f9e41bcd1ed97594ff46d632dc924e0f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                      \u0027exponential backoff (1s, 2s, 4s, ...) between \u0027"},{"line_number":35,"context_line":"                      \u0027attempts. Set to 0 to fail immediately without \u0027"},{"line_number":36,"context_line":"                      \u0027retrying.\u0027)),"},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027resource_provider_name\u0027,"},{"line_number":38,"context_line":"               default\u003dsocket.getfqdn(),"},{"line_number":39,"context_line":"               help\u003d_(\u0027Name of the compute resource provider in Placement. \u0027"},{"line_number":40,"context_line":"                      \u0027This should match the hypervisor_hostname used by Nova \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"8c3bea03_fd8f292c","line":37,"in_reply_to":"80e4f072_1f313b1f","updated":"2026-02-23 18:04:13.000000000","message":"Done","commit_id":"ebb6432e20cf5dcf12b3965feb58af92974086d1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9e7d1cec6a416cc9321891fff0bcb4b2bfb8717c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                      \u0027exponential backoff (1s, 2s, 4s, ...) between \u0027"},{"line_number":35,"context_line":"                      \u0027attempts. Set to 0 to fail immediately without \u0027"},{"line_number":36,"context_line":"                      \u0027retrying.\u0027)),"},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027resource_provider_name\u0027,"},{"line_number":38,"context_line":"               default\u003dsocket.getfqdn(),"},{"line_number":39,"context_line":"               help\u003d_(\u0027Name of the compute resource provider in Placement. \u0027"},{"line_number":40,"context_line":"                      \u0027This should match the hypervisor_hostname used by Nova \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"cca2dc35_ed2ff3fb","line":37,"in_reply_to":"a0e207b4_7fce0bd6","updated":"2026-02-23 17:58:04.000000000","message":"nova valid","commit_id":"ebb6432e20cf5dcf12b3965feb58af92974086d1"}],"cyborg/tests/unit/agent/test_manager.py":[{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"03706d4762893d858cc14f93707c8859d457cab9","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2018 Intel."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"44e20d75_7ae286e6","line":1,"updated":"2026-02-13 09:31:24.000000000","message":"Copyright (c) 2025?","commit_id":"4ecd974db123dc65bba2031627b32fc48c7bd04b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cd9571971527553d8eb6e15e53627114562d5569","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2018 Intel."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"82df37c8_bb9f922f","line":1,"in_reply_to":"44e20d75_7ae286e6","updated":"2026-02-13 11:11:08.000000000","message":"well it woudl be 2026\n\ni actully shoudl jsut drop the copy right notice entrily\n\nwe generally avoid ading them to upstream projects\nwe are only required to have the license header or spdx comment which is now prefered","commit_id":"4ecd974db123dc65bba2031627b32fc48c7bd04b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c50ee29a228797dec7688ce3d59593b5959e4bd8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2018 Intel."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"5b0b92be_04f014da","line":1,"in_reply_to":"82df37c8_bb9f922f","updated":"2026-02-16 19:47:56.000000000","message":"Done","commit_id":"4ecd974db123dc65bba2031627b32fc48c7bd04b"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"e799f901eb2c48d549c8cce973ee65d11abe2b06","unresolved":true,"context_lines":[{"line_number":23,"context_line":"from cyborg.tests import base"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class TestAgentManager(base.TestCase):"},{"line_number":27,"context_line":"    \"\"\"Test Agent Manager resource provider name resolution.\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5d5f8dac_31ff6c83","line":26,"updated":"2026-02-13 09:33:35.000000000","message":"please add atest for `_check_resource_provider_exists` when Placement returns an error/exception (the broad `except` path), and a test for the case where `CONF.host` is empty/None","commit_id":"4ecd974db123dc65bba2031627b32fc48c7bd04b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cd9571971527553d8eb6e15e53627114562d5569","unresolved":true,"context_lines":[{"line_number":23,"context_line":"from cyborg.tests import base"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class TestAgentManager(base.TestCase):"},{"line_number":27,"context_line":"    \"\"\"Test Agent Manager resource provider name resolution.\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ac9be28d_191d8ba8","line":26,"in_reply_to":"5d5f8dac_31ff6c83","updated":"2026-02-13 11:11:08.000000000","message":"well CONF.host is never empty or None its defaulted to socket.getHostname so worst case it will be \"localhost\"\n\nbut yes this is not complete yet i was expecting at least one more revisohn so i cna add tests for _check_resource_provider_exists","commit_id":"4ecd974db123dc65bba2031627b32fc48c7bd04b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c50ee29a228797dec7688ce3d59593b5959e4bd8","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cyborg.tests import base"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class TestAgentManager(base.TestCase):"},{"line_number":27,"context_line":"    \"\"\"Test Agent Manager resource provider name resolution.\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ada1db67_85c7f9e8","line":26,"in_reply_to":"ac9be28d_191d8ba8","updated":"2026-02-16 19:47:56.000000000","message":"Done","commit_id":"4ecd974db123dc65bba2031627b32fc48c7bd04b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9e7d1cec6a416cc9321891fff0bcb4b2bfb8717c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                mock.patch(\u0027cyborg.agent.manager.ResourceTracker\u0027):"},{"line_number":41,"context_line":"            return manager.AgentManager(\u0027cyborg-agent-topic\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @mock.patch(\u0027cyborg.agent.manager.CONF\u0027)"},{"line_number":44,"context_line":"    def test_get_resource_provider_name_primary_success(self, mock_conf):"},{"line_number":45,"context_line":"        \"\"\"Test that primary hostname (FQDN) is used when RP exists.\"\"\""},{"line_number":46,"context_line":"        mock_conf.agent.resource_provider_name \u003d \u0027compute-0.example.com\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"9497baa6_9a6aa297","line":43,"in_reply_to":"7b7552a9_26b0ce51","updated":"2026-02-23 17:58:04.000000000","message":"ill adress autospec\u003dTrue in a dedicated patch.","commit_id":"ebb6432e20cf5dcf12b3965feb58af92974086d1"}]}
