)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f0d9a9ca7a144738cf4a271d621f1da3b78775e4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9b26d8e0_5653ffb9","updated":"2025-08-14 17:52:52.000000000","message":"I left comments on the first couple of tests but I think they replicate into the later tests too.","commit_id":"3ea75990ce84bb22ceceb7575ec0e7c333ad063a"}],"cinder/tests/unit/volume/drivers/test_rbd.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f0d9a9ca7a144738cf4a271d621f1da3b78775e4","unresolved":true,"context_lines":[{"line_number":3390,"context_line":"    @mock.patch(\u0027cinder.volume.volume_utils.check_encryption_provider\u0027)"},{"line_number":3391,"context_line":"    def test_create_encrypted_volume_optimization_ensures_sequence("},{"line_number":3392,"context_line":"            self, mock_check_enc_prov, mock_temp_file):"},{"line_number":3393,"context_line":"        \"\"\"Test that optimization maintains proper operation sequence.\"\"\""},{"line_number":3394,"context_line":""},{"line_number":3395,"context_line":"        class DictObj(object):"},{"line_number":3396,"context_line":"            def __init__(self, d):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7d7f3919_e1b725ff","line":3393,"range":{"start_line":3393,"start_character":11,"end_line":3393,"end_character":33},"updated":"2025-08-14 17:52:52.000000000","message":"Not sure what this description means exactly by \"optimization\". The optimized create volume path?","commit_id":"3ea75990ce84bb22ceceb7575ec0e7c333ad063a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f0d9a9ca7a144738cf4a271d621f1da3b78775e4","unresolved":true,"context_lines":[{"line_number":3392,"context_line":"            self, mock_check_enc_prov, mock_temp_file):"},{"line_number":3393,"context_line":"        \"\"\"Test that optimization maintains proper operation sequence.\"\"\""},{"line_number":3394,"context_line":""},{"line_number":3395,"context_line":"        class DictObj(object):"},{"line_number":3396,"context_line":"            def __init__(self, d):"},{"line_number":3397,"context_line":"                self.__dict__ \u003d d"},{"line_number":3398,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3425e70e_8a06938a","line":3395,"updated":"2025-08-14 17:52:52.000000000","message":"Not sure why this is redefined in every test.","commit_id":"3ea75990ce84bb22ceceb7575ec0e7c333ad063a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f0d9a9ca7a144738cf4a271d621f1da3b78775e4","unresolved":true,"context_lines":[{"line_number":3412,"context_line":""},{"line_number":3413,"context_line":"        call_order \u003d []"},{"line_number":3414,"context_line":""},{"line_number":3415,"context_line":"        def track_execute(*args, **kwargs):"},{"line_number":3416,"context_line":"            if \u0027qemu-img\u0027 in args:"},{"line_number":3417,"context_line":"                call_order.append(\u0027qemu-img\u0027)"},{"line_number":3418,"context_line":"            elif \u0027rbd\u0027 in args and \u0027import\u0027 in args:"}],"source_content_type":"text/x-python","patch_set":1,"id":"a97c4587_8eddd53f","line":3415,"updated":"2025-08-14 17:52:52.000000000","message":"This seems like it\u0027s re-inventing mock functionality, surely this isn\u0027t the cleanest way to do this?","commit_id":"3ea75990ce84bb22ceceb7575ec0e7c333ad063a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5f190a7c7fbe490bd043433f096dd2c4899efa1c","unresolved":true,"context_lines":[{"line_number":3432,"context_line":""},{"line_number":3433,"context_line":"            # Verify correct sequence: qemu-img create -\u003e rbd import -\u003e resize"},{"line_number":3434,"context_line":"            expected_sequence \u003d [\u0027qemu-img\u0027, \u0027rbd-import\u0027, \u0027resize\u0027]"},{"line_number":3435,"context_line":"            self.assertEqual(expected_sequence, call_order)"},{"line_number":3436,"context_line":""},{"line_number":3437,"context_line":"    @mock.patch(\u0027tempfile.NamedTemporaryFile\u0027)"},{"line_number":3438,"context_line":"    @mock.patch(\u0027cinder.volume.volume_utils.check_encryption_provider\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"81bd7cf1_6db059d7","line":3435,"updated":"2025-08-14 17:54:43.000000000","message":"I\u0027m unsure of the broader goal with this checking of ordering of calls -- it seems like if we mock the right parts of this operation, and assert that the calls happen, we couldn\u0027t possibly call all of the expected pieces but have them somehow happen in the wrong order?  Because the parameters of the last request would depend on the earlier calls succeeding, etc...","commit_id":"3ea75990ce84bb22ceceb7575ec0e7c333ad063a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f0d9a9ca7a144738cf4a271d621f1da3b78775e4","unresolved":true,"context_lines":[{"line_number":3439,"context_line":"    @ddt.data(1, 10, 50, 100)  # Test different volume sizes"},{"line_number":3440,"context_line":"    def test_create_encrypted_volume_optimization_various_sizes("},{"line_number":3441,"context_line":"            self, volume_size, mock_check_enc_prov, mock_temp_file):"},{"line_number":3442,"context_line":"        \"\"\"Test that 1GB files are created regardless of volume size.\"\"\""},{"line_number":3443,"context_line":""},{"line_number":3444,"context_line":"        class DictObj(object):"},{"line_number":3445,"context_line":"            def __init__(self, d):"}],"source_content_type":"text/x-python","patch_set":1,"id":"4419a68c_f78cd349","line":3442,"range":{"start_line":3442,"start_character":21,"end_line":3442,"end_character":42},"updated":"2025-08-14 17:52:52.000000000","message":"And other sizes","commit_id":"3ea75990ce84bb22ceceb7575ec0e7c333ad063a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f0d9a9ca7a144738cf4a271d621f1da3b78775e4","unresolved":true,"context_lines":[{"line_number":3458,"context_line":"        # Create test volume with specified size"},{"line_number":3459,"context_line":"        test_volume \u003d fake_volume.fake_volume_obj("},{"line_number":3460,"context_line":"            self.context,"},{"line_number":3461,"context_line":"            **{\u0027name\u0027: f\u0027test-{volume_size}-{volume_size}-{volume_size}-test\u0027,"},{"line_number":3462,"context_line":"               \u0027id\u0027: str(uuid.uuid4()),"},{"line_number":3463,"context_line":"               \u0027size\u0027: volume_size,"},{"line_number":3464,"context_line":"               \u0027encryption_key_id\u0027: key_id})"}],"source_content_type":"text/x-python","patch_set":1,"id":"1afbc46e_137f83c6","line":3461,"range":{"start_line":3461,"start_character":30,"end_line":3461,"end_character":71},"updated":"2025-08-14 17:52:52.000000000","message":"volume_size 3x?","commit_id":"3ea75990ce84bb22ceceb7575ec0e7c333ad063a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f0d9a9ca7a144738cf4a271d621f1da3b78775e4","unresolved":true,"context_lines":[{"line_number":3459,"context_line":"        test_volume \u003d fake_volume.fake_volume_obj("},{"line_number":3460,"context_line":"            self.context,"},{"line_number":3461,"context_line":"            **{\u0027name\u0027: f\u0027test-{volume_size}-{volume_size}-{volume_size}-test\u0027,"},{"line_number":3462,"context_line":"               \u0027id\u0027: str(uuid.uuid4()),"},{"line_number":3463,"context_line":"               \u0027size\u0027: volume_size,"},{"line_number":3464,"context_line":"               \u0027encryption_key_id\u0027: key_id})"},{"line_number":3465,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"4105a7a1_6d7bc86a","line":3462,"range":{"start_line":3462,"start_character":21,"end_line":3462,"end_character":37},"updated":"2025-08-14 17:52:52.000000000","message":"Should use one of our fake_constants","commit_id":"3ea75990ce84bb22ceceb7575ec0e7c333ad063a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f0d9a9ca7a144738cf4a271d621f1da3b78775e4","unresolved":true,"context_lines":[{"line_number":3483,"context_line":"                \u0027secret,id\u003dluks_sec,format\u003draw,file\u003d/passfile\u0027,"},{"line_number":3484,"context_line":"                \u0027-o\u0027, \u0027key-secret\u003dluks_sec\u0027, \u0027/imgfile\u0027, \u00271024M\u0027)"},{"line_number":3485,"context_line":""},{"line_number":3486,"context_line":"            # Verify RBD import is called"},{"line_number":3487,"context_line":"            mock_exec.assert_any_call("},{"line_number":3488,"context_line":"                \u0027rbd\u0027, \u0027import\u0027, \u0027--dest-pool\u0027, \u0027rbd\u0027, \u0027--order\u0027, 22,"},{"line_number":3489,"context_line":"                \u0027/imgfile\u0027, test_volume.name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"db2f40bc_092620ee","line":3486,"range":{"start_line":3486,"start_character":12,"end_line":3486,"end_character":41},"updated":"2025-08-14 17:52:52.000000000","message":"This comment, and many of the comments here, are just restating the assertions that are one-liners.  This is redundant and unnecessary.","commit_id":"3ea75990ce84bb22ceceb7575ec0e7c333ad063a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f0d9a9ca7a144738cf4a271d621f1da3b78775e4","unresolved":true,"context_lines":[{"line_number":3491,"context_line":"            # Verify resize is called to extend to the actual volume size"},{"line_number":3492,"context_line":"            mock_resize.assert_called_once_with(test_volume)"},{"line_number":3493,"context_line":""},{"line_number":3494,"context_line":"            # Verify passfile is opened for writing"},{"line_number":3495,"context_line":"            mock_open.assert_called_with(\u0027/passfile\u0027, \u0027w\u0027)"},{"line_number":3496,"context_line":""},{"line_number":3497,"context_line":"    @mock.patch(\u0027tempfile.NamedTemporaryFile\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"0ed18c60_d5e3d5ad","line":3494,"range":{"start_line":3494,"start_character":14,"end_line":3494,"end_character":29},"updated":"2025-08-14 17:52:52.000000000","message":"Ditto ^ re: redundant comment","commit_id":"3ea75990ce84bb22ceceb7575ec0e7c333ad063a"}]}
