)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6ec3047c0783946c0c44621743b108953b53fc68","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[Unity] Support consistency group replication"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1.Only support consitentcy group replication in this patch."},{"line_number":10,"context_line":"Need set property consistent_group_snapshot_enabled\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":11,"context_line":"and consistent_group_replication_enabled\u003d\u0027\u003cis\u003e True\u0027 in group type."},{"line_number":12,"context_line":"2.Don\u0027t support genneric group replication in this patch."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"df33271e_0bc56ef1","line":9,"range":{"start_line":9,"start_character":15,"end_line":9,"end_character":26},"updated":"2020-03-30 19:54:35.000000000","message":"consistency","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"},{"author":{"_account_id":29291,"name":"DingDong","email":"dong.ding@emc.com","username":"DingDong"},"change_message_id":"e2e96466f69bc84c1763a0ea354db657b2d27648","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[Unity] Support consistency group replication"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1.Only support consitentcy group replication in this patch."},{"line_number":10,"context_line":"Need set property consistent_group_snapshot_enabled\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":11,"context_line":"and consistent_group_replication_enabled\u003d\u0027\u003cis\u003e True\u0027 in group type."},{"line_number":12,"context_line":"2.Don\u0027t support genneric group replication in this patch."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"df33271e_2dc2015a","line":9,"range":{"start_line":9,"start_character":15,"end_line":9,"end_character":26},"in_reply_to":"df33271e_0bc56ef1","updated":"2020-03-31 07:58:32.000000000","message":"Done","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"}],"cinder/tests/unit/volume/drivers/dell_emc/unity/test_client.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6ec3047c0783946c0c44621743b108953b53fc68","unresolved":false,"context_lines":[{"line_number":892,"context_line":"        called \u003d self.client.create_cg_replication("},{"line_number":893,"context_line":"            cg_name, \u0027pool_1\u0027, remote_system, 60)"},{"line_number":894,"context_line":"        self.assertEqual(called[\u0027max_time_out_of_sync\u0027], 60)"},{"line_number":895,"context_line":"        self.assertEqual(called[\u0027dst_pool_id\u0027], \u0027pool_1\u0027)"},{"line_number":896,"context_line":"        self.assertEqual(called[\u0027dst_cg_name\u0027], \u0027test_cg\u0027)"},{"line_number":897,"context_line":"        self.assertIs(called[\u0027remote_system\u0027], remote_system)"},{"line_number":898,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_abb3a297","line":895,"range":{"start_line":895,"start_character":25,"end_line":895,"end_character":56},"updated":"2020-03-30 19:54:35.000000000","message":"Argument order should be (EXPECTED, ACTUAL)","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"},{"author":{"_account_id":29291,"name":"DingDong","email":"dong.ding@emc.com","username":"DingDong"},"change_message_id":"e2e96466f69bc84c1763a0ea354db657b2d27648","unresolved":false,"context_lines":[{"line_number":892,"context_line":"        called \u003d self.client.create_cg_replication("},{"line_number":893,"context_line":"            cg_name, \u0027pool_1\u0027, remote_system, 60)"},{"line_number":894,"context_line":"        self.assertEqual(called[\u0027max_time_out_of_sync\u0027], 60)"},{"line_number":895,"context_line":"        self.assertEqual(called[\u0027dst_pool_id\u0027], \u0027pool_1\u0027)"},{"line_number":896,"context_line":"        self.assertEqual(called[\u0027dst_cg_name\u0027], \u0027test_cg\u0027)"},{"line_number":897,"context_line":"        self.assertIs(called[\u0027remote_system\u0027], remote_system)"},{"line_number":898,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_edead9d5","line":895,"range":{"start_line":895,"start_character":25,"end_line":895,"end_character":56},"in_reply_to":"df33271e_abb3a297","updated":"2020-03-31 07:58:32.000000000","message":"Done","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5e8ee3c120a27cb46cc65fbedb85dfad0bc8fe49","unresolved":false,"context_lines":[{"line_number":899,"context_line":"    def test_cg_in_replciation(self):"},{"line_number":900,"context_line":"        existing_cg \u003d MockResource(_id\u003d\u0027replicated_cg\u0027)"},{"line_number":901,"context_line":"        result \u003d self.client.is_cg_replicated(existing_cg.id)"},{"line_number":902,"context_line":"        self.assertEqual(True, result)"},{"line_number":903,"context_line":""},{"line_number":904,"context_line":"    def test_cg_not_in_replciation(self):"},{"line_number":905,"context_line":"        existing_cg \u003d MockResource(_id\u003d\u0027test_cg\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"df33271e_64208dad","line":902,"range":{"start_line":902,"start_character":8,"end_line":902,"end_character":38},"updated":"2020-03-31 21:09:54.000000000","message":"I missed this. These really should be self.assertTrue(result)","commit_id":"f6fe8f4007789cfdd94dd9236007f110529b39e2"},{"author":{"_account_id":29291,"name":"DingDong","email":"dong.ding@emc.com","username":"DingDong"},"change_message_id":"8c639af6f11791be8d93175efacddd87dc12a2e2","unresolved":false,"context_lines":[{"line_number":899,"context_line":"    def test_cg_in_replciation(self):"},{"line_number":900,"context_line":"        existing_cg \u003d MockResource(_id\u003d\u0027replicated_cg\u0027)"},{"line_number":901,"context_line":"        result \u003d self.client.is_cg_replicated(existing_cg.id)"},{"line_number":902,"context_line":"        self.assertEqual(True, result)"},{"line_number":903,"context_line":""},{"line_number":904,"context_line":"    def test_cg_not_in_replciation(self):"},{"line_number":905,"context_line":"        existing_cg \u003d MockResource(_id\u003d\u0027test_cg\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"df33271e_f856fe5b","line":902,"range":{"start_line":902,"start_character":8,"end_line":902,"end_character":38},"in_reply_to":"df33271e_64208dad","updated":"2020-04-01 01:22:35.000000000","message":"Done","commit_id":"f6fe8f4007789cfdd94dd9236007f110529b39e2"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0ee6d94289279d9ef3330f7205626dc304d015e4","unresolved":false,"context_lines":[{"line_number":744,"context_line":"                                  create\u003dTrue,"},{"line_number":745,"context_line":"                                  return_value\u003dexisting_cg) as mocked_get:"},{"line_number":746,"context_line":"            ret \u003d self.client.delete_cg(\u0027cg_1_name\u0027)"},{"line_number":747,"context_line":"            mocked_get.assert_called_once_with(\u0027cg_1_name\u0027)"},{"line_number":748,"context_line":"            mocked_delete.assert_called_once()"},{"line_number":749,"context_line":"            self.assertIsNone(ret)"},{"line_number":750,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_2ec77c66","line":747,"updated":"2020-04-01 03:54:56.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8d3241cd97189eec0c5956a08ee87fa1a95a28b2","unresolved":false,"context_lines":[{"line_number":744,"context_line":"                                  create\u003dTrue,"},{"line_number":745,"context_line":"                                  return_value\u003dexisting_cg) as mocked_get:"},{"line_number":746,"context_line":"            ret \u003d self.client.delete_cg(\u0027cg_1_name\u0027)"},{"line_number":747,"context_line":"            mocked_get.assert_called_once_with(\u0027cg_1_name\u0027)"},{"line_number":748,"context_line":"            mocked_delete.assert_called_once()"},{"line_number":749,"context_line":"            self.assertIsNone(ret)"},{"line_number":750,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_724de63c","line":747,"updated":"2020-04-01 09:29:36.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e9999fbf205824059e0c64d247c431eaf44ccc28","unresolved":false,"context_lines":[{"line_number":744,"context_line":"                                  create\u003dTrue,"},{"line_number":745,"context_line":"                                  return_value\u003dexisting_cg) as mocked_get:"},{"line_number":746,"context_line":"            ret \u003d self.client.delete_cg(\u0027cg_1_name\u0027)"},{"line_number":747,"context_line":"            mocked_get.assert_called_once_with(\u0027cg_1_name\u0027)"},{"line_number":748,"context_line":"            mocked_delete.assert_called_once()"},{"line_number":749,"context_line":"            self.assertIsNone(ret)"},{"line_number":750,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_a1627108","line":747,"updated":"2020-04-01 15:37:44.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0ee6d94289279d9ef3330f7205626dc304d015e4","unresolved":false,"context_lines":[{"line_number":770,"context_line":"                mock.patch.object(self.client, \u0027get_lun\u0027,"},{"line_number":771,"context_line":"                                  side_effect\u003d_mocked_get_lun):"},{"line_number":772,"context_line":"            ret \u003d self.client.update_cg(\u0027cg_1_name\u0027, [\u0027sv_1\u0027, \u0027sv_2\u0027],"},{"line_number":773,"context_line":"                                        [\u0027sv_3\u0027])"},{"line_number":774,"context_line":"            mocked_get.assert_called_once_with(\u0027cg_1_name\u0027)"},{"line_number":775,"context_line":"            mocked_update.assert_called_once_with(add_luns\u003d[lun_1, lun_2],"},{"line_number":776,"context_line":"                                                  remove_luns\u003d[lun_3])"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_0ec4385e","line":773,"updated":"2020-04-01 03:54:56.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8d3241cd97189eec0c5956a08ee87fa1a95a28b2","unresolved":false,"context_lines":[{"line_number":770,"context_line":"                mock.patch.object(self.client, \u0027get_lun\u0027,"},{"line_number":771,"context_line":"                                  side_effect\u003d_mocked_get_lun):"},{"line_number":772,"context_line":"            ret \u003d self.client.update_cg(\u0027cg_1_name\u0027, [\u0027sv_1\u0027, \u0027sv_2\u0027],"},{"line_number":773,"context_line":"                                        [\u0027sv_3\u0027])"},{"line_number":774,"context_line":"            mocked_get.assert_called_once_with(\u0027cg_1_name\u0027)"},{"line_number":775,"context_line":"            mocked_update.assert_called_once_with(add_luns\u003d[lun_1, lun_2],"},{"line_number":776,"context_line":"                                                  remove_luns\u003d[lun_3])"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_5248a22b","line":773,"updated":"2020-04-01 09:29:36.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e9999fbf205824059e0c64d247c431eaf44ccc28","unresolved":false,"context_lines":[{"line_number":770,"context_line":"                mock.patch.object(self.client, \u0027get_lun\u0027,"},{"line_number":771,"context_line":"                                  side_effect\u003d_mocked_get_lun):"},{"line_number":772,"context_line":"            ret \u003d self.client.update_cg(\u0027cg_1_name\u0027, [\u0027sv_1\u0027, \u0027sv_2\u0027],"},{"line_number":773,"context_line":"                                        [\u0027sv_3\u0027])"},{"line_number":774,"context_line":"            mocked_get.assert_called_once_with(\u0027cg_1_name\u0027)"},{"line_number":775,"context_line":"            mocked_update.assert_called_once_with(add_luns\u003d[lun_1, lun_2],"},{"line_number":776,"context_line":"                                                  remove_luns\u003d[lun_3])"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_815dad48","line":773,"updated":"2020-04-01 15:37:44.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0ee6d94289279d9ef3330f7205626dc304d015e4","unresolved":false,"context_lines":[{"line_number":784,"context_line":"                                  create\u003dTrue,"},{"line_number":785,"context_line":"                                  return_value\u003dexisting_cg) as mocked_get:"},{"line_number":786,"context_line":"            ret \u003d self.client.update_cg(\u0027cg_1_name\u0027, set(), set())"},{"line_number":787,"context_line":"            mocked_get.assert_called_once_with(\u0027cg_1_name\u0027)"},{"line_number":788,"context_line":"            mocked_update.assert_called_once_with(add_luns\u003d[], remove_luns\u003d[])"},{"line_number":789,"context_line":"            self.assertIsNone(ret)"},{"line_number":790,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_6ea224b0","line":787,"updated":"2020-04-01 03:54:56.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8d3241cd97189eec0c5956a08ee87fa1a95a28b2","unresolved":false,"context_lines":[{"line_number":784,"context_line":"                                  create\u003dTrue,"},{"line_number":785,"context_line":"                                  return_value\u003dexisting_cg) as mocked_get:"},{"line_number":786,"context_line":"            ret \u003d self.client.update_cg(\u0027cg_1_name\u0027, set(), set())"},{"line_number":787,"context_line":"            mocked_get.assert_called_once_with(\u0027cg_1_name\u0027)"},{"line_number":788,"context_line":"            mocked_update.assert_called_once_with(add_luns\u003d[], remove_luns\u003d[])"},{"line_number":789,"context_line":"            self.assertIsNone(ret)"},{"line_number":790,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_b253eee1","line":787,"updated":"2020-04-01 09:29:36.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e9999fbf205824059e0c64d247c431eaf44ccc28","unresolved":false,"context_lines":[{"line_number":784,"context_line":"                                  create\u003dTrue,"},{"line_number":785,"context_line":"                                  return_value\u003dexisting_cg) as mocked_get:"},{"line_number":786,"context_line":"            ret \u003d self.client.update_cg(\u0027cg_1_name\u0027, set(), set())"},{"line_number":787,"context_line":"            mocked_get.assert_called_once_with(\u0027cg_1_name\u0027)"},{"line_number":788,"context_line":"            mocked_update.assert_called_once_with(add_luns\u003d[], remove_luns\u003d[])"},{"line_number":789,"context_line":"            self.assertIsNone(ret)"},{"line_number":790,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_e158f956","line":787,"updated":"2020-04-01 15:37:44.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0ee6d94289279d9ef3330f7205626dc304d015e4","unresolved":false,"context_lines":[{"line_number":908,"context_line":""},{"line_number":909,"context_line":"    def test_delete_cg_rep_session(self):"},{"line_number":910,"context_line":"        src_cg \u003d MockResource(_id\u003d\u0027cg_is_in_replication\u0027)"},{"line_number":911,"context_line":"        result \u003d self.client.delete_cg_rep_session(src_cg.id)"},{"line_number":912,"context_line":"        self.assertIsNone(result)"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def test_failover_cg_rep_session(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_4ea760be","line":911,"updated":"2020-04-01 03:54:56.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8d3241cd97189eec0c5956a08ee87fa1a95a28b2","unresolved":false,"context_lines":[{"line_number":908,"context_line":""},{"line_number":909,"context_line":"    def test_delete_cg_rep_session(self):"},{"line_number":910,"context_line":"        src_cg \u003d MockResource(_id\u003d\u0027cg_is_in_replication\u0027)"},{"line_number":911,"context_line":"        result \u003d self.client.delete_cg_rep_session(src_cg.id)"},{"line_number":912,"context_line":"        self.assertIsNone(result)"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def test_failover_cg_rep_session(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_924eaa35","line":911,"updated":"2020-04-01 09:29:36.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e9999fbf205824059e0c64d247c431eaf44ccc28","unresolved":false,"context_lines":[{"line_number":908,"context_line":""},{"line_number":909,"context_line":"    def test_delete_cg_rep_session(self):"},{"line_number":910,"context_line":"        src_cg \u003d MockResource(_id\u003d\u0027cg_is_in_replication\u0027)"},{"line_number":911,"context_line":"        result \u003d self.client.delete_cg_rep_session(src_cg.id)"},{"line_number":912,"context_line":"        self.assertIsNone(result)"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def test_failover_cg_rep_session(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_c1533538","line":911,"updated":"2020-04-01 15:37:44.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e9999fbf205824059e0c64d247c431eaf44ccc28","unresolved":false,"context_lines":[{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def test_failover_cg_rep_session(self):"},{"line_number":915,"context_line":"        src_cg \u003d MockResource(_id\u003d\u0027failover_cg_is_in_replication\u0027)"},{"line_number":916,"context_line":"        result \u003d self.client.failover_cg_rep_session(src_cg.id, True)"},{"line_number":917,"context_line":"        self.assertIsNone(result)"},{"line_number":918,"context_line":""},{"line_number":919,"context_line":"    def test_failback_cg_rep_session(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_2134a1fb","line":916,"updated":"2020-04-01 15:37:44.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0ee6d94289279d9ef3330f7205626dc304d015e4","unresolved":false,"context_lines":[{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def test_failover_cg_rep_session(self):"},{"line_number":915,"context_line":"        src_cg \u003d MockResource(_id\u003d\u0027failover_cg_is_in_replication\u0027)"},{"line_number":916,"context_line":"        result \u003d self.client.failover_cg_rep_session(src_cg.id, True)"},{"line_number":917,"context_line":"        self.assertIsNone(result)"},{"line_number":918,"context_line":""},{"line_number":919,"context_line":"    def test_failback_cg_rep_session(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_aea8ac8b","line":916,"updated":"2020-04-01 03:54:56.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8d3241cd97189eec0c5956a08ee87fa1a95a28b2","unresolved":false,"context_lines":[{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def test_failover_cg_rep_session(self):"},{"line_number":915,"context_line":"        src_cg \u003d MockResource(_id\u003d\u0027failover_cg_is_in_replication\u0027)"},{"line_number":916,"context_line":"        result \u003d self.client.failover_cg_rep_session(src_cg.id, True)"},{"line_number":917,"context_line":"        self.assertIsNone(result)"},{"line_number":918,"context_line":""},{"line_number":919,"context_line":"    def test_failback_cg_rep_session(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_f26296ad","line":916,"updated":"2020-04-01 09:29:36.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e9999fbf205824059e0c64d247c431eaf44ccc28","unresolved":false,"context_lines":[{"line_number":918,"context_line":""},{"line_number":919,"context_line":"    def test_failback_cg_rep_session(self):"},{"line_number":920,"context_line":"        src_cg \u003d MockResource(_id\u003d\u0027failback_cg_is_in_replication\u0027)"},{"line_number":921,"context_line":"        result \u003d self.client.failback_cg_rep_session(src_cg.id)"},{"line_number":922,"context_line":"        self.assertIsNone(result)"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_0137dd00","line":921,"updated":"2020-04-01 15:37:44.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0ee6d94289279d9ef3330f7205626dc304d015e4","unresolved":false,"context_lines":[{"line_number":918,"context_line":""},{"line_number":919,"context_line":"    def test_failback_cg_rep_session(self):"},{"line_number":920,"context_line":"        src_cg \u003d MockResource(_id\u003d\u0027failback_cg_is_in_replication\u0027)"},{"line_number":921,"context_line":"        result \u003d self.client.failback_cg_rep_session(src_cg.id)"},{"line_number":922,"context_line":"        self.assertIsNone(result)"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_8eade89c","line":921,"updated":"2020-04-01 03:54:56.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8d3241cd97189eec0c5956a08ee87fa1a95a28b2","unresolved":false,"context_lines":[{"line_number":918,"context_line":""},{"line_number":919,"context_line":"    def test_failback_cg_rep_session(self):"},{"line_number":920,"context_line":"        src_cg \u003d MockResource(_id\u003d\u0027failback_cg_is_in_replication\u0027)"},{"line_number":921,"context_line":"        result \u003d self.client.failback_cg_rep_session(src_cg.id)"},{"line_number":922,"context_line":"        self.assertIsNone(result)"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_d265d2b6","line":921,"updated":"2020-04-01 09:29:36.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"}],"cinder/tests/unit/volume/drivers/dell_emc/unity/test_driver.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e9999fbf205824059e0c64d247c431eaf44ccc28","unresolved":false,"context_lines":[{"line_number":377,"context_line":"    def test_get_pool(self):"},{"line_number":378,"context_line":"        self.assertEqual(\u0027pool_0\u0027, self.driver.get_pool(self.get_volume()))"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def test_unmanage(self):"},{"line_number":381,"context_line":"        ret \u003d self.driver.unmanage(None)"},{"line_number":382,"context_line":"        self.assertIsNone(ret)"},{"line_number":383,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_214f8193","line":380,"updated":"2020-04-01 15:37:44.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8d3241cd97189eec0c5956a08ee87fa1a95a28b2","unresolved":false,"context_lines":[{"line_number":377,"context_line":"    def test_get_pool(self):"},{"line_number":378,"context_line":"        self.assertEqual(\u0027pool_0\u0027, self.driver.get_pool(self.get_volume()))"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def test_unmanage(self):"},{"line_number":381,"context_line":"        ret \u003d self.driver.unmanage(None)"},{"line_number":382,"context_line":"        self.assertIsNone(ret)"},{"line_number":383,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_32599efd","line":380,"updated":"2020-04-01 09:29:36.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0ee6d94289279d9ef3330f7205626dc304d015e4","unresolved":false,"context_lines":[{"line_number":377,"context_line":"    def test_get_pool(self):"},{"line_number":378,"context_line":"        self.assertEqual(\u0027pool_0\u0027, self.driver.get_pool(self.get_volume()))"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def test_unmanage(self):"},{"line_number":381,"context_line":"        ret \u003d self.driver.unmanage(None)"},{"line_number":382,"context_line":"        self.assertIsNone(ret)"},{"line_number":383,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_cecd3086","line":380,"updated":"2020-04-01 03:54:56.000000000","message":"E1111: \u001b[1;31mAssigning result of a function call, where the function has no return\u001b[0m (\u001b[1;31massignment-from-no-return\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"}],"cinder/volume/drivers/dell_emc/unity/adapter.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2f9dbc2d697827357bd0f5716fa272772f6bb719","unresolved":false,"context_lines":[{"line_number":1068,"context_line":"        except Exception as e:"},{"line_number":1069,"context_line":"            group_update.update({"},{"line_number":1070,"context_line":"                \u0027replication_status\u0027: fields.ReplicationStatus.ERROR})"},{"line_number":1071,"context_line":"            LOG.error(\"Error enabling replication on group %(group)s. \""},{"line_number":1072,"context_line":"                      \"Exception received: %(e)s.\","},{"line_number":1073,"context_line":"                      {\u0027group\u0027: group.id, \u0027e\u0027: e})"},{"line_number":1074,"context_line":"        return group_update, None"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_3a6a6c80","line":1071,"range":{"start_line":1071,"start_character":12,"end_line":1071,"end_character":21},"updated":"2019-11-01 17:00:05.000000000","message":"Please, use LOG.exception here and below:\n\nLOG.exception(\"Error enabling replication on group %(group)s. \"\n                      \"Exception received: \",\n                      {\u0027group\u0027: group.id})","commit_id":"3061ab2a5ab3bfaa36b0e9f67ae74a0473b60c4a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6ec3047c0783946c0c44621743b108953b53fc68","unresolved":false,"context_lines":[{"line_number":1010,"context_line":"        return None, None"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"    def enable_replication(self, context, group, volumes):"},{"line_number":1013,"context_line":"        \"\"\"Enable the group replication."},{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":"        \"\"\""},{"line_number":1016,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_eb7e4aad","line":1013,"range":{"start_line":1013,"start_character":40,"end_line":1013,"end_character":40},"updated":"2020-03-30 19:54:35.000000000","message":"Single line docstrings should all be on one line.","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"},{"author":{"_account_id":29291,"name":"DingDong","email":"dong.ding@emc.com","username":"DingDong"},"change_message_id":"e2e96466f69bc84c1763a0ea354db657b2d27648","unresolved":false,"context_lines":[{"line_number":1010,"context_line":"        return None, None"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"    def enable_replication(self, context, group, volumes):"},{"line_number":1013,"context_line":"        \"\"\"Enable the group replication."},{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":"        \"\"\""},{"line_number":1016,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_edc3f955","line":1013,"range":{"start_line":1013,"start_character":40,"end_line":1013,"end_character":40},"in_reply_to":"df33271e_eb7e4aad","updated":"2020-03-31 07:58:32.000000000","message":"Done","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6ec3047c0783946c0c44621743b108953b53fc68","unresolved":false,"context_lines":[{"line_number":1024,"context_line":"        group_is_cg \u003d utils.group_is_cg(group)"},{"line_number":1025,"context_line":"        if not group_is_cg:"},{"line_number":1026,"context_line":"            msg \u003d (_(\u0027Cannot enable replication on generic group \u0027"},{"line_number":1027,"context_line":"                     \u0027%(group_id)s, need use CG type instead of \u0027"},{"line_number":1028,"context_line":"                     \u0027that(need enable \u0027"},{"line_number":1029,"context_line":"                     \u0027consistent_group_snapshot_enabled in \u0027"},{"line_number":1030,"context_line":"                     \u0027group type).\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_2b4e7296","line":1027,"range":{"start_line":1027,"start_character":36,"end_line":1027,"end_character":44},"updated":"2020-03-30 19:54:35.000000000","message":"need to use?","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"},{"author":{"_account_id":29291,"name":"DingDong","email":"dong.ding@emc.com","username":"DingDong"},"change_message_id":"e2e96466f69bc84c1763a0ea354db657b2d27648","unresolved":false,"context_lines":[{"line_number":1024,"context_line":"        group_is_cg \u003d utils.group_is_cg(group)"},{"line_number":1025,"context_line":"        if not group_is_cg:"},{"line_number":1026,"context_line":"            msg \u003d (_(\u0027Cannot enable replication on generic group \u0027"},{"line_number":1027,"context_line":"                     \u0027%(group_id)s, need use CG type instead of \u0027"},{"line_number":1028,"context_line":"                     \u0027that(need enable \u0027"},{"line_number":1029,"context_line":"                     \u0027consistent_group_snapshot_enabled in \u0027"},{"line_number":1030,"context_line":"                     \u0027group type).\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_cd955542","line":1027,"range":{"start_line":1027,"start_character":36,"end_line":1027,"end_character":44},"in_reply_to":"df33271e_2b4e7296","updated":"2020-03-31 07:58:32.000000000","message":"Done","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6ec3047c0783946c0c44621743b108953b53fc68","unresolved":false,"context_lines":[{"line_number":1025,"context_line":"        if not group_is_cg:"},{"line_number":1026,"context_line":"            msg \u003d (_(\u0027Cannot enable replication on generic group \u0027"},{"line_number":1027,"context_line":"                     \u0027%(group_id)s, need use CG type instead of \u0027"},{"line_number":1028,"context_line":"                     \u0027that(need enable \u0027"},{"line_number":1029,"context_line":"                     \u0027consistent_group_snapshot_enabled in \u0027"},{"line_number":1030,"context_line":"                     \u0027group type).\u0027)"},{"line_number":1031,"context_line":"                   % {\u0027group_id\u0027: group_id})"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_4b493689","line":1028,"range":{"start_line":1028,"start_character":22,"end_line":1028,"end_character":27},"updated":"2020-03-30 19:54:35.000000000","message":"Missing space before opening (.\n\nMight sound be to end at \"type instead (need to enable consisten_group_snapshot_enabled in the group type)\".","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"},{"author":{"_account_id":29291,"name":"DingDong","email":"dong.ding@emc.com","username":"DingDong"},"change_message_id":"e2e96466f69bc84c1763a0ea354db657b2d27648","unresolved":false,"context_lines":[{"line_number":1025,"context_line":"        if not group_is_cg:"},{"line_number":1026,"context_line":"            msg \u003d (_(\u0027Cannot enable replication on generic group \u0027"},{"line_number":1027,"context_line":"                     \u0027%(group_id)s, need use CG type instead of \u0027"},{"line_number":1028,"context_line":"                     \u0027that(need enable \u0027"},{"line_number":1029,"context_line":"                     \u0027consistent_group_snapshot_enabled in \u0027"},{"line_number":1030,"context_line":"                     \u0027group type).\u0027)"},{"line_number":1031,"context_line":"                   % {\u0027group_id\u0027: group_id})"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_0daa9d6f","line":1028,"range":{"start_line":1028,"start_character":22,"end_line":1028,"end_character":27},"in_reply_to":"df33271e_4b493689","updated":"2020-03-31 07:58:32.000000000","message":"Done","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6ec3047c0783946c0c44621743b108953b53fc68","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"                \u0027replication_status\u0027: fields.ReplicationStatus.ERROR})"},{"line_number":1071,"context_line":"            LOG.exception(\"Error enabling replication on group %(group)s. \""},{"line_number":1072,"context_line":"                          \"Exception received: %(e)s.\","},{"line_number":1073,"context_line":"                          {\u0027group\u0027: group.id, \u0027e\u0027: e})"},{"line_number":1074,"context_line":"        return group_update, None"},{"line_number":1075,"context_line":""},{"line_number":1076,"context_line":"    def disable_replication(self, context, group, volumes):"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_2b331216","line":1073,"range":{"start_line":1073,"start_character":46,"end_line":1073,"end_character":52},"updated":"2020-03-30 19:54:35.000000000","message":"Remove this or change to LOG.error(). LOG.exception automatically logs any in-scope exception, so this results in it being logged twice.","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"},{"author":{"_account_id":29291,"name":"DingDong","email":"dong.ding@emc.com","username":"DingDong"},"change_message_id":"e2e96466f69bc84c1763a0ea354db657b2d27648","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"                \u0027replication_status\u0027: fields.ReplicationStatus.ERROR})"},{"line_number":1071,"context_line":"            LOG.exception(\"Error enabling replication on group %(group)s. \""},{"line_number":1072,"context_line":"                          \"Exception received: %(e)s.\","},{"line_number":1073,"context_line":"                          {\u0027group\u0027: group.id, \u0027e\u0027: e})"},{"line_number":1074,"context_line":"        return group_update, None"},{"line_number":1075,"context_line":""},{"line_number":1076,"context_line":"    def disable_replication(self, context, group, volumes):"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_4dde6511","line":1073,"range":{"start_line":1073,"start_character":46,"end_line":1073,"end_character":52},"in_reply_to":"df33271e_2b331216","updated":"2020-03-31 07:58:32.000000000","message":"Done","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6ec3047c0783946c0c44621743b108953b53fc68","unresolved":false,"context_lines":[{"line_number":1113,"context_line":""},{"line_number":1114,"context_line":"    def failover_replication(self, context, group, volumes,"},{"line_number":1115,"context_line":"                             secondary_id):"},{"line_number":1116,"context_line":"        \"\"\"\"Fail-over the consistent group."},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        \"\"\""},{"line_number":1119,"context_line":"        group_update \u003d {}"},{"line_number":1120,"context_line":"        volume_update_list \u003d []"},{"line_number":1121,"context_line":"        if not volumes:"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_ab2602cd","line":1118,"range":{"start_line":1116,"start_character":43,"end_line":1118,"end_character":8},"updated":"2020-03-30 19:54:35.000000000","message":"End with \"\"\" on one line. Or add docstring information for the arguments.","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"},{"author":{"_account_id":29291,"name":"DingDong","email":"dong.ding@emc.com","username":"DingDong"},"change_message_id":"e2e96466f69bc84c1763a0ea354db657b2d27648","unresolved":false,"context_lines":[{"line_number":1113,"context_line":""},{"line_number":1114,"context_line":"    def failover_replication(self, context, group, volumes,"},{"line_number":1115,"context_line":"                             secondary_id):"},{"line_number":1116,"context_line":"        \"\"\"\"Fail-over the consistent group."},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        \"\"\""},{"line_number":1119,"context_line":"        group_update \u003d {}"},{"line_number":1120,"context_line":"        volume_update_list \u003d []"},{"line_number":1121,"context_line":"        if not volumes:"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_8de4ede1","line":1118,"range":{"start_line":1116,"start_character":43,"end_line":1118,"end_character":8},"in_reply_to":"df33271e_ab2602cd","updated":"2020-03-31 07:58:32.000000000","message":"Done","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e9999fbf205824059e0c64d247c431eaf44ccc28","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"storops \u003d importutils.try_import(\u0027storops\u0027)"},{"line_number":37,"context_line":"if storops:"},{"line_number":38,"context_line":"    from storops import exception as storops_ex"},{"line_number":39,"context_line":"else:"},{"line_number":40,"context_line":"    # Set storops_ex to be None for unit test"},{"line_number":41,"context_line":"    storops_ex \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_61450970","line":38,"updated":"2020-04-01 15:37:44.000000000","message":"E0401: \u001b[1;31mUnable to import \u0027storops\u0027\u001b[0m (\u001b[1;31mimport-error\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8d3241cd97189eec0c5956a08ee87fa1a95a28b2","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"storops \u003d importutils.try_import(\u0027storops\u0027)"},{"line_number":37,"context_line":"if storops:"},{"line_number":38,"context_line":"    from storops import exception as storops_ex"},{"line_number":39,"context_line":"else:"},{"line_number":40,"context_line":"    # Set storops_ex to be None for unit test"},{"line_number":41,"context_line":"    storops_ex \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_72768672","line":38,"updated":"2020-04-01 09:29:36.000000000","message":"E0401: \u001b[1;31mUnable to import \u0027storops\u0027\u001b[0m (\u001b[1;31mimport-error\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0ee6d94289279d9ef3330f7205626dc304d015e4","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"storops \u003d importutils.try_import(\u0027storops\u0027)"},{"line_number":37,"context_line":"if storops:"},{"line_number":38,"context_line":"    from storops import exception as storops_ex"},{"line_number":39,"context_line":"else:"},{"line_number":40,"context_line":"    # Set storops_ex to be None for unit test"},{"line_number":41,"context_line":"    storops_ex \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_ee959441","line":38,"updated":"2020-04-01 03:54:56.000000000","message":"E0401: \u001b[1;31mUnable to import \u0027storops\u0027\u001b[0m (\u001b[1;31mimport-error\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"06c490d919ef2f1a94d03eeced71309ee871addf","unresolved":false,"context_lines":[{"line_number":1049,"context_line":"                                     \u0027replication status, maybe the \u0027"},{"line_number":1050,"context_line":"                                     \u0027source cg was just deleted, wait \u0027"},{"line_number":1051,"context_line":"                                     \u002720 seconds.\u0027, group_id)"},{"line_number":1052,"context_line":"                            time.sleep(20)"},{"line_number":1053,"context_line":"                            remote_cg \u003d _client.get_cg(name\u003dgroup_id)"},{"line_number":1054,"context_line":"                        remote_cg.delete()"},{"line_number":1055,"context_line":"                    # create cg replication session"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_d7106403","line":1052,"range":{"start_line":1052,"start_character":28,"end_line":1052,"end_character":42},"updated":"2020-04-08 20:23:13.000000000","message":"Generally try to avoid sleeps in the code.  A fixed interval loopingcall here would probably be better.","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"19103e7f80289592e88017bce213e4e68ef105bb","unresolved":false,"context_lines":[{"line_number":1049,"context_line":"                                     \u0027replication status, maybe the \u0027"},{"line_number":1050,"context_line":"                                     \u0027source cg was just deleted, wait \u0027"},{"line_number":1051,"context_line":"                                     \u002720 seconds.\u0027, group_id)"},{"line_number":1052,"context_line":"                            time.sleep(20)"},{"line_number":1053,"context_line":"                            remote_cg \u003d _client.get_cg(name\u003dgroup_id)"},{"line_number":1054,"context_line":"                        remote_cg.delete()"},{"line_number":1055,"context_line":"                    # create cg replication session"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_06da9849","line":1052,"range":{"start_line":1052,"start_character":28,"end_line":1052,"end_character":42},"in_reply_to":"df33271e_d7106403","updated":"2020-04-09 02:45:46.000000000","message":"Done","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"06c490d919ef2f1a94d03eeced71309ee871addf","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"        if not group_is_cg:"},{"line_number":1083,"context_line":"            msg \u003d (_(\u0027Cannot disable replication on generic group \u0027"},{"line_number":1084,"context_line":"                     \u0027%(group_id)s, need use CG type instead of \u0027"},{"line_number":1085,"context_line":"                     \u0027that(need enable \u0027"},{"line_number":1086,"context_line":"                     \u0027consistent_group_snapshot_enabled in \u0027"},{"line_number":1087,"context_line":"                     \u0027group type).\u0027)"},{"line_number":1088,"context_line":"                   % {\u0027group_id\u0027: group_id})"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_b7d32038","line":1085,"range":{"start_line":1085,"start_character":22,"end_line":1085,"end_character":31},"updated":"2020-04-08 20:23:13.000000000","message":"missing space after \u0027that\u0027","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"19103e7f80289592e88017bce213e4e68ef105bb","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"        if not group_is_cg:"},{"line_number":1083,"context_line":"            msg \u003d (_(\u0027Cannot disable replication on generic group \u0027"},{"line_number":1084,"context_line":"                     \u0027%(group_id)s, need use CG type instead of \u0027"},{"line_number":1085,"context_line":"                     \u0027that(need enable \u0027"},{"line_number":1086,"context_line":"                     \u0027consistent_group_snapshot_enabled in \u0027"},{"line_number":1087,"context_line":"                     \u0027group type).\u0027)"},{"line_number":1088,"context_line":"                   % {\u0027group_id\u0027: group_id})"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_e6de943c","line":1085,"range":{"start_line":1085,"start_character":22,"end_line":1085,"end_character":31},"in_reply_to":"df33271e_b7d32038","updated":"2020-04-09 02:45:46.000000000","message":"Done","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"06c490d919ef2f1a94d03eeced71309ee871addf","unresolved":false,"context_lines":[{"line_number":1119,"context_line":"        if not group_is_cg:"},{"line_number":1120,"context_line":"            msg \u003d (_(\u0027Cannot failover replication on generic group \u0027"},{"line_number":1121,"context_line":"                     \u0027%(group_id)s, need use CG type instead of \u0027"},{"line_number":1122,"context_line":"                     \u0027that(need enable \u0027"},{"line_number":1123,"context_line":"                     \u0027consistent_group_snapshot_enabled in \u0027"},{"line_number":1124,"context_line":"                     \u0027group type).\u0027)"},{"line_number":1125,"context_line":"                   % {\u0027group_id\u0027: group_id})"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_f7d92856","line":1122,"range":{"start_line":1122,"start_character":22,"end_line":1122,"end_character":28},"updated":"2020-04-08 20:23:13.000000000","message":"Same here.","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"19103e7f80289592e88017bce213e4e68ef105bb","unresolved":false,"context_lines":[{"line_number":1119,"context_line":"        if not group_is_cg:"},{"line_number":1120,"context_line":"            msg \u003d (_(\u0027Cannot failover replication on generic group \u0027"},{"line_number":1121,"context_line":"                     \u0027%(group_id)s, need use CG type instead of \u0027"},{"line_number":1122,"context_line":"                     \u0027that(need enable \u0027"},{"line_number":1123,"context_line":"                     \u0027consistent_group_snapshot_enabled in \u0027"},{"line_number":1124,"context_line":"                     \u0027group type).\u0027)"},{"line_number":1125,"context_line":"                   % {\u0027group_id\u0027: group_id})"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_46e78013","line":1122,"range":{"start_line":1122,"start_character":22,"end_line":1122,"end_character":28},"in_reply_to":"df33271e_f7d92856","updated":"2020-04-09 02:45:46.000000000","message":"Done","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e9999fbf205824059e0c64d247c431eaf44ccc28","unresolved":false,"context_lines":[{"line_number":1143,"context_line":"                        # Something wrong with the source unity, try failover"},{"line_number":1144,"context_line":"                        # from target unity without sync date"},{"line_number":1145,"context_line":"                        _adapter \u003d self.replication_manager.replication_devices"},{"line_number":1146,"context_line":"                        [real_secondary_id].adapter"},{"line_number":1147,"context_line":"                        _client \u003d _adapter.client"},{"line_number":1148,"context_line":"                        _client.failover_cg_rep_session(group_id, False)"},{"line_number":1149,"context_line":"                    rep_status \u003d fields.ReplicationStatus.FAILED_OVER"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_4148c585","line":1146,"updated":"2020-04-01 15:37:44.000000000","message":"E1101: \u001b[1;31mInstance of \u0027list\u0027 has no \u0027adapter\u0027 member\u001b[0m (\u001b[1;31mno-member\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8d3241cd97189eec0c5956a08ee87fa1a95a28b2","unresolved":false,"context_lines":[{"line_number":1143,"context_line":"                        # Something wrong with the source unity, try failover"},{"line_number":1144,"context_line":"                        # from target unity without sync date"},{"line_number":1145,"context_line":"                        _adapter \u003d self.replication_manager.replication_devices"},{"line_number":1146,"context_line":"                        [real_secondary_id].adapter"},{"line_number":1147,"context_line":"                        _client \u003d _adapter.client"},{"line_number":1148,"context_line":"                        _client.failover_cg_rep_session(group_id, False)"},{"line_number":1149,"context_line":"                    rep_status \u003d fields.ReplicationStatus.FAILED_OVER"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_5271c275","line":1146,"updated":"2020-04-01 09:29:36.000000000","message":"E1101: \u001b[1;31mInstance of \u0027list\u0027 has no \u0027adapter\u0027 member\u001b[0m (\u001b[1;31mno-member\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0ee6d94289279d9ef3330f7205626dc304d015e4","unresolved":false,"context_lines":[{"line_number":1143,"context_line":"                        # Something wrong with the source unity, try failover"},{"line_number":1144,"context_line":"                        # from target unity without sync date"},{"line_number":1145,"context_line":"                        _adapter \u003d self.replication_manager.replication_devices"},{"line_number":1146,"context_line":"                        [real_secondary_id].adapter"},{"line_number":1147,"context_line":"                        _client \u003d _adapter.client"},{"line_number":1148,"context_line":"                        _client.failover_cg_rep_session(group_id, False)"},{"line_number":1149,"context_line":"                    rep_status \u003d fields.ReplicationStatus.FAILED_OVER"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_ce925057","line":1146,"updated":"2020-04-01 03:54:56.000000000","message":"E1101: \u001b[1;31mInstance of \u0027list\u0027 has no \u0027adapter\u0027 member\u001b[0m (\u001b[1;31mno-member\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"}],"cinder/volume/drivers/dell_emc/unity/client.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e9999fbf205824059e0c64d247c431eaf44ccc28","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"storops \u003d importutils.try_import(\u0027storops\u0027)"},{"line_number":21,"context_line":"if storops:"},{"line_number":22,"context_line":"    from storops import exception as storops_ex"},{"line_number":23,"context_line":"else:"},{"line_number":24,"context_line":"    # Set storops_ex to be None for unit test"},{"line_number":25,"context_line":"    storops_ex \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_01523d3b","line":22,"updated":"2020-04-01 15:37:44.000000000","message":"E0401: \u001b[1;31mUnable to import \u0027storops\u0027\u001b[0m (\u001b[1;31mimport-error\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8d3241cd97189eec0c5956a08ee87fa1a95a28b2","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"storops \u003d importutils.try_import(\u0027storops\u0027)"},{"line_number":21,"context_line":"if storops:"},{"line_number":22,"context_line":"    from storops import exception as storops_ex"},{"line_number":23,"context_line":"else:"},{"line_number":24,"context_line":"    # Set storops_ex to be None for unit test"},{"line_number":25,"context_line":"    storops_ex \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_125c5aeb","line":22,"updated":"2020-04-01 09:29:36.000000000","message":"E0401: \u001b[1;31mUnable to import \u0027storops\u0027\u001b[0m (\u001b[1;31mimport-error\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0ee6d94289279d9ef3330f7205626dc304d015e4","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"storops \u003d importutils.try_import(\u0027storops\u0027)"},{"line_number":21,"context_line":"if storops:"},{"line_number":22,"context_line":"    from storops import exception as storops_ex"},{"line_number":23,"context_line":"else:"},{"line_number":24,"context_line":"    # Set storops_ex to be None for unit test"},{"line_number":25,"context_line":"    storops_ex \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_eed0f421","line":22,"updated":"2020-04-01 03:54:56.000000000","message":"E0401: \u001b[1;31mUnable to import \u0027storops\u0027\u001b[0m (\u001b[1;31mimport-error\u001b[0m)","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"}],"cinder/volume/drivers/dell_emc/unity/driver.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"06c490d919ef2f1a94d03eeced71309ee871addf","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        5.0.0 - Support storage assisted volume migration"},{"line_number":83,"context_line":"        6.0.0 - Support generic group and consistent group"},{"line_number":84,"context_line":"        6.1.0 - Support volume replication"},{"line_number":85,"context_line":"        7.0.0 - Support consistency replication"},{"line_number":86,"context_line":"    \"\"\""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    VERSION \u003d \u002707.00.00\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_37e71015","line":85,"range":{"start_line":85,"start_character":16,"end_line":85,"end_character":36},"updated":"2020-04-08 20:23:13.000000000","message":"Support consistency group","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"19103e7f80289592e88017bce213e4e68ef105bb","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        5.0.0 - Support storage assisted volume migration"},{"line_number":83,"context_line":"        6.0.0 - Support generic group and consistent group"},{"line_number":84,"context_line":"        6.1.0 - Support volume replication"},{"line_number":85,"context_line":"        7.0.0 - Support consistency replication"},{"line_number":86,"context_line":"    \"\"\""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    VERSION \u003d \u002707.00.00\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_a6d80c53","line":85,"range":{"start_line":85,"start_character":16,"end_line":85,"end_character":36},"in_reply_to":"df33271e_37e71015","updated":"2020-04-09 02:45:46.000000000","message":"Done","commit_id":"1d0028930754a75d2e861e681cbdc6d713c6627d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"70f263a3c7b6fbe71cd8f490be5d5b75f1449c2b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from oslo_config import cfg"},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import six"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from cinder import interface"},{"line_number":24,"context_line":"from cinder.volume import configuration"}],"source_content_type":"text/x-python","patch_set":14,"id":"df33271e_ba6820f5","line":21,"updated":"2020-04-09 04:51:51.000000000","message":"pep8: I202 Additional newline in a group of imports. \u0027import six\u0027 is identified as Third Party and \u0027from oslo_log import log\u0027 is identified as Third Party.","commit_id":"cfa0da3097907a4a04f519164a177486f6eaafa2"}],"doc/source/configuration/block-storage/drivers/dell-emc-unity-driver.rst":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6ec3047c0783946c0c44621743b108953b53fc68","unresolved":false,"context_lines":[{"line_number":485,"context_line":"2. Add `replication_device` to storage backend settings in `cinder.conf`, then"},{"line_number":486,"context_line":"   restart Cinder Volume service."},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    Example of `cinder.conf` for volume replications:"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    .. code-block:: ini"},{"line_number":491,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"df33271e_9e6b7eb5","line":488,"range":{"start_line":488,"start_character":3,"end_line":488,"end_character":4},"updated":"2020-03-30 19:54:35.000000000","message":"This has an extra space, resulting in this entire section being block quoted.\n\nActualy loooks line that is an issue throughout this doc. Maybe good to address the rest of them in a follow up patch.","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"},{"author":{"_account_id":29291,"name":"DingDong","email":"dong.ding@emc.com","username":"DingDong"},"change_message_id":"e2e96466f69bc84c1763a0ea354db657b2d27648","unresolved":false,"context_lines":[{"line_number":485,"context_line":"2. Add `replication_device` to storage backend settings in `cinder.conf`, then"},{"line_number":486,"context_line":"   restart Cinder Volume service."},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    Example of `cinder.conf` for volume replications:"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    .. code-block:: ini"},{"line_number":491,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"df33271e_cdfa7573","line":488,"range":{"start_line":488,"start_character":3,"end_line":488,"end_character":4},"in_reply_to":"df33271e_9e6b7eb5","updated":"2020-03-31 07:58:32.000000000","message":"Done","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"}],"driver-requirements.txt":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"c0e0c51b1821e8d00d2550d0ddd6d690945da8b6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"rbd # LGPLv2.1"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# Dell EMC VNX and Unity"},{"line_number":31,"context_line":"storops\u003e\u003d1.2.3 # Apache-2.0"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"# INFINIDAT"},{"line_number":34,"context_line":"infinisdk # BSD-3"}],"source_content_type":"text/plain","patch_set":15,"id":"df33271e_426ac2ec","line":31,"updated":"2020-04-09 13:10:53.000000000","message":"This should also be updated in setup.cfg, but only do it if you need a new patch -- there\u0027s a bug filed to make sure setup.cfg and driver-requirements.txt are in sync before release.  (Just want to make sure you know about listing requirements in setup.cfg for future reference.)\n\nhttps://bugs.launchpad.net/cinder/+bug/1871846","commit_id":"3b5d4cdfb691b50adbf21fd81a4ad6700c0b1945"},{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"1fd3c0f15f618480d675785d1a0211efdd35c0ed","unresolved":false,"context_lines":[{"line_number":28,"context_line":"rbd # LGPLv2.1"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# Dell EMC VNX and Unity"},{"line_number":31,"context_line":"storops\u003e\u003d1.2.3 # Apache-2.0"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"# INFINIDAT"},{"line_number":34,"context_line":"infinisdk # BSD-3"}],"source_content_type":"text/plain","patch_set":15,"id":"df33271e_0d157e9c","line":31,"in_reply_to":"df33271e_426ac2ec","updated":"2020-04-10 01:13:37.000000000","message":"Got it. Thanks!","commit_id":"3b5d4cdfb691b50adbf21fd81a4ad6700c0b1945"}],"releasenotes/notes/unity-group-replication-support-97d74275a84b06af.yaml":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2f9dbc2d697827357bd0f5716fa272772f6bb719","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Dell EMC Unity Driver: Added consistency group replication support."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3fa7e38b_9af4c0d0","line":4,"updated":"2019-11-01 17:00:05.000000000","message":"It would be good to add the note that a new storops library is required for this feature","commit_id":"3061ab2a5ab3bfaa36b0e9f67ae74a0473b60c4a"},{"author":{"_account_id":29291,"name":"DingDong","email":"dong.ding@emc.com","username":"DingDong"},"change_message_id":"5ec007e671627a6da52479ba66f72ac7432912e4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Dell EMC Unity Driver: Added consistency group replication support."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3fa7e38b_2fb2e64a","line":4,"in_reply_to":"3fa7e38b_9af4c0d0","updated":"2019-11-08 03:04:42.000000000","message":"Done","commit_id":"3061ab2a5ab3bfaa36b0e9f67ae74a0473b60c4a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6ec3047c0783946c0c44621743b108953b53fc68","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Dell EMC Unity Driver: Added consistency group replication support."},{"line_number":5,"context_line":"    It needs to work with storops library version 1.2.3 or newer."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"df33271e_9e141e46","line":5,"range":{"start_line":5,"start_character":4,"end_line":5,"end_character":65},"updated":"2020-03-30 19:54:35.000000000","message":"The storops library version 1.2.3 or newer is required.","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"},{"author":{"_account_id":29291,"name":"DingDong","email":"dong.ding@emc.com","username":"DingDong"},"change_message_id":"e2e96466f69bc84c1763a0ea354db657b2d27648","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Dell EMC Unity Driver: Added consistency group replication support."},{"line_number":5,"context_line":"    It needs to work with storops library version 1.2.3 or newer."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"df33271e_2d0cc1a3","line":5,"range":{"start_line":5,"start_character":4,"end_line":5,"end_character":65},"in_reply_to":"df33271e_9e141e46","updated":"2020-03-31 07:58:32.000000000","message":"Done","commit_id":"e0f69bcace79af6d6eda00c3737063f2b2ec6265"}]}
