)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"29b896927d77140f6ed366727a714036b0dc88c7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Ravi Edpuganti \u003cravi.edpuganti@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-05-03 00:57:26 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added consistency group capability to volume group"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"CoprHD has been supporting consistency group starting from kilo release."},{"line_number":10,"context_line":"This code change makes sure that cg support is added for volume groups for"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5ff73747_4e499130","line":7,"updated":"2017-05-02 19:33:17.000000000","message":"Please indicate this is for CoprHD as we already have cg capability with volume groups.","commit_id":"0106d8937f40f68ebc256ee9576cc99b4cdc4382"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b616a8afc2cc44c418e05c7f69fd0453c0a6edb1","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Added CG capability to volume group in CoprHD"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"CoprHD has been supporting consistency group starting from kilo release."},{"line_number":10,"context_line":"This code change makes sure that cg support is added for volume groups for"},{"line_number":11,"context_line":"PIKE. Volume group maps to consistency group in CoprHD when the"},{"line_number":12,"context_line":"consistency group snapshot flag is enabled for the volume group."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1f013ff3_8884fb0d","line":10,"updated":"2017-05-16 16:00:14.000000000","message":"Please wrap at 72 chars.\n\nAlso please call it \"generic volume group\" instead of just \"volume group\" because \"volume group\" can be confused with \"volume group\" in LVM.","commit_id":"9e2326bffc7cb2a07e6b9f27920a0f1e7e6ee08f"}],"cinder/tests/unit/volume/drivers/test_coprhd.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"416a1173fc96744970a3a21a6a79c92c476ebf02","unresolved":false,"context_lines":[{"line_number":261,"context_line":"def get_test_CG_snap_data(volume_type_id):"},{"line_number":262,"context_line":"    test_CG_snapshot \u003d {\u0027name\u0027: \u0027cg_snap_name\u0027,"},{"line_number":263,"context_line":"                        \u0027id\u0027: \u002712345abcde\u0027,"},{"line_number":264,"context_line":"                        \u0027consistencygroup_id\u0027: \u0027123456789\u0027,"},{"line_number":265,"context_line":"                        \u0027status\u0027: fields.ConsistencyGroupStatus.AVAILABLE,"},{"line_number":266,"context_line":"                        \u0027snapshots\u0027: [],"},{"line_number":267,"context_line":"                        \u0027consistencygroup\u0027: get_test_CG_data(volume_type_id),"},{"line_number":268,"context_line":"                        \u0027cgsnapshot_id\u0027: \u00271\u0027,"},{"line_number":269,"context_line":"                        }"},{"line_number":270,"context_line":"    return test_CG_snapshot"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_441a5d7d","line":268,"range":{"start_line":264,"start_character":24,"end_line":268,"end_character":45},"updated":"2017-05-18 21:19:58.000000000","message":"Why are these tests still testing the old fields \"consistencygroup_id\", \"consistencygroup\", and \"cgsnapshot_id\"?","commit_id":"3d3ca5f20e368dfb982e441b33108d118a492619"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"416a1173fc96744970a3a21a6a79c92c476ebf02","unresolved":false,"context_lines":[{"line_number":273,"context_line":"def get_test_group_data(volume_type_id, group_type_id):"},{"line_number":274,"context_line":"    test_CG \u003d {\u0027name\u0027: \u0027group_name\u0027,"},{"line_number":275,"context_line":"               \u0027id\u0027: \u002712345abcde\u0027,"},{"line_number":276,"context_line":"               \u0027volume_type_id\u0027: volume_type_id,"},{"line_number":277,"context_line":"               \u0027group_type_id\u0027: group_type_id,"},{"line_number":278,"context_line":"               \u0027status\u0027: fields.GroupStatus.AVAILABLE"},{"line_number":279,"context_line":"               }"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_5f190a77","line":276,"range":{"start_line":276,"start_character":15,"end_line":276,"end_character":31},"updated":"2017-05-18 21:19:58.000000000","message":"This is in consistentencygroup, not in group.","commit_id":"3d3ca5f20e368dfb982e441b33108d118a492619"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"416a1173fc96744970a3a21a6a79c92c476ebf02","unresolved":false,"context_lines":[{"line_number":289,"context_line":"                        \u0027group\u0027: get_test_group_data(volume_type_id,"},{"line_number":290,"context_line":"                                                     group_type_id),"},{"line_number":291,"context_line":"                        \u0027group_type_id\u0027: group_type_id,"},{"line_number":292,"context_line":"                        \u0027cgsnapshot_id\u0027: \u00271\u0027,"},{"line_number":293,"context_line":"                        }"},{"line_number":294,"context_line":"    return test_CG_snapshot"},{"line_number":295,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_3f289684","line":292,"range":{"start_line":292,"start_character":25,"end_line":292,"end_character":38},"updated":"2017-05-18 21:19:58.000000000","message":"Should check group_snapshot_id instead.","commit_id":"3d3ca5f20e368dfb982e441b33108d118a492619"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"416a1173fc96744970a3a21a6a79c92c476ebf02","unresolved":false,"context_lines":[{"line_number":333,"context_line":"            \u0027project_id\u0027: \u0027project\u0027,"},{"line_number":334,"context_line":"            \u0027display_name\u0027: \u0027source_test-vol1\u0027,"},{"line_number":335,"context_line":"            \u0027display_description\u0027: \u0027test volume\u0027,"},{"line_number":336,"context_line":"            \u0027volume_type_id\u0027: \"vol_type_id-for-snap\"}"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    def init_coprhd_api_components(self):"},{"line_number":339,"context_line":"        self.volume_obj \u003d Mock()"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_df263ab8","line":336,"updated":"2017-05-18 21:19:58.000000000","message":"These are still testing old fields from CG.","commit_id":"3d3ca5f20e368dfb982e441b33108d118a492619"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"416a1173fc96744970a3a21a6a79c92c476ebf02","unresolved":false,"context_lines":[{"line_number":537,"context_line":"        self.driver.delete_volume(volume_data)"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    def test_create_delete_empty_group(self):"},{"line_number":540,"context_line":"        group_data \u003d get_test_group_data(self.volume_type_id,"},{"line_number":541,"context_line":"                                         self.group_type_id)"},{"line_number":542,"context_line":"        ctx \u003d context.get_admin_context()"},{"line_number":543,"context_line":"        self.driver.create_group(ctx, group_data)"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_1f527214","line":540,"range":{"start_line":540,"start_character":41,"end_line":540,"end_character":60},"updated":"2017-05-18 21:19:58.000000000","message":"This field is from CG.  Please check all places referencing this and get rid of it.  A group object should have volume_types instead.","commit_id":"3d3ca5f20e368dfb982e441b33108d118a492619"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"416a1173fc96744970a3a21a6a79c92c476ebf02","unresolved":false,"context_lines":[{"line_number":738,"context_line":"        self.driver.delete_volume(volume_data)"},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"    def test_create_delete_empty_group(self):"},{"line_number":741,"context_line":"        group_data \u003d get_test_group_data(self.volume_type_id,"},{"line_number":742,"context_line":"                                         self.group_type_id)"},{"line_number":743,"context_line":"        ctx \u003d context.get_admin_context()"},{"line_number":744,"context_line":"        self.driver.create_group(ctx, group_data)"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_9f38c2d3","line":741,"range":{"start_line":741,"start_character":41,"end_line":741,"end_character":60},"updated":"2017-05-18 21:19:58.000000000","message":"This is for CG.","commit_id":"3d3ca5f20e368dfb982e441b33108d118a492619"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"416a1173fc96744970a3a21a6a79c92c476ebf02","unresolved":false,"context_lines":[{"line_number":747,"context_line":"        self.assertEqual([], volumes_model_update, \u0027Unexpected return data\u0027)"},{"line_number":748,"context_line":""},{"line_number":749,"context_line":"    def test_create_update_delete_group(self):"},{"line_number":750,"context_line":"        group_data \u003d get_test_group_data(self.volume_type_id,"},{"line_number":751,"context_line":"                                         self.group_type_id)"},{"line_number":752,"context_line":"        ctx \u003d context.get_admin_context()"},{"line_number":753,"context_line":"        self.driver.create_group(ctx, group_data)"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_7f35eed9","line":750,"range":{"start_line":750,"start_character":41,"end_line":750,"end_character":60},"updated":"2017-05-18 21:19:58.000000000","message":"Same here.","commit_id":"3d3ca5f20e368dfb982e441b33108d118a492619"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"19e46a3da0433969947e40f2ff93c0aea8f2bc94","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                   \u0027size\u0027: 1,"},{"line_number":190,"context_line":"                   \u0027volume_name\u0027: \u0027test-vol1\u0027,"},{"line_number":191,"context_line":"                   \u0027id\u0027: \u00271\u0027,"},{"line_number":192,"context_line":"                   \u0027consistencygroup_id\u0027: None,"},{"line_number":193,"context_line":"                   \u0027provider_auth\u0027: None,"},{"line_number":194,"context_line":"                   \u0027project_id\u0027: \u0027project\u0027,"},{"line_number":195,"context_line":"                   \u0027display_name\u0027: \u0027test-vol1\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_ecd60828","line":192,"range":{"start_line":192,"start_character":20,"end_line":192,"end_character":39},"updated":"2017-05-26 19:31:23.000000000","message":"Should be changed to group_id.","commit_id":"078ab57ce0732cf037f28a20885c837d04b8d174"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"19e46a3da0433969947e40f2ff93c0aea8f2bc94","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                   \u0027size\u0027: 1,"},{"line_number":206,"context_line":"                   \u0027volume_name\u0027: \u0027source_test-vol1\u0027,"},{"line_number":207,"context_line":"                   \u0027id\u0027: \u00271234\u0027,"},{"line_number":208,"context_line":"                   \u0027consistencygroup_id\u0027: None,"},{"line_number":209,"context_line":"                   \u0027provider_auth\u0027: None,"},{"line_number":210,"context_line":"                   \u0027project_id\u0027: \u0027project\u0027,"},{"line_number":211,"context_line":"                   \u0027display_name\u0027: \u0027source_test-vol1\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_8ce54c0d","line":208,"range":{"start_line":208,"start_character":20,"end_line":208,"end_character":39},"updated":"2017-05-26 19:31:23.000000000","message":"Same","commit_id":"078ab57ce0732cf037f28a20885c837d04b8d174"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"19e46a3da0433969947e40f2ff93c0aea8f2bc94","unresolved":false,"context_lines":[{"line_number":249,"context_line":"    return connector"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"def get_test_CG_data(volume_type_id):"},{"line_number":253,"context_line":"    test_CG \u003d {\u0027name\u0027: \u0027consistency_group_name\u0027,"},{"line_number":254,"context_line":"               \u0027id\u0027: \u002712345abcde\u0027,"},{"line_number":255,"context_line":"               \u0027volume_type_id\u0027: volume_type_id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_0ca01ca5","line":252,"range":{"start_line":252,"start_character":21,"end_line":252,"end_character":35},"updated":"2017-05-26 19:31:23.000000000","message":"volume_type_id is for CG but not for Group.","commit_id":"078ab57ce0732cf037f28a20885c837d04b8d174"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"19e46a3da0433969947e40f2ff93c0aea8f2bc94","unresolved":false,"context_lines":[{"line_number":253,"context_line":"    test_CG \u003d {\u0027name\u0027: \u0027consistency_group_name\u0027,"},{"line_number":254,"context_line":"               \u0027id\u0027: \u002712345abcde\u0027,"},{"line_number":255,"context_line":"               \u0027volume_type_id\u0027: volume_type_id,"},{"line_number":256,"context_line":"               \u0027status\u0027: fields.ConsistencyGroupStatus.AVAILABLE"},{"line_number":257,"context_line":"               }"},{"line_number":258,"context_line":"    return test_CG"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_2cec00f2","line":256,"range":{"start_line":256,"start_character":32,"end_line":256,"end_character":54},"updated":"2017-05-26 19:31:23.000000000","message":"GroupStatus","commit_id":"078ab57ce0732cf037f28a20885c837d04b8d174"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"19e46a3da0433969947e40f2ff93c0aea8f2bc94","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    return test_VG"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"def get_test_group_snap_data(volume_type_id, group_type_id):"},{"line_number":273,"context_line":"    test_VG_snapshot \u003d {\u0027name\u0027: \u0027cg_snap_name\u0027,"},{"line_number":274,"context_line":"                        \u0027id\u0027: \u002712345abcde\u0027,"},{"line_number":275,"context_line":"                        \u0027group_id\u0027: \u0027123456789\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_cc822401","line":272,"range":{"start_line":272,"start_character":29,"end_line":272,"end_character":43},"updated":"2017-05-26 19:31:23.000000000","message":"Same here.","commit_id":"078ab57ce0732cf037f28a20885c837d04b8d174"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"19e46a3da0433969947e40f2ff93c0aea8f2bc94","unresolved":false,"context_lines":[{"line_number":386,"context_line":"            \"snapshot_created\")"},{"line_number":387,"context_line":"        mocked_snap_obj.snapshot_query.return_value \u003d \"snapshot_uri\""},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"        self.consistencygroup_obj \u003d Mock()"},{"line_number":390,"context_line":"        mocked_cg_object \u003d self.consistencygroup_obj.return_value"},{"line_number":391,"context_line":"        mocked_cg_object.create.return_value \u003d \"CG-Created\""},{"line_number":392,"context_line":"        mocked_cg_object.consistencygroup_query.return_value \u003d \"CG-uri\""},{"line_number":393,"context_line":""},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"class EMCCoprHDISCSIDriverTest(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_8cce6c81","line":392,"range":{"start_line":389,"start_character":8,"end_line":392,"end_character":71},"updated":"2017-05-26 19:31:23.000000000","message":"Can these be changed to group instead?","commit_id":"078ab57ce0732cf037f28a20885c837d04b8d174"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"55ab1a5792f38562fa01205d64fe1e4bb188e5f0","unresolved":false,"context_lines":[{"line_number":429,"context_line":""},{"line_number":430,"context_line":"    def create_group_type(self):"},{"line_number":431,"context_line":"        ctx \u003d context.get_admin_context()"},{"line_number":432,"context_line":"        group_type \u003d group_types.create(ctx,"},{"line_number":433,"context_line":"                                        \"group_type\","},{"line_number":434,"context_line":"                                        {\u0027consistent_group_snapshot_enabled\u0027:"},{"line_number":435,"context_line":"                                         \u0027\u003cis\u003e True\u0027})"}],"source_content_type":"text/x-python","patch_set":21,"id":"df140735_723190a2","line":432,"updated":"2017-05-31 12:45:46.000000000","message":"Can we avoid creating DB records from unit tests?","commit_id":"066a6f947598ade822d4216e3b4bc6025e95e08c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"55ab1a5792f38562fa01205d64fe1e4bb188e5f0","unresolved":false,"context_lines":[{"line_number":607,"context_line":"        return volume_id"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"    def create_group_type(self):"},{"line_number":610,"context_line":"        ctx \u003d context.get_admin_context()"},{"line_number":611,"context_line":"        group_type \u003d group_types.create(ctx,"},{"line_number":612,"context_line":"                                        \"group_type\","},{"line_number":613,"context_line":"                                        {\u0027consistent_group_snapshot_enabled\u0027:"}],"source_content_type":"text/x-python","patch_set":21,"id":"df140735_72d6302a","line":610,"updated":"2017-05-31 12:45:46.000000000","message":"Please, do not copy-paste code. It\u0027s the same as at line #430","commit_id":"066a6f947598ade822d4216e3b4bc6025e95e08c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"55ab1a5792f38562fa01205d64fe1e4bb188e5f0","unresolved":false,"context_lines":[{"line_number":818,"context_line":"        volume_id \u003d vipr_volume_type[\u0027id\u0027]"},{"line_number":819,"context_line":"        return volume_id"},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"    def create_group_type(self):"},{"line_number":822,"context_line":"        ctx \u003d context.get_admin_context()"},{"line_number":823,"context_line":"        group_type \u003d group_types.create(ctx,"},{"line_number":824,"context_line":"                                        \"group_type\","}],"source_content_type":"text/x-python","patch_set":21,"id":"df140735_12e7f414","line":821,"updated":"2017-05-31 12:45:46.000000000","message":"The same, as above","commit_id":"066a6f947598ade822d4216e3b4bc6025e95e08c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    test_VG \u003d {\u0027name\u0027: \u0027group_name\u0027,"},{"line_number":252,"context_line":"               \u0027id\u0027: \u002712345abcde\u0027,"},{"line_number":253,"context_line":"               \u0027volume_type_ids\u0027: volume_type_ids,"},{"line_number":254,"context_line":"               \u0027volume_types\u0027: volume_type_ids,"},{"line_number":255,"context_line":"               \u0027group_type_id\u0027: group_type_id,"},{"line_number":256,"context_line":"               \u0027status\u0027: fields.GroupStatus.AVAILABLE}"},{"line_number":257,"context_line":"    return test_VG"}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_59ce8382","line":254,"range":{"start_line":254,"start_character":31,"end_line":254,"end_character":46},"updated":"2017-06-24 15:39:29.000000000","message":"volume_types is a list of volume type objects, not just a list of volume type uuids.","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        self.configuration.coprhd_emulate_snapshot \u003d False"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        self.volume_type_id \u003d self.create_coprhd_volume_type()"},{"line_number":411,"context_line":"        self.group_type \u003d get_test_group_type_data(self.volume_type_id)"},{"line_number":412,"context_line":"        self.group_type_id \u003d self.group_type[\u0027id\u0027]"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        self.mock_object(coprhd_iscsi.EMCCoprHDISCSIDriver,"}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_f9a2efad","line":411,"range":{"start_line":411,"start_character":51,"end_line":411,"end_character":70},"updated":"2017-06-24 15:39:29.000000000","message":"You are passing in volume_type_id and gets back group_type?","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":793,"context_line":"            \"/etc/scaleio/certs\")"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        self.volume_type_id \u003d self.create_coprhd_volume_type()"},{"line_number":796,"context_line":"        self.group_type \u003d get_test_group_type_data(self.volume_type_id)"},{"line_number":797,"context_line":"        self.group_type_id \u003d self.group_type[\u0027id\u0027]"},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"        self.mock_object(coprhd_scaleio.EMCCoprHDScaleIODriver,"}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_d9a733bd","line":796,"range":{"start_line":796,"start_character":51,"end_line":796,"end_character":70},"updated":"2017-06-24 15:39:29.000000000","message":"Same here.","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"84c45f7cd3cf3053eb39d5b3ee04bd0a9205ba50","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder.volume.drivers.coprhd import iscsi as coprhd_iscsi"},{"line_number":24,"context_line":"from cinder.volume.drivers.coprhd import scaleio as coprhd_scaleio"},{"line_number":25,"context_line":"from cinder.volume import volume_types"},{"line_number":26,"context_line":"from mock import Mock"},{"line_number":27,"context_line":"\"\"\""},{"line_number":28,"context_line":"Test Data required for mocking"},{"line_number":29,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":26,"id":"5f201791_bcc3ce37","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":21},"updated":"2017-06-28 19:51:38.000000000","message":"This line should be removed.  You should import a module, not an object.  You already have \"import mock\" on line 16.  Just use mock.Mock","commit_id":"a8ba590d9b93da00fda6d4cc618d25d861294cae"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"f1715074e23ddd0897891693abc6c3b902b437c8","unresolved":false,"context_lines":[{"line_number":183,"context_line":"                             \"target\": {}}]}"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class test_volume_data(object):"},{"line_number":187,"context_line":"    name \u003d \u0027test-vol1\u0027"},{"line_number":188,"context_line":"    size \u003d 1"},{"line_number":189,"context_line":"    volume_name \u003d \u0027test-vol1\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f1d235d_08b15790","line":186,"updated":"2017-06-29 07:38:49.000000000","message":"Can we use some of existing fake classes here or just mocks?","commit_id":"a8ba590d9b93da00fda6d4cc618d25d861294cae"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"f1715074e23ddd0897891693abc6c3b902b437c8","unresolved":false,"context_lines":[{"line_number":187,"context_line":"    name \u003d \u0027test-vol1\u0027"},{"line_number":188,"context_line":"    size \u003d 1"},{"line_number":189,"context_line":"    volume_name \u003d \u0027test-vol1\u0027"},{"line_number":190,"context_line":"    id \u003d \u00271\u0027"},{"line_number":191,"context_line":"    group_id \u003d None"},{"line_number":192,"context_line":"    provider_auth \u003d None"},{"line_number":193,"context_line":"    project_id \u003d \u0027project\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f1d235d_088837c4","line":190,"updated":"2017-06-29 07:38:49.000000000","message":"Please, use UUID-like value here and below","commit_id":"a8ba590d9b93da00fda6d4cc618d25d861294cae"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"84c45f7cd3cf3053eb39d5b3ee04bd0a9205ba50","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        return \"cg_uri\""},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    def init_volume_api(self):"},{"line_number":325,"context_line":"        self.volume_api \u003d Mock()"},{"line_number":326,"context_line":"        self.volume_api.get.return_value \u003d {"},{"line_number":327,"context_line":"            \u0027name\u0027: \u0027source_test-vol1\u0027,"},{"line_number":328,"context_line":"            \u0027size\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":26,"id":"5f201791_3cfe9e6a","line":325,"range":{"start_line":325,"start_character":26,"end_line":325,"end_character":32},"updated":"2017-06-28 19:51:38.000000000","message":"Use mock.Mock() instead.","commit_id":"a8ba590d9b93da00fda6d4cc618d25d861294cae"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"84c45f7cd3cf3053eb39d5b3ee04bd0a9205ba50","unresolved":false,"context_lines":[{"line_number":327,"context_line":"            \u0027name\u0027: \u0027source_test-vol1\u0027,"},{"line_number":328,"context_line":"            \u0027size\u0027: 1,"},{"line_number":329,"context_line":"            \u0027volume_name\u0027: \u0027source_test-vol1\u0027,"},{"line_number":330,"context_line":"            \u0027id\u0027: \u00271234\u0027,"},{"line_number":331,"context_line":"            \u0027group_id\u0027: \u002712345abcde\u0027,"},{"line_number":332,"context_line":"            \u0027provider_auth\u0027: None,"},{"line_number":333,"context_line":"            \u0027project_id\u0027: \u0027project\u0027,"}],"source_content_type":"text/x-python","patch_set":26,"id":"5f201791_5c195ad4","line":330,"range":{"start_line":330,"start_character":18,"end_line":330,"end_character":24},"updated":"2017-06-28 19:51:38.000000000","message":"Use real UUID in fake_constants.  The code on the left is correct.","commit_id":"a8ba590d9b93da00fda6d4cc618d25d861294cae"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"84c45f7cd3cf3053eb39d5b3ee04bd0a9205ba50","unresolved":false,"context_lines":[{"line_number":328,"context_line":"            \u0027size\u0027: 1,"},{"line_number":329,"context_line":"            \u0027volume_name\u0027: \u0027source_test-vol1\u0027,"},{"line_number":330,"context_line":"            \u0027id\u0027: \u00271234\u0027,"},{"line_number":331,"context_line":"            \u0027group_id\u0027: \u002712345abcde\u0027,"},{"line_number":332,"context_line":"            \u0027provider_auth\u0027: None,"},{"line_number":333,"context_line":"            \u0027project_id\u0027: \u0027project\u0027,"},{"line_number":334,"context_line":"            \u0027display_name\u0027: \u0027source_test-vol1\u0027,"}],"source_content_type":"text/x-python","patch_set":26,"id":"5f201791_dc244a0f","line":331,"range":{"start_line":331,"start_character":24,"end_line":331,"end_character":36},"updated":"2017-06-28 19:51:38.000000000","message":"Same","commit_id":"a8ba590d9b93da00fda6d4cc618d25d861294cae"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"84c45f7cd3cf3053eb39d5b3ee04bd0a9205ba50","unresolved":false,"context_lines":[{"line_number":333,"context_line":"            \u0027project_id\u0027: \u0027project\u0027,"},{"line_number":334,"context_line":"            \u0027display_name\u0027: \u0027source_test-vol1\u0027,"},{"line_number":335,"context_line":"            \u0027display_description\u0027: \u0027test volume\u0027,"},{"line_number":336,"context_line":"            \u0027volume_type_id\u0027: \"vol_type_id-for-snap\"}"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    def init_coprhd_api_components(self):"},{"line_number":339,"context_line":"        self.volume_obj \u003d Mock()"}],"source_content_type":"text/x-python","patch_set":26,"id":"5f201791_9c4132a9","line":336,"range":{"start_line":336,"start_character":30,"end_line":336,"end_character":52},"updated":"2017-06-28 19:51:38.000000000","message":"fake_constants.VOLUME_TYPE_ID on the left hand side is correct.  Please use real UUID in these fields, otherwise it will cause warnings.","commit_id":"a8ba590d9b93da00fda6d4cc618d25d861294cae"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"84c45f7cd3cf3053eb39d5b3ee04bd0a9205ba50","unresolved":false,"context_lines":[{"line_number":425,"context_line":""},{"line_number":426,"context_line":"        self.volume_type \u003d self.create_coprhd_volume_type()"},{"line_number":427,"context_line":"        self.volume_type_id \u003d self.volume_type.id"},{"line_number":428,"context_line":"        self.group_type \u003d test_group_type_data(self.volume_type_id)"},{"line_number":429,"context_line":"        self.group_type_id \u003d self.group_type.id"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        self.mock_object(coprhd_iscsi.EMCCoprHDISCSIDriver,"}],"source_content_type":"text/x-python","patch_set":26,"id":"5f201791_fcdca6e4","line":428,"range":{"start_line":428,"start_character":47,"end_line":428,"end_character":67},"updated":"2017-06-28 19:51:38.000000000","message":"Why are you passing in volume_type_id and getting back a group_type?","commit_id":"a8ba590d9b93da00fda6d4cc618d25d861294cae"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"84c45f7cd3cf3053eb39d5b3ee04bd0a9205ba50","unresolved":false,"context_lines":[{"line_number":810,"context_line":""},{"line_number":811,"context_line":"        self.volume_type \u003d self.create_coprhd_volume_type()"},{"line_number":812,"context_line":"        self.volume_type_id \u003d self.volume_type.id"},{"line_number":813,"context_line":"        self.group_type \u003d test_group_type_data(self.volume_type_id)"},{"line_number":814,"context_line":"        self.group_type_id \u003d self.group_type.id"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"        self.mock_object(coprhd_scaleio.EMCCoprHDScaleIODriver,"}],"source_content_type":"text/x-python","patch_set":26,"id":"5f201791_3c9d7e09","line":813,"range":{"start_line":813,"start_character":47,"end_line":813,"end_character":66},"updated":"2017-06-28 19:51:38.000000000","message":"Same here.  You are passing in a volume_type_id and getting back a group_type.  It doesn\u0027t look right.","commit_id":"a8ba590d9b93da00fda6d4cc618d25d861294cae"}],"cinder/volume/drivers/coprhd/common.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ec21bf432afb9bb152c2302e2205fbd830937a5e","unresolved":false,"context_lines":[{"line_number":267,"context_line":"            coprhd_err_msg \u003d (_(\"Volume %(name)s: create failed\\n%(err)s\") %"},{"line_number":268,"context_line":"                              {\u0027name\u0027: name, \u0027err\u0027: six.text_type(e.msg)})"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"            log_err_msg \u003d (_(\"Volume : %s creation failed\") % name)"},{"line_number":271,"context_line":"            self._raise_or_log_exception("},{"line_number":272,"context_line":"                e.err_code, coprhd_err_msg, log_err_msg)"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_714fa092","line":270,"updated":"2017-05-02 13:32:22.000000000","message":"This change is correct because the message is in an exception that is raised.","commit_id":"da51677225eb5faae8f15c5251ec5c02a26fff1f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ec21bf432afb9bb152c2302e2205fbd830937a5e","unresolved":false,"context_lines":[{"line_number":375,"context_line":"                    volumes_model_update.append(update_item)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"                    LOG.exception(_(\"Failed to delete the volume %s of CG.\"),"},{"line_number":378,"context_line":"                                  vol[\u0027name\u0027])"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"            self.consistencygroup_obj.delete("},{"line_number":381,"context_line":"                name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_b1f88849","line":378,"updated":"2017-05-02 13:32:22.000000000","message":"This is a log message, not a raised exception.  Please don\u0027t use _.  The correct way is as follows:\n\n                    LOG.exception(\"Failed to delete the volume %s of CG.\",\n                                  vol[\u0027name\u0027])","commit_id":"da51677225eb5faae8f15c5251ec5c02a26fff1f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ec21bf432afb9bb152c2302e2205fbd830937a5e","unresolved":false,"context_lines":[{"line_number":1426,"context_line":"        self.authenticate_user()"},{"line_number":1427,"context_line":""},{"line_number":1428,"context_line":"        try:"},{"line_number":1429,"context_line":"            self.stats[\u0027consistencygroup_support\u0027] \u003d \u0027True\u0027"},{"line_number":1430,"context_line":"            vols \u003d self.volume_obj.list_volumes("},{"line_number":1431,"context_line":"                self.configuration.coprhd_tenant +"},{"line_number":1432,"context_line":"                \"/\" +"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_ac45cb45","line":1429,"range":{"start_line":1429,"start_character":24,"end_line":1429,"end_character":48},"updated":"2017-05-02 13:32:22.000000000","message":"For backward compatibility, you can keep this one, but you need to add a new capability:\n\nconsistent_group_snapshot_enabled \u003d True","commit_id":"da51677225eb5faae8f15c5251ec5c02a26fff1f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ec21bf432afb9bb152c2302e2205fbd830937a5e","unresolved":false,"context_lines":[{"line_number":1466,"context_line":""},{"line_number":1467,"context_line":"        except coprhd_utils.CoprHdError:"},{"line_number":1468,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1469,"context_line":"                LOG.exception(_(\"Update volume stats failed\"))"},{"line_number":1470,"context_line":""},{"line_number":1471,"context_line":"    @retry_wrapper"},{"line_number":1472,"context_line":"    def retype(self, ctxt, volume, new_type, diff, host):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_ac302bea","line":1469,"range":{"start_line":1469,"start_character":15,"end_line":1469,"end_character":62},"updated":"2017-05-02 13:32:22.000000000","message":"Remove _","commit_id":"da51677225eb5faae8f15c5251ec5c02a26fff1f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fd7c925c62930c8396a82b92cf5d96fd57061e58","unresolved":false,"context_lines":[{"line_number":524,"context_line":"                                                  truncate_name)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        snapshots_model_update \u003d []"},{"line_number":527,"context_line":"        try:"},{"line_number":528,"context_line":"            cg_id \u003d cgsnapshot[\u0027group_id\u0027]"},{"line_number":529,"context_line":"            cg_group \u003d cgsnapshot.get(\u0027group\u0027)"},{"line_number":530,"context_line":"        except KeyError:"},{"line_number":531,"context_line":"            cg_id \u003d cgsnapshot[\u0027consistencygroup_id\u0027]"},{"line_number":532,"context_line":"            cg_group \u003d cgsnapshot.get(\u0027consistencygroup\u0027)"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        coprhd_cgid \u003d self._get_coprhd_cgid(cg_id)"},{"line_number":535,"context_line":"        cg_name \u003d self._get_consistencygroup_name(cg_group)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f044301_dae8b017","line":532,"range":{"start_line":527,"start_character":8,"end_line":532,"end_character":57},"updated":"2017-05-04 15:25:25.000000000","message":"It could be simplified to:\ncg_id \u003d cgsnapshot.get(\u0027group_id\u0027, cgsnapshot[\u0027consistencygroup_id\u0027])\ncg_group \u003d cgsnapshot.get(\u0027group\u0027, cgsnapshot.get(\u0027consistencygroup\u0027))","commit_id":"d4ca1c9b0cd6bc2792bbe61fe8d255333865f066"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fd7c925c62930c8396a82b92cf5d96fd57061e58","unresolved":false,"context_lines":[{"line_number":1426,"context_line":"        self.authenticate_user()"},{"line_number":1427,"context_line":""},{"line_number":1428,"context_line":"        try:"},{"line_number":1429,"context_line":"            self.stats[\u0027consistencygroup_support\u0027] \u003d \u0027True\u0027"},{"line_number":1430,"context_line":"            self.stats[\u0027consistent_group_snapshot_enabled\u0027] \u003d \u0027True\u0027"},{"line_number":1431,"context_line":"            vols \u003d self.volume_obj.list_volumes("},{"line_number":1432,"context_line":"                self.configuration.coprhd_tenant +"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f044301_7ad07c51","line":1429,"updated":"2017-05-04 15:25:25.000000000","message":"Why do we have these values as strings?","commit_id":"d4ca1c9b0cd6bc2792bbe61fe8d255333865f066"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b616a8afc2cc44c418e05c7f69fd0453c0a6edb1","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        try:"},{"line_number":238,"context_line":"            coprhd_cgid \u003d None"},{"line_number":239,"context_line":"            try:"},{"line_number":240,"context_line":"                if vol[\u0027group_id\u0027]:"},{"line_number":241,"context_line":"                    group_dtls \u003d volume_utils.group_get_by_id(vol[\u0027group_id\u0027])"},{"line_number":242,"context_line":"                    if volume_utils.is_group_a_cg_snapshot_type(group_dtls):"},{"line_number":243,"context_line":"                        coprhd_cgid \u003d self._get_coprhd_cgid(vol[\u0027group_id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_28ccc75f","line":240,"range":{"start_line":240,"start_character":19,"end_line":240,"end_character":34},"updated":"2017-05-16 16:00:14.000000000","message":"\"vol\" should be an object passed in here now.  Please use vol.group_id instead.","commit_id":"9e2326bffc7cb2a07e6b9f27920a0f1e7e6ee08f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b616a8afc2cc44c418e05c7f69fd0453c0a6edb1","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            coprhd_cgid \u003d None"},{"line_number":239,"context_line":"            try:"},{"line_number":240,"context_line":"                if vol[\u0027group_id\u0027]:"},{"line_number":241,"context_line":"                    group_dtls \u003d volume_utils.group_get_by_id(vol[\u0027group_id\u0027])"},{"line_number":242,"context_line":"                    if volume_utils.is_group_a_cg_snapshot_type(group_dtls):"},{"line_number":243,"context_line":"                        coprhd_cgid \u003d self._get_coprhd_cgid(vol[\u0027group_id\u0027])"},{"line_number":244,"context_line":"            except KeyError:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_e8d5bfe6","line":241,"range":{"start_line":241,"start_character":62,"end_line":241,"end_character":77},"updated":"2017-05-16 16:00:14.000000000","message":"Same","commit_id":"9e2326bffc7cb2a07e6b9f27920a0f1e7e6ee08f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b616a8afc2cc44c418e05c7f69fd0453c0a6edb1","unresolved":false,"context_lines":[{"line_number":240,"context_line":"                if vol[\u0027group_id\u0027]:"},{"line_number":241,"context_line":"                    group_dtls \u003d volume_utils.group_get_by_id(vol[\u0027group_id\u0027])"},{"line_number":242,"context_line":"                    if volume_utils.is_group_a_cg_snapshot_type(group_dtls):"},{"line_number":243,"context_line":"                        coprhd_cgid \u003d self._get_coprhd_cgid(vol[\u0027group_id\u0027])"},{"line_number":244,"context_line":"            except KeyError:"},{"line_number":245,"context_line":"                try:"},{"line_number":246,"context_line":"                    if vol[\u0027consistencygroup_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_a809f795","line":243,"range":{"start_line":243,"start_character":60,"end_line":243,"end_character":75},"updated":"2017-05-16 16:00:14.000000000","message":"Same","commit_id":"9e2326bffc7cb2a07e6b9f27920a0f1e7e6ee08f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b616a8afc2cc44c418e05c7f69fd0453c0a6edb1","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                        coprhd_cgid \u003d self._get_coprhd_cgid(vol[\u0027group_id\u0027])"},{"line_number":244,"context_line":"            except KeyError:"},{"line_number":245,"context_line":"                try:"},{"line_number":246,"context_line":"                    if vol[\u0027consistencygroup_id\u0027]:"},{"line_number":247,"context_line":"                        group_dtls \u003d volume_utils.group_get_by_id("},{"line_number":248,"context_line":"                            vol[\u0027consistencygroup_id\u0027])"},{"line_number":249,"context_line":"                        if volume_utils.is_group_a_cg_snapshot_type("}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_28f5e783","line":246,"updated":"2017-05-16 16:00:14.000000000","message":"You won\u0027t get \u0027consistencygroup_id\u0027 any more in Pike so this is not needed.","commit_id":"9e2326bffc7cb2a07e6b9f27920a0f1e7e6ee08f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b616a8afc2cc44c418e05c7f69fd0453c0a6edb1","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                                                  MAX_SNAPSHOT_NAME_LENGTH,"},{"line_number":407,"context_line":"                                                  truncate_name)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        cg_id \u003d cgsnapshot.get(\u0027group_id\u0027,"},{"line_number":410,"context_line":"                               cgsnapshot.get(\u0027consistencygroup_id\u0027))"},{"line_number":411,"context_line":"        cg_group \u003d cgsnapshot.get(\u0027group\u0027,"},{"line_number":412,"context_line":"                                  cgsnapshot.get(\u0027consistencygroup\u0027))"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        cg_name \u003d None"},{"line_number":415,"context_line":"        coprhd_cgid \u003d None"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_685f6f72","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":69},"updated":"2017-05-16 16:00:14.000000000","message":"\u0027consistencygroup_id\u0027 and \"consistencygroup\" should not be used any more.  They are there for drivers that have not added CG capability in groups yet which we want to get rid of eventually.","commit_id":"9e2326bffc7cb2a07e6b9f27920a0f1e7e6ee08f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b616a8afc2cc44c418e05c7f69fd0453c0a6edb1","unresolved":false,"context_lines":[{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        snapshots_model_update \u003d []"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"        cg_id \u003d cgsnapshot.get(\u0027group_id\u0027,"},{"line_number":528,"context_line":"                               cgsnapshot.get(\u0027consistencygroup_id\u0027))"},{"line_number":529,"context_line":"        cg_group \u003d cgsnapshot.get(\u0027group\u0027,"},{"line_number":530,"context_line":"                                  cgsnapshot.get(\u0027consistencygroup\u0027))"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"        coprhd_cgid \u003d self._get_coprhd_cgid(cg_id)"},{"line_number":533,"context_line":"        cg_name \u003d self._get_consistencygroup_name(cg_group)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_28d607c5","line":530,"range":{"start_line":527,"start_character":1,"end_line":530,"end_character":69},"updated":"2017-05-16 16:00:14.000000000","message":"Please remove reference of \u0027consistencygroup_id\u0027 and \"consistencygroup\u0027 so we can get rid of them after all drivers have added CG capability to groups.","commit_id":"9e2326bffc7cb2a07e6b9f27920a0f1e7e6ee08f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b616a8afc2cc44c418e05c7f69fd0453c0a6edb1","unresolved":false,"context_lines":[{"line_number":644,"context_line":"                    if ((not prop.startswith(\"status\") and not"},{"line_number":645,"context_line":"                         prop.startswith(\"obj_status\") and"},{"line_number":646,"context_line":"                         prop !\u003d \"obj_volume\") and value):"},{"line_number":647,"context_line":"                        tag \u003d (\"%s:%s:%s\" %"},{"line_number":648,"context_line":"                               (self.OPENSTACK_TAG, prop,"},{"line_number":649,"context_line":"                                six.text_type(value)))"},{"line_number":650,"context_line":"                        if len(tag) \u003c 128:"},{"line_number":651,"context_line":"                            add_tags.append(tag)"},{"line_number":652,"context_line":"                except TypeError:"},{"line_number":653,"context_line":"                    LOG.error("},{"line_number":654,"context_line":"                        \"Error tagging the resource property %s\", prop)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_889f5b02","line":651,"range":{"start_line":647,"start_character":1,"end_line":651,"end_character":48},"updated":"2017-05-16 16:00:14.000000000","message":"Is this change related to \"add CG capability to generic volume groups\"?  If not, it should be move to a separate patch.","commit_id":"9e2326bffc7cb2a07e6b9f27920a0f1e7e6ee08f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b616a8afc2cc44c418e05c7f69fd0453c0a6edb1","unresolved":false,"context_lines":[{"line_number":1271,"context_line":"                coprhd_utils.CoprHdError.NOT_FOUND_ERR,"},{"line_number":1272,"context_line":"                (_(\"Volume %s not found\") % vol[\u0027display_name\u0027]))"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":"    def _get_resource_name(self, resource,"},{"line_number":1275,"context_line":"                           max_name_cap\u003dMAX_DEFAULT_NAME_LENGTH,"},{"line_number":1276,"context_line":"                           truncate_name\u003dFalse):"},{"line_number":1277,"context_line":"        \u0027\u0027\u002736 refers to the length of UUID and +1 for \u0027-\u0027 \u0027\u0027\u0027"},{"line_number":1278,"context_line":"        permitted_name_length \u003d max_name_cap - (36 + 1)"},{"line_number":1279,"context_line":"        name \u003d resource.get(\u0027display_name\u0027, None)"},{"line_number":1280,"context_line":""},{"line_number":1281,"context_line":"        if not name:"},{"line_number":1282,"context_line":"            name \u003d resource[\u0027name\u0027]"},{"line_number":1283,"context_line":""},{"line_number":1284,"context_line":"        \u0027\u0027\u0027"},{"line_number":1285,"context_line":"        for scaleio, truncate_name will be true. We make sure the"},{"line_number":1286,"context_line":"        total name is less than or equal to 31 characters."},{"line_number":1287,"context_line":"        _id_to_base64 will return a 24 character name, which we prepend"},{"line_number":1288,"context_line":"        with the first 6 characters of the resource name\u0027\u0027\u0027"},{"line_number":1289,"context_line":"        if truncate_name:"},{"line_number":1290,"context_line":"            name \u003d self._id_to_base64(resource[\u0027id\u0027])"},{"line_number":1291,"context_line":"            name \u003d name[0:6] + \"-\" + name"},{"line_number":1292,"context_line":"            return name"},{"line_number":1293,"context_line":""},{"line_number":1294,"context_line":"        elif len(name) \u003e permitted_name_length:"},{"line_number":1295,"context_line":"            \u0027\u0027\u0027"},{"line_number":1296,"context_line":"            The maximum length of resource name in CoprHD is 128. Hence we use"},{"line_number":1297,"context_line":"            only first 91 characters of the resource name\u0027\u0027\u0027"},{"line_number":1298,"context_line":"            return name[0:permitted_name_length] + \"-\" + resource[\u0027id\u0027]"},{"line_number":1299,"context_line":""},{"line_number":1300,"context_line":"        else:"},{"line_number":1301,"context_line":"            return name + \"-\" + resource[\u0027id\u0027]"},{"line_number":1302,"context_line":""},{"line_number":1303,"context_line":"    def _get_vpool(self, volume):"},{"line_number":1304,"context_line":"        vpool \u003d {}"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_c8be8364","line":1301,"range":{"start_line":1274,"start_character":0,"end_line":1301,"end_character":46},"updated":"2017-05-16 16:00:14.000000000","message":"I\u0027m not sure why this change is related to \"add CG capability to groups\".","commit_id":"9e2326bffc7cb2a07e6b9f27920a0f1e7e6ee08f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"19e46a3da0433969947e40f2ff93c0aea8f2bc94","unresolved":false,"context_lines":[{"line_number":256,"context_line":"                                   # no longer specified in volume creation"},{"line_number":257,"context_line":"                                   sync\u003dTrue,"},{"line_number":258,"context_line":"                                   # no longer specified in volume creation"},{"line_number":259,"context_line":"                                   consistencygroup\u003dcoprhd_cgid)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        except coprhd_utils.CoprHdError as e:"},{"line_number":262,"context_line":"            coprhd_err_msg \u003d (_(\"Volume %(name)s: create failed\\n%(err)s\") %"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_ac9c905d","line":259,"range":{"start_line":259,"start_character":35,"end_line":259,"end_character":51},"updated":"2017-05-26 19:31:23.000000000","message":"I know you still have ConsistencyGroup in helpers.  That is fine as that is CoprHD specific.  Just make sure not to use consistencygroup, consistencygroup_id, cgsnapshot, and cgsnapshot_id in Cinder common objects such as Volume/Snapshot etc.\n\nHere it should be group not consistency group.","commit_id":"078ab57ce0732cf037f28a20885c837d04b8d174"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"19e46a3da0433969947e40f2ff93c0aea8f2bc94","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    def update_consistencygroup(self, group, add_volumes,"},{"line_number":303,"context_line":"                                remove_volumes):"},{"line_number":304,"context_line":"        self.authenticate_user()"},{"line_number":305,"context_line":"        model_update \u003d {\u0027status\u0027: fields.ConsistencyGroupStatus.AVAILABLE}"},{"line_number":306,"context_line":"        cg_uri \u003d self._get_coprhd_cgid(group[\u0027id\u0027])"},{"line_number":307,"context_line":"        add_volnames \u003d []"},{"line_number":308,"context_line":"        remove_volnames \u003d []"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_0c613c3a","line":305,"range":{"start_line":305,"start_character":41,"end_line":305,"end_character":57},"updated":"2017-05-26 19:31:23.000000000","message":"Group","commit_id":"078ab57ce0732cf037f28a20885c837d04b8d174"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"19e46a3da0433969947e40f2ff93c0aea8f2bc94","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"                    update_item \u003d {\u0027id\u0027: vol[\u0027id\u0027],"},{"line_number":361,"context_line":"                                   \u0027status\u0027:"},{"line_number":362,"context_line":"                                   fields.ConsistencyGroupStatus.DELETED}"},{"line_number":363,"context_line":"                    volumes_model_update.append(update_item)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"                except exception.VolumeBackendAPIException:"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_6c51d862","line":362,"range":{"start_line":362,"start_character":42,"end_line":362,"end_character":58},"updated":"2017-05-26 19:31:23.000000000","message":"Please change all places to fields.GroupStatus instead.","commit_id":"078ab57ce0732cf037f28a20885c837d04b8d174"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"19e46a3da0433969947e40f2ff93c0aea8f2bc94","unresolved":false,"context_lines":[{"line_number":671,"context_line":"        srcname \u003d self._get_coprhd_volume_name(src_vref)"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        try:"},{"line_number":674,"context_line":"            if src_vref[\u0027consistencygroup_id\u0027]:"},{"line_number":675,"context_line":"                raise coprhd_utils.CoprHdError("},{"line_number":676,"context_line":"                    coprhd_utils.CoprHdError.SOS_FAILURE_ERR,"},{"line_number":677,"context_line":"                    _(\"Clone can\u0027t be taken individually on a volume\""}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_acd490be","line":674,"range":{"start_line":674,"start_character":25,"end_line":674,"end_character":44},"updated":"2017-05-26 19:31:23.000000000","message":"Again here should be group_id.  \u0027consistencygroup_id\u0027 will be removed from db in the future.","commit_id":"078ab57ce0732cf037f28a20885c837d04b8d174"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"19e46a3da0433969947e40f2ff93c0aea8f2bc94","unresolved":false,"context_lines":[{"line_number":874,"context_line":"        volume \u003d snapshot[\u0027volume\u0027]"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"        try:"},{"line_number":877,"context_line":"            if volume[\u0027consistencygroup_id\u0027]:"},{"line_number":878,"context_line":"                raise coprhd_utils.CoprHdError("},{"line_number":879,"context_line":"                    coprhd_utils.CoprHdError.SOS_FAILURE_ERR,"},{"line_number":880,"context_line":"                    _(\"Snapshot can\u0027t be taken individually on a volume\""}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_8cd9ccf5","line":877,"range":{"start_line":877,"start_character":23,"end_line":877,"end_character":42},"updated":"2017-05-26 19:31:23.000000000","message":"Same","commit_id":"078ab57ce0732cf037f28a20885c837d04b8d174"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"19e46a3da0433969947e40f2ff93c0aea8f2bc94","unresolved":false,"context_lines":[{"line_number":941,"context_line":"        vol \u003d snapshot[\u0027volume\u0027]"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        try:"},{"line_number":944,"context_line":"            if vol[\u0027consistencygroup_id\u0027]:"},{"line_number":945,"context_line":"                raise coprhd_utils.CoprHdError("},{"line_number":946,"context_line":"                    coprhd_utils.CoprHdError.SOS_FAILURE_ERR,"},{"line_number":947,"context_line":"                    _(\"Snapshot delete can\u0027t be done individually on a volume\""}],"source_content_type":"text/x-python","patch_set":19,"id":"ff0f0b1f_acedb08c","line":944,"range":{"start_line":944,"start_character":20,"end_line":944,"end_character":39},"updated":"2017-05-26 19:31:23.000000000","message":"Please do a global search and make sure you are using group_id (not consistencygroup_id) in Volume and make sure you are using group_snapshot_id (not cgsnapshot_id) in Snapshot.","commit_id":"078ab57ce0732cf037f28a20885c837d04b8d174"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"55ab1a5792f38562fa01205d64fe1e4bb188e5f0","unresolved":false,"context_lines":[{"line_number":242,"context_line":"                    group_dtls \u003d volume_utils.group_get_by_id(vol.group_id)"},{"line_number":243,"context_line":"                    if volume_utils.is_group_a_cg_snapshot_type(group_dtls):"},{"line_number":244,"context_line":"                        coprhd_cgid \u003d self._get_coprhd_cgid(vol.group_id)"},{"line_number":245,"context_line":"            except KeyError:"},{"line_number":246,"context_line":"                    coprhd_cgid \u003d None"},{"line_number":247,"context_line":"            except AttributeError:"},{"line_number":248,"context_line":"                    coprhd_cgid \u003d None"}],"source_content_type":"text/x-python","patch_set":21,"id":"df140735_52b68cfc","line":245,"updated":"2017-05-31 12:45:46.000000000","message":"Could be simplified to:\nexcept KeyError, AttributeError:\n    coprhd_cgid \u003d None","commit_id":"066a6f947598ade822d4216e3b4bc6025e95e08c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"55ab1a5792f38562fa01205d64fe1e4bb188e5f0","unresolved":false,"context_lines":[{"line_number":1267,"context_line":"    def _get_resource_name(self, resource,"},{"line_number":1268,"context_line":"                           max_name_cap\u003dMAX_DEFAULT_NAME_LENGTH,"},{"line_number":1269,"context_line":"                           truncate_name\u003dFalse):"},{"line_number":1270,"context_line":"        \u0027\u0027\u002736 refers to the length of UUID and +1 for \u0027-\u0027 \u0027\u0027\u0027"},{"line_number":1271,"context_line":"        permitted_name_length \u003d max_name_cap - (36 + 1)"},{"line_number":1272,"context_line":"        name \u003d resource.get(\u0027display_name\u0027, None)"},{"line_number":1273,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"df140735_928ae418","line":1270,"updated":"2017-05-31 12:45:46.000000000","message":"Please, use # for comments","commit_id":"066a6f947598ade822d4216e3b4bc6025e95e08c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            coprhd_cgid \u003d None"},{"line_number":240,"context_line":"            try:"},{"line_number":241,"context_line":"                if vol.group_id:"},{"line_number":242,"context_line":"                    group_dtls \u003d volume_utils.group_get_by_id(vol.group_id)"},{"line_number":243,"context_line":"                    if volume_utils.is_group_a_cg_snapshot_type(group_dtls):"},{"line_number":244,"context_line":"                        coprhd_cgid \u003d self._get_coprhd_cgid(vol.group_id)"},{"line_number":245,"context_line":"            except KeyError:"}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_390067ab","line":242,"range":{"start_line":242,"start_character":20,"end_line":242,"end_character":75},"updated":"2017-06-24 15:39:29.000000000","message":"This call is not needed.  vol.group will give you the group object.","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                                                  MAX_SNAPSHOT_NAME_LENGTH,"},{"line_number":402,"context_line":"                                                  truncate_name)"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        cg_id \u003d cgsnapshot.get(\u0027group_id\u0027)"},{"line_number":405,"context_line":"        cg_group \u003d cgsnapshot.get(\u0027group\u0027)"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"        cg_name \u003d None"}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_39198721","line":404,"range":{"start_line":404,"start_character":16,"end_line":404,"end_character":42},"updated":"2017-06-24 15:39:29.000000000","message":"cgsnapshot is an object.  Just use cgsnapshot.group_id.","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":402,"context_line":"                                                  truncate_name)"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        cg_id \u003d cgsnapshot.get(\u0027group_id\u0027)"},{"line_number":405,"context_line":"        cg_group \u003d cgsnapshot.get(\u0027group\u0027)"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"        cg_name \u003d None"},{"line_number":408,"context_line":"        coprhd_cgid \u003d None"}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_1916cbf2","line":405,"range":{"start_line":405,"start_character":19,"end_line":405,"end_character":42},"updated":"2017-06-24 15:39:29.000000000","message":"cgsnapshot.group","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        snapshots_model_update \u003d []"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        cg_id \u003d cgsnapshot.get(\u0027group_id\u0027)"},{"line_number":521,"context_line":"        cg_group \u003d cgsnapshot.get(\u0027group\u0027)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"        coprhd_cgid \u003d self._get_coprhd_cgid(cg_id)"}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_f9d42f22","line":520,"range":{"start_line":520,"start_character":16,"end_line":520,"end_character":42},"updated":"2017-06-24 15:39:29.000000000","message":"cgsnapshot.group_id","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        snapshots_model_update \u003d []"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        cg_id \u003d cgsnapshot.get(\u0027group_id\u0027)"},{"line_number":521,"context_line":"        cg_group \u003d cgsnapshot.get(\u0027group\u0027)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"        coprhd_cgid \u003d self._get_coprhd_cgid(cg_id)"},{"line_number":524,"context_line":"        cg_name \u003d self._get_consistencygroup_name(cg_group)"}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_d9d97357","line":521,"range":{"start_line":521,"start_character":19,"end_line":521,"end_character":42},"updated":"2017-06-24 15:39:29.000000000","message":"cgsnapshot.group","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":777,"context_line":"            self.create_cloned_volume(volume, snapshot, truncate_name)"},{"line_number":778,"context_line":"            return"},{"line_number":779,"context_line":""},{"line_number":780,"context_line":"        if snapshot.get(\u0027group_snapshot_id\u0027):"},{"line_number":781,"context_line":"            raise coprhd_utils.CoprHdError("},{"line_number":782,"context_line":"                coprhd_utils.CoprHdError.SOS_FAILURE_ERR,"},{"line_number":783,"context_line":"                _(\"Volume cannot be created individually from a snapshot \""}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_99df7b39","line":780,"range":{"start_line":780,"start_character":11,"end_line":780,"end_character":44},"updated":"2017-06-24 15:39:29.000000000","message":"snapshot.group_snapshot_id","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":871,"context_line":"    def create_snapshot(self, snapshot, truncate_name\u003dFalse):"},{"line_number":872,"context_line":"        self.authenticate_user()"},{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        volume \u003d snapshot[\u0027volume\u0027]"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"        try:"},{"line_number":877,"context_line":"            if volume[\u0027group_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_79e81fe1","line":874,"range":{"start_line":874,"start_character":17,"end_line":874,"end_character":35},"updated":"2017-06-24 15:39:29.000000000","message":"snapshot.volume","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":874,"context_line":"        volume \u003d snapshot[\u0027volume\u0027]"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"        try:"},{"line_number":877,"context_line":"            if volume[\u0027group_id\u0027]:"},{"line_number":878,"context_line":"                raise coprhd_utils.CoprHdError("},{"line_number":879,"context_line":"                    coprhd_utils.CoprHdError.SOS_FAILURE_ERR,"},{"line_number":880,"context_line":"                    _(\"Snapshot can\u0027t be taken individually on a volume\""}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_59e56308","line":877,"range":{"start_line":877,"start_character":15,"end_line":877,"end_character":33},"updated":"2017-06-24 15:39:29.000000000","message":"volume.group_id","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":938,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":939,"context_line":"        self.authenticate_user()"},{"line_number":940,"context_line":""},{"line_number":941,"context_line":"        vol \u003d snapshot[\u0027volume\u0027]"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        try:"},{"line_number":944,"context_line":"            if vol[\u0027group_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_19eb6bdc","line":941,"range":{"start_line":941,"start_character":14,"end_line":941,"end_character":32},"updated":"2017-06-24 15:39:29.000000000","message":"snapshot.volume","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":941,"context_line":"        vol \u003d snapshot[\u0027volume\u0027]"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        try:"},{"line_number":944,"context_line":"            if vol[\u0027group_id\u0027]:"},{"line_number":945,"context_line":"                raise coprhd_utils.CoprHdError("},{"line_number":946,"context_line":"                    coprhd_utils.CoprHdError.SOS_FAILURE_ERR,"},{"line_number":947,"context_line":"                    _(\"Snapshot delete can\u0027t be done individually on a volume\""}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_f9bd4fd8","line":944,"range":{"start_line":944,"start_character":15,"end_line":944,"end_character":30},"updated":"2017-06-24 15:39:29.000000000","message":"vol.group_id","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"802cceabc4eb28405e7469d274394d73565fc608","unresolved":false,"context_lines":[{"line_number":490,"context_line":"                                snapUri[\u0027id\u0027],"},{"line_number":491,"context_line":"                                snapshot)"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"                snapshot.status \u003d fields.SnapshotStatus.AVAILABLE"},{"line_number":494,"context_line":"                snapshots_model_update.append("},{"line_number":495,"context_line":"                    {\u0027id\u0027: snapshot.id, \u0027status\u0027:"},{"line_number":496,"context_line":"                     fields.SnapshotStatus.AVAILABLE})"}],"source_content_type":"text/x-python","patch_set":31,"id":"3f1d235d_56a8d31d","line":493,"range":{"start_line":493,"start_character":16,"end_line":493,"end_character":65},"updated":"2017-06-30 18:22:13.000000000","message":"The snapshot is from the passed in snapshots and it should not be changed.  This is not needed any way.  Remove this line.","commit_id":"0cb116e27c8d00501bcbc54dedf1c94226065976"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"efc9ddff7656c14c580075f02a0ce5c8a101dd4a","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                        coprhd_cgid \u003d self._get_coprhd_cgid(vol.group_id)"},{"line_number":245,"context_line":"            except KeyError:"},{"line_number":246,"context_line":"                coprhd_cgid \u003d None"},{"line_number":247,"context_line":"            except AttributeError:"},{"line_number":248,"context_line":"                coprhd_cgid \u003d None"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"            full_project_name \u003d (\"%s/%s\" % (self.configuration.coprhd_tenant,"}],"source_content_type":"text/x-python","patch_set":37,"id":"1f1a1f67_eb97153a","line":247,"range":{"start_line":247,"start_character":19,"end_line":247,"end_character":33},"updated":"2017-07-20 22:46:07.000000000","message":"I would just collapse this with the KeyError except clause.","commit_id":"b248aad12a223095b22b312b16b18c108df81fd4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"efc9ddff7656c14c580075f02a0ce5c8a101dd4a","unresolved":false,"context_lines":[{"line_number":1298,"context_line":"        if not name:"},{"line_number":1299,"context_line":"            name \u003d resource.name"},{"line_number":1300,"context_line":""},{"line_number":1301,"context_line":"        \u0027\u0027\u0027"},{"line_number":1302,"context_line":"        for scaleio, truncate_name will be true. We make sure the"},{"line_number":1303,"context_line":"        total name is less than or equal to 31 characters."},{"line_number":1304,"context_line":"        _id_to_base64 will return a 24 character name\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":37,"id":"1f1a1f67_cbea19ab","line":1301,"range":{"start_line":1301,"start_character":8,"end_line":1301,"end_character":11},"updated":"2017-07-20 22:46:07.000000000","message":"This should be a regular comment rather than a multiline string.","commit_id":"b248aad12a223095b22b312b16b18c108df81fd4"}],"cinder/volume/drivers/coprhd/fc.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ec21bf432afb9bb152c2302e2205fbd830937a5e","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        \"\"\"Driver entry point to remove an export for a volume.\"\"\""},{"line_number":93,"context_line":"        pass"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def create_consistencygroup(self, context, group):"},{"line_number":96,"context_line":"        \"\"\"Creates a consistencygroup.\"\"\""},{"line_number":97,"context_line":"        return self.common.create_consistencygroup(context, group)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def update_consistencygroup(self, context, group, add_volumes\u003dNone,"},{"line_number":100,"context_line":"                                remove_volumes\u003dNone):"},{"line_number":101,"context_line":"        \"\"\"Updates volumes in consistency group.\"\"\""},{"line_number":102,"context_line":"        return self.common.update_consistencygroup(group, add_volumes,"},{"line_number":103,"context_line":"                                                   remove_volumes)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def delete_consistencygroup(self, context, group, volumes):"},{"line_number":106,"context_line":"        \"\"\"Deletes a consistency group.\"\"\""},{"line_number":107,"context_line":"        return self.common.delete_consistencygroup(context, group, volumes)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def create_cgsnapshot(self, context, cgsnapshot, snapshots):"},{"line_number":110,"context_line":"        \"\"\"Creates a cgsnapshot.\"\"\""},{"line_number":111,"context_line":"        return self.common.create_cgsnapshot(cgsnapshot, snapshots)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def delete_cgsnapshot(self, context, cgsnapshot, snapshots):"},{"line_number":114,"context_line":"        \"\"\"Deletes a cgsnapshot.\"\"\""},{"line_number":115,"context_line":"        return self.common.delete_cgsnapshot(cgsnapshot, snapshots)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def create_group(self, context, group):"},{"line_number":118,"context_line":"        \"\"\"Creates a group.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_f11f306e","line":115,"range":{"start_line":95,"start_character":0,"end_line":115,"end_character":67},"updated":"2017-05-02 13:32:22.000000000","message":"Delete all these.","commit_id":"da51677225eb5faae8f15c5251ec5c02a26fff1f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b616a8afc2cc44c418e05c7f69fd0453c0a6edb1","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        # If the group is not consistency group snapshot enabled, then"},{"line_number":139,"context_line":"        # we shall rely on generic volume group implementation"},{"line_number":140,"context_line":"        raise NotImplementedError()"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def check_for_export(self, context, volume_id):"},{"line_number":143,"context_line":"        \"\"\"Make sure volume is exported.\"\"\""},{"line_number":144,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_1c1dcc65","line":141,"updated":"2017-05-16 16:00:14.000000000","message":"Where is create_group_from_src?  If you can\u0027t support it, you should implement it and add a check in there.  If is_group_a_cg_snapshot_type is False, raise NotImplementedError so it will be handled by the default implementation.  If True, raise a different exception, i.e., VolumeBackendAPIException, so that you won\u0027t be creating a generic group by mistake when user is asking for a consistency group.","commit_id":"9e2326bffc7cb2a07e6b9f27920a0f1e7e6ee08f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"416a1173fc96744970a3a21a6a79c92c476ebf02","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                              source_group\u003dNone, source_vols\u003dNone):"},{"line_number":121,"context_line":"        \"\"\"Creates a group from source.\"\"\""},{"line_number":122,"context_line":"        if volume_utils.is_group_a_cg_snapshot_type(group):"},{"line_number":123,"context_line":"            message \u003d _(\"create group from source is not supported for CoprHD\")"},{"line_number":124,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmessage)"},{"line_number":125,"context_line":"        else:"},{"line_number":126,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_ff6fbec2","line":123,"updated":"2017-05-18 21:19:58.000000000","message":"Add this to the message: \"if the group type supports consistent group snapshot.\"","commit_id":"3d3ca5f20e368dfb982e441b33108d118a492619"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"802cceabc4eb28405e7469d274394d73565fc608","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from cinder import interface"},{"line_number":24,"context_line":"from cinder.volume import driver"},{"line_number":25,"context_line":"from cinder.volume.drivers.coprhd import common as coprhd_common"},{"line_number":26,"context_line":"from cinder.zonemanager import utils as fczm_utils"}],"source_content_type":"text/x-python","patch_set":31,"id":"3f1d235d_76fd0f39","side":"PARENT","line":23,"updated":"2017-06-30 18:22:13.000000000","message":"Should not be removed","commit_id":"47ebb6809d9d6be18233a635cb823057826b47cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"802cceabc4eb28405e7469d274394d73565fc608","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"@interface.volumedriver"},{"line_number":32,"context_line":"class EMCCoprHDFCDriver(driver.FibreChannelDriver):"},{"line_number":33,"context_line":"    \"\"\"CoprHD FC Driver.\"\"\""},{"line_number":34,"context_line":"    VERSION \u003d \"3.0.0.0\""}],"source_content_type":"text/x-python","patch_set":31,"id":"3f1d235d_56fa1342","side":"PARENT","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":23},"updated":"2017-06-30 18:22:13.000000000","message":"Should not be removed.","commit_id":"47ebb6809d9d6be18233a635cb823057826b47cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4ff0791ffb8538b045dd9a5378b829fa1ed329aa","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder import exception"},{"line_number":24,"context_line":"from cinder.i18n import _"},{"line_number":25,"context_line":"from cinder import interface"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from cinder.volume import driver"},{"line_number":28,"context_line":"from cinder.volume.drivers.coprhd import common as coprhd_common"},{"line_number":29,"context_line":"from cinder.volume import utils as volume_utils"}],"source_content_type":"text/x-python","patch_set":33,"id":"3f1d235d_1e2a062b","line":26,"updated":"2017-07-05 14:56:00.000000000","message":"nit: Remove the added blank line.","commit_id":"2ab20767a4a6229d0ecd84a8fe18f0adcebfe9c4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"efc9ddff7656c14c580075f02a0ce5c8a101dd4a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from cinder.volume import driver"},{"line_number":27,"context_line":"from cinder.volume.drivers.coprhd import common as coprhd_common"},{"line_number":28,"context_line":"from cinder.volume import utils as volume_utils"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from cinder.zonemanager import utils as fczm_utils"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":37,"id":"1f1a1f67_abcfdd55","line":29,"updated":"2017-07-20 22:46:07.000000000","message":"Space does not needed to be added here. Local imports should be grouped together.","commit_id":"b248aad12a223095b22b312b16b18c108df81fd4"}],"cinder/volume/drivers/coprhd/helpers/commoncoprhdapi.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"55ab1a5792f38562fa01205d64fe1e4bb188e5f0","unresolved":false,"context_lines":[{"line_number":49,"context_line":"def _decode_list(data):"},{"line_number":50,"context_line":"    rv \u003d []"},{"line_number":51,"context_line":"    for item in data:"},{"line_number":52,"context_line":"        if isinstance(item, unicode):"},{"line_number":53,"context_line":"            item \u003d item.encode(\u0027utf-8\u0027)"},{"line_number":54,"context_line":"        elif isinstance(item, list):"},{"line_number":55,"context_line":"            item \u003d _decode_list(item)"}],"source_content_type":"text/x-python","patch_set":21,"id":"df140735_7292b04d","line":52,"updated":"2017-05-31 12:45:46.000000000","message":"Please, add a comment why do we need these changes","commit_id":"066a6f947598ade822d4216e3b4bc6025e95e08c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    :param uri: the request URI"},{"line_number":99,"context_line":"    :param body: the request payload"},{"line_number":100,"context_line":"    :returns: a tuple of two elements: (response body, response headers)"},{"line_number":101,"context_line":"    :raises: CoprHdError in case of HTTP errors with err_code 3"},{"line_number":102,"context_line":"    \"\"\""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    SEC_AUTHTOKEN_HEADER \u003d \u0027X-SDS-AUTH-TOKEN\u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_7975bf63","line":101,"updated":"2017-06-24 15:39:29.000000000","message":"Please don\u0027t combine white space changes like this with a feature change.  Remove this change as this file is not modified as part of this feature change.","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"}],"cinder/volume/drivers/coprhd/helpers/project.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        :param name: name of project"},{"line_number":32,"context_line":"        :returns: UUID of project"},{"line_number":33,"context_line":"        :raises: CoprHdError - when project name is not found"},{"line_number":34,"context_line":"        \"\"\""},{"line_number":35,"context_line":"        if common.is_uri(name):"},{"line_number":36,"context_line":"            return name"}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_5993235c","line":33,"updated":"2017-06-24 15:39:29.000000000","message":"Same here.  Please remove this change.","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"}],"cinder/volume/drivers/coprhd/helpers/virtualpool.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b485c662e39c8ca41e8be50d861248300665b577","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        \"\"\"Makes REST API call to query the vpool by name and type."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        This function will take the VPOOL name and type of VPOOL"},{"line_number":52,"context_line":"        as input and get uri of the first occurence of given VPOOL."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        :param name: Name of the VPOOL"},{"line_number":55,"context_line":"        :param vpooltype: Type of the VPOOL {\u0027block\u0027}"}],"source_content_type":"text/x-python","patch_set":24,"id":"5f201791_19992b78","line":52,"updated":"2017-06-24 15:39:29.000000000","message":"Same.  Please remove this change from this patch.  You can submit another patch to fix the typos, etc.","commit_id":"aefb1920590c5f850c021d6a287f1fef05473f48"}],"cinder/volume/drivers/coprhd/iscsi.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b616a8afc2cc44c418e05c7f69fd0453c0a6edb1","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        # If the group is not consistency group snapshot enabled, then"},{"line_number":137,"context_line":"        # we shall rely on generic volume group implementation"},{"line_number":138,"context_line":"        raise NotImplementedError()"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def check_for_export(self, context, volume_id):"},{"line_number":141,"context_line":"        \"\"\"Make sure volume is exported.\"\"\""},{"line_number":142,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_3c3c08be","line":139,"updated":"2017-05-16 16:00:14.000000000","message":"Same comment on create_group_from_src.","commit_id":"9e2326bffc7cb2a07e6b9f27920a0f1e7e6ee08f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"416a1173fc96744970a3a21a6a79c92c476ebf02","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                              source_group\u003dNone, source_vols\u003dNone):"},{"line_number":105,"context_line":"        \"\"\"Creates a group from source.\"\"\""},{"line_number":106,"context_line":"        if volume_utils.is_group_a_cg_snapshot_type(group):"},{"line_number":107,"context_line":"            message \u003d _(\"create group from source is not supported for CoprHD\")"},{"line_number":108,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmessage)"},{"line_number":109,"context_line":"        else:"},{"line_number":110,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_3f9bf6c9","line":107,"updated":"2017-05-18 21:19:58.000000000","message":"same as previous comment.","commit_id":"3d3ca5f20e368dfb982e441b33108d118a492619"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"802cceabc4eb28405e7469d274394d73565fc608","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cinder import interface"},{"line_number":22,"context_line":"from cinder.volume import driver"},{"line_number":23,"context_line":"from cinder.volume.drivers.coprhd import common as coprhd_common"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"3f1d235d_56e1f399","side":"PARENT","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":27},"updated":"2017-06-30 18:22:13.000000000","message":"Should not be removed","commit_id":"47ebb6809d9d6be18233a635cb823057826b47cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"802cceabc4eb28405e7469d274394d73565fc608","unresolved":false,"context_lines":[{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@interface.volumedriver"},{"line_number":30,"context_line":"class EMCCoprHDISCSIDriver(driver.ISCSIDriver):"},{"line_number":31,"context_line":"    \"\"\"CoprHD iSCSI Driver.\"\"\""},{"line_number":32,"context_line":"    VERSION \u003d \"3.0.0.0\""}],"source_content_type":"text/x-python","patch_set":31,"id":"3f1d235d_f6e91f80","side":"PARENT","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":23},"updated":"2017-06-30 18:22:13.000000000","message":"Should not be removed.","commit_id":"47ebb6809d9d6be18233a635cb823057826b47cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4ff0791ffb8538b045dd9a5378b829fa1ed329aa","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from cinder import exception"},{"line_number":22,"context_line":"from cinder.i18n import _"},{"line_number":23,"context_line":"from cinder import interface"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from cinder.volume import driver"},{"line_number":26,"context_line":"from cinder.volume.drivers.coprhd import common as coprhd_common"},{"line_number":27,"context_line":"from cinder.volume import utils as volume_utils"}],"source_content_type":"text/x-python","patch_set":33,"id":"3f1d235d_5e0bded4","line":24,"updated":"2017-07-05 14:56:00.000000000","message":"nit: Remove the added blank line.","commit_id":"2ab20767a4a6229d0ecd84a8fe18f0adcebfe9c4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"efc9ddff7656c14c580075f02a0ce5c8a101dd4a","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                              source_group\u003dNone, source_vols\u003dNone):"},{"line_number":107,"context_line":"        \"\"\"Creates a group from source.\"\"\""},{"line_number":108,"context_line":"        if volume_utils.is_group_a_cg_snapshot_type(group):"},{"line_number":109,"context_line":"            message \u003d _(\"create group from source is not supported \""},{"line_number":110,"context_line":"                        \"for CoprHD if the group type supports \""},{"line_number":111,"context_line":"                        \"consistent group snapshot.\")"},{"line_number":112,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmessage)"}],"source_content_type":"text/x-python","patch_set":37,"id":"1f1a1f67_4bd609f4","line":109,"range":{"start_line":109,"start_character":25,"end_line":109,"end_character":26},"updated":"2017-07-20 22:46:07.000000000","message":"Should start with uppercase C.","commit_id":"b248aad12a223095b22b312b16b18c108df81fd4"}],"cinder/volume/drivers/coprhd/scaleio.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b616a8afc2cc44c418e05c7f69fd0453c0a6edb1","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        # If the group is not consistency group snapshot enabled, then"},{"line_number":189,"context_line":"        # we shall rely on generic volume group implementation"},{"line_number":190,"context_line":"        raise NotImplementedError()"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def check_for_export(self, context, volume_id):"},{"line_number":193,"context_line":"        \"\"\"Make sure volume is exported.\"\"\""},{"line_number":194,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_dc7644a5","line":191,"updated":"2017-05-16 16:00:14.000000000","message":"Same comment on create_group_from_src","commit_id":"9e2326bffc7cb2a07e6b9f27920a0f1e7e6ee08f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"416a1173fc96744970a3a21a6a79c92c476ebf02","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                              source_group\u003dNone, source_vols\u003dNone):"},{"line_number":164,"context_line":"        \"\"\"Creates a group from source.\"\"\""},{"line_number":165,"context_line":"        if volume_utils.is_group_a_cg_snapshot_type(group):"},{"line_number":166,"context_line":"            message \u003d _(\"create group from source is not supported for CoprHD\")"},{"line_number":167,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmessage)"},{"line_number":168,"context_line":"        else:"},{"line_number":169,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_ffa45e0a","line":166,"updated":"2017-05-18 21:19:58.000000000","message":"same","commit_id":"3d3ca5f20e368dfb982e441b33108d118a492619"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"802cceabc4eb28405e7469d274394d73565fc608","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from cinder import exception"},{"line_number":26,"context_line":"from cinder.i18n import _"},{"line_number":27,"context_line":"from cinder import interface"},{"line_number":28,"context_line":"from cinder.volume import driver"},{"line_number":29,"context_line":"from cinder.volume.drivers.coprhd import common as coprhd_common"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"3f1d235d_b6da87e6","side":"PARENT","line":27,"updated":"2017-06-30 18:22:13.000000000","message":"Should not be removed.","commit_id":"47ebb6809d9d6be18233a635cb823057826b47cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"802cceabc4eb28405e7469d274394d73565fc608","unresolved":false,"context_lines":[{"line_number":57,"context_line":"CONF.register_opts(scaleio_opts)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"@interface.volumedriver"},{"line_number":61,"context_line":"class EMCCoprHDScaleIODriver(driver.VolumeDriver):"},{"line_number":62,"context_line":"    \"\"\"CoprHD ScaleIO Driver.\"\"\""},{"line_number":63,"context_line":"    VERSION \u003d \"3.0.0.0\""}],"source_content_type":"text/x-python","patch_set":31,"id":"3f1d235d_d6d503bb","side":"PARENT","line":60,"range":{"start_line":60,"start_character":0,"end_line":60,"end_character":23},"updated":"2017-06-30 18:22:13.000000000","message":"Why are you removing this?  This should not be removed.","commit_id":"47ebb6809d9d6be18233a635cb823057826b47cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4ff0791ffb8538b045dd9a5378b829fa1ed329aa","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from cinder import exception"},{"line_number":27,"context_line":"from cinder.i18n import _"},{"line_number":28,"context_line":"from cinder import interface"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from cinder.volume import configuration"},{"line_number":31,"context_line":"from cinder.volume import driver"},{"line_number":32,"context_line":"from cinder.volume.drivers.coprhd import common as coprhd_common"}],"source_content_type":"text/x-python","patch_set":33,"id":"3f1d235d_9eb97616","line":29,"updated":"2017-07-05 14:56:00.000000000","message":"nit: Remove the added blank line.","commit_id":"2ab20767a4a6229d0ecd84a8fe18f0adcebfe9c4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"efc9ddff7656c14c580075f02a0ce5c8a101dd4a","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                              source_group\u003dNone, source_vols\u003dNone):"},{"line_number":168,"context_line":"        \"\"\"Creates a group from source.\"\"\""},{"line_number":169,"context_line":"        if volume_utils.is_group_a_cg_snapshot_type(group):"},{"line_number":170,"context_line":"            message \u003d _(\"create group from source is not supported \""},{"line_number":171,"context_line":"                        \"for CoprHD if the group type supports \""},{"line_number":172,"context_line":"                        \"consistent group snapshot.\")"},{"line_number":173,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmessage)"}],"source_content_type":"text/x-python","patch_set":37,"id":"1f1a1f67_8bf54186","line":170,"range":{"start_line":170,"start_character":25,"end_line":170,"end_character":26},"updated":"2017-07-20 22:46:07.000000000","message":"Start sentences uppercase.","commit_id":"b248aad12a223095b22b312b16b18c108df81fd4"}],"releasenotes/notes/coprhd-generic-volume-group-a1d41d439f94ae19.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"efc9ddff7656c14c580075f02a0ce5c8a101dd4a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add consistent group capability to generic volume groups in CoprHD driver."}],"source_content_type":"text/x-yaml","patch_set":37,"id":"1f1a1f67_eb339561","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":7},"updated":"2017-07-20 22:46:07.000000000","message":"\"Added\" would be better.","commit_id":"b248aad12a223095b22b312b16b18c108df81fd4"}]}
