)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"dd7e92729177199a7c8f7ccdc1e3abc48f01d77e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Bob-OpenStack \u003c295988511@qq.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-02-04 19:28:00 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix problems under multipath"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We have discovered some problems when using multipath"},{"line_number":10,"context_line":"and now we have fixed this."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da86d52c_0cbd0103","line":7,"updated":"2015-02-07 18:59:03.000000000","message":"Please update the topic for this that says this is a problem with your driver.","commit_id":"decfd60065c08850e5f6800b3c5168dedd941bf9"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"fc6888a40e36254fedbacfa1dff88070d84e1eb4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Bob-OpenStack \u003c295988511@qq.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-02-04 19:28:00 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix problems under multipath"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We have discovered some problems when using multipath"},{"line_number":10,"context_line":"and now we have fixed this."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da86d52c_e780b548","line":7,"in_reply_to":"da86d52c_0cbd0103","updated":"2015-02-09 11:45:08.000000000","message":"Done","commit_id":"decfd60065c08850e5f6800b3c5168dedd941bf9"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"dd7e92729177199a7c8f7ccdc1e3abc48f01d77e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"We have discovered some problems when using multipath"},{"line_number":10,"context_line":"and now we have fixed this."},{"line_number":11,"context_line":"And we also fixed some \u0027range\u0027 when query from the array."},{"line_number":12,"context_line":"This commit is dependent on the commit of bug 1411904."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1415423"},{"line_number":15,"context_line":"Change-Id: I1ac8f3a5da63090d559f97862e3b0c3efb7bfa39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da86d52c_2cbac50a","line":12,"updated":"2015-02-07 18:59:03.000000000","message":"Also mention that the problem is with your driver itself, not Cinder.","commit_id":"decfd60065c08850e5f6800b3c5168dedd941bf9"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"fc6888a40e36254fedbacfa1dff88070d84e1eb4","unresolved":false,"context_lines":[{"line_number":9,"context_line":"We have discovered some problems when using multipath"},{"line_number":10,"context_line":"and now we have fixed this."},{"line_number":11,"context_line":"And we also fixed some \u0027range\u0027 when query from the array."},{"line_number":12,"context_line":"This commit is dependent on the commit of bug 1411904."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1415423"},{"line_number":15,"context_line":"Change-Id: I1ac8f3a5da63090d559f97862e3b0c3efb7bfa39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da86d52c_87cff9b2","line":12,"in_reply_to":"da86d52c_2cbac50a","updated":"2015-02-09 11:45:08.000000000","message":"Done","commit_id":"decfd60065c08850e5f6800b3c5168dedd941bf9"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fc66d6257fadda4d13dfdb41412343c466e83d23","unresolved":false,"context_lines":[{"line_number":9,"context_line":"We have discovered some problems when using multipath"},{"line_number":10,"context_line":"in huawei driver and now we have fixed this."},{"line_number":11,"context_line":"We also fixed some \u0027range\u0027 when query from the array"},{"line_number":12,"context_line":"in huawei driver."},{"line_number":13,"context_line":"This commit is dependent on the commit of bug 1411904."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1415423"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9a80dd14_b2ba82df","line":12,"updated":"2015-03-04 20:53:00.000000000","message":"Please, add not about fixed logging according to a guidelines here","commit_id":"ad37b6f7098da905933869b00352114a9090c9a4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2531cbe52a752109e40946d779f603131e135bfd","unresolved":false,"context_lines":[{"line_number":9,"context_line":"We have discovered some problems when using multipath"},{"line_number":10,"context_line":"in huawei driver and now we have fixed this."},{"line_number":11,"context_line":"We also fixed some \u0027range\u0027 when query from the array"},{"line_number":12,"context_line":"in huawei driver."},{"line_number":13,"context_line":"This commit is dependent on the commit of bug 1411904."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1415423"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9a80dd14_55184681","line":12,"in_reply_to":"9a80dd14_b2ba82df","updated":"2015-03-05 01:36:59.000000000","message":"Sorry, I am not really get your point here. Could you explain more specifically? Thanks!","commit_id":"ad37b6f7098da905933869b00352114a9090c9a4"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fc66d6257fadda4d13dfdb41412343c466e83d23","unresolved":false,"context_lines":[{"line_number":10,"context_line":"in huawei driver and now we have fixed this."},{"line_number":11,"context_line":"We also fixed some \u0027range\u0027 when query from the array"},{"line_number":12,"context_line":"in huawei driver."},{"line_number":13,"context_line":"This commit is dependent on the commit of bug 1411904."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1415423"},{"line_number":16,"context_line":"Change-Id: I1ac8f3a5da63090d559f97862e3b0c3efb7bfa39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9a80dd14_12e34e08","line":13,"updated":"2015-03-04 20:53:00.000000000","message":"IMO, no need to add it to a comment.","commit_id":"ad37b6f7098da905933869b00352114a9090c9a4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2531cbe52a752109e40946d779f603131e135bfd","unresolved":false,"context_lines":[{"line_number":10,"context_line":"in huawei driver and now we have fixed this."},{"line_number":11,"context_line":"We also fixed some \u0027range\u0027 when query from the array"},{"line_number":12,"context_line":"in huawei driver."},{"line_number":13,"context_line":"This commit is dependent on the commit of bug 1411904."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1415423"},{"line_number":16,"context_line":"Change-Id: I1ac8f3a5da63090d559f97862e3b0c3efb7bfa39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9a80dd14_553be639","line":13,"in_reply_to":"9a80dd14_12e34e08","updated":"2015-03-05 01:36:59.000000000","message":"Done","commit_id":"ad37b6f7098da905933869b00352114a9090c9a4"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"2c9f3391a39737cb44c92c8a14da2b7bad5a18d4","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We have discovered some problems when using multipath"},{"line_number":10,"context_line":"in huawei driver and now we have fixed this."},{"line_number":11,"context_line":"We also fixed some \u0027range\u0027 when query from the array"},{"line_number":12,"context_line":"in huawei driver."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1415423"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"7aaa499b_1fec40c6","line":11,"updated":"2015-04-13 13:39:43.000000000","message":"If the \"fixed some \u0027range\u0027\" is another non-related issue, it should be submitted in an separated patch.","commit_id":"a2d48f4f57bc8782e84ec0c8ddbbeb0144c9c825"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"04e1365d4ef474386b094a9ba7163ea6db554b24","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We have discovered some problems when using multipath"},{"line_number":10,"context_line":"in huawei driver and now we have fixed this."},{"line_number":11,"context_line":"We also fixed some \u0027range\u0027 when query from the array"},{"line_number":12,"context_line":"in huawei driver."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1415423"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"7aaa499b_bc96614a","line":11,"in_reply_to":"7aaa499b_1fec40c6","updated":"2015-04-14 02:15:40.000000000","message":"I will remove the code related to \"fixed some range\" and amend the commit message. Thanks!","commit_id":"a2d48f4f57bc8782e84ec0c8ddbbeb0144c9c825"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"2c9f3391a39737cb44c92c8a14da2b7bad5a18d4","unresolved":false,"context_lines":[{"line_number":11,"context_line":"We also fixed some \u0027range\u0027 when query from the array"},{"line_number":12,"context_line":"in huawei driver."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1415423"},{"line_number":15,"context_line":"Change-Id: I1ac8f3a5da63090d559f97862e3b0c3efb7bfa39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"7aaa499b_5fbbe8c4","line":14,"updated":"2015-04-13 13:39:43.000000000","message":"I opened the bug report but found little description. Could you fill more for it?","commit_id":"a2d48f4f57bc8782e84ec0c8ddbbeb0144c9c825"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"04e1365d4ef474386b094a9ba7163ea6db554b24","unresolved":false,"context_lines":[{"line_number":11,"context_line":"We also fixed some \u0027range\u0027 when query from the array"},{"line_number":12,"context_line":"in huawei driver."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1415423"},{"line_number":15,"context_line":"Change-Id: I1ac8f3a5da63090d559f97862e3b0c3efb7bfa39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"7aaa499b_9c916555","line":14,"in_reply_to":"7aaa499b_5fbbe8c4","updated":"2015-04-14 02:15:40.000000000","message":"Done","commit_id":"a2d48f4f57bc8782e84ec0c8ddbbeb0144c9c825"}],"cinder/tests/test_huawei_18000.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"11169bf0a9012220e918770920fc76580bbf7e17","unresolved":false,"context_lines":[{"line_number":414,"context_line":"        url \u003d url.replace(\u0027http://100.115.10.69:8082/deviceManager/rest\u0027, \u0027\u0027)"},{"line_number":415,"context_line":"        url \u003d url.replace(\u0027/210235G7J20000000000/\u0027, \u0027\u0027)"},{"line_number":416,"context_line":"        data \u003d None"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        if self.test_normal:"},{"line_number":419,"context_line":"            if url \u003d\u003d \"/xx/sessions\" or url \u003d\u003d \"sessions\":"},{"line_number":420,"context_line":"                data \u003d data_session(url)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa81d914_12e7c513","line":417,"updated":"2015-01-28 15:58:30.000000000","message":"unrelated changes","commit_id":"4310065f7e9616097160baffe1e43c57482830f2"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"e0ea861532766084721cfbe8345455061ac27a6c","unresolved":false,"context_lines":[{"line_number":586,"context_line":"        self.driver.do_setup()"},{"line_number":587,"context_line":"        self.driver.common.test_normal \u003d True"},{"line_number":588,"context_line":"        self.tgt_portgroup \u003d \u0027test\u0027"},{"line_number":589,"context_line":"        self.target_ip \u003d \u0027192.168.100.10\u0027"},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"    def testloginSuccess(self):"},{"line_number":592,"context_line":"        deviceid \u003d self.driver.common.login()"}],"source_content_type":"text/x-python","patch_set":21,"id":"3ab451fb_ee2a212c","line":589,"updated":"2015-04-17 07:28:16.000000000","message":"Does this ip mean something special? Could we use \u0027172.0.0.1\u0027 is better?","commit_id":"9d5cb1d4abab3a4d7dbbd99388cd362f8aa0c52d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"388dc6065442e328f9d48954034bd230bb861982","unresolved":false,"context_lines":[{"line_number":586,"context_line":"        self.driver.do_setup()"},{"line_number":587,"context_line":"        self.driver.common.test_normal \u003d True"},{"line_number":588,"context_line":"        self.tgt_portgroup \u003d \u0027test\u0027"},{"line_number":589,"context_line":"        self.target_ip \u003d \u0027192.168.100.10\u0027"},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"    def testloginSuccess(self):"},{"line_number":592,"context_line":"        deviceid \u003d self.driver.common.login()"}],"source_content_type":"text/x-python","patch_set":21,"id":"bab921fb_1440b0a4","line":589,"in_reply_to":"3ab451fb_ee2a212c","updated":"2015-05-04 08:50:41.000000000","message":"No special, I will change it. Thanks!","commit_id":"9d5cb1d4abab3a4d7dbbd99388cd362f8aa0c52d"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"e0ea861532766084721cfbe8345455061ac27a6c","unresolved":false,"context_lines":[{"line_number":725,"context_line":""},{"line_number":726,"context_line":"    def testgettgtip(self):"},{"line_number":727,"context_line":"        self.driver.common.login()"},{"line_number":728,"context_line":"        portg_id \u003d self.driver.common._find_tgt_port_group(self.tgt_portgroup)"},{"line_number":729,"context_line":"        result \u003d self.driver.common._get_tgt_ip_from_portgroup(portg_id)"},{"line_number":730,"context_line":"        self.assertEqual(self.target_ip, result)"},{"line_number":731,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"3ab451fb_0eab0d8b","line":728,"updated":"2015-04-17 07:28:16.000000000","message":"\u0027portg_id\u0027 should have an expect value. Add one more assertEqual in here is better.","commit_id":"9d5cb1d4abab3a4d7dbbd99388cd362f8aa0c52d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"388dc6065442e328f9d48954034bd230bb861982","unresolved":false,"context_lines":[{"line_number":725,"context_line":""},{"line_number":726,"context_line":"    def testgettgtip(self):"},{"line_number":727,"context_line":"        self.driver.common.login()"},{"line_number":728,"context_line":"        portg_id \u003d self.driver.common._find_tgt_port_group(self.tgt_portgroup)"},{"line_number":729,"context_line":"        result \u003d self.driver.common._get_tgt_ip_from_portgroup(portg_id)"},{"line_number":730,"context_line":"        self.assertEqual(self.target_ip, result)"},{"line_number":731,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"bab921fb_94604037","line":728,"in_reply_to":"3ab451fb_0eab0d8b","updated":"2015-05-04 08:50:41.000000000","message":"Done","commit_id":"9d5cb1d4abab3a4d7dbbd99388cd362f8aa0c52d"}],"cinder/tests/unit/test_huawei_18000.py":[{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"efbdca62658d3eb9f1fee26507c68b2497a2cf74","unresolved":false,"context_lines":[{"line_number":515,"context_line":"                         \"\u0026ASSOCIATEOBJID\u003d12\"))"},{"line_number":516,"context_line":"                and self.associate_flag) or (url \u003d\u003d \"mappingview/associate?TY\"\\"},{"line_number":517,"context_line":"                \"PE\u003d245\u0026ASSOCIATEOBJTYPE\u003d257\u0026ASSOCIATEOBJID\u003d12\" and"},{"line_number":518,"context_line":"                self.portgroup_associated \u003d\u003d True):"},{"line_number":519,"context_line":"                data \u003d \u0027{\"error\":{\"code\":0},\"data\":[{\"ID\":\"12\"}]}\u0027"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"            if url \u003d\u003d \"fc_initiator?ISFREE\u003dtrue\u0026range\u003d[0-1000]\":"}],"source_content_type":"text/x-python","patch_set":22,"id":"1aca2d91_bc7b457b","line":518,"updated":"2015-05-06 03:16:52.000000000","message":"Just self.portgroup_associated is OK","commit_id":"6fb649c7fc85847828d070226ef0726f53a47609"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"aea3917900e403dc1dbafa042ddaecfad3bf66be","unresolved":false,"context_lines":[{"line_number":515,"context_line":"                         \"\u0026ASSOCIATEOBJID\u003d12\"))"},{"line_number":516,"context_line":"                and self.associate_flag) or (url \u003d\u003d \"mappingview/associate?TY\"\\"},{"line_number":517,"context_line":"                \"PE\u003d245\u0026ASSOCIATEOBJTYPE\u003d257\u0026ASSOCIATEOBJID\u003d12\" and"},{"line_number":518,"context_line":"                self.portgroup_associated \u003d\u003d True):"},{"line_number":519,"context_line":"                data \u003d \u0027{\"error\":{\"code\":0},\"data\":[{\"ID\":\"12\"}]}\u0027"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"            if url \u003d\u003d \"fc_initiator?ISFREE\u003dtrue\u0026range\u003d[0-1000]\":"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a0c5dc1_eae8c718","line":518,"in_reply_to":"1aca2d91_bc7b457b","updated":"2015-05-12 01:29:39.000000000","message":"Done","commit_id":"6fb649c7fc85847828d070226ef0726f53a47609"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"efbdca62658d3eb9f1fee26507c68b2497a2cf74","unresolved":false,"context_lines":[{"line_number":532,"context_line":"                      or url \u003d\u003d \"portgroup?range\u003d[0-8191]\u0026TYPE\u003d257\"\\"},{"line_number":533,"context_line":"                      or (url \u003d\u003d \"mappingview/associate?TYPE\u003d245\u0026ASSOCIATEOBJ\"\\"},{"line_number":534,"context_line":"                      \"TYPE\u003d257\u0026ASSOCIATEOBJID\u003d12\" and"},{"line_number":535,"context_line":"                      self.portgroup_associated \u003d\u003d True):"},{"line_number":536,"context_line":"                data \u003d \u0027{\"error\":{\"code\":0},\"data\":[{\"ID\":11,\"NAME\":\"test\"}]}\u0027"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"            if url \u003d\u003d \"lun/associate?TYPE\u003d11\u0026\"\\"}],"source_content_type":"text/x-python","patch_set":22,"id":"1aca2d91_9c808948","line":535,"updated":"2015-05-06 03:16:52.000000000","message":"ditto","commit_id":"6fb649c7fc85847828d070226ef0726f53a47609"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"aea3917900e403dc1dbafa042ddaecfad3bf66be","unresolved":false,"context_lines":[{"line_number":532,"context_line":"                      or url \u003d\u003d \"portgroup?range\u003d[0-8191]\u0026TYPE\u003d257\"\\"},{"line_number":533,"context_line":"                      or (url \u003d\u003d \"mappingview/associate?TYPE\u003d245\u0026ASSOCIATEOBJ\"\\"},{"line_number":534,"context_line":"                      \"TYPE\u003d257\u0026ASSOCIATEOBJID\u003d12\" and"},{"line_number":535,"context_line":"                      self.portgroup_associated \u003d\u003d True):"},{"line_number":536,"context_line":"                data \u003d \u0027{\"error\":{\"code\":0},\"data\":[{\"ID\":11,\"NAME\":\"test\"}]}\u0027"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"            if url \u003d\u003d \"lun/associate?TYPE\u003d11\u0026\"\\"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a0c5dc1_aaf2cf04","line":535,"in_reply_to":"1aca2d91_9c808948","updated":"2015-05-12 01:29:39.000000000","message":"Done","commit_id":"6fb649c7fc85847828d070226ef0726f53a47609"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"52aa6a17c1eaec137891ce5120351118dbe53eb9","unresolved":false,"context_lines":[{"line_number":740,"context_line":"        result \u003d self.driver.common._get_tgt_ip_from_portgroup(portg_id)"},{"line_number":741,"context_line":"        self.assertEqual(self.target_ip, result)"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"    def test_associate_portgroup_to_view(self):"},{"line_number":744,"context_line":"        self.driver.common.login()"},{"line_number":745,"context_line":"        self.driver.common._associate_portgroup_to_view(\u002711\u0027, \u002712\u0027)"},{"line_number":746,"context_line":"        is_associated \u003d self.driver.common._portgroup_associated(11, 12)"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_4af19300","line":743,"updated":"2015-05-19 06:53:08.000000000","message":"Duplicated with line 979.","commit_id":"88e0ea7b4839b7549a7bdfc30d4865e4a6236ebb"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"2e68bbf8ebb7dbcf403309e8d56a9bc345e65c2f","unresolved":false,"context_lines":[{"line_number":976,"context_line":"        result \u003d self.driver.common._is_lun_associated_to_lungroup(\u002712\u0027, \u002712\u0027)"},{"line_number":977,"context_line":"        self.assertFalse(result)"},{"line_number":978,"context_line":""},{"line_number":979,"context_line":"    def test_associate_portgroup_to_view(self):"},{"line_number":980,"context_line":"        self.driver.common.login()"},{"line_number":981,"context_line":"        self.driver.common._associate_portgroup_to_view(\u002711\u0027, \u002712\u0027)"},{"line_number":982,"context_line":"        is_associated \u003d self.driver.common._portgroup_associated(11, 12)"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_790793ca","line":979,"updated":"2015-05-19 01:57:17.000000000","message":"Duplicated function define. See line 743.","commit_id":"88e0ea7b4839b7549a7bdfc30d4865e4a6236ebb"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"78a8c714c4cf7c98155e36ae14786a5e252ceb8e","unresolved":false,"context_lines":[{"line_number":976,"context_line":"        result \u003d self.driver.common._is_lun_associated_to_lungroup(\u002712\u0027, \u002712\u0027)"},{"line_number":977,"context_line":"        self.assertFalse(result)"},{"line_number":978,"context_line":""},{"line_number":979,"context_line":"    def test_associate_portgroup_to_view(self):"},{"line_number":980,"context_line":"        self.driver.common.login()"},{"line_number":981,"context_line":"        self.driver.common._associate_portgroup_to_view(\u002711\u0027, \u002712\u0027)"},{"line_number":982,"context_line":"        is_associated \u003d self.driver.common._portgroup_associated(11, 12)"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_a6ec70bb","line":979,"in_reply_to":"7a016987_74a87b20","updated":"2015-05-22 12:12:03.000000000","message":"Agreed.","commit_id":"88e0ea7b4839b7549a7bdfc30d4865e4a6236ebb"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e5de9ba69a14573f035f53b54b43b24a55c1b0aa","unresolved":false,"context_lines":[{"line_number":976,"context_line":"        result \u003d self.driver.common._is_lun_associated_to_lungroup(\u002712\u0027, \u002712\u0027)"},{"line_number":977,"context_line":"        self.assertFalse(result)"},{"line_number":978,"context_line":""},{"line_number":979,"context_line":"    def test_associate_portgroup_to_view(self):"},{"line_number":980,"context_line":"        self.driver.common.login()"},{"line_number":981,"context_line":"        self.driver.common._associate_portgroup_to_view(\u002711\u0027, \u002712\u0027)"},{"line_number":982,"context_line":"        is_associated \u003d self.driver.common._portgroup_associated(11, 12)"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_e607d37f","line":979,"in_reply_to":"7a016987_74a87b20","updated":"2015-05-26 03:34:06.000000000","message":"Sure, we are in progress of refactoring these tests, but I think these refactored code should be in another patch as a another bug.","commit_id":"88e0ea7b4839b7549a7bdfc30d4865e4a6236ebb"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0eaeba2e0e8da8de8ba537d6af7e0098d3e25900","unresolved":false,"context_lines":[{"line_number":976,"context_line":"        result \u003d self.driver.common._is_lun_associated_to_lungroup(\u002712\u0027, \u002712\u0027)"},{"line_number":977,"context_line":"        self.assertFalse(result)"},{"line_number":978,"context_line":""},{"line_number":979,"context_line":"    def test_associate_portgroup_to_view(self):"},{"line_number":980,"context_line":"        self.driver.common.login()"},{"line_number":981,"context_line":"        self.driver.common._associate_portgroup_to_view(\u002711\u0027, \u002712\u0027)"},{"line_number":982,"context_line":"        is_associated \u003d self.driver.common._portgroup_associated(11, 12)"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_81a87bdc","line":979,"in_reply_to":"7a016987_790793ca","updated":"2015-05-20 01:01:15.000000000","message":"This two functions belong to two different class.","commit_id":"88e0ea7b4839b7549a7bdfc30d4865e4a6236ebb"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4e09ec8ab715130542ce78310f24ca06165459f2","unresolved":false,"context_lines":[{"line_number":976,"context_line":"        result \u003d self.driver.common._is_lun_associated_to_lungroup(\u002712\u0027, \u002712\u0027)"},{"line_number":977,"context_line":"        self.assertFalse(result)"},{"line_number":978,"context_line":""},{"line_number":979,"context_line":"    def test_associate_portgroup_to_view(self):"},{"line_number":980,"context_line":"        self.driver.common.login()"},{"line_number":981,"context_line":"        self.driver.common._associate_portgroup_to_view(\u002711\u0027, \u002712\u0027)"},{"line_number":982,"context_line":"        is_associated \u003d self.driver.common._portgroup_associated(11, 12)"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_74a87b20","line":979,"in_reply_to":"7a016987_81a87bdc","updated":"2015-05-21 14:36:26.000000000","message":"You may want to consider refactoring these tests to avoid duplicating code.","commit_id":"88e0ea7b4839b7549a7bdfc30d4865e4a6236ebb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"95bd45b774006fd0ffda23bc908cde941b126301","unresolved":false,"context_lines":[{"line_number":733,"context_line":"        result \u003d self.driver.common._is_lun_associated_to_lungroup(\u002712\u0027, \u002712\u0027)"},{"line_number":734,"context_line":"        self.assertFalse(result)"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"    def testgettgtip(self):"},{"line_number":737,"context_line":"        self.driver.common.login()"},{"line_number":738,"context_line":"        portg_id \u003d self.driver.common._find_tgt_port_group(self.tgt_portgroup)"},{"line_number":739,"context_line":"        self.assertEqual(11, portg_id)"}],"source_content_type":"text/x-python","patch_set":28,"id":"3a50d1a3_4aa36f00","line":736,"updated":"2015-07-28 22:10:34.000000000","message":"Can you name this method test_get_tgt_ip?","commit_id":"0d8afdd99619fbc3ae37cdaae5ce215064bfa94d"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"f0b175d8bac7743a3033ee2777c1faf2369aa9a5","unresolved":false,"context_lines":[{"line_number":976,"context_line":"        result \u003d self.driver.common._is_lun_associated_to_lungroup(\u002712\u0027, \u002712\u0027)"},{"line_number":977,"context_line":"        self.assertFalse(result)"},{"line_number":978,"context_line":""},{"line_number":979,"context_line":"    def test_associate_portgroup_to_view(self):"},{"line_number":980,"context_line":"        self.driver.common.login()"},{"line_number":981,"context_line":"        self.driver.common._associate_portgroup_to_view(\u002711\u0027, \u002712\u0027)"},{"line_number":982,"context_line":"        is_associated \u003d self.driver.common._portgroup_associated(11, 12)"}],"source_content_type":"text/x-python","patch_set":28,"id":"5afe65bd_e482e1ff","line":979,"updated":"2015-06-03 11:56:29.000000000","message":"Since the the duplicated code (vs line 735) is brought into by this patch, I think it is more proper to refactor here rather than make a separated bug.\n\nBut if you really insist to refactor it later, please add a TODO comment.","commit_id":"0d8afdd99619fbc3ae37cdaae5ce215064bfa94d"}],"cinder/volume/drivers/__init__.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f0760404495b969664fcee50a98c0a1e07022757","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 - 2014 Huawei Technologies Co., Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_e848eab4","line":1,"updated":"2015-03-09 13:29:56.000000000","message":"This should not have changed.","commit_id":"8bbc792eee05200bd87ccd4d25c4aeb5ceebe5e2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"7f30f3856dbaf4d4d58c7a34c26d18df342bc8a4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 - 2014 Huawei Technologies Co., Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_2353733a","line":1,"in_reply_to":"9a80dd14_e848eab4","updated":"2015-03-12 03:59:18.000000000","message":"Done","commit_id":"8bbc792eee05200bd87ccd4d25c4aeb5ceebe5e2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f0760404495b969664fcee50a98c0a1e07022757","unresolved":false,"context_lines":[{"line_number":45,"context_line":"           \u0027V3\u0027: \u002718000\u0027}"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class HuaweiVolumeDriver(object):"},{"line_number":49,"context_line":"    \"\"\"Define an unified driver for Huawei drivers.\"\"\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_88576e57","line":48,"updated":"2015-03-09 13:29:56.000000000","message":"Why did this get placed in the __init__ file?","commit_id":"8bbc792eee05200bd87ccd4d25c4aeb5ceebe5e2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"7f30f3856dbaf4d4d58c7a34c26d18df342bc8a4","unresolved":false,"context_lines":[{"line_number":45,"context_line":"           \u0027V3\u0027: \u002718000\u0027}"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class HuaweiVolumeDriver(object):"},{"line_number":49,"context_line":"    \"\"\"Define an unified driver for Huawei drivers.\"\"\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_1e188274","line":48,"in_reply_to":"9a80dd14_88576e57","updated":"2015-03-12 03:59:18.000000000","message":"We will refact the code in L, thanks!","commit_id":"8bbc792eee05200bd87ccd4d25c4aeb5ceebe5e2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a726347d0f93976a446782a67612cdc484c1e792","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 - 2014 Huawei Technologies Co., Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_80486cb4","line":1,"updated":"2015-03-12 19:48:09.000000000","message":"This file should not be here under volume/drivers.","commit_id":"514b8b774eaac22876904d2c87afeb8b7d34a168"}],"cinder/volume/drivers/huawei/__init__.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d73f3e1b6c65c457bb6233ce903a3cfb7f5944cb","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            if product \u003d\u003d \u0027HVS\u0027:"},{"line_number":79,"context_line":"                LOG.warn(_LW("},{"line_number":80,"context_line":"                    \"Product name %s is deprecated, update your \""},{"line_number":81,"context_line":"                    \"configuration to the new product name.\"),"},{"line_number":82,"context_line":"                    product)"},{"line_number":83,"context_line":"            product \u003d MAPPING[product]"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_43050713","line":81,"updated":"2015-02-08 03:15:43.000000000","message":"Please add the new product name in the message.","commit_id":"decfd60065c08850e5f6800b3c5168dedd941bf9"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"fc6888a40e36254fedbacfa1dff88070d84e1eb4","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            if product \u003d\u003d \u0027HVS\u0027:"},{"line_number":79,"context_line":"                LOG.warn(_LW("},{"line_number":80,"context_line":"                    \"Product name %s is deprecated, update your \""},{"line_number":81,"context_line":"                    \"configuration to the new product name.\"),"},{"line_number":82,"context_line":"                    product)"},{"line_number":83,"context_line":"            product \u003d MAPPING[product]"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_4748a1cc","line":81,"in_reply_to":"da86d52c_43050713","updated":"2015-02-09 11:45:08.000000000","message":"Done","commit_id":"decfd60065c08850e5f6800b3c5168dedd941bf9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d73f3e1b6c65c457bb6233ce903a3cfb7f5944cb","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                protocol in self._protocol.keys()):"},{"line_number":98,"context_line":"            return (product, protocol)"},{"line_number":99,"context_line":"        else:"},{"line_number":100,"context_line":"            msg \u003d (_(\u0027\"Product\" or \"Protocol\" is illegal. \"Product\" should \u0027"},{"line_number":101,"context_line":"                     \u0027be set to either T, Dorado, 18000, TV2 or V3. \u0027"},{"line_number":102,"context_line":"                     \u0027\"Protocol\" should be set to either iSCSI or FC. \u0027"},{"line_number":103,"context_line":"                     \u0027Product: %(product)s Protocol: %(protocol)s\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_63020b0d","line":100,"updated":"2015-02-08 03:15:43.000000000","message":"Suggest change the first sentence to \"Wrong product or protocol\".     \"illegal\" does not seem to be appropriate.","commit_id":"decfd60065c08850e5f6800b3c5168dedd941bf9"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"fc6888a40e36254fedbacfa1dff88070d84e1eb4","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                protocol in self._protocol.keys()):"},{"line_number":98,"context_line":"            return (product, protocol)"},{"line_number":99,"context_line":"        else:"},{"line_number":100,"context_line":"            msg \u003d (_(\u0027\"Product\" or \"Protocol\" is illegal. \"Product\" should \u0027"},{"line_number":101,"context_line":"                     \u0027be set to either T, Dorado, 18000, TV2 or V3. \u0027"},{"line_number":102,"context_line":"                     \u0027\"Protocol\" should be set to either iSCSI or FC. \u0027"},{"line_number":103,"context_line":"                     \u0027Product: %(product)s Protocol: %(protocol)s\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_a71cfd78","line":100,"in_reply_to":"da86d52c_63020b0d","updated":"2015-02-09 11:45:08.000000000","message":"Done","commit_id":"decfd60065c08850e5f6800b3c5168dedd941bf9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a726347d0f93976a446782a67612cdc484c1e792","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_406bd41d","line":1,"updated":"2015-03-12 19:48:09.000000000","message":"Why make this change?","commit_id":"514b8b774eaac22876904d2c87afeb8b7d34a168"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a726347d0f93976a446782a67612cdc484c1e792","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from cinder import exception"},{"line_number":25,"context_line":"from cinder.i18n import _, _LI, _LW"},{"line_number":26,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":27,"context_line":"from cinder.volume.drivers.huawei import huawei_18000"},{"line_number":28,"context_line":"from cinder.volume.drivers.huawei import huawei_dorado"},{"line_number":29,"context_line":"from cinder.volume.drivers.huawei import huawei_t"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_005d5c79","line":26,"updated":"2015-03-12 19:48:09.000000000","message":"You need a rebase to pick up changes on the left (line 22 oslo_log)","commit_id":"514b8b774eaac22876904d2c87afeb8b7d34a168"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ec3aa0e7932675c4a04a9e6bda1b1af0c55b1707","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a80dd14_7ad4cf1f","line":1,"updated":"2015-03-13 17:50:57.000000000","message":"This should not be changed from Huawei to OpenStack Foundation.  Seems like there are still some rebase issues?","commit_id":"51d8057819fbd4f38fa9e2ee5a2ca93eb24e7fc1"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"55224ccdaaa74249151db1fffcc590b118eb6f24","unresolved":false,"context_lines":[{"line_number":42,"context_line":"CONF.register_opts(huawei_opt)"},{"line_number":43,"context_line":"MAPPING \u003d {\u0027HVS\u0027: \u002718000\u0027,"},{"line_number":44,"context_line":"           \u0027TV2\u0027: \u002718000\u0027,"},{"line_number":45,"context_line":"           \u0027V3\u0027: \u002718000\u0027}"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class HuaweiVolumeDriver(object):"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_4e99b1cf","line":45,"updated":"2015-03-17 02:36:35.000000000","message":"You added mappings for TV2 and V3 to 18000, but I don\u0027t see this change added in the commit message?","commit_id":"abc99112dd7a9e7c54cdc72ca876cb860978a0be"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"de81cfcfa887291a4f616c3c1a5e201b0b3ca621","unresolved":false,"context_lines":[{"line_number":42,"context_line":"CONF.register_opts(huawei_opt)"},{"line_number":43,"context_line":"MAPPING \u003d {\u0027HVS\u0027: \u002718000\u0027,"},{"line_number":44,"context_line":"           \u0027TV2\u0027: \u002718000\u0027,"},{"line_number":45,"context_line":"           \u0027V3\u0027: \u002718000\u0027}"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class HuaweiVolumeDriver(object):"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_f6ff9733","line":45,"in_reply_to":"9a80dd14_4e99b1cf","updated":"2015-03-17 06:14:51.000000000","message":"Maybe we should add V3 support in next patch. I will remove the TV2 and V3 map in next commit. Thanks!","commit_id":"abc99112dd7a9e7c54cdc72ca876cb860978a0be"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"4ee1f1ea26af77d406d375311e8c47f2b9b3f1d1","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":52,"context_line":"        super(HuaweiVolumeDriver, self).__init__()"},{"line_number":53,"context_line":"        self._product \u003d {\u0027T\u0027: huawei_t, \u0027Dorado\u0027: huawei_dorado,"},{"line_number":54,"context_line":"                         \u0027TV2\u0027: huawei_18000, \u0027V3\u0027: huawei_18000,"},{"line_number":55,"context_line":"                         \u002718000\u0027: huawei_18000, \u0027HVS\u0027: huawei_18000}"},{"line_number":56,"context_line":"        self._protocol \u003d {\u0027iSCSI\u0027: \u0027ISCSIDriver\u0027, \u0027FC\u0027: \u0027FCDriver\u0027}"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_51186d75","line":53,"updated":"2015-03-17 06:18:58.000000000","message":"I think the \u0027T\u0027 and \u0027Dorado\u0027 should be removed after this patch \u0027https://review.openstack.org/#/c/164916/\u0027 has been merged.","commit_id":"abc99112dd7a9e7c54cdc72ca876cb860978a0be"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2b614595343677f53c2023554f0aabcba1aec574","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":52,"context_line":"        super(HuaweiVolumeDriver, self).__init__()"},{"line_number":53,"context_line":"        self._product \u003d {\u0027T\u0027: huawei_t, \u0027Dorado\u0027: huawei_dorado,"},{"line_number":54,"context_line":"                         \u0027TV2\u0027: huawei_18000, \u0027V3\u0027: huawei_18000,"},{"line_number":55,"context_line":"                         \u002718000\u0027: huawei_18000, \u0027HVS\u0027: huawei_18000}"},{"line_number":56,"context_line":"        self._protocol \u003d {\u0027iSCSI\u0027: \u0027ISCSIDriver\u0027, \u0027FC\u0027: \u0027FCDriver\u0027}"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_11f435ce","line":53,"in_reply_to":"9a80dd14_51186d75","updated":"2015-03-17 06:34:06.000000000","message":"Yes, I will remove T and Dorado as soon as the patch you said is merged.","commit_id":"abc99112dd7a9e7c54cdc72ca876cb860978a0be"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5df682f05f337c7858f80571f6afbdbdba89c8f8","unresolved":false,"context_lines":[{"line_number":69,"context_line":"               \u0027product\u0027: product})"},{"line_number":70,"context_line":"        # Map HVS to 18000"},{"line_number":71,"context_line":"        if product in MAPPING:"},{"line_number":72,"context_line":"            LOG.warn(_LW(\"Product name %s is deprecated, update your \""},{"line_number":73,"context_line":"                         \"configuration to the new product name.\"), product)"},{"line_number":74,"context_line":"            product \u003d MAPPING[product]"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5afe65bd_a813dd5b","line":72,"updated":"2015-06-02 03:28:23.000000000","message":"LOG.warn is deprecated. The original had this correct with LOG.warning.","commit_id":"296fb067fb6d5a606fb689a4a050a2ff8741981d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b57225b1f0753b6f7380ddac4a4d5a6cac956427","unresolved":false,"context_lines":[{"line_number":69,"context_line":"               \u0027product\u0027: product})"},{"line_number":70,"context_line":"        # Map HVS to 18000"},{"line_number":71,"context_line":"        if product in MAPPING:"},{"line_number":72,"context_line":"            LOG.warn(_LW(\"Product name %s is deprecated, update your \""},{"line_number":73,"context_line":"                         \"configuration to the new product name.\"), product)"},{"line_number":74,"context_line":"            product \u003d MAPPING[product]"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5afe65bd_88926156","line":72,"in_reply_to":"5afe65bd_a813dd5b","updated":"2015-06-02 03:44:47.000000000","message":"Done","commit_id":"296fb067fb6d5a606fb689a4a050a2ff8741981d"}],"cinder/volume/drivers/huawei/huawei_utils.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5df682f05f337c7858f80571f6afbdbdba89c8f8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        return root"},{"line_number":41,"context_line":"    except IOError as err:"},{"line_number":42,"context_line":"        LOG.error(_LE(\u0027parse_xml_file: %s\u0027) , err)"},{"line_number":43,"context_line":"        raise err"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def get_xml_item(xml_root, item):"}],"source_content_type":"text/x-python","patch_set":27,"id":"5afe65bd_284dad72","line":43,"updated":"2015-06-02 03:28:23.000000000","message":"Another one where original was correct. Should just be \"raise\" to reraise the exception.","commit_id":"296fb067fb6d5a606fb689a4a050a2ff8741981d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5df682f05f337c7858f80571f6afbdbdba89c8f8","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        host_os \u003d os_type[\u0027Linux\u0027]  # default os type"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    LOG.debug(\u0027_get_host_os_type: Host %(ip)s OS type is %(os)s.\u0027"},{"line_number":131,"context_line":"              , {\u0027ip\u0027: host_ip, \u0027os\u0027: host_os})"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    return host_os"}],"source_content_type":"text/x-python","patch_set":27,"id":"5afe65bd_a8419d3b","line":131,"updated":"2015-06-02 03:28:23.000000000","message":"Not sure why this was changed either. Move comma back to the end of the previous line.","commit_id":"296fb067fb6d5a606fb689a4a050a2ff8741981d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b57225b1f0753b6f7380ddac4a4d5a6cac956427","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        host_os \u003d os_type[\u0027Linux\u0027]  # default os type"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    LOG.debug(\u0027_get_host_os_type: Host %(ip)s OS type is %(os)s.\u0027"},{"line_number":131,"context_line":"              , {\u0027ip\u0027: host_ip, \u0027os\u0027: host_os})"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    return host_os"}],"source_content_type":"text/x-python","patch_set":27,"id":"5afe65bd_c8ebb9af","line":131,"in_reply_to":"5afe65bd_a8419d3b","updated":"2015-06-02 03:44:47.000000000","message":"Done","commit_id":"296fb067fb6d5a606fb689a4a050a2ff8741981d"}],"cinder/volume/drivers/huawei/rest_common.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d73f3e1b6c65c457bb6233ce903a3cfb7f5944cb","unresolved":false,"context_lines":[{"line_number":776,"context_line":"            \u0027initialize_connection_iscsi,iscsi_iqn: %(iscsi_iqn)s, \u0027"},{"line_number":777,"context_line":"            \u0027target_ip: %(target_ip)s, \u0027"},{"line_number":778,"context_line":"            \u0027TargetPortGroup: %(portgroup_id)s.\u0027)"},{"line_number":779,"context_line":"            % {\u0027iscsi_iqn\u0027: iscsi_iqn,"},{"line_number":780,"context_line":"               \u0027target_ip\u0027: target_ip,"},{"line_number":781,"context_line":"               \u0027portgroup_id\u0027: portgroup_id})"},{"line_number":782,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_c311f75e","line":779,"updated":"2015-02-08 03:15:43.000000000","message":"Change \"%\" to \",\" for delayed string interpolation.","commit_id":"decfd60065c08850e5f6800b3c5168dedd941bf9"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"fc6888a40e36254fedbacfa1dff88070d84e1eb4","unresolved":false,"context_lines":[{"line_number":776,"context_line":"            \u0027initialize_connection_iscsi,iscsi_iqn: %(iscsi_iqn)s, \u0027"},{"line_number":777,"context_line":"            \u0027target_ip: %(target_ip)s, \u0027"},{"line_number":778,"context_line":"            \u0027TargetPortGroup: %(portgroup_id)s.\u0027)"},{"line_number":779,"context_line":"            % {\u0027iscsi_iqn\u0027: iscsi_iqn,"},{"line_number":780,"context_line":"               \u0027target_ip\u0027: target_ip,"},{"line_number":781,"context_line":"               \u0027portgroup_id\u0027: portgroup_id})"},{"line_number":782,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_f386b712","line":779,"in_reply_to":"da86d52c_c311f75e","updated":"2015-02-09 11:45:08.000000000","message":"Done","commit_id":"decfd60065c08850e5f6800b3c5168dedd941bf9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d73f3e1b6c65c457bb6233ce903a3cfb7f5944cb","unresolved":false,"context_lines":[{"line_number":1633,"context_line":"                if item[\u0027IPV4ADDR\u0027]:"},{"line_number":1634,"context_line":"                    target_ip \u003d item[\u0027IPV4ADDR\u0027]"},{"line_number":1635,"context_line":"                    LOG.info(_LI(\u0027_get_tgt_ip_from_portgroup: Get ip: %s.\u0027)"},{"line_number":1636,"context_line":"                             % target_ip)"},{"line_number":1637,"context_line":"                    break"},{"line_number":1638,"context_line":"        return target_ip"},{"line_number":1639,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_e348bb89","line":1636,"updated":"2015-02-08 03:15:43.000000000","message":"Should use \",\" instead of %","commit_id":"decfd60065c08850e5f6800b3c5168dedd941bf9"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"fc6888a40e36254fedbacfa1dff88070d84e1eb4","unresolved":false,"context_lines":[{"line_number":1633,"context_line":"                if item[\u0027IPV4ADDR\u0027]:"},{"line_number":1634,"context_line":"                    target_ip \u003d item[\u0027IPV4ADDR\u0027]"},{"line_number":1635,"context_line":"                    LOG.info(_LI(\u0027_get_tgt_ip_from_portgroup: Get ip: %s.\u0027)"},{"line_number":1636,"context_line":"                             % target_ip)"},{"line_number":1637,"context_line":"                    break"},{"line_number":1638,"context_line":"        return target_ip"},{"line_number":1639,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_13afcb2c","line":1636,"in_reply_to":"da86d52c_e348bb89","updated":"2015-02-09 11:45:08.000000000","message":"Done","commit_id":"decfd60065c08850e5f6800b3c5168dedd941bf9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d73f3e1b6c65c457bb6233ce903a3cfb7f5944cb","unresolved":false,"context_lines":[{"line_number":1669,"context_line":"                LOG.error(msg)"},{"line_number":1670,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":1671,"context_line":""},{"line_number":1672,"context_line":"        LOG.info(_LI(\u0027Get the default ip: %s.\u0027) % target_ip)"},{"line_number":1673,"context_line":"        # If didn\u0027t get target IP for rest, Automated assembly target ip."},{"line_number":1674,"context_line":"        target_iqn \u003d self._get_tgt_iqn_from_rest(target_ip)"},{"line_number":1675,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_8330df08","line":1672,"updated":"2015-02-08 03:15:43.000000000","message":"Should use , instead of %","commit_id":"decfd60065c08850e5f6800b3c5168dedd941bf9"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"fc6888a40e36254fedbacfa1dff88070d84e1eb4","unresolved":false,"context_lines":[{"line_number":1669,"context_line":"                LOG.error(msg)"},{"line_number":1670,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":1671,"context_line":""},{"line_number":1672,"context_line":"        LOG.info(_LI(\u0027Get the default ip: %s.\u0027) % target_ip)"},{"line_number":1673,"context_line":"        # If didn\u0027t get target IP for rest, Automated assembly target ip."},{"line_number":1674,"context_line":"        target_iqn \u003d self._get_tgt_iqn_from_rest(target_ip)"},{"line_number":1675,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_9362db14","line":1672,"in_reply_to":"da86d52c_8330df08","updated":"2015-02-09 11:45:08.000000000","message":"Done","commit_id":"decfd60065c08850e5f6800b3c5168dedd941bf9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c8e8f8f7a7c055936221f8dbefde491a841d9d7","unresolved":false,"context_lines":[{"line_number":977,"context_line":"                        host_lun_id \u003d hostassoinfo[\u0027HostLUNID\u0027]"},{"line_number":978,"context_line":"                        break"},{"line_number":979,"context_line":"                    except Exception as err:"},{"line_number":980,"context_line":"                        msg \u003d (_LE(\"JSON transfer data error. %s\"), err)"},{"line_number":981,"context_line":"                        LOG.error(msg)"},{"line_number":982,"context_line":"                        raise err"},{"line_number":983,"context_line":"        return host_lun_id"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_8e863615","line":980,"updated":"2015-02-14 05:33:56.000000000","message":"String substitution won\u0027t happen in this format.\nCombine line 980 and 981:\n\nLOG.error(_LE(\"JSON transfer data error. %s\"), err)","commit_id":"666908f0970c3080581becaf872b10317fb567a0"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9bf05df3bf94910299f306e352ca5a0ab48ea5c9","unresolved":false,"context_lines":[{"line_number":977,"context_line":"                        host_lun_id \u003d hostassoinfo[\u0027HostLUNID\u0027]"},{"line_number":978,"context_line":"                        break"},{"line_number":979,"context_line":"                    except Exception as err:"},{"line_number":980,"context_line":"                        msg \u003d (_LE(\"JSON transfer data error. %s\"), err)"},{"line_number":981,"context_line":"                        LOG.error(msg)"},{"line_number":982,"context_line":"                        raise err"},{"line_number":983,"context_line":"        return host_lun_id"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_dcec5ff6","line":980,"in_reply_to":"da86d52c_8e863615","updated":"2015-02-15 13:11:28.000000000","message":"Maybe I should change it back to \u0027%\u0027, thanks.","commit_id":"666908f0970c3080581becaf872b10317fb567a0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c8e8f8f7a7c055936221f8dbefde491a841d9d7","unresolved":false,"context_lines":[{"line_number":979,"context_line":"                    except Exception as err:"},{"line_number":980,"context_line":"                        msg \u003d (_LE(\"JSON transfer data error. %s\"), err)"},{"line_number":981,"context_line":"                        LOG.error(msg)"},{"line_number":982,"context_line":"                        raise err"},{"line_number":983,"context_line":"        return host_lun_id"},{"line_number":984,"context_line":""},{"line_number":985,"context_line":"    def _find_host(self, hostname):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_0e93265d","line":982,"updated":"2015-02-14 05:33:56.000000000","message":"Should be just \"raise\".","commit_id":"666908f0970c3080581becaf872b10317fb567a0"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9bf05df3bf94910299f306e352ca5a0ab48ea5c9","unresolved":false,"context_lines":[{"line_number":979,"context_line":"                    except Exception as err:"},{"line_number":980,"context_line":"                        msg \u003d (_LE(\"JSON transfer data error. %s\"), err)"},{"line_number":981,"context_line":"                        LOG.error(msg)"},{"line_number":982,"context_line":"                        raise err"},{"line_number":983,"context_line":"        return host_lun_id"},{"line_number":984,"context_line":""},{"line_number":985,"context_line":"    def _find_host(self, hostname):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_fc868315","line":982,"in_reply_to":"da86d52c_0e93265d","updated":"2015-02-15 13:11:28.000000000","message":"Done","commit_id":"666908f0970c3080581becaf872b10317fb567a0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c8e8f8f7a7c055936221f8dbefde491a841d9d7","unresolved":false,"context_lines":[{"line_number":1350,"context_line":"            elif luntype is not \u0027\u0027 and luntype is not None:"},{"line_number":1351,"context_line":"                err_msg \u003d (_("},{"line_number":1352,"context_line":"                    \u0027Config file is wrong. LUNType must be \"Thin\"\u0027"},{"line_number":1353,"context_line":"                    \u0027 or \"Thick\". LUNType: %(fetchtype)s.\u0027),"},{"line_number":1354,"context_line":"                    {\u0027fetchtype\u0027: luntype})"},{"line_number":1355,"context_line":"                LOG.error(err_msg)"},{"line_number":1356,"context_line":"                raise exception.VolumeBackendAPIException(data\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_2e9e2a55","line":1353,"updated":"2015-02-14 05:33:56.000000000","message":"Same here. String substitution won\u0027t happen in this format.\nThe original format on the left using \"%\" is correct.","commit_id":"666908f0970c3080581becaf872b10317fb567a0"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9bf05df3bf94910299f306e352ca5a0ab48ea5c9","unresolved":false,"context_lines":[{"line_number":1350,"context_line":"            elif luntype is not \u0027\u0027 and luntype is not None:"},{"line_number":1351,"context_line":"                err_msg \u003d (_("},{"line_number":1352,"context_line":"                    \u0027Config file is wrong. LUNType must be \"Thin\"\u0027"},{"line_number":1353,"context_line":"                    \u0027 or \"Thick\". LUNType: %(fetchtype)s.\u0027),"},{"line_number":1354,"context_line":"                    {\u0027fetchtype\u0027: luntype})"},{"line_number":1355,"context_line":"                LOG.error(err_msg)"},{"line_number":1356,"context_line":"                raise exception.VolumeBackendAPIException(data\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_dcc37f55","line":1353,"in_reply_to":"da86d52c_2e9e2a55","updated":"2015-02-15 13:11:28.000000000","message":"Done","commit_id":"666908f0970c3080581becaf872b10317fb567a0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c8e8f8f7a7c055936221f8dbefde491a841d9d7","unresolved":false,"context_lines":[{"line_number":1380,"context_line":"            else:"},{"line_number":1381,"context_line":"                err_msg \u003d (_("},{"line_number":1382,"context_line":"                    \u0027PrefetchType config is wrong. PrefetchType\u0027"},{"line_number":1383,"context_line":"                    \u0027 must be in 0,1,2,3. PrefetchType is: %(fetchtype)s.\u0027),"},{"line_number":1384,"context_line":"                    {\u0027fetchtype\u0027: fetchtype})"},{"line_number":1385,"context_line":"                LOG.error(err_msg)"},{"line_number":1386,"context_line":"                raise exception.CinderException(err_msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_6ea82278","line":1383,"updated":"2015-02-14 05:33:56.000000000","message":"Please change backup to %","commit_id":"666908f0970c3080581becaf872b10317fb567a0"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9bf05df3bf94910299f306e352ca5a0ab48ea5c9","unresolved":false,"context_lines":[{"line_number":1380,"context_line":"            else:"},{"line_number":1381,"context_line":"                err_msg \u003d (_("},{"line_number":1382,"context_line":"                    \u0027PrefetchType config is wrong. PrefetchType\u0027"},{"line_number":1383,"context_line":"                    \u0027 must be in 0,1,2,3. PrefetchType is: %(fetchtype)s.\u0027),"},{"line_number":1384,"context_line":"                    {\u0027fetchtype\u0027: fetchtype})"},{"line_number":1385,"context_line":"                LOG.error(err_msg)"},{"line_number":1386,"context_line":"                raise exception.CinderException(err_msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_fc9f6363","line":1383,"in_reply_to":"da86d52c_6ea82278","updated":"2015-02-15 13:11:28.000000000","message":"Done","commit_id":"666908f0970c3080581becaf872b10317fb567a0"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fc66d6257fadda4d13dfdb41412343c466e83d23","unresolved":false,"context_lines":[{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        return hostgroup_id"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"    def _find_tgtportgroup(self, TgtPortGroup):"},{"line_number":658,"context_line":"        \"\"\"Find target portgroup id by target port group name.\"\"\""},{"line_number":659,"context_line":"        url \u003d self.url + \"/portgroup?range\u003d[0-8191]\u0026TYPE\u003d257\""},{"line_number":660,"context_line":"        result \u003d self.call(url, None, \"GET\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_b7635419","line":657,"updated":"2015-03-04 20:53:00.000000000","message":"Please, rename it to tgt_port_group according to Python coding guidelines","commit_id":"ad37b6f7098da905933869b00352114a9090c9a4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2531cbe52a752109e40946d779f603131e135bfd","unresolved":false,"context_lines":[{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        return hostgroup_id"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"    def _find_tgtportgroup(self, TgtPortGroup):"},{"line_number":658,"context_line":"        \"\"\"Find target portgroup id by target port group name.\"\"\""},{"line_number":659,"context_line":"        url \u003d self.url + \"/portgroup?range\u003d[0-8191]\u0026TYPE\u003d257\""},{"line_number":660,"context_line":"        result \u003d self.call(url, None, \"GET\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_35b75288","line":657,"in_reply_to":"9a80dd14_b7635419","updated":"2015-03-05 01:36:59.000000000","message":"Done","commit_id":"ad37b6f7098da905933869b00352114a9090c9a4"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fc66d6257fadda4d13dfdb41412343c466e83d23","unresolved":false,"context_lines":[{"line_number":1648,"context_line":"                for key in ini:"},{"line_number":1649,"context_line":"                    if key \u003d\u003d \u0027TargetPortGroup\u0027:"},{"line_number":1650,"context_line":"                        portgroup \u003d ini[\u0027TargetPortGroup\u0027]"},{"line_number":1651,"context_line":"                    if key \u003d\u003d \u0027TargetIP\u0027:"},{"line_number":1652,"context_line":"                        target_ip \u003d ini[\u0027TargetIP\u0027]"},{"line_number":1653,"context_line":""},{"line_number":1654,"context_line":"        if portgroup:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_b24d2275","line":1651,"updated":"2015-03-04 20:53:00.000000000","message":"Could be replaced with elif statement","commit_id":"ad37b6f7098da905933869b00352114a9090c9a4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2531cbe52a752109e40946d779f603131e135bfd","unresolved":false,"context_lines":[{"line_number":1648,"context_line":"                for key in ini:"},{"line_number":1649,"context_line":"                    if key \u003d\u003d \u0027TargetPortGroup\u0027:"},{"line_number":1650,"context_line":"                        portgroup \u003d ini[\u0027TargetPortGroup\u0027]"},{"line_number":1651,"context_line":"                    if key \u003d\u003d \u0027TargetIP\u0027:"},{"line_number":1652,"context_line":"                        target_ip \u003d ini[\u0027TargetIP\u0027]"},{"line_number":1653,"context_line":""},{"line_number":1654,"context_line":"        if portgroup:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_f54a1a82","line":1651,"in_reply_to":"9a80dd14_b24d2275","updated":"2015-03-05 01:36:59.000000000","message":"Done","commit_id":"ad37b6f7098da905933869b00352114a9090c9a4"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ec3aa0e7932675c4a04a9e6bda1b1af0c55b1707","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        except Exception as err:"},{"line_number":88,"context_line":"            LOG.error(_LE(\u0027\\nBad response from server: %s.\u0027), err)"},{"line_number":89,"context_line":"            raise err"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            res_json \u003d json.loads(res)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a80dd14_daadbb9c","line":89,"updated":"2015-03-13 17:50:57.000000000","message":"Here it should just be \"raise\" instead of \"raise err\".  This was here before, so you can fix it with a different patch later.","commit_id":"51d8057819fbd4f38fa9e2ee5a2ca93eb24e7fc1"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ec3aa0e7932675c4a04a9e6bda1b1af0c55b1707","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        except Exception as err:"},{"line_number":94,"context_line":"            err_msg \u003d (_LE(\u0027JSON transfer error: %s.\u0027) % err)"},{"line_number":95,"context_line":"            LOG.error(err_msg)"},{"line_number":96,"context_line":"            raise err"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        return res_json"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"9a80dd14_7a892f25","line":96,"updated":"2015-03-13 17:50:57.000000000","message":"Same","commit_id":"51d8057819fbd4f38fa9e2ee5a2ca93eb24e7fc1"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6046dfd1276d81d32a7b1335cc01730b7e4884d0","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            res_json \u003d json.loads(res)"},{"line_number":93,"context_line":"        except Exception as err:"},{"line_number":94,"context_line":"            err_msg \u003d (_LE(\u0027JSON transfer error: %s.\u0027) % err)"},{"line_number":95,"context_line":"            LOG.error(err_msg)"},{"line_number":96,"context_line":"            raise"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9aa53dc9_1525d2bf","line":94,"updated":"2015-04-09 13:32:36.000000000","message":"Since you changed elsewhere, please also update this to use , instead of %.","commit_id":"e3bbe00f66d9d83321f0bca73d2237522e8402ff"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4e260f4ce1ccc8f1ba27a379e85ad119c66707d8","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            res_json \u003d json.loads(res)"},{"line_number":93,"context_line":"        except Exception as err:"},{"line_number":94,"context_line":"            err_msg \u003d (_LE(\u0027JSON transfer error: %s.\u0027) % err)"},{"line_number":95,"context_line":"            LOG.error(err_msg)"},{"line_number":96,"context_line":"            raise"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7aaa499b_8176c63c","line":94,"in_reply_to":"9aa53dc9_1525d2bf","updated":"2015-04-12 15:37:20.000000000","message":"+1","commit_id":"e3bbe00f66d9d83321f0bca73d2237522e8402ff"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6046dfd1276d81d32a7b1335cc01730b7e4884d0","unresolved":false,"context_lines":[{"line_number":770,"context_line":"            {\u0027initiator_name\u0027: initiator_name,"},{"line_number":771,"context_line":"             \u0027volume\u0027: volume_name})"},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"        (iscsi_iqn, target_ip, portgroup_id) \u003d \\"},{"line_number":774,"context_line":"            self._get_iscsi_params(connector)"},{"line_number":775,"context_line":"        LOG.info(_LI(\u0027initialize_connection_iscsi,iscsi_iqn: %(iscsi_iqn)s, \u0027"},{"line_number":776,"context_line":"                     \u0027target_ip: %(target_ip)s, \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"9aa53dc9_70f1cc00","line":773,"updated":"2015-04-09 13:32:36.000000000","message":"In general we try to avoid the \\ line continuation. I don\u0027t think it\u0027s a big deal, but you could have an opening parenthesis here and wrap the assignment value to avoid it.","commit_id":"e3bbe00f66d9d83321f0bca73d2237522e8402ff"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6046dfd1276d81d32a7b1335cc01730b7e4884d0","unresolved":false,"context_lines":[{"line_number":977,"context_line":"                        host_lun_id \u003d hostassoinfo[\u0027HostLUNID\u0027]"},{"line_number":978,"context_line":"                        break"},{"line_number":979,"context_line":"                    except Exception as err:"},{"line_number":980,"context_line":"                        msg \u003d (_LE(\"JSON transfer data error. %s\") % err)"},{"line_number":981,"context_line":"                        LOG.error(msg)"},{"line_number":982,"context_line":"                        raise"},{"line_number":983,"context_line":"        return host_lun_id"}],"source_content_type":"text/x-python","patch_set":17,"id":"9aa53dc9_70c8aca8","line":980,"updated":"2015-04-09 13:32:36.000000000","message":"err needs to be wrapped in six.text_type() or passed in as an argument to the LOG.error call. The argument to the logger would be my preference.","commit_id":"e3bbe00f66d9d83321f0bca73d2237522e8402ff"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ebdd84b0a8ec82ff825d207c0c5452450168e124","unresolved":false,"context_lines":[{"line_number":977,"context_line":"                        host_lun_id \u003d hostassoinfo[\u0027HostLUNID\u0027]"},{"line_number":978,"context_line":"                        break"},{"line_number":979,"context_line":"                    except Exception as err:"},{"line_number":980,"context_line":"                        msg \u003d (_LE(\"JSON transfer data error. %s\") % err)"},{"line_number":981,"context_line":"                        LOG.error(msg)"},{"line_number":982,"context_line":"                        raise"},{"line_number":983,"context_line":"        return host_lun_id"}],"source_content_type":"text/x-python","patch_set":17,"id":"7aaa499b_73d39139","line":980,"in_reply_to":"7aaa499b_a179c231","updated":"2015-04-12 19:11:32.000000000","message":"A little bit different. As the code currently is the string formatting will be performed locally here. If err is not wrapped in six.text_type and it contains unicode this will result in an exception.\n\nIf the formatting is not done here and err is passed in as an argument to LOG.error then internally the logger will take care of the conversion, making it safe. So this should be changed to guard against the exception by either of these (my preference being the first one):\n\nexcept Exception as err:\n    LOG.error(_LE(\"JSON tranfer error. %s\"), err)\n    raise\n\nor\n\nexcept Exception as err:\n    msg \u003d (_LE(\u0027JSON transfer error. %s\") % six.text_type(err))\n    LOG.error(msg)\n    raise\n\nOr, probably even better:\n\nexcept Exception:\n    LOG.exception(_LE(\"JSON transfer error.\"))\n    raise","commit_id":"e3bbe00f66d9d83321f0bca73d2237522e8402ff"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4e260f4ce1ccc8f1ba27a379e85ad119c66707d8","unresolved":false,"context_lines":[{"line_number":977,"context_line":"                        host_lun_id \u003d hostassoinfo[\u0027HostLUNID\u0027]"},{"line_number":978,"context_line":"                        break"},{"line_number":979,"context_line":"                    except Exception as err:"},{"line_number":980,"context_line":"                        msg \u003d (_LE(\"JSON transfer data error. %s\") % err)"},{"line_number":981,"context_line":"                        LOG.error(msg)"},{"line_number":982,"context_line":"                        raise"},{"line_number":983,"context_line":"        return host_lun_id"}],"source_content_type":"text/x-python","patch_set":17,"id":"7aaa499b_a179c231","line":980,"in_reply_to":"9aa53dc9_70c8aca8","updated":"2015-04-12 15:37:20.000000000","message":"Sean,\nmsg is passed to LOG.error below. I believe that is the same as what you\u0027ve suggested (\"passed in as an argument to the LOG.error call\")?","commit_id":"e3bbe00f66d9d83321f0bca73d2237522e8402ff"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"2c9f3391a39737cb44c92c8a14da2b7bad5a18d4","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                                                            \u0027res\u0027: res})"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        except Exception as err:"},{"line_number":88,"context_line":"            LOG.error(_LE(\u0027\\nBad response from server: %s.\u0027), err)"},{"line_number":89,"context_line":"            raise"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aaa499b_1f5fa073","line":88,"updated":"2015-04-13 13:39:43.000000000","message":"Why do you need an \u0027\\n\u0027 before the message.","commit_id":"a2d48f4f57bc8782e84ec0c8ddbbeb0144c9c825"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"04e1365d4ef474386b094a9ba7163ea6db554b24","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                                                            \u0027res\u0027: res})"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        except Exception as err:"},{"line_number":88,"context_line":"            LOG.error(_LE(\u0027\\nBad response from server: %s.\u0027), err)"},{"line_number":89,"context_line":"            raise"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aaa499b_fce8697e","line":88,"in_reply_to":"7aaa499b_1f5fa073","updated":"2015-04-14 02:15:40.000000000","message":"Done","commit_id":"a2d48f4f57bc8782e84ec0c8ddbbeb0144c9c825"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"2c9f3391a39737cb44c92c8a14da2b7bad5a18d4","unresolved":false,"context_lines":[{"line_number":423,"context_line":"            LOG.warning(_LW(\"Can\u0027t find snapshot on the array.\"))"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    def _get_snapshotid_by_name(self, name):"},{"line_number":426,"context_line":"        url \u003d self.url + \"/snapshot?range\u003d[0-32767]\""},{"line_number":427,"context_line":"        data \u003d json.dumps({\"TYPE\": \"27\"})"},{"line_number":428,"context_line":"        result \u003d self.call(url, data, \"GET\")"},{"line_number":429,"context_line":"        self._assert_rest_result(result, \u0027Get snapshot id error.\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aaa499b_ff02b43d","line":426,"updated":"2015-04-13 13:39:43.000000000","message":"Would you use constants instead of magic literals?","commit_id":"a2d48f4f57bc8782e84ec0c8ddbbeb0144c9c825"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"04e1365d4ef474386b094a9ba7163ea6db554b24","unresolved":false,"context_lines":[{"line_number":423,"context_line":"            LOG.warning(_LW(\"Can\u0027t find snapshot on the array.\"))"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    def _get_snapshotid_by_name(self, name):"},{"line_number":426,"context_line":"        url \u003d self.url + \"/snapshot?range\u003d[0-32767]\""},{"line_number":427,"context_line":"        data \u003d json.dumps({\"TYPE\": \"27\"})"},{"line_number":428,"context_line":"        result \u003d self.call(url, data, \"GET\")"},{"line_number":429,"context_line":"        self._assert_rest_result(result, \u0027Get snapshot id error.\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aaa499b_fcb62989","line":426,"in_reply_to":"7aaa499b_ff02b43d","updated":"2015-04-14 02:15:40.000000000","message":"There is so many \"range\" so use constant is no convenient\nthan use magic literals. I will consider your suggestion any way. Thanks!","commit_id":"a2d48f4f57bc8782e84ec0c8ddbbeb0144c9c825"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"da350cadfb932e978a1fd62e941d1121d7b83513","unresolved":false,"context_lines":[{"line_number":523,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"            if int(time.time()) - start_time \u003e timeout:"},{"line_number":526,"context_line":"                msg \u003d (_(\u0027_wait_for_condition: %s timed out.\u0027),"},{"line_number":527,"context_line":"                       func.__name__)"},{"line_number":528,"context_line":"                LOG.error(msg)"},{"line_number":529,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aaa499b_7f88e422","line":526,"updated":"2015-04-13 13:21:06.000000000","message":"This needs to be % since you are doing the string formatting here. You only use a , when you are passing the formatting arguments in to the logger for the logger to later do the formatting.","commit_id":"a2d48f4f57bc8782e84ec0c8ddbbeb0144c9c825"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"04e1365d4ef474386b094a9ba7163ea6db554b24","unresolved":false,"context_lines":[{"line_number":523,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"            if int(time.time()) - start_time \u003e timeout:"},{"line_number":526,"context_line":"                msg \u003d (_(\u0027_wait_for_condition: %s timed out.\u0027),"},{"line_number":527,"context_line":"                       func.__name__)"},{"line_number":528,"context_line":"                LOG.error(msg)"},{"line_number":529,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aaa499b_3c4b7189","line":526,"in_reply_to":"7aaa499b_7f88e422","updated":"2015-04-14 02:15:40.000000000","message":"Thanks Sean, I have got it.","commit_id":"a2d48f4f57bc8782e84ec0c8ddbbeb0144c9c825"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"2c9f3391a39737cb44c92c8a14da2b7bad5a18d4","unresolved":false,"context_lines":[{"line_number":526,"context_line":"                msg \u003d (_(\u0027_wait_for_condition: %s timed out.\u0027),"},{"line_number":527,"context_line":"                       func.__name__)"},{"line_number":528,"context_line":"                LOG.error(msg)"},{"line_number":529,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"        timer \u003d loopingcall.FixedIntervalLoopingCall(_inner)"},{"line_number":532,"context_line":"        timer.start(interval\u003dinterval).wait()"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aaa499b_7f63441b","line":529,"updated":"2015-04-13 13:39:43.000000000","message":"Here requires `msg` already be string formatted.","commit_id":"a2d48f4f57bc8782e84ec0c8ddbbeb0144c9c825"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"04e1365d4ef474386b094a9ba7163ea6db554b24","unresolved":false,"context_lines":[{"line_number":526,"context_line":"                msg \u003d (_(\u0027_wait_for_condition: %s timed out.\u0027),"},{"line_number":527,"context_line":"                       func.__name__)"},{"line_number":528,"context_line":"                LOG.error(msg)"},{"line_number":529,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"        timer \u003d loopingcall.FixedIntervalLoopingCall(_inner)"},{"line_number":532,"context_line":"        timer.start(interval\u003dinterval).wait()"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aaa499b_9c5a854f","line":529,"in_reply_to":"7aaa499b_7f63441b","updated":"2015-04-14 02:15:40.000000000","message":"Thanks, done.","commit_id":"a2d48f4f57bc8782e84ec0c8ddbbeb0144c9c825"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"2c9f3391a39737cb44c92c8a14da2b7bad5a18d4","unresolved":false,"context_lines":[{"line_number":1119,"context_line":""},{"line_number":1120,"context_line":"    def _find_mapping_view(self, name):"},{"line_number":1121,"context_line":"        \"\"\"Find mapping view.\"\"\""},{"line_number":1122,"context_line":"        url \u003d self.url + \"/mappingview?range\u003d[0-8191]\""},{"line_number":1123,"context_line":"        data \u003d json.dumps({\"TYPE\": \"245\"})"},{"line_number":1124,"context_line":"        result \u003d self.call(url, data, \"GET\")"},{"line_number":1125,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7aaa499b_e23e97b7","line":1122,"updated":"2015-04-13 13:39:43.000000000","message":"So many magic numbers ...","commit_id":"a2d48f4f57bc8782e84ec0c8ddbbeb0144c9c825"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"2c9f3391a39737cb44c92c8a14da2b7bad5a18d4","unresolved":false,"context_lines":[{"line_number":1712,"context_line":""},{"line_number":1713,"context_line":"        LOG.info(_LI("},{"line_number":1714,"context_line":"            \u0027Extend Volume: %(volumename)s, oldsize:\u0027"},{"line_number":1715,"context_line":"            \u0027 %(oldsize)s  newsize: %(newsize)s.\u0027),"},{"line_number":1716,"context_line":"            {\u0027volumename\u0027: volume_name,"},{"line_number":1717,"context_line":"             \u0027oldsize\u0027: volume_size,"},{"line_number":1718,"context_line":"             \u0027newsize\u0027: new_volume_size})"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aaa499b_02974391","line":1715,"updated":"2015-04-13 13:39:43.000000000","message":"If the sizes are integers, you should use %(...)d instead of %(...)s.","commit_id":"a2d48f4f57bc8782e84ec0c8ddbbeb0144c9c825"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"04e1365d4ef474386b094a9ba7163ea6db554b24","unresolved":false,"context_lines":[{"line_number":1712,"context_line":""},{"line_number":1713,"context_line":"        LOG.info(_LI("},{"line_number":1714,"context_line":"            \u0027Extend Volume: %(volumename)s, oldsize:\u0027"},{"line_number":1715,"context_line":"            \u0027 %(oldsize)s  newsize: %(newsize)s.\u0027),"},{"line_number":1716,"context_line":"            {\u0027volumename\u0027: volume_name,"},{"line_number":1717,"context_line":"             \u0027oldsize\u0027: volume_size,"},{"line_number":1718,"context_line":"             \u0027newsize\u0027: new_volume_size})"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aaa499b_ff585bfc","line":1715,"in_reply_to":"7aaa499b_02974391","updated":"2015-04-14 02:15:40.000000000","message":"Done","commit_id":"a2d48f4f57bc8782e84ec0c8ddbbeb0144c9c825"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"1acbf9db03b7359ecbe63d8c2cd9d39976377613","unresolved":false,"context_lines":[{"line_number":654,"context_line":"        return hostgroup_id"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"    def _find_tgt_port_group(self, TgtPortGroup):"},{"line_number":657,"context_line":"        \"\"\"Find target portgroup id by target port group name.\"\"\""},{"line_number":658,"context_line":"        url \u003d self.url + \"/portgroup?range\u003d[0-8191]\u0026TYPE\u003d257\""},{"line_number":659,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":660,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9a0c5dc1_6d7cf120","line":657,"updated":"2015-05-12 03:14:14.000000000","message":"\u0027portgroup\u0027-\u003e\u0027port group\u0027 or the last \u0027port group\u0027-\u003e\u0027portgroup\u0027，you\u0027d better keep them consistent","commit_id":"822d559cb99fbb64f12e43ba410213a79c34e394"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2d55e606f33255fafeb2608acd1cda35fa5dd1ce","unresolved":false,"context_lines":[{"line_number":654,"context_line":"        return hostgroup_id"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"    def _find_tgt_port_group(self, TgtPortGroup):"},{"line_number":657,"context_line":"        \"\"\"Find target portgroup id by target port group name.\"\"\""},{"line_number":658,"context_line":"        url \u003d self.url + \"/portgroup?range\u003d[0-8191]\u0026TYPE\u003d257\""},{"line_number":659,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":660,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9a0c5dc1_a15e7274","line":657,"in_reply_to":"9a0c5dc1_6d7cf120","updated":"2015-05-12 06:49:28.000000000","message":"Thanks, done.","commit_id":"822d559cb99fbb64f12e43ba410213a79c34e394"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"1acbf9db03b7359ecbe63d8c2cd9d39976377613","unresolved":false,"context_lines":[{"line_number":770,"context_line":"             \u0027volume\u0027: volume_name})"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"        (iscsi_iqn, target_ip, portgroup_id) \u003d ("},{"line_number":773,"context_line":"            self._get_iscsi_params(connector))"},{"line_number":774,"context_line":"        LOG.info(_LI(\u0027initialize_connection_iscsi,iscsi_iqn: %(iscsi_iqn)s, \u0027"},{"line_number":775,"context_line":"                     \u0027target_ip: %(target_ip)s, \u0027"},{"line_number":776,"context_line":"                     \u0027TargetPortGroup: %(portgroup_id)s.\u0027),"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a0c5dc1_90729aac","line":773,"updated":"2015-05-12 03:14:14.000000000","message":"_get_iscsi_params would raise an exception. Where you gonna catch it?","commit_id":"822d559cb99fbb64f12e43ba410213a79c34e394"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2d55e606f33255fafeb2608acd1cda35fa5dd1ce","unresolved":false,"context_lines":[{"line_number":770,"context_line":"             \u0027volume\u0027: volume_name})"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"        (iscsi_iqn, target_ip, portgroup_id) \u003d ("},{"line_number":773,"context_line":"            self._get_iscsi_params(connector))"},{"line_number":774,"context_line":"        LOG.info(_LI(\u0027initialize_connection_iscsi,iscsi_iqn: %(iscsi_iqn)s, \u0027"},{"line_number":775,"context_line":"                     \u0027target_ip: %(target_ip)s, \u0027"},{"line_number":776,"context_line":"                     \u0027TargetPortGroup: %(portgroup_id)s.\u0027),"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a0c5dc1_616aba1c","line":773,"in_reply_to":"9a0c5dc1_90729aac","updated":"2015-05-12 06:49:28.000000000","message":"If _get_iscsi_params raise an exception, the initialize_connection_iscsi functions just failed, and we need not do any rollback because we have not done anything now.","commit_id":"822d559cb99fbb64f12e43ba410213a79c34e394"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"1acbf9db03b7359ecbe63d8c2cd9d39976377613","unresolved":false,"context_lines":[{"line_number":1254,"context_line":"            if self._check_lun_exist(lun_id) is True:"},{"line_number":1255,"context_line":"                # Get lungroupid by lun_id."},{"line_number":1256,"context_line":"                lungroup_id \u003d self._get_lungroupid_by_lunid(lun_id)"},{"line_number":1257,"context_line":"                view_id \u003d self._find_mappingview_by_lungroup(lungroup_id)"},{"line_number":1258,"context_line":""},{"line_number":1259,"context_line":"                if portgroup_id:"},{"line_number":1260,"context_line":"                    self._delete_portgroup_mapping_view(view_id, portgroup_id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a0c5dc1_70960696","line":1257,"updated":"2015-05-12 03:14:14.000000000","message":"Why didn\u0027t you check the result of view_id, it could be None","commit_id":"822d559cb99fbb64f12e43ba410213a79c34e394"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2d55e606f33255fafeb2608acd1cda35fa5dd1ce","unresolved":false,"context_lines":[{"line_number":1254,"context_line":"            if self._check_lun_exist(lun_id) is True:"},{"line_number":1255,"context_line":"                # Get lungroupid by lun_id."},{"line_number":1256,"context_line":"                lungroup_id \u003d self._get_lungroupid_by_lunid(lun_id)"},{"line_number":1257,"context_line":"                view_id \u003d self._find_mappingview_by_lungroup(lungroup_id)"},{"line_number":1258,"context_line":""},{"line_number":1259,"context_line":"                if portgroup_id:"},{"line_number":1260,"context_line":"                    self._delete_portgroup_mapping_view(view_id, portgroup_id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a0c5dc1_9c72b1ac","line":1257,"in_reply_to":"9a0c5dc1_70960696","updated":"2015-05-12 06:49:28.000000000","message":"It just because we won\u0027t delete the view if once we created the view on the array. Of course it would be better if we check the view_id before going on.","commit_id":"822d559cb99fbb64f12e43ba410213a79c34e394"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"d06255650c582e61e352b9082a1cafbbde0eae0f","unresolved":false,"context_lines":[{"line_number":167,"context_line":"\u003c\u003c\u003c\u003c\u003c\u003c\u003c HEAD"},{"line_number":168,"context_line":"        LOG.info(_LI(\u0027Create Volume: %(volume)s Size: %(size)s.\u0027),"},{"line_number":169,"context_line":"                 {\u0027volume\u0027: volume_name, \u0027size\u0027: volume_size})"},{"line_number":170,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":171,"context_line":"        LOG.info(_LI("},{"line_number":172,"context_line":"            \u0027Create Volume: %(volume)s Size: %(size)s.\u0027),"},{"line_number":173,"context_line":"            {\u0027volume\u0027: volume_name,"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a016987_ee1fa159","line":170,"updated":"2015-05-14 13:13:54.000000000","message":"Please rebase it properly.","commit_id":"80e34bbf46074e84c131b6cb45b6463fa0d2d09d"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"d06255650c582e61e352b9082a1cafbbde0eae0f","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                     \u0027volume name: %(volume)s.\u0027),"},{"line_number":351,"context_line":"                 {\u0027snapshot\u0027: snapshot_name,"},{"line_number":352,"context_line":"                  \u0027volume\u0027: volume_name})"},{"line_number":353,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":354,"context_line":"        LOG.info(_LI("},{"line_number":355,"context_line":"            \u0027_create_snapshot:snapshot name: %(snapshot)s, \u0027"},{"line_number":356,"context_line":"            \u0027volume name: %(volume)s.\u0027),"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a016987_6e34d1dd","line":353,"updated":"2015-05-14 13:13:54.000000000","message":"Ditto","commit_id":"80e34bbf46074e84c131b6cb45b6463fa0d2d09d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b6c2cda2096cccd78393eb92b8e35c6c3942df16","unresolved":false,"context_lines":[{"line_number":704,"context_line":"        LOG.info(_LI("},{"line_number":705,"context_line":"            \u0027_mapping_hostgroup_and_lungroup, lun_group: %(lun_group)s, \u0027"},{"line_number":706,"context_line":"            \u0027view_id: %(view_id)s, lun_id: %(lun_id)s.\u0027),"},{"line_number":707,"context_line":"            {\u0027lun_group\u0027: six.text_type(lungroup_id),"},{"line_number":708,"context_line":"             \u0027view_id\u0027: six.text_type(view_id),"},{"line_number":709,"context_line":"             \u0027lun_id\u0027: six.text_type(lun_id)})"},{"line_number":710,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"7a016987_31b135e2","line":707,"updated":"2015-05-18 22:17:41.000000000","message":"six.text_type is not needed here. The logger will take care of any unicode conversion is needed.","commit_id":"49990896e14ca15a265e02d7d7767bf4091b4417"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"7c1f4f0ca6678f031c0743d47b9ee387ba1a2a5d","unresolved":false,"context_lines":[{"line_number":704,"context_line":"        LOG.info(_LI("},{"line_number":705,"context_line":"            \u0027_mapping_hostgroup_and_lungroup, lun_group: %(lun_group)s, \u0027"},{"line_number":706,"context_line":"            \u0027view_id: %(view_id)s, lun_id: %(lun_id)s.\u0027),"},{"line_number":707,"context_line":"            {\u0027lun_group\u0027: six.text_type(lungroup_id),"},{"line_number":708,"context_line":"             \u0027view_id\u0027: six.text_type(view_id),"},{"line_number":709,"context_line":"             \u0027lun_id\u0027: six.text_type(lun_id)})"},{"line_number":710,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"7a016987_f604b04a","line":707,"in_reply_to":"7a016987_31b135e2","updated":"2015-05-19 01:22:38.000000000","message":"Done","commit_id":"49990896e14ca15a265e02d7d7767bf4091b4417"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b6c2cda2096cccd78393eb92b8e35c6c3942df16","unresolved":false,"context_lines":[{"line_number":1713,"context_line":"            \u0027Extend Volume: %(volumename)s, oldsize:\u0027"},{"line_number":1714,"context_line":"            \u0027 %(oldsize)d  newsize: %(newsize)d.\u0027),"},{"line_number":1715,"context_line":"            {\u0027volumename\u0027: volume_name,"},{"line_number":1716,"context_line":"             \u0027oldsize\u0027: int(volume_size),"},{"line_number":1717,"context_line":"             \u0027newsize\u0027: int(new_volume_size)})"},{"line_number":1718,"context_line":""},{"line_number":1719,"context_line":"        lun_id \u003d self._get_volume_by_name(volume_name)"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a016987_31e815b4","line":1716,"updated":"2015-05-18 22:17:41.000000000","message":"This seems very unnecessary. Converting to int to convert to string seems a little wasteful.","commit_id":"49990896e14ca15a265e02d7d7767bf4091b4417"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"7c1f4f0ca6678f031c0743d47b9ee387ba1a2a5d","unresolved":false,"context_lines":[{"line_number":1713,"context_line":"            \u0027Extend Volume: %(volumename)s, oldsize:\u0027"},{"line_number":1714,"context_line":"            \u0027 %(oldsize)d  newsize: %(newsize)d.\u0027),"},{"line_number":1715,"context_line":"            {\u0027volumename\u0027: volume_name,"},{"line_number":1716,"context_line":"             \u0027oldsize\u0027: int(volume_size),"},{"line_number":1717,"context_line":"             \u0027newsize\u0027: int(new_volume_size)})"},{"line_number":1718,"context_line":""},{"line_number":1719,"context_line":"        lun_id \u003d self._get_volume_by_name(volume_name)"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a016987_566a64ef","line":1716,"in_reply_to":"7a016987_31e815b4","updated":"2015-05-19 01:22:38.000000000","message":"Done","commit_id":"49990896e14ca15a265e02d7d7767bf4091b4417"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"1e8b8f0a7ee47117c7c68ce2be163beb8a7d9b47","unresolved":false,"context_lines":[{"line_number":653,"context_line":""},{"line_number":654,"context_line":"        return hostgroup_id"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"    def _find_tgt_port_group(self, TgtPortGroup):"},{"line_number":657,"context_line":"        \"\"\"Find target portgroup id by target portgroup name.\"\"\""},{"line_number":658,"context_line":"        url \u003d self.url + \"/portgroup?range\u003d[0-8191]\u0026TYPE\u003d257\""},{"line_number":659,"context_line":"        result \u003d self.call(url, None, \"GET\")"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_54461c50","line":656,"updated":"2015-05-27 10:39:18.000000000","message":"Please, rename to tgt_port_group","commit_id":"88e0ea7b4839b7549a7bdfc30d4865e4a6236ebb"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"791ea0e6b52a6d50ee43a0d29976dab0d54ede4e","unresolved":false,"context_lines":[{"line_number":653,"context_line":""},{"line_number":654,"context_line":"        return hostgroup_id"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"    def _find_tgt_port_group(self, TgtPortGroup):"},{"line_number":657,"context_line":"        \"\"\"Find target portgroup id by target portgroup name.\"\"\""},{"line_number":658,"context_line":"        url \u003d self.url + \"/portgroup?range\u003d[0-8191]\u0026TYPE\u003d257\""},{"line_number":659,"context_line":"        result \u003d self.call(url, None, \"GET\")"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_2c5bc987","line":656,"in_reply_to":"7a016987_54461c50","updated":"2015-06-01 07:41:26.000000000","message":"Done","commit_id":"88e0ea7b4839b7549a7bdfc30d4865e4a6236ebb"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"1e8b8f0a7ee47117c7c68ce2be163beb8a7d9b47","unresolved":false,"context_lines":[{"line_number":663,"context_line":"        msg \u003d \u0027Can not find the portgroup on the array.\u0027"},{"line_number":664,"context_line":"        self._assert_data_in_result(result, msg)"},{"line_number":665,"context_line":"        portgroup_id \u003d None"},{"line_number":666,"context_line":"        if \"data\" in result:"},{"line_number":667,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":668,"context_line":"                if TgtPortGroup \u003d\u003d item[\u0027NAME\u0027]:"},{"line_number":669,"context_line":"                    portgroup_id \u003d item[\u0027ID\u0027]"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_149e64b8","line":666,"updated":"2015-05-27 10:39:18.000000000","message":"The search in a such kind of a list is repeated at least 3 times. Please move it to a separate method","commit_id":"88e0ea7b4839b7549a7bdfc30d4865e4a6236ebb"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"791ea0e6b52a6d50ee43a0d29976dab0d54ede4e","unresolved":false,"context_lines":[{"line_number":663,"context_line":"        msg \u003d \u0027Can not find the portgroup on the array.\u0027"},{"line_number":664,"context_line":"        self._assert_data_in_result(result, msg)"},{"line_number":665,"context_line":"        portgroup_id \u003d None"},{"line_number":666,"context_line":"        if \"data\" in result:"},{"line_number":667,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":668,"context_line":"                if TgtPortGroup \u003d\u003d item[\u0027NAME\u0027]:"},{"line_number":669,"context_line":"                    portgroup_id \u003d item[\u0027ID\u0027]"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_4c58458a","line":666,"in_reply_to":"7a016987_149e64b8","updated":"2015-06-01 07:41:26.000000000","message":"Done","commit_id":"88e0ea7b4839b7549a7bdfc30d4865e4a6236ebb"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"f0b175d8bac7743a3033ee2777c1faf2369aa9a5","unresolved":false,"context_lines":[{"line_number":733,"context_line":"        except Exception:"},{"line_number":734,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":735,"context_line":"                err_msg \u003d (_LE("},{"line_number":736,"context_line":"                    \u0027Error occurred when adding hostgroup and lungroup to \u0027"},{"line_number":737,"context_line":"                    \u0027view. Remove lun from lungroup now.\u0027))"},{"line_number":738,"context_line":"                LOG.error(err_msg)"},{"line_number":739,"context_line":"                self._remove_lun_from_lungroup(lungroup_id, lun_id)"}],"source_content_type":"text/x-python","patch_set":28,"id":"5afe65bd_444535b1","line":736,"updated":"2015-06-03 11:56:29.000000000","message":"Add more detail to the log message, such as which volume, LUN and host?","commit_id":"0d8afdd99619fbc3ae37cdaae5ce215064bfa94d"}],"cinder/volume/drivers/rest_common.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"6c23ce85b34a10c667e582fc84b2f8037a04b946","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"\"\"\"Common class for Huawei 18000 storage drivers.\"\"\""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import base64"},{"line_number":18,"context_line":"import cookielib"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_f1e82a7e","line":15,"updated":"2015-03-12 15:06:56.000000000","message":"This file doesn\u0027t belong in cinder/volume/drivers.   It should be in your huawei directory.","commit_id":"514b8b774eaac22876904d2c87afeb8b7d34a168"}]}
