)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"def76cbe159054d7642b41e7633550703c91a3da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0180aab7_0ae6c323","updated":"2025-05-27 21:40:59.000000000","message":"Forgot to vote in my last reply.","commit_id":"2746b790802c172771272242f3abddac48333b9d"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"f449d2948d6d0383500578de59e55ff64dd33523","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3853a321_c5007df7","updated":"2025-05-27 21:40:12.000000000","message":"In addition to the update to the support matrix, I think a release note is warranted.\n\nI\u0027d also like to consider moving the check for whether \"revert_to_any_snapshot_allowed\" from the API layer down the the Volume layer. That seems counterintuitive, but hear me out.\n\nI believe the original code checks whether the specified snapshot it the latest at the API layer in order to avoid the RPC call to the volume service if the request is invalid. However, the new code has to make an RPC call in order to know whether the revert-to-any is allowed, then a second RPC call to make it happen. An alternative would be to move the check into the volume service, so only one RPC would be required.","commit_id":"2746b790802c172771272242f3abddac48333b9d"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"6830370e80a5a1a723ed783222245e1594dec570","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"46eb02cc_5a837ea5","in_reply_to":"3853a321_c5007df7","updated":"2025-05-28 13:58:14.000000000","message":"Release note added","commit_id":"2746b790802c172771272242f3abddac48333b9d"}],"cinder/api/v3/volumes.py":[{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"f449d2948d6d0383500578de59e55ff64dd33523","unresolved":true,"context_lines":[{"line_number":229,"context_line":"        snapshot_id \u003d body[\u0027revert\u0027].get(\u0027snapshot_id\u0027)"},{"line_number":230,"context_line":"        volume \u003d self.volume_api.get_volume(context, id)"},{"line_number":231,"context_line":"        revert_to_any_snapshot_allowed \u003d ("},{"line_number":232,"context_line":"            self.volume_rpcapi.revert_to_any_snapshot_allowed"},{"line_number":233,"context_line":"        )"},{"line_number":234,"context_line":"        try:"},{"line_number":235,"context_line":"            if revert_to_any_snapshot_allowed:"}],"source_content_type":"text/x-python","patch_set":2,"id":"681c4cb2_1f5c3aaa","line":232,"updated":"2025-05-27 21:40:12.000000000","message":"-1: The source of your unit test failures is this line is missing the \"()\" parentheses to make it call the function. As it stands, in the unit tests it evaluates to the mock object, so the conditional on L235 is always true.","commit_id":"2746b790802c172771272242f3abddac48333b9d"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"6830370e80a5a1a723ed783222245e1594dec570","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        snapshot_id \u003d body[\u0027revert\u0027].get(\u0027snapshot_id\u0027)"},{"line_number":230,"context_line":"        volume \u003d self.volume_api.get_volume(context, id)"},{"line_number":231,"context_line":"        revert_to_any_snapshot_allowed \u003d ("},{"line_number":232,"context_line":"            self.volume_rpcapi.revert_to_any_snapshot_allowed"},{"line_number":233,"context_line":"        )"},{"line_number":234,"context_line":"        try:"},{"line_number":235,"context_line":"            if revert_to_any_snapshot_allowed:"}],"source_content_type":"text/x-python","patch_set":2,"id":"95295789_0eb330f5","line":232,"in_reply_to":"681c4cb2_1f5c3aaa","updated":"2025-05-28 13:58:14.000000000","message":"Done","commit_id":"2746b790802c172771272242f3abddac48333b9d"}],"cinder/tests/unit/api/v3/test_volumes.py":[{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"f449d2948d6d0383500578de59e55ff64dd33523","unresolved":true,"context_lines":[{"line_number":1004,"context_line":"    @mock.patch.object(volume_api.API, \u0027get_volume\u0027)"},{"line_number":1005,"context_line":"    @mock.patch.object(volume_rpcapi.VolumeAPI,"},{"line_number":1006,"context_line":"                       \u0027revert_to_any_snapshot_allowed\u0027)"},{"line_number":1007,"context_line":"    def test_volume_revert_with_snapshot_not_found(self, mock_snapshot,"},{"line_number":1008,"context_line":"                                                   mock_volume,"},{"line_number":1009,"context_line":"                                                   mock_latest):"},{"line_number":1010,"context_line":"        mock_snapshot.return_value \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"f6cb95a2_c03fd941","line":1007,"updated":"2025-05-27 21:40:12.000000000","message":"Couple of things here. First, can\u0027t you rely on the unit tests executing in an environment where the default False value is returned? In other words, do you need to mock it here?\n\nnit: calling it \"mock_snapshot\" seems almost misleading (to me, at least). How about \"mock_revert_to_any\" or \"mock_revert_to_any_allowed\"? I tend to favor adding a \"mock_\" prefix and retaining the full function name, unless the function\u0027s name is overly long.","commit_id":"2746b790802c172771272242f3abddac48333b9d"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"6830370e80a5a1a723ed783222245e1594dec570","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"    @mock.patch.object(volume_api.API, \u0027get_volume\u0027)"},{"line_number":1005,"context_line":"    @mock.patch.object(volume_rpcapi.VolumeAPI,"},{"line_number":1006,"context_line":"                       \u0027revert_to_any_snapshot_allowed\u0027)"},{"line_number":1007,"context_line":"    def test_volume_revert_with_snapshot_not_found(self, mock_snapshot,"},{"line_number":1008,"context_line":"                                                   mock_volume,"},{"line_number":1009,"context_line":"                                                   mock_latest):"},{"line_number":1010,"context_line":"        mock_snapshot.return_value \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"02ac0e5a_76601b40","line":1007,"in_reply_to":"f6cb95a2_c03fd941","updated":"2025-05-28 13:58:14.000000000","message":"Done","commit_id":"2746b790802c172771272242f3abddac48333b9d"}],"doc/source/reference/support-matrix.ini":[{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"f449d2948d6d0383500578de59e55ff64dd33523","unresolved":true,"context_lines":[{"line_number":982,"context_line":"title\u003dRevert to Any Snapshot"},{"line_number":983,"context_line":"status\u003doptional"},{"line_number":984,"context_line":"notes\u003dVendor drivers that implement the driver assisted function to revert a"},{"line_number":985,"context_line":"  volume to any snapshot taken."},{"line_number":986,"context_line":"driver.datacore\u003dmissing"},{"line_number":987,"context_line":"driver.datera\u003dmissing"},{"line_number":988,"context_line":"driver.dell_emc_powermax\u003dmissing"}],"source_content_type":"text/x-properties","patch_set":2,"id":"19e4d3e2_c75f50bf","line":985,"updated":"2025-05-27 21:40:12.000000000","message":"Perhaps tack this on the end of the sentence:\n\n\u0027 ..., and not just to the latest snapshot.\"","commit_id":"2746b790802c172771272242f3abddac48333b9d"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"6830370e80a5a1a723ed783222245e1594dec570","unresolved":false,"context_lines":[{"line_number":982,"context_line":"title\u003dRevert to Any Snapshot"},{"line_number":983,"context_line":"status\u003doptional"},{"line_number":984,"context_line":"notes\u003dVendor drivers that implement the driver assisted function to revert a"},{"line_number":985,"context_line":"  volume to any snapshot taken."},{"line_number":986,"context_line":"driver.datacore\u003dmissing"},{"line_number":987,"context_line":"driver.datera\u003dmissing"},{"line_number":988,"context_line":"driver.dell_emc_powermax\u003dmissing"}],"source_content_type":"text/x-properties","patch_set":2,"id":"34f259dc_ee8f4f33","line":985,"in_reply_to":"19e4d3e2_c75f50bf","updated":"2025-05-28 13:58:14.000000000","message":"Done","commit_id":"2746b790802c172771272242f3abddac48333b9d"}]}
