)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"558a80e4dab26a22860f37eda95f738981f3eb93","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     yifan403 \u003cyifan403@163.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-12-16 22:05:00 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add zte cinder driver and unit test file."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ica182122d3d4180616cfe630223c7d503f2eaebc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a7e1126_fc85c758","line":7,"range":{"start_line":7,"start_character":40,"end_line":7,"end_character":41},"updated":"2015-12-17 17:05:29.000000000","message":"First line should not end with a period.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"621b891e512c5ea3080dfcde5fda0474f2cfba73"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2455131d9379a9bfa26853d25320a00b9e9c8655","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     yifan403 \u003cyifan403@163.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-12-16 22:05:00 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add zte cinder driver and unit test file."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ica182122d3d4180616cfe630223c7d503f2eaebc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a7e1126_a7697c27","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":41},"updated":"2015-12-17 14:03:20.000000000","message":"Please, start commit message with upper-case letter","commit_id":"621b891e512c5ea3080dfcde5fda0474f2cfba73"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"11c992b743a11452a7acf29bc7adaa85c4530ab9","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-12-16 22:05:00 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add zte cinder driver and unit test file."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ica182122d3d4180616cfe630223c7d503f2eaebc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a7e1126_998295ff","line":8,"updated":"2015-12-17 16:55:09.000000000","message":"This needs a DocImpact tag and a blueprint associated with this patch as well.","commit_id":"621b891e512c5ea3080dfcde5fda0474f2cfba73"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"558a80e4dab26a22860f37eda95f738981f3eb93","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-12-16 22:05:00 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add zte cinder driver and unit test file."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ica182122d3d4180616cfe630223c7d503f2eaebc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a7e1126_995a9582","line":8,"in_reply_to":"3a7e1126_998295ff","updated":"2015-12-17 17:05:29.000000000","message":"There should be more info here describing this patch.","commit_id":"621b891e512c5ea3080dfcde5fda0474f2cfba73"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"8fb6491bd8d35d5267b58e8aa54a3d214e976828","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"DocImpact"},{"line_number":12,"context_line":"Implements: blueprint \"Add ZTE Block Storage Driver for ZTE ZXCLOUD"},{"line_number":13,"context_line":"Storage arrays with iSCSI\""},{"line_number":14,"context_line":"Change-Id: Ica182122d3d4180616cfe630223c7d503f2eaebc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a7e1126_6dcd6ab6","line":13,"range":{"start_line":13,"start_character":25,"end_line":13,"end_character":26},"updated":"2015-12-18 15:59:34.000000000","message":"The text after the keyword blueprint should end up being a link to the bp so here\u0027s what it should look like:\n\nImplements: bp zte-cinder-driver","commit_id":"26cde5ef2f1a226b3bad31e8237ef74f01f30817"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"6e6bed5bbfbeaf7318f5b076aa0d582a86c5e7b3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     yifan403 \u003cyifan403@163.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-12-22 16:07:15 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add ZTE Block Storage Driver for ZTE ZXCLOUD Storage arrays with iSCSI."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"It will support the minimum set of features required in Icehouse:"},{"line_number":10,"context_line":" * Volume Create/Delete"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"1a7b0d38_f408ce93","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":71},"updated":"2015-12-22 15:54:37.000000000","message":"First line should be limited to 50 characters and should not end with a period.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"62f26f2520a751c477c50c42c02d586176256e54"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add ZTE Block Storage Driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"It will support the minimum set of features required in Icehouse:"},{"line_number":10,"context_line":" * Volume Create/Delete"},{"line_number":11,"context_line":" * Volume Attach/Detach"},{"line_number":12,"context_line":" * Snapshot Create/Delete"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1a7b0d38_52a63b54","line":9,"updated":"2015-12-24 18:15:47.000000000","message":"s/Icehouse/Mitaka","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"f5213b712dcc3d3ab395c2ec8da03dee29cbb94a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     yifan403 \u003cyifan403@163.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-12-25 15:07:13 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add ZTE Block Storage Driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"It will support the minimum set of features required in Mitaka:"},{"line_number":10,"context_line":" * Volume Create/Delete"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"da6ed579_f348b72f","line":7,"range":{"start_line":7,"start_character":28,"end_line":7,"end_character":29},"updated":"2016-01-12 16:35:25.000000000","message":"First line in commit message should not end with a period.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"4058012669db82c4c66003cf1cba5843e976c16b"}],"cinder/tests/unit/test_zte_ks.py":[{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"558a80e4dab26a22860f37eda95f738981f3eb93","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 Zte Data Systems, Inc.\r"},{"line_number":2,"context_line":"# Copyright (c) 2013 OpenStack Foundation\r"},{"line_number":3,"context_line":"# All Rights Reserved.\r"},{"line_number":4,"context_line":"#\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_3c302fe8","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2015-12-17 17:05:29.000000000","message":"Should this be updated to 2015?","commit_id":"621b891e512c5ea3080dfcde5fda0474f2cfba73"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2455131d9379a9bfa26853d25320a00b9e9c8655","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Self test for ZTE Storage Driver platform.\r"},{"line_number":20,"context_line":"\"\"\"\r"},{"line_number":21,"context_line":"import mock\r"},{"line_number":22,"context_line":"import mox\r"},{"line_number":23,"context_line":"import os\r"},{"line_number":24,"context_line":"import shutil\r"},{"line_number":25,"context_line":"import socket\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_27f26c70","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":6},"updated":"2015-12-17 14:03:20.000000000","message":"Please, don\u0027t use mox for new tests","commit_id":"621b891e512c5ea3080dfcde5fda0474f2cfba73"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2455131d9379a9bfa26853d25320a00b9e9c8655","unresolved":false,"context_lines":[{"line_number":280,"context_line":"\r"},{"line_number":281,"context_line":"        return iscsi_info\r"},{"line_number":282,"context_line":"\r"},{"line_number":283,"context_line":"\r"},{"line_number":284,"context_line":"class ZteBaseDriverTestCase(object):\r"},{"line_number":285,"context_line":"    def test_create_volume_success(self):\r"},{"line_number":286,"context_line":"        self.driver.test_flag \u003d True\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_672b9495","line":283,"updated":"2015-12-17 14:03:20.000000000","message":"Does it tests anything except fake driver?","commit_id":"621b891e512c5ea3080dfcde5fda0474f2cfba73"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2455131d9379a9bfa26853d25320a00b9e9c8655","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        self.assertRaises(exception.CinderException,\r"},{"line_number":464,"context_line":"                          self.driver.terminate_connection, vol, connector)\r"},{"line_number":465,"context_line":"\r"},{"line_number":466,"context_line":"    def create_fake_conf(self):\r"},{"line_number":467,"context_line":"        self.driver.cfg.SERVER.ControllerIP0 \u003d \u0027129.0.63.2\u0027\r"},{"line_number":468,"context_line":"        self.driver.cfg.SERVER.LocalIP \u003d \u0027129.0.0.8\u0027\r"},{"line_number":469,"context_line":"        self.driver.cfg.SERVER.UserName \u003d \u0027admin\u0027\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_27c02ce0","line":466,"range":{"start_line":466,"start_character":8,"end_line":466,"end_character":24},"updated":"2015-12-17 14:03:20.000000000","message":"This function is not used in tests. Do we need it?","commit_id":"621b891e512c5ea3080dfcde5fda0474f2cfba73"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":224,"context_line":"    def test_create_volume_success(self):"},{"line_number":225,"context_line":"        self.driver.test_flag \u003d True"},{"line_number":226,"context_line":"        self.driver.create_volume(volume_paras)"},{"line_number":227,"context_line":"        self.assertEqual(self.driver.result, zte_pub.ZTE_SUCCESS)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def test_create_volume_fail(self):"},{"line_number":230,"context_line":"        self.driver.test_flag \u003d False"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_edd3ca36","line":227,"updated":"2015-12-24 18:15:47.000000000","message":"Order for AssertEqual should be ( expected value, Actual value )","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":234,"context_line":"    def test_delete_volume_success(self):"},{"line_number":235,"context_line":"        self.driver.test_flag \u003d True"},{"line_number":236,"context_line":"        self.driver.delete_volume(volume_paras)"},{"line_number":237,"context_line":"        self.assertEqual(self.driver.result,"},{"line_number":238,"context_line":"                         zte_pub.ZTE_SUCCESS)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def test_delete_volume_fail(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_0dd73624","line":237,"updated":"2015-12-24 18:15:47.000000000","message":"Order for AssertEqual should be ( expected value, Actual value )","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        vol \u003d {\u0027name\u0027: \u0027volume-21ec7341-9256-497b-97d9-ef48edcf0635\u0027,"},{"line_number":248,"context_line":"               \u0027source_volid\u0027: \u002768a52c1e-ecbe-4f6c-954c-9f551347ff3f\u0027}"},{"line_number":249,"context_line":"        self.driver.delete_volume(vol)"},{"line_number":250,"context_line":"        self.assertEqual(self.driver.result,"},{"line_number":251,"context_line":"                         zte_pub.ZTE_SUCCESS)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    def test_delete_cloned_volume_fail(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_6de83ae3","line":250,"updated":"2015-12-24 18:15:47.000000000","message":"Order for AssertEqual should be ( expected value, Actual value )","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                        \u0027volume-21ec7341-9256-497b-97d9-ef48edcf0635\u0027,"},{"line_number":265,"context_line":"                    \u0027volume_size\u0027: 2}"},{"line_number":266,"context_line":"        self.driver.create_snapshot(snap_vol)"},{"line_number":267,"context_line":"        self.assertEqual(self.driver.result, zte_pub.ZTE_SUCCESS)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def test_create_snapshot_fail(self):"},{"line_number":270,"context_line":"        self.driver.test_flag \u003d False"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_8de32605","line":267,"updated":"2015-12-24 18:15:47.000000000","message":"Order for AssertEqual should be ( expected value, Actual value )","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        snap_vol \u003d {\u0027name\u0027: \u0027snapshot-2b9b982a-8b56-46e3-9d4f-6392e8a72e6e\u0027}"},{"line_number":281,"context_line":"        self.driver.delete_snapshot(snap_vol)"},{"line_number":282,"context_line":"        self.assertEqual(self.driver.result,"},{"line_number":283,"context_line":"                         zte_pub.ZTE_SUCCESS)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def test_delete_snapshot_fail(self):"},{"line_number":286,"context_line":"        self.driver.test_flag \u003d False"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_2df232d3","line":283,"updated":"2015-12-24 18:15:47.000000000","message":"Order for AssertEqual should be ( expected value, Actual value )","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":301,"context_line":"    def test_create_cloned_volume_success(self):"},{"line_number":302,"context_line":"        self.driver.test_flag \u003d True"},{"line_number":303,"context_line":"        self.driver.create_cloned_volume(volume_clone, volume_paras)"},{"line_number":304,"context_line":"        self.assertEqual(self.driver.result, zte_pub.ZTE_SUCCESS)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def test_create_cloned_volume_fail(self):"},{"line_number":307,"context_line":"        self.driver.test_flag \u003d False"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_edbaeae0","line":304,"updated":"2015-12-24 18:15:47.000000000","message":"Order for AssertEqual should be ( expected value, Actual value )","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":312,"context_line":"    def test_create_volume_from_snapshot_success(self):"},{"line_number":313,"context_line":"        self.driver.test_flag \u003d True"},{"line_number":314,"context_line":"        self.driver.create_volume_from_snapshot(volume_clone, snapvolume_paras)"},{"line_number":315,"context_line":"        self.assertEqual(self.driver.result, zte_pub.ZTE_SUCCESS)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def test_create_volume_from_snapshot_fail(self):"},{"line_number":318,"context_line":"        self.driver.test_flag \u003d False"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_adb4e2f1","line":315,"updated":"2015-12-24 18:15:47.000000000","message":"Order for AssertEqual should be ( expected value, Actual value )","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                          volume_clone, volume_paras)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"class ZteISCSIDriverTestCase(ZteBaseDriverTestCase, test.TestCase):"},{"line_number":325,"context_line":"    \"\"\"Test ZTE iSCSI volume driver.\"\"\""},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_6dcfda7f","line":324,"updated":"2015-12-24 18:15:47.000000000","message":"Please change it throughout ...\n\nOrder for AssertEqual should be ( expected value, Actual value )","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012-2015 ZTE Corporation. All rights reserved"},{"line_number":2,"context_line":"# Copyright (c) 2013 OpenStack Foundation"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_9248792f","line":2,"updated":"2016-01-18 20:04:46.000000000","message":"Shouldn\u0027t have OpenStack Foundation listed unless code was developed by someone working directly for the foundation.","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"}],"cinder/volume/drivers/zte/__init__.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2455131d9379a9bfa26853d25320a00b9e9c8655","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 Zte Technologies Co., Ltd."},{"line_number":2,"context_line":"# Copyright (c) 2012 OpenStack LLC."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_8a148744","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":11},"updated":"2015-12-17 14:03:20.000000000","message":"Please, remove copyrights from the empty files","commit_id":"621b891e512c5ea3080dfcde5fda0474f2cfba73"}],"cinder/volume/drivers/zte/zte_ks.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2455131d9379a9bfa26853d25320a00b9e9c8655","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class ZTEConfig():"},{"line_number":37,"context_line":"    def __init__LE(self, *args, **kwargs):"},{"line_number":38,"context_line":"        opt_server_group \u003d cfg.OptGroup(name\u003d\u0027SERVER\u0027, title\u003d\u0027SERVER\u0027)"},{"line_number":39,"context_line":"        opt_lun_group \u003d cfg.OptGroup(name\u003d\u0027LUN\u0027, title\u003d\u0027LUN\u0027)"},{"line_number":40,"context_line":"        opt_iscsi_group \u003d cfg.OptGroup(name\u003d\u0027iSCSI\u0027, title\u003d\u0027iSCSI\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_8ab00745","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":18},"updated":"2015-12-17 14:03:20.000000000","message":"What is __init__LE method?","commit_id":"621b891e512c5ea3080dfcde5fda0474f2cfba73"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2455131d9379a9bfa26853d25320a00b9e9c8655","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        conf.register_opts(zte_server_opt, opt_server_group)"},{"line_number":70,"context_line":"        conf.register_opts(zte_lun_opt, opt_lun_group)"},{"line_number":71,"context_line":"        conf.register_opts(zte_iscsi_opt, opt_iscsi_group)"},{"line_number":72,"context_line":"        conf.register_opts(zte_volume_opt, opt_volume_group)"},{"line_number":73,"context_line":"        self.SERVER \u003d conf.SERVER"},{"line_number":74,"context_line":"        self.LUN \u003d conf.LUN"},{"line_number":75,"context_line":"        self.VOLUME \u003d conf.VOLUME"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_4a91bf98","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":12},"updated":"2015-12-17 14:03:20.000000000","message":"Why do you register config options inside a class?","commit_id":"621b891e512c5ea3080dfcde5fda0474f2cfba73"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"04cfb38c9d0d358e3f1b4d5540f9992be5b93055","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def _change_server(self):"},{"line_number":116,"context_line":"        if (self.login_info[\u0027ControllerIP0\u0027]) and (self.login_info[\u0027ControllerIP1\u0027]):"},{"line_number":117,"context_line":"            controller_ip \u003d self.login_info[\u0027ControllerIP1\u0027] if self.login_info[\u0027ControllerIP0\u0027] in self.url else \\"},{"line_number":118,"context_line":"                self.login_info[\u0027ControllerIP0\u0027]"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"            self.url \u003d \u0027https://\u0027 + controller_ip + \u0027/phpclient/client.php\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_68b798f5","line":117,"range":{"start_line":117,"start_character":114,"end_line":117,"end_character":115},"updated":"2015-12-18 16:20:02.000000000","message":"use parenthesis to wrap long lines instead of backslash","commit_id":"26cde5ef2f1a226b3bad31e8237ef74f01f30817"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"04cfb38c9d0d358e3f1b4d5540f9992be5b93055","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            self.session_id \u003d result[\u0027data\u0027][\u0027sessionID\u0027]"},{"line_number":131,"context_line":"            return self.session_id"},{"line_number":132,"context_line":"        else:"},{"line_number":133,"context_line":"            raise exception.CinderException(_LE(\u0027Failed to login. Return code: %(ret)s\u0027) % {\u0027ret\u0027: result[\u0027returncode\u0027]})"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def do_setup(self, context):"},{"line_number":136,"context_line":"        \"\"\"Any initialization the volume driver does while starting.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_48809cf7","line":133,"range":{"start_line":133,"start_character":12,"end_line":133,"end_character":17},"updated":"2015-12-18 16:20:02.000000000","message":"lines should be shorter than 80 characters","commit_id":"26cde5ef2f1a226b3bad31e8237ef74f01f30817"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"04cfb38c9d0d358e3f1b4d5540f9992be5b93055","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                raise exception.CinderException(err_msg)"},{"line_number":261,"context_line":"        time.sleep(6)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def _delete_clone_ralation_by_volname(self, volname, issnapshot):"},{"line_number":264,"context_line":"        svol_name \u003d {\u0027scVolName\u0027: volname}"},{"line_number":265,"context_line":"        LOG.debug(_LE(\u0027GetCvolNamesOnVol: volume name: %s.\u0027) % volname)"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_e8d628f0","line":263,"range":{"start_line":263,"start_character":8,"end_line":263,"end_character":41},"updated":"2015-12-18 16:20:02.000000000","message":"ralation or relation?","commit_id":"26cde5ef2f1a226b3bad31e8237ef74f01f30817"},{"author":{"_account_id":6492,"name":"Dmitry Russkikh","email":"d.pycckux@gmail.com","username":"drusskikh"},"change_message_id":"cf97f8220da4736023be0771476954c0171fe463","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from cinder.volume import driver"},{"line_number":32,"context_line":"from cinder.volume.drivers.zte import zte_pub"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from six.moves import urllib"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a7e1126_6ff8c2c3","line":34,"range":{"start_line":34,"start_character":5,"end_line":34,"end_character":8},"updated":"2015-12-21 13:44:43.000000000","message":"Third party module import should be located in 2nd paragraph","commit_id":"e70fdf45ee5ed9c3379d31820e95a6e0aac60b26"},{"author":{"_account_id":6492,"name":"Dmitry Russkikh","email":"d.pycckux@gmail.com","username":"drusskikh"},"change_message_id":"cf97f8220da4736023be0771476954c0171fe463","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        zte_volume_opts \u003d cfg.OptGroup(name\u003d\u0027VOLUME\u0027, title\u003d\u0027VOLUME\u0027)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        zte_server_opt \u003d ["},{"line_number":48,"context_line":"            cfg.StrOpt(\u0027ControllerIP0\u0027, default\u003d\u0027\u0027, help\u003d\u0027Local ip\u0027),"},{"line_number":49,"context_line":"            cfg.StrOpt(\u0027ControllerIP1\u0027, default\u003d\u0027\u0027, help\u003d\u0027Local ip\u0027),"},{"line_number":50,"context_line":"            cfg.StrOpt(\u0027LocalIP\u0027, default\u003d\u0027\u0027, help\u003d\u0027Local ip\u0027),"},{"line_number":51,"context_line":"            cfg.StrOpt(\u0027UserName\u0027, default\u003d\u0027admin\u0027, help\u003d\u0027User name\u0027),"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a7e1126_0fc81e73","line":48,"range":{"start_line":48,"start_character":64,"end_line":48,"end_character":66},"updated":"2015-12-21 13:44:43.000000000","message":"Abbreviations should be capitalized","commit_id":"e70fdf45ee5ed9c3379d31820e95a6e0aac60b26"},{"author":{"_account_id":6492,"name":"Dmitry Russkikh","email":"d.pycckux@gmail.com","username":"drusskikh"},"change_message_id":"cf97f8220da4736023be0771476954c0171fe463","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            cfg.StrOpt(\u0027ControllerIP1\u0027, default\u003d\u0027\u0027, help\u003d\u0027Local ip\u0027),"},{"line_number":50,"context_line":"            cfg.StrOpt(\u0027LocalIP\u0027, default\u003d\u0027\u0027, help\u003d\u0027Local ip\u0027),"},{"line_number":51,"context_line":"            cfg.StrOpt(\u0027UserName\u0027, default\u003d\u0027admin\u0027, help\u003d\u0027User name\u0027),"},{"line_number":52,"context_line":"            cfg.StrOpt(\u0027UserPassword\u0027, default\u003d\u0027admin\u0027, help\u003d\u0027User Password\u0027)"},{"line_number":53,"context_line":"        ]"},{"line_number":54,"context_line":"        zte_lun_opt \u003d ["},{"line_number":55,"context_line":"            cfg.IntOpt(\u0027ChunkSize\u0027, default\u003d4, help\u003d\u0027ChunkSize\u0027),"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a7e1126_6faf622a","line":52,"range":{"start_line":52,"start_character":67,"end_line":52,"end_character":68},"updated":"2015-12-21 13:44:43.000000000","message":"capitalized letter in a middle of sentence","commit_id":"e70fdf45ee5ed9c3379d31820e95a6e0aac60b26"},{"author":{"_account_id":6492,"name":"Dmitry Russkikh","email":"d.pycckux@gmail.com","username":"drusskikh"},"change_message_id":"cf97f8220da4736023be0771476954c0171fe463","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            cfg.StrOpt(\u0027UserPassword\u0027, default\u003d\u0027admin\u0027, help\u003d\u0027User Password\u0027)"},{"line_number":53,"context_line":"        ]"},{"line_number":54,"context_line":"        zte_lun_opt \u003d ["},{"line_number":55,"context_line":"            cfg.IntOpt(\u0027ChunkSize\u0027, default\u003d4, help\u003d\u0027ChunkSize\u0027),"},{"line_number":56,"context_line":"            cfg.IntOpt(\u0027AheadReadSize\u0027, default\u003d8, help\u003d\u0027User name\u0027),"},{"line_number":57,"context_line":"            cfg.IntOpt(\u0027CachePolicy\u0027, default\u003d1, help\u003d\u0027User name\u0027),"},{"line_number":58,"context_line":"            cfg.IntOpt(\u0027SSDCacheSwitch\u0027, default\u003d1, help\u003d\u0027SSDCacheSwitch\u0027),"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a7e1126_2a2f0889","line":55,"range":{"start_line":55,"start_character":53,"end_line":55,"end_character":62},"updated":"2015-12-21 13:44:43.000000000","message":"Split words. It\u0027s good to have grammar right sentences in the \"help\".","commit_id":"e70fdf45ee5ed9c3379d31820e95a6e0aac60b26"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"66b6400617f561b4db89165034ff00167d35caf9","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                    \u0027GetPoolInfo\u0027, {"},{"line_number":204,"context_line":"                        \u0027scPoolName\u0027: pool_name})"},{"line_number":205,"context_line":"                pool_info \u003d {\u0027name\u0027: pool_name}"},{"line_number":206,"context_line":"                if (ret[\u0027returncode\u0027] \u003d\u003d zte_pub.ZTE_SUCCESS) and \\"},{"line_number":207,"context_line":"                        (ret[\u0027data\u0027][\u0027sdwState\u0027] \u003d\u003d zte_pub.ZTE_STATUS_OK):"},{"line_number":208,"context_line":"                    pool_info[\u0027total\u0027] \u003d \\"},{"line_number":209,"context_line":"                        ret[\u0027data\u0027][\u0027qwTotalCapacity\u0027] / zte_pub.ZTE_SIZE"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a7e1126_9a5443ca","line":206,"range":{"start_line":206,"start_character":66,"end_line":206,"end_character":67},"updated":"2015-12-21 15:46:30.000000000","message":"Use parentheses to wrap long lines instead of backslash for line continuation. Please, change it everywhere.","commit_id":"e70fdf45ee5ed9c3379d31820e95a6e0aac60b26"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"66b6400617f561b4db89165034ff00167d35caf9","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                raise exception.CinderException(err_msg)"},{"line_number":319,"context_line":"        time.sleep(6)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def _delete_clone_ralation_by_volname(self, volname, issnapshot):"},{"line_number":322,"context_line":"        svol_name \u003d {\u0027scVolName\u0027: volname}"},{"line_number":323,"context_line":"        LOG.debug(_(\u0027GetCvolNamesOnVol: volume name: %s.\u0027) % volname)"},{"line_number":324,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a7e1126_3a842f09","line":321,"range":{"start_line":321,"start_character":22,"end_line":321,"end_character":30},"updated":"2015-12-21 15:46:30.000000000","message":"typo: s/ralation/relation","commit_id":"e70fdf45ee5ed9c3379d31820e95a6e0aac60b26"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"66b6400617f561b4db89165034ff00167d35caf9","unresolved":false,"context_lines":[{"line_number":756,"context_line":"        return iscsi_info"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"    def _translate_grp_name(self, grp_name):"},{"line_number":759,"context_line":"        new_name \u003d zte_pub.ZTE_HOST_GROUP_NAME_PREFIX + str(hash(grp_name))"},{"line_number":760,"context_line":"        new_name \u003d new_name.replace(\u0027-\u0027, \u0027R\u0027)"},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"        LOG.debug(_(\u0027_translate_grp_name:Name in cinder: %(old)s, \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a7e1126_fac8e756","line":759,"range":{"start_line":759,"start_character":56,"end_line":759,"end_character":59},"updated":"2015-12-21 15:46:30.000000000","message":"Please, use six.text_type() instead of str()","commit_id":"e70fdf45ee5ed9c3379d31820e95a6e0aac60b26"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    cfg.IntOpt(\u0027SSDCacheSwitch\u0027, default\u003d1, help\u003d\u0027SSD cache switch\u0027),"},{"line_number":49,"context_line":"    cfg.ListOpt(\u0027StoragePool\u0027, default\u003d[], help\u003d\u0027Pool name list\u0027),"},{"line_number":50,"context_line":"    cfg.IntOpt(\u0027PoolVolAllocPolicy\u0027, default\u003d0,"},{"line_number":51,"context_line":"               help\u003d\u0027Pool volume alloc policy.\u0027),"},{"line_number":52,"context_line":"    cfg.IntOpt(\u0027PoolVolMovePolicy\u0027, default\u003d0,"},{"line_number":53,"context_line":"               help\u003d\u0027Pool volume move policy\u0027),"},{"line_number":54,"context_line":"    cfg.IntOpt(\u0027PoolVolIsThin\u0027, default\u003d0,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_f24ac782","line":51,"updated":"2015-12-24 18:15:47.000000000","message":"Please make the help message consistent by ending with \".\"","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            self.session_id \u003d result[\u0027data\u0027][\u0027sessionID\u0027]"},{"line_number":129,"context_line":"            return self.session_id"},{"line_number":130,"context_line":"        else:"},{"line_number":131,"context_line":"            raise exception.CinderException("},{"line_number":132,"context_line":"                _(\u0027Failed to login. Return code: %(ret)s\u0027) % {"},{"line_number":133,"context_line":"                    \u0027ret\u0027: result[\u0027returncode\u0027]})"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_6dfa7abf","line":131,"updated":"2015-12-24 18:15:47.000000000","message":"VolumeBackendAPIException","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            self.session_id \u003d self._user_login()"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def check_for_setup_error(self):"},{"line_number":151,"context_line":"        \"\"\"Return error if prerequisites aren\u0027t met.\"\"\""},{"line_number":152,"context_line":"        pass"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _get_sessionid(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_5254fb1f","line":151,"updated":"2015-12-24 18:15:47.000000000","message":"Is this comment still relevant?","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        if pool_name:"},{"line_number":231,"context_line":"            self._create_volume_from_pool(volume_name, volume_size, pool_name)"},{"line_number":232,"context_line":"        else:"},{"line_number":233,"context_line":"            raise exception.CinderException(_(\u0027No pool available.\u0027))"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def create_volume(self, volume):"},{"line_number":236,"context_line":"        \"\"\"Create a new volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_0d51760e","line":233,"updated":"2015-12-24 18:15:47.000000000","message":"You could use VolumeBackendException","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":252,"context_line":"                                     zte_pub.ZTE_SUCCESS]:"},{"line_number":253,"context_line":"            err_msg \u003d ("},{"line_number":254,"context_line":"                _("},{"line_number":255,"context_line":"                    \u0027Clone vol fail. Clone name:%(name)s. Return code: \u0027"},{"line_number":256,"context_line":"                    \u0027%(ret)s\u0027) % {\u0027name\u0027: cloned_name,"},{"line_number":257,"context_line":"                                  \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":258,"context_line":"            raise exception.CinderException(err_msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_ed742a9d","line":255,"updated":"2015-12-24 18:15:47.000000000","message":"Delete volume failed","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":255,"context_line":"                    \u0027Clone vol fail. Clone name:%(name)s. Return code: \u0027"},{"line_number":256,"context_line":"                    \u0027%(ret)s\u0027) % {\u0027name\u0027: cloned_name,"},{"line_number":257,"context_line":"                                  \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":258,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def _delete_volume(self, volume_name):"},{"line_number":261,"context_line":"        vol_name \u003d {\u0027cVolName\u0027: volume_name}"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_0d78968e","line":258,"updated":"2015-12-24 18:15:47.000000000","message":"You could use VolumeBackendAPIException","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":268,"context_line":"                    \u0027Delete volume fail. Volume name:%(name)s. \u0027"},{"line_number":269,"context_line":"                    \u0027Return code: %(ret)s\u0027) % {\u0027name\u0027: volume_name,"},{"line_number":270,"context_line":"                                               \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":271,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    def delete_volume(self, volume):"},{"line_number":274,"context_line":"        \"\"\"Delete a volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_8d6486e5","line":271,"updated":"2015-12-24 18:15:47.000000000","message":"You could use VolumeBackendAPIException","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":364,"context_line":"            if ret[\u0027returncode\u0027] \u003d\u003d zte_pub.ZTE_ERR_SNAP_EXIST_CLONE:"},{"line_number":365,"context_line":"                raise exception.SnapshotIsBusy(err_msg)"},{"line_number":366,"context_line":"            else:"},{"line_number":367,"context_line":"                raise exception.CinderException(err_msg)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":370,"context_line":"        \"\"\"delete a snapshot volume\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_ed82ea51","line":367,"updated":"2015-12-24 18:15:47.000000000","message":"You could use VolumeBackendAPIException","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            err_msg \u003d (_(\u0027_extend_volume:Failed to extend vol.vol name:\u0027"},{"line_number":398,"context_line":"                         \u0027%(name)s with Return code: %(ret)s\u0027)"},{"line_number":399,"context_line":"                       % {\u0027name\u0027: volume_name, \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":400,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":403,"context_line":"        \"\"\"extend volume size\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_0d62d6ad","line":400,"updated":"2015-12-24 18:15:47.000000000","message":"You could use VolumeBackendAPIException","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":749,"context_line":"        LOG.debug(\u0027_get_target_ip_ctrl:target IP is %s.\u0027 % target_ip)"},{"line_number":750,"context_line":"        ret \u003d self._call_method(\u0027GetSystemNetCfg\u0027)"},{"line_number":751,"context_line":"        if ret[\u0027returncode\u0027] !\u003d zte_pub.ZTE_SUCCESS:"},{"line_number":752,"context_line":"            err_msg \u003d (_(\u0027_get_target_ip_ctrl:get iscsi port list fail.\u0027"},{"line_number":753,"context_line":"                         \u0027with Return code: %(ret)s\u0027) %"},{"line_number":754,"context_line":"                       {\u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":755,"context_line":"            raise exception.CinderException(err_msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_8dd9e685","line":752,"updated":"2015-12-24 18:15:47.000000000","message":"Space at the EOL","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":817,"context_line":"            if ret[\u0027returncode\u0027] not in [zte_pub.ZTE_SUCCESS,"},{"line_number":818,"context_line":"                                         zte_pub.ZTE_ERR_PORT_EXIST,"},{"line_number":819,"context_line":"                                         zte_pub.ZTE_ERR_PORT_EXIST_OLD]:"},{"line_number":820,"context_line":"                err_msg \u003d (_(\u0027_create_group:add port fail.port name:\u0027"},{"line_number":821,"context_line":"                             \u0027%(name)s  with Return code: %(ret)s\u0027) %"},{"line_number":822,"context_line":"                           {\u0027name\u0027: initiator_name,"},{"line_number":823,"context_line":"                            \u0027ret\u0027: ret[\u0027returncode\u0027]})"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_4de3fe33","line":820,"updated":"2015-12-24 18:15:47.000000000","message":"Space at EOL","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":831,"context_line":"                                         zte_pub.ZTE_ERR_HOST_EXIST,"},{"line_number":832,"context_line":"                                         zte_pub.ZTE_ERR_HOST_EXIST_OLD]:"},{"line_number":833,"context_line":"                self._delete_group(map_group_name)"},{"line_number":834,"context_line":"                err_msg \u003d (_(\u0027_create_group:add host to group fail.\u0027"},{"line_number":835,"context_line":"                             \u0027group name:%(name)s init name :%(init)s \u0027"},{"line_number":836,"context_line":"                             \u0027with Return code: %(ret)s\u0027) %"},{"line_number":837,"context_line":"                           {\u0027name\u0027: map_group_name,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_0dd41645","line":834,"updated":"2015-12-24 18:15:47.000000000","message":"Space at EOL","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":857,"context_line":"                \u0027sdwLunId\u0027: lunid}"},{"line_number":858,"context_line":"            ret \u003d self._call_method(\u0027DelVolFromGrp\u0027, del_vol_from_grp)"},{"line_number":859,"context_line":"            if ret[\u0027returncode\u0027] !\u003d zte_pub.ZTE_SUCCESS:"},{"line_number":860,"context_line":"                err_msg \u003d (_(\u0027_map_lun:delete lunid from group fail.\u0027"},{"line_number":861,"context_line":"                             \u0027group name:%(name)s lunid : %(lun)s \u0027"},{"line_number":862,"context_line":"                             \u0027with Return code: %(ret)s\u0027) %"},{"line_number":863,"context_line":"                           {\u0027name\u0027: map_group_name, \u0027lun\u0027: lunid,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_6dc59a8c","line":860,"updated":"2015-12-24 18:15:47.000000000","message":"Space at EOL","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":874,"context_line":"        map_grp_info \u003d {\u0027cMapGrpName\u0027: map_group_name}"},{"line_number":875,"context_line":"        ret \u003d self._call_method(\u0027GetMapGrpInfo\u0027, map_grp_info)"},{"line_number":876,"context_line":"        if ret[\u0027returncode\u0027] !\u003d zte_pub.ZTE_SUCCESS:"},{"line_number":877,"context_line":"            err_msg \u003d (_(\u0027_map_delete_host:get map group info fail.\u0027"},{"line_number":878,"context_line":"                         \u0027group name:%(name)s with Return code: %(ret)s\u0027)"},{"line_number":879,"context_line":"                       % {\u0027name\u0027: map_group_name, \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":880,"context_line":"            raise exception.CinderException(err_msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_6d4cba42","line":877,"updated":"2015-12-24 18:15:47.000000000","message":"Space at EOL","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":899,"context_line":"                ret \u003d self._call_method("},{"line_number":900,"context_line":"                    \u0027GetHost\u0027, {\"cHostAlias\": initiator_name})"},{"line_number":901,"context_line":"                if ret[\u0027returncode\u0027] !\u003d zte_pub.ZTE_SUCCESS:"},{"line_number":902,"context_line":"                    err_msg \u003d (_(\u0027_map_delete_host:get host info fail.\u0027"},{"line_number":903,"context_line":"                                 \u0027host name:%(name)s with Return code: \u0027"},{"line_number":904,"context_line":"                                 \u0027%(ret)s\u0027) %"},{"line_number":905,"context_line":"                               {\u0027name\u0027: initiator_name,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_8d47a61c","line":902,"updated":"2015-12-24 18:15:47.000000000","message":"Space at EOL","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":919,"context_line":"                    if ret[\u0027returncode\u0027] !\u003d zte_pub.ZTE_SUCCESS:"},{"line_number":920,"context_line":"                        err_msg \u003d ("},{"line_number":921,"context_line":"                            _("},{"line_number":922,"context_line":"                                \u0027delete port from host fail.\u0027"},{"line_number":923,"context_line":"                                \u0027host name:%(name)s ,\u0027"},{"line_number":924,"context_line":"                                \u0027port name:%(port)s with Return code: \u0027"},{"line_number":925,"context_line":"                                \u0027%(ret)s\u0027) % {\u0027name\u0027: initiator_name,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_2d56b2d2","line":922,"updated":"2015-12-24 18:15:47.000000000","message":"Space at EOL","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"0d51cf9e36f7e4b4115f98b3826194a74aec9762","unresolved":false,"context_lines":[{"line_number":932,"context_line":"                if (ret[\u0027returncode\u0027] not"},{"line_number":933,"context_line":"                    in [zte_pub.ZTE_SUCCESS,"},{"line_number":934,"context_line":"                        zte_pub.ZTE_ERR_HOSTNAME_NOT_EXIST]):"},{"line_number":935,"context_line":"                    err_msg \u003d (_(\u0027_map_delete_host:delete hostfail.\u0027"},{"line_number":936,"context_line":"                                 \u0027host name:%(name)s with Return code: \u0027"},{"line_number":937,"context_line":"                                 \u0027%(ret)s\u0027) %"},{"line_number":938,"context_line":"                               {\u0027name\u0027: initiator_name,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_4d51bed7","line":935,"updated":"2015-12-24 18:15:47.000000000","message":"Space at EOL","commit_id":"cf85d02b8c7cafbe605d71b430bd56150407f775"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"48261a2d51d7229993dd465693f832fd22f30f30","unresolved":false,"context_lines":[{"line_number":39,"context_line":"zte_opts \u003d ["},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027ControllerIP0\u0027, default\u003d\u0027\u0027, help\u003d\u0027Main controller IP.\u0027),"},{"line_number":41,"context_line":"    cfg.StrOpt(\u0027ControllerIP1\u0027, default\u003d\u0027\u0027, help\u003d\u0027slave controller IP.\u0027),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027LocalIP\u0027, default\u003d\u0027\u0027, help\u003d\u0027Local ip.\u0027),"},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027UserName\u0027, default\u003d\u0027admin\u0027, help\u003d\u0027User name.\u0027),"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027UserPassword\u0027, default\u003d\u0027admin\u0027, help\u003d\u0027User password.\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027ChunkSize\u0027, default\u003d4, help\u003d\u0027Virtual block size of pool .\u0027),"}],"source_content_type":"text/x-python","patch_set":21,"id":"da6ed579_b66d6334","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":14},"updated":"2016-01-12 11:02:20.000000000","message":"Better to use cfg.IPOpt","commit_id":"4058012669db82c4c66003cf1cba5843e976c16b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5143c6d54799f5a86ae5e902390fef4c55ba0be6","unresolved":false,"context_lines":[{"line_number":39,"context_line":"zte_opts \u003d ["},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027ControllerIP0\u0027, default\u003d\u0027\u0027, help\u003d\u0027Main controller IP.\u0027),"},{"line_number":41,"context_line":"    cfg.StrOpt(\u0027ControllerIP1\u0027, default\u003d\u0027\u0027, help\u003d\u0027slave controller IP.\u0027),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027LocalIP\u0027, default\u003d\u0027\u0027, help\u003d\u0027Local ip.\u0027),"},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027UserName\u0027, default\u003d\u0027admin\u0027, help\u003d\u0027User name.\u0027),"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027UserPassword\u0027, default\u003d\u0027admin\u0027, help\u003d\u0027User password.\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027ChunkSize\u0027, default\u003d4, help\u003d\u0027Virtual block size of pool .\u0027),"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa69d971_674adaae","line":42,"updated":"2016-01-07 17:46:50.000000000","message":"Capitalize \"IP\" as above.","commit_id":"4058012669db82c4c66003cf1cba5843e976c16b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5143c6d54799f5a86ae5e902390fef4c55ba0be6","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    cfg.StrOpt(\u0027ControllerIP1\u0027, default\u003d\u0027\u0027, help\u003d\u0027slave controller IP.\u0027),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027LocalIP\u0027, default\u003d\u0027\u0027, help\u003d\u0027Local ip.\u0027),"},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027UserName\u0027, default\u003d\u0027admin\u0027, help\u003d\u0027User name.\u0027),"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027UserPassword\u0027, default\u003d\u0027admin\u0027, help\u003d\u0027User password.\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027ChunkSize\u0027, default\u003d4, help\u003d\u0027Virtual block size of pool .\u0027),"},{"line_number":46,"context_line":"    cfg.IntOpt(\u0027AheadReadSize\u0027, default\u003d8, help\u003d\u0027Cache readahead size.\u0027),"},{"line_number":47,"context_line":"    cfg.IntOpt(\u0027CachePolicy\u0027, default\u003d1, help\u003d\u0027Cache policy.\u0027),"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa69d971_c70aa679","line":44,"updated":"2016-01-07 17:46:50.000000000","message":"It would be better to default the password to None and have code in check_for_setup_error which fails if the password is not set.","commit_id":"4058012669db82c4c66003cf1cba5843e976c16b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5143c6d54799f5a86ae5e902390fef4c55ba0be6","unresolved":false,"context_lines":[{"line_number":59,"context_line":"               help\u003d\u0027Pool volume alarm threshold.\u0027),"},{"line_number":60,"context_line":"    cfg.IntOpt(\u0027PoolVolAlarmStopAllocFlag\u0027, default\u003d0,"},{"line_number":61,"context_line":"               help\u003d\u0027Pool volume alarm stop alloc flag.\u0027),"},{"line_number":62,"context_line":"    cfg.ListOpt(\u0027Initiator\u0027, default\u003d[], help\u003d\u0027List of Initiators.\u0027),"},{"line_number":63,"context_line":"    cfg.StrOpt(\u0027Volume_Allocation_Ratio\u0027, default\u003d\u002720\u0027,"},{"line_number":64,"context_line":"               help\u003d\u0027Volume allocation ratio.\u0027)"},{"line_number":65,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa69d971_07c67e16","line":62,"updated":"2016-01-07 17:46:50.000000000","message":"What is this used for?","commit_id":"4058012669db82c4c66003cf1cba5843e976c16b"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"48261a2d51d7229993dd465693f832fd22f30f30","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    cfg.IntOpt(\u0027PoolVolAlarmStopAllocFlag\u0027, default\u003d0,"},{"line_number":61,"context_line":"               help\u003d\u0027Pool volume alarm stop alloc flag.\u0027),"},{"line_number":62,"context_line":"    cfg.ListOpt(\u0027Initiator\u0027, default\u003d[], help\u003d\u0027List of Initiators.\u0027),"},{"line_number":63,"context_line":"    cfg.StrOpt(\u0027Volume_Allocation_Ratio\u0027, default\u003d\u002720\u0027,"},{"line_number":64,"context_line":"               help\u003d\u0027Volume allocation ratio.\u0027)"},{"line_number":65,"context_line":"]"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"da6ed579_16ed4f8b","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":14},"updated":"2016-01-12 11:02:20.000000000","message":"+1","commit_id":"4058012669db82c4c66003cf1cba5843e976c16b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5143c6d54799f5a86ae5e902390fef4c55ba0be6","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    cfg.IntOpt(\u0027PoolVolAlarmStopAllocFlag\u0027, default\u003d0,"},{"line_number":61,"context_line":"               help\u003d\u0027Pool volume alarm stop alloc flag.\u0027),"},{"line_number":62,"context_line":"    cfg.ListOpt(\u0027Initiator\u0027, default\u003d[], help\u003d\u0027List of Initiators.\u0027),"},{"line_number":63,"context_line":"    cfg.StrOpt(\u0027Volume_Allocation_Ratio\u0027, default\u003d\u002720\u0027,"},{"line_number":64,"context_line":"               help\u003d\u0027Volume allocation ratio.\u0027)"},{"line_number":65,"context_line":"]"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"fa69d971_4776b607","line":63,"updated":"2016-01-07 17:46:50.000000000","message":"Is this an overprovisioning ratio?  If so, we already have an option for this which should be used rather than defining a new one.  Please add a better description if not.","commit_id":"4058012669db82c4c66003cf1cba5843e976c16b"},{"author":{"_account_id":19151,"name":"Thelo Gaultier","email":"thelo.gaultier@gmail.com","username":"Thelo"},"change_message_id":"35e28ae38b6dca267a69693cd762d9c95816b3ae","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            req \u003d urllib.request.Request(self.url, data, headers)"},{"line_number":94,"context_line":"            req.get_method \u003d lambda: \u0027POST\u0027"},{"line_number":95,"context_line":"            response \u003d urllib.request.urlopenn(req).read()"},{"line_number":96,"context_line":"            LOG.debug(\u0027Response Data: method %(method)s %(res)s\u0027 %"},{"line_number":97,"context_line":"                      {\u0027method\u0027: method, \u0027res\u0027: response})"},{"line_number":98,"context_line":"        except Exception as err:"},{"line_number":99,"context_line":"            err_msg \u003d _LE(\u0027Bad response from server: %s\u0027) % err"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa69d971_836d469b","line":96,"updated":"2016-01-08 10:06:52.000000000","message":"Add a dot \u0027.\u0027 at the end of your sentences","commit_id":"4058012669db82c4c66003cf1cba5843e976c16b"},{"author":{"_account_id":19151,"name":"Thelo Gaultier","email":"thelo.gaultier@gmail.com","username":"Thelo"},"change_message_id":"35e28ae38b6dca267a69693cd762d9c95816b3ae","unresolved":false,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def create_volume(self, volume):"},{"line_number":235,"context_line":"        \"\"\"Create a new volume.\"\"\""},{"line_number":236,"context_line":"        volume_name \u003d self._translate_volume_name(volume[\u0027name\u0027])"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        volume_size \u003d float("},{"line_number":239,"context_line":"            volume[\u0027size\u0027] *"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa69d971_a982abc6","line":236,"updated":"2016-01-08 10:06:52.000000000","message":"volume[\u0027name\u0027] is not an unique identifier, two volumes can have the same name, hence you might want to use id instead","commit_id":"4058012669db82c4c66003cf1cba5843e976c16b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"0ff9819015a0e4afc70702c710cad350d635af0e","unresolved":false,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def create_volume(self, volume):"},{"line_number":235,"context_line":"        \"\"\"Create a new volume.\"\"\""},{"line_number":236,"context_line":"        volume_name \u003d self._translate_volume_name(volume[\u0027name\u0027])"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        volume_size \u003d float("},{"line_number":239,"context_line":"            volume[\u0027size\u0027] *"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa69d971_782c1fac","line":236,"in_reply_to":"fa69d971_a982abc6","updated":"2016-01-11 16:17:46.000000000","message":"It is -- \"name\" is a property based on the volume id and is ok to use here.  You are thinking of \"display_name\".","commit_id":"4058012669db82c4c66003cf1cba5843e976c16b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"9d91e4097ecb9b03abfd76ff2b6cb671e7759d0e","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                    \u0027Delete volume failed. Clone name:%(name)s.\u0027"},{"line_number":255,"context_line":"                    \u0027Return code: %(ret)s\u0027) % {\u0027name\u0027: cloned_name,"},{"line_number":256,"context_line":"                                               \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":257,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def _delete_volume(self, volume_name):"},{"line_number":260,"context_line":"        vol_name \u003d {\u0027cVolName\u0027: volume_name}"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa69d971_a7ac5236","line":257,"updated":"2016-01-07 17:48:44.000000000","message":"Don\u0027t use CinderException in the driver in general.  Use VolumeDriverException or VolumeBackendAPIException as appropriate.","commit_id":"4058012669db82c4c66003cf1cba5843e976c16b"},{"author":{"_account_id":19151,"name":"Thelo Gaultier","email":"thelo.gaultier@gmail.com","username":"Thelo"},"change_message_id":"35e28ae38b6dca267a69693cd762d9c95816b3ae","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                    raise exception.VolumeIsBusy(err_msg)"},{"line_number":295,"context_line":"            else:"},{"line_number":296,"context_line":"                raise exception.CinderException(err_msg)"},{"line_number":297,"context_line":"        time.sleep(6)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    def _delete_clone_relation_by_volname(self, volname, issnapshot):"},{"line_number":300,"context_line":"        svol_name \u003d {\u0027scVolName\u0027: volname}"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa69d971_239fba60","line":297,"updated":"2016-01-08 10:06:52.000000000","message":"Why do we need to wait 6 seconds here?","commit_id":"4058012669db82c4c66003cf1cba5843e976c16b"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012-2015 ZTE Corporation. All rights reserved"},{"line_number":2,"context_line":"# Copyright (c) 2012 OpenStack LLC."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_525201df","line":2,"updated":"2016-01-18 20:04:46.000000000","message":"Remove.","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"zte_opts \u003d ["},{"line_number":39,"context_line":"    cfg.IPOpt(\u0027ControllerIP0\u0027, default\u003d\u00270.0.0.0\u0027, help\u003d\u0027Main controller IP.\u0027),"},{"line_number":40,"context_line":"    cfg.IPOpt(\u0027ControllerIP1\u0027, default\u003d\u00270.0.0.0\u0027, help\u003d\u0027slave controller IP.\u0027),"},{"line_number":41,"context_line":"    cfg.IPOpt(\u0027LocalIP\u0027, default\u003d\u00270.0.0.0\u0027, help\u003d\u0027Local IP.\u0027),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027UserName\u0027, default\u003d\u0027\u0027, help\u003d\u0027User name.\u0027),"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_1231e9a2","line":39,"updated":"2016-01-18 20:04:46.000000000","message":"All of these config options should be prefixed with the driver to match the convention used for other driver-specific options.","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            params \u003d params or {}"},{"line_number":83,"context_line":"            data \u003d (\"sessionID\u003d\" + sessin_id + \"\u0026method\u003d\" +"},{"line_number":84,"context_line":"                    method + \"\u0026params\u003d\" + json.dumps(params))"},{"line_number":85,"context_line":"            LOG.debug(\u0027Req Data: method %(method)s %(data)s\u0027 %"},{"line_number":86,"context_line":"                      {\u0027method\u0027: method, \u0027data\u0027: data})"},{"line_number":87,"context_line":"            headers \u003d {\"Connection\": \"keep-alive\","},{"line_number":88,"context_line":"                       \"Content-Type\": \"application/x-www-form-urlencoded\"}"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_69a71350","line":85,"range":{"start_line":85,"start_character":58,"end_line":85,"end_character":60},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            req \u003d urllib.request.Request(self.url, data, headers)"},{"line_number":91,"context_line":"            req.get_method \u003d lambda: \u0027POST\u0027"},{"line_number":92,"context_line":"            response \u003d urllib.request.urlopen(req).read()"},{"line_number":93,"context_line":"            LOG.debug(\u0027Response Data: method %(method)s %(res)s.\u0027 %"},{"line_number":94,"context_line":"                      {\u0027method\u0027: method, \u0027res\u0027: response})"},{"line_number":95,"context_line":"        except Exception as err:"},{"line_number":96,"context_line":"            err_msg \u003d _LE(\u0027Bad response from server: %s\u0027) % err"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_7220654a","line":93,"range":{"start_line":93,"start_character":65,"end_line":93,"end_character":67},"updated":"2016-01-18 20:04:46.000000000","message":"Replace \" %\" with \",\" to pass formatting values in as args to the logger so string formatting only happens if/when needed.","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            LOG.debug(\u0027Response Data: method %(method)s %(res)s.\u0027 %"},{"line_number":94,"context_line":"                      {\u0027method\u0027: method, \u0027res\u0027: response})"},{"line_number":95,"context_line":"        except Exception as err:"},{"line_number":96,"context_line":"            err_msg \u003d _LE(\u0027Bad response from server: %s\u0027) % err"},{"line_number":97,"context_line":"            LOG.error(err_msg)"},{"line_number":98,"context_line":"            raise err"},{"line_number":99,"context_line":"        res_json \u003d json.loads(response)"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_697e33b0","line":96,"range":{"start_line":96,"start_character":52,"end_line":96,"end_character":56},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            LOG.debug(\u0027Response Data: method %(method)s %(res)s.\u0027 %"},{"line_number":94,"context_line":"                      {\u0027method\u0027: method, \u0027res\u0027: response})"},{"line_number":95,"context_line":"        except Exception as err:"},{"line_number":96,"context_line":"            err_msg \u003d _LE(\u0027Bad response from server: %s\u0027) % err"},{"line_number":97,"context_line":"            LOG.error(err_msg)"},{"line_number":98,"context_line":"            raise err"},{"line_number":99,"context_line":"        res_json \u003d json.loads(response)"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_52ee81ed","line":96,"updated":"2016-01-18 20:04:46.000000000","message":"Move into logger call and change % to , to pass error to the logger.\n\nOr the safer option would be to get rid of err and change LOG.error to LOG.exception.","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        except Exception as err:"},{"line_number":96,"context_line":"            err_msg \u003d _LE(\u0027Bad response from server: %s\u0027) % err"},{"line_number":97,"context_line":"            LOG.error(err_msg)"},{"line_number":98,"context_line":"            raise err"},{"line_number":99,"context_line":"        res_json \u003d json.loads(response)"},{"line_number":100,"context_line":"        return res_json"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_52c52159","line":98,"updated":"2016-01-18 20:04:46.000000000","message":"Should just be \"raise\" and not \"raise err\" to keep the original stack information.","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        controller_ip \u003d (self.login_info[\u0027ControllerIP0\u0027]"},{"line_number":104,"context_line":"                         or self.login_info[\u0027ControllerIP1\u0027] or \u0027\u0027)"},{"line_number":105,"context_line":"        self.url \u003d \u0027https://\u0027 + controller_ip + \u0027/phpclient/client.php\u0027"},{"line_number":106,"context_line":"        LOG.debug(\u0027Set zte server is %s.\u0027 % self.url)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def _change_server(self):"},{"line_number":109,"context_line":"        if (self.login_info[\u0027ControllerIP0\u0027]) and ("}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_d2afd192","line":106,"updated":"2016-01-18 20:04:46.000000000","message":"% \u003d\u003e ,","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            return self.session_id"},{"line_number":127,"context_line":"        else:"},{"line_number":128,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":129,"context_line":"                _(\u0027Failed to login. Return code: %(ret)s\u0027) % {"},{"line_number":130,"context_line":"                    \u0027ret\u0027: result[\u0027returncode\u0027]})"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def do_setup(self, context):"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_6955d31b","line":129,"range":{"start_line":129,"start_character":53,"end_line":129,"end_character":57},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            self._change_server()"},{"line_number":145,"context_line":"            self.session_id \u003d self._user_login()"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def check_for_setup_error(self):"},{"line_number":148,"context_line":"        pass"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _get_sessionid(self):"},{"line_number":151,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_69039310","line":148,"range":{"start_line":147,"start_character":4,"end_line":148,"end_character":12},"updated":"2016-01-19 01:59:57.000000000","message":"Remove empty function","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            if ret[\u0027returncode\u0027] \u003d\u003d zte_pub.ZTE_SUCCESS:"},{"line_number":155,"context_line":"                return sid"},{"line_number":156,"context_line":"            else:"},{"line_number":157,"context_line":"                err_msg \u003d (_(\u0027heartbeat failed.San. Return code:\u0027"},{"line_number":158,"context_line":"                             \u0027 %(ret)s\u0027) %"},{"line_number":159,"context_line":"                           {\u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":160,"context_line":"                LOG.info(err_msg)"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_12948935","line":157,"updated":"2016-01-18 20:04:46.000000000","message":"Needs _LI(). Pass formatting values as args to the logger. I.e.:\n\nLOG.info(err_msg, {\u0027ret\u0027: ret[\u0027returncode\u0027]})","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                           {\u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":160,"context_line":"                LOG.info(err_msg)"},{"line_number":161,"context_line":"        except Exception as err:"},{"line_number":162,"context_line":"            LOG.error(_LE(\u0027_get_sessionid: %s\u0027) % six.text_type(err))"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        self._change_server()"},{"line_number":165,"context_line":"        return self._user_login()"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_12bb29c6","line":162,"updated":"2016-01-18 20:04:46.000000000","message":"Get rid of using err in the log message and just change this to LOG.exception.","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                           {\u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":160,"context_line":"                LOG.info(err_msg)"},{"line_number":161,"context_line":"        except Exception as err:"},{"line_number":162,"context_line":"            LOG.error(_LE(\u0027_get_sessionid: %s\u0027) % six.text_type(err))"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        self._change_server()"},{"line_number":165,"context_line":"        return self._user_login()"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_a922ebb7","line":162,"range":{"start_line":162,"start_character":43,"end_line":162,"end_character":46},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":219,"context_line":"                _("},{"line_number":220,"context_line":"                    \u0027Create volume fail. Volume name:%(name)s.\u0027"},{"line_number":221,"context_line":"                    \u0027 Return code: %(ret)s\u0027) % {\u0027name\u0027: volume_name,"},{"line_number":222,"context_line":"                                                \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def _create_volume(self, volume_name, volume_size):"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_541d0265","line":221,"range":{"start_line":221,"start_character":41,"end_line":221,"end_character":43},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":247,"context_line":"                                     zte_pub.ZTE_ERR_VAS_OBJECT_NOT_EXIST,"},{"line_number":248,"context_line":"                                     zte_pub.ZTE_SUCCESS]:"},{"line_number":249,"context_line":"            err_msg \u003d ("},{"line_number":250,"context_line":"                _("},{"line_number":251,"context_line":"                    \u0027Delete volume failed. Clone name:%(name)s.\u0027"},{"line_number":252,"context_line":"                    \u0027Return code: %(ret)s\u0027) % {\u0027name\u0027: cloned_name,"},{"line_number":253,"context_line":"                                               \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":254,"context_line":"            raise exception.VolumeBackendAPIException(err_msg)"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_14d0ea52","line":251,"range":{"start_line":250,"start_character":18,"end_line":251,"end_character":19},"updated":"2016-01-19 01:59:57.000000000","message":"Should be indented line.\nFor example, \nerr_msg \u003d (_(\u0027Delete volume failed. Clone name:%(name)s.\u0027....))","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            err_msg \u003d ("},{"line_number":250,"context_line":"                _("},{"line_number":251,"context_line":"                    \u0027Delete volume failed. Clone name:%(name)s.\u0027"},{"line_number":252,"context_line":"                    \u0027Return code: %(ret)s\u0027) % {\u0027name\u0027: cloned_name,"},{"line_number":253,"context_line":"                                               \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":254,"context_line":"            raise exception.VolumeBackendAPIException(err_msg)"},{"line_number":255,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_b4379ee2","line":252,"range":{"start_line":252,"start_character":40,"end_line":252,"end_character":42},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        if ret[\u0027returncode\u0027] not in [zte_pub.ZTE_ERR_VOLUME_NOT_EXIST,"},{"line_number":260,"context_line":"                                     zte_pub.ZTE_ERR_LUNDEV_NOT_EXIST,"},{"line_number":261,"context_line":"                                     zte_pub.ZTE_SUCCESS]:"},{"line_number":262,"context_line":"            err_msg \u003d ("},{"line_number":263,"context_line":"                _("},{"line_number":264,"context_line":"                    \u0027Delete volume fail. Volume name:%(name)s. \u0027"},{"line_number":265,"context_line":"                    \u0027Return code: %(ret)s\u0027) % {\u0027name\u0027: volume_name,"},{"line_number":266,"context_line":"                                               \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":267,"context_line":"            raise exception.VolumeBackendAPIException(err_msg)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def delete_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_54be6200","line":266,"range":{"start_line":262,"start_character":12,"end_line":266,"end_character":73},"updated":"2016-01-19 01:59:57.000000000","message":"Should be indented line,same as below","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                                     zte_pub.ZTE_SUCCESS]:"},{"line_number":283,"context_line":"            err_msg \u003d (_(\u0027_delete_clone_volume:Failed to clone vol.\u0027"},{"line_number":284,"context_line":"                         \u0027cloned  name:%(name)s with Return code: \u0027"},{"line_number":285,"context_line":"                         \u0027%(ret)s\u0027) %"},{"line_number":286,"context_line":"                       {\u0027name\u0027: cloned_name, \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":287,"context_line":"            if ret[\u0027returncode\u0027] \u003d\u003d zte_pub.ZTE_VOLUME_TASK_NOT_FINISHED:"},{"line_number":288,"context_line":"                if issnapshot:"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_7469268b","line":285,"range":{"start_line":285,"start_character":31,"end_line":285,"end_character":34},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":291,"context_line":"                    raise exception.VolumeIsBusy(err_msg)"},{"line_number":292,"context_line":"            else:"},{"line_number":293,"context_line":"                raise exception.VolumeBackendAPIException(err_msg)"},{"line_number":294,"context_line":"        time.sleep(6)"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    def _delete_clone_relation_by_volname(self, volname, issnapshot):"},{"line_number":297,"context_line":"        svol_name \u003d {\u0027scVolName\u0027: volname}"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_946dba34","line":294,"range":{"start_line":294,"start_character":6,"end_line":294,"end_character":21},"updated":"2016-01-19 01:59:57.000000000","message":"sleep(6) what used to do?\nIf you wait for the status change, do you need to check the status of whether normal at sleep after.","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    def _delete_clone_relation_by_volname(self, volname, issnapshot):"},{"line_number":297,"context_line":"        svol_name \u003d {\u0027scVolName\u0027: volname}"},{"line_number":298,"context_line":"        LOG.debug(\u0027GetCvolNamesOnVol: volume name: %s.\u0027 % volname)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"        ret \u003d self._call_method(\u0027GetCvolNamesOnVol\u0027, svol_name)"},{"line_number":301,"context_line":"        data_info \u003d ret[\u0027data\u0027]"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_92239905","line":298,"updated":"2016-01-18 20:04:46.000000000","message":"% \u003d\u003e ,","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":330,"context_line":"            \u0027ucIsAuto\u0027: 0}"},{"line_number":331,"context_line":"        ret \u003d self._call_method(\u0027CreateSvol\u0027, svol_paras)"},{"line_number":332,"context_line":"        if ret[\u0027returncode\u0027] !\u003d zte_pub.ZTE_SUCCESS:"},{"line_number":333,"context_line":"            err_msg \u003d ("},{"line_number":334,"context_line":"                _("},{"line_number":335,"context_line":"                    \u0027Failed to create snap.snap name:%(snapname)s,\u0027"},{"line_number":336,"context_line":"                    \u0027srvol name :%(srv)s  with Return code: %(ret)s\u0027) %"},{"line_number":337,"context_line":"                {\u0027snapname\u0027: snapshot_name, \u0027srv\u0027: src_vol,"},{"line_number":338,"context_line":"                 \u0027ret\u0027: ret[\u0027returncode\u0027]})"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_94e7fa11","line":335,"range":{"start_line":333,"start_character":12,"end_line":335,"end_character":30},"updated":"2016-01-19 01:59:57.000000000","message":"Should be indented line,same as below","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":333,"context_line":"            err_msg \u003d ("},{"line_number":334,"context_line":"                _("},{"line_number":335,"context_line":"                    \u0027Failed to create snap.snap name:%(snapname)s,\u0027"},{"line_number":336,"context_line":"                    \u0027srvol name :%(srv)s  with Return code: %(ret)s\u0027) %"},{"line_number":337,"context_line":"                {\u0027snapname\u0027: snapshot_name, \u0027srv\u0027: src_vol,"},{"line_number":338,"context_line":"                 \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":339,"context_line":"            raise exception.VolumeBackendAPIException(err_msg)"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_34d88e53","line":336,"range":{"start_line":336,"start_character":65,"end_line":336,"end_character":67},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":354,"context_line":"                                     zte_pub.ZTE_SUCCESS]:"},{"line_number":355,"context_line":"            err_msg \u003d (_(\u0027_delete_snapshot:Failed to delete snap.\u0027"},{"line_number":356,"context_line":"                         \u0027snap name:%(snapname)s with Return code: \u0027"},{"line_number":357,"context_line":"                         \u0027%(ret)s\u0027)"},{"line_number":358,"context_line":"                       % {\u0027snapname\u0027: snapshot_name,"},{"line_number":359,"context_line":"                          \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":360,"context_line":"            if ret[\u0027returncode\u0027] \u003d\u003d zte_pub.ZTE_ERR_SNAP_EXIST_CLONE:"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_74ee06ee","line":357,"range":{"start_line":357,"start_character":32,"end_line":357,"end_character":34},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        ret \u003d self._call_method(\u0027ExpandVolOnPool\u0027, ext_vol_paras)"},{"line_number":377,"context_line":"        if ret[\u0027returncode\u0027] !\u003d zte_pub.ZTE_SUCCESS:"},{"line_number":378,"context_line":"            err_msg \u003d (_(\u0027_extend_volume:Failed to extend vol.vol name:\u0027"},{"line_number":379,"context_line":"                         \u0027%(name)s with Return code: %(ret)s\u0027)"},{"line_number":380,"context_line":"                       % {\u0027name\u0027: volume_name, \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":381,"context_line":"            raise exception.VolumeBackendAPIException(err_msg)"},{"line_number":382,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_b4d8fef0","line":379,"range":{"start_line":379,"start_character":57,"end_line":379,"end_character":61},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        ret \u003d self._call_method(\u0027CreateCvol\u0027, cvol_paras)"},{"line_number":404,"context_line":"        if ret[\u0027returncode\u0027] !\u003d zte_pub.ZTE_SUCCESS:"},{"line_number":405,"context_line":"            self._delete_volume(cloned_name)"},{"line_number":406,"context_line":"            err_msg \u003d ("},{"line_number":407,"context_line":"                _(\u0027_cloned_volume:Failed to clone vol.vol name:%(name)s\u0027"},{"line_number":408,"context_line":"                  \u0027 with Return code: %(ret)s\u0027) %"},{"line_number":409,"context_line":"                {\u0027name\u0027: src_name, \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":410,"context_line":"            raise exception.VolumeBackendAPIException(err_msg)"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_f4a3d64d","line":407,"range":{"start_line":406,"start_character":11,"end_line":407,"end_character":28},"updated":"2016-01-19 01:59:57.000000000","message":"Should be indented line,same as below","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":405,"context_line":"            self._delete_volume(cloned_name)"},{"line_number":406,"context_line":"            err_msg \u003d ("},{"line_number":407,"context_line":"                _(\u0027_cloned_volume:Failed to clone vol.vol name:%(name)s\u0027"},{"line_number":408,"context_line":"                  \u0027 with Return code: %(ret)s\u0027) %"},{"line_number":409,"context_line":"                {\u0027name\u0027: src_name, \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":410,"context_line":"            raise exception.VolumeBackendAPIException(err_msg)"},{"line_number":411,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_349ace15","line":408,"range":{"start_line":408,"start_character":44,"end_line":408,"end_character":47},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":416,"context_line":"        if int(volume[\u0027size\u0027]) \u003c src_vref[\u0027size\u0027]:"},{"line_number":417,"context_line":"            err_msg \u003d (_(\u0027:cloned volume size invalid.\u0027"},{"line_number":418,"context_line":"                         \u0027clone siez:%(cloned_size)s src volume size:\u0027"},{"line_number":419,"context_line":"                         \u0027 %(volume_size)s\u0027) %"},{"line_number":420,"context_line":"                       {\u0027cloned_size\u0027: int(volume[\u0027size\u0027]),"},{"line_number":421,"context_line":"                        \u0027volume_size\u0027: int(src_vref[\u0027size\u0027])})"},{"line_number":422,"context_line":"            raise exception.VolumeBackendAPIException(err_msg)"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_94b05a8d","line":419,"range":{"start_line":419,"start_character":40,"end_line":419,"end_character":42},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":437,"context_line":"        bvol_name \u003d self._translate_volume_name(snapshot[\u0027name\u0027])"},{"line_number":438,"context_line":"        cvol_name \u003d self._translate_volume_name(volume[\u0027name\u0027])"},{"line_number":439,"context_line":"        if int(volume[\u0027size\u0027]) \u003c snapshot[\u0027volume_size\u0027]:"},{"line_number":440,"context_line":"            err_msg \u003d ("},{"line_number":441,"context_line":"                _(\u0027:cloned volume size invalid.\u0027"},{"line_number":442,"context_line":"                  \u0027clone siez:%(cloned_size)s src volume size: \u0027"},{"line_number":443,"context_line":"                  \u0027%(volume_size)s\u0027) %"},{"line_number":444,"context_line":"                {\u0027cloned_size\u0027: int(volume[\u0027size\u0027]),"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_b4747ecf","line":441,"range":{"start_line":440,"start_character":12,"end_line":441,"end_character":20},"updated":"2016-01-19 01:59:57.000000000","message":"Should be indented line,same as below","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":440,"context_line":"            err_msg \u003d ("},{"line_number":441,"context_line":"                _(\u0027:cloned volume size invalid.\u0027"},{"line_number":442,"context_line":"                  \u0027clone siez:%(cloned_size)s src volume size: \u0027"},{"line_number":443,"context_line":"                  \u0027%(volume_size)s\u0027) %"},{"line_number":444,"context_line":"                {\u0027cloned_size\u0027: int(volume[\u0027size\u0027]),"},{"line_number":445,"context_line":"                 \u0027volume_size\u0027: int(snapshot[\u0027volume_size\u0027])})"},{"line_number":446,"context_line":"            raise exception.VolumeBackendAPIException(err_msg)"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_74a7e64f","line":443,"range":{"start_line":443,"start_character":33,"end_line":443,"end_character":36},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":479,"context_line":"        new_name \u003d \u0027host_\u0027 + six.text_type(hash(host_name))"},{"line_number":480,"context_line":"        new_name \u003d new_name.replace(\u0027-\u0027, \u0027R\u0027)"},{"line_number":481,"context_line":"        LOG.debug(\u0027_translate_host_name:Name in cinder: %(old)s, \u0027"},{"line_number":482,"context_line":"                  \u0027new name in storage system: %(new)s\u0027"},{"line_number":483,"context_line":"                  % {\u0027old\u0027: host_name, \u0027new\u0027: new_name})"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"        return new_name"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_7455a61b","line":482,"range":{"start_line":482,"start_character":52,"end_line":482,"end_character":54},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":480,"context_line":"        new_name \u003d new_name.replace(\u0027-\u0027, \u0027R\u0027)"},{"line_number":481,"context_line":"        LOG.debug(\u0027_translate_host_name:Name in cinder: %(old)s, \u0027"},{"line_number":482,"context_line":"                  \u0027new name in storage system: %(new)s\u0027"},{"line_number":483,"context_line":"                  % {\u0027old\u0027: host_name, \u0027new\u0027: new_name})"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"        return new_name"},{"line_number":486,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_12cc8934","line":483,"updated":"2016-01-18 20:04:46.000000000","message":"% \u003d\u003e ,","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":490,"context_line":"        new_name \u003d new_name.replace(\u0027-\u0027, \u0027R\u0027)"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"        LOG.debug(\u0027_translate_volume_name:Name in cinder: %(old)s, \u0027"},{"line_number":493,"context_line":"                  \u0027new name in storage system: %(new)s\u0027"},{"line_number":494,"context_line":"                  % {\u0027old\u0027: vol_name, \u0027new\u0027: new_name})"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        return new_name"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_f43f56d4","line":493,"range":{"start_line":493,"start_character":51,"end_line":493,"end_character":55},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":491,"context_line":""},{"line_number":492,"context_line":"        LOG.debug(\u0027_translate_volume_name:Name in cinder: %(old)s, \u0027"},{"line_number":493,"context_line":"                  \u0027new name in storage system: %(new)s\u0027"},{"line_number":494,"context_line":"                  % {\u0027old\u0027: vol_name, \u0027new\u0027: new_name})"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        return new_name"},{"line_number":497,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_92d879f1","line":494,"updated":"2016-01-18 20:04:46.000000000","message":"% \u003d\u003e ,","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        elif ret[\u0027returncode\u0027] \u003d\u003d zte_pub.ZTE_ERR_GROUP_NOT_EXIST:"},{"line_number":509,"context_line":"            return -1"},{"line_number":510,"context_line":"        else:"},{"line_number":511,"context_line":"            err_msg \u003d (_(\u0027_get_lunid_from_vol:get lunid from vol fail.\u0027"},{"line_number":512,"context_line":"                         \u0027group name:%(name)s vol:%(vol)s \u0027"},{"line_number":513,"context_line":"                         \u0027with Return code: %(ret)s\u0027) %"},{"line_number":514,"context_line":"                       {\u0027name\u0027: map_group_name,"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_d411f25e","line":511,"range":{"start_line":511,"start_character":46,"end_line":511,"end_character":48},"updated":"2016-01-19 01:59:57.000000000","message":"s/get/Get","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":509,"context_line":"            return -1"},{"line_number":510,"context_line":"        else:"},{"line_number":511,"context_line":"            err_msg \u003d (_(\u0027_get_lunid_from_vol:get lunid from vol fail.\u0027"},{"line_number":512,"context_line":"                         \u0027group name:%(name)s vol:%(vol)s \u0027"},{"line_number":513,"context_line":"                         \u0027with Return code: %(ret)s\u0027) %"},{"line_number":514,"context_line":"                       {\u0027name\u0027: map_group_name,"},{"line_number":515,"context_line":"                        \u0027vol\u0027: volume_name,"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_2f04bb13","line":512,"range":{"start_line":512,"start_character":26,"end_line":512,"end_character":32},"updated":"2016-01-19 01:59:57.000000000","message":"s/group/Group","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":510,"context_line":"        else:"},{"line_number":511,"context_line":"            err_msg \u003d (_(\u0027_get_lunid_from_vol:get lunid from vol fail.\u0027"},{"line_number":512,"context_line":"                         \u0027group name:%(name)s vol:%(vol)s \u0027"},{"line_number":513,"context_line":"                         \u0027with Return code: %(ret)s\u0027) %"},{"line_number":514,"context_line":"                       {\u0027name\u0027: map_group_name,"},{"line_number":515,"context_line":"                        \u0027vol\u0027: volume_name,"},{"line_number":516,"context_line":"                        \u0027ret\u0027: ret[\u0027returncode\u0027]})"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_1418ea83","line":513,"range":{"start_line":513,"start_character":49,"end_line":513,"end_character":53},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":526,"context_line":"            return -1"},{"line_number":527,"context_line":"        else:"},{"line_number":528,"context_line":"            err_msg \u003d (_(\u0027_map_lun:get group info fail.\u0027"},{"line_number":529,"context_line":"                         \u0027group name:%(name)s with Return code: %(ret)s\u0027)"},{"line_number":530,"context_line":"                       % {\u0027name\u0027: map_group_name, \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":531,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":532,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_8f13675c","line":529,"range":{"start_line":529,"start_character":67,"end_line":529,"end_character":73},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":539,"context_line":"        if ret[\u0027returncode\u0027] not in [zte_pub.ZTE_SUCCESS,"},{"line_number":540,"context_line":"                                     zte_pub.ZTE_ERR_GROUP_NOT_EXIST]:"},{"line_number":541,"context_line":"            err_msg \u003d (_(\u0027_delete_group:del group fail.\u0027"},{"line_number":542,"context_line":"                         \u0027group name:%(name)s with Return code: %(ret)s\u0027)"},{"line_number":543,"context_line":"                       % {\u0027name\u0027: map_group_name, \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":544,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":545,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_ef5b032d","line":542,"range":{"start_line":542,"start_character":69,"end_line":542,"end_character":71},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":558,"context_line":"                                     zte_pub.ZTE_ERR_VOL_EXISTS]:"},{"line_number":559,"context_line":"            err_msg \u003d ("},{"line_number":560,"context_line":"                _("},{"line_number":561,"context_line":"                    \u0027_map_lun:fail to add vol to grp. group name:%(name)s\u0027"},{"line_number":562,"context_line":"                    \u0027 lunid:%(lun)s \u0027"},{"line_number":563,"context_line":"                    \u0027vol:%(vol)s with Return code: %(ret)s\u0027) %"},{"line_number":564,"context_line":"                {\u0027name\u0027: map_group_name,"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_6fe4f33a","line":561,"range":{"start_line":561,"start_character":30,"end_line":561,"end_character":34},"updated":"2016-01-19 01:59:57.000000000","message":"s/fail/Fail","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"527776bf32ad8d669119e6621c990a05be298ad1","unresolved":false,"context_lines":[{"line_number":560,"context_line":"                _("},{"line_number":561,"context_line":"                    \u0027_map_lun:fail to add vol to grp. group name:%(name)s\u0027"},{"line_number":562,"context_line":"                    \u0027 lunid:%(lun)s \u0027"},{"line_number":563,"context_line":"                    \u0027vol:%(vol)s with Return code: %(ret)s\u0027) %"},{"line_number":564,"context_line":"                {\u0027name\u0027: map_group_name,"},{"line_number":565,"context_line":"                 \u0027lun\u0027: 0,"},{"line_number":566,"context_line":"                 \u0027vol\u0027: volume_name,"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_4f4b2f5a","line":563,"range":{"start_line":563,"start_character":57,"end_line":563,"end_character":60},"updated":"2016-01-19 01:59:57.000000000","message":"Missing . EOF","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":642,"context_line":""},{"line_number":643,"context_line":"        LOG.debug("},{"line_number":644,"context_line":"            \u0027initialize_connection: volume name: %(volume)s. \u0027"},{"line_number":645,"context_line":"            \u0027initiator name: %(ini)s.\u0027 % {\u0027volume\u0027: volume_name,"},{"line_number":646,"context_line":"                                          \u0027ini\u0027: initiator_name})"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        iscsi_conf \u003d self._get_iscsi_info()"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_b29edd05","line":645,"updated":"2016-01-18 20:04:46.000000000","message":"% \u003d\u003e ,","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":689,"context_line":"        volume_name \u003d self._translate_volume_name(volume[\u0027name\u0027])"},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"        LOG.debug("},{"line_number":692,"context_line":"            \u0027volume name: %(volume)s, initiator name: %(ini)s.\u0027 %"},{"line_number":693,"context_line":"            {\u0027volume\u0027: volume_name,"},{"line_number":694,"context_line":"             \u0027ini\u0027: initiator_name})"},{"line_number":695,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_3293cdfc","line":692,"updated":"2016-01-18 20:04:46.000000000","message":"% \u003d\u003e ,","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":710,"context_line":"            iscsi_info[\u0027Initiator\u0027] \u003d initiator_list"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"        except Exception as err:"},{"line_number":713,"context_line":"            LOG.error(_LE(\u0027_get_iscsi_info:%s\u0027) % six.text_type(err))"},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"        return iscsi_info"},{"line_number":716,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_f2bbf573","line":713,"updated":"2016-01-18 20:04:46.000000000","message":"Change to LOG.exception","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":721,"context_line":""},{"line_number":722,"context_line":"        LOG.debug(\u0027_translate_grp_name:Name in cinder: %(old)s, \u0027"},{"line_number":723,"context_line":"                  \u0027new name in storage system: %(new)s\u0027"},{"line_number":724,"context_line":"                  % {\u0027old\u0027: grp_name,"},{"line_number":725,"context_line":"                     \u0027new\u0027: new_name})"},{"line_number":726,"context_line":""},{"line_number":727,"context_line":"        return new_name"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_72b0658c","line":724,"updated":"2016-01-18 20:04:46.000000000","message":"% \u003d\u003e ,","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":727,"context_line":"        return new_name"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    def _get_target_ip_ctrl(self, target_ip):"},{"line_number":730,"context_line":"        LOG.debug(\u0027_get_target_ip_ctrl:target IP is %s.\u0027 % target_ip)"},{"line_number":731,"context_line":"        ret \u003d self._call_method(\u0027GetSystemNetCfg\u0027)"},{"line_number":732,"context_line":"        if ret[\u0027returncode\u0027] !\u003d zte_pub.ZTE_SUCCESS:"},{"line_number":733,"context_line":"            err_msg \u003d (_(\u0027_get_target_ip_ctrl:get iscsi port list fail. \u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_126809f5","line":730,"updated":"2016-01-18 20:04:46.000000000","message":"% \u003d\u003e ,","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":747,"context_line":""},{"line_number":748,"context_line":"        if -1 \u003d\u003d ip_ctrl:"},{"line_number":749,"context_line":"            LOG.error("},{"line_number":750,"context_line":"                _LE(\u0027_get_tgt_iqn:get iscsi ip ctrl fail,IP is %s.\u0027) %"},{"line_number":751,"context_line":"                iscsiip)"},{"line_number":752,"context_line":"            return None"},{"line_number":753,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_527e81af","line":750,"updated":"2016-01-18 20:04:46.000000000","message":"% \u003d\u003e ,","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":787,"context_line":"                    {\u0027name\u0027: host_name, \u0027ret\u0027: ret[\u0027returncode\u0027]})"},{"line_number":788,"context_line":"                raise exception.CinderException(err_msg)"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"            # if port deleted by user ,add it"},{"line_number":791,"context_line":"            port_info \u003d {"},{"line_number":792,"context_line":"                \u0027cHostAlias\u0027: host_name,"},{"line_number":793,"context_line":"                \u0027ucType\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_7225c5c0","line":790,"range":{"start_line":790,"start_character":33,"end_line":790,"end_character":42},"updated":"2016-01-18 20:04:46.000000000","message":"s/user ,add/user, add/","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":875,"context_line":"                if ret[\u0027returncode\u0027] not in [zte_pub.ZTE_SUCCESS,"},{"line_number":876,"context_line":"                                             zte_pub.ZTE_ERR_HOST_NOT_EXIST]:"},{"line_number":877,"context_line":"                    raise exception.CinderException("},{"line_number":878,"context_line":"                        \u0027delete host from group fail\u0027)"},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"                ret \u003d self._call_method("},{"line_number":881,"context_line":"                    \u0027GetHost\u0027, {\"cHostAlias\": initiator_name})"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_a508d929","line":878,"updated":"2016-01-18 20:04:46.000000000","message":"_()","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"},{"author":{"_account_id":17718,"name":"Lallana","email":"gaozhiqiang2@huawei.com","username":"Lallana"},"change_message_id":"8ba5d063011b574e903fd447ed0db85f0b185ca2","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    def _change_server(self):"},{"line_number":109,"context_line":"        if (self.login_info[\u0027ControllerIP0\u0027]) and ("},{"line_number":110,"context_line":"                self.login_info[\u0027ControllerIP1\u0027]):"},{"line_number":111,"context_line":"            controller_ip \u003d (self.login_info[\u0027ControllerIP1\u0027]"},{"line_number":112,"context_line":"                             if self.login_info[\u0027ControllerIP0\u0027] in self.url"},{"line_number":113,"context_line":"                             else self.login_info[\u0027ControllerIP0\u0027])"},{"line_number":114,"context_line":"            self.url \u003d \u0027https://\u0027 + controller_ip + \u0027/phpclient/client.php\u0027"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def _user_login(self):"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a68dd71_fcacba36","line":113,"range":{"start_line":111,"start_character":0,"end_line":113,"end_character":67},"updated":"2016-01-22 10:07:57.000000000","message":"Perhaps \u0027ControllerIP1\u0027 in this code should be changed to \u0027ControllerIP0\u0027, and the last \u0027ControllerIP0\u0027 should be changed to \u0027ControllerIP1\u0027. Because \u0027ControllerIP0\u0027 is your default IP.","commit_id":"e0006d3ab00bac91c7ddfca65bffb09a0e0c836f"},{"author":{"_account_id":12184,"name":"Weiwei Gu","email":"gu.weiwei@zte.com.cn","username":"guweiwei"},"change_message_id":"f8f8347a1388233ba3ea2156037941bbad399050","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    def _change_server(self):"},{"line_number":109,"context_line":"        if (self.login_info[\u0027ControllerIP0\u0027]) and ("},{"line_number":110,"context_line":"                self.login_info[\u0027ControllerIP1\u0027]):"},{"line_number":111,"context_line":"            controller_ip \u003d (self.login_info[\u0027ControllerIP1\u0027]"},{"line_number":112,"context_line":"                             if self.login_info[\u0027ControllerIP0\u0027] in self.url"},{"line_number":113,"context_line":"                             else self.login_info[\u0027ControllerIP0\u0027])"},{"line_number":114,"context_line":"            self.url \u003d \u0027https://\u0027 + controller_ip + \u0027/phpclient/client.php\u0027"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def _user_login(self):"}],"source_content_type":"text/x-python","patch_set":26,"id":"dab17558_9a626cd7","line":113,"range":{"start_line":111,"start_character":0,"end_line":113,"end_character":67},"in_reply_to":"9a68dd71_fcacba36","updated":"2016-05-06 00:48:02.000000000","message":"self.url is the current ControllerIP. So controller_ip should be the one which not in self.url.","commit_id":"e0006d3ab00bac91c7ddfca65bffb09a0e0c836f"},{"author":{"_account_id":17718,"name":"Lallana","email":"gaozhiqiang2@huawei.com","username":"Lallana"},"change_message_id":"8ba5d063011b574e903fd447ed0db85f0b185ca2","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        volume_name \u003d self._translate_volume_name(volume[\u0027name\u0027])"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        volume_size \u003d float("},{"line_number":235,"context_line":"            volume[\u0027size\u0027] *"},{"line_number":236,"context_line":"            zte_pub.ZTE_SIZE *"},{"line_number":237,"context_line":"            zte_pub.ZTE_SIZE)"},{"line_number":238,"context_line":"        self._create_volume(volume_name, volume_size)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def _delete_clone_volume(self, cloned_name):"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a68dd71_3fb484cf","line":237,"range":{"start_line":235,"start_character":0,"end_line":237,"end_character":29},"updated":"2016-01-22 10:07:57.000000000","message":"The unit of volume is MB in your cinder driver？","commit_id":"e0006d3ab00bac91c7ddfca65bffb09a0e0c836f"},{"author":{"_account_id":12184,"name":"Weiwei Gu","email":"gu.weiwei@zte.com.cn","username":"guweiwei"},"change_message_id":"f8f8347a1388233ba3ea2156037941bbad399050","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        volume_name \u003d self._translate_volume_name(volume[\u0027name\u0027])"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        volume_size \u003d float("},{"line_number":235,"context_line":"            volume[\u0027size\u0027] *"},{"line_number":236,"context_line":"            zte_pub.ZTE_SIZE *"},{"line_number":237,"context_line":"            zte_pub.ZTE_SIZE)"},{"line_number":238,"context_line":"        self._create_volume(volume_name, volume_size)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def _delete_clone_volume(self, cloned_name):"}],"source_content_type":"text/x-python","patch_set":26,"id":"3afc51ec_2f5f6ae6","line":237,"range":{"start_line":235,"start_character":0,"end_line":237,"end_character":29},"in_reply_to":"9a68dd71_3fb484cf","updated":"2016-05-06 00:48:02.000000000","message":"yes","commit_id":"e0006d3ab00bac91c7ddfca65bffb09a0e0c836f"}],"cinder/volume/drivers/zte/zte_pub.py":[{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"558a80e4dab26a22860f37eda95f738981f3eb93","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"# Copyright (c) 2012 Zte Technologies Co., Ltd."},{"line_number":3,"context_line":"# Copyright (c) 2012 OpenStack LLC."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_5c697bbd","line":2,"range":{"start_line":2,"start_character":20,"end_line":2,"end_character":21},"updated":"2015-12-17 17:05:29.000000000","message":"Should this be updated to 2015?","commit_id":"621b891e512c5ea3080dfcde5fda0474f2cfba73"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d052285bf2ce53baf46bd4bab991e5648bbd1c5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012-2015 ZTE Corporation. All rights reserved"},{"line_number":2,"context_line":"# Copyright (c) 2012 OpenStack LLC."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba63e191_e52571ae","line":2,"updated":"2016-01-18 20:04:46.000000000","message":"Remove.","commit_id":"f38e6e63ad02026ce35df4dca39cb1e88191525a"}]}
