)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"78979bbe05cb9f7bb0a4a37e4caef70349af697c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"94c1ded6_ff5f5562","updated":"2026-06-05 05:28:19.000000000","message":"recheck volume migration failed","commit_id":"5845d9487aecc7841551255fbdbb1f1d7cd5fb63"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","display_name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc","status":"Senior Software Quality Engineer @ Red Hat"},"change_message_id":"3980fb87cb25deccf61d45b015ce015192e636d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"7dfc2572_e0a6d563","updated":"2026-06-12 13:43:34.000000000","message":"Change looks good but this change may be incompatible with legacy branches","commit_id":"441f72c0766c23d6c78654e222dbb360a64fa313"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","display_name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc","status":"Senior Software Quality Engineer @ Red Hat"},"change_message_id":"575d76738b15ee630cb84c86c830fddb223dfed3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"32d47d4f_6f676e30","updated":"2026-06-23 12:24:16.000000000","message":"Thank you for addressing my comment, change LGTM","commit_id":"867a73ea519605c272c83fcae81f687a089e001d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9a247feb6e772a2fbcd1ffa86a46c9ca30fd86ae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"46e193b5_fbdc4ce1","updated":"2026-08-05 19:05:56.000000000","message":"cleanup_service needs to be fixed otherwise lgtm","commit_id":"867a73ea519605c272c83fcae81f687a089e001d"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eb80a2595a37f1bd4bfe3123b96a7c4db4f60c00","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b8608f86_27f37a75","updated":"2026-06-25 08:24:52.000000000","message":"thanks, is there some fixed order with which we have to merge these Neutron project_id related patches?","commit_id":"867a73ea519605c272c83fcae81f687a089e001d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"34127adf02b6c845f1f5685eb4453d4a1b774e32","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d6ee240f_1191accc","updated":"2026-08-12 13:11:16.000000000","message":"recheck Device or resource busy","commit_id":"270f4bcc6a711fede987af52e4183cc071ec8b8f"}],"tempest/api/compute/security_groups/test_security_group_rules.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"5ec9054f48f7c01e086991e9d85f50fe9caaffca","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            # TODO(haleyb): Since neutron is transitioning to only return"},{"line_number":57,"context_line":"            # the project_id key in SG objects, support legacy branches by"},{"line_number":58,"context_line":"            # checking for tenant_id."},{"line_number":59,"context_line":"            if key not in actual_rule and key is \u0027project_id\u0027:"},{"line_number":60,"context_line":"                key \u003d \u0027tenant_id\u0027"},{"line_number":61,"context_line":"            # need to create string before call, else it is printed as \u0027group\u0027"},{"line_number":62,"context_line":"            mismatch \u003d \"Mis-matched key is %s\" % key"}],"source_content_type":"text/x-python","patch_set":3,"id":"3e8d3834_ecc95542","line":59,"updated":"2026-06-09 04:50:02.000000000","message":"pep8: F632 use \u003d\u003d/!\u003d to compare constant literals (str, bytes, int, float, tuple)","commit_id":"0969d22abee8b291dd3c41417779dd15431bda3e"}],"tempest/cmd/cleanup_service.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7dc4c1cb812ee38b44a7fefc73fb2b5f6b9a5f5b","unresolved":true,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        self.project_filter \u003d {}"},{"line_number":104,"context_line":"        if hasattr(self, \u0027project_id\u0027):"},{"line_number":105,"context_line":"            self.project_filter[\u0027project_id\u0027] \u003d self.project_id"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _filter_by_project_id(self, item_list):"},{"line_number":108,"context_line":"        if (item_list is None or"}],"source_content_type":"text/x-python","patch_set":5,"id":"aa63c312_e1dfdeda","line":105,"updated":"2026-06-22 23:02:13.000000000","message":"Thanks for the comment Alfredo. For that reason I think I should leave the tenant_filter for the cases I highlighted in my TODO comments - Security Groups. We should be able to remove in a few cycles but it shouldn\u0027t hurt to even leave for longer.","commit_id":"441f72c0766c23d6c78654e222dbb360a64fa313"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","display_name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc","status":"Senior Software Quality Engineer @ Red Hat"},"change_message_id":"575d76738b15ee630cb84c86c830fddb223dfed3","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        self.project_filter \u003d {}"},{"line_number":104,"context_line":"        if hasattr(self, \u0027project_id\u0027):"},{"line_number":105,"context_line":"            self.project_filter[\u0027project_id\u0027] \u003d self.project_id"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _filter_by_project_id(self, item_list):"},{"line_number":108,"context_line":"        if (item_list is None or"}],"source_content_type":"text/x-python","patch_set":5,"id":"c6cec5b6_49321c27","line":105,"in_reply_to":"aa63c312_e1dfdeda","updated":"2026-06-23 12:24:16.000000000","message":"Acknowledged","commit_id":"441f72c0766c23d6c78654e222dbb360a64fa313"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","display_name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc","status":"Senior Software Quality Engineer @ Red Hat"},"change_message_id":"3980fb87cb25deccf61d45b015ce015192e636d3","unresolved":true,"context_lines":[{"line_number":108,"context_line":"        if (item_list is None or"},{"line_number":109,"context_line":"                not item_list or"},{"line_number":110,"context_line":"                not hasattr(self, \u0027project_id\u0027) or"},{"line_number":111,"context_line":"                self.project_id is None or"},{"line_number":112,"context_line":"                \u0027project_id\u0027 not in item_list[0]):"},{"line_number":113,"context_line":"            return item_list"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"0f86618e_4da9be7d","line":111,"range":{"start_line":111,"start_character":21,"end_line":111,"end_character":31},"updated":"2026-06-12 13:43:34.000000000","message":"Looking thru some of the TODO comments, I see that legacy branches use \u0027tenant_id\u0027 instead of \u0027project_id\u0027\n\nBased on that, this block of code will fail to filter project_id when testing legacy branches. \n\nCould you please push a change that also checks for \u0027tenant_id\u0027?","commit_id":"441f72c0766c23d6c78654e222dbb360a64fa313"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"c4b2da77083f6defd5665b5ca34d04706c704663","unresolved":true,"context_lines":[{"line_number":108,"context_line":"        if (item_list is None or"},{"line_number":109,"context_line":"                not item_list or"},{"line_number":110,"context_line":"                not hasattr(self, \u0027project_id\u0027) or"},{"line_number":111,"context_line":"                self.project_id is None or"},{"line_number":112,"context_line":"                \u0027project_id\u0027 not in item_list[0]):"},{"line_number":113,"context_line":"            return item_list"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"22fcddc7_34e69798","line":111,"range":{"start_line":111,"start_character":21,"end_line":111,"end_character":31},"in_reply_to":"0f86618e_4da9be7d","updated":"2026-06-15 07:01:36.000000000","message":"yeah I suppose we need that as tempest is branchless. I am not sure if there is a rule of thumb or policy when we anchor tempest with tag to a branch. If we have such rule that can help to say that TODO +3 releases or similar","commit_id":"441f72c0766c23d6c78654e222dbb360a64fa313"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7dc4c1cb812ee38b44a7fefc73fb2b5f6b9a5f5b","unresolved":true,"context_lines":[{"line_number":108,"context_line":"        if (item_list is None or"},{"line_number":109,"context_line":"                not item_list or"},{"line_number":110,"context_line":"                not hasattr(self, \u0027project_id\u0027) or"},{"line_number":111,"context_line":"                self.project_id is None or"},{"line_number":112,"context_line":"                \u0027project_id\u0027 not in item_list[0]):"},{"line_number":113,"context_line":"            return item_list"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"e3a6c38e_05b9da70","line":111,"range":{"start_line":111,"start_character":21,"end_line":111,"end_character":31},"in_reply_to":"22fcddc7_34e69798","updated":"2026-06-22 23:02:13.000000000","message":"So this function is only ever called from the neutron metering label code below, not from other projects, and since neutron has been returning both project_id and tenant_id for many cycles (Train?) I don\u0027t think this is an issue. See my comment on the project_filter attribute above though.","commit_id":"441f72c0766c23d6c78654e222dbb360a64fa313"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","display_name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc","status":"Senior Software Quality Engineer @ Red Hat"},"change_message_id":"575d76738b15ee630cb84c86c830fddb223dfed3","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        if (item_list is None or"},{"line_number":109,"context_line":"                not item_list or"},{"line_number":110,"context_line":"                not hasattr(self, \u0027project_id\u0027) or"},{"line_number":111,"context_line":"                self.project_id is None or"},{"line_number":112,"context_line":"                \u0027project_id\u0027 not in item_list[0]):"},{"line_number":113,"context_line":"            return item_list"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3899a681_2363e7be","line":111,"range":{"start_line":111,"start_character":21,"end_line":111,"end_character":31},"in_reply_to":"e3a6c38e_05b9da70","updated":"2026-06-23 12:24:16.000000000","message":"Acknowledged","commit_id":"441f72c0766c23d6c78654e222dbb360a64fa313"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9a247feb6e772a2fbcd1ffa86a46c9ca30fd86ae","unresolved":true,"context_lines":[{"line_number":106,"context_line":"        # Security Groups only."},{"line_number":107,"context_line":"        self.tenant_filter \u003d {}"},{"line_number":108,"context_line":"        if hasattr(self, \u0027tenant_id\u0027):"},{"line_number":109,"context_line":"            self.project_filter[\u0027tenant_id\u0027] \u003d self.project_id"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        self.project_filter \u003d {}"},{"line_number":112,"context_line":"        if hasattr(self, \u0027project_id\u0027):"}],"source_content_type":"text/x-python","patch_set":6,"id":"47ec1840_c2c932df","line":109,"range":{"start_line":109,"start_character":17,"end_line":109,"end_character":31},"updated":"2026-08-05 19:05:56.000000000","message":"self.tenant_filter ? othersie tenant_filter is empty filter and that is what you are using in test.","commit_id":"867a73ea519605c272c83fcae81f687a089e001d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"34127adf02b6c845f1f5685eb4453d4a1b774e32","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        # Security Groups only."},{"line_number":107,"context_line":"        self.tenant_filter \u003d {}"},{"line_number":108,"context_line":"        if hasattr(self, \u0027tenant_id\u0027):"},{"line_number":109,"context_line":"            self.project_filter[\u0027tenant_id\u0027] \u003d self.project_id"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        self.project_filter \u003d {}"},{"line_number":112,"context_line":"        if hasattr(self, \u0027project_id\u0027):"}],"source_content_type":"text/x-python","patch_set":6,"id":"2bfbfd17_f6ab846f","line":109,"range":{"start_line":109,"start_character":17,"end_line":109,"end_character":31},"in_reply_to":"47ec1840_c2c932df","updated":"2026-08-12 13:11:16.000000000","message":"Marked as resolved.","commit_id":"867a73ea519605c272c83fcae81f687a089e001d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9a247feb6e772a2fbcd1ffa86a46c9ca30fd86ae","unresolved":true,"context_lines":[{"line_number":777,"context_line":"        # the project_id key in SG objects, support legacy branches by"},{"line_number":778,"context_line":"        # checking for tenant_id if nothing was returned."},{"line_number":779,"context_line":"        if not secgroups:"},{"line_number":780,"context_line":"            filter \u003d self.tenant_filter"},{"line_number":781,"context_line":"            try:"},{"line_number":782,"context_line":"                secgroups \u003d ["},{"line_number":783,"context_line":"                    secgroup for secgroup in"}],"source_content_type":"text/x-python","patch_set":6,"id":"3b3ba562_82dc1fd3","line":780,"range":{"start_line":780,"start_character":26,"end_line":780,"end_character":39},"updated":"2026-08-05 19:05:56.000000000","message":"self.project_filter? because that is construced now instead of self.tenant_filter @L109","commit_id":"867a73ea519605c272c83fcae81f687a089e001d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"34127adf02b6c845f1f5685eb4453d4a1b774e32","unresolved":false,"context_lines":[{"line_number":777,"context_line":"        # the project_id key in SG objects, support legacy branches by"},{"line_number":778,"context_line":"        # checking for tenant_id if nothing was returned."},{"line_number":779,"context_line":"        if not secgroups:"},{"line_number":780,"context_line":"            filter \u003d self.tenant_filter"},{"line_number":781,"context_line":"            try:"},{"line_number":782,"context_line":"                secgroups \u003d ["},{"line_number":783,"context_line":"                    secgroup for secgroup in"}],"source_content_type":"text/x-python","patch_set":6,"id":"655958ee_dbcec5a0","line":780,"range":{"start_line":780,"start_character":26,"end_line":780,"end_character":39},"in_reply_to":"3b3ba562_82dc1fd3","updated":"2026-08-12 13:11:16.000000000","message":"This should stay tenant_filter as it is the fall-back from L773 code filtering by project_id if it returned no groups.","commit_id":"867a73ea519605c272c83fcae81f687a089e001d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9a247feb6e772a2fbcd1ffa86a46c9ca30fd86ae","unresolved":true,"context_lines":[{"line_number":783,"context_line":"                    secgroup for secgroup in"},{"line_number":784,"context_line":"                    client.list_security_groups(**filter)[\u0027security_groups\u0027]"},{"line_number":785,"context_line":"                    if secgroup[\u0027name\u0027] !\u003d \u0027default\u0027]"},{"line_number":786,"context_line":"            except Exception:"},{"line_number":787,"context_line":"                LOG.debug(\"List security_group exception with tenant_id \""},{"line_number":788,"context_line":"                          \"filter, ignoring.\")"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"        if self.prefix:"},{"line_number":791,"context_line":"            secgroups \u003d self._filter_by_prefix(secgroups)"}],"source_content_type":"text/x-python","patch_set":6,"id":"02f46e6b_656676d4","line":788,"range":{"start_line":786,"start_character":0,"end_line":788,"end_character":46},"updated":"2026-08-05 19:05:56.000000000","message":"instead of ignoring the exception, we should have a fallback here, try filter with project_id and if the exception (for stable branches) then try tenant_id which must pass otherwise test fail as it is currently.","commit_id":"867a73ea519605c272c83fcae81f687a089e001d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"34127adf02b6c845f1f5685eb4453d4a1b774e32","unresolved":false,"context_lines":[{"line_number":783,"context_line":"                    secgroup for secgroup in"},{"line_number":784,"context_line":"                    client.list_security_groups(**filter)[\u0027security_groups\u0027]"},{"line_number":785,"context_line":"                    if secgroup[\u0027name\u0027] !\u003d \u0027default\u0027]"},{"line_number":786,"context_line":"            except Exception:"},{"line_number":787,"context_line":"                LOG.debug(\"List security_group exception with tenant_id \""},{"line_number":788,"context_line":"                          \"filter, ignoring.\")"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"        if self.prefix:"},{"line_number":791,"context_line":"            secgroups \u003d self._filter_by_prefix(secgroups)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a7ec5cc_d09b2f03","line":788,"range":{"start_line":786,"start_character":0,"end_line":788,"end_character":46},"in_reply_to":"02f46e6b_656676d4","updated":"2026-08-12 13:11:16.000000000","message":"So the reason I ignored the exception here is that it is most likely that neutron threw it because it didn\u0027t support a tenant_id filter any more (i.e. newer code in 2027.1 and later). We will have already tried project_id in the call on L773.","commit_id":"867a73ea519605c272c83fcae81f687a089e001d"}],"tempest/tests/cmd/test_cleanup_services.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7dc4c1cb812ee38b44a7fefc73fb2b5f6b9a5f5b","unresolved":true,"context_lines":[{"line_number":1223,"context_line":"        \"metering_labels\": ["},{"line_number":1224,"context_line":"            {"},{"line_number":1225,"context_line":"                \"project_id\": \"45345b0ee1ea477fac0f541b2cb79cd4\","},{"line_number":1226,"context_line":"                \"tenant_id\": \"45345b0ee1ea477fac0f541b2cb79cd4\","},{"line_number":1227,"context_line":"                \"description\": \"label1 description\","},{"line_number":1228,"context_line":"                \"name\": \"label1\","},{"line_number":1229,"context_line":"                \"id\": \"a6700594-5b7a-4105-8bfe-723b346ce866\","}],"source_content_type":"text/x-python","patch_set":5,"id":"ec7708cb_63bcd7bf","side":"PARENT","line":1226,"updated":"2026-06-22 23:02:13.000000000","message":"This is the wrong project/tenant id, which I uncovered when making the other change, as well as the below missing project_id key.","commit_id":"bda57c90dfe02de4e7206b0252701b80dde93939"}]}
