)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"d38436704dd1fda5af8bec285c4914a65caf8413","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Pool aware scheduler support was introduced in Juno."},{"line_number":10,"context_line":"This blueprint proposes to add multiple pools support"},{"line_number":11,"context_line":" in the Huawei Volume driver."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ibe3b2a123ea5c700d2c2f66d262a8161c5d3e129"},{"line_number":14,"context_line":"Implements: blueprint huawei-storage-multiple-pools-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5afe65bd_c92d91a9","line":12,"updated":"2015-06-04 09:45:54.000000000","message":"Should cover the changes in capabilites that you are reporting as well:    \n\n                thin_provisioning_support\u003dTrue,\n\t\tthick_provisioning_support\u003dTrue,\n\t\tQoS_support\u003dTrue,\n\t\treserved_percentage\u003d0,\n\t\treplication\u003dTrue,\n\t\thypermeto\u003dTrue,","commit_id":"b7b4ae46f6b89efe578989c8aa0bbb5d1cfbd0b3"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"7b6c19fc2a4f1da81a507d4e0c4d88e939ce313c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Huawei Storage Multiple Pools Support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Pool aware scheduler support was introduced in Juno. This blueprint proposes to add multiple pools support in the Huawei Volume driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ibe3b2a123ea5c700d2c2f66d262a8161c5d3e129"},{"line_number":12,"context_line":"Implements: blueprint huawei-storage-multiple-pools-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5afe65bd_2cf0a0c8","line":9,"updated":"2015-06-04 16:48:05.000000000","message":"Please update the body of this commit message to 72 characters - https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"4a9ff856460137dbd9e888d02a3490d7ed7138ee"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"81c60b4296759be0452888826faeb1aed61413d7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Huawei Storage Multiple Pools Support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Pool aware scheduler support was introduced in Juno. This blueprint proposes to add multiple pools support in the Huawei Volume driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ibe3b2a123ea5c700d2c2f66d262a8161c5d3e129"},{"line_number":12,"context_line":"Implements: blueprint huawei-storage-multiple-pools-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3afb71cf_e2553f50","line":9,"in_reply_to":"5afe65bd_2cf0a0c8","updated":"2015-06-08 07:53:01.000000000","message":"Done","commit_id":"4a9ff856460137dbd9e888d02a3490d7ed7138ee"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"96101dba2e105c5754b0feef906ff218432a52a8","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Pool aware scheduler support was introduced in Juno."},{"line_number":10,"context_line":"This blueprint proposes to add multiple pools support"},{"line_number":11,"context_line":"fo Huawei driver."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ibe3b2a123ea5c700d2c2f66d262a8161c5d3e129"},{"line_number":14,"context_line":"Implements: blueprint huawei-storage-multiple-pools-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"9a41bdd9_361f575c","line":11,"updated":"2015-07-15 23:13:29.000000000","message":"s/fo/for","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ff13cf90ae015929c0793e9af393abd383c308cd","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Pool aware scheduler support was introduced in Juno."},{"line_number":10,"context_line":"This blueprint proposes to add multiple pools support"},{"line_number":11,"context_line":"fo Huawei driver."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ibe3b2a123ea5c700d2c2f66d262a8161c5d3e129"},{"line_number":14,"context_line":"Implements: blueprint huawei-storage-multiple-pools-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"9a41bdd9_4c536717","line":11,"in_reply_to":"9a41bdd9_361f575c","updated":"2015-07-16 03:59:32.000000000","message":"Done","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"}],"cinder/tests/unit/test_huawei_drivers.py":[{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"c4336df004f91acda3c23508b817458a46f2e2dd","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"                                                     self.configuration)"},{"line_number":1071,"context_line":"        self.assertEqual(\u00270\u0027, host_os)"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"    def test_find_pool_info(self):"},{"line_number":1074,"context_line":"        self.driver.restclient.login()"},{"line_number":1075,"context_line":"        result \u003d {"},{"line_number":1076,"context_line":"            \"error\": {\"code\": 0},"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba3cc151_e0ee6cb3","line":1073,"updated":"2015-07-01 07:12:34.000000000","message":"you can add test for \u0027find_pool_info_by_name\u0027.\nAlso, if you create a generic function instead of using two functions \u0027_find_pool_info and find_pool_info_by_name\u0027 , then only test is enough.","commit_id":"b16ec8d6d9012e0dd54b3fee51cd4f2658756a47"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2073e7fef90855f4ce385f15e95431f7970107ab","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"                                                     self.configuration)"},{"line_number":1071,"context_line":"        self.assertEqual(\u00270\u0027, host_os)"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"    def test_find_pool_info(self):"},{"line_number":1074,"context_line":"        self.driver.restclient.login()"},{"line_number":1075,"context_line":"        result \u003d {"},{"line_number":1076,"context_line":"            \"error\": {\"code\": 0},"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba3cc151_6c02b9b6","line":1073,"in_reply_to":"ba3cc151_e0ee6cb3","updated":"2015-07-06 02:14:23.000000000","message":"Done","commit_id":"b16ec8d6d9012e0dd54b3fee51cd4f2658756a47"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"a9f5f8eeafe686d0dab73223da4b1ca490d25f65","unresolved":false,"context_lines":[{"line_number":1075,"context_line":"            \"error\": {\"code\": 0},"},{"line_number":1076,"context_line":"            \"data\": [{"},{"line_number":1077,"context_line":"                \"NAME\": \"test001\","},{"line_number":1078,"context_line":"                \"ID\": \"0\","},{"line_number":1079,"context_line":"                \"USERFREECAPACITY\": \"36\","},{"line_number":1080,"context_line":"                \"USERTOTALCAPACITY\": \"48\"},"},{"line_number":1081,"context_line":"                {"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_bc0d6139","line":1078,"updated":"2015-07-18 18:36:44.000000000","message":"Can the pools have same IDs? line#1078 \u0026 line#1083","commit_id":"0420b1ba0f98296e40a14dde1c7489a788152e03"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"760e41266377231c02784973617d7809432001f9","unresolved":false,"context_lines":[{"line_number":1075,"context_line":"            \"error\": {\"code\": 0},"},{"line_number":1076,"context_line":"            \"data\": [{"},{"line_number":1077,"context_line":"                \"NAME\": \"test001\","},{"line_number":1078,"context_line":"                \"ID\": \"0\","},{"line_number":1079,"context_line":"                \"USERFREECAPACITY\": \"36\","},{"line_number":1080,"context_line":"                \"USERTOTALCAPACITY\": \"48\"},"},{"line_number":1081,"context_line":"                {"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_c37ba57a","line":1078,"in_reply_to":"3a50d1a3_101794a4","updated":"2015-07-19 11:54:07.000000000","message":"Done","commit_id":"0420b1ba0f98296e40a14dde1c7489a788152e03"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"760e41266377231c02784973617d7809432001f9","unresolved":false,"context_lines":[{"line_number":1075,"context_line":"            \"error\": {\"code\": 0},"},{"line_number":1076,"context_line":"            \"data\": [{"},{"line_number":1077,"context_line":"                \"NAME\": \"test001\","},{"line_number":1078,"context_line":"                \"ID\": \"0\","},{"line_number":1079,"context_line":"                \"USERFREECAPACITY\": \"36\","},{"line_number":1080,"context_line":"                \"USERTOTALCAPACITY\": \"48\"},"},{"line_number":1081,"context_line":"                {"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_2387e962","line":1078,"in_reply_to":"3a50d1a3_bc0d6139","updated":"2015-07-19 11:54:07.000000000","message":"Done","commit_id":"0420b1ba0f98296e40a14dde1c7489a788152e03"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"69a30b1f4843e2b4acace8f1841fe7e05aee0ef2","unresolved":false,"context_lines":[{"line_number":1075,"context_line":"            \"error\": {\"code\": 0},"},{"line_number":1076,"context_line":"            \"data\": [{"},{"line_number":1077,"context_line":"                \"NAME\": \"test001\","},{"line_number":1078,"context_line":"                \"ID\": \"0\","},{"line_number":1079,"context_line":"                \"USERFREECAPACITY\": \"36\","},{"line_number":1080,"context_line":"                \"USERTOTALCAPACITY\": \"48\"},"},{"line_number":1081,"context_line":"                {"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_101794a4","line":1078,"in_reply_to":"3a50d1a3_bc0d6139","updated":"2015-07-19 04:20:01.000000000","message":"Good question. Usually different pools should have different ID\u0027s.","commit_id":"0420b1ba0f98296e40a14dde1c7489a788152e03"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a7f625c1e837e41bc4e451f74c17eca298d2298c","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"        self.driver.restclient.test_fail \u003d True"},{"line_number":1007,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":1008,"context_line":"                          self.driver.create_volume, test_volume)"},{"line_number":1009,"context_line":"        error_volume \u003d {\u0027name\u0027: \u0027volume-21ec7341-9256-497b-97d9-ef48edcf0637\u0027,"},{"line_number":1010,"context_line":"                        \u0027size\u0027: 2,"},{"line_number":1011,"context_line":"                        \u0027volume_name\u0027: \u0027vol2\u0027,"},{"line_number":1012,"context_line":"                        \u0027id\u0027: \u002721ec7341-9256-497b-97d9-ef48edcf0637\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_0dc27a34","line":1009,"updated":"2015-07-22 14:28:43.000000000","message":"Can you use the error_volume in L50 (or update it here to fit your needs) instead of creating a new one here?","commit_id":"01f6ee8a8dc1402d9e7b5938125d4c387c39688f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"d89ad78a1c0f36743c479db35edbc62fc0589bde","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"        self.driver.restclient.test_fail \u003d True"},{"line_number":1007,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":1008,"context_line":"                          self.driver.create_volume, test_volume)"},{"line_number":1009,"context_line":"        error_volume \u003d {\u0027name\u0027: \u0027volume-21ec7341-9256-497b-97d9-ef48edcf0637\u0027,"},{"line_number":1010,"context_line":"                        \u0027size\u0027: 2,"},{"line_number":1011,"context_line":"                        \u0027volume_name\u0027: \u0027vol2\u0027,"},{"line_number":1012,"context_line":"                        \u0027id\u0027: \u002721ec7341-9256-497b-97d9-ef48edcf0637\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_994d4f9c","line":1009,"in_reply_to":"3a50d1a3_0dc27a34","updated":"2015-07-23 01:19:41.000000000","message":"Done","commit_id":"01f6ee8a8dc1402d9e7b5938125d4c387c39688f"}],"cinder/tests/unit/test_huawei_drivers_compatibility.py":[{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"96101dba2e105c5754b0feef906ff218432a52a8","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations\r"},{"line_number":13,"context_line":"#    under the License.\r"},{"line_number":14,"context_line":"\r"},{"line_number":15,"context_line":"\r"},{"line_number":16,"context_line":"from oslo_config import cfg\r"},{"line_number":17,"context_line":"from oslo_utils import importutils\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_76771fa0","line":14,"updated":"2015-07-15 23:13:29.000000000","message":"This formatting looks screwed up. Please fix","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"}],"cinder/volume/drivers/huawei/huawei_driver.py":[{"author":{"_account_id":17103,"name":"Vedams DotHillDriver CI","email":"vedams_dothill_ci@vedams.com","username":"vedams_dothill_ci","tags":["SERVICE_USER"]},"change_message_id":"85a653d2265cc2892714110a07310145c067068d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        \"\"\"Create a volume.\"\"\""},{"line_number":74,"context_line":"        pool_name \u003d volume_utils.extract_host(volume[\u0027host\u0027],"},{"line_number":75,"context_line":"                                              level\u003d\u0027pool\u0027)"},{"line_number":76,"context_line":"        result \u003d self.restclient.find_all_pool()"},{"line_number":77,"context_line":"        poolinfo \u003d self.restclient.find_pool_info_by_name(pool_name, result)"},{"line_number":78,"context_line":"        volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"},{"line_number":79,"context_line":"        volume_description \u003d volume[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba3cc151_15ff1035","line":76,"updated":"2015-07-02 17:26:55.000000000","message":"i think you can use more generic name rather than result","commit_id":"b16ec8d6d9012e0dd54b3fee51cd4f2658756a47"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"331306342669852bdd8fa2ba20141f994a3b5bcb","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        \"\"\"Create a volume.\"\"\""},{"line_number":74,"context_line":"        pool_name \u003d volume_utils.extract_host(volume[\u0027host\u0027],"},{"line_number":75,"context_line":"                                              level\u003d\u0027pool\u0027)"},{"line_number":76,"context_line":"        result \u003d self.restclient.find_all_pool()"},{"line_number":77,"context_line":"        poolinfo \u003d self.restclient.find_pool_info_by_name(pool_name, result)"},{"line_number":78,"context_line":"        volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"},{"line_number":79,"context_line":"        volume_description \u003d volume[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba3cc151_a003840c","line":76,"updated":"2015-07-01 06:56:25.000000000","message":"i think you can use more meaningful variable name rather than \u0027result\u0027","commit_id":"b16ec8d6d9012e0dd54b3fee51cd4f2658756a47"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2073e7fef90855f4ce385f15e95431f7970107ab","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        \"\"\"Create a volume.\"\"\""},{"line_number":74,"context_line":"        pool_name \u003d volume_utils.extract_host(volume[\u0027host\u0027],"},{"line_number":75,"context_line":"                                              level\u003d\u0027pool\u0027)"},{"line_number":76,"context_line":"        result \u003d self.restclient.find_all_pool()"},{"line_number":77,"context_line":"        poolinfo \u003d self.restclient.find_pool_info_by_name(pool_name, result)"},{"line_number":78,"context_line":"        volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"},{"line_number":79,"context_line":"        volume_description \u003d volume[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba3cc151_ec3fa985","line":76,"in_reply_to":"ba3cc151_15ff1035","updated":"2015-07-06 02:14:23.000000000","message":"Done","commit_id":"b16ec8d6d9012e0dd54b3fee51cd4f2658756a47"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2073e7fef90855f4ce385f15e95431f7970107ab","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        \"\"\"Create a volume.\"\"\""},{"line_number":74,"context_line":"        pool_name \u003d volume_utils.extract_host(volume[\u0027host\u0027],"},{"line_number":75,"context_line":"                                              level\u003d\u0027pool\u0027)"},{"line_number":76,"context_line":"        result \u003d self.restclient.find_all_pool()"},{"line_number":77,"context_line":"        poolinfo \u003d self.restclient.find_pool_info_by_name(pool_name, result)"},{"line_number":78,"context_line":"        volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"},{"line_number":79,"context_line":"        volume_description \u003d volume[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba3cc151_4c3b359d","line":76,"in_reply_to":"ba3cc151_a003840c","updated":"2015-07-06 02:14:23.000000000","message":"Done","commit_id":"b16ec8d6d9012e0dd54b3fee51cd4f2658756a47"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"96101dba2e105c5754b0feef906ff218432a52a8","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        pool_name \u003d volume_utils.extract_host(volume[\u0027host\u0027],"},{"line_number":74,"context_line":"                                              level\u003d\u0027pool\u0027)"},{"line_number":75,"context_line":"        pools \u003d self.restclient.find_all_pool()"},{"line_number":76,"context_line":"        poolinfo \u003d self.restclient._find_pool_info(pool_name, pools)"},{"line_number":77,"context_line":"        if not poolinfo:"},{"line_number":78,"context_line":"            msg \u003d (_(\u0027Get pool info error, pool name is: %s.\u0027) % pool_name)"},{"line_number":79,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_3659978e","line":76,"updated":"2015-07-15 23:13:29.000000000","message":"You can call find_all_pool from within _find_pool_info( pool_name ) in that case you don\u0027t need to pass on \"pools\"","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ff13cf90ae015929c0793e9af393abd383c308cd","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        pool_name \u003d volume_utils.extract_host(volume[\u0027host\u0027],"},{"line_number":74,"context_line":"                                              level\u003d\u0027pool\u0027)"},{"line_number":75,"context_line":"        pools \u003d self.restclient.find_all_pool()"},{"line_number":76,"context_line":"        poolinfo \u003d self.restclient._find_pool_info(pool_name, pools)"},{"line_number":77,"context_line":"        if not poolinfo:"},{"line_number":78,"context_line":"            msg \u003d (_(\u0027Get pool info error, pool name is: %s.\u0027) % pool_name)"},{"line_number":79,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_0c5a3ff2","line":76,"in_reply_to":"9a41bdd9_3659978e","updated":"2015-07-16 03:59:32.000000000","message":"Good suggestion, but this change will have other impacts, maybe we can address in other patch, thanks!","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"96101dba2e105c5754b0feef906ff218432a52a8","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        pools \u003d self.restclient.find_all_pool()"},{"line_number":76,"context_line":"        poolinfo \u003d self.restclient._find_pool_info(pool_name, pools)"},{"line_number":77,"context_line":"        if not poolinfo:"},{"line_number":78,"context_line":"            msg \u003d (_(\u0027Get pool info error, pool name is: %s.\u0027) % pool_name)"},{"line_number":79,"context_line":"            LOG.error(msg)"},{"line_number":80,"context_line":"            raise exception.CinderException(msg)"},{"line_number":81,"context_line":"        volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_96ef431d","line":78,"updated":"2015-07-15 23:13:29.000000000","message":"Suggestion, change error message \u003d\u003e \"Error in getting pool information for the pool : %s\", pool_name","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ff13cf90ae015929c0793e9af393abd383c308cd","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        pools \u003d self.restclient.find_all_pool()"},{"line_number":76,"context_line":"        poolinfo \u003d self.restclient._find_pool_info(pool_name, pools)"},{"line_number":77,"context_line":"        if not poolinfo:"},{"line_number":78,"context_line":"            msg \u003d (_(\u0027Get pool info error, pool name is: %s.\u0027) % pool_name)"},{"line_number":79,"context_line":"            LOG.error(msg)"},{"line_number":80,"context_line":"            raise exception.CinderException(msg)"},{"line_number":81,"context_line":"        volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_ec0d9be8","line":78,"in_reply_to":"9a41bdd9_96ef431d","updated":"2015-07-16 03:59:32.000000000","message":"Done","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"96101dba2e105c5754b0feef906ff218432a52a8","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if not poolinfo:"},{"line_number":78,"context_line":"            msg \u003d (_(\u0027Get pool info error, pool name is: %s.\u0027) % pool_name)"},{"line_number":79,"context_line":"            LOG.error(msg)"},{"line_number":80,"context_line":"            raise exception.CinderException(msg)"},{"line_number":81,"context_line":"        volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"},{"line_number":82,"context_line":"        volume_description \u003d volume[\u0027name\u0027]"},{"line_number":83,"context_line":"        volume_size \u003d huawei_utils.get_volume_size(volume)"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_76d39f60","line":80,"updated":"2015-07-15 23:13:29.000000000","message":"This looks like VolumeBackendAPIException, as vendor rest client failed to provide more info.","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ff13cf90ae015929c0793e9af393abd383c308cd","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if not poolinfo:"},{"line_number":78,"context_line":"            msg \u003d (_(\u0027Get pool info error, pool name is: %s.\u0027) % pool_name)"},{"line_number":79,"context_line":"            LOG.error(msg)"},{"line_number":80,"context_line":"            raise exception.CinderException(msg)"},{"line_number":81,"context_line":"        volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"},{"line_number":82,"context_line":"        volume_description \u003d volume[\u0027name\u0027]"},{"line_number":83,"context_line":"        volume_size \u003d huawei_utils.get_volume_size(volume)"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_4c3287a8","line":80,"in_reply_to":"9a41bdd9_76d39f60","updated":"2015-07-16 03:59:32.000000000","message":"Done","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"fec5bc5d54714b6424d91143fc23719d8f8a49ef","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            msg \u003d (_(\u0027Error in getting pool information for the pool: %s.\u0027)"},{"line_number":79,"context_line":"                   % pool_name)"},{"line_number":80,"context_line":"            LOG.error(msg)"},{"line_number":81,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":82,"context_line":"        volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"},{"line_number":83,"context_line":"        volume_description \u003d volume[\u0027name\u0027]"},{"line_number":84,"context_line":"        volume_size \u003d huawei_utils.get_volume_size(volume)"}],"source_content_type":"text/x-python","patch_set":21,"id":"3a50d1a3_528b80c3","line":81,"updated":"2015-07-21 13:42:12.000000000","message":"Is there a unit test for this exception in test_huawei_drivers.py?  It would be good to at least have one.","commit_id":"186858b4bc31220878c9697e6b1a016adc48c791"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"46aac59abde9c291cdb6637a1cdeafcb5ef3c4fa","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            msg \u003d (_(\u0027Error in getting pool information for the pool: %s.\u0027)"},{"line_number":79,"context_line":"                   % pool_name)"},{"line_number":80,"context_line":"            LOG.error(msg)"},{"line_number":81,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":82,"context_line":"        volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"},{"line_number":83,"context_line":"        volume_description \u003d volume[\u0027name\u0027]"},{"line_number":84,"context_line":"        volume_size \u003d huawei_utils.get_volume_size(volume)"}],"source_content_type":"text/x-python","patch_set":21,"id":"3a50d1a3_b803c20c","line":81,"in_reply_to":"3a50d1a3_528b80c3","updated":"2015-07-22 02:36:32.000000000","message":"Sure, I will at the unit test, thanks!","commit_id":"186858b4bc31220878c9697e6b1a016adc48c791"}],"cinder/volume/drivers/huawei/rest_client.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"d38436704dd1fda5af8bec285c4914a65caf8413","unresolved":false,"context_lines":[{"line_number":926,"context_line":"        root \u003d huawei_utils.parse_xml_file(self.configuration)"},{"line_number":927,"context_line":"        pool_names \u003d root.findtext(\u0027Storage/StoragePool\u0027)"},{"line_number":928,"context_line":"        if not pool_names:"},{"line_number":929,"context_line":"            err_msg \u003d (_(\"Invalid resource pool: %s.\") % pool_names)"},{"line_number":930,"context_line":"            LOG.error(err_msg)"},{"line_number":931,"context_line":"            raise exception.InvalidInput(err_msg)"},{"line_number":932,"context_line":"        data \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_49cf6129","line":929,"updated":"2015-06-04 09:45:54.000000000","message":"Is this the error message you want when pool_names is None?","commit_id":"b7b4ae46f6b89efe578989c8aa0bbb5d1cfbd0b3"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"acbd272a86faa9f7203825bad9474674e67673c6","unresolved":false,"context_lines":[{"line_number":926,"context_line":"        root \u003d huawei_utils.parse_xml_file(self.configuration)"},{"line_number":927,"context_line":"        pool_names \u003d root.findtext(\u0027Storage/StoragePool\u0027)"},{"line_number":928,"context_line":"        if not pool_names:"},{"line_number":929,"context_line":"            err_msg \u003d (_(\"Invalid resource pool: %s.\") % pool_names)"},{"line_number":930,"context_line":"            LOG.error(err_msg)"},{"line_number":931,"context_line":"            raise exception.InvalidInput(err_msg)"},{"line_number":932,"context_line":"        data \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_6cb5c82f","line":929,"in_reply_to":"5afe65bd_49cf6129","updated":"2015-06-08 07:53:47.000000000","message":"Done","commit_id":"b7b4ae46f6b89efe578989c8aa0bbb5d1cfbd0b3"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"d38436704dd1fda5af8bec285c4914a65caf8413","unresolved":false,"context_lines":[{"line_number":943,"context_line":"                QoS_support\u003dTrue,"},{"line_number":944,"context_line":"                reserved_percentage\u003d0,"},{"line_number":945,"context_line":"                replication\u003dTrue,"},{"line_number":946,"context_line":"                hypermeto\u003dTrue,"},{"line_number":947,"context_line":"            ))"},{"line_number":948,"context_line":"            data[\"pools\"].append(pool)"},{"line_number":949,"context_line":"        return data"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_89f0b968","line":946,"updated":"2015-06-04 09:45:54.000000000","message":"New capabilities being reported, not just pools instead of single backend.","commit_id":"b7b4ae46f6b89efe578989c8aa0bbb5d1cfbd0b3"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"acbd272a86faa9f7203825bad9474674e67673c6","unresolved":false,"context_lines":[{"line_number":943,"context_line":"                QoS_support\u003dTrue,"},{"line_number":944,"context_line":"                reserved_percentage\u003d0,"},{"line_number":945,"context_line":"                replication\u003dTrue,"},{"line_number":946,"context_line":"                hypermeto\u003dTrue,"},{"line_number":947,"context_line":"            ))"},{"line_number":948,"context_line":"            data[\"pools\"].append(pool)"},{"line_number":949,"context_line":"        return data"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_cc971c8f","line":946,"in_reply_to":"5afe65bd_89f0b968","updated":"2015-06-08 07:53:47.000000000","message":"Done","commit_id":"b7b4ae46f6b89efe578989c8aa0bbb5d1cfbd0b3"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"4dd994a2d3acd72e3ff1082d9f571a10c5600f65","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        if not pool_name:"},{"line_number":155,"context_line":"            err_msg \u003d (_(\"Invalid resource pool: %s.\") % pool_name)"},{"line_number":156,"context_line":"            LOG.error(err_msg)"},{"line_number":157,"context_line":"            raise exception.InvalidInput(err_msg)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        url \u003d self.url + \"/storagepool\""},{"line_number":160,"context_line":"        result \u003d self.call(url, None)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_9eb13892","line":157,"updated":"2015-06-08 13:49:15.000000000","message":"Please add test cases for _find_pool_info(), at least one that handles the exception.InvalidInput().  I do not see one in cinder/tests/unit/test_huawei_18000.py  or cinder/tests/unit/test_huawei_drivers_compatibility.py.","commit_id":"0f0c1fed1121530c8084ba18a3a3054562434b12"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"87a8e7aae9b71c89c8cd74b3db5d69cd68582caf","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        if not pool_name:"},{"line_number":155,"context_line":"            err_msg \u003d (_(\"Invalid resource pool: %s.\") % pool_name)"},{"line_number":156,"context_line":"            LOG.error(err_msg)"},{"line_number":157,"context_line":"            raise exception.InvalidInput(err_msg)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        url \u003d self.url + \"/storagepool\""},{"line_number":160,"context_line":"        result \u003d self.call(url, None)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_b62837e3","line":157,"in_reply_to":"3afb71cf_9eb13892","updated":"2015-06-10 09:04:09.000000000","message":"Thanks. I add a test for _find_pool_info() in the new patch.","commit_id":"0f0c1fed1121530c8084ba18a3a3054562434b12"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"f05ec76e2cd0459b2f231ce9f96614933b02f097","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _find_pool_info(self, pool_name):"},{"line_number":154,"context_line":"        if not pool_name:"},{"line_number":155,"context_line":"            err_msg \u003d (_(\"Invalid resource pool: %s.\") % pool_name)"},{"line_number":156,"context_line":"            LOG.error(err_msg)"},{"line_number":157,"context_line":"            raise exception.InvalidInput(err_msg)"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_efa8b8dd","line":155,"updated":"2015-06-16 07:21:21.000000000","message":"Please put a more specific message here and localize it with _LE.","commit_id":"e3af7490ac3456ce7d35639efe91b5dc30e5a9fb"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"0e0991ab345100a24af303a9dcfb0995c42eec97","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _find_pool_info(self, pool_name):"},{"line_number":154,"context_line":"        if not pool_name:"},{"line_number":155,"context_line":"            err_msg \u003d (_(\"Invalid resource pool: %s.\") % pool_name)"},{"line_number":156,"context_line":"            LOG.error(err_msg)"},{"line_number":157,"context_line":"            raise exception.InvalidInput(err_msg)"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_85b1cb91","line":155,"in_reply_to":"fa32b979_efa8b8dd","updated":"2015-06-16 08:24:35.000000000","message":"Done","commit_id":"e3af7490ac3456ce7d35639efe91b5dc30e5a9fb"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"f05ec76e2cd0459b2f231ce9f96614933b02f097","unresolved":false,"context_lines":[{"line_number":926,"context_line":"        root \u003d huawei_utils.parse_xml_file(self.configuration)"},{"line_number":927,"context_line":"        pool_names \u003d root.findtext(\u0027Storage/StoragePool\u0027)"},{"line_number":928,"context_line":"        if not pool_names:"},{"line_number":929,"context_line":"            err_msg \u003d (_(\"Invalid resource pool\"))"},{"line_number":930,"context_line":"            LOG.error(err_msg)"},{"line_number":931,"context_line":"            raise exception.InvalidInput(err_msg)"},{"line_number":932,"context_line":"        data \u003d {}"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_2f9f80b5","line":929,"updated":"2015-06-16 07:21:21.000000000","message":"Please put a more specific message here and localize it with _LE.","commit_id":"e3af7490ac3456ce7d35639efe91b5dc30e5a9fb"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"0e0991ab345100a24af303a9dcfb0995c42eec97","unresolved":false,"context_lines":[{"line_number":926,"context_line":"        root \u003d huawei_utils.parse_xml_file(self.configuration)"},{"line_number":927,"context_line":"        pool_names \u003d root.findtext(\u0027Storage/StoragePool\u0027)"},{"line_number":928,"context_line":"        if not pool_names:"},{"line_number":929,"context_line":"            err_msg \u003d (_(\"Invalid resource pool\"))"},{"line_number":930,"context_line":"            LOG.error(err_msg)"},{"line_number":931,"context_line":"            raise exception.InvalidInput(err_msg)"},{"line_number":932,"context_line":"        data \u003d {}"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_a5ac0f36","line":929,"in_reply_to":"fa32b979_2f9f80b5","updated":"2015-06-16 08:24:35.000000000","message":"Done","commit_id":"e3af7490ac3456ce7d35639efe91b5dc30e5a9fb"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"d86b3e895f3d50b7e76e823030e0caaa53f94388","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _find_pool_info(self, pool_name):"},{"line_number":154,"context_line":"        if not pool_name:"},{"line_number":155,"context_line":"            err_msg \u003d (_LE("},{"line_number":156,"context_line":"                \u0027Invalid resource pool name,\u0027"},{"line_number":157,"context_line":"                \u0027Please check the config file.\u0027))"},{"line_number":158,"context_line":"            LOG.error(err_msg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_24746ccd","line":155,"updated":"2015-06-16 15:31:36.000000000","message":"The previous way you had it was correct!    Since err_mg is being passed to an exception as well as the log, it should be _().","commit_id":"9563696beb0c5de3470def008c8d23a07dd99e9c"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"2f8a8b2258532407ad5a6f5970353b7e50de7ebb","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _find_pool_info(self, pool_name):"},{"line_number":154,"context_line":"        if not pool_name:"},{"line_number":155,"context_line":"            err_msg \u003d (_LE("},{"line_number":156,"context_line":"                \u0027Invalid resource pool name,\u0027"},{"line_number":157,"context_line":"                \u0027Please check the config file.\u0027))"},{"line_number":158,"context_line":"            LOG.error(err_msg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_c996d73e","line":155,"in_reply_to":"fa32b979_24746ccd","updated":"2015-06-17 08:53:51.000000000","message":"Thanks, I will fix this soon.","commit_id":"9563696beb0c5de3470def008c8d23a07dd99e9c"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"d86b3e895f3d50b7e76e823030e0caaa53f94388","unresolved":false,"context_lines":[{"line_number":928,"context_line":"        root \u003d huawei_utils.parse_xml_file(self.configuration)"},{"line_number":929,"context_line":"        pool_names \u003d root.findtext(\u0027Storage/StoragePool\u0027)"},{"line_number":930,"context_line":"        if not pool_names:"},{"line_number":931,"context_line":"            err_msg \u003d (_LE("},{"line_number":932,"context_line":"                \u0027Invalid resource pool name,\u0027"},{"line_number":933,"context_line":"                \u0027Please check the config file.\u0027))"},{"line_number":934,"context_line":"            LOG.error(err_msg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_8419b88a","line":931,"updated":"2015-06-16 15:31:36.000000000","message":"Ditto","commit_id":"9563696beb0c5de3470def008c8d23a07dd99e9c"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"214609e9e7b6aadd1f08399fff0d1d63cfd9690b","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        self._assert_data_in_result(result, \u0027Query resource pool error.\u0027)"},{"line_number":196,"context_line":"        return result"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def _find_pool_info(self, pool_name, result):"},{"line_number":199,"context_line":"        poolinfo \u003d {}"},{"line_number":200,"context_line":"        if not pool_name:"},{"line_number":201,"context_line":"            return poolinfo"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba3cc151_c0c9e879","line":198,"updated":"2015-07-01 07:07:55.000000000","message":"i think you can create a generic function instead of using two functions \u0027_find_pool_info and find_pool_info_by_name\u0027 .","commit_id":"b16ec8d6d9012e0dd54b3fee51cd4f2658756a47"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2073e7fef90855f4ce385f15e95431f7970107ab","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        self._assert_data_in_result(result, \u0027Query resource pool error.\u0027)"},{"line_number":196,"context_line":"        return result"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def _find_pool_info(self, pool_name, result):"},{"line_number":199,"context_line":"        poolinfo \u003d {}"},{"line_number":200,"context_line":"        if not pool_name:"},{"line_number":201,"context_line":"            return poolinfo"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba3cc151_2c36f1b4","line":198,"in_reply_to":"ba3cc151_c0c9e879","updated":"2015-07-06 02:14:23.000000000","message":"Done","commit_id":"b16ec8d6d9012e0dd54b3fee51cd4f2658756a47"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"2a9efc608e712dc5e255bfe394b5cded55bcc90d","unresolved":false,"context_lines":[{"line_number":1036,"context_line":"        pool_names \u003d root.findtext(\u0027Storage/StoragePool\u0027)"},{"line_number":1037,"context_line":"        if not pool_names:"},{"line_number":1038,"context_line":"            msg \u003d (_("},{"line_number":1039,"context_line":"                \u0027Invalid resource pool name,\u0027"},{"line_number":1040,"context_line":"                \u0027Please check the config file.\u0027))"},{"line_number":1041,"context_line":"            LOG.error(msg)"},{"line_number":1042,"context_line":"            raise exception.InvalidInput(msg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba3cc151_b704da14","line":1039,"updated":"2015-07-09 01:45:19.000000000","message":"Need a blank space at the end of the sentence.","commit_id":"9c56617fa0a6811e5299832eacec0a3e6f8210ad"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"80bebe0e42fc74dc98e58bdfc0fa493397e1bc7c","unresolved":false,"context_lines":[{"line_number":802,"context_line":"        self._assert_rest_result(result, \u0027Find lun group from mapping view \u0027"},{"line_number":803,"context_line":"                                 \u0027error.\u0027)"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"        return self._get_id_from_result(result, lungroup_id, \u0027ID\u0027)"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"    def start_luncopy(self, luncopyid):"},{"line_number":808,"context_line":"        \"\"\"Start a LUNcopy.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"9a41bdd9_2bcca434","line":805,"updated":"2015-07-11 11:24:46.000000000","message":"lungroup_id has no value here","commit_id":"82d7a73db15caef88574e164487a887c96acfa86"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9c20de2c74587dbdd6c3d6380e791a09121b5efd","unresolved":false,"context_lines":[{"line_number":802,"context_line":"        self._assert_rest_result(result, \u0027Find lun group from mapping view \u0027"},{"line_number":803,"context_line":"                                 \u0027error.\u0027)"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"        return self._get_id_from_result(result, lungroup_id, \u0027ID\u0027)"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"    def start_luncopy(self, luncopyid):"},{"line_number":808,"context_line":"        \"\"\"Start a LUNcopy.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"9a41bdd9_5d4d0a71","line":805,"in_reply_to":"9a41bdd9_2bcca434","updated":"2015-07-13 03:47:06.000000000","message":"Done","commit_id":"82d7a73db15caef88574e164487a887c96acfa86"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"80bebe0e42fc74dc98e58bdfc0fa493397e1bc7c","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1170,"context_line":"        self._assert_rest_result(result, \u0027Get lungroupid by lunid error.\u0027)"},{"line_number":1171,"context_line":""},{"line_number":1172,"context_line":"        return self._get_id_from_result(result, lun_group_id, \u0027ID\u0027)"},{"line_number":1173,"context_line":""},{"line_number":1174,"context_line":"    def get_lun_info(self, lun_id):"},{"line_number":1175,"context_line":"        url \u003d self.url + \"/lun/\" + lun_id"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a41bdd9_8bdb70ed","line":1172,"updated":"2015-07-11 11:24:46.000000000","message":"ditto","commit_id":"82d7a73db15caef88574e164487a887c96acfa86"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9c20de2c74587dbdd6c3d6380e791a09121b5efd","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1170,"context_line":"        self._assert_rest_result(result, \u0027Get lungroupid by lunid error.\u0027)"},{"line_number":1171,"context_line":""},{"line_number":1172,"context_line":"        return self._get_id_from_result(result, lun_group_id, \u0027ID\u0027)"},{"line_number":1173,"context_line":""},{"line_number":1174,"context_line":"    def get_lun_info(self, lun_id):"},{"line_number":1175,"context_line":"        url \u003d self.url + \"/lun/\" + lun_id"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a41bdd9_bd31b6ee","line":1172,"in_reply_to":"9a41bdd9_8bdb70ed","updated":"2015-07-13 03:47:06.000000000","message":"Done","commit_id":"82d7a73db15caef88574e164487a887c96acfa86"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"96101dba2e105c5754b0feef906ff218432a52a8","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        result \u003d self.call(url, data, \"DELETE\")"},{"line_number":160,"context_line":"        self._assert_rest_result(result, \u0027Delete lun error.\u0027)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def find_all_pool(self):"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        url \u003d self.url + \"/storagepool\""},{"line_number":165,"context_line":"        result \u003d self.call(url, None)"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_b654c7c9","line":162,"updated":"2015-07-15 23:13:29.000000000","message":"Should this be plural? find_all_pools","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ff13cf90ae015929c0793e9af393abd383c308cd","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        result \u003d self.call(url, data, \"DELETE\")"},{"line_number":160,"context_line":"        self._assert_rest_result(result, \u0027Delete lun error.\u0027)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def find_all_pool(self):"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        url \u003d self.url + \"/storagepool\""},{"line_number":165,"context_line":"        result \u003d self.call(url, None)"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_aca6b3ab","line":162,"in_reply_to":"9a41bdd9_b654c7c9","updated":"2015-07-16 03:59:32.000000000","message":"Done","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"96101dba2e105c5754b0feef906ff218432a52a8","unresolved":false,"context_lines":[{"line_number":812,"context_line":"        self._assert_rest_result(result, \u0027Start LUNcopy error.\u0027)"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    def _get_capacity(self, pool_name, result):"},{"line_number":815,"context_line":"        \"\"\"Get free capacity and total capacity of the pools.\"\"\""},{"line_number":816,"context_line":"        poolinfo \u003d self._find_pool_info(pool_name, result)"},{"line_number":817,"context_line":"        pool_capacity \u003d {\u0027total_capacity\u0027: 0.0,"},{"line_number":818,"context_line":"                         \u0027free_capacity\u0027: 0.0}"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_76bddfd6","line":815,"updated":"2015-07-15 23:13:29.000000000","message":"This probably gets capacity information for the pool identified by the pool_name. No need to update docstring with pools.","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ff13cf90ae015929c0793e9af393abd383c308cd","unresolved":false,"context_lines":[{"line_number":812,"context_line":"        self._assert_rest_result(result, \u0027Start LUNcopy error.\u0027)"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    def _get_capacity(self, pool_name, result):"},{"line_number":815,"context_line":"        \"\"\"Get free capacity and total capacity of the pools.\"\"\""},{"line_number":816,"context_line":"        poolinfo \u003d self._find_pool_info(pool_name, result)"},{"line_number":817,"context_line":"        pool_capacity \u003d {\u0027total_capacity\u0027: 0.0,"},{"line_number":818,"context_line":"                         \u0027free_capacity\u0027: 0.0}"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_accd5367","line":815,"in_reply_to":"9a41bdd9_76bddfd6","updated":"2015-07-16 03:59:32.000000000","message":"Done","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"96101dba2e105c5754b0feef906ff218432a52a8","unresolved":false,"context_lines":[{"line_number":958,"context_line":"        data[\"pools\"] \u003d []"},{"line_number":959,"context_line":"        result \u003d self.find_all_pool()"},{"line_number":960,"context_line":"        for pool_name in pool_names.split(\";\"):"},{"line_number":961,"context_line":"            pool_name \u003d pool_name.strip()"},{"line_number":962,"context_line":"            pool_name \u003d pool_name.strip(\u0027\\n\u0027)"},{"line_number":963,"context_line":"            capacity \u003d self._get_capacity(pool_name, result)"},{"line_number":964,"context_line":"            pool \u003d {}"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_7692bf4d","line":961,"updated":"2015-07-15 23:13:29.000000000","message":"pool_name.strip() is sufficient.","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ff13cf90ae015929c0793e9af393abd383c308cd","unresolved":false,"context_lines":[{"line_number":958,"context_line":"        data[\"pools\"] \u003d []"},{"line_number":959,"context_line":"        result \u003d self.find_all_pool()"},{"line_number":960,"context_line":"        for pool_name in pool_names.split(\";\"):"},{"line_number":961,"context_line":"            pool_name \u003d pool_name.strip()"},{"line_number":962,"context_line":"            pool_name \u003d pool_name.strip(\u0027\\n\u0027)"},{"line_number":963,"context_line":"            capacity \u003d self._get_capacity(pool_name, result)"},{"line_number":964,"context_line":"            pool \u003d {}"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_2c1b8382","line":961,"in_reply_to":"9a41bdd9_7692bf4d","updated":"2015-07-16 03:59:32.000000000","message":"pool_name.strip() will not update the value of pool_name, but I want update the value of pool_name here.","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"96101dba2e105c5754b0feef906ff218432a52a8","unresolved":false,"context_lines":[{"line_number":959,"context_line":"        result \u003d self.find_all_pool()"},{"line_number":960,"context_line":"        for pool_name in pool_names.split(\";\"):"},{"line_number":961,"context_line":"            pool_name \u003d pool_name.strip()"},{"line_number":962,"context_line":"            pool_name \u003d pool_name.strip(\u0027\\n\u0027)"},{"line_number":963,"context_line":"            capacity \u003d self._get_capacity(pool_name, result)"},{"line_number":964,"context_line":"            pool \u003d {}"},{"line_number":965,"context_line":"            pool.update(dict("}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_f6a6cfac","line":962,"updated":"2015-07-15 23:13:29.000000000","message":"pool_name.strip(\u0027\\n\u0027) is sufficient.","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"96101dba2e105c5754b0feef906ff218432a52a8","unresolved":false,"context_lines":[{"line_number":961,"context_line":"            pool_name \u003d pool_name.strip()"},{"line_number":962,"context_line":"            pool_name \u003d pool_name.strip(\u0027\\n\u0027)"},{"line_number":963,"context_line":"            capacity \u003d self._get_capacity(pool_name, result)"},{"line_number":964,"context_line":"            pool \u003d {}"},{"line_number":965,"context_line":"            pool.update(dict("},{"line_number":966,"context_line":"                pool_name\u003dpool_name,"},{"line_number":967,"context_line":"                total_capacity_gb\u003dcapacity[\u0027total_capacity\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_762e3ffc","line":964,"updated":"2015-07-15 23:13:29.000000000","message":"Not needed.","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ff13cf90ae015929c0793e9af393abd383c308cd","unresolved":false,"context_lines":[{"line_number":961,"context_line":"            pool_name \u003d pool_name.strip()"},{"line_number":962,"context_line":"            pool_name \u003d pool_name.strip(\u0027\\n\u0027)"},{"line_number":963,"context_line":"            capacity \u003d self._get_capacity(pool_name, result)"},{"line_number":964,"context_line":"            pool \u003d {}"},{"line_number":965,"context_line":"            pool.update(dict("},{"line_number":966,"context_line":"                pool_name\u003dpool_name,"},{"line_number":967,"context_line":"                total_capacity_gb\u003dcapacity[\u0027total_capacity\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_b76b5cb6","line":964,"in_reply_to":"9a41bdd9_762e3ffc","updated":"2015-07-16 03:59:32.000000000","message":"I have tested this, it is needed, or it will raise \u0027not defined\u0027 error.","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"96101dba2e105c5754b0feef906ff218432a52a8","unresolved":false,"context_lines":[{"line_number":962,"context_line":"            pool_name \u003d pool_name.strip(\u0027\\n\u0027)"},{"line_number":963,"context_line":"            capacity \u003d self._get_capacity(pool_name, result)"},{"line_number":964,"context_line":"            pool \u003d {}"},{"line_number":965,"context_line":"            pool.update(dict("},{"line_number":966,"context_line":"                pool_name\u003dpool_name,"},{"line_number":967,"context_line":"                total_capacity_gb\u003dcapacity[\u0027total_capacity\u0027],"},{"line_number":968,"context_line":"                free_capacity_gb\u003dcapacity[\u0027free_capacity\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_b6f12797","line":965,"updated":"2015-07-15 23:13:29.000000000","message":"you can do \n\npool \u003d { \u0027key\u0027 : \u0027value\u0027 }","commit_id":"bb8ecc964b0ca7b7f2d13368290651188359f702"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"a9f5f8eeafe686d0dab73223da4b1ca490d25f65","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        if \"data\" in result:"},{"line_number":175,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":176,"context_line":"                if pool_name.strip() \u003d\u003d item[\u0027NAME\u0027]:"},{"line_number":177,"context_line":"                    if \u0027USAGETYPE\u0027 in item and item[\u0027USAGETYPE\u0027] \u003d\u003d \u00272\u0027:"},{"line_number":178,"context_line":"                        break"},{"line_number":179,"context_line":"                    poolinfo[\u0027ID\u0027] \u003d item[\u0027ID\u0027]"},{"line_number":180,"context_line":"                    poolinfo[\u0027CAPACITY\u0027] \u003d item[\u0027USERFREECAPACITY\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_9c1f455b","line":177,"updated":"2015-07-18 18:36:44.000000000","message":"Can you add unit test for this condition?","commit_id":"0420b1ba0f98296e40a14dde1c7489a788152e03"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"69a30b1f4843e2b4acace8f1841fe7e05aee0ef2","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        if \"data\" in result:"},{"line_number":175,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":176,"context_line":"                if pool_name.strip() \u003d\u003d item[\u0027NAME\u0027]:"},{"line_number":177,"context_line":"                    if \u0027USAGETYPE\u0027 in item and item[\u0027USAGETYPE\u0027] \u003d\u003d \u00272\u0027:"},{"line_number":178,"context_line":"                        break"},{"line_number":179,"context_line":"                    poolinfo[\u0027ID\u0027] \u003d item[\u0027ID\u0027]"},{"line_number":180,"context_line":"                    poolinfo[\u0027CAPACITY\u0027] \u003d item[\u0027USERFREECAPACITY\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_f0030875","line":177,"in_reply_to":"3a50d1a3_9c1f455b","updated":"2015-07-19 04:20:01.000000000","message":"+1\n\nWhat does \u0027USAGETYPE\u0027 mean?  Can you add a comment why you break here?","commit_id":"0420b1ba0f98296e40a14dde1c7489a788152e03"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"760e41266377231c02784973617d7809432001f9","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        if \"data\" in result:"},{"line_number":175,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":176,"context_line":"                if pool_name.strip() \u003d\u003d item[\u0027NAME\u0027]:"},{"line_number":177,"context_line":"                    if \u0027USAGETYPE\u0027 in item and item[\u0027USAGETYPE\u0027] \u003d\u003d \u00272\u0027:"},{"line_number":178,"context_line":"                        break"},{"line_number":179,"context_line":"                    poolinfo[\u0027ID\u0027] \u003d item[\u0027ID\u0027]"},{"line_number":180,"context_line":"                    poolinfo[\u0027CAPACITY\u0027] \u003d item[\u0027USERFREECAPACITY\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_63c5f159","line":177,"in_reply_to":"3a50d1a3_9c1f455b","updated":"2015-07-19 11:54:07.000000000","message":"Done","commit_id":"0420b1ba0f98296e40a14dde1c7489a788152e03"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"760e41266377231c02784973617d7809432001f9","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        if \"data\" in result:"},{"line_number":175,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":176,"context_line":"                if pool_name.strip() \u003d\u003d item[\u0027NAME\u0027]:"},{"line_number":177,"context_line":"                    if \u0027USAGETYPE\u0027 in item and item[\u0027USAGETYPE\u0027] \u003d\u003d \u00272\u0027:"},{"line_number":178,"context_line":"                        break"},{"line_number":179,"context_line":"                    poolinfo[\u0027ID\u0027] \u003d item[\u0027ID\u0027]"},{"line_number":180,"context_line":"                    poolinfo[\u0027CAPACITY\u0027] \u003d item[\u0027USERFREECAPACITY\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_23a609c2","line":177,"in_reply_to":"3a50d1a3_f0030875","updated":"2015-07-19 11:54:07.000000000","message":"Done","commit_id":"0420b1ba0f98296e40a14dde1c7489a788152e03"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"a9f5f8eeafe686d0dab73223da4b1ca490d25f65","unresolved":false,"context_lines":[{"line_number":961,"context_line":"            pool_name \u003d pool_name.strip(\u0027\\n\u0027)"},{"line_number":962,"context_line":"            capacity \u003d self._get_capacity(pool_name, result)"},{"line_number":963,"context_line":"            pool \u003d {}"},{"line_number":964,"context_line":"            pool.update(dict("},{"line_number":965,"context_line":"                pool_name\u003dpool_name,"},{"line_number":966,"context_line":"                total_capacity_gb\u003dcapacity[\u0027total_capacity\u0027],"},{"line_number":967,"context_line":"                free_capacity_gb\u003dcapacity[\u0027free_capacity\u0027],"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a43c5e1_dd62ab16","line":964,"updated":"2015-07-18 18:36:44.000000000","message":"Instead of  doing pool \u003d {} and pool.update()\n\nSuggesting \n\npool \u003d { pool_name : pool_name, totaol_capacity_gb : capacity[\u0027total_capacity\u0027] ..... }","commit_id":"0420b1ba0f98296e40a14dde1c7489a788152e03"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"760e41266377231c02784973617d7809432001f9","unresolved":false,"context_lines":[{"line_number":961,"context_line":"            pool_name \u003d pool_name.strip(\u0027\\n\u0027)"},{"line_number":962,"context_line":"            capacity \u003d self._get_capacity(pool_name, result)"},{"line_number":963,"context_line":"            pool \u003d {}"},{"line_number":964,"context_line":"            pool.update(dict("},{"line_number":965,"context_line":"                pool_name\u003dpool_name,"},{"line_number":966,"context_line":"                total_capacity_gb\u003dcapacity[\u0027total_capacity\u0027],"},{"line_number":967,"context_line":"                free_capacity_gb\u003dcapacity[\u0027free_capacity\u0027],"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_038f4d24","line":964,"in_reply_to":"5a43c5e1_dd62ab16","updated":"2015-07-19 11:54:07.000000000","message":"Done","commit_id":"0420b1ba0f98296e40a14dde1c7489a788152e03"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"fec5bc5d54714b6424d91143fc23719d8f8a49ef","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        if \"data\" in result:"},{"line_number":175,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":176,"context_line":"                if pool_name.strip() \u003d\u003d item[\u0027NAME\u0027]:"},{"line_number":177,"context_line":"                    # USAGETYPE means the pool type, 2 means this pool is used"},{"line_number":178,"context_line":"                    # for file system."},{"line_number":179,"context_line":"                    if (\u0027USAGETYPE\u0027 in item and"},{"line_number":180,"context_line":"                       item[\u0027USAGETYPE\u0027] \u003d\u003d constants.FILE_SYSTEM_POOL_TYPE):"}],"source_content_type":"text/x-python","patch_set":21,"id":"3a50d1a3_52e940e5","line":177,"updated":"2015-07-21 13:42:12.000000000","message":"2 \u003d FILE_SYSTEM_POOL_TYPE?  The second half of this comment is confusing.","commit_id":"186858b4bc31220878c9697e6b1a016adc48c791"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"46aac59abde9c291cdb6637a1cdeafcb5ef3c4fa","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        if \"data\" in result:"},{"line_number":175,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":176,"context_line":"                if pool_name.strip() \u003d\u003d item[\u0027NAME\u0027]:"},{"line_number":177,"context_line":"                    # USAGETYPE means the pool type, 2 means this pool is used"},{"line_number":178,"context_line":"                    # for file system."},{"line_number":179,"context_line":"                    if (\u0027USAGETYPE\u0027 in item and"},{"line_number":180,"context_line":"                       item[\u0027USAGETYPE\u0027] \u003d\u003d constants.FILE_SYSTEM_POOL_TYPE):"}],"source_content_type":"text/x-python","patch_set":21,"id":"3a50d1a3_18cc3669","line":177,"in_reply_to":"3a50d1a3_52e940e5","updated":"2015-07-22 02:36:32.000000000","message":"Done","commit_id":"186858b4bc31220878c9697e6b1a016adc48c791"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"ba0816057ab6e0e24c33478f019ee9925b2e1126","unresolved":false,"context_lines":[{"line_number":1055,"context_line":"        result \u003d self.find_all_pools()"},{"line_number":1056,"context_line":"        for pool_name in pool_names.split(\";\"):"},{"line_number":1057,"context_line":"            pool_name \u003d pool_name.strip()"},{"line_number":1058,"context_line":"            pool_name \u003d pool_name.strip(\u0027\\n\u0027)"},{"line_number":1059,"context_line":"            capacity \u003d self._get_capacity(pool_name, result)"},{"line_number":1060,"context_line":"            pool \u003d {\u0027pool_name\u0027: pool_name,"},{"line_number":1061,"context_line":"                    \u0027total_capacity_gb\u0027: capacity[\u0027total_capacity\u0027],"}],"source_content_type":"text/x-python","patch_set":25,"id":"3a50d1a3_2734b548","line":1058,"updated":"2015-07-24 14:02:21.000000000","message":"Might want to consider using: pool_name \u003d s.strip(\u0027 \\t\\n\\r\u0027).  See http://stackoverflow.com/questions/1185524/how-to-trim-whitespace-including-tabs.","commit_id":"dd8f1b4925585adc93931408edebdc15a425d9cb"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"7d64b36a3fe850791cea05e09f4880416a2b11c5","unresolved":false,"context_lines":[{"line_number":1055,"context_line":"        result \u003d self.find_all_pools()"},{"line_number":1056,"context_line":"        for pool_name in pool_names.split(\";\"):"},{"line_number":1057,"context_line":"            pool_name \u003d pool_name.strip()"},{"line_number":1058,"context_line":"            pool_name \u003d pool_name.strip(\u0027\\n\u0027)"},{"line_number":1059,"context_line":"            capacity \u003d self._get_capacity(pool_name, result)"},{"line_number":1060,"context_line":"            pool \u003d {\u0027pool_name\u0027: pool_name,"},{"line_number":1061,"context_line":"                    \u0027total_capacity_gb\u0027: capacity[\u0027total_capacity\u0027],"}],"source_content_type":"text/x-python","patch_set":25,"id":"3a50d1a3_080c0f3a","line":1058,"in_reply_to":"3a50d1a3_2734b548","updated":"2015-07-25 05:06:09.000000000","message":"Thanks for your suggestion! Done.","commit_id":"dd8f1b4925585adc93931408edebdc15a425d9cb"}]}
