)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"816f180a0870e5c9e1ede25a9241fd839faf111f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"fba4bd7e_96a30783","updated":"2025-01-23 15:34:04.000000000","message":"recheck - unrelated timeout building instance","commit_id":"27cbd9821e770170db02d8f669b36b72fe58dac8"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"02a6fa13ed755c3a082162d7e09451ec739f0567","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"cd71c119_a314b2c1","updated":"2025-01-23 08:54:39.000000000","message":"we definetly need a release notes for this, as it will break API, the existing output for resources is changed.","commit_id":"27cbd9821e770170db02d8f669b36b72fe58dac8"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6974eeb5af45cebb10f856df38de7c40160c652c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a9b7351d_3b1bae65","in_reply_to":"2fd06a55_21d76779","updated":"2025-01-23 15:33:29.000000000","message":"just to be clear, this is not about removing \"tenant_id\" from the output send through the API. It is just to not include in the response fields like e.g. \"network:tenant_id\". And yes, those fields were never supposed to be send there nor documented. I really don\u0027t think we need release note for this change.","commit_id":"27cbd9821e770170db02d8f669b36b72fe58dac8"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"16a42ad2cf402804ed88c45cb7b615593ae4761d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2fd06a55_21d76779","in_reply_to":"cd71c119_a314b2c1","updated":"2025-01-23 12:02:21.000000000","message":"This is actually something not expected in the API, this field is artificially added. Having said that:\n1) no other project should expect \"tenant_id\" in the API anymore. Actually we are manually adding \"project_id\" if only \"tenant_id\" is present. If that is happening, this is an error in a legacy code that must be treated as a bug, not an API misleading change.\n2) the code that checks the network ownership ``_validate_network_tenant_ownership`` should be updated. We should be expecting \"project_id\" in the network dictionary.\n3) after this patch, we would need to revisit all the API outputs (in n-lib) to check what are we actually returning","commit_id":"27cbd9821e770170db02d8f669b36b72fe58dac8"}],"neutron/policy.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3080c8b270259b6cdf9a6dc2f0f781164da23f1e","unresolved":true,"context_lines":[{"line_number":358,"context_line":"            target_copy[self.target_field] \u003d self._extract("},{"line_number":359,"context_line":"                parent_res, target[parent_foreign_key], parent_field)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"        match \u003d self.match % target_copy"},{"line_number":362,"context_line":"        if self.kind in creds:"},{"line_number":363,"context_line":"            return match \u003d\u003d str(creds[self.kind])"},{"line_number":364,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":1,"id":"7012c347_271a2244","line":361,"range":{"start_line":361,"start_character":29,"end_line":361,"end_character":40},"updated":"2025-01-21 12:17:50.000000000","message":"``target_copy`` is created inside the ``if`` branch. Here it could be a non defined variable. Check [1]:\n```\nUnboundLocalError: cannot access local variable \u0027target_copy\u0027 where it is not associated with a value\n```\n\n[1]https://0cc0fb9d5c802f1c7b9c-6aa1154e79cc29d864ed6f661bf68125.ssl.cf5.rackcdn.com/938135/5/check/neutron-tempest-plugin-ovn/1e19265/controller/logs/screen-neutron-api.txt","commit_id":"36a71c3e18553fe0c373c6170908cf13fd1575f5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a595da8dca6672903eda9271dd1dda26a7ef2d62","unresolved":false,"context_lines":[{"line_number":358,"context_line":"            target_copy[self.target_field] \u003d self._extract("},{"line_number":359,"context_line":"                parent_res, target[parent_foreign_key], parent_field)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"        match \u003d self.match % target_copy"},{"line_number":362,"context_line":"        if self.kind in creds:"},{"line_number":363,"context_line":"            return match \u003d\u003d str(creds[self.kind])"},{"line_number":364,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":1,"id":"5898e94b_876d6227","line":361,"range":{"start_line":361,"start_character":29,"end_line":361,"end_character":40},"in_reply_to":"7012c347_271a2244","updated":"2025-01-21 15:49:13.000000000","message":"Done","commit_id":"36a71c3e18553fe0c373c6170908cf13fd1575f5"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"383e355d067e79bc1fec8184629fb4fdb08dec82","unresolved":true,"context_lines":[{"line_number":309,"context_line":"        return data[field]"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def __call__(self, target, creds, enforcer):"},{"line_number":312,"context_line":"        target_copy \u003d copy.deepcopy(target)"},{"line_number":313,"context_line":"        if self.target_field not in target:"},{"line_number":314,"context_line":"            # policy needs a plugin check"},{"line_number":315,"context_line":"            # target field is in the form resource:field"}],"source_content_type":"text/x-python","patch_set":2,"id":"e8e4f8e8_4cd3c365","line":312,"updated":"2025-01-22 08:20:06.000000000","message":"I tried to manually execute a failing UT (e.g.: ``neutron.tests.unit.extensions.test_qos_fip.FloatingIPQoSDBIntTestCase.test_floatingip_remove_qos_policy_id``). The target contains a field that is a dict_keys() value. This cannot be deepcopied but you can use ``copy.copy``. The result dictionary will be a different object with a reference to the same values. But at least you\u0027ll keep the original dictionary with the same elements. And if you update ``target_copy``, the original dictionary will keep the original values.\n\n[1]https://paste.opendev.org/show/bZHeff9bnMmzRMistL6a/","commit_id":"f1ed7b4021943b3b4831d6a7eab99899d92840c0"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a04cf7fc561481d34f8495ce5b0c28cb7238bd15","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        return data[field]"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def __call__(self, target, creds, enforcer):"},{"line_number":312,"context_line":"        target_copy \u003d copy.deepcopy(target)"},{"line_number":313,"context_line":"        if self.target_field not in target:"},{"line_number":314,"context_line":"            # policy needs a plugin check"},{"line_number":315,"context_line":"            # target field is in the form resource:field"}],"source_content_type":"text/x-python","patch_set":2,"id":"6feb340b_0d0def42","line":312,"in_reply_to":"e8e4f8e8_4cd3c365","updated":"2025-01-22 11:00:06.000000000","message":"you\u0027re right, done","commit_id":"f1ed7b4021943b3b4831d6a7eab99899d92840c0"}]}
