)]}'
{"cyborg/common/placement_client.py":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"bf82136778014a55ff2293f6fe22d8e05826abeb","unresolved":true,"context_lines":[{"line_number":309,"context_line":"                )"},{"line_number":310,"context_line":"            elif resp.status_code \u003d\u003d 201:"},{"line_number":311,"context_line":"                LOG.info("},{"line_number":312,"context_line":"                    \"Successfully created resource class %(rc_name).\","},{"line_number":313,"context_line":"                    {\"rc_name\": name},"},{"line_number":314,"context_line":"                )"},{"line_number":315,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"8edf897e_fcbb1217","line":312,"range":{"start_line":312,"start_character":57,"end_line":312,"end_character":67},"updated":"2026-06-25 07:36:49.000000000","message":"Based on the log info message in Line 307 and 308. If we use dict, %(rc_name) name needs to be end with `%(rc_name)s`. otherwise based on https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting check dict example\n```\nprint(\u0027%(language)s has %(number)03d quote types.\u0027 %\n      {\u0027language\u0027: \"Python\", \"number\": 2})\n```\nIt will raise value error.\n\n```suggestion\n                    \"Successfully created resource class %(rc_name)s.\",\n```\nI think we need to similar changes at other places in this file.","commit_id":"85434a785a3bc22e8cd232e5fcaa3d7e8a96aac2"},{"author":{"_account_id":9976,"name":"Ronelle Landy","email":"rlandy@redhat.com","username":"rlandy"},"change_message_id":"e110b9652b756f432cd31db166e7a0a973a9266a","unresolved":false,"context_lines":[{"line_number":309,"context_line":"                )"},{"line_number":310,"context_line":"            elif resp.status_code \u003d\u003d 201:"},{"line_number":311,"context_line":"                LOG.info("},{"line_number":312,"context_line":"                    \"Successfully created resource class %(rc_name).\","},{"line_number":313,"context_line":"                    {\"rc_name\": name},"},{"line_number":314,"context_line":"                )"},{"line_number":315,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"6bc3ac0b_1618e98c","line":312,"range":{"start_line":312,"start_character":57,"end_line":312,"end_character":67},"in_reply_to":"8edf897e_fcbb1217","updated":"2026-06-25 08:30:18.000000000","message":"Done","commit_id":"85434a785a3bc22e8cd232e5fcaa3d7e8a96aac2"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"9c9a95b9cb12d18873ddf7f827fd9f2f16e6dcaa","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            LOG.error(msg, args)"},{"line_number":398,"context_line":"        elif resp.status_code \u003d\u003d 204:"},{"line_number":399,"context_line":"            LOG.info("},{"line_number":400,"context_line":"                \"Successfully delete resource class %(rc_name)s.\","},{"line_number":401,"context_line":"                {\"rc_name\": name},"},{"line_number":402,"context_line":"            )"},{"line_number":403,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"48e8823c_840809c4","line":400,"updated":"2026-06-25 11:25:14.000000000","message":"Grammar: the success log strings read \u0027Successfully delete resource class\u0027 / \u0027Successfully delete trait\u0027. In the newly modified lines the verb should be the past participle \u0027deleted\u0027 to read \u0027Successfully deleted ...\u0027, matching the style of the sibling \u0027Successfully created ...\u0027 message.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Operator-facing log messages read as grammatically incorrect, reducing clarity in operational and support contexts. Minor, non-functional, but the lines are already being touched by this patch so it is trivially in scope.\n\n**Suggestion**:\nChange \u0027Successfully delete resource class %(rc_name)s.\u0027 to \u0027Successfully deleted resource class %(rc_name)s.\u0027 and \u0027Successfully delete trait %(trait_name)s.\u0027 to \u0027Successfully deleted trait %(trait_name)s.\u0027 in the lines modified by this commit.","commit_id":"49540040e31baa8c5f32cc7cf712a49f2538f158"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"fc97fe6f461bf2a219c5468c25025bb34f577244","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                    {\"rc_name\": name},"},{"line_number":309,"context_line":"                )"},{"line_number":310,"context_line":"            elif resp.status_code \u003d\u003d 201:"},{"line_number":311,"context_line":"                LOG.info("},{"line_number":312,"context_line":"                    \"Successfully created resource class %(rc_name)s.\","},{"line_number":313,"context_line":"                    {\"rc_name\": name},"},{"line_number":314,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":3,"id":"b9b8044b_dffe8624","line":311,"updated":"2026-06-25 13:01:01.000000000","message":"Commit message says \u0027three LOG.info calls\u0027 but the diff fixes two distinct defects per line: the set-vs-dict literal AND a missing format conversion (\u0027%(rc_name).\u0027 -\u003e \u0027%(rc_name)s.\u0027). Four LOG.debug grammar edits are also undocumented.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: An accurate commit message aids future bisects and bug-linking. Both the missing \u0027s\u0027 and the set literal would independently crash at runtime; recording both helps anyone later auditing for similar incomplete-format bugs.\n\n**Recommendation**:\nOptional follow-up only (do not block merge): consider amending the commit message to note that the fix also corrects the incomplete \u0027%(name).\u0027 format specifiers (not just the set-literal syntax) and that four LOG.debug messages were tidied for grammar. No code change needed.","commit_id":"773ef0472ffb55ae267009aa8e59a70cb8fd0df0"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"bfb3bdc56211eeccc6ed2a2a0e5a5dad2eca3d12","unresolved":true,"context_lines":[{"line_number":43,"context_line":"            raise exception.PlacementServerError("},{"line_number":44,"context_line":"                \"Placement Server has some error at this time.\""},{"line_number":45,"context_line":"            )"},{"line_number":46,"context_line":"        LOG.debug(\u0027Successfully got resources from placement: %s\u0027, url)"},{"line_number":47,"context_line":"        return res"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def post(self, url, data, version\u003dNone, global_request_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aace9ab_e1dfaec7","line":46,"updated":"2026-06-25 14:17:07.000000000","message":"Looks like the unit tests need to be updated alongside these changes bc they are using the previous text still.","commit_id":"e26a2e4a50681bffcc0d564f1924929ddd6917c8"},{"author":{"_account_id":9976,"name":"Ronelle Landy","email":"rlandy@redhat.com","username":"rlandy"},"change_message_id":"4c71588d5f3d0087694b38b93bc353b79765a4ac","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            raise exception.PlacementServerError("},{"line_number":44,"context_line":"                \"Placement Server has some error at this time.\""},{"line_number":45,"context_line":"            )"},{"line_number":46,"context_line":"        LOG.debug(\u0027Successfully got resources from placement: %s\u0027, url)"},{"line_number":47,"context_line":"        return res"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def post(self, url, data, version\u003dNone, global_request_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"c3b47334_779ae4a1","line":46,"in_reply_to":"9aace9ab_e1dfaec7","updated":"2026-06-26 11:36:36.000000000","message":"Done","commit_id":"e26a2e4a50681bffcc0d564f1924929ddd6917c8"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"ae1d1a079cba80137d8d41e1083a36339e89afcd","unresolved":false,"context_lines":[{"line_number":309,"context_line":"                )"},{"line_number":310,"context_line":"            elif resp.status_code \u003d\u003d 201:"},{"line_number":311,"context_line":"                LOG.info("},{"line_number":312,"context_line":"                    \"Successfully created resource class %(rc_name)s.\","},{"line_number":313,"context_line":"                    {\"rc_name\": name},"},{"line_number":314,"context_line":"                )"},{"line_number":315,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"866c9c1e_8911e44d","line":312,"updated":"2026-06-25 13:23:53.000000000","message":"The three fixed LOG.info calls pass an inline dict literal as the log argument, while every other parameterized log call in this file passes a pre-built args dict assigned to a named variable. Consider building an args dict first for consistency.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Improves consistency with the established logging idiom used throughout PlacementClient, making the module easier to read and grep, and keeps the door open for adding more format keys later without awkward inline dict growth.\n\n**Recommendation**:\nFor each of the three fixed LOG.info calls (lines 306-309, 399-402, 424-428) follow the existing pattern: build an `args` dict on its own line, then call LOG.info(msg, args). This matches the style already used for the error-path messages in the same methods.","commit_id":"e26a2e4a50681bffcc0d564f1924929ddd6917c8"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"21bcaa8c68601573e85a2ef378ec390aa2976d79","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            raise exception.PlacementServerError("},{"line_number":44,"context_line":"                \"Placement Server has some error at this time.\""},{"line_number":45,"context_line":"            )"},{"line_number":46,"context_line":"        LOG.debug(\u0027Successfully got resources from placement: %s\u0027, url)"},{"line_number":47,"context_line":"        return res"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def post(self, url, data, version\u003dNone, global_request_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7d9154f1_af660054","line":46,"updated":"2026-06-26 08:51:17.000000000","message":"The four LOG.debug success messages share an identical template (\u0027Successfully \u003cverb\u003e resources from placement: %s\u0027) with only the verb differing. This is a minor readability and maintainability observation, not a defect.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Consolidating the common suffix into a shared constant or helper would reduce duplication and ensure consistent phrasing across the CRUD methods, making future maintenance less error-prone.\n\n**Recommendation**:\nLow priority. If refactoring this module later, consider extracting the log template. No action required for this patch.","commit_id":"d4796d1b7c62273ab513d1ab4256cdb37db875e1"}],"cyborg/tests/unit/common/test_placement_client.py":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"21bcaa8c68601573e85a2ef378ec390aa2976d79","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.mock_sdk.get.return_value \u003d mock.Mock(status_code\u003d200)"},{"line_number":41,"context_line":"        placement \u003d placement_client.PlacementClient()"},{"line_number":42,"context_line":"        placement.get(mock.Mock())"},{"line_number":43,"context_line":"        msg \u003d \u0027Successfully got resources from placement: %s\u0027"},{"line_number":44,"context_line":"        self.mock_log_debug.assert_called_once_with(msg, mock.ANY)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_get_exception(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"d681335b_ec1ddca6","line":43,"updated":"2026-06-26 08:51:17.000000000","message":"The test assertions hardcode the exact log message strings (e.g. \u0027Successfully got resources from placement: %s\u0027). These mirror the source verbatim, providing a tautological check rather than validating meaningful behavior.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Decoupling tests from exact wording (e.g. asserting call count and argument position rather than full literal text) would make them resilient to harmless grammar tweaks while still validating that the debug call fires exactly once with the URL argument.\n\n**Recommendation**:\nConsider loosening the message-string assertions to assert call count and argument position rather than full literal text, unless the specific message text is itself a contractual output. This reduces churn on future grammar-only patches.","commit_id":"d4796d1b7c62273ab513d1ab4256cdb37db875e1"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"21bcaa8c68601573e85a2ef378ec390aa2976d79","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.mock_sdk.get.return_value \u003d mock.Mock(status_code\u003d200)"},{"line_number":41,"context_line":"        placement \u003d placement_client.PlacementClient()"},{"line_number":42,"context_line":"        placement.get(mock.Mock())"},{"line_number":43,"context_line":"        msg \u003d \u0027Successfully got resources from placement: %s\u0027"},{"line_number":44,"context_line":"        self.mock_log_debug.assert_called_once_with(msg, mock.ANY)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_get_exception(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"6dbee846_02488c8e","line":43,"updated":"2026-06-26 08:51:17.000000000","message":"The three LOG.info calls that were the actual bug (set-vs-dict syntax) have no unit test coverage. The tests only assert on the four LOG.debug messages in get/post/put/delete. No test invokes the resource-class or trait helpers to verify the corrected dict-format calls.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: A future regression reintroducing set syntax or a malformed format specifier would not be caught by the unit tests, since the exact code paths that crashed are never exercised. The bug being fixed could silently return.\n\n**Suggestion**:\nAdd tests that invoke ensure_resource_classes (status 201 path), delete_rc_by_name (status 204 path), and _delete_trait (status 204 path), then assert mock_log_info was called with the correct message template and a dict argument. At minimum, assert that LOG.info is invoked with a dict (mapping) argument, not a set, so the format string is validated end-to-end.","commit_id":"d4796d1b7c62273ab513d1ab4256cdb37db875e1"}]}
