)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2888e8b56ecc181fd097d7a9ca75fa90d1e84ea1","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Huawei: Support huawei consistency group"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding support for consistency groups in huawei cinder driver."},{"line_number":10,"context_line":"the consistency group only use to manage the groups of the"},{"line_number":11,"context_line":"feature hypermetro, So only supports the following interfaces:"},{"line_number":12,"context_line":"1、create_consistencygroup"},{"line_number":13,"context_line":"2、delete_consistencygroup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_9a814b4d","line":10,"range":{"start_line":10,"start_character":22,"end_line":10,"end_character":26},"updated":"2015-12-31 07:39:20.000000000","message":"Maybe should change \"only use\" to \"is only used\"?","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2888e8b56ecc181fd097d7a9ca75fa90d1e84ea1","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Huawei: Support huawei consistency group"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding support for consistency groups in huawei cinder driver."},{"line_number":10,"context_line":"the consistency group only use to manage the groups of the"},{"line_number":11,"context_line":"feature hypermetro, So only supports the following interfaces:"},{"line_number":12,"context_line":"1、create_consistencygroup"},{"line_number":13,"context_line":"2、delete_consistencygroup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_1ab79b3a","line":10,"updated":"2015-12-31 07:39:20.000000000","message":"s/the/The","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"97c5f2e26dcb36ec2fa6b9bed113c1f32c736d3e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Huawei: Support huawei consistency group"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding support for consistency groups in huawei cinder driver."},{"line_number":10,"context_line":"the consistency group only use to manage the groups of the"},{"line_number":11,"context_line":"feature hypermetro, So only supports the following interfaces:"},{"line_number":12,"context_line":"1、create_consistencygroup"},{"line_number":13,"context_line":"2、delete_consistencygroup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_da955fe4","line":10,"in_reply_to":"fa69d971_1ab79b3a","updated":"2016-01-04 03:56:15.000000000","message":"Done","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"97c5f2e26dcb36ec2fa6b9bed113c1f32c736d3e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Huawei: Support huawei consistency group"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding support for consistency groups in huawei cinder driver."},{"line_number":10,"context_line":"the consistency group only use to manage the groups of the"},{"line_number":11,"context_line":"feature hypermetro, So only supports the following interfaces:"},{"line_number":12,"context_line":"1、create_consistencygroup"},{"line_number":13,"context_line":"2、delete_consistencygroup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_fa98631d","line":10,"range":{"start_line":10,"start_character":22,"end_line":10,"end_character":26},"in_reply_to":"fa69d971_9a814b4d","updated":"2016-01-04 03:56:15.000000000","message":"Done","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2888e8b56ecc181fd097d7a9ca75fa90d1e84ea1","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding support for consistency groups in huawei cinder driver."},{"line_number":10,"context_line":"the consistency group only use to manage the groups of the"},{"line_number":11,"context_line":"feature hypermetro, So only supports the following interfaces:"},{"line_number":12,"context_line":"1、create_consistencygroup"},{"line_number":13,"context_line":"2、delete_consistencygroup"},{"line_number":14,"context_line":"3、update_consistencygroup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_9af86be7","line":11,"updated":"2015-12-31 07:39:20.000000000","message":"Maybe should change \"feature hypermetro\" to \"hypermetro feature\".","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2888e8b56ecc181fd097d7a9ca75fa90d1e84ea1","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding support for consistency groups in huawei cinder driver."},{"line_number":10,"context_line":"the consistency group only use to manage the groups of the"},{"line_number":11,"context_line":"feature hypermetro, So only supports the following interfaces:"},{"line_number":12,"context_line":"1、create_consistencygroup"},{"line_number":13,"context_line":"2、delete_consistencygroup"},{"line_number":14,"context_line":"3、update_consistencygroup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_fae7273e","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":18},"updated":"2015-12-31 07:39:20.000000000","message":"s/So/so","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"97c5f2e26dcb36ec2fa6b9bed113c1f32c736d3e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding support for consistency groups in huawei cinder driver."},{"line_number":10,"context_line":"the consistency group only use to manage the groups of the"},{"line_number":11,"context_line":"feature hypermetro, So only supports the following interfaces:"},{"line_number":12,"context_line":"1、create_consistencygroup"},{"line_number":13,"context_line":"2、delete_consistencygroup"},{"line_number":14,"context_line":"3、update_consistencygroup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_9a9fe702","line":11,"in_reply_to":"fa69d971_9af86be7","updated":"2016-01-04 03:56:15.000000000","message":"Done","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"97c5f2e26dcb36ec2fa6b9bed113c1f32c736d3e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding support for consistency groups in huawei cinder driver."},{"line_number":10,"context_line":"the consistency group only use to manage the groups of the"},{"line_number":11,"context_line":"feature hypermetro, So only supports the following interfaces:"},{"line_number":12,"context_line":"1、create_consistencygroup"},{"line_number":13,"context_line":"2、delete_consistencygroup"},{"line_number":14,"context_line":"3、update_consistencygroup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_baa2eb49","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":18},"in_reply_to":"fa69d971_fae7273e","updated":"2016-01-04 03:56:15.000000000","message":"Done","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2888e8b56ecc181fd097d7a9ca75fa90d1e84ea1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Adding support for consistency groups in huawei cinder driver."},{"line_number":10,"context_line":"the consistency group only use to manage the groups of the"},{"line_number":11,"context_line":"feature hypermetro, So only supports the following interfaces:"},{"line_number":12,"context_line":"1、create_consistencygroup"},{"line_number":13,"context_line":"2、delete_consistencygroup"},{"line_number":14,"context_line":"3、update_consistencygroup"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_1abc7b04","line":12,"updated":"2015-12-31 07:39:20.000000000","message":"\"、\" is a Chinese usage, maybe better to use \".\"","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"97c5f2e26dcb36ec2fa6b9bed113c1f32c736d3e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Adding support for consistency groups in huawei cinder driver."},{"line_number":10,"context_line":"the consistency group only use to manage the groups of the"},{"line_number":11,"context_line":"feature hypermetro, So only supports the following interfaces:"},{"line_number":12,"context_line":"1、create_consistencygroup"},{"line_number":13,"context_line":"2、delete_consistencygroup"},{"line_number":14,"context_line":"3、update_consistencygroup"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_5a8acfc0","line":12,"in_reply_to":"fa69d971_1abc7b04","updated":"2016-01-04 03:56:15.000000000","message":"Done","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9f8979294b68219c2e195bc02f065e52e6bf6851","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Huawei: Support huawei consistency group"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding support for consistency groups in huawei cinder driver."},{"line_number":10,"context_line":"The consistency group is only used to manage the groups of the"},{"line_number":11,"context_line":"hypermetro feature, so only supports the following interfaces:"},{"line_number":12,"context_line":"1.create_consistencygroup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa69d971_106f212c","line":9,"updated":"2016-01-10 08:09:53.000000000","message":"Better to remove the word \"cinder\", just use \"huawei driver\"?","commit_id":"231f1e784152b52bc967519e5e02442ca175065d"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bb9bcaa74c7d5812e092d0f6c5c02f8d6d37b4b9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Huawei: Support huawei consistency group"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding support for consistency groups in huawei cinder driver."},{"line_number":10,"context_line":"The consistency group is only used to manage the groups of the"},{"line_number":11,"context_line":"hypermetro feature, so only supports the following interfaces:"},{"line_number":12,"context_line":"1.create_consistencygroup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa69d971_1ce977e6","line":9,"in_reply_to":"fa69d971_106f212c","updated":"2016-01-11 03:53:41.000000000","message":"Done","commit_id":"231f1e784152b52bc967519e5e02442ca175065d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"904b991e49d9bd300bb12261af765fec28bafb83","unresolved":false,"context_lines":[{"line_number":11,"context_line":"hypermetro feature, so only supports the following interfaces:"},{"line_number":12,"context_line":"1.create_consistencygroup"},{"line_number":13,"context_line":"2.delete_consistencygroup"},{"line_number":14,"context_line":"3.update_consistencygroup"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact"},{"line_number":17,"context_line":"Implements: blueprint support-huawei-consistency-group"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"da6ed579_92128bb3","line":14,"updated":"2016-01-12 19:28:16.000000000","message":"Why don\u0027t you have create_cgsnapshot and delete_cgsnapshot?  The consistency groups are not consistent without cgsnapshot so they are not useful at all.","commit_id":"20e0a542a40aacc51f2981c18037148282d4ed50"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"27ef4a3e9403c74ed2a01c9e13159074f97a421f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"hypermetro feature, so only supports the following interfaces:"},{"line_number":12,"context_line":"1.create_consistencygroup"},{"line_number":13,"context_line":"2.delete_consistencygroup"},{"line_number":14,"context_line":"3.update_consistencygroup"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact"},{"line_number":17,"context_line":"Implements: blueprint support-huawei-consistency-group"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"da6ed579_5fd2c501","line":14,"in_reply_to":"da6ed579_92128bb3","updated":"2016-01-13 06:45:31.000000000","message":"Thank you xin,I need to explain that the CG doesn\u0027t manage the Volume object,it manage the remote hypermetro pair,just like remote repliation.As the pair doesn\u0027t have snapshot,So we  don\u0027t have create_cgsnapshot and delete_cgsnapshot.","commit_id":"20e0a542a40aacc51f2981c18037148282d4ed50"}],"cinder/tests/unit/test_huawei_drivers.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"32be76f6a50ff0c8fce4b99b599dc3bd839b977f","unresolved":false,"context_lines":[{"line_number":2599,"context_line":"    def test_wait_volume_ready_success(self):"},{"line_number":2600,"context_line":""},{"line_number":2601,"context_line":"        flag \u003d self.driver.metro._wait_volume_ready(\"11\")"},{"line_number":2602,"context_line":"        self.assertEqual(None, flag)"},{"line_number":2603,"context_line":""},{"line_number":2604,"context_line":"    @mock.patch.object(huawei_driver.huawei_utils, \u0027get_volume_metadata\u0027,"},{"line_number":2605,"context_line":"                       return_value\u003d{\u0027hypermetro_id\u0027: \u00273400a30d844d0007\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_0a9180f0","line":2602,"range":{"start_line":2602,"start_character":0,"end_line":2602,"end_character":36},"updated":"2015-12-23 17:18:45.000000000","message":"Use assertIsNone(flag) here","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":2599,"context_line":"    def test_wait_volume_ready_success(self):"},{"line_number":2600,"context_line":""},{"line_number":2601,"context_line":"        flag \u003d self.driver.metro._wait_volume_ready(\"11\")"},{"line_number":2602,"context_line":"        self.assertEqual(None, flag)"},{"line_number":2603,"context_line":""},{"line_number":2604,"context_line":"    @mock.patch.object(huawei_driver.huawei_utils, \u0027get_volume_metadata\u0027,"},{"line_number":2605,"context_line":"                       return_value\u003d{\u0027hypermetro_id\u0027: \u00273400a30d844d0007\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_1d38db9f","line":2602,"range":{"start_line":2602,"start_character":0,"end_line":2602,"end_character":36},"in_reply_to":"1a7b0d38_0a9180f0","updated":"2015-12-24 09:45:35.000000000","message":"Done","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"904b991e49d9bd300bb12261af765fec28bafb83","unresolved":false,"context_lines":[{"line_number":2590,"context_line":"    def test_wait_volume_ready_success(self):"},{"line_number":2591,"context_line":""},{"line_number":2592,"context_line":"        flag \u003d self.driver.metro._wait_volume_ready(\"11\")"},{"line_number":2593,"context_line":"        self.assertIsNone(None, flag)"},{"line_number":2594,"context_line":""},{"line_number":2595,"context_line":"    @mock.patch.object(huawei_driver.huawei_utils, \u0027get_volume_metadata\u0027,"},{"line_number":2596,"context_line":"                       return_value\u003d{\u0027hypermetro_id\u0027: \u00273400a30d844d0007\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_127d3b1c","line":2593,"updated":"2016-01-12 19:28:16.000000000","message":"self.assertIsNone(flag)","commit_id":"20e0a542a40aacc51f2981c18037148282d4ed50"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"27ef4a3e9403c74ed2a01c9e13159074f97a421f","unresolved":false,"context_lines":[{"line_number":2590,"context_line":"    def test_wait_volume_ready_success(self):"},{"line_number":2591,"context_line":""},{"line_number":2592,"context_line":"        flag \u003d self.driver.metro._wait_volume_ready(\"11\")"},{"line_number":2593,"context_line":"        self.assertIsNone(None, flag)"},{"line_number":2594,"context_line":""},{"line_number":2595,"context_line":"    @mock.patch.object(huawei_driver.huawei_utils, \u0027get_volume_metadata\u0027,"},{"line_number":2596,"context_line":"                       return_value\u003d{\u0027hypermetro_id\u0027: \u00273400a30d844d0007\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_73a02ba0","line":2593,"in_reply_to":"da6ed579_127d3b1c","updated":"2016-01-13 06:45:31.000000000","message":"Done","commit_id":"20e0a542a40aacc51f2981c18037148282d4ed50"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"dfea2aabf498626040a81f7f5aabd0132ac8fd8a","unresolved":false,"context_lines":[{"line_number":1118,"context_line":"    \"HEALTHSTATUS\": \"0\""},{"line_number":1119,"context_line":"}"},{"line_number":1120,"context_line":""},{"line_number":1121,"context_line":"FAKE_METRO_INFO_NEW_RESPONCE \u003d \"\"\"{"},{"line_number":1122,"context_line":"    \"error\": {"},{"line_number":1123,"context_line":"        \"code\": 0"},{"line_number":1124,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_8fa9557e","line":1121,"range":{"start_line":1121,"start_character":20,"end_line":1121,"end_character":28},"updated":"2016-06-06 17:15:07.000000000","message":"s/RESPONCE/RESPONSE","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a5d1278ac1a0e06480feea87c1e91a1a85f92375","unresolved":false,"context_lines":[{"line_number":1118,"context_line":"    \"HEALTHSTATUS\": \"0\""},{"line_number":1119,"context_line":"}"},{"line_number":1120,"context_line":""},{"line_number":1121,"context_line":"FAKE_METRO_INFO_NEW_RESPONCE \u003d \"\"\"{"},{"line_number":1122,"context_line":"    \"error\": {"},{"line_number":1123,"context_line":"        \"code\": 0"},{"line_number":1124,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_ad87ddd5","line":1121,"range":{"start_line":1121,"start_character":20,"end_line":1121,"end_character":28},"in_reply_to":"7aa08908_8fa9557e","updated":"2016-06-07 08:04:46.000000000","message":"Done","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"dfea2aabf498626040a81f7f5aabd0132ac8fd8a","unresolved":false,"context_lines":[{"line_number":1132,"context_line":"}"},{"line_number":1133,"context_line":"\"\"\""},{"line_number":1134,"context_line":""},{"line_number":1135,"context_line":"FAKE_CREATE_METROROUP_RESPONCE \u003d \"\"\""},{"line_number":1136,"context_line":"{"},{"line_number":1137,"context_line":"    \"data\": {"},{"line_number":1138,"context_line":"        \"DESCRIPTION\": \"\","}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_cfb99dcd","line":1135,"range":{"start_line":1135,"start_character":22,"end_line":1135,"end_character":30},"updated":"2016-06-06 17:15:07.000000000","message":"s/RESPONCE/RESPONSE","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a5d1278ac1a0e06480feea87c1e91a1a85f92375","unresolved":false,"context_lines":[{"line_number":1132,"context_line":"}"},{"line_number":1133,"context_line":"\"\"\""},{"line_number":1134,"context_line":""},{"line_number":1135,"context_line":"FAKE_CREATE_METROROUP_RESPONCE \u003d \"\"\""},{"line_number":1136,"context_line":"{"},{"line_number":1137,"context_line":"    \"data\": {"},{"line_number":1138,"context_line":"        \"DESCRIPTION\": \"\","}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_0d6f112c","line":1135,"range":{"start_line":1135,"start_character":22,"end_line":1135,"end_character":30},"in_reply_to":"7aa08908_cfb99dcd","updated":"2016-06-07 08:04:46.000000000","message":"Done","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"dfea2aabf498626040a81f7f5aabd0132ac8fd8a","unresolved":false,"context_lines":[{"line_number":1157,"context_line":"}"},{"line_number":1158,"context_line":"\"\"\""},{"line_number":1159,"context_line":""},{"line_number":1160,"context_line":"FAKE_GET_METROROUP_RESPONCE \u003d {"},{"line_number":1161,"context_line":"    \"data\": [{"},{"line_number":1162,"context_line":"        \"DESCRIPTION\": \"\","},{"line_number":1163,"context_line":"        \"DOMAINID\": \"643e8c4c5f670100\","}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_efdd7915","line":1160,"range":{"start_line":1160,"start_character":19,"end_line":1160,"end_character":27},"updated":"2016-06-06 17:15:07.000000000","message":"ditto","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a5d1278ac1a0e06480feea87c1e91a1a85f92375","unresolved":false,"context_lines":[{"line_number":1157,"context_line":"}"},{"line_number":1158,"context_line":"\"\"\""},{"line_number":1159,"context_line":""},{"line_number":1160,"context_line":"FAKE_GET_METROROUP_RESPONCE \u003d {"},{"line_number":1161,"context_line":"    \"data\": [{"},{"line_number":1162,"context_line":"        \"DESCRIPTION\": \"\","},{"line_number":1163,"context_line":"        \"DOMAINID\": \"643e8c4c5f670100\","}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_ed69e526","line":1160,"range":{"start_line":1160,"start_character":19,"end_line":1160,"end_character":27},"in_reply_to":"7aa08908_efdd7915","updated":"2016-06-07 08:04:46.000000000","message":"Done","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"dfea2aabf498626040a81f7f5aabd0132ac8fd8a","unresolved":false,"context_lines":[{"line_number":1181,"context_line":"}"},{"line_number":1182,"context_line":""},{"line_number":1183,"context_line":""},{"line_number":1184,"context_line":"FAKE_GET_METROROUP_ID_RESPONCE \u003d \"\"\""},{"line_number":1185,"context_line":"{"},{"line_number":1186,"context_line":"    \"data\": {"},{"line_number":1187,"context_line":"        \"DESCRIPTION\": \"\","}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_6fd22902","line":1184,"range":{"start_line":1184,"start_character":22,"end_line":1184,"end_character":30},"updated":"2016-06-06 17:15:07.000000000","message":"ditto","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a5d1278ac1a0e06480feea87c1e91a1a85f92375","unresolved":false,"context_lines":[{"line_number":1181,"context_line":"}"},{"line_number":1182,"context_line":""},{"line_number":1183,"context_line":""},{"line_number":1184,"context_line":"FAKE_GET_METROROUP_ID_RESPONCE \u003d \"\"\""},{"line_number":1185,"context_line":"{"},{"line_number":1186,"context_line":"    \"data\": {"},{"line_number":1187,"context_line":"        \"DESCRIPTION\": \"\","}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_4d7919f6","line":1184,"range":{"start_line":1184,"start_character":22,"end_line":1184,"end_character":30},"in_reply_to":"7aa08908_6fd22902","updated":"2016-06-07 08:04:46.000000000","message":"Done","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2155243dea0da72ec93ea478280b87f46c40656a","unresolved":false,"context_lines":[{"line_number":2108,"context_line":"        self.huawei_conf \u003d FakeHuaweiConf(self.configuration, \u0027iSCSI\u0027)"},{"line_number":2109,"context_line":"        self.active_backend_id \u003d None"},{"line_number":2110,"context_line":"        self.replica \u003d None"},{"line_number":2111,"context_line":"        self.db \u003d db"},{"line_number":2112,"context_line":""},{"line_number":2113,"context_line":"    def do_setup(self):"},{"line_number":2114,"context_line":"        self.metro_flag \u003d True"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aa08908_45e725b0","line":2111,"updated":"2016-06-07 10:39:50.000000000","message":"It is assigned but not used. Do we really need it?","commit_id":"526bd8d95e96631d1b0a3c5756d41227313eaba6"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"bb2d8e623686bedd8967741a37d13c128292b9e3","unresolved":false,"context_lines":[{"line_number":2108,"context_line":"        self.huawei_conf \u003d FakeHuaweiConf(self.configuration, \u0027iSCSI\u0027)"},{"line_number":2109,"context_line":"        self.active_backend_id \u003d None"},{"line_number":2110,"context_line":"        self.replica \u003d None"},{"line_number":2111,"context_line":"        self.db \u003d db"},{"line_number":2112,"context_line":""},{"line_number":2113,"context_line":"    def do_setup(self):"},{"line_number":2114,"context_line":"        self.metro_flag \u003d True"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aa08908_09817ec3","line":2111,"in_reply_to":"7aa08908_45e725b0","updated":"2016-06-08 07:26:20.000000000","message":"Done","commit_id":"526bd8d95e96631d1b0a3c5756d41227313eaba6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2155243dea0da72ec93ea478280b87f46c40656a","unresolved":false,"context_lines":[{"line_number":2135,"context_line":"        self.huawei_conf \u003d FakeHuaweiConf(self.configuration, \u0027iSCSI\u0027)"},{"line_number":2136,"context_line":"        self.active_backend_id \u003d None"},{"line_number":2137,"context_line":"        self.replica \u003d None"},{"line_number":2138,"context_line":"        self.db \u003d db"},{"line_number":2139,"context_line":""},{"line_number":2140,"context_line":"    def do_setup(self):"},{"line_number":2141,"context_line":"        self.metro_flag \u003d True"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aa08908_85ef4d86","line":2138,"range":{"start_line":2138,"start_character":13,"end_line":2138,"end_character":14},"updated":"2016-06-07 10:39:50.000000000","message":"The same, as above","commit_id":"526bd8d95e96631d1b0a3c5756d41227313eaba6"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"bb2d8e623686bedd8967741a37d13c128292b9e3","unresolved":false,"context_lines":[{"line_number":2135,"context_line":"        self.huawei_conf \u003d FakeHuaweiConf(self.configuration, \u0027iSCSI\u0027)"},{"line_number":2136,"context_line":"        self.active_backend_id \u003d None"},{"line_number":2137,"context_line":"        self.replica \u003d None"},{"line_number":2138,"context_line":"        self.db \u003d db"},{"line_number":2139,"context_line":""},{"line_number":2140,"context_line":"    def do_setup(self):"},{"line_number":2141,"context_line":"        self.metro_flag \u003d True"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aa08908_c961363b","line":2138,"range":{"start_line":2138,"start_character":13,"end_line":2138,"end_character":14},"in_reply_to":"7aa08908_85ef4d86","updated":"2016-06-08 07:26:20.000000000","message":"Done","commit_id":"526bd8d95e96631d1b0a3c5756d41227313eaba6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2155243dea0da72ec93ea478280b87f46c40656a","unresolved":false,"context_lines":[{"line_number":4310,"context_line":""},{"line_number":4311,"context_line":"    def test_delete_normal_consistencygroup_success(self):"},{"line_number":4312,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":4313,"context_line":"        test_volumes \u003d []"},{"line_number":4314,"context_line":"        test_volumes.append(test_volume)"},{"line_number":4315,"context_line":"        self.mock_object(huawei_driver.HuaweiBaseDriver,"},{"line_number":4316,"context_line":"                         \u0027_get_consistencygroup_type\u0027,"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aa08908_459565dc","line":4313,"updated":"2016-06-07 10:39:50.000000000","message":"It could be replaced with:\ntest_volumes \u003d [test_volume]\n\nThe same comment for the code below","commit_id":"526bd8d95e96631d1b0a3c5756d41227313eaba6"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"bb2d8e623686bedd8967741a37d13c128292b9e3","unresolved":false,"context_lines":[{"line_number":4310,"context_line":""},{"line_number":4311,"context_line":"    def test_delete_normal_consistencygroup_success(self):"},{"line_number":4312,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":4313,"context_line":"        test_volumes \u003d []"},{"line_number":4314,"context_line":"        test_volumes.append(test_volume)"},{"line_number":4315,"context_line":"        self.mock_object(huawei_driver.HuaweiBaseDriver,"},{"line_number":4316,"context_line":"                         \u0027_get_consistencygroup_type\u0027,"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aa08908_691be2ca","line":4313,"in_reply_to":"7aa08908_459565dc","updated":"2016-06-08 07:26:20.000000000","message":"ok,done","commit_id":"526bd8d95e96631d1b0a3c5756d41227313eaba6"}],"cinder/volume/drivers/huawei/constants.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"32be76f6a50ff0c8fce4b99b599dc3bd839b977f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":45,"context_line":"ERROR_VOLUME_NOT_EXIST \u003d 1077939726"},{"line_number":46,"context_line":"RELOGIN_ERROR_PASS \u003d [ERROR_VOLUME_NOT_EXIST]"},{"line_number":47,"context_line":"RUNNING_NORMAL \u003d \u00271\u0027"},{"line_number":48,"context_line":"RUNNING_SYNC \u003d \u002723\u0027"},{"line_number":49,"context_line":"RUNNING_STOP \u003d \u002741\u0027"},{"line_number":50,"context_line":"HEAHTH_NORMAL \u003d \u00271\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"NO_SPLITMIRROR_LICENSE \u003d 1077950233"},{"line_number":53,"context_line":"NO_MIGRATION_LICENSE \u003d 1073806606"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_8d258aac","line":50,"range":{"start_line":47,"start_character":0,"end_line":50,"end_character":19},"updated":"2015-12-23 17:18:45.000000000","message":"Are these consistency group specific? Are they for remote devices? If they are for cgs, adding CG_ to these constants would make more sense and be more descriptive.","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":44,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":45,"context_line":"ERROR_VOLUME_NOT_EXIST \u003d 1077939726"},{"line_number":46,"context_line":"RELOGIN_ERROR_PASS \u003d [ERROR_VOLUME_NOT_EXIST]"},{"line_number":47,"context_line":"RUNNING_NORMAL \u003d \u00271\u0027"},{"line_number":48,"context_line":"RUNNING_SYNC \u003d \u002723\u0027"},{"line_number":49,"context_line":"RUNNING_STOP \u003d \u002741\u0027"},{"line_number":50,"context_line":"HEAHTH_NORMAL \u003d \u00271\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"NO_SPLITMIRROR_LICENSE \u003d 1077950233"},{"line_number":53,"context_line":"NO_MIGRATION_LICENSE \u003d 1073806606"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_97fa6cbc","line":50,"range":{"start_line":47,"start_character":0,"end_line":50,"end_character":19},"in_reply_to":"1a7b0d38_8d258aac","updated":"2015-12-24 09:45:35.000000000","message":"I need to explain that the status not only use for CG,But also use for replications,The status are Shared by multiple features","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4f04500c4d7ac2318de5b02292bb2b7bb75813f1","unresolved":false,"context_lines":[{"line_number":47,"context_line":"RUNNING_NORMAL \u003d \u00271\u0027"},{"line_number":48,"context_line":"RUNNING_SYNC \u003d \u002723\u0027"},{"line_number":49,"context_line":"RUNNING_STOP \u003d \u002741\u0027"},{"line_number":50,"context_line":"HEAHTH_NORMAL \u003d \u00271\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"NO_SPLITMIRROR_LICENSE \u003d 1077950233"},{"line_number":53,"context_line":"NO_MIGRATION_LICENSE \u003d 1073806606"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_d913e363","line":50,"range":{"start_line":50,"start_character":0,"end_line":50,"end_character":6},"updated":"2016-01-11 11:21:28.000000000","message":"s/HEAHTH/HEALTH","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"828f3feee38327499213c3f3df3628ff2ade6c7c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"RUNNING_NORMAL \u003d \u00271\u0027"},{"line_number":48,"context_line":"RUNNING_SYNC \u003d \u002723\u0027"},{"line_number":49,"context_line":"RUNNING_STOP \u003d \u002741\u0027"},{"line_number":50,"context_line":"HEAHTH_NORMAL \u003d \u00271\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"NO_SPLITMIRROR_LICENSE \u003d 1077950233"},{"line_number":53,"context_line":"NO_MIGRATION_LICENSE \u003d 1073806606"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_9d31d05b","line":50,"range":{"start_line":50,"start_character":0,"end_line":50,"end_character":6},"in_reply_to":"fa69d971_d913e363","updated":"2016-01-11 13:13:22.000000000","message":"Done","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"}],"cinder/volume/drivers/huawei/huawei_conf.py":[{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9f8979294b68219c2e195bc02f065e52e6bf6851","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                msg \u003d (_(\"Invalid lun type %s is configured.\""},{"line_number":153,"context_line":"                         \"Thick Type will be used.\") % lun_type)"},{"line_number":154,"context_line":"                LOG.exception(msg)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        setattr(self.conf, \u0027lun_type\u0027, lun_type)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_70853dcd","line":155,"updated":"2016-01-10 08:09:53.000000000","message":"This line is no need to add.","commit_id":"231f1e784152b52bc967519e5e02442ca175065d"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bb9bcaa74c7d5812e092d0f6c5c02f8d6d37b4b9","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                msg \u003d (_(\"Invalid lun type %s is configured.\""},{"line_number":153,"context_line":"                         \"Thick Type will be used.\") % lun_type)"},{"line_number":154,"context_line":"                LOG.exception(msg)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        setattr(self.conf, \u0027lun_type\u0027, lun_type)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_bc314b5c","line":155,"in_reply_to":"fa69d971_70853dcd","updated":"2016-01-11 03:53:41.000000000","message":"Done","commit_id":"231f1e784152b52bc967519e5e02442ca175065d"}],"cinder/volume/drivers/huawei/huawei_driver.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"32be76f6a50ff0c8fce4b99b599dc3bd839b977f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    cfg.StrOpt(\u0027hypermetro_devices\u0027,"},{"line_number":48,"context_line":"               default\u003dNone,"},{"line_number":49,"context_line":"               help\u003d\u0027The remote device hypermetro will use.\u0027),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027metro_san_user\u0027,"},{"line_number":51,"context_line":"               default\u003dNone,"},{"line_number":52,"context_line":"               help\u003d\u0027The remote metro device san user.\u0027),"},{"line_number":53,"context_line":"    cfg.StrOpt(\u0027metro_san_password\u0027,"},{"line_number":54,"context_line":"               default\u003dNone,"},{"line_number":55,"context_line":"               help\u003d\u0027The remote metro device san password.\u0027),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027metro_domain_name\u0027,"},{"line_number":57,"context_line":"               default\u003dNone,"},{"line_number":58,"context_line":"               help\u003d\u0027The remote metro device domain name.\u0027),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027metro_san_address\u0027,"},{"line_number":60,"context_line":"               default\u003dNone,"},{"line_number":61,"context_line":"               help\u003d\u0027The remote metro device request url.\u0027),"},{"line_number":62,"context_line":"    cfg.StrOpt(\u0027metro_storage_pools\u0027,"},{"line_number":63,"context_line":"               default\u003dNone,"},{"line_number":64,"context_line":"               help\u003d\u0027The remote metro device pool names.\u0027),"},{"line_number":65,"context_line":"]"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_aa638c19","line":64,"range":{"start_line":50,"start_character":0,"end_line":64,"end_character":59},"updated":"2015-12-23 17:18:45.000000000","message":"What do all these remote device entries have to do with consistency groups?","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    cfg.StrOpt(\u0027hypermetro_devices\u0027,"},{"line_number":48,"context_line":"               default\u003dNone,"},{"line_number":49,"context_line":"               help\u003d\u0027The remote device hypermetro will use.\u0027),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027metro_san_user\u0027,"},{"line_number":51,"context_line":"               default\u003dNone,"},{"line_number":52,"context_line":"               help\u003d\u0027The remote metro device san user.\u0027),"},{"line_number":53,"context_line":"    cfg.StrOpt(\u0027metro_san_password\u0027,"},{"line_number":54,"context_line":"               default\u003dNone,"},{"line_number":55,"context_line":"               help\u003d\u0027The remote metro device san password.\u0027),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027metro_domain_name\u0027,"},{"line_number":57,"context_line":"               default\u003dNone,"},{"line_number":58,"context_line":"               help\u003d\u0027The remote metro device domain name.\u0027),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027metro_san_address\u0027,"},{"line_number":60,"context_line":"               default\u003dNone,"},{"line_number":61,"context_line":"               help\u003d\u0027The remote metro device request url.\u0027),"},{"line_number":62,"context_line":"    cfg.StrOpt(\u0027metro_storage_pools\u0027,"},{"line_number":63,"context_line":"               default\u003dNone,"},{"line_number":64,"context_line":"               help\u003d\u0027The remote metro device pool names.\u0027),"},{"line_number":65,"context_line":"]"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_b73be837","line":64,"range":{"start_line":50,"start_character":0,"end_line":64,"end_character":59},"in_reply_to":"1a7b0d38_6d6dbe03","updated":"2015-12-24 09:45:35.000000000","message":"these parameter is used for \"hypermetro\" feature, at the current blueprint,the CG we used to manage multiple hypermetro,just like multiple remote replications.","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"aded0e00699554dd43afc38328f363dd8c947c25","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    cfg.StrOpt(\u0027hypermetro_devices\u0027,"},{"line_number":48,"context_line":"               default\u003dNone,"},{"line_number":49,"context_line":"               help\u003d\u0027The remote device hypermetro will use.\u0027),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027metro_san_user\u0027,"},{"line_number":51,"context_line":"               default\u003dNone,"},{"line_number":52,"context_line":"               help\u003d\u0027The remote metro device san user.\u0027),"},{"line_number":53,"context_line":"    cfg.StrOpt(\u0027metro_san_password\u0027,"},{"line_number":54,"context_line":"               default\u003dNone,"},{"line_number":55,"context_line":"               help\u003d\u0027The remote metro device san password.\u0027),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027metro_domain_name\u0027,"},{"line_number":57,"context_line":"               default\u003dNone,"},{"line_number":58,"context_line":"               help\u003d\u0027The remote metro device domain name.\u0027),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027metro_san_address\u0027,"},{"line_number":60,"context_line":"               default\u003dNone,"},{"line_number":61,"context_line":"               help\u003d\u0027The remote metro device request url.\u0027),"},{"line_number":62,"context_line":"    cfg.StrOpt(\u0027metro_storage_pools\u0027,"},{"line_number":63,"context_line":"               default\u003dNone,"},{"line_number":64,"context_line":"               help\u003d\u0027The remote metro device pool names.\u0027),"},{"line_number":65,"context_line":"]"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_6d6dbe03","line":64,"range":{"start_line":50,"start_character":0,"end_line":64,"end_character":59},"in_reply_to":"1a7b0d38_aa638c19","updated":"2015-12-23 17:48:50.000000000","message":"I thought \"hypermetro\" is for remote replication.  Currently CG is only for snapshot.  How are these parameters relevant for CG snapshot?","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    cfg.StrOpt(\u0027hypermetro_devices\u0027,"},{"line_number":48,"context_line":"               default\u003dNone,"},{"line_number":49,"context_line":"               help\u003d\u0027The remote device hypermetro will use.\u0027),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027metro_san_user\u0027,"},{"line_number":51,"context_line":"               default\u003dNone,"},{"line_number":52,"context_line":"               help\u003d\u0027The remote metro device san user.\u0027),"},{"line_number":53,"context_line":"    cfg.StrOpt(\u0027metro_san_password\u0027,"},{"line_number":54,"context_line":"               default\u003dNone,"},{"line_number":55,"context_line":"               help\u003d\u0027The remote metro device san password.\u0027),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027metro_domain_name\u0027,"},{"line_number":57,"context_line":"               default\u003dNone,"},{"line_number":58,"context_line":"               help\u003d\u0027The remote metro device domain name.\u0027),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027metro_san_address\u0027,"},{"line_number":60,"context_line":"               default\u003dNone,"},{"line_number":61,"context_line":"               help\u003d\u0027The remote metro device request url.\u0027),"},{"line_number":62,"context_line":"    cfg.StrOpt(\u0027metro_storage_pools\u0027,"},{"line_number":63,"context_line":"               default\u003dNone,"},{"line_number":64,"context_line":"               help\u003d\u0027The remote metro device pool names.\u0027),"},{"line_number":65,"context_line":"]"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_f785f006","line":64,"range":{"start_line":50,"start_character":0,"end_line":64,"end_character":59},"in_reply_to":"1a7b0d38_aa638c19","updated":"2015-12-24 09:45:35.000000000","message":"the device entries is used for the feature \"hypermetro\",the feature is like remote replication,so we need to define the remote device entries","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"aded0e00699554dd43afc38328f363dd8c947c25","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    def _get_cggroup_type(self, group):"},{"line_number":136,"context_line":"        specs \u003d {}"},{"line_number":137,"context_line":"        type_id \u003d group[\u0027volume_type_id\u0027].split(\",\")"},{"line_number":138,"context_line":"        if type_id[0]:"},{"line_number":139,"context_line":"            ctxt \u003d context.get_admin_context()"},{"line_number":140,"context_line":"            volume_type \u003d volume_types.get_volume_type(ctxt, type_id[0])"},{"line_number":141,"context_line":"            specs \u003d dict(volume_type).get(\u0027extra_specs\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_cd4f1291","line":138,"updated":"2015-12-23 17:48:50.000000000","message":"Why are you only using one volume type?  There could be more than one volume types.  How do you handle type_id[1], type_id[2], etc?","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    def _get_cggroup_type(self, group):"},{"line_number":136,"context_line":"        specs \u003d {}"},{"line_number":137,"context_line":"        type_id \u003d group[\u0027volume_type_id\u0027].split(\",\")"},{"line_number":138,"context_line":"        if type_id[0]:"},{"line_number":139,"context_line":"            ctxt \u003d context.get_admin_context()"},{"line_number":140,"context_line":"            volume_type \u003d volume_types.get_volume_type(ctxt, type_id[0])"},{"line_number":141,"context_line":"            specs \u003d dict(volume_type).get(\u0027extra_specs\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_577884f2","line":138,"in_reply_to":"1a7b0d38_cd4f1291","updated":"2015-12-24 09:45:35.000000000","message":"we define a scenario that user only use \"hypermetro\" or \"remote replication\" can use CG,So just only one VolumeType can affect the CG feature.","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"aded0e00699554dd43afc38328f363dd8c947c25","unresolved":false,"context_lines":[{"line_number":964,"context_line":"                                                self.db)"},{"line_number":965,"context_line":"            metro.create_consistencygroup(group)"},{"line_number":966,"context_line":"        else:"},{"line_number":967,"context_line":"            msg \u003d _(\"The cggroup is not support the current volumetype.\")"},{"line_number":968,"context_line":"            LOG.error(msg)"},{"line_number":969,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":970,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_6d129e64","line":967,"updated":"2015-12-23 17:48:50.000000000","message":"The cggroup \u003cgroup name or some identifier\u003e does not support the current volume type \u003cvolume type uuid\u003e.","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":964,"context_line":"                                                self.db)"},{"line_number":965,"context_line":"            metro.create_consistencygroup(group)"},{"line_number":966,"context_line":"        else:"},{"line_number":967,"context_line":"            msg \u003d _(\"The cggroup is not support the current volumetype.\")"},{"line_number":968,"context_line":"            LOG.error(msg)"},{"line_number":969,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":970,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_b75a084f","line":967,"in_reply_to":"1a7b0d38_6d129e64","updated":"2015-12-24 09:45:35.000000000","message":"Done","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"32be76f6a50ff0c8fce4b99b599dc3bd839b977f","unresolved":false,"context_lines":[{"line_number":970,"context_line":""},{"line_number":971,"context_line":"        return model_update"},{"line_number":972,"context_line":""},{"line_number":973,"context_line":"    def delete_consistencygroup(self, context, group):"},{"line_number":974,"context_line":"        opts \u003d self._get_cggroup_type(group)"},{"line_number":975,"context_line":"        if opts.get(\u0027hypermetro\u0027):"},{"line_number":976,"context_line":"            volumes \u003d self.db.volume_get_all_by_group(context, group[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_2a26bcce","line":973,"range":{"start_line":973,"start_character":52,"end_line":973,"end_character":54},"updated":"2015-12-23 17:18:45.000000000","message":"Include volumes as a parameters","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"aded0e00699554dd43afc38328f363dd8c947c25","unresolved":false,"context_lines":[{"line_number":970,"context_line":""},{"line_number":971,"context_line":"        return model_update"},{"line_number":972,"context_line":""},{"line_number":973,"context_line":"    def delete_consistencygroup(self, context, group):"},{"line_number":974,"context_line":"        opts \u003d self._get_cggroup_type(group)"},{"line_number":975,"context_line":"        if opts.get(\u0027hypermetro\u0027):"},{"line_number":976,"context_line":"            volumes \u003d self.db.volume_get_all_by_group(context, group[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_800eb132","line":973,"range":{"start_line":973,"start_character":52,"end_line":973,"end_character":54},"in_reply_to":"1a7b0d38_2a26bcce","updated":"2015-12-23 17:48:50.000000000","message":"+1","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":970,"context_line":""},{"line_number":971,"context_line":"        return model_update"},{"line_number":972,"context_line":""},{"line_number":973,"context_line":"    def delete_consistencygroup(self, context, group):"},{"line_number":974,"context_line":"        opts \u003d self._get_cggroup_type(group)"},{"line_number":975,"context_line":"        if opts.get(\u0027hypermetro\u0027):"},{"line_number":976,"context_line":"            volumes \u003d self.db.volume_get_all_by_group(context, group[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_524c1270","line":973,"range":{"start_line":973,"start_character":52,"end_line":973,"end_character":54},"in_reply_to":"1a7b0d38_2a26bcce","updated":"2015-12-24 09:45:35.000000000","message":"Done","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":970,"context_line":""},{"line_number":971,"context_line":"        return model_update"},{"line_number":972,"context_line":""},{"line_number":973,"context_line":"    def delete_consistencygroup(self, context, group):"},{"line_number":974,"context_line":"        opts \u003d self._get_cggroup_type(group)"},{"line_number":975,"context_line":"        if opts.get(\u0027hypermetro\u0027):"},{"line_number":976,"context_line":"            volumes \u003d self.db.volume_get_all_by_group(context, group[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_7247ce4b","line":973,"range":{"start_line":973,"start_character":52,"end_line":973,"end_character":54},"in_reply_to":"1a7b0d38_800eb132","updated":"2015-12-24 09:45:35.000000000","message":"Done","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"32be76f6a50ff0c8fce4b99b599dc3bd839b977f","unresolved":false,"context_lines":[{"line_number":973,"context_line":"    def delete_consistencygroup(self, context, group):"},{"line_number":974,"context_line":"        opts \u003d self._get_cggroup_type(group)"},{"line_number":975,"context_line":"        if opts.get(\u0027hypermetro\u0027):"},{"line_number":976,"context_line":"            volumes \u003d self.db.volume_get_all_by_group(context, group[\u0027id\u0027])"},{"line_number":977,"context_line":"            metro \u003d hypermetro.HuaweiHyperMetro(self.client,"},{"line_number":978,"context_line":"                                                self.rmt_client,"},{"line_number":979,"context_line":"                                                self.configuration,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_4a2308be","line":976,"range":{"start_line":976,"start_character":12,"end_line":976,"end_character":75},"updated":"2015-12-23 17:18:45.000000000","message":"You should not be accessing the database directly from the driver. voumes is passed into delete_consistency group, use those instead.","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"aded0e00699554dd43afc38328f363dd8c947c25","unresolved":false,"context_lines":[{"line_number":973,"context_line":"    def delete_consistencygroup(self, context, group):"},{"line_number":974,"context_line":"        opts \u003d self._get_cggroup_type(group)"},{"line_number":975,"context_line":"        if opts.get(\u0027hypermetro\u0027):"},{"line_number":976,"context_line":"            volumes \u003d self.db.volume_get_all_by_group(context, group[\u0027id\u0027])"},{"line_number":977,"context_line":"            metro \u003d hypermetro.HuaweiHyperMetro(self.client,"},{"line_number":978,"context_line":"                                                self.rmt_client,"},{"line_number":979,"context_line":"                                                self.configuration,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_e01d3567","line":976,"range":{"start_line":976,"start_character":12,"end_line":976,"end_character":75},"in_reply_to":"1a7b0d38_4a2308be","updated":"2015-12-23 17:48:50.000000000","message":"+1","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":973,"context_line":"    def delete_consistencygroup(self, context, group):"},{"line_number":974,"context_line":"        opts \u003d self._get_cggroup_type(group)"},{"line_number":975,"context_line":"        if opts.get(\u0027hypermetro\u0027):"},{"line_number":976,"context_line":"            volumes \u003d self.db.volume_get_all_by_group(context, group[\u0027id\u0027])"},{"line_number":977,"context_line":"            metro \u003d hypermetro.HuaweiHyperMetro(self.client,"},{"line_number":978,"context_line":"                                                self.rmt_client,"},{"line_number":979,"context_line":"                                                self.configuration,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_12752a97","line":976,"range":{"start_line":976,"start_character":12,"end_line":976,"end_character":75},"in_reply_to":"1a7b0d38_4a2308be","updated":"2015-12-24 09:45:35.000000000","message":"Done","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":973,"context_line":"    def delete_consistencygroup(self, context, group):"},{"line_number":974,"context_line":"        opts \u003d self._get_cggroup_type(group)"},{"line_number":975,"context_line":"        if opts.get(\u0027hypermetro\u0027):"},{"line_number":976,"context_line":"            volumes \u003d self.db.volume_get_all_by_group(context, group[\u0027id\u0027])"},{"line_number":977,"context_line":"            metro \u003d hypermetro.HuaweiHyperMetro(self.client,"},{"line_number":978,"context_line":"                                                self.rmt_client,"},{"line_number":979,"context_line":"                                                self.configuration,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_d26ec2c8","line":976,"range":{"start_line":976,"start_character":12,"end_line":976,"end_character":75},"in_reply_to":"1a7b0d38_e01d3567","updated":"2015-12-24 09:45:35.000000000","message":"Done","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"aded0e00699554dd43afc38328f363dd8c947c25","unresolved":false,"context_lines":[{"line_number":980,"context_line":"                                                self.db)"},{"line_number":981,"context_line":"            return metro.delete_consistencygroup(context, group, volumes)"},{"line_number":982,"context_line":"        else:"},{"line_number":983,"context_line":"            msg \u003d _(\"The cggroup is not support the current volumetype.\")"},{"line_number":984,"context_line":"            LOG.error(msg)"},{"line_number":985,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":986,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_e03455df","line":983,"updated":"2015-12-23 17:48:50.000000000","message":"See my previous comment to reword this message.","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":980,"context_line":"                                                self.db)"},{"line_number":981,"context_line":"            return metro.delete_consistencygroup(context, group, volumes)"},{"line_number":982,"context_line":"        else:"},{"line_number":983,"context_line":"            msg \u003d _(\"The cggroup is not support the current volumetype.\")"},{"line_number":984,"context_line":"            LOG.error(msg)"},{"line_number":985,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":986,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_f2717ea9","line":983,"in_reply_to":"1a7b0d38_e03455df","updated":"2015-12-24 09:45:35.000000000","message":"Done","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"aded0e00699554dd43afc38328f363dd8c947c25","unresolved":false,"context_lines":[{"line_number":998,"context_line":"                                          add_volumes,"},{"line_number":999,"context_line":"                                          remove_volumes)"},{"line_number":1000,"context_line":"        else:"},{"line_number":1001,"context_line":"            msg \u003d _(\"The cggroup is not support the current volumetype.\")"},{"line_number":1002,"context_line":"            LOG.error(msg)"},{"line_number":1003,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1004,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_a04ded73","line":1001,"updated":"2015-12-23 17:48:50.000000000","message":"Same here.","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":998,"context_line":"                                          add_volumes,"},{"line_number":999,"context_line":"                                          remove_volumes)"},{"line_number":1000,"context_line":"        else:"},{"line_number":1001,"context_line":"            msg \u003d _(\"The cggroup is not support the current volumetype.\")"},{"line_number":1002,"context_line":"            LOG.error(msg)"},{"line_number":1003,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1004,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_92691ac1","line":1001,"in_reply_to":"1a7b0d38_a04ded73","updated":"2015-12-24 09:45:35.000000000","message":"Done","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":16793,"name":"Liucheng Jiang","email":"jiangliucheng@huawei.com","username":"Jiangliucheng"},"change_message_id":"005a0c43ba08d80605d8a83e9cdb3db193062221","unresolved":false,"context_lines":[{"line_number":1269,"context_line":"        \"\"\"Creates a consistencygroup.\"\"\""},{"line_number":1270,"context_line":"        model_update \u003d {\u0027status\u0027: \u0027available\u0027}"},{"line_number":1271,"context_line":"        opts \u003d self._get_cggroup_type(group)"},{"line_number":1272,"context_line":"        if opts.get(\u0027hypermetro\u0027):"},{"line_number":1273,"context_line":"            metro \u003d hypermetro.HuaweiHyperMetro(self.client,"},{"line_number":1274,"context_line":"                                                self.rmt_client,"},{"line_number":1275,"context_line":"                                                self.configuration,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a5de9d1_ac74159c","line":1272,"range":{"start_line":1272,"start_character":11,"end_line":1272,"end_character":33},"updated":"2016-01-28 07:22:17.000000000","message":"Please use\nopts.get(\u0027hypermetro\u0027) \u003d\u003d \u0027true\u0027","commit_id":"89fae1fd5c84a0078c31b1245248cfcd903133f9"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"2f72e945dfadc2bfd7f040a27e2e31d581bb0469","unresolved":false,"context_lines":[{"line_number":1269,"context_line":"        \"\"\"Creates a consistencygroup.\"\"\""},{"line_number":1270,"context_line":"        model_update \u003d {\u0027status\u0027: \u0027available\u0027}"},{"line_number":1271,"context_line":"        opts \u003d self._get_cggroup_type(group)"},{"line_number":1272,"context_line":"        if opts.get(\u0027hypermetro\u0027):"},{"line_number":1273,"context_line":"            metro \u003d hypermetro.HuaweiHyperMetro(self.client,"},{"line_number":1274,"context_line":"                                                self.rmt_client,"},{"line_number":1275,"context_line":"                                                self.configuration,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a5de9d1_9fd05a55","line":1272,"range":{"start_line":1272,"start_character":11,"end_line":1272,"end_character":33},"in_reply_to":"7a5de9d1_ac74159c","updated":"2016-01-28 09:18:04.000000000","message":"Done","commit_id":"89fae1fd5c84a0078c31b1245248cfcd903133f9"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4c33fa5b4c34f824afe89247f09cf742f4639a14","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        opts \u003d self._get_volume_params_from_specs(specs)"},{"line_number":134,"context_line":"        return opts"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def _get_cggroup_type(self, group):"},{"line_number":137,"context_line":"        specs \u003d {}"},{"line_number":138,"context_line":"        type_id \u003d group[\u0027volume_type_id\u0027].split(\",\")"},{"line_number":139,"context_line":"        if type_id[0]:"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_b6d776be","line":136,"range":{"start_line":136,"start_character":8,"end_line":136,"end_character":25},"updated":"2016-02-04 02:11:00.000000000","message":"cggroup -\u003e cg or consistencygroup, but not cggroup","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        opts \u003d self._get_volume_params_from_specs(specs)"},{"line_number":134,"context_line":"        return opts"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def _get_cggroup_type(self, group):"},{"line_number":137,"context_line":"        specs \u003d {}"},{"line_number":138,"context_line":"        type_id \u003d group[\u0027volume_type_id\u0027].split(\",\")"},{"line_number":139,"context_line":"        if type_id[0]:"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_b84405b7","line":136,"range":{"start_line":136,"start_character":8,"end_line":136,"end_character":25},"in_reply_to":"5a5ae5dd_b6d776be","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"    def create_consistencygroup(self, context, group):"},{"line_number":1269,"context_line":"        \"\"\"Creates a consistencygroup.\"\"\""},{"line_number":1270,"context_line":"        model_update \u003d {\u0027status\u0027: \u0027available\u0027}"},{"line_number":1271,"context_line":"        opts \u003d self._get_cggroup_type(group)"},{"line_number":1272,"context_line":"        if opts.get(\u0027hypermetro\u0027) \u003d\u003d \u0027true\u0027:"},{"line_number":1273,"context_line":"            metro \u003d hypermetro.HuaweiHyperMetro(self.client,"},{"line_number":1274,"context_line":"                                                self.rmt_client,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_81a9d27d","line":1271,"range":{"start_line":1271,"start_character":25,"end_line":1271,"end_character":32},"updated":"2016-02-04 03:01:02.000000000","message":"same","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"    def create_consistencygroup(self, context, group):"},{"line_number":1269,"context_line":"        \"\"\"Creates a consistencygroup.\"\"\""},{"line_number":1270,"context_line":"        model_update \u003d {\u0027status\u0027: \u0027available\u0027}"},{"line_number":1271,"context_line":"        opts \u003d self._get_cggroup_type(group)"},{"line_number":1272,"context_line":"        if opts.get(\u0027hypermetro\u0027) \u003d\u003d \u0027true\u0027:"},{"line_number":1273,"context_line":"            metro \u003d hypermetro.HuaweiHyperMetro(self.client,"},{"line_number":1274,"context_line":"                                                self.rmt_client,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_5814f19e","line":1271,"range":{"start_line":1271,"start_character":25,"end_line":1271,"end_character":32},"in_reply_to":"5a5ae5dd_81a9d27d","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":1276,"context_line":"                                                self.db)"},{"line_number":1277,"context_line":"            metro.create_consistencygroup(group)"},{"line_number":1278,"context_line":"        else:"},{"line_number":1279,"context_line":"            err_msg \u003d (_(\u0027The cggroup: %(group_id)s \u0027"},{"line_number":1280,"context_line":"                         \u0027does not support the current\u0027"},{"line_number":1281,"context_line":"                         \u0027volumetype: %(volume_type)s.\u0027)"},{"line_number":1282,"context_line":"                       % {\u0027group_id\u0027: group[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_c1782a2e","line":1279,"range":{"start_line":1279,"start_character":30,"end_line":1279,"end_character":37},"updated":"2016-02-04 03:01:02.000000000","message":"same","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":1276,"context_line":"                                                self.db)"},{"line_number":1277,"context_line":"            metro.create_consistencygroup(group)"},{"line_number":1278,"context_line":"        else:"},{"line_number":1279,"context_line":"            err_msg \u003d (_(\u0027The cggroup: %(group_id)s \u0027"},{"line_number":1280,"context_line":"                         \u0027does not support the current\u0027"},{"line_number":1281,"context_line":"                         \u0027volumetype: %(volume_type)s.\u0027)"},{"line_number":1282,"context_line":"                       % {\u0027group_id\u0027: group[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_9bc26333","line":1279,"range":{"start_line":1279,"start_character":30,"end_line":1279,"end_character":37},"in_reply_to":"5a5ae5dd_c1782a2e","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":1277,"context_line":"            metro.create_consistencygroup(group)"},{"line_number":1278,"context_line":"        else:"},{"line_number":1279,"context_line":"            err_msg \u003d (_(\u0027The cggroup: %(group_id)s \u0027"},{"line_number":1280,"context_line":"                         \u0027does not support the current\u0027"},{"line_number":1281,"context_line":"                         \u0027volumetype: %(volume_type)s.\u0027)"},{"line_number":1282,"context_line":"                       % {\u0027group_id\u0027: group[\u0027id\u0027],"},{"line_number":1283,"context_line":"                          \u0027volume_type\u0027: opts},)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_a1a40ea6","line":1280,"range":{"start_line":1280,"start_character":47,"end_line":1280,"end_character":54},"updated":"2016-02-04 03:01:02.000000000","message":"missing a blank space EOL.","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":1287,"context_line":"        return model_update"},{"line_number":1288,"context_line":""},{"line_number":1289,"context_line":"    def delete_consistencygroup(self, context, group, volumes):"},{"line_number":1290,"context_line":"        opts \u003d self._get_cggroup_type(group)"},{"line_number":1291,"context_line":"        if opts.get(\u0027hypermetro\u0027):"},{"line_number":1292,"context_line":"            metro \u003d hypermetro.HuaweiHyperMetro(self.client,"},{"line_number":1293,"context_line":"                                                self.rmt_client,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_e1b0c6df","line":1290,"range":{"start_line":1290,"start_character":25,"end_line":1290,"end_character":32},"updated":"2016-02-04 03:01:02.000000000","message":"same","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":1287,"context_line":"        return model_update"},{"line_number":1288,"context_line":""},{"line_number":1289,"context_line":"    def delete_consistencygroup(self, context, group, volumes):"},{"line_number":1290,"context_line":"        opts \u003d self._get_cggroup_type(group)"},{"line_number":1291,"context_line":"        if opts.get(\u0027hypermetro\u0027):"},{"line_number":1292,"context_line":"            metro \u003d hypermetro.HuaweiHyperMetro(self.client,"},{"line_number":1293,"context_line":"                                                self.rmt_client,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_380fb589","line":1290,"range":{"start_line":1290,"start_character":25,"end_line":1290,"end_character":32},"in_reply_to":"5a5ae5dd_e1b0c6df","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":1295,"context_line":"                                                self.db)"},{"line_number":1296,"context_line":"            return metro.delete_consistencygroup(context, group, volumes)"},{"line_number":1297,"context_line":"        else:"},{"line_number":1298,"context_line":"            err_msg \u003d (_(\u0027The cggroup: %(group_id)s \u0027"},{"line_number":1299,"context_line":"                         \u0027does not support the current\u0027"},{"line_number":1300,"context_line":"                         \u0027volumetype: %(volume_type)s.\u0027)"},{"line_number":1301,"context_line":"                       % {\u0027group_id\u0027: group[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_01b402cf","line":1298,"range":{"start_line":1298,"start_character":30,"end_line":1298,"end_character":37},"updated":"2016-02-04 03:01:02.000000000","message":"same","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":1296,"context_line":"            return metro.delete_consistencygroup(context, group, volumes)"},{"line_number":1297,"context_line":"        else:"},{"line_number":1298,"context_line":"            err_msg \u003d (_(\u0027The cggroup: %(group_id)s \u0027"},{"line_number":1299,"context_line":"                         \u0027does not support the current\u0027"},{"line_number":1300,"context_line":"                         \u0027volumetype: %(volume_type)s.\u0027)"},{"line_number":1301,"context_line":"                       % {\u0027group_id\u0027: group[\u0027id\u0027],"},{"line_number":1302,"context_line":"                          \u0027volume_type\u0027: opts},)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_61c5b63a","line":1299,"range":{"start_line":1299,"start_character":47,"end_line":1299,"end_character":54},"updated":"2016-02-04 03:01:02.000000000","message":"missing a blank space EOL.","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":1317,"context_line":"                                          add_volumes,"},{"line_number":1318,"context_line":"                                          remove_volumes)"},{"line_number":1319,"context_line":"        else:"},{"line_number":1320,"context_line":"            err_msg \u003d (_(\u0027The cggroup: %(group_id)s \u0027"},{"line_number":1321,"context_line":"                         \u0027does not support the current\u0027"},{"line_number":1322,"context_line":"                         \u0027volumetype: %(volume_type)s.\u0027)"},{"line_number":1323,"context_line":"                       % {\u0027group_id\u0027: group[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_c1cd8a5e","line":1320,"range":{"start_line":1320,"start_character":30,"end_line":1320,"end_character":38},"updated":"2016-02-04 03:01:02.000000000","message":"same","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":1317,"context_line":"                                          add_volumes,"},{"line_number":1318,"context_line":"                                          remove_volumes)"},{"line_number":1319,"context_line":"        else:"},{"line_number":1320,"context_line":"            err_msg \u003d (_(\u0027The cggroup: %(group_id)s \u0027"},{"line_number":1321,"context_line":"                         \u0027does not support the current\u0027"},{"line_number":1322,"context_line":"                         \u0027volumetype: %(volume_type)s.\u0027)"},{"line_number":1323,"context_line":"                       % {\u0027group_id\u0027: group[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_09af09e3","line":1320,"range":{"start_line":1320,"start_character":30,"end_line":1320,"end_character":38},"in_reply_to":"5a5ae5dd_c1cd8a5e","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":1318,"context_line":"                                          remove_volumes)"},{"line_number":1319,"context_line":"        else:"},{"line_number":1320,"context_line":"            err_msg \u003d (_(\u0027The cggroup: %(group_id)s \u0027"},{"line_number":1321,"context_line":"                         \u0027does not support the current\u0027"},{"line_number":1322,"context_line":"                         \u0027volumetype: %(volume_type)s.\u0027)"},{"line_number":1323,"context_line":"                       % {\u0027group_id\u0027: group[\u0027id\u0027],"},{"line_number":1324,"context_line":"                          \u0027volume_type\u0027: opts},)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_21057e79","line":1321,"range":{"start_line":1321,"start_character":47,"end_line":1321,"end_character":54},"updated":"2016-02-04 03:01:02.000000000","message":"same","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":1317,"context_line":"                                          add_volumes,"},{"line_number":1318,"context_line":"                                          remove_volumes)"},{"line_number":1319,"context_line":"        else:"},{"line_number":1320,"context_line":"            err_msg \u003d (_(\u0027The cggroup: %(group_id)s \u0027"},{"line_number":1321,"context_line":"                         \u0027does not support the current\u0027"},{"line_number":1322,"context_line":"                         \u0027volumetype: %(volume_type)s.\u0027)"},{"line_number":1323,"context_line":"                       % {\u0027group_id\u0027: group[\u0027id\u0027],"},{"line_number":1324,"context_line":"                          \u0027volume_type\u0027: opts},)"},{"line_number":1325,"context_line":"            LOG.error(err_msg)"},{"line_number":1326,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":1327,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_811c72c2","line":1324,"range":{"start_line":1320,"start_character":12,"end_line":1324,"end_character":48},"updated":"2016-02-04 03:01:02.000000000","message":"It\u0027s better to create a new function to print the err_msg. All the three are the same.","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16793,"name":"Liucheng Jiang","email":"jiangliucheng@huawei.com","username":"Jiangliucheng"},"change_message_id":"4bd1265995f6355a404de2d74ec49e4de6da0b70","unresolved":false,"context_lines":[{"line_number":1639,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":1640,"context_line":"        LOG.info(_LI(\"initialize_connection, metadata is: %s.\"), metadata)"},{"line_number":1641,"context_line":"        if \u0027hypermetro_id\u0027 in metadata:"},{"line_number":1642,"context_line":"            hyperm \u003d hypermetro.HuaweiHyperMetro(self.client,"},{"line_number":1643,"context_line":"                                                 self.configuration)"},{"line_number":1644,"context_line":"            rmt_fc_info \u003d hyperm.connect_volume_fc(volume, connector)"},{"line_number":1645,"context_line":""},{"line_number":1646,"context_line":"            rmt_tgt_wwn \u003d rmt_fc_info[\u0027data\u0027][\u0027target_wwn\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_bf39d9f3","line":1643,"range":{"start_line":1642,"start_character":32,"end_line":1643,"end_character":68},"updated":"2016-02-02 03:24:44.000000000","message":"You need two more parameters.","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":1639,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":1640,"context_line":"        LOG.info(_LI(\"initialize_connection, metadata is: %s.\"), metadata)"},{"line_number":1641,"context_line":"        if \u0027hypermetro_id\u0027 in metadata:"},{"line_number":1642,"context_line":"            hyperm \u003d hypermetro.HuaweiHyperMetro(self.client,"},{"line_number":1643,"context_line":"                                                 self.configuration)"},{"line_number":1644,"context_line":"            rmt_fc_info \u003d hyperm.connect_volume_fc(volume, connector)"},{"line_number":1645,"context_line":""},{"line_number":1646,"context_line":"            rmt_tgt_wwn \u003d rmt_fc_info[\u0027data\u0027][\u0027target_wwn\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_69df9d0d","line":1643,"range":{"start_line":1642,"start_character":32,"end_line":1643,"end_character":68},"in_reply_to":"7a5de9d1_bf39d9f3","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6015cc1026df2c759c95b9b30b202980cab7999a","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            self.metro_flag \u003d True"},{"line_number":134,"context_line":"        else:"},{"line_number":135,"context_line":"            self.metro_flag \u003d False"},{"line_number":136,"context_line":"            LOG.warning(_LW(\"Not config remote device in cinder.conf\"))"},{"line_number":137,"context_line":"        # init replication manager"},{"line_number":138,"context_line":"        if replica_client_conf:"},{"line_number":139,"context_line":"            self.replica_client \u003d rest_client.RestClient(self.configuration,"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_033c4b92","line":136,"updated":"2016-06-06 03:05:55.000000000","message":"Remote device is not configured in cinder.conf.\n\nDoes this metro config control just replication or does it also control CG snapshot?  It\u0027s not clear to me how a remote device affects CG snapshot.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"e8bcf3718be62df114f117a7561790203f1e64dc","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            self.metro_flag \u003d True"},{"line_number":134,"context_line":"        else:"},{"line_number":135,"context_line":"            self.metro_flag \u003d False"},{"line_number":136,"context_line":"            LOG.warning(_LW(\"Not config remote device in cinder.conf\"))"},{"line_number":137,"context_line":"        # init replication manager"},{"line_number":138,"context_line":"        if replica_client_conf:"},{"line_number":139,"context_line":"            self.replica_client \u003d rest_client.RestClient(self.configuration,"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_2872fee5","line":136,"in_reply_to":"7aa08908_033c4b92","updated":"2016-06-06 07:40:27.000000000","message":"Remote device is configured in cinder.conf,the feature is like remote replication, CG snapshot is used for general consistency group except hypermetro CG.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6015cc1026df2c759c95b9b30b202980cab7999a","unresolved":false,"context_lines":[{"line_number":1524,"context_line":"        \"\"\"Creates a consistencygroup.\"\"\""},{"line_number":1525,"context_line":"        model_update \u003d {\u0027status\u0027: \u0027available\u0027}"},{"line_number":1526,"context_line":"        opts \u003d self._get_consistencygroup_type(group)"},{"line_number":1527,"context_line":"        if (opts.get(\u0027hypermetro\u0027) \u003d\u003d \u0027true\u0027):"},{"line_number":1528,"context_line":"            metro \u003d hypermetro.HuaweiHyperMetro(self.client,"},{"line_number":1529,"context_line":"                                                self.rmt_client,"},{"line_number":1530,"context_line":"                                                self.configuration)"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_c369a38d","line":1527,"updated":"2016-06-06 03:05:55.000000000","message":"Are you sure you are looking for \u0027true\u0027 and not \u0027True\u0027?  Please use a constant for this as it is used in a few places.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"f3a74c6c7c5c6a1835fc4ea10593d083909f3731","unresolved":false,"context_lines":[{"line_number":1524,"context_line":"        \"\"\"Creates a consistencygroup.\"\"\""},{"line_number":1525,"context_line":"        model_update \u003d {\u0027status\u0027: \u0027available\u0027}"},{"line_number":1526,"context_line":"        opts \u003d self._get_consistencygroup_type(group)"},{"line_number":1527,"context_line":"        if (opts.get(\u0027hypermetro\u0027) \u003d\u003d \u0027true\u0027):"},{"line_number":1528,"context_line":"            metro \u003d hypermetro.HuaweiHyperMetro(self.client,"},{"line_number":1529,"context_line":"                                                self.rmt_client,"},{"line_number":1530,"context_line":"                                                self.configuration)"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_c6e2519f","line":1527,"in_reply_to":"7aa08908_c369a38d","updated":"2016-06-06 07:21:52.000000000","message":"We configured is \u0027true\u0027.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6015cc1026df2c759c95b9b30b202980cab7999a","unresolved":false,"context_lines":[{"line_number":1533,"context_line":"        else:"},{"line_number":1534,"context_line":"            # Array doesn\u0027t support general consistency group,"},{"line_number":1535,"context_line":"            # so we just do nothing."},{"line_number":1536,"context_line":"            return model_update"},{"line_number":1537,"context_line":""},{"line_number":1538,"context_line":"    def delete_consistencygroup(self, context, group, volumes):"},{"line_number":1539,"context_line":"        opts \u003d self._get_consistencygroup_type(group)"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_232ce749","line":1536,"updated":"2016-06-06 03:05:55.000000000","message":"In that case, you should throw an exception instead of returning {\u0027status\u0027: \u0027available\u0027}.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"f3a74c6c7c5c6a1835fc4ea10593d083909f3731","unresolved":false,"context_lines":[{"line_number":1533,"context_line":"        else:"},{"line_number":1534,"context_line":"            # Array doesn\u0027t support general consistency group,"},{"line_number":1535,"context_line":"            # so we just do nothing."},{"line_number":1536,"context_line":"            return model_update"},{"line_number":1537,"context_line":""},{"line_number":1538,"context_line":"    def delete_consistencygroup(self, context, group, volumes):"},{"line_number":1539,"context_line":"        opts \u003d self._get_consistencygroup_type(group)"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_c648915e","line":1536,"in_reply_to":"7aa08908_232ce749","updated":"2016-06-06 07:21:52.000000000","message":"Except hypermetro consistgroup, we also want to support general consistgroup.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6015cc1026df2c759c95b9b30b202980cab7999a","unresolved":false,"context_lines":[{"line_number":1545,"context_line":"        else:"},{"line_number":1546,"context_line":"            model_update \u003d {}"},{"line_number":1547,"context_line":"            model_update.update({\u0027status\u0027: group[\u0027status\u0027]})"},{"line_number":1548,"context_line":"            return model_update, volumes"},{"line_number":1549,"context_line":""},{"line_number":1550,"context_line":"    def update_consistencygroup(self, context, group,"},{"line_number":1551,"context_line":"                                add_volumes,"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_432bf330","line":1548,"updated":"2016-06-06 03:05:55.000000000","message":"Same.  Here you should throw an exception as CG is not supported.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"f3a74c6c7c5c6a1835fc4ea10593d083909f3731","unresolved":false,"context_lines":[{"line_number":1545,"context_line":"        else:"},{"line_number":1546,"context_line":"            model_update \u003d {}"},{"line_number":1547,"context_line":"            model_update.update({\u0027status\u0027: group[\u0027status\u0027]})"},{"line_number":1548,"context_line":"            return model_update, volumes"},{"line_number":1549,"context_line":""},{"line_number":1550,"context_line":"    def update_consistencygroup(self, context, group,"},{"line_number":1551,"context_line":"                                add_volumes,"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_0679f993","line":1548,"in_reply_to":"7aa08908_432bf330","updated":"2016-06-06 07:21:52.000000000","message":"Except hypermetro consistgroup, we also want to support general consistgroup.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6015cc1026df2c759c95b9b30b202980cab7999a","unresolved":false,"context_lines":[{"line_number":1563,"context_line":"        else:"},{"line_number":1564,"context_line":"            # Array doesn\u0027t support general consistency group,"},{"line_number":1565,"context_line":"            # so we just do nothing."},{"line_number":1566,"context_line":"            return model_update, None, None"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"    def create_cgsnapshot(self, context, cgsnapshot, snapshots):"},{"line_number":1569,"context_line":"        \"\"\"Create cgsnapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_a320d74a","line":1566,"updated":"2016-06-06 03:05:55.000000000","message":"Same.  Throw exception.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"f3a74c6c7c5c6a1835fc4ea10593d083909f3731","unresolved":false,"context_lines":[{"line_number":1563,"context_line":"        else:"},{"line_number":1564,"context_line":"            # Array doesn\u0027t support general consistency group,"},{"line_number":1565,"context_line":"            # so we just do nothing."},{"line_number":1566,"context_line":"            return model_update, None, None"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"    def create_cgsnapshot(self, context, cgsnapshot, snapshots):"},{"line_number":1569,"context_line":"        \"\"\"Create cgsnapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_666efdca","line":1566,"in_reply_to":"7aa08908_a320d74a","updated":"2016-06-06 07:21:52.000000000","message":"Except hypermetro consistgroup, we also want to support general consistgroup.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6015cc1026df2c759c95b9b30b202980cab7999a","unresolved":false,"context_lines":[{"line_number":1568,"context_line":"    def create_cgsnapshot(self, context, cgsnapshot, snapshots):"},{"line_number":1569,"context_line":"        \"\"\"Create cgsnapshot.\"\"\""},{"line_number":1570,"context_line":"        LOG.info(_LI(\u0027Create cgsnapshot for consistency group\u0027"},{"line_number":1571,"context_line":"                     \u0027: %(group_name)s\u0027),"},{"line_number":1572,"context_line":"                 {\u0027group_name\u0027: cgsnapshot[\u0027consistencygroup_id\u0027]})"},{"line_number":1573,"context_line":""},{"line_number":1574,"context_line":"        model_update \u003d {}"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_6320af9c","line":1571,"updated":"2016-06-06 03:05:55.000000000","message":"s/group_name/group_id","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"e8bcf3718be62df114f117a7561790203f1e64dc","unresolved":false,"context_lines":[{"line_number":1568,"context_line":"    def create_cgsnapshot(self, context, cgsnapshot, snapshots):"},{"line_number":1569,"context_line":"        \"\"\"Create cgsnapshot.\"\"\""},{"line_number":1570,"context_line":"        LOG.info(_LI(\u0027Create cgsnapshot for consistency group\u0027"},{"line_number":1571,"context_line":"                     \u0027: %(group_name)s\u0027),"},{"line_number":1572,"context_line":"                 {\u0027group_name\u0027: cgsnapshot[\u0027consistencygroup_id\u0027]})"},{"line_number":1573,"context_line":""},{"line_number":1574,"context_line":"        model_update \u003d {}"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_686fe692","line":1571,"in_reply_to":"7aa08908_6320af9c","updated":"2016-06-06 07:40:27.000000000","message":"Done","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6015cc1026df2c759c95b9b30b202980cab7999a","unresolved":false,"context_lines":[{"line_number":1575,"context_line":"        snapshots_model_update \u003d []"},{"line_number":1576,"context_line":"        added_snapshots_info \u003d []"},{"line_number":1577,"context_line":""},{"line_number":1578,"context_line":"        try:"},{"line_number":1579,"context_line":"            for snapshot in snapshots:"},{"line_number":1580,"context_line":"                volume \u003d snapshot.get(\u0027volume\u0027)"},{"line_number":1581,"context_line":"                if not volume:"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_e3493fd2","line":1578,"updated":"2016-06-06 03:05:55.000000000","message":"Should check if (opts.get(\u0027hypermetro\u0027) \u003d\u003d \u0027true\u0027) like in other functions.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6015cc1026df2c759c95b9b30b202980cab7999a","unresolved":false,"context_lines":[{"line_number":1588,"context_line":""},{"line_number":1589,"context_line":"                lun_id \u003d self.client.get_lun_id(volume, volume_name)"},{"line_number":1590,"context_line":"                snapshot_name \u003d huawei_utils.encode_name(snapshot[\u0027id\u0027])"},{"line_number":1591,"context_line":"                snapshot_description \u003d snapshot[\u0027id\u0027]"},{"line_number":1592,"context_line":"                info \u003d self.client.create_snapshot(lun_id,"},{"line_number":1593,"context_line":"                                                   snapshot_name,"},{"line_number":1594,"context_line":"                                                   snapshot_description)"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_a341f73b","line":1591,"updated":"2016-06-06 03:05:55.000000000","message":"Why do you store snapshot id as the description?","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"f3a74c6c7c5c6a1835fc4ea10593d083909f3731","unresolved":false,"context_lines":[{"line_number":1588,"context_line":""},{"line_number":1589,"context_line":"                lun_id \u003d self.client.get_lun_id(volume, volume_name)"},{"line_number":1590,"context_line":"                snapshot_name \u003d huawei_utils.encode_name(snapshot[\u0027id\u0027])"},{"line_number":1591,"context_line":"                snapshot_description \u003d snapshot[\u0027id\u0027]"},{"line_number":1592,"context_line":"                info \u003d self.client.create_snapshot(lun_id,"},{"line_number":1593,"context_line":"                                                   snapshot_name,"},{"line_number":1594,"context_line":"                                                   snapshot_description)"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_869329a3","line":1591,"in_reply_to":"7aa08908_a341f73b","updated":"2016-06-06 07:21:52.000000000","message":"Associated openstack volume or snapshot with huawei backends.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6015cc1026df2c759c95b9b30b202980cab7999a","unresolved":false,"context_lines":[{"line_number":1589,"context_line":"                lun_id \u003d self.client.get_lun_id(volume, volume_name)"},{"line_number":1590,"context_line":"                snapshot_name \u003d huawei_utils.encode_name(snapshot[\u0027id\u0027])"},{"line_number":1591,"context_line":"                snapshot_description \u003d snapshot[\u0027id\u0027]"},{"line_number":1592,"context_line":"                info \u003d self.client.create_snapshot(lun_id,"},{"line_number":1593,"context_line":"                                                   snapshot_name,"},{"line_number":1594,"context_line":"                                                   snapshot_description)"},{"line_number":1595,"context_line":"                snapshot_model_update \u003d {\u0027id\u0027: snapshot[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_11401856","line":1592,"updated":"2016-06-06 03:05:55.000000000","message":"So the snapshots are taken one by one.  How do you guarantee they are consistent?  Usually there is a backend API that creates all the snapshots together and make sure data is consistent across the snapshots in the group.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"f3a74c6c7c5c6a1835fc4ea10593d083909f3731","unresolved":false,"context_lines":[{"line_number":1589,"context_line":"                lun_id \u003d self.client.get_lun_id(volume, volume_name)"},{"line_number":1590,"context_line":"                snapshot_name \u003d huawei_utils.encode_name(snapshot[\u0027id\u0027])"},{"line_number":1591,"context_line":"                snapshot_description \u003d snapshot[\u0027id\u0027]"},{"line_number":1592,"context_line":"                info \u003d self.client.create_snapshot(lun_id,"},{"line_number":1593,"context_line":"                                                   snapshot_name,"},{"line_number":1594,"context_line":"                                                   snapshot_description)"},{"line_number":1595,"context_line":"                snapshot_model_update \u003d {\u0027id\u0027: snapshot[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_06d57942","line":1592,"in_reply_to":"7aa08908_11401856","updated":"2016-06-06 07:21:52.000000000","message":"We active snapshots in the same time.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6015cc1026df2c759c95b9b30b202980cab7999a","unresolved":false,"context_lines":[{"line_number":1606,"context_line":"            self.client.activate_snapshot(snapshot_ids)"},{"line_number":1607,"context_line":"        except Exception:"},{"line_number":1608,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1609,"context_line":"                LOG.error(_LE(\"Active cgsnapshots failed. \""},{"line_number":1610,"context_line":"                              \"Cgsnapshot id: %s.\"), cgsnapshot[\u0027id\u0027])"},{"line_number":1611,"context_line":""},{"line_number":1612,"context_line":"        model_update[\u0027status\u0027] \u003d \u0027available\u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_11177852","line":1609,"updated":"2016-06-06 03:05:55.000000000","message":"s/Active/Activate","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"f3a74c6c7c5c6a1835fc4ea10593d083909f3731","unresolved":false,"context_lines":[{"line_number":1606,"context_line":"            self.client.activate_snapshot(snapshot_ids)"},{"line_number":1607,"context_line":"        except Exception:"},{"line_number":1608,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1609,"context_line":"                LOG.error(_LE(\"Active cgsnapshots failed. \""},{"line_number":1610,"context_line":"                              \"Cgsnapshot id: %s.\"), cgsnapshot[\u0027id\u0027])"},{"line_number":1611,"context_line":""},{"line_number":1612,"context_line":"        model_update[\u0027status\u0027] \u003d \u0027available\u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_a620e54a","line":1609,"in_reply_to":"7aa08908_11177852","updated":"2016-06-06 07:21:52.000000000","message":"There is more than one fuction affected ,temprorarily not modify.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6015cc1026df2c759c95b9b30b202980cab7999a","unresolved":false,"context_lines":[{"line_number":1617,"context_line":"        \"\"\"Delete consistency group snapshot.\"\"\""},{"line_number":1618,"context_line":"        LOG.info(_LI(\u0027Delete cgsnapshot %(snap_name)s for consistency group: \u0027"},{"line_number":1619,"context_line":"                     \u0027%(group_name)s\u0027),"},{"line_number":1620,"context_line":"                 {\u0027snap_name\u0027: cgsnapshot[\u0027id\u0027],"},{"line_number":1621,"context_line":"                  \u0027group_name\u0027: cgsnapshot[\u0027consistencygroup_id\u0027]})"},{"line_number":1622,"context_line":""},{"line_number":1623,"context_line":"        model_update \u003d {}"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_2374e79a","line":1620,"updated":"2016-06-06 03:05:55.000000000","message":"s/snap_name/snap_id","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"e8bcf3718be62df114f117a7561790203f1e64dc","unresolved":false,"context_lines":[{"line_number":1617,"context_line":"        \"\"\"Delete consistency group snapshot.\"\"\""},{"line_number":1618,"context_line":"        LOG.info(_LI(\u0027Delete cgsnapshot %(snap_name)s for consistency group: \u0027"},{"line_number":1619,"context_line":"                     \u0027%(group_name)s\u0027),"},{"line_number":1620,"context_line":"                 {\u0027snap_name\u0027: cgsnapshot[\u0027id\u0027],"},{"line_number":1621,"context_line":"                  \u0027group_name\u0027: cgsnapshot[\u0027consistencygroup_id\u0027]})"},{"line_number":1622,"context_line":""},{"line_number":1623,"context_line":"        model_update \u003d {}"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_c86c1a9f","line":1620,"in_reply_to":"7aa08908_2374e79a","updated":"2016-06-06 07:40:27.000000000","message":"Done","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6015cc1026df2c759c95b9b30b202980cab7999a","unresolved":false,"context_lines":[{"line_number":1618,"context_line":"        LOG.info(_LI(\u0027Delete cgsnapshot %(snap_name)s for consistency group: \u0027"},{"line_number":1619,"context_line":"                     \u0027%(group_name)s\u0027),"},{"line_number":1620,"context_line":"                 {\u0027snap_name\u0027: cgsnapshot[\u0027id\u0027],"},{"line_number":1621,"context_line":"                  \u0027group_name\u0027: cgsnapshot[\u0027consistencygroup_id\u0027]})"},{"line_number":1622,"context_line":""},{"line_number":1623,"context_line":"        model_update \u003d {}"},{"line_number":1624,"context_line":"        snapshots_model_update \u003d []"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_0379eb93","line":1621,"updated":"2016-06-06 03:05:55.000000000","message":"s/group_name/group_id","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"e8bcf3718be62df114f117a7561790203f1e64dc","unresolved":false,"context_lines":[{"line_number":1618,"context_line":"        LOG.info(_LI(\u0027Delete cgsnapshot %(snap_name)s for consistency group: \u0027"},{"line_number":1619,"context_line":"                     \u0027%(group_name)s\u0027),"},{"line_number":1620,"context_line":"                 {\u0027snap_name\u0027: cgsnapshot[\u0027id\u0027],"},{"line_number":1621,"context_line":"                  \u0027group_name\u0027: cgsnapshot[\u0027consistencygroup_id\u0027]})"},{"line_number":1622,"context_line":""},{"line_number":1623,"context_line":"        model_update \u003d {}"},{"line_number":1624,"context_line":"        snapshots_model_update \u003d []"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_a869ce8d","line":1621,"in_reply_to":"7aa08908_0379eb93","updated":"2016-06-06 07:40:27.000000000","message":"Done","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6015cc1026df2c759c95b9b30b202980cab7999a","unresolved":false,"context_lines":[{"line_number":1623,"context_line":"        model_update \u003d {}"},{"line_number":1624,"context_line":"        snapshots_model_update \u003d []"},{"line_number":1625,"context_line":"        model_update[\u0027status\u0027] \u003d cgsnapshot[\u0027status\u0027]"},{"line_number":1626,"context_line":""},{"line_number":1627,"context_line":"        for snapshot in snapshots:"},{"line_number":1628,"context_line":"            try:"},{"line_number":1629,"context_line":"                self.delete_snapshot(snapshot)"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_431133ac","line":1626,"updated":"2016-06-06 03:05:55.000000000","message":"Should check if (opts.get(\u0027hypermetro\u0027) \u003d\u003d \u0027true\u0027) as in other functions.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"dfea2aabf498626040a81f7f5aabd0132ac8fd8a","unresolved":false,"context_lines":[{"line_number":50,"context_line":"               default\u003dNone,"},{"line_number":51,"context_line":"               help\u003d\u0027The remote device hypermetro will use.\u0027),"},{"line_number":52,"context_line":"    cfg.StrOpt(\u0027metro_san_user\u0027,"},{"line_number":53,"context_line":"               default\u003dNone,"},{"line_number":54,"context_line":"               help\u003d\u0027The remote metro device san user.\u0027),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027metro_san_password\u0027,"},{"line_number":56,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_0f5ba52f","line":53,"range":{"start_line":53,"start_character":15,"end_line":53,"end_character":27},"updated":"2016-06-06 17:15:07.000000000","message":"Maybe you don\u0027t need to set default values to None, because they will be None anyway if they are not set on conf.","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a5d1278ac1a0e06480feea87c1e91a1a85f92375","unresolved":false,"context_lines":[{"line_number":50,"context_line":"               default\u003dNone,"},{"line_number":51,"context_line":"               help\u003d\u0027The remote device hypermetro will use.\u0027),"},{"line_number":52,"context_line":"    cfg.StrOpt(\u0027metro_san_user\u0027,"},{"line_number":53,"context_line":"               default\u003dNone,"},{"line_number":54,"context_line":"               help\u003d\u0027The remote metro device san user.\u0027),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027metro_san_password\u0027,"},{"line_number":56,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_7ebac80b","line":53,"range":{"start_line":53,"start_character":15,"end_line":53,"end_character":27},"in_reply_to":"7aa08908_0f5ba52f","updated":"2016-06-07 08:04:46.000000000","message":"temprorarily not modify","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"dfea2aabf498626040a81f7f5aabd0132ac8fd8a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"               help\u003d\u0027The remote metro device san user.\u0027),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027metro_san_password\u0027,"},{"line_number":56,"context_line":"               default\u003dNone,"},{"line_number":57,"context_line":"               help\u003d\u0027The remote metro device san password.\u0027),"},{"line_number":58,"context_line":"    cfg.StrOpt(\u0027metro_domain_name\u0027,"},{"line_number":59,"context_line":"               default\u003dNone,"},{"line_number":60,"context_line":"               help\u003d\u0027The remote metro device domain name.\u0027),"}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_5491d298","line":57,"updated":"2016-06-06 17:15:07.000000000","message":"Should set secret\u003dTrue for password field.","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a5d1278ac1a0e06480feea87c1e91a1a85f92375","unresolved":false,"context_lines":[{"line_number":54,"context_line":"               help\u003d\u0027The remote metro device san user.\u0027),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027metro_san_password\u0027,"},{"line_number":56,"context_line":"               default\u003dNone,"},{"line_number":57,"context_line":"               help\u003d\u0027The remote metro device san password.\u0027),"},{"line_number":58,"context_line":"    cfg.StrOpt(\u0027metro_domain_name\u0027,"},{"line_number":59,"context_line":"               default\u003dNone,"},{"line_number":60,"context_line":"               help\u003d\u0027The remote metro device domain name.\u0027),"}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_9ebfb4fa","line":57,"in_reply_to":"7aa08908_5491d298","updated":"2016-06-07 08:04:46.000000000","message":"temprorarily not modify","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"dfea2aabf498626040a81f7f5aabd0132ac8fd8a","unresolved":false,"context_lines":[{"line_number":1530,"context_line":"                                                self.configuration)"},{"line_number":1531,"context_line":"            metro.create_consistencygroup(group)"},{"line_number":1532,"context_line":"            return model_update"},{"line_number":1533,"context_line":"        else:"},{"line_number":1534,"context_line":"            # Array doesn\u0027t support general consistency group,"},{"line_number":1535,"context_line":"            # so we just do nothing."},{"line_number":1536,"context_line":"            return model_update"},{"line_number":1537,"context_line":""},{"line_number":1538,"context_line":"    def delete_consistencygroup(self, context, group, volumes):"},{"line_number":1539,"context_line":"        opts \u003d self._get_consistencygroup_type(group)"}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_754fa892","line":1536,"range":{"start_line":1533,"start_character":8,"end_line":1536,"end_character":31},"updated":"2016-06-06 17:15:07.000000000","message":"This else is not needed. You can just put the return outside the if as it will be executed anyway.","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a5d1278ac1a0e06480feea87c1e91a1a85f92375","unresolved":false,"context_lines":[{"line_number":1530,"context_line":"                                                self.configuration)"},{"line_number":1531,"context_line":"            metro.create_consistencygroup(group)"},{"line_number":1532,"context_line":"            return model_update"},{"line_number":1533,"context_line":"        else:"},{"line_number":1534,"context_line":"            # Array doesn\u0027t support general consistency group,"},{"line_number":1535,"context_line":"            # so we just do nothing."},{"line_number":1536,"context_line":"            return model_update"},{"line_number":1537,"context_line":""},{"line_number":1538,"context_line":"    def delete_consistencygroup(self, context, group, volumes):"},{"line_number":1539,"context_line":"        opts \u003d self._get_consistencygroup_type(group)"}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_3b5a1251","line":1536,"range":{"start_line":1533,"start_character":8,"end_line":1536,"end_character":31},"in_reply_to":"7aa08908_754fa892","updated":"2016-06-07 08:04:46.000000000","message":"Done","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"dfea2aabf498626040a81f7f5aabd0132ac8fd8a","unresolved":false,"context_lines":[{"line_number":1560,"context_line":"                                          add_volumes,"},{"line_number":1561,"context_line":"                                          remove_volumes)"},{"line_number":1562,"context_line":"            return model_update, None, None"},{"line_number":1563,"context_line":"        else:"},{"line_number":1564,"context_line":"            # Array doesn\u0027t support general consistency group,"},{"line_number":1565,"context_line":"            # so we just do nothing."},{"line_number":1566,"context_line":"            return model_update, None, None"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"    def create_cgsnapshot(self, context, cgsnapshot, snapshots):"},{"line_number":1569,"context_line":"        \"\"\"Create cgsnapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_55fd4c39","line":1566,"range":{"start_line":1563,"start_character":8,"end_line":1566,"end_character":43},"updated":"2016-06-06 17:15:07.000000000","message":"Same here.","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a5d1278ac1a0e06480feea87c1e91a1a85f92375","unresolved":false,"context_lines":[{"line_number":1560,"context_line":"                                          add_volumes,"},{"line_number":1561,"context_line":"                                          remove_volumes)"},{"line_number":1562,"context_line":"            return model_update, None, None"},{"line_number":1563,"context_line":"        else:"},{"line_number":1564,"context_line":"            # Array doesn\u0027t support general consistency group,"},{"line_number":1565,"context_line":"            # so we just do nothing."},{"line_number":1566,"context_line":"            return model_update, None, None"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"    def create_cgsnapshot(self, context, cgsnapshot, snapshots):"},{"line_number":1569,"context_line":"        \"\"\"Create cgsnapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_9b59865d","line":1566,"range":{"start_line":1563,"start_character":8,"end_line":1566,"end_character":43},"in_reply_to":"7aa08908_55fd4c39","updated":"2016-06-07 08:04:46.000000000","message":"Done","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"dfea2aabf498626040a81f7f5aabd0132ac8fd8a","unresolved":false,"context_lines":[{"line_number":1588,"context_line":""},{"line_number":1589,"context_line":"                lun_id \u003d self.client.get_lun_id(volume, volume_name)"},{"line_number":1590,"context_line":"                snapshot_name \u003d huawei_utils.encode_name(snapshot[\u0027id\u0027])"},{"line_number":1591,"context_line":"                snapshot_description \u003d snapshot[\u0027id\u0027]"},{"line_number":1592,"context_line":"                info \u003d self.client.create_snapshot(lun_id,"},{"line_number":1593,"context_line":"                                                   snapshot_name,"},{"line_number":1594,"context_line":"                                                   snapshot_description)"}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_8cecc6c8","line":1591,"range":{"start_line":1591,"start_character":16,"end_line":1591,"end_character":36},"updated":"2016-06-06 17:15:07.000000000","message":"Why are you using this variable if it is the same as the snapshot id?","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a5d1278ac1a0e06480feea87c1e91a1a85f92375","unresolved":false,"context_lines":[{"line_number":1588,"context_line":""},{"line_number":1589,"context_line":"                lun_id \u003d self.client.get_lun_id(volume, volume_name)"},{"line_number":1590,"context_line":"                snapshot_name \u003d huawei_utils.encode_name(snapshot[\u0027id\u0027])"},{"line_number":1591,"context_line":"                snapshot_description \u003d snapshot[\u0027id\u0027]"},{"line_number":1592,"context_line":"                info \u003d self.client.create_snapshot(lun_id,"},{"line_number":1593,"context_line":"                                                   snapshot_name,"},{"line_number":1594,"context_line":"                                                   snapshot_description)"}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_7b549a20","line":1591,"range":{"start_line":1591,"start_character":16,"end_line":1591,"end_character":36},"in_reply_to":"7aa08908_8cecc6c8","updated":"2016-06-07 08:04:46.000000000","message":"Done","commit_id":"7dd1a24c6779d525d8ac5d48e02318f2b29a7f2c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"06524b7296514ad3cf187d87a0fd397895f282d0","unresolved":false,"context_lines":[{"line_number":1544,"context_line":"            return metro.delete_consistencygroup(context, group, volumes)"},{"line_number":1545,"context_line":""},{"line_number":1546,"context_line":"        model_update \u003d {}"},{"line_number":1547,"context_line":"        model_update.update({\u0027status\u0027: group[\u0027status\u0027]})"},{"line_number":1548,"context_line":"        return model_update, volumes"},{"line_number":1549,"context_line":""},{"line_number":1550,"context_line":"    def update_consistencygroup(self, context, group,"}],"source_content_type":"text/x-python","patch_set":30,"id":"7aa08908_90b1cd49","line":1547,"updated":"2016-06-14 19:53:32.000000000","message":"Volumes in the group need to be deleted from the array.","commit_id":"4400586f6388c461d022c8714a7fb5058f8147b5"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"2c4a16f02968d2647c8b1c48c8f38acd5b8fb0f9","unresolved":false,"context_lines":[{"line_number":1544,"context_line":"            return metro.delete_consistencygroup(context, group, volumes)"},{"line_number":1545,"context_line":""},{"line_number":1546,"context_line":"        model_update \u003d {}"},{"line_number":1547,"context_line":"        model_update.update({\u0027status\u0027: group[\u0027status\u0027]})"},{"line_number":1548,"context_line":"        return model_update, volumes"},{"line_number":1549,"context_line":""},{"line_number":1550,"context_line":"    def update_consistencygroup(self, context, group,"}],"source_content_type":"text/x-python","patch_set":30,"id":"7aa08908_b22a037c","line":1547,"in_reply_to":"7aa08908_90b1cd49","updated":"2016-06-15 03:30:58.000000000","message":"We delete consistencygroup doesn\u0027t mean delete Volumes in the group(maybe we only want to delete consistgroup and also we want volume not deleted), we should remove volumes and then delete consistencygroup or use --force to delete consistencygroup.","commit_id":"4400586f6388c461d022c8714a7fb5058f8147b5"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"8a54fb84dfadc82f52266fc612071abf428e52ce","unresolved":false,"context_lines":[{"line_number":1544,"context_line":"            return metro.delete_consistencygroup(context, group, volumes)"},{"line_number":1545,"context_line":""},{"line_number":1546,"context_line":"        model_update \u003d {}"},{"line_number":1547,"context_line":"        model_update.update({\u0027status\u0027: group[\u0027status\u0027]})"},{"line_number":1548,"context_line":"        return model_update, volumes"},{"line_number":1549,"context_line":""},{"line_number":1550,"context_line":"    def update_consistencygroup(self, context, group,"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a9d85d2_e77c79ed","line":1547,"in_reply_to":"7aa08908_b22a037c","updated":"2016-06-21 09:14:04.000000000","message":"I made a mistake, we need to be deleted from the array. Please see patch 32.","commit_id":"4400586f6388c461d022c8714a7fb5058f8147b5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"06524b7296514ad3cf187d87a0fd397895f282d0","unresolved":false,"context_lines":[{"line_number":1574,"context_line":"        model_update \u003d {}"},{"line_number":1575,"context_line":"        snapshots_model_update \u003d []"},{"line_number":1576,"context_line":"        added_snapshots_info \u003d []"},{"line_number":1577,"context_line":""},{"line_number":1578,"context_line":"        try:"},{"line_number":1579,"context_line":"            for snapshot in snapshots:"},{"line_number":1580,"context_line":"                volume \u003d snapshot.get(\u0027volume\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"7aa08908_7048a12d","line":1577,"updated":"2016-06-14 19:53:32.000000000","message":"Why not check if opts.get(\u0027hypermetro\u0027) \u003d\u003d \u0027true\u0027 or not in this function?  What is the difference in cgsnapshot if it is managed by hypermetro or not?","commit_id":"4400586f6388c461d022c8714a7fb5058f8147b5"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"2c4a16f02968d2647c8b1c48c8f38acd5b8fb0f9","unresolved":false,"context_lines":[{"line_number":1574,"context_line":"        model_update \u003d {}"},{"line_number":1575,"context_line":"        snapshots_model_update \u003d []"},{"line_number":1576,"context_line":"        added_snapshots_info \u003d []"},{"line_number":1577,"context_line":""},{"line_number":1578,"context_line":"        try:"},{"line_number":1579,"context_line":"            for snapshot in snapshots:"},{"line_number":1580,"context_line":"                volume \u003d snapshot.get(\u0027volume\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"7aa08908_05f10f01","line":1577,"in_reply_to":"7aa08908_7048a12d","updated":"2016-06-15 03:30:58.000000000","message":"As long as it is CG can create snapshot consistency group，there  is no difference in cgsnapshot if it is managed by hypermetro or not.","commit_id":"4400586f6388c461d022c8714a7fb5058f8147b5"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"6dc3082d0969050b83e15ebd3ca0931b910b0067","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            self.metro_flag \u003d True"},{"line_number":134,"context_line":"        else:"},{"line_number":135,"context_line":"            self.metro_flag \u003d False"},{"line_number":136,"context_line":"            LOG.warning(_LW(\"Not config remote device in cinder.conf\"))"},{"line_number":137,"context_line":"        # init replication manager"},{"line_number":138,"context_line":"        if replica_client_conf:"},{"line_number":139,"context_line":"            self.replica_client \u003d rest_client.RestClient(self.configuration,"}],"source_content_type":"text/x-python","patch_set":35,"id":"3aaa91ec_68408e08","line":136,"updated":"2016-06-27 18:27:39.000000000","message":"Could you please add more user friendly message?","commit_id":"a8dee4e314d1fde873ab07cbf0aff480cea629a6"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"2bf5b4b7075e4a7d5983d7cb87697f543c5e9cab","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            self.metro_flag \u003d True"},{"line_number":134,"context_line":"        else:"},{"line_number":135,"context_line":"            self.metro_flag \u003d False"},{"line_number":136,"context_line":"            LOG.warning(_LW(\"Not config remote device in cinder.conf\"))"},{"line_number":137,"context_line":"        # init replication manager"},{"line_number":138,"context_line":"        if replica_client_conf:"},{"line_number":139,"context_line":"            self.replica_client \u003d rest_client.RestClient(self.configuration,"}],"source_content_type":"text/x-python","patch_set":35,"id":"3aaa91ec_384b505b","line":136,"in_reply_to":"3aaa91ec_68408e08","updated":"2016-06-28 10:51:45.000000000","message":"Done","commit_id":"a8dee4e314d1fde873ab07cbf0aff480cea629a6"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"50632dced64db7774a225e7776bc13946fd7f86d","unresolved":false,"context_lines":[{"line_number":1531,"context_line":"            metro.create_consistencygroup(group)"},{"line_number":1532,"context_line":"            return model_update"},{"line_number":1533,"context_line":""},{"line_number":1534,"context_line":"        # Array doesn\u0027t support general consistency group,"},{"line_number":1535,"context_line":"        # so we just do nothing."},{"line_number":1536,"context_line":"        return model_update"},{"line_number":1537,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"3aaa91ec_af822efe","line":1534,"updated":"2016-06-29 01:45:33.000000000","message":"What does \"general\" consistency group mean?  It seems that it should be \"Array doesn\u0027t support Hypermetro consistency group\" instead.  Basically Cinder will still create a consistency group in DB for you.  It is just that you are not making any calls to the array.  Can you reword this?","commit_id":"657a89081409c99e2bb9080ac7ba729fcc68c140"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"2ef9613b6145b8fac755e7fad88f0ba734a98636","unresolved":false,"context_lines":[{"line_number":1531,"context_line":"            metro.create_consistencygroup(group)"},{"line_number":1532,"context_line":"            return model_update"},{"line_number":1533,"context_line":""},{"line_number":1534,"context_line":"        # Array doesn\u0027t support general consistency group,"},{"line_number":1535,"context_line":"        # so we just do nothing."},{"line_number":1536,"context_line":"        return model_update"},{"line_number":1537,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"3aaa91ec_2fabde1e","line":1534,"in_reply_to":"3aaa91ec_af822efe","updated":"2016-06-29 01:57:37.000000000","message":"Our array support Hypermetro consistency group, but don\u0027t have general consistency group, so when we want create a CG without Hypermetro we just do nothing.","commit_id":"657a89081409c99e2bb9080ac7ba729fcc68c140"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"50632dced64db7774a225e7776bc13946fd7f86d","unresolved":false,"context_lines":[{"line_number":1573,"context_line":"            return model_update, None, None"},{"line_number":1574,"context_line":""},{"line_number":1575,"context_line":"        # Array doesn\u0027t support general consistency group,"},{"line_number":1576,"context_line":"        # so we just do nothing."},{"line_number":1577,"context_line":"        return model_update, None, None"},{"line_number":1578,"context_line":""},{"line_number":1579,"context_line":"    def create_cgsnapshot(self, context, cgsnapshot, snapshots):"}],"source_content_type":"text/x-python","patch_set":36,"id":"3aaa91ec_0fd702ee","line":1576,"updated":"2016-06-29 01:45:33.000000000","message":"Same here.  This comment is very confusing.","commit_id":"657a89081409c99e2bb9080ac7ba729fcc68c140"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"50632dced64db7774a225e7776bc13946fd7f86d","unresolved":false,"context_lines":[{"line_number":1777,"context_line":"        2.0.6 - Hypermetro support"},{"line_number":1778,"context_line":"                Hypermetro consistency group support"},{"line_number":1779,"context_line":"                Consistency group support"},{"line_number":1780,"context_line":"                Cgsnapshot support support"},{"line_number":1781,"context_line":"    \"\"\""},{"line_number":1782,"context_line":""},{"line_number":1783,"context_line":"    VERSION \u003d \"2.0.6\""}],"source_content_type":"text/x-python","patch_set":36,"id":"3aaa91ec_4fd62a28","line":1780,"updated":"2016-06-29 01:45:33.000000000","message":"Duplicate \"support\".","commit_id":"657a89081409c99e2bb9080ac7ba729fcc68c140"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"50632dced64db7774a225e7776bc13946fd7f86d","unresolved":false,"context_lines":[{"line_number":1973,"context_line":"        2.0.6 - Hypermetro support"},{"line_number":1974,"context_line":"                Hypermetro consistency group support"},{"line_number":1975,"context_line":"                Consistency group support"},{"line_number":1976,"context_line":"                Cgsnapshot support support"},{"line_number":1977,"context_line":"    \"\"\""},{"line_number":1978,"context_line":""},{"line_number":1979,"context_line":"    VERSION \u003d \"2.0.6\""}],"source_content_type":"text/x-python","patch_set":36,"id":"3aaa91ec_0fed42ef","line":1976,"updated":"2016-06-29 01:45:33.000000000","message":"Duplicate \"support\".","commit_id":"657a89081409c99e2bb9080ac7ba729fcc68c140"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3ca675307a5126828a2371b065de6593bbac60e6","unresolved":false,"context_lines":[{"line_number":1530,"context_line":"            metro.create_consistencygroup(group)"},{"line_number":1531,"context_line":"            return model_update"},{"line_number":1532,"context_line":""},{"line_number":1533,"context_line":"        # Array doesn\u0027t support general consistency group,"},{"line_number":1534,"context_line":"        # so we just do nothing."},{"line_number":1535,"context_line":"        return model_update"},{"line_number":1536,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"3aaa91ec_857f5165","line":1533,"updated":"2016-06-29 03:01:22.000000000","message":"Actually some other drivers don\u0027t call backend array in this function as well. They only call backend array at create_cgsnapshot time.  When you return \"model_update\", you are actually supporting Cinder\u0027s CG implementation.  A CG will be created in Cinder db.  So when you comment here saying array don\u0027t support general consistency group, it is wrong because CG is created.  Also your version history says \"consistency group support\".  If you really don\u0027t support it, you should raise exception here.\n\nCan you change this comment to this:\n\nArray will create CG at create_cgsnapshot time. Cinder will maintain the CG and volumes relationship in the db.\n\nSee example here:\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/ibm/storwize_svc/storwize_svc_common.py#L3011","commit_id":"3c84e42d55004b271b6f1c43d304bd7bce12252d"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"24f1287f8711fad646c3b496e47c1f9f3831e48e","unresolved":false,"context_lines":[{"line_number":1530,"context_line":"            metro.create_consistencygroup(group)"},{"line_number":1531,"context_line":"            return model_update"},{"line_number":1532,"context_line":""},{"line_number":1533,"context_line":"        # Array doesn\u0027t support general consistency group,"},{"line_number":1534,"context_line":"        # so we just do nothing."},{"line_number":1535,"context_line":"        return model_update"},{"line_number":1536,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"3aaa91ec_e820ac4b","line":1533,"in_reply_to":"3aaa91ec_857f5165","updated":"2016-06-29 03:30:25.000000000","message":"Done","commit_id":"3c84e42d55004b271b6f1c43d304bd7bce12252d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3ca675307a5126828a2371b065de6593bbac60e6","unresolved":false,"context_lines":[{"line_number":1572,"context_line":"            return model_update, None, None"},{"line_number":1573,"context_line":""},{"line_number":1574,"context_line":"        # Array doesn\u0027t support general consistency group,"},{"line_number":1575,"context_line":"        # so we just do nothing."},{"line_number":1576,"context_line":"        return model_update, None, None"},{"line_number":1577,"context_line":""},{"line_number":1578,"context_line":"    def create_cgsnapshot(self, context, cgsnapshot, snapshots):"}],"source_content_type":"text/x-python","patch_set":37,"id":"3aaa91ec_c56dd99a","line":1575,"updated":"2016-06-29 03:01:22.000000000","message":"Similarly here, can you change to the following:\n\nArray will create CG at create_cgsnapshot time. Cinder will update volumes in the CG in the db.","commit_id":"3c84e42d55004b271b6f1c43d304bd7bce12252d"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"24f1287f8711fad646c3b496e47c1f9f3831e48e","unresolved":false,"context_lines":[{"line_number":1572,"context_line":"            return model_update, None, None"},{"line_number":1573,"context_line":""},{"line_number":1574,"context_line":"        # Array doesn\u0027t support general consistency group,"},{"line_number":1575,"context_line":"        # so we just do nothing."},{"line_number":1576,"context_line":"        return model_update, None, None"},{"line_number":1577,"context_line":""},{"line_number":1578,"context_line":"    def create_cgsnapshot(self, context, cgsnapshot, snapshots):"}],"source_content_type":"text/x-python","patch_set":37,"id":"3aaa91ec_c81b301b","line":1575,"in_reply_to":"3aaa91ec_c56dd99a","updated":"2016-06-29 03:30:25.000000000","message":"Done","commit_id":"3c84e42d55004b271b6f1c43d304bd7bce12252d"}],"cinder/volume/drivers/huawei/hypermetro.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"aded0e00699554dd43afc38328f363dd8c947c25","unresolved":false,"context_lines":[{"line_number":297,"context_line":""},{"line_number":298,"context_line":"            self.client.delete_metrogroup(metrogroup_id)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"        return model_update, volumes"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    def update_consistencygroup(self, context, group,"},{"line_number":303,"context_line":"                                add_volumes, remove_volumes):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_8046b121","line":300,"updated":"2015-12-23 17:48:50.000000000","message":"volumes should not be returned directly like this.  You should create a new dictionary for each volume model update and add to a list to return.  Each volume model update entry should contain the following and anything else you want to update in the db for the volume:\n\n{\u0027id\u0027: xxx, \u0027status\u0027: xxx}","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":297,"context_line":""},{"line_number":298,"context_line":"            self.client.delete_metrogroup(metrogroup_id)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"        return model_update, volumes"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    def update_consistencygroup(self, context, group,"},{"line_number":303,"context_line":"                                add_volumes, remove_volumes):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_bb5f4a40","line":300,"in_reply_to":"1a7b0d38_8046b121","updated":"2015-12-24 09:45:35.000000000","message":"Done","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"aded0e00699554dd43afc38328f363dd8c947c25","unresolved":false,"context_lines":[{"line_number":355,"context_line":""},{"line_number":356,"context_line":"        # if cggroup not exist in array"},{"line_number":357,"context_line":"        else:"},{"line_number":358,"context_line":"            msg \u003d _(\"The cggroup is not exist on array.\")"},{"line_number":359,"context_line":"            LOG.error(msg)"},{"line_number":360,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_20b01d43","line":358,"updated":"2015-12-23 17:48:50.000000000","message":"does not exist","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":355,"context_line":""},{"line_number":356,"context_line":"        # if cggroup not exist in array"},{"line_number":357,"context_line":"        else:"},{"line_number":358,"context_line":"            msg \u003d _(\"The cggroup is not exist on array.\")"},{"line_number":359,"context_line":"            LOG.error(msg)"},{"line_number":360,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_bd47471c","line":358,"in_reply_to":"1a7b0d38_20b01d43","updated":"2015-12-24 09:45:35.000000000","message":"Done","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2888e8b56ecc181fd097d7a9ca75fa90d1e84ea1","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"},{"line_number":81,"context_line":"                health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":82,"context_line":"                running_status \u003d metro_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":83,"context_line":"                LOG.debug(\"Metro health_status %(health_status)s\""},{"line_number":84,"context_line":"                          \"Metro running_status %(running_status)s \","},{"line_number":85,"context_line":"                          {\u0027health_status\u0027: health_status,"},{"line_number":86,"context_line":"                           \u0027running_status\u0027: running_status})"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_5a70b372","line":83,"updated":"2015-12-31 07:39:20.000000000","message":"Maybe we should add a space or a comma at the end of this line?","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"97c5f2e26dcb36ec2fa6b9bed113c1f32c736d3e","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"},{"line_number":81,"context_line":"                health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":82,"context_line":"                running_status \u003d metro_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":83,"context_line":"                LOG.debug(\"Metro health_status %(health_status)s\""},{"line_number":84,"context_line":"                          \"Metro running_status %(running_status)s \","},{"line_number":85,"context_line":"                          {\u0027health_status\u0027: health_status,"},{"line_number":86,"context_line":"                           \u0027running_status\u0027: running_status})"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_47a0b39f","line":83,"in_reply_to":"fa69d971_5a70b372","updated":"2016-01-04 03:56:15.000000000","message":"Done","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2888e8b56ecc181fd097d7a9ca75fa90d1e84ea1","unresolved":false,"context_lines":[{"line_number":322,"context_line":"            for volume in add_volumes:"},{"line_number":323,"context_line":"                metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":324,"context_line":"                metro_id \u003d metadata[\u0027hypermetro_id\u0027]"},{"line_number":325,"context_line":"                flag \u003d self.client.check_hypermetro_exist(metro_id)"},{"line_number":326,"context_line":"                if flag:"},{"line_number":327,"context_line":"                    metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"},{"line_number":328,"context_line":"                    health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_5af753d3","line":325,"updated":"2015-12-31 07:39:20.000000000","message":"\"flag\" can be changed to a more meaningful var name, like \"existed\" or someone else?","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"97c5f2e26dcb36ec2fa6b9bed113c1f32c736d3e","unresolved":false,"context_lines":[{"line_number":322,"context_line":"            for volume in add_volumes:"},{"line_number":323,"context_line":"                metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":324,"context_line":"                metro_id \u003d metadata[\u0027hypermetro_id\u0027]"},{"line_number":325,"context_line":"                flag \u003d self.client.check_hypermetro_exist(metro_id)"},{"line_number":326,"context_line":"                if flag:"},{"line_number":327,"context_line":"                    metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"},{"line_number":328,"context_line":"                    health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_87030b42","line":325,"in_reply_to":"fa69d971_5af753d3","updated":"2016-01-04 03:56:15.000000000","message":"Done","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"97c5f2e26dcb36ec2fa6b9bed113c1f32c736d3e","unresolved":false,"context_lines":[{"line_number":322,"context_line":"            for volume in add_volumes:"},{"line_number":323,"context_line":"                metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":324,"context_line":"                metro_id \u003d metadata[\u0027hypermetro_id\u0027]"},{"line_number":325,"context_line":"                flag \u003d self.client.check_hypermetro_exist(metro_id)"},{"line_number":326,"context_line":"                if flag:"},{"line_number":327,"context_line":"                    metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"},{"line_number":328,"context_line":"                    health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_c7826300","line":325,"in_reply_to":"fa69d971_5af753d3","updated":"2016-01-04 03:56:15.000000000","message":"Done","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2888e8b56ecc181fd097d7a9ca75fa90d1e84ea1","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                             or running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":333,"context_line":"                        self.client.stop_hypermetro(metro_id)"},{"line_number":334,"context_line":"                self.client.add_metro_to_metrogroup(metrogroup_id,"},{"line_number":335,"context_line":"                                                    metro_id)"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"            for volume in remove_volumes:"},{"line_number":338,"context_line":"                metadata \u003d huawei_utils.get_volume_metadata(volume)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_5a7af325","line":335,"updated":"2015-12-31 07:39:20.000000000","message":"Maybe line 322 to 335 can be encapsulated to a function so line 337 to 351 can be removed and just instead to can this function. The only deference between these two code block is that one is add and the another is remove.","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"97c5f2e26dcb36ec2fa6b9bed113c1f32c736d3e","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                             or running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":333,"context_line":"                        self.client.stop_hypermetro(metro_id)"},{"line_number":334,"context_line":"                self.client.add_metro_to_metrogroup(metrogroup_id,"},{"line_number":335,"context_line":"                                                    metro_id)"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"            for volume in remove_volumes:"},{"line_number":338,"context_line":"                metadata \u003d huawei_utils.get_volume_metadata(volume)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_2799ff1f","line":335,"in_reply_to":"fa69d971_5a7af325","updated":"2016-01-04 03:56:15.000000000","message":"Done","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2888e8b56ecc181fd097d7a9ca75fa90d1e84ea1","unresolved":false,"context_lines":[{"line_number":355,"context_line":"            if isempty \u003d\u003d \u0027false\u0027:"},{"line_number":356,"context_line":"                self.client.sync_metrogroup(metrogroup_id)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        # if cggroup not exist in array"},{"line_number":359,"context_line":"        else:"},{"line_number":360,"context_line":"            msg \u003d _(\"The cggroup does not exist on array.\")"},{"line_number":361,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_5aa19393","line":358,"updated":"2015-12-31 07:39:20.000000000","message":"s/in/on","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"97c5f2e26dcb36ec2fa6b9bed113c1f32c736d3e","unresolved":false,"context_lines":[{"line_number":355,"context_line":"            if isempty \u003d\u003d \u0027false\u0027:"},{"line_number":356,"context_line":"                self.client.sync_metrogroup(metrogroup_id)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        # if cggroup not exist in array"},{"line_number":359,"context_line":"        else:"},{"line_number":360,"context_line":"            msg \u003d _(\"The cggroup does not exist on array.\")"},{"line_number":361,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_c79fc301","line":358,"in_reply_to":"fa69d971_5aa19393","updated":"2016-01-04 03:56:15.000000000","message":"Done","commit_id":"1cf9499a713e14f77f1937309c800d636671045f"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"501a7cfa51ac851d0353da5e7367b82e25d30f17","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                self.client.stop_metrogroup(metrogroup_id)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"            self.client.delete_metrogroup(metrogroup_id)"},{"line_number":300,"context_line":"            for volume_ref in volumes:"},{"line_number":301,"context_line":"                volume_ref[\u0027status\u0027] \u003d \u0027deleted\u0027"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        return model_update, volumes"},{"line_number":304,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_9f61003c","line":301,"range":{"start_line":300,"start_character":0,"end_line":301,"end_character":48},"updated":"2016-01-04 15:17:29.000000000","message":"Like Xing pointed out in the original upload, a volume_model_update should be created and returned instead of updating and returning the volumes directly. volume_ref is still the volume object.","commit_id":"84eec43ebba1f36e3a9b43dd4475a58e7149f923"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"fb98842f19519c832af4e08131e7755622a7710f","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                self.client.stop_metrogroup(metrogroup_id)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"            self.client.delete_metrogroup(metrogroup_id)"},{"line_number":300,"context_line":"            for volume_ref in volumes:"},{"line_number":301,"context_line":"                volume_ref[\u0027status\u0027] \u003d \u0027deleted\u0027"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        return model_update, volumes"},{"line_number":304,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_b294b68a","line":301,"range":{"start_line":300,"start_character":0,"end_line":301,"end_character":48},"in_reply_to":"fa69d971_9f61003c","updated":"2016-01-07 02:25:40.000000000","message":"Thank you, alex. As metioned above.I created a volume_model_update to store the volume object and return the new object","commit_id":"84eec43ebba1f36e3a9b43dd4475a58e7149f923"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9f8979294b68219c2e195bc02f065e52e6bf6851","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":82,"context_line":"                running_status \u003d metro_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":83,"context_line":"                LOG.debug(\"Metro health_status %(health_status)s\""},{"line_number":84,"context_line":"                          \"Metro running_status %(running_status)s \","},{"line_number":85,"context_line":"                          {\u0027health_status\u0027: health_status,"},{"line_number":86,"context_line":"                           \u0027running_status\u0027: running_status})"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_b07f35df","line":84,"updated":"2016-01-10 08:09:53.000000000","message":"Should remove the space at the end of this line.","commit_id":"231f1e784152b52bc967519e5e02442ca175065d"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bb9bcaa74c7d5812e092d0f6c5c02f8d6d37b4b9","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":82,"context_line":"                running_status \u003d metro_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":83,"context_line":"                LOG.debug(\"Metro health_status %(health_status)s\""},{"line_number":84,"context_line":"                          \"Metro running_status %(running_status)s \","},{"line_number":85,"context_line":"                          {\u0027health_status\u0027: health_status,"},{"line_number":86,"context_line":"                           \u0027running_status\u0027: running_status})"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_7c37534d","line":84,"in_reply_to":"fa69d971_b07f35df","updated":"2016-01-11 03:53:41.000000000","message":"Done","commit_id":"231f1e784152b52bc967519e5e02442ca175065d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4f04500c4d7ac2318de5b02292bb2b7bb75813f1","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"},{"line_number":81,"context_line":"                health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":82,"context_line":"                running_status \u003d metro_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":83,"context_line":"                LOG.debug(\"Metro health_status %(health_status)s\""},{"line_number":84,"context_line":"                          \"Metro running_status %(running_status)s\","},{"line_number":85,"context_line":"                          {\u0027health_status\u0027: health_status,"},{"line_number":86,"context_line":"                           \u0027running_status\u0027: running_status})"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_b99b8f16","line":83,"range":{"start_line":83,"start_character":47,"end_line":83,"end_character":64},"updated":"2016-01-11 11:21:28.000000000","message":"Need a blank space after %(health_status)s","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"828f3feee38327499213c3f3df3628ff2ade6c7c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"},{"line_number":81,"context_line":"                health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":82,"context_line":"                running_status \u003d metro_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":83,"context_line":"                LOG.debug(\"Metro health_status %(health_status)s\""},{"line_number":84,"context_line":"                          \"Metro running_status %(running_status)s\","},{"line_number":85,"context_line":"                          {\u0027health_status\u0027: health_status,"},{"line_number":86,"context_line":"                           \u0027running_status\u0027: running_status})"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_5d27d811","line":83,"range":{"start_line":83,"start_character":47,"end_line":83,"end_character":64},"in_reply_to":"fa69d971_b99b8f16","updated":"2016-01-11 13:13:22.000000000","message":"Done","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4f04500c4d7ac2318de5b02292bb2b7bb75813f1","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":82,"context_line":"                running_status \u003d metro_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":83,"context_line":"                LOG.debug(\"Metro health_status %(health_status)s\""},{"line_number":84,"context_line":"                          \"Metro running_status %(running_status)s\","},{"line_number":85,"context_line":"                          {\u0027health_status\u0027: health_status,"},{"line_number":86,"context_line":"                           \u0027running_status\u0027: running_status})"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_79b1978e","line":84,"range":{"start_line":84,"start_character":48,"end_line":84,"end_character":66},"updated":"2016-01-11 11:21:28.000000000","message":"Missing \".\" after %(running_status)s.","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"828f3feee38327499213c3f3df3628ff2ade6c7c","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":82,"context_line":"                running_status \u003d metro_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":83,"context_line":"                LOG.debug(\"Metro health_status %(health_status)s\""},{"line_number":84,"context_line":"                          \"Metro running_status %(running_status)s\","},{"line_number":85,"context_line":"                          {\u0027health_status\u0027: health_status,"},{"line_number":86,"context_line":"                           \u0027running_status\u0027: running_status})"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_1d1de0bd","line":84,"range":{"start_line":84,"start_character":48,"end_line":84,"end_character":66},"in_reply_to":"fa69d971_79b1978e","updated":"2016-01-11 13:13:22.000000000","message":"Done","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4f04500c4d7ac2318de5b02292bb2b7bb75813f1","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                          {\u0027health_status\u0027: health_status,"},{"line_number":86,"context_line":"                           \u0027running_status\u0027: running_status})"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"                if (health_status \u003d\u003d constants.HEAHTH_NORMAL"},{"line_number":89,"context_line":"                    and (running_status \u003d\u003d constants.RUNNING_NORMAL"},{"line_number":90,"context_line":"                         or running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":91,"context_line":"                        self.client.stop_hypermetro(metro_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_fc26d5b8","line":88,"range":{"start_line":88,"start_character":47,"end_line":88,"end_character":53},"updated":"2016-01-11 11:21:28.000000000","message":"s/HEAHTH/HEALTH","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"828f3feee38327499213c3f3df3628ff2ade6c7c","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                          {\u0027health_status\u0027: health_status,"},{"line_number":86,"context_line":"                           \u0027running_status\u0027: running_status})"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"                if (health_status \u003d\u003d constants.HEAHTH_NORMAL"},{"line_number":89,"context_line":"                    and (running_status \u003d\u003d constants.RUNNING_NORMAL"},{"line_number":90,"context_line":"                         or running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":91,"context_line":"                        self.client.stop_hypermetro(metro_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_fd7ecce2","line":88,"range":{"start_line":88,"start_character":47,"end_line":88,"end_character":53},"in_reply_to":"fa69d971_fc26d5b8","updated":"2016-01-11 13:13:22.000000000","message":"Done","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4f04500c4d7ac2318de5b02292bb2b7bb75813f1","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            metrogroup_info \u003d self.client.get_metrogroup_by_id(metrogroup_id)"},{"line_number":293,"context_line":"            health_status \u003d metrogroup_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":294,"context_line":"            running_status \u003d metrogroup_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":295,"context_line":"            if (health_status \u003d\u003d constants.HEAHTH_NORMAL"},{"line_number":296,"context_line":"                and (running_status \u003d\u003d constants.RUNNING_NORMAL"},{"line_number":297,"context_line":"                     or running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":298,"context_line":"                self.client.stop_metrogroup(metrogroup_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_7cde656e","line":295,"range":{"start_line":295,"start_character":43,"end_line":295,"end_character":49},"updated":"2016-01-11 11:21:28.000000000","message":"s/HEAHTH/HEALTH","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"828f3feee38327499213c3f3df3628ff2ade6c7c","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            metrogroup_info \u003d self.client.get_metrogroup_by_id(metrogroup_id)"},{"line_number":293,"context_line":"            health_status \u003d metrogroup_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":294,"context_line":"            running_status \u003d metrogroup_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":295,"context_line":"            if (health_status \u003d\u003d constants.HEAHTH_NORMAL"},{"line_number":296,"context_line":"                and (running_status \u003d\u003d constants.RUNNING_NORMAL"},{"line_number":297,"context_line":"                     or running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":298,"context_line":"                self.client.stop_metrogroup(metrogroup_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_bd84d4d2","line":295,"range":{"start_line":295,"start_character":43,"end_line":295,"end_character":49},"in_reply_to":"fa69d971_7cde656e","updated":"2016-01-11 13:13:22.000000000","message":"Done","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4f04500c4d7ac2318de5b02292bb2b7bb75813f1","unresolved":false,"context_lines":[{"line_number":312,"context_line":"            metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"},{"line_number":313,"context_line":"            metro_health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":314,"context_line":"            metro_running_status \u003d metro_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":315,"context_line":"            if (metro_health_status \u003d\u003d constants.HEAHTH_NORMAL and"},{"line_number":316,"context_line":"                (metro_running_status \u003d\u003d constants.RUNNING_NORMAL or"},{"line_number":317,"context_line":"                    metro_running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":318,"context_line":"                self.client.stop_hypermetro(metro_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_9c70f973","line":315,"range":{"start_line":315,"start_character":49,"end_line":315,"end_character":55},"updated":"2016-01-11 11:21:28.000000000","message":"s/HEAHTH/HEALTH","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"828f3feee38327499213c3f3df3628ff2ade6c7c","unresolved":false,"context_lines":[{"line_number":312,"context_line":"            metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"},{"line_number":313,"context_line":"            metro_health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":314,"context_line":"            metro_running_status \u003d metro_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":315,"context_line":"            if (metro_health_status \u003d\u003d constants.HEAHTH_NORMAL and"},{"line_number":316,"context_line":"                (metro_running_status \u003d\u003d constants.RUNNING_NORMAL or"},{"line_number":317,"context_line":"                    metro_running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":318,"context_line":"                self.client.stop_hypermetro(metro_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_7d6bbc1e","line":315,"range":{"start_line":315,"start_character":49,"end_line":315,"end_character":55},"in_reply_to":"fa69d971_9c70f973","updated":"2016-01-11 13:13:22.000000000","message":"Done","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4f04500c4d7ac2318de5b02292bb2b7bb75813f1","unresolved":false,"context_lines":[{"line_number":312,"context_line":"            metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"},{"line_number":313,"context_line":"            metro_health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":314,"context_line":"            metro_running_status \u003d metro_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":315,"context_line":"            if (metro_health_status \u003d\u003d constants.HEAHTH_NORMAL and"},{"line_number":316,"context_line":"                (metro_running_status \u003d\u003d constants.RUNNING_NORMAL or"},{"line_number":317,"context_line":"                    metro_running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":318,"context_line":"                self.client.stop_hypermetro(metro_id)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        return metro_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_fc5ed5e7","line":317,"range":{"start_line":315,"start_character":12,"end_line":317,"end_character":68},"updated":"2016-01-11 11:21:28.000000000","message":"Please keep consistent with L295-297.","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"828f3feee38327499213c3f3df3628ff2ade6c7c","unresolved":false,"context_lines":[{"line_number":312,"context_line":"            metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"},{"line_number":313,"context_line":"            metro_health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":314,"context_line":"            metro_running_status \u003d metro_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":315,"context_line":"            if (metro_health_status \u003d\u003d constants.HEAHTH_NORMAL and"},{"line_number":316,"context_line":"                (metro_running_status \u003d\u003d constants.RUNNING_NORMAL or"},{"line_number":317,"context_line":"                    metro_running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":318,"context_line":"                self.client.stop_hypermetro(metro_id)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        return metro_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_1d7400fc","line":317,"range":{"start_line":315,"start_character":12,"end_line":317,"end_character":68},"in_reply_to":"fa69d971_fc5ed5e7","updated":"2016-01-11 13:13:22.000000000","message":"Done","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4f04500c4d7ac2318de5b02292bb2b7bb75813f1","unresolved":false,"context_lines":[{"line_number":322,"context_line":"    def update_consistencygroup(self, context, group,"},{"line_number":323,"context_line":"                                add_volumes, remove_volumes):"},{"line_number":324,"context_line":"        LOG.info(_LI(\"Update Consistency Group: %(group)s. \""},{"line_number":325,"context_line":"                     \"This adds and/or removes volumes from a CG.\"),"},{"line_number":326,"context_line":"                 {\u0027group\u0027: group[\u0027id\u0027]})"},{"line_number":327,"context_line":"        model_update \u003d {}"},{"line_number":328,"context_line":"        model_update[\u0027status\u0027] \u003d group[\u0027status\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_3c00edaa","line":325,"range":{"start_line":325,"start_character":32,"end_line":325,"end_character":38},"updated":"2016-01-11 11:21:28.000000000","message":"and/or? just use \"or\" ?","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"828f3feee38327499213c3f3df3628ff2ade6c7c","unresolved":false,"context_lines":[{"line_number":322,"context_line":"    def update_consistencygroup(self, context, group,"},{"line_number":323,"context_line":"                                add_volumes, remove_volumes):"},{"line_number":324,"context_line":"        LOG.info(_LI(\"Update Consistency Group: %(group)s. \""},{"line_number":325,"context_line":"                     \"This adds and/or removes volumes from a CG.\"),"},{"line_number":326,"context_line":"                 {\u0027group\u0027: group[\u0027id\u0027]})"},{"line_number":327,"context_line":"        model_update \u003d {}"},{"line_number":328,"context_line":"        model_update[\u0027status\u0027] \u003d group[\u0027status\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_9d56b05c","line":325,"range":{"start_line":325,"start_character":32,"end_line":325,"end_character":38},"in_reply_to":"fa69d971_3c00edaa","updated":"2016-01-11 13:13:22.000000000","message":"Done","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4f04500c4d7ac2318de5b02292bb2b7bb75813f1","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            metrogroup_info \u003d self.client.get_metrogroup_by_id(metrogroup_id)"},{"line_number":333,"context_line":"            group_health_status \u003d metrogroup_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":334,"context_line":"            group_running_status \u003d metrogroup_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":335,"context_line":"            if (group_health_status \u003d\u003d constants.HEAHTH_NORMAL"},{"line_number":336,"context_line":"                and (group_running_status \u003d\u003d constants.RUNNING_NORMAL"},{"line_number":337,"context_line":"                     or group_running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":338,"context_line":"                self.client.stop_metrogroup(metrogroup_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_9c1eb90a","line":335,"range":{"start_line":335,"start_character":49,"end_line":335,"end_character":55},"updated":"2016-01-11 11:21:28.000000000","message":"s/HEAHTH/HEALTH","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"828f3feee38327499213c3f3df3628ff2ade6c7c","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            metrogroup_info \u003d self.client.get_metrogroup_by_id(metrogroup_id)"},{"line_number":333,"context_line":"            group_health_status \u003d metrogroup_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":334,"context_line":"            group_running_status \u003d metrogroup_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":335,"context_line":"            if (group_health_status \u003d\u003d constants.HEAHTH_NORMAL"},{"line_number":336,"context_line":"                and (group_running_status \u003d\u003d constants.RUNNING_NORMAL"},{"line_number":337,"context_line":"                     or group_running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":338,"context_line":"                self.client.stop_metrogroup(metrogroup_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_7d52dc68","line":335,"range":{"start_line":335,"start_character":49,"end_line":335,"end_character":55},"in_reply_to":"fa69d971_9c1eb90a","updated":"2016-01-11 13:13:22.000000000","message":"Done","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4f04500c4d7ac2318de5b02292bb2b7bb75813f1","unresolved":false,"context_lines":[{"line_number":356,"context_line":"            if isempty \u003d\u003d \u0027false\u0027:"},{"line_number":357,"context_line":"                self.client.sync_metrogroup(metrogroup_id)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"        # if cggroup not exist on array"},{"line_number":360,"context_line":"        else:"},{"line_number":361,"context_line":"            msg \u003d _(\"The cggroup does not exist on array.\")"},{"line_number":362,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_dcac31a1","line":359,"range":{"start_line":359,"start_character":13,"end_line":359,"end_character":20},"updated":"2016-01-11 11:21:28.000000000","message":"use \"CG\" or \"consistency group\" instead of \"cggroup\".","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"828f3feee38327499213c3f3df3628ff2ade6c7c","unresolved":false,"context_lines":[{"line_number":356,"context_line":"            if isempty \u003d\u003d \u0027false\u0027:"},{"line_number":357,"context_line":"                self.client.sync_metrogroup(metrogroup_id)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"        # if cggroup not exist on array"},{"line_number":360,"context_line":"        else:"},{"line_number":361,"context_line":"            msg \u003d _(\"The cggroup does not exist on array.\")"},{"line_number":362,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_ddc74810","line":359,"range":{"start_line":359,"start_character":13,"end_line":359,"end_character":20},"in_reply_to":"fa69d971_dcac31a1","updated":"2016-01-11 13:13:22.000000000","message":"Done","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4f04500c4d7ac2318de5b02292bb2b7bb75813f1","unresolved":false,"context_lines":[{"line_number":358,"context_line":""},{"line_number":359,"context_line":"        # if cggroup not exist on array"},{"line_number":360,"context_line":"        else:"},{"line_number":361,"context_line":"            msg \u003d _(\"The cggroup does not exist on array.\")"},{"line_number":362,"context_line":"            LOG.error(msg)"},{"line_number":363,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_1ca729be","line":361,"range":{"start_line":361,"start_character":25,"end_line":361,"end_character":32},"updated":"2016-01-11 11:21:28.000000000","message":"same","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"828f3feee38327499213c3f3df3628ff2ade6c7c","unresolved":false,"context_lines":[{"line_number":358,"context_line":""},{"line_number":359,"context_line":"        # if cggroup not exist on array"},{"line_number":360,"context_line":"        else:"},{"line_number":361,"context_line":"            msg \u003d _(\"The cggroup does not exist on array.\")"},{"line_number":362,"context_line":"            LOG.error(msg)"},{"line_number":363,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_fdcc8c36","line":361,"range":{"start_line":361,"start_character":25,"end_line":361,"end_character":32},"in_reply_to":"fa69d971_1ca729be","updated":"2016-01-11 13:13:22.000000000","message":"Done","commit_id":"a00eafe9b43a3a2ab5fb14f2008e8f3816a82e70"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"904b991e49d9bd300bb12261af765fec28bafb83","unresolved":false,"context_lines":[{"line_number":299,"context_line":""},{"line_number":300,"context_line":"            self.client.delete_metrogroup(metrogroup_id)"},{"line_number":301,"context_line":"            for volume_ref in volumes:"},{"line_number":302,"context_line":"                volume_ref[\u0027status\u0027] \u003d \u0027deleted\u0027"},{"line_number":303,"context_line":"                volumes_model_update.append(volume_ref)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        return model_update, volumes_model_update"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_7fd6c0c6","line":302,"updated":"2016-01-12 19:28:16.000000000","message":"Entries in the input \"volumes\" should not be changed directly.  An entry in volume_model_update should be a new dictionary.  See example here:\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/hpe/hpe_3par_common.py#L567","commit_id":"20e0a542a40aacc51f2981c18037148282d4ed50"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"27ef4a3e9403c74ed2a01c9e13159074f97a421f","unresolved":false,"context_lines":[{"line_number":299,"context_line":""},{"line_number":300,"context_line":"            self.client.delete_metrogroup(metrogroup_id)"},{"line_number":301,"context_line":"            for volume_ref in volumes:"},{"line_number":302,"context_line":"                volume_ref[\u0027status\u0027] \u003d \u0027deleted\u0027"},{"line_number":303,"context_line":"                volumes_model_update.append(volume_ref)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        return model_update, volumes_model_update"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_1371afe0","line":302,"in_reply_to":"da6ed579_7fd6c0c6","updated":"2016-01-13 06:45:31.000000000","message":"Done","commit_id":"20e0a542a40aacc51f2981c18037148282d4ed50"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if metro_id:"},{"line_number":78,"context_line":"            exst_flag \u003d self.client.check_hypermetro_exist(metro_id)"},{"line_number":79,"context_line":"            if exst_flag:"},{"line_number":80,"context_line":"                metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"},{"line_number":81,"context_line":"                health_status \u003d metro_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":82,"context_line":"                running_status \u003d metro_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":83,"context_line":"                LOG.debug(\"Metro health_status %(health_status)s. \""},{"line_number":84,"context_line":"                          \"Metro running_status %(running_status)s. \","},{"line_number":85,"context_line":"                          {\u0027health_status\u0027: health_status,"},{"line_number":86,"context_line":"                           \u0027running_status\u0027: running_status})"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"                if (health_status \u003d\u003d constants.HEALTH_NORMAL"},{"line_number":89,"context_line":"                    and (running_status \u003d\u003d constants.RUNNING_NORMAL"},{"line_number":90,"context_line":"                         or running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":91,"context_line":"                        self.client.stop_hypermetro(metro_id)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"                # Delete hypermetro"},{"line_number":94,"context_line":"                self.client.delete_hypermetro(metro_id)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_1c5f89e6","line":91,"range":{"start_line":80,"start_character":16,"end_line":91,"end_character":61},"updated":"2016-02-04 03:01:02.000000000","message":"It\u0027s should be replaced by \"check_metro_need_to_stop\".","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        LOG.info(_LI(\"Create Consistency Group: %(group)s.\"),"},{"line_number":272,"context_line":"                 {\u0027group\u0027: group[\u0027id\u0027]})"},{"line_number":273,"context_line":"        group_name \u003d huawei_utils.encode_name(group[\u0027id\u0027])"},{"line_number":274,"context_line":"        domain_name \u003d self.configuration.metro_domain_name"},{"line_number":275,"context_line":"        domain_id \u003d self.client.get_hyper_domain_id(domain_name)"},{"line_number":276,"context_line":"        if not domain_name or not domain_id:"},{"line_number":277,"context_line":"            msg \u003d _(\"The domain_name config in cinder.conf is wrong.\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_bcc0b57d","line":274,"range":{"start_line":274,"start_character":8,"end_line":274,"end_character":19},"updated":"2016-02-04 03:01:02.000000000","message":"If domain_name is None, there\u0027s no need to call \"self.client.get_hyper_domain_id\". So should be raise here.","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        LOG.info(_LI(\"Create Consistency Group: %(group)s.\"),"},{"line_number":272,"context_line":"                 {\u0027group\u0027: group[\u0027id\u0027]})"},{"line_number":273,"context_line":"        group_name \u003d huawei_utils.encode_name(group[\u0027id\u0027])"},{"line_number":274,"context_line":"        domain_name \u003d self.configuration.metro_domain_name"},{"line_number":275,"context_line":"        domain_id \u003d self.client.get_hyper_domain_id(domain_name)"},{"line_number":276,"context_line":"        if not domain_name or not domain_id:"},{"line_number":277,"context_line":"            msg \u003d _(\"The domain_name config in cinder.conf is wrong.\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_f606dc1a","line":274,"range":{"start_line":274,"start_character":8,"end_line":274,"end_character":19},"in_reply_to":"5a5ae5dd_bcc0b57d","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        model_update[\u0027status\u0027] \u003d group[\u0027status\u0027]"},{"line_number":289,"context_line":"        group_name \u003d huawei_utils.encode_name(group[\u0027id\u0027])"},{"line_number":290,"context_line":"        metrogroup_id \u003d self.client.get_metrogroup_by_name(group_name)"},{"line_number":291,"context_line":"        if metrogroup_id:"},{"line_number":292,"context_line":"            metrogroup_info \u003d self.client.get_metrogroup_by_id(metrogroup_id)"},{"line_number":293,"context_line":"            health_status \u003d metrogroup_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":294,"context_line":"            running_status \u003d metrogroup_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":295,"context_line":"            if (health_status \u003d\u003d constants.HEALTH_NORMAL"},{"line_number":296,"context_line":"                and (running_status \u003d\u003d constants.RUNNING_NORMAL"},{"line_number":297,"context_line":"                     or running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":298,"context_line":"                self.client.stop_metrogroup(metrogroup_id)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"            self.client.delete_metrogroup(metrogroup_id)"},{"line_number":301,"context_line":"            for volume_ref in volumes:"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_7cb55d2f","line":298,"range":{"start_line":291,"start_character":8,"end_line":298,"end_character":58},"updated":"2016-02-04 03:01:02.000000000","message":"same","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        model_update[\u0027status\u0027] \u003d group[\u0027status\u0027]"},{"line_number":289,"context_line":"        group_name \u003d huawei_utils.encode_name(group[\u0027id\u0027])"},{"line_number":290,"context_line":"        metrogroup_id \u003d self.client.get_metrogroup_by_name(group_name)"},{"line_number":291,"context_line":"        if metrogroup_id:"},{"line_number":292,"context_line":"            metrogroup_info \u003d self.client.get_metrogroup_by_id(metrogroup_id)"},{"line_number":293,"context_line":"            health_status \u003d metrogroup_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":294,"context_line":"            running_status \u003d metrogroup_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":295,"context_line":"            if (health_status \u003d\u003d constants.HEALTH_NORMAL"},{"line_number":296,"context_line":"                and (running_status \u003d\u003d constants.RUNNING_NORMAL"},{"line_number":297,"context_line":"                     or running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":298,"context_line":"                self.client.stop_metrogroup(metrogroup_id)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"            self.client.delete_metrogroup(metrogroup_id)"},{"line_number":301,"context_line":"            for volume_ref in volumes:"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_d66c0037","line":298,"range":{"start_line":291,"start_character":8,"end_line":298,"end_character":58},"in_reply_to":"5a5ae5dd_7cb55d2f","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":330,"context_line":"        group_name \u003d huawei_utils.encode_name(group[\u0027id\u0027])"},{"line_number":331,"context_line":"        metrogroup_id \u003d self.client.get_metrogroup_by_name(group_name)"},{"line_number":332,"context_line":"        if metrogroup_id:"},{"line_number":333,"context_line":"            metrogroup_info \u003d self.client.get_metrogroup_by_id(metrogroup_id)"},{"line_number":334,"context_line":"            group_health_status \u003d metrogroup_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":335,"context_line":"            group_running_status \u003d metrogroup_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":336,"context_line":"            if (group_health_status \u003d\u003d constants.HEALTH_NORMAL"},{"line_number":337,"context_line":"                and (group_running_status \u003d\u003d constants.RUNNING_NORMAL"},{"line_number":338,"context_line":"                     or group_running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":339,"context_line":"                self.client.stop_metrogroup(metrogroup_id)"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"            for volume in add_volumes:"},{"line_number":342,"context_line":"                metro_id \u003d self.check_metro_need_to_stop(huawei_utils,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_bcabd5d5","line":339,"range":{"start_line":333,"start_character":12,"end_line":339,"end_character":58},"updated":"2016-02-04 03:01:02.000000000","message":"It\u0027s same with line 313-319.","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":330,"context_line":"        group_name \u003d huawei_utils.encode_name(group[\u0027id\u0027])"},{"line_number":331,"context_line":"        metrogroup_id \u003d self.client.get_metrogroup_by_name(group_name)"},{"line_number":332,"context_line":"        if metrogroup_id:"},{"line_number":333,"context_line":"            metrogroup_info \u003d self.client.get_metrogroup_by_id(metrogroup_id)"},{"line_number":334,"context_line":"            group_health_status \u003d metrogroup_info[\u0027HEALTHSTATUS\u0027]"},{"line_number":335,"context_line":"            group_running_status \u003d metrogroup_info[\u0027RUNNINGSTATUS\u0027]"},{"line_number":336,"context_line":"            if (group_health_status \u003d\u003d constants.HEALTH_NORMAL"},{"line_number":337,"context_line":"                and (group_running_status \u003d\u003d constants.RUNNING_NORMAL"},{"line_number":338,"context_line":"                     or group_running_status \u003d\u003d constants.RUNNING_SYNC)):"},{"line_number":339,"context_line":"                self.client.stop_metrogroup(metrogroup_id)"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"            for volume in add_volumes:"},{"line_number":342,"context_line":"                metro_id \u003d self.check_metro_need_to_stop(huawei_utils,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_76750cf8","line":339,"range":{"start_line":333,"start_character":12,"end_line":339,"end_character":58},"in_reply_to":"5a5ae5dd_bcabd5d5","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":353,"context_line":"                                                         metro_id)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"            new_group_info \u003d self.client.get_metrogroup_by_id(metrogroup_id)"},{"line_number":356,"context_line":"            isempty \u003d new_group_info[\"ISEMPTY\"]"},{"line_number":357,"context_line":"            if isempty \u003d\u003d \u0027false\u0027:"},{"line_number":358,"context_line":"                self.client.sync_metrogroup(metrogroup_id)"},{"line_number":359,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_5c1e6164","line":356,"range":{"start_line":356,"start_character":12,"end_line":356,"end_character":19},"updated":"2016-02-04 03:01:02.000000000","message":"s/isempty/is_empty","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":353,"context_line":"                                                         metro_id)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"            new_group_info \u003d self.client.get_metrogroup_by_id(metrogroup_id)"},{"line_number":356,"context_line":"            isempty \u003d new_group_info[\"ISEMPTY\"]"},{"line_number":357,"context_line":"            if isempty \u003d\u003d \u0027false\u0027:"},{"line_number":358,"context_line":"                self.client.sync_metrogroup(metrogroup_id)"},{"line_number":359,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_3662343f","line":356,"range":{"start_line":356,"start_character":12,"end_line":356,"end_character":19},"in_reply_to":"5a5ae5dd_5c1e6164","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6015cc1026df2c759c95b9b30b202980cab7999a","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        return self.client.create_hypermetro(hcp_param)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def retype(self, volume, new_type):"},{"line_number":104,"context_line":"        return False"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def get_hypermetro_stats(self, hypermetro_id):"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_63ab8f8a","line":103,"updated":"2016-06-06 03:05:55.000000000","message":"This does not seem to be related to CG.  Should be in a different patch.  Otherwise you need to add some explanations on why this is here.","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"f3a74c6c7c5c6a1835fc4ea10593d083909f3731","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        return self.client.create_hypermetro(hcp_param)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def retype(self, volume, new_type):"},{"line_number":104,"context_line":"        return False"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def get_hypermetro_stats(self, hypermetro_id):"}],"source_content_type":"text/x-python","patch_set":25,"id":"7aa08908_e61dcd67","line":103,"in_reply_to":"7aa08908_63ab8f8a","updated":"2016-06-06 07:21:52.000000000","message":"wrong commit, fixed in patch 26","commit_id":"b3ce35a139de622186ddc9ab7a3ec1384f5b9bf8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"06524b7296514ad3cf187d87a0fd397895f282d0","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        model_update[\u0027status\u0027] \u003d group[\u0027status\u0027]"},{"line_number":290,"context_line":"        metrogroup_id \u003d self.check_consistencygroup_need_to_stop(group)"},{"line_number":291,"context_line":"        if metrogroup_id:"},{"line_number":292,"context_line":"            self.client.delete_metrogroup(metrogroup_id)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        # Deal with the return volumes info"},{"line_number":295,"context_line":"        for volume_ref in volumes:"}],"source_content_type":"text/x-python","patch_set":30,"id":"7aa08908_70f6e1d7","line":292,"updated":"2016-06-14 19:53:32.000000000","message":"Does this function delete all the volumes in the group from array?","commit_id":"4400586f6388c461d022c8714a7fb5058f8147b5"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"2c4a16f02968d2647c8b1c48c8f38acd5b8fb0f9","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        model_update[\u0027status\u0027] \u003d group[\u0027status\u0027]"},{"line_number":290,"context_line":"        metrogroup_id \u003d self.check_consistencygroup_need_to_stop(group)"},{"line_number":291,"context_line":"        if metrogroup_id:"},{"line_number":292,"context_line":"            self.client.delete_metrogroup(metrogroup_id)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        # Deal with the return volumes info"},{"line_number":295,"context_line":"        for volume_ref in volumes:"}],"source_content_type":"text/x-python","patch_set":30,"id":"7aa08908_48284ee2","line":292,"in_reply_to":"7aa08908_70f6e1d7","updated":"2016-06-15 03:30:58.000000000","message":"This function only remove hypermetro pairs from hypermetro CG and delete hypermetro CG on array.","commit_id":"4400586f6388c461d022c8714a7fb5058f8147b5"}],"cinder/volume/drivers/huawei/rest_client.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"aded0e00699554dd43afc38328f363dd8c947c25","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"        for pool_name in self.configuration.storage_pools:"},{"line_number":1114,"context_line":"            capacity \u003d self._get_capacity(pool_name, result)"},{"line_number":1115,"context_line":"            use_capacity \u003d round(float(capacity[\u0027total_capacity\u0027])"},{"line_number":1116,"context_line":"                                 - float(capacity[\u0027free_capacity\u0027]), 2)"},{"line_number":1117,"context_line":"            pool \u003d {}"},{"line_number":1118,"context_line":"            pool.update(dict("},{"line_number":1119,"context_line":"                location_info\u003dself.device_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_4094498a","line":1116,"updated":"2015-12-23 17:48:50.000000000","message":"This change is not related to the CG feature.  Please submit a separate patch for this.","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"        for pool_name in self.configuration.storage_pools:"},{"line_number":1114,"context_line":"            capacity \u003d self._get_capacity(pool_name, result)"},{"line_number":1115,"context_line":"            use_capacity \u003d round(float(capacity[\u0027total_capacity\u0027])"},{"line_number":1116,"context_line":"                                 - float(capacity[\u0027free_capacity\u0027]), 2)"},{"line_number":1117,"context_line":"            pool \u003d {}"},{"line_number":1118,"context_line":"            pool.update(dict("},{"line_number":1119,"context_line":"                location_info\u003dself.device_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_fdcdcfb7","line":1116,"in_reply_to":"1a7b0d38_4094498a","updated":"2015-12-24 09:45:35.000000000","message":"ok,I will submit a separate patch.","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"aded0e00699554dd43afc38328f363dd8c947c25","unresolved":false,"context_lines":[{"line_number":1120,"context_line":"                pool_name\u003dpool_name,"},{"line_number":1121,"context_line":"                total_capacity_gb\u003dcapacity[\u0027total_capacity\u0027],"},{"line_number":1122,"context_line":"                free_capacity_gb\u003dcapacity[\u0027free_capacity\u0027],"},{"line_number":1123,"context_line":"                provisioned_capacity_gb\u003duse_capacity,"},{"line_number":1124,"context_line":"                reserved_percentage\u003dself.configuration.safe_get("},{"line_number":1125,"context_line":"                    \u0027reserved_percentage\u0027),"},{"line_number":1126,"context_line":"                QoS_support\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_e090d597","line":1123,"updated":"2015-12-23 17:48:50.000000000","message":"Same as above.","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"bda25782b6294d1f226f43e000da35f6d449a062","unresolved":false,"context_lines":[{"line_number":1120,"context_line":"                pool_name\u003dpool_name,"},{"line_number":1121,"context_line":"                total_capacity_gb\u003dcapacity[\u0027total_capacity\u0027],"},{"line_number":1122,"context_line":"                free_capacity_gb\u003dcapacity[\u0027free_capacity\u0027],"},{"line_number":1123,"context_line":"                provisioned_capacity_gb\u003duse_capacity,"},{"line_number":1124,"context_line":"                reserved_percentage\u003dself.configuration.safe_get("},{"line_number":1125,"context_line":"                    \u0027reserved_percentage\u0027),"},{"line_number":1126,"context_line":"                QoS_support\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_9dc5ab8f","line":1123,"in_reply_to":"1a7b0d38_e090d597","updated":"2015-12-24 09:45:35.000000000","message":"ok","commit_id":"04aea861093d6600c0758ad47a259d1107e55255"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"904b991e49d9bd300bb12261af765fec28bafb83","unresolved":false,"context_lines":[{"line_number":1120,"context_line":"                pool_name\u003dpool_name,"},{"line_number":1121,"context_line":"                total_capacity_gb\u003dcapacity[\u0027total_capacity\u0027],"},{"line_number":1122,"context_line":"                free_capacity_gb\u003dcapacity[\u0027free_capacity\u0027],"},{"line_number":1123,"context_line":"                provisioned_capacity_gb\u003duse_capacity,"},{"line_number":1124,"context_line":"                reserved_percentage\u003dself.configuration.safe_get("},{"line_number":1125,"context_line":"                    \u0027reserved_percentage\u0027),"},{"line_number":1126,"context_line":"                QoS_support\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_1fc5448d","line":1123,"updated":"2016-01-12 19:28:16.000000000","message":"This change is not related to CG.  Please add a description in the commit message.","commit_id":"20e0a542a40aacc51f2981c18037148282d4ed50"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"27ef4a3e9403c74ed2a01c9e13159074f97a421f","unresolved":false,"context_lines":[{"line_number":1120,"context_line":"                pool_name\u003dpool_name,"},{"line_number":1121,"context_line":"                total_capacity_gb\u003dcapacity[\u0027total_capacity\u0027],"},{"line_number":1122,"context_line":"                free_capacity_gb\u003dcapacity[\u0027free_capacity\u0027],"},{"line_number":1123,"context_line":"                provisioned_capacity_gb\u003duse_capacity,"},{"line_number":1124,"context_line":"                reserved_percentage\u003dself.configuration.safe_get("},{"line_number":1125,"context_line":"                    \u0027reserved_percentage\u0027),"},{"line_number":1126,"context_line":"                QoS_support\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_93f83f4b","line":1123,"in_reply_to":"da6ed579_1fc5448d","updated":"2016-01-13 06:45:31.000000000","message":"Done","commit_id":"20e0a542a40aacc51f2981c18037148282d4ed50"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":2045,"context_line":"                \"DOMAINID\": domain_id}"},{"line_number":2046,"context_line":"        result \u003d self.call(url, data, \"POST\")"},{"line_number":2047,"context_line":""},{"line_number":2048,"context_line":"        msg \u003d _(\u0027create hypermetro group error.\u0027)"},{"line_number":2049,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":2050,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":2051,"context_line":"            return result[\"data\"][\"ID\"]"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_9ce859e4","line":2048,"range":{"start_line":2048,"start_character":17,"end_line":2048,"end_character":23},"updated":"2016-02-04 03:01:02.000000000","message":"s/create/Create","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":2045,"context_line":"                \"DOMAINID\": domain_id}"},{"line_number":2046,"context_line":"        result \u003d self.call(url, data, \"POST\")"},{"line_number":2047,"context_line":""},{"line_number":2048,"context_line":"        msg \u003d _(\u0027create hypermetro group error.\u0027)"},{"line_number":2049,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":2050,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":2051,"context_line":"            return result[\"data\"][\"ID\"]"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_0954e950","line":2048,"range":{"start_line":2048,"start_character":17,"end_line":2048,"end_character":23},"in_reply_to":"5a5ae5dd_9ce859e4","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":2071,"context_line":"                }"},{"line_number":2072,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":2073,"context_line":""},{"line_number":2074,"context_line":"        msg \u003d _(\u0027stop hypermetro group error.\u0027)"},{"line_number":2075,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":2076,"context_line":""},{"line_number":2077,"context_line":"    def sync_metrogroup(self, metrogroup_id):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_dcdd7143","line":2074,"range":{"start_line":2074,"start_character":22,"end_line":2074,"end_character":38},"updated":"2016-02-04 03:01:02.000000000","message":"hypermertro group -\u003e hypermetro consistencygroup? Also all the other msg.","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":2071,"context_line":"                }"},{"line_number":2072,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":2073,"context_line":""},{"line_number":2074,"context_line":"        msg \u003d _(\u0027stop hypermetro group error.\u0027)"},{"line_number":2075,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":2076,"context_line":""},{"line_number":2077,"context_line":"    def sync_metrogroup(self, metrogroup_id):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_1cbb09e7","line":2074,"range":{"start_line":2074,"start_character":17,"end_line":2074,"end_character":21},"updated":"2016-02-04 03:01:02.000000000","message":"s/stop/Stop.","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":2071,"context_line":"                }"},{"line_number":2072,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":2073,"context_line":""},{"line_number":2074,"context_line":"        msg \u003d _(\u0027stop hypermetro group error.\u0027)"},{"line_number":2075,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":2076,"context_line":""},{"line_number":2077,"context_line":"    def sync_metrogroup(self, metrogroup_id):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_e9562d5b","line":2074,"range":{"start_line":2074,"start_character":17,"end_line":2074,"end_character":21},"in_reply_to":"5a5ae5dd_1cbb09e7","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":2071,"context_line":"                }"},{"line_number":2072,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":2073,"context_line":""},{"line_number":2074,"context_line":"        msg \u003d _(\u0027stop hypermetro group error.\u0027)"},{"line_number":2075,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":2076,"context_line":""},{"line_number":2077,"context_line":"    def sync_metrogroup(self, metrogroup_id):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_c86a4281","line":2074,"range":{"start_line":2074,"start_character":22,"end_line":2074,"end_character":38},"in_reply_to":"5a5ae5dd_dcdd7143","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":2081,"context_line":"                }"},{"line_number":2082,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":2083,"context_line":""},{"line_number":2084,"context_line":"        msg \u003d _(\u0027sync hypermetro group error.\u0027)"},{"line_number":2085,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":2086,"context_line":""},{"line_number":2087,"context_line":"    def add_metro_to_metrogroup(self, metrogroup_id, metro_id):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_dcb491f3","line":2084,"range":{"start_line":2084,"start_character":17,"end_line":2084,"end_character":21},"updated":"2016-02-04 03:01:02.000000000","message":"s/sync/Sync","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":2081,"context_line":"                }"},{"line_number":2082,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":2083,"context_line":""},{"line_number":2084,"context_line":"        msg \u003d _(\u0027sync hypermetro group error.\u0027)"},{"line_number":2085,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":2086,"context_line":""},{"line_number":2087,"context_line":"    def add_metro_to_metrogroup(self, metrogroup_id, metro_id):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_2958c589","line":2084,"range":{"start_line":2084,"start_character":17,"end_line":2084,"end_character":21},"in_reply_to":"5a5ae5dd_dcb491f3","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":2103,"context_line":"                \"ASSOCIATEOBJID\": metro_id}"},{"line_number":2104,"context_line":"        result \u003d self.call(url, data, \"DELETE\")"},{"line_number":2105,"context_line":""},{"line_number":2106,"context_line":"        msg \u003d _(\u0027Delete hypermetro from metrogroup error.\u0027)"},{"line_number":2107,"context_line":"        self._assert_rest_result(result, msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_5c1bc11b","line":2106,"range":{"start_line":2106,"start_character":40,"end_line":2106,"end_character":50},"updated":"2016-02-04 03:01:02.000000000","message":"metrogroup -\u003e consistencygroup?","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0bb0163edf96d6bf8b4c2555fb4e010a45cc471a","unresolved":false,"context_lines":[{"line_number":2103,"context_line":"                \"ASSOCIATEOBJID\": metro_id}"},{"line_number":2104,"context_line":"        result \u003d self.call(url, data, \"DELETE\")"},{"line_number":2105,"context_line":""},{"line_number":2106,"context_line":"        msg \u003d _(\u0027Delete hypermetro from metrogroup error.\u0027)"},{"line_number":2107,"context_line":"        self._assert_rest_result(result, msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_bcf515cc","line":2106,"range":{"start_line":2106,"start_character":17,"end_line":2106,"end_character":23},"updated":"2016-02-04 03:01:02.000000000","message":"s/Delete/Remove","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":2103,"context_line":"                \"ASSOCIATEOBJID\": metro_id}"},{"line_number":2104,"context_line":"        result \u003d self.call(url, data, \"DELETE\")"},{"line_number":2105,"context_line":""},{"line_number":2106,"context_line":"        msg \u003d _(\u0027Delete hypermetro from metrogroup error.\u0027)"},{"line_number":2107,"context_line":"        self._assert_rest_result(result, msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_c8bc8208","line":2106,"range":{"start_line":2106,"start_character":40,"end_line":2106,"end_character":50},"in_reply_to":"5a5ae5dd_5c1bc11b","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"6d225477ee25498c2324fe175f4a07b41cecb59c","unresolved":false,"context_lines":[{"line_number":2103,"context_line":"                \"ASSOCIATEOBJID\": metro_id}"},{"line_number":2104,"context_line":"        result \u003d self.call(url, data, \"DELETE\")"},{"line_number":2105,"context_line":""},{"line_number":2106,"context_line":"        msg \u003d _(\u0027Delete hypermetro from metrogroup error.\u0027)"},{"line_number":2107,"context_line":"        self._assert_rest_result(result, msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_e8b93e16","line":2106,"range":{"start_line":2106,"start_character":17,"end_line":2106,"end_character":23},"in_reply_to":"5a5ae5dd_bcf515cc","updated":"2016-02-06 02:42:39.000000000","message":"Done","commit_id":"7139710095215b34d84624914493edd9da8adb81"}],"releasenotes/notes/support-huawei-consistency-group-b666f8f6c6cddd8f.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"06524b7296514ad3cf187d87a0fd397895f282d0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"upgrade:\r"},{"line_number":3,"context_line":"  - Support huawei consistency group"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"7aa08908_d5bce707","line":2,"updated":"2016-06-14 19:53:32.000000000","message":"This should be under \"features:\" instead of \"upgrade:\".","commit_id":"4400586f6388c461d022c8714a7fb5058f8147b5"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"2c4a16f02968d2647c8b1c48c8f38acd5b8fb0f9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"upgrade:\r"},{"line_number":3,"context_line":"  - Support huawei consistency group"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"7aa08908_efe8247d","line":2,"in_reply_to":"7aa08908_d5bce707","updated":"2016-06-15 03:30:58.000000000","message":"Done","commit_id":"4400586f6388c461d022c8714a7fb5058f8147b5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"06524b7296514ad3cf187d87a0fd397895f282d0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"upgrade:\r"},{"line_number":3,"context_line":"  - Support huawei consistency group"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"7aa08908_555637ce","line":3,"updated":"2016-06-14 19:53:32.000000000","message":"Added consistency group support to the huawei driver.","commit_id":"4400586f6388c461d022c8714a7fb5058f8147b5"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"2c4a16f02968d2647c8b1c48c8f38acd5b8fb0f9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"upgrade:\r"},{"line_number":3,"context_line":"  - Support huawei consistency group"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"7aa08908_0fe650af","line":3,"in_reply_to":"7aa08908_555637ce","updated":"2016-06-15 03:30:58.000000000","message":"Done","commit_id":"4400586f6388c461d022c8714a7fb5058f8147b5"}]}
