)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"1786303f76a707abc40970cb4de3c8520f2f4109","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d0bc0ce6_70cbc222","updated":"2022-01-11 12:00:58.000000000","message":"Thanks for following up on this.  The duplicate policy check explains why this failure occurred even though the policy unit tests were specifically looking for this situation.\n\nWe need to figure out whether there is a good reason for having policy checks in the non-REST APIs (there are several in the volume api), or whether they can all be moved to the REST API layer, because it makes accurate testing difficult.","commit_id":"4ebe7d18acf250daeb07f1c8ddbd7ffaad326207"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"41159750524ad680d0f7235b7f5676fc581bb9d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"fbfe8553_05a93755","in_reply_to":"d0bc0ce6_70cbc222","updated":"2022-01-11 13:35:12.000000000","message":"Yeah, i think it would be better to reorganize our current policy checks with the ongoing SRBAC work.","commit_id":"4ebe7d18acf250daeb07f1c8ddbd7ffaad326207"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"2f3c713d2a7c6d3adeeb7194a04e2b7541a46756","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2406e995_5583e83b","updated":"2022-01-11 21:32:52.000000000","message":"Left notes about the tests for other reviewers.","commit_id":"7ba9935a6e1e8a572391563927acb086fdbe5e5c"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6ccfa5d05eb2b9824fbe48291695f28b90a009e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e6c144b2_cd2a674f","updated":"2022-01-12 14:19:59.000000000","message":"Looks good.  Thank you!","commit_id":"7ba9935a6e1e8a572391563927acb086fdbe5e5c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"edc297c3b3c9bb46659ec4b73705de9596414bd8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0455e1a5_c6b92d3a","updated":"2022-01-11 13:37:23.000000000","message":"Still LGTM.","commit_id":"7ba9935a6e1e8a572391563927acb086fdbe5e5c"}],"cinder/tests/unit/policies/test_volume_transfers.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"2f3c713d2a7c6d3adeeb7194a04e2b7541a46756","unresolved":true,"context_lines":[{"line_number":211,"context_line":"        unauthorized_exceptions \u003d ["},{"line_number":212,"context_line":"            exception.TransferNotFound"},{"line_number":213,"context_line":"        ]"},{"line_number":214,"context_line":"        with mock.patch.object(vol_api.API, \u0027accept_transfer\u0027):"},{"line_number":215,"context_line":"            self.common_policy_check(user_id, self.accept_authorized_users,"},{"line_number":216,"context_line":"                                     self.accept_unauthorized_users,"},{"line_number":217,"context_line":"                                     unauthorized_exceptions,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1683df49_edc0c06b","line":214,"range":{"start_line":214,"start_character":12,"end_line":214,"end_character":62},"updated":"2022-01-11 21:32:52.000000000","message":"This is why the tests passed -- we are testing only the initial check, not the one made in the volume_api (which this patch removes).  (See comment at line 255.)","commit_id":"7ba9935a6e1e8a572391563927acb086fdbe5e5c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"2f3c713d2a7c6d3adeeb7194a04e2b7541a46756","unresolved":true,"context_lines":[{"line_number":252,"context_line":"        \u0027other_project_member\u0027,"},{"line_number":253,"context_line":"        \u0027other_project_reader\u0027,"},{"line_number":254,"context_line":"    ]"},{"line_number":255,"context_line":"    # This is a special case since other project member should be"},{"line_number":256,"context_line":"    # allowed to accept the transfer of a volume"},{"line_number":257,"context_line":"    accept_authorized_users \u003d authorized_members.copy()"},{"line_number":258,"context_line":"    accept_authorized_users.append(\u0027other_project_member\u0027)"},{"line_number":259,"context_line":"    accept_unauthorized_users \u003d unauthorized_members.copy()"},{"line_number":260,"context_line":"    accept_unauthorized_users.remove(\u0027other_project_member\u0027)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def setUp(self, *args, **kwargs):"},{"line_number":263,"context_line":"        # Test secure RBAC by disabling deprecated policy rules (scope"}],"source_content_type":"text/x-python","patch_set":3,"id":"395334cb_cd7a33a7","line":260,"range":{"start_line":255,"start_character":0,"end_line":260,"end_character":60},"updated":"2022-01-11 21:32:52.000000000","message":"This is where we were already testing to make sure that a user can accept a volume that they don\u0027t own yet.","commit_id":"7ba9935a6e1e8a572391563927acb086fdbe5e5c"}],"cinder/transfer/api.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"1786303f76a707abc40970cb4de3c8520f2f4109","unresolved":true,"context_lines":[{"line_number":222,"context_line":"        \"\"\"Accept a volume that has been offered for transfer.\"\"\""},{"line_number":223,"context_line":"        # We must use an elevated context to see the volume that is still"},{"line_number":224,"context_line":"        # owned by the donor."},{"line_number":225,"context_line":"        context.authorize(policy.ACCEPT_POLICY)"},{"line_number":226,"context_line":"        transfer \u003d self.db.transfer_get(context.elevated(), transfer_id)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        crypt_hash \u003d self._get_crypt_hash(transfer[\u0027salt\u0027], auth_key)"}],"source_content_type":"text/x-python","patch_set":2,"id":"57b62779_9e553264","line":225,"range":{"start_line":225,"start_character":8,"end_line":225,"end_character":47},"updated":"2022-01-11 12:00:58.000000000","message":"Just for the record, this is where the first (and now only) check is occurring.","commit_id":"4ebe7d18acf250daeb07f1c8ddbd7ffaad326207"}]}
