)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"a2afb99ae524576962d4853cf20dd1ddef1ad5f7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e762d073_8d25e9d4","updated":"2023-09-21 20:02:19.000000000","message":"Thanks for the patch, Saravanan. Please, see my comment.","commit_id":"d9abcf6d6768c8caa372a0e39640b98cf1095836"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8f5f896d1c687309a5e833b41f3f8e6298f46e75","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"16d995ce_a0c806bc","updated":"2023-10-06 22:29:26.000000000","message":"Hi Saravanan, \n\nThanks for proposing this; I see a number of extraneous additions to this cherry pick. Can you please take a look and rationalize what portions need to be in this backport?","commit_id":"7617618811dba1f837b006094ebd35c7f52f562b"},{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"1abe30dd20dd5fc5dc330507ee12f3384a9b4493","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"267be635_8cd08ed1","updated":"2023-10-05 15:34:03.000000000","message":"LGTM","commit_id":"7617618811dba1f837b006094ebd35c7f52f562b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b63988e7ae5e1207c9a63a310a32b6f28ad39e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"4e98438e_54df4a19","updated":"2024-03-07 23:00:35.000000000","message":"Saravanan:\n\nCan you re-do this cherry-pick to go into unmaintained/wallaby instead?","commit_id":"7617618811dba1f837b006094ebd35c7f52f562b"}],"manila/share/drivers/netapp/dataontap/cluster_mode/data_motion.py":[{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"a2afb99ae524576962d4853cf20dd1ddef1ad5f7","unresolved":true,"context_lines":[{"line_number":734,"context_line":"                    \"Retries exhausted. Aborting\") % source_vserver"},{"line_number":735,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    def wait_for_mount_replica(self, vserver_client, share_name, timeout\u003d300):"},{"line_number":738,"context_line":"        \"\"\"Mount a replica share that is waiting for snapmirror initialize.\"\"\""},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"        interval \u003d 10"}],"source_content_type":"text/x-python","patch_set":3,"id":"02b1ae0a_3392c981","line":737,"updated":"2023-09-21 20:02:19.000000000","message":"Is this method really necessary? The base patch [1] of this backport don\u0027t introduced it and looks like you\u0027re only using it on UTs. The same for `wait_for_snapmirror_release_vol` method. Or I\u0027m missing something?\n\n[1] https://review.opendev.org/c/openstack/manila/+/849849","commit_id":"d9abcf6d6768c8caa372a0e39640b98cf1095836"},{"author":{"_account_id":36178,"name":"Saravanan Manickam","display_name":"msaravan","email":"manicsaran@gmail.com","username":"msaravan"},"change_message_id":"cea3ee342048234023e58b9c510076a094b54c92","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                    \"Retries exhausted. Aborting\") % source_vserver"},{"line_number":735,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    def wait_for_mount_replica(self, vserver_client, share_name, timeout\u003d300):"},{"line_number":738,"context_line":"        \"\"\"Mount a replica share that is waiting for snapmirror initialize.\"\"\""},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"        interval \u003d 10"}],"source_content_type":"text/x-python","patch_set":3,"id":"65783e49_e073f514","line":737,"in_reply_to":"02b1ae0a_3392c981","updated":"2023-09-28 15:11:52.000000000","message":"Yes, the UT is failing and I needed to change this, to make it work.","commit_id":"d9abcf6d6768c8caa372a0e39640b98cf1095836"},{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"1abe30dd20dd5fc5dc330507ee12f3384a9b4493","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                    \"Retries exhausted. Aborting\") % source_vserver"},{"line_number":735,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    def wait_for_mount_replica(self, vserver_client, share_name, timeout\u003d300):"},{"line_number":738,"context_line":"        \"\"\"Mount a replica share that is waiting for snapmirror initialize.\"\"\""},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"        interval \u003d 10"}],"source_content_type":"text/x-python","patch_set":3,"id":"abb748e8_b130ad76","line":737,"in_reply_to":"65783e49_e073f514","updated":"2023-10-05 15:34:03.000000000","message":"Got it.","commit_id":"d9abcf6d6768c8caa372a0e39640b98cf1095836"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8f5f896d1c687309a5e833b41f3f8e6298f46e75","unresolved":true,"context_lines":[{"line_number":734,"context_line":"                    \"Retries exhausted. Aborting\") % source_vserver"},{"line_number":735,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    def wait_for_mount_replica(self, vserver_client, share_name, timeout\u003d300):"},{"line_number":738,"context_line":"        \"\"\"Mount a replica share that is waiting for snapmirror initialize.\"\"\""},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"        interval \u003d 10"},{"line_number":741,"context_line":"        retries \u003d (timeout // interval or 1)"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"        @utils.retry(exception.ShareBusyException, interval\u003dinterval,"},{"line_number":744,"context_line":"                     retries\u003dretries, backoff_rate\u003d1)"},{"line_number":745,"context_line":"        def try_mount_volume():"},{"line_number":746,"context_line":"            try:"},{"line_number":747,"context_line":"                vserver_client.mount_volume(share_name)"},{"line_number":748,"context_line":"            except netapp_api.NaApiError as e:"},{"line_number":749,"context_line":"                undergoing_snap_init \u003d \u0027snapmirror initialize\u0027"},{"line_number":750,"context_line":"                msg_args \u003d {\u0027name\u0027: share_name}"},{"line_number":751,"context_line":"                if (e.code \u003d\u003d netapp_api.EAPIERROR and"},{"line_number":752,"context_line":"                        undergoing_snap_init in e.message):"},{"line_number":753,"context_line":"                    msg \u003d _(\u0027The share %(name)s is undergoing a snapmirror \u0027"},{"line_number":754,"context_line":"                            \u0027initialize. Will retry the operation.\u0027) % msg_args"},{"line_number":755,"context_line":"                    LOG.warning(msg)"},{"line_number":756,"context_line":"                    raise exception.ShareBusyException(reason\u003dmsg)"},{"line_number":757,"context_line":"                else:"},{"line_number":758,"context_line":"                    msg \u003d _(\"Unable to perform mount operation for the share \""},{"line_number":759,"context_line":"                            \"%(name)s. Caught an unexpected error. Not \""},{"line_number":760,"context_line":"                            \"retrying.\") % msg_args"},{"line_number":761,"context_line":"                    raise exception.NetAppException(message\u003dmsg)"},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"        try:"},{"line_number":764,"context_line":"            try_mount_volume()"},{"line_number":765,"context_line":"        except exception.ShareBusyException:"},{"line_number":766,"context_line":"            msg_args \u003d {\u0027name\u0027: share_name}"},{"line_number":767,"context_line":"            msg \u003d _(\"Unable to perform mount operation for the share %(name)s \""},{"line_number":768,"context_line":"                    \"because a snapmirror initialize operation is still in \""},{"line_number":769,"context_line":"                    \"progress. Retries exhausted. Not retrying.\") % msg_args"},{"line_number":770,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"    def wait_for_snapmirror_release_vol(self, src_vserver, dest_vserver,"},{"line_number":773,"context_line":"                                        src_volume_name, dest_volume_name,"},{"line_number":774,"context_line":"                                        relationship_info_only, src_client,"},{"line_number":775,"context_line":"                                        timeout\u003d300):"},{"line_number":776,"context_line":"        interval \u003d 10"},{"line_number":777,"context_line":"        retries \u003d (timeout / interval or 1)"},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"        @utils.retry(exception.NetAppException, interval\u003dinterval,"},{"line_number":780,"context_line":"                     retries\u003dretries, backoff_rate\u003d1)"},{"line_number":781,"context_line":"        def release_snapmirror():"},{"line_number":782,"context_line":"            snapmirrors \u003d src_client.get_snapmirror_destinations("},{"line_number":783,"context_line":"                source_vserver\u003dsrc_vserver, dest_vserver\u003ddest_vserver,"},{"line_number":784,"context_line":"                source_volume\u003dsrc_volume_name, dest_volume\u003ddest_volume_name)"},{"line_number":785,"context_line":"            if not snapmirrors:"},{"line_number":786,"context_line":"                LOG.debug(\"No snapmirrors to be released in source volume.\")"},{"line_number":787,"context_line":"            else:"},{"line_number":788,"context_line":"                try:"},{"line_number":789,"context_line":"                    src_client.release_snapmirror_vol("},{"line_number":790,"context_line":"                        src_vserver, src_volume_name, dest_vserver,"},{"line_number":791,"context_line":"                        dest_volume_name,"},{"line_number":792,"context_line":"                        relationship_info_only\u003drelationship_info_only)"},{"line_number":793,"context_line":"                except netapp_api.NaApiError as e:"},{"line_number":794,"context_line":"                    if (e.code \u003d\u003d netapp_api.EOBJECTNOTFOUND or"},{"line_number":795,"context_line":"                            e.code \u003d\u003d netapp_api.ESOURCE_IS_DIFFERENT or"},{"line_number":796,"context_line":"                            \"(entry doesn\u0027t exist)\" in e.message):"},{"line_number":797,"context_line":"                        LOG.debug(\u0027Snapmirror relationship does not exist \u0027"},{"line_number":798,"context_line":"                                  \u0027anymore.\u0027)"},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"                msg \u003d _(\u0027Snapmirror release sent to source volume. Waiting \u0027"},{"line_number":801,"context_line":"                        \u0027until it has been released.\u0027)"},{"line_number":802,"context_line":"                raise exception.NetAppException(vserver\u003dmsg)"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"        try:"},{"line_number":805,"context_line":"            release_snapmirror()"},{"line_number":806,"context_line":"        except exception.NetAppException:"},{"line_number":807,"context_line":"            msg \u003d _(\"Unable to release the snapmirror from source volume %s. \""},{"line_number":808,"context_line":"                    \"Retries exhausted. Aborting\") % src_volume_name"},{"line_number":809,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"    def cleanup_previous_snapmirror_relationships(self, replica, replica_list):"},{"line_number":812,"context_line":"        \"\"\"Cleanup previous snapmirrors relationships for replica.\"\"\""},{"line_number":813,"context_line":"        LOG.debug(\"Cleaning up old snapmirror relationships for replica %s.\","}],"source_content_type":"text/x-python","patch_set":5,"id":"352ec1c1_cd125a7c","line":810,"range":{"start_line":737,"start_character":4,"end_line":810,"end_character":0},"updated":"2023-10-06 22:29:26.000000000","message":"I see these methods were necessary for Flexgroups. Flexgroups were introduced in the Xena release... they\u0027re not supported on this branch.","commit_id":"7617618811dba1f837b006094ebd35c7f52f562b"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_base.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8f5f896d1c687309a5e833b41f3f8e6298f46e75","unresolved":true,"context_lines":[{"line_number":2530,"context_line":"                if e.code !\u003d netapp_api.EOBJECTNOTFOUND:"},{"line_number":2531,"context_line":"                    raise"},{"line_number":2532,"context_line":""},{"line_number":2533,"context_line":"    def _is_readable_replica(self, replica):"},{"line_number":2534,"context_line":"        \"\"\"Check the replica type to find out if the replica is readable.\"\"\""},{"line_number":2535,"context_line":"        extra_specs \u003d share_types.get_extra_specs_from_share(replica)"},{"line_number":2536,"context_line":"        return (extra_specs.get(\u0027replication_type\u0027) \u003d\u003d"},{"line_number":2537,"context_line":"                constants.REPLICATION_TYPE_READABLE)"},{"line_number":2538,"context_line":""},{"line_number":2539,"context_line":"    def _check_destination_vserver_for_vol_move(self, source_share,"},{"line_number":2540,"context_line":"                                                source_vserver,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5b6f1b7f_c1ec8992","line":2537,"range":{"start_line":2533,"start_character":0,"end_line":2537,"end_character":52},"updated":"2023-10-06 22:29:26.000000000","message":"Readable replication support was introduced in the Xena cycle: https://review.opendev.org/c/openstack/manila/+/803621\n\nhttps://docs.openstack.org/releasenotes/manila/xena.html#relnotes-13-0-0-stable-xena-new-features\n\nYou shouldn\u0027t be backporting this to stable wallaby; it\u0027s unrelated to the bug you\u0027re fixing..","commit_id":"7617618811dba1f837b006094ebd35c7f52f562b"}],"manila/tests/share/drivers/netapp/dataontap/cluster_mode/test_data_motion.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8f5f896d1c687309a5e833b41f3f8e6298f46e75","unresolved":true,"context_lines":[{"line_number":1052,"context_line":"            fake.VSERVER1, fake.VSERVER2"},{"line_number":1053,"context_line":"        )"},{"line_number":1054,"context_line":""},{"line_number":1055,"context_line":"    def test_wait_for_mount_replica(self):"},{"line_number":1056,"context_line":""},{"line_number":1057,"context_line":"        mock_client \u003d mock.Mock()"},{"line_number":1058,"context_line":"        self.mock_object(time, \u0027sleep\u0027)"},{"line_number":1059,"context_line":"        mock_warning_log \u003d self.mock_object(data_motion.LOG, \u0027warning\u0027)"},{"line_number":1060,"context_line":""},{"line_number":1061,"context_line":"        self.dm_session.wait_for_mount_replica("},{"line_number":1062,"context_line":"            mock_client, fake.SHARE_NAME)"},{"line_number":1063,"context_line":""},{"line_number":1064,"context_line":"        mock_client.mount_volume.ssert_called_once_with(fake.SHARE_NAME)"},{"line_number":1065,"context_line":"        self.assertEqual(0, mock_warning_log.call_count)"},{"line_number":1066,"context_line":""},{"line_number":1067,"context_line":"    def test_wait_for_mount_replica_timeout(self):"},{"line_number":1068,"context_line":""},{"line_number":1069,"context_line":"        mock_client \u003d mock.Mock()"},{"line_number":1070,"context_line":"        self.mock_object(time, \u0027sleep\u0027)"},{"line_number":1071,"context_line":"        mock_warning_log \u003d self.mock_object(data_motion.LOG, \u0027warning\u0027)"},{"line_number":1072,"context_line":"        undergoing_snapmirror \u003d ("},{"line_number":1073,"context_line":"            \u0027The volume is undergoing a snapmirror initialize.\u0027)"},{"line_number":1074,"context_line":"        na_api_error \u003d netapp_api.NaApiError(code\u003dnetapp_api.EAPIERROR,"},{"line_number":1075,"context_line":"                                             message\u003dundergoing_snapmirror)"},{"line_number":1076,"context_line":"        mock_client.mount_volume.side_effect \u003d na_api_error"},{"line_number":1077,"context_line":""},{"line_number":1078,"context_line":"        self.assertRaises(exception.NetAppException,"},{"line_number":1079,"context_line":"                          self.dm_session.wait_for_mount_replica,"},{"line_number":1080,"context_line":"                          mock_client, fake.SHARE_NAME, timeout\u003d30)"},{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":"        self.assertEqual(3, mock_client.mount_volume.call_count)"},{"line_number":1083,"context_line":"        self.assertEqual(3, mock_warning_log.call_count)"},{"line_number":1084,"context_line":""},{"line_number":1085,"context_line":"    def test_wait_for_mount_replica_api_not_found(self):"},{"line_number":1086,"context_line":""},{"line_number":1087,"context_line":"        mock_client \u003d mock.Mock()"},{"line_number":1088,"context_line":"        self.mock_object(time, \u0027sleep\u0027)"},{"line_number":1089,"context_line":"        mock_warning_log \u003d self.mock_object(data_motion.LOG, \u0027warning\u0027)"},{"line_number":1090,"context_line":"        na_api_error \u003d netapp_api.NaApiError(code\u003dnetapp_api.EOBJECTNOTFOUND)"},{"line_number":1091,"context_line":"        mock_client.mount_volume.side_effect \u003d na_api_error"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        self.assertRaises(exception.NetAppException,"},{"line_number":1094,"context_line":"                          self.dm_session.wait_for_mount_replica,"},{"line_number":1095,"context_line":"                          mock_client, fake.SHARE_NAME, timeout\u003d30)"},{"line_number":1096,"context_line":""},{"line_number":1097,"context_line":"        mock_client.mount_volume.assert_called_once_with(fake.SHARE_NAME)"},{"line_number":1098,"context_line":"        mock_warning_log.assert_not_called()"},{"line_number":1099,"context_line":""},{"line_number":1100,"context_line":"    @ddt.data(mock.Mock(),"},{"line_number":1101,"context_line":"              mock.Mock(side_effect\u003dnetapp_api.NaApiError("},{"line_number":1102,"context_line":"                  code\u003dnetapp_api.EOBJECTNOTFOUND)))"},{"line_number":1103,"context_line":"    def test_wait_for_snapmirror_release_vol(self, release_snapmirror_ret):"},{"line_number":1104,"context_line":"        src_mock_client \u003d mock.Mock()"},{"line_number":1105,"context_line":"        get_snapmirrors_mock \u003d self.mock_object("},{"line_number":1106,"context_line":"            src_mock_client, \u0027get_snapmirror_destinations\u0027,"},{"line_number":1107,"context_line":"            mock.Mock(side_effect\u003d[[\u0027fake_snapmirror\u0027], []]))"},{"line_number":1108,"context_line":"        self.mock_object(src_mock_client, \u0027release_snapmirror_vol\u0027,"},{"line_number":1109,"context_line":"                         release_snapmirror_ret)"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"        self.dm_session.wait_for_snapmirror_release_vol(fake.VSERVER1,"},{"line_number":1112,"context_line":"                                                        fake.VSERVER2,"},{"line_number":1113,"context_line":"                                                        fake.SHARE_NAME,"},{"line_number":1114,"context_line":"                                                        fake.SHARE_NAME2,"},{"line_number":1115,"context_line":"                                                        False,"},{"line_number":1116,"context_line":"                                                        src_mock_client,"},{"line_number":1117,"context_line":"                                                        timeout\u003d20)"},{"line_number":1118,"context_line":"        get_snapmirrors_mock.assert_has_calls(["},{"line_number":1119,"context_line":"            mock.call(source_vserver\u003dfake.VSERVER1,"},{"line_number":1120,"context_line":"                      dest_vserver\u003dfake.VSERVER2,"},{"line_number":1121,"context_line":"                      source_volume\u003dfake.SHARE_NAME,"},{"line_number":1122,"context_line":"                      dest_volume\u003dfake.SHARE_NAME2),"},{"line_number":1123,"context_line":"            mock.call(source_vserver\u003dfake.VSERVER1,"},{"line_number":1124,"context_line":"                      dest_vserver\u003dfake.VSERVER2,"},{"line_number":1125,"context_line":"                      source_volume\u003dfake.SHARE_NAME,"},{"line_number":1126,"context_line":"                      dest_volume\u003dfake.SHARE_NAME2)])"},{"line_number":1127,"context_line":"        src_mock_client.release_snapmirror_vol.assert_called_once_with("},{"line_number":1128,"context_line":"            fake.VSERVER1, fake.SHARE_NAME, fake.VSERVER2, fake.SHARE_NAME2,"},{"line_number":1129,"context_line":"            relationship_info_only\u003dFalse)"},{"line_number":1130,"context_line":""},{"line_number":1131,"context_line":"    def test_wait_for_snapmirror_release_vol_timeout(self):"},{"line_number":1132,"context_line":"        src_mock_client \u003d mock.Mock()"},{"line_number":1133,"context_line":"        get_snapmirrors_mock \u003d self.mock_object("},{"line_number":1134,"context_line":"            src_mock_client, \u0027get_snapmirror_destinations\u0027,"},{"line_number":1135,"context_line":"            mock.Mock(side_effect\u003d[[\u0027fake_snapmirror\u0027]]))"},{"line_number":1136,"context_line":"        self.mock_object(src_mock_client, \u0027release_snapmirror_vol\u0027)"},{"line_number":1137,"context_line":""},{"line_number":1138,"context_line":"        self.assertRaises(exception.NetAppException,"},{"line_number":1139,"context_line":"                          self.dm_session.wait_for_snapmirror_release_vol,"},{"line_number":1140,"context_line":"                          fake.VSERVER1, fake.VSERVER2, fake.SHARE_NAME,"},{"line_number":1141,"context_line":"                          fake.SHARE_NAME2, False, src_mock_client,"},{"line_number":1142,"context_line":"                          timeout\u003d10)"},{"line_number":1143,"context_line":""},{"line_number":1144,"context_line":"        get_snapmirrors_mock.assert_has_calls(["},{"line_number":1145,"context_line":"            mock.call(source_vserver\u003dfake.VSERVER1,"},{"line_number":1146,"context_line":"                      dest_vserver\u003dfake.VSERVER2,"},{"line_number":1147,"context_line":"                      source_volume\u003dfake.SHARE_NAME,"},{"line_number":1148,"context_line":"                      dest_volume\u003dfake.SHARE_NAME2)])"},{"line_number":1149,"context_line":"        src_mock_client.release_snapmirror_vol.assert_called_once_with("},{"line_number":1150,"context_line":"            fake.VSERVER1, fake.SHARE_NAME, fake.VSERVER2, fake.SHARE_NAME2,"},{"line_number":1151,"context_line":"            relationship_info_only\u003dFalse)"},{"line_number":1152,"context_line":""},{"line_number":1153,"context_line":"    @ddt.data([{\u0027id\u0027: \u0027src_share\u0027}, {\u0027id\u0027: \u0027dst_share\u0027}],"},{"line_number":1154,"context_line":"              [{\u0027id\u0027: \u0027dst_share\u0027}])"}],"source_content_type":"text/x-python","patch_set":5,"id":"860cd56a_669fab4c","line":1151,"range":{"start_line":1055,"start_character":0,"end_line":1151,"end_character":41},"updated":"2023-10-06 22:29:26.000000000","message":"These changes are unrelated to the bugfix being backported","commit_id":"7617618811dba1f837b006094ebd35c7f52f562b"}]}
