)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"19dd47c5f974804789f1022bf4dc4037fb57f3e4","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add volume retype support for Huawei driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add retype volume function for Huawei driver, including"},{"line_number":10,"context_line":"SmartQos, SmartTier, Smart Partition and Smart Cache."},{"line_number":11,"context_line":"This commit adds the following qualified extra-specs:"},{"line_number":12,"context_line":"  * capabilities:smarttier\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":13,"context_line":"  * capabilities:smartpartition\u003d\u0027\u003cis\u003e True\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3a50d1a3_2428c8e1","line":10,"updated":"2015-07-28 06:19:23.000000000","message":"(1)s/Smart Partition/SmartPartiton\n(2)s/Smart Cache/SmartCache\n(3)The retype function also can retype thin to thick. so suggest to add SmartThin/Thick","commit_id":"1503687b6017139403bd02132b72b9f4019cc61f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"13ba9fa36330b439051cbf28a132fceabd23fa05","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add volume retype support for Huawei driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add retype volume function for Huawei driver, including"},{"line_number":10,"context_line":"SmartQos, SmartTier, Smart Partition and Smart Cache."},{"line_number":11,"context_line":"This commit adds the following qualified extra-specs:"},{"line_number":12,"context_line":"  * capabilities:smarttier\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":13,"context_line":"  * capabilities:smartpartition\u003d\u0027\u003cis\u003e True\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3a50d1a3_911b9cca","line":10,"in_reply_to":"3a50d1a3_2428c8e1","updated":"2015-07-31 03:59:50.000000000","message":"Done","commit_id":"1503687b6017139403bd02132b72b9f4019cc61f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"19dd47c5f974804789f1022bf4dc4037fb57f3e4","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Add retype volume function for Huawei driver, including"},{"line_number":10,"context_line":"SmartQos, SmartTier, Smart Partition and Smart Cache."},{"line_number":11,"context_line":"This commit adds the following qualified extra-specs:"},{"line_number":12,"context_line":"  * capabilities:smarttier\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":13,"context_line":"  * capabilities:smartpartition\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":14,"context_line":"    smartpartition:partitionname\u003dtest_partition_name"},{"line_number":15,"context_line":"  * capabilities:smartcache\u003d\u0027\u003cis\u003e True\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3a50d1a3_2456885c","line":12,"updated":"2015-07-28 06:19:23.000000000","message":"For smarttier, add \"smarttier:policy\u003d\u0027X\u0027(X:0,1,2,3)\"(default value is 1)?","commit_id":"1503687b6017139403bd02132b72b9f4019cc61f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"13ba9fa36330b439051cbf28a132fceabd23fa05","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Add retype volume function for Huawei driver, including"},{"line_number":10,"context_line":"SmartQos, SmartTier, Smart Partition and Smart Cache."},{"line_number":11,"context_line":"This commit adds the following qualified extra-specs:"},{"line_number":12,"context_line":"  * capabilities:smarttier\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":13,"context_line":"  * capabilities:smartpartition\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":14,"context_line":"    smartpartition:partitionname\u003dtest_partition_name"},{"line_number":15,"context_line":"  * capabilities:smartcache\u003d\u0027\u003cis\u003e True\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3a50d1a3_3177280a","line":12,"in_reply_to":"3a50d1a3_2456885c","updated":"2015-07-31 03:59:50.000000000","message":"Done","commit_id":"1503687b6017139403bd02132b72b9f4019cc61f"}],"cinder/tests/unit/test_huawei_drivers.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"780369cbb4538b98965fdefeba5780dc924be119","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                 \u0027is_public\u0027: True,"},{"line_number":92,"context_line":"                 \u0027deleted_at\u0027: None,"},{"line_number":93,"context_line":"                 \u0027id\u0027: u\u0027530a56e1-a1a4-49f3-ab6c-779a6e5d999f\u0027,"},{"line_number":94,"context_line":"                 \u0027description\u0027: None"},{"line_number":95,"context_line":"                 }"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"FakeConnector \u003d {\u0027initiator\u0027: \u0027iqn.1993-08.debian:01:ec2bff7ac3a3\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_47af14e2","line":94,"updated":"2015-07-14 18:57:03.000000000","message":"Need a comma at the end.","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e27795ec6f4c3aa3368876aee0779ccb5c6f1ae7","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                 \u0027host\u0027: \u0027ubuntuc\u0027,"},{"line_number":101,"context_line":"                 }"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"smarttier_opts \u003d {\u0027smarttier\u0027: \u0027true\u0027,"},{"line_number":104,"context_line":"                  \u0027smartpartition\u0027: False,"},{"line_number":105,"context_line":"                  \u0027smartcache\u0027: False,"},{"line_number":106,"context_line":"                  \u0027thin_provisioning\u0027: True,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_a674bd67","line":103,"updated":"2015-07-15 11:20:06.000000000","message":"\u0027true\u0027 -\u003e True? keep consistent","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"780369cbb4538b98965fdefeba5780dc924be119","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        \"WRITECACHEPOLICY\": \"5\","},{"line_number":197,"context_line":"        \"OWNINGCONTROLLER\": \"0B\","},{"line_number":198,"context_line":"        \"SMARTCACHEPARTITIONID\": \"\","},{"line_number":199,"context_line":"        \"CACHEPARTITIONID\": \"\""},{"line_number":200,"context_line":"    }"},{"line_number":201,"context_line":"}"},{"line_number":202,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_07b58c2f","line":199,"updated":"2015-07-14 18:57:03.000000000","message":"Need a comma at the end.","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6f707a7e195a9f34607921472cb971a034de1996","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        \"WRITECACHEPOLICY\": \"5\","},{"line_number":197,"context_line":"        \"OWNINGCONTROLLER\": \"0B\","},{"line_number":198,"context_line":"        \"SMARTCACHEPARTITIONID\": \"\","},{"line_number":199,"context_line":"        \"CACHEPARTITIONID\": \"\""},{"line_number":200,"context_line":"    }"},{"line_number":201,"context_line":"}"},{"line_number":202,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_0739c3d6","line":199,"in_reply_to":"9a41bdd9_07b58c2f","updated":"2015-07-24 02:34:30.000000000","message":"Done","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"780369cbb4538b98965fdefeba5780dc924be119","unresolved":false,"context_lines":[{"line_number":1395,"context_line":"    def test_retype_volume_success(self):"},{"line_number":1396,"context_line":"        self.driver.restclient.login()"},{"line_number":1397,"context_line":"        retype \u003d False"},{"line_number":1398,"context_line":"        # Retype volume."},{"line_number":1399,"context_line":"        retype \u003d self.driver.retype(None, test_volume,"},{"line_number":1400,"context_line":"                                    test_new_type, None, test_host)"},{"line_number":1401,"context_line":"        self.assertTrue(retype)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_c789e476","line":1398,"updated":"2015-07-14 18:57:03.000000000","message":"This comment is not necessary, since it is obvious what you are doing here.","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6f707a7e195a9f34607921472cb971a034de1996","unresolved":false,"context_lines":[{"line_number":1395,"context_line":"    def test_retype_volume_success(self):"},{"line_number":1396,"context_line":"        self.driver.restclient.login()"},{"line_number":1397,"context_line":"        retype \u003d False"},{"line_number":1398,"context_line":"        # Retype volume."},{"line_number":1399,"context_line":"        retype \u003d self.driver.retype(None, test_volume,"},{"line_number":1400,"context_line":"                                    test_new_type, None, test_host)"},{"line_number":1401,"context_line":"        self.assertTrue(retype)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_e73db7c4","line":1398,"in_reply_to":"9a41bdd9_c789e476","updated":"2015-07-24 02:34:30.000000000","message":"Done","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4f7df19ba25483be9d86922614a54d27da35901b","unresolved":false,"context_lines":[{"line_number":1746,"context_line":""},{"line_number":1747,"context_line":"    def test_retype_volume_success(self):"},{"line_number":1748,"context_line":"        self.driver.restclient.login()"},{"line_number":1749,"context_line":"        retype \u003d False"},{"line_number":1750,"context_line":"        retype \u003d self.driver.retype(None, test_volume,"},{"line_number":1751,"context_line":"                                    test_new_type, None, test_host)"},{"line_number":1752,"context_line":"        self.assertTrue(retype)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_a099677b","line":1749,"updated":"2015-07-31 12:04:06.000000000","message":"Remove this line. It is not needed since the next line just assigns a new value to it.","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b6430e89b27b0c79e81862ba36865f156f007da2","unresolved":false,"context_lines":[{"line_number":1746,"context_line":""},{"line_number":1747,"context_line":"    def test_retype_volume_success(self):"},{"line_number":1748,"context_line":"        self.driver.restclient.login()"},{"line_number":1749,"context_line":"        retype \u003d False"},{"line_number":1750,"context_line":"        retype \u003d self.driver.retype(None, test_volume,"},{"line_number":1751,"context_line":"                                    test_new_type, None, test_host)"},{"line_number":1752,"context_line":"        self.assertTrue(retype)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_8676b9d6","line":1749,"in_reply_to":"3a50d1a3_a099677b","updated":"2015-07-31 16:22:33.000000000","message":"Done","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"ac2bed720e9ab1c84bd20aba8bb51ba076bceb1b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                 \u0027is_public\u0027: True,"},{"line_number":107,"context_line":"                 \u0027deleted_at\u0027: None,"},{"line_number":108,"context_line":"                 \u0027id\u0027: u\u0027530a56e1-a1a4-49f3-ab6c-779a6e5d999f\u0027,"},{"line_number":109,"context_line":"                 \u0027description\u0027: None"},{"line_number":110,"context_line":"                 }"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"FakeConnector \u003d {\u0027initiator\u0027: \u0027iqn.1993-08.debian:01:ec2bff7ac3a3\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_e003dc0b","line":109,"updated":"2015-08-05 02:09:42.000000000","message":"Add trailing comma here.","commit_id":"56ad94328b848d50c7258a038dee1993eaad62e7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2e270d7657230d94427f507768dd7b7c74df6041","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                 \u0027is_public\u0027: True,"},{"line_number":107,"context_line":"                 \u0027deleted_at\u0027: None,"},{"line_number":108,"context_line":"                 \u0027id\u0027: u\u0027530a56e1-a1a4-49f3-ab6c-779a6e5d999f\u0027,"},{"line_number":109,"context_line":"                 \u0027description\u0027: None"},{"line_number":110,"context_line":"                 }"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"FakeConnector \u003d {\u0027initiator\u0027: \u0027iqn.1993-08.debian:01:ec2bff7ac3a3\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_cb56e55b","line":109,"in_reply_to":"1a4dcd0f_e003dc0b","updated":"2015-08-06 02:19:30.000000000","message":"Done","commit_id":"56ad94328b848d50c7258a038dee1993eaad62e7"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"474f21e4f9c818846854e43fe51430f4e39bc689","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                 \u0027deleted_at\u0027: None,"},{"line_number":116,"context_line":"                 \u0027id\u0027: u\u0027530a56e1-a1a4-49f3-ab6c-779a6e5d999f\u0027,"},{"line_number":117,"context_line":"                 \u0027description\u0027: None,"},{"line_number":118,"context_line":"                 }"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"FakeConnector \u003d {\u0027initiator\u0027: \u0027iqn.1993-08.debian:01:ec2bff7ac3a3\u0027,"},{"line_number":121,"context_line":"                 \u0027wwpns\u0027: [\u002710000090fa0d6754\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_5fb5f07b","line":118,"updated":"2015-08-10 13:16:49.000000000","message":"https://www.python.org/dev/peps/pep-0008/#indentation The closing brace/bracket/parenthesis on multi-line constructs may either line up under the first non-whitespace character of the last line of list. Lets write as Guido suggests.","commit_id":"c6cca999c484050ba053bb59985fb288cfc98341"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"474f21e4f9c818846854e43fe51430f4e39bc689","unresolved":false,"context_lines":[{"line_number":1808,"context_line":"    def test_retype_volume_fail(self, mock_add_lun_to_partition):"},{"line_number":1809,"context_line":"        self.driver.restclient.login()"},{"line_number":1810,"context_line":"        mock_add_lun_to_partition.side_effect \u003d ("},{"line_number":1811,"context_line":"            exception.VolumeBackendAPIException(data\u003d\u0027Error occured.\u0027))"},{"line_number":1812,"context_line":"        retype \u003d self.driver.retype(None, test_volume,"},{"line_number":1813,"context_line":"                                    test_new_type, None, test_host)"},{"line_number":1814,"context_line":"        self.assertFalse(retype)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_7f3f8cd6","line":1811,"updated":"2015-08-10 13:16:49.000000000","message":"s/occured/occurred","commit_id":"c6cca999c484050ba053bb59985fb288cfc98341"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"dc3ed832064148645bfc87c1f2ecf8f44f067125","unresolved":false,"context_lines":[{"line_number":1810,"context_line":"    def test_retype_volume_fail(self, mock_add_lun_to_partition):"},{"line_number":1811,"context_line":"        self.driver.restclient.login()"},{"line_number":1812,"context_line":"        mock_add_lun_to_partition.side_effect \u003d ("},{"line_number":1813,"context_line":"            exception.VolumeBackendAPIException(data\u003d\u0027Error occured.\u0027))"},{"line_number":1814,"context_line":"        retype \u003d self.driver.retype(None, test_volume,"},{"line_number":1815,"context_line":"                                    test_new_type, None, test_host)"},{"line_number":1816,"context_line":"        self.assertFalse(retype)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a4dcd0f_037dadb0","line":1813,"updated":"2015-08-11 07:04:38.000000000","message":"s/occured/occurred","commit_id":"688ea872dfa3f57916483c1b6668ef7d8996e2f0"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"3ed8fd82273bee99c6a7571008e692bb69233315","unresolved":false,"context_lines":[{"line_number":1810,"context_line":"    def test_retype_volume_fail(self, mock_add_lun_to_partition):"},{"line_number":1811,"context_line":"        self.driver.restclient.login()"},{"line_number":1812,"context_line":"        mock_add_lun_to_partition.side_effect \u003d ("},{"line_number":1813,"context_line":"            exception.VolumeBackendAPIException(data\u003d\u0027Error occured.\u0027))"},{"line_number":1814,"context_line":"        retype \u003d self.driver.retype(None, test_volume,"},{"line_number":1815,"context_line":"                                    test_new_type, None, test_host)"},{"line_number":1816,"context_line":"        self.assertFalse(retype)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a4dcd0f_0f2b8c95","line":1813,"in_reply_to":"1a4dcd0f_037dadb0","updated":"2015-08-11 08:30:29.000000000","message":"Done","commit_id":"688ea872dfa3f57916483c1b6668ef7d8996e2f0"}],"cinder/volume/drivers/huawei/constants.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"04b25d50ed7a6b15891bbd110149b5c96b6d69ae","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"MAX_HOSTNAME_LENTH \u003d 31"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"MAX_HOSTNAME_LENTH \u003d 31"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"OS_TYPE \u003d {\u0027Linux\u0027: \u00270\u0027,"},{"line_number":43,"context_line":"           \u0027Windows\u0027: \u00271\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_97259ec3","line":40,"updated":"2015-07-25 01:08:37.000000000","message":"duplicate definition with line 38","commit_id":"b79acbcba5a0bf6fcf0f47aefb420ddb682cf76d"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"c5c9e313843ee13e25ada34df573ed2ce947abf2","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"MAX_HOSTNAME_LENTH \u003d 31"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"MAX_HOSTNAME_LENTH \u003d 31"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"OS_TYPE \u003d {\u0027Linux\u0027: \u00270\u0027,"},{"line_number":43,"context_line":"           \u0027Windows\u0027: \u00271\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_dd25875c","line":40,"in_reply_to":"3a50d1a3_97259ec3","updated":"2015-07-25 07:43:23.000000000","message":"Done","commit_id":"b79acbcba5a0bf6fcf0f47aefb420ddb682cf76d"}],"cinder/volume/drivers/huawei/huawei_driver.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4c2552f6e3ed97df7e12795de2b4bd0ea3a99b5c","unresolved":false,"context_lines":[{"line_number":675,"context_line":""},{"line_number":676,"context_line":"    def retype(self, ctxt, volume, new_type, diff, host):"},{"line_number":677,"context_line":"        \"\"\"Convert the volume to be of the new type.\"\"\""},{"line_number":678,"context_line":"        LOG.debug(\u0027enter: retype: id\u003d%(id)s, new_type\u003d%(new_type)s,\u0027"},{"line_number":679,"context_line":"                  \u0027diff\u003d%(diff)s, host\u003d%(host)s\u0027 % {\u0027id\u0027: volume[\u0027id\u0027],"},{"line_number":680,"context_line":"                                                    \u0027new_type\u0027: new_type,"},{"line_number":681,"context_line":"                                                    \u0027diff\u0027: diff,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_b2c63898","line":678,"updated":"2015-07-15 11:12:45.000000000","message":"Need a blank space at the end of sentence.","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6f707a7e195a9f34607921472cb971a034de1996","unresolved":false,"context_lines":[{"line_number":675,"context_line":""},{"line_number":676,"context_line":"    def retype(self, ctxt, volume, new_type, diff, host):"},{"line_number":677,"context_line":"        \"\"\"Convert the volume to be of the new type.\"\"\""},{"line_number":678,"context_line":"        LOG.debug(\u0027enter: retype: id\u003d%(id)s, new_type\u003d%(new_type)s,\u0027"},{"line_number":679,"context_line":"                  \u0027diff\u003d%(diff)s, host\u003d%(host)s\u0027 % {\u0027id\u0027: volume[\u0027id\u0027],"},{"line_number":680,"context_line":"                                                    \u0027new_type\u0027: new_type,"},{"line_number":681,"context_line":"                                                    \u0027diff\u0027: diff,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_acc79662","line":678,"in_reply_to":"9a41bdd9_b2c63898","updated":"2015-07-24 02:34:30.000000000","message":"Done","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4c2552f6e3ed97df7e12795de2b4bd0ea3a99b5c","unresolved":false,"context_lines":[{"line_number":676,"context_line":"    def retype(self, ctxt, volume, new_type, diff, host):"},{"line_number":677,"context_line":"        \"\"\"Convert the volume to be of the new type.\"\"\""},{"line_number":678,"context_line":"        LOG.debug(\u0027enter: retype: id\u003d%(id)s, new_type\u003d%(new_type)s,\u0027"},{"line_number":679,"context_line":"                  \u0027diff\u003d%(diff)s, host\u003d%(host)s\u0027 % {\u0027id\u0027: volume[\u0027id\u0027],"},{"line_number":680,"context_line":"                                                    \u0027new_type\u0027: new_type,"},{"line_number":681,"context_line":"                                                    \u0027diff\u0027: diff,"},{"line_number":682,"context_line":"                                                    \u0027host\u0027: host})"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_d2a2dc98","line":679,"updated":"2015-07-15 11:12:45.000000000","message":"% -\u003e ,","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6f707a7e195a9f34607921472cb971a034de1996","unresolved":false,"context_lines":[{"line_number":676,"context_line":"    def retype(self, ctxt, volume, new_type, diff, host):"},{"line_number":677,"context_line":"        \"\"\"Convert the volume to be of the new type.\"\"\""},{"line_number":678,"context_line":"        LOG.debug(\u0027enter: retype: id\u003d%(id)s, new_type\u003d%(new_type)s,\u0027"},{"line_number":679,"context_line":"                  \u0027diff\u003d%(diff)s, host\u003d%(host)s\u0027 % {\u0027id\u0027: volume[\u0027id\u0027],"},{"line_number":680,"context_line":"                                                    \u0027new_type\u0027: new_type,"},{"line_number":681,"context_line":"                                                    \u0027diff\u0027: diff,"},{"line_number":682,"context_line":"                                                    \u0027host\u0027: host})"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_ccc22253","line":679,"in_reply_to":"9a41bdd9_d2a2dc98","updated":"2015-07-24 02:34:30.000000000","message":"Done","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4c2552f6e3ed97df7e12795de2b4bd0ea3a99b5c","unresolved":false,"context_lines":[{"line_number":687,"context_line":""},{"line_number":688,"context_line":"        try:"},{"line_number":689,"context_line":"            if migration:"},{"line_number":690,"context_line":"                LOG.debug((\"Begin to migration LUN(id: %(lun_id)s) with change\""},{"line_number":691,"context_line":"                           \"%(change_opts)s\") %"},{"line_number":692,"context_line":"                          {\"lun_id\": lun_id, \"change_opts\": change_opts})"},{"line_number":693,"context_line":"                if self._migrate_volume(volume, host, new_type):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_92ec54f4","line":690,"updated":"2015-07-15 11:12:45.000000000","message":"Need a blank space at the end of sentence.","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6f707a7e195a9f34607921472cb971a034de1996","unresolved":false,"context_lines":[{"line_number":687,"context_line":""},{"line_number":688,"context_line":"        try:"},{"line_number":689,"context_line":"            if migration:"},{"line_number":690,"context_line":"                LOG.debug((\"Begin to migration LUN(id: %(lun_id)s) with change\""},{"line_number":691,"context_line":"                           \"%(change_opts)s\") %"},{"line_number":692,"context_line":"                          {\"lun_id\": lun_id, \"change_opts\": change_opts})"},{"line_number":693,"context_line":"                if self._migrate_volume(volume, host, new_type):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_0c948a40","line":690,"in_reply_to":"9a41bdd9_92ec54f4","updated":"2015-07-24 02:34:30.000000000","message":"Done","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4c2552f6e3ed97df7e12795de2b4bd0ea3a99b5c","unresolved":false,"context_lines":[{"line_number":688,"context_line":"        try:"},{"line_number":689,"context_line":"            if migration:"},{"line_number":690,"context_line":"                LOG.debug((\"Begin to migration LUN(id: %(lun_id)s) with change\""},{"line_number":691,"context_line":"                           \"%(change_opts)s\") %"},{"line_number":692,"context_line":"                          {\"lun_id\": lun_id, \"change_opts\": change_opts})"},{"line_number":693,"context_line":"                if self._migrate_volume(volume, host, new_type):"},{"line_number":694,"context_line":"                    return True"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_92c3f456","line":691,"updated":"2015-07-15 11:12:45.000000000","message":"% -\u003e ,","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6f707a7e195a9f34607921472cb971a034de1996","unresolved":false,"context_lines":[{"line_number":688,"context_line":"        try:"},{"line_number":689,"context_line":"            if migration:"},{"line_number":690,"context_line":"                LOG.debug((\"Begin to migration LUN(id: %(lun_id)s) with change\""},{"line_number":691,"context_line":"                           \"%(change_opts)s\") %"},{"line_number":692,"context_line":"                          {\"lun_id\": lun_id, \"change_opts\": change_opts})"},{"line_number":693,"context_line":"                if self._migrate_volume(volume, host, new_type):"},{"line_number":694,"context_line":"                    return True"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_6c8bce1f","line":691,"in_reply_to":"9a41bdd9_92c3f456","updated":"2015-07-24 02:34:30.000000000","message":"Done","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4c2552f6e3ed97df7e12795de2b4bd0ea3a99b5c","unresolved":false,"context_lines":[{"line_number":719,"context_line":"            LOG.info(_LI(\"Retype LUN(id: %(lun_id)s) smartpartition from \""},{"line_number":720,"context_line":"                         \"(name: %(old_name)s, id: %(old_id)s) to \""},{"line_number":721,"context_line":"                         \"(name: %(new_name)s, id: %(new_id)s) success.\")"},{"line_number":722,"context_line":"                     % {\"lun_id\": lun_id,"},{"line_number":723,"context_line":"                        \"old_id\": old_id, \"old_name\": old_name,"},{"line_number":724,"context_line":"                        \"new_id\": new_id, \"new_name\": new_name})"},{"line_number":725,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_f2ada084","line":722,"updated":"2015-07-15 11:12:45.000000000","message":"% -\u003e ,","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6f707a7e195a9f34607921472cb971a034de1996","unresolved":false,"context_lines":[{"line_number":719,"context_line":"            LOG.info(_LI(\"Retype LUN(id: %(lun_id)s) smartpartition from \""},{"line_number":720,"context_line":"                         \"(name: %(old_name)s, id: %(old_id)s) to \""},{"line_number":721,"context_line":"                         \"(name: %(new_name)s, id: %(new_id)s) success.\")"},{"line_number":722,"context_line":"                     % {\"lun_id\": lun_id,"},{"line_number":723,"context_line":"                        \"old_id\": old_id, \"old_name\": old_name,"},{"line_number":724,"context_line":"                        \"new_id\": new_id, \"new_name\": new_name})"},{"line_number":725,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_ec7fde12","line":722,"in_reply_to":"9a41bdd9_f2ada084","updated":"2015-07-24 02:34:30.000000000","message":"Done","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4c2552f6e3ed97df7e12795de2b4bd0ea3a99b5c","unresolved":false,"context_lines":[{"line_number":736,"context_line":"            LOG.info(_LI(\"Retype LUN(id: %(lun_id)s) smartcache from \""},{"line_number":737,"context_line":"                         \"(name: %(old_name)s, id: %(old_id)s) to \""},{"line_number":738,"context_line":"                         \"(name: %(new_name)s, id: %(new_id)s) success.\")"},{"line_number":739,"context_line":"                     % {\"lun_id\": lun_id,"},{"line_number":740,"context_line":"                        \"old_id\": old_id, \"old_name\": old_name,"},{"line_number":741,"context_line":"                        \"new_id\": new_id, \"new_name\": new_name})"},{"line_number":742,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_92bf74a9","line":739,"updated":"2015-07-15 11:12:45.000000000","message":"% -\u003e ,","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6f707a7e195a9f34607921472cb971a034de1996","unresolved":false,"context_lines":[{"line_number":736,"context_line":"            LOG.info(_LI(\"Retype LUN(id: %(lun_id)s) smartcache from \""},{"line_number":737,"context_line":"                         \"(name: %(old_name)s, id: %(old_id)s) to \""},{"line_number":738,"context_line":"                         \"(name: %(new_name)s, id: %(new_id)s) success.\")"},{"line_number":739,"context_line":"                     % {\"lun_id\": lun_id,"},{"line_number":740,"context_line":"                        \"old_id\": old_id, \"old_name\": old_name,"},{"line_number":741,"context_line":"                        \"new_id\": new_id, \"new_name\": new_name})"},{"line_number":742,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_8705d311","line":739,"in_reply_to":"9a41bdd9_92bf74a9","updated":"2015-07-24 02:34:30.000000000","message":"Done","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4c2552f6e3ed97df7e12795de2b4bd0ea3a99b5c","unresolved":false,"context_lines":[{"line_number":745,"context_line":"            self.restclient.change_lun_smarttier(lun_id, new_policy)"},{"line_number":746,"context_line":"            LOG.info(_LI(\"Retype LUN(id: %(lun_id)s) smarttier policy from \""},{"line_number":747,"context_line":"                         \"%(old_policy)s to %(new_policy)s success.\")"},{"line_number":748,"context_line":"                     % {\"lun_id\": lun_id,"},{"line_number":749,"context_line":"                        \"old_policy\": old_policy,"},{"line_number":750,"context_line":"                        \"new_policy\": new_policy})"},{"line_number":751,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_12ea84ac","line":748,"updated":"2015-07-15 11:12:45.000000000","message":"% -\u003e ,","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6f707a7e195a9f34607921472cb971a034de1996","unresolved":false,"context_lines":[{"line_number":745,"context_line":"            self.restclient.change_lun_smarttier(lun_id, new_policy)"},{"line_number":746,"context_line":"            LOG.info(_LI(\"Retype LUN(id: %(lun_id)s) smarttier policy from \""},{"line_number":747,"context_line":"                         \"%(old_policy)s to %(new_policy)s success.\")"},{"line_number":748,"context_line":"                     % {\"lun_id\": lun_id,"},{"line_number":749,"context_line":"                        \"old_policy\": old_policy,"},{"line_number":750,"context_line":"                        \"new_policy\": new_policy})"},{"line_number":751,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_27087f27","line":748,"in_reply_to":"9a41bdd9_12ea84ac","updated":"2015-07-24 02:34:30.000000000","message":"Done","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4c2552f6e3ed97df7e12795de2b4bd0ea3a99b5c","unresolved":false,"context_lines":[{"line_number":760,"context_line":"                SmartQos.create_qos(new_qos, lun_id)"},{"line_number":761,"context_line":"            LOG.info(_LI(\"Retype LUN(id: %(lun_id)s) smartqos from \""},{"line_number":762,"context_line":"                         \"%(old_qos_value)s to %(new_qos)s success.\")"},{"line_number":763,"context_line":"                     % {\"lun_id\": lun_id,"},{"line_number":764,"context_line":"                        \"old_qos_value\": old_qos_value,"},{"line_number":765,"context_line":"                        \"new_qos\": new_qos})"},{"line_number":766,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_f2fb6079","line":763,"updated":"2015-07-15 11:12:45.000000000","message":"% -\u003e ,","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6f707a7e195a9f34607921472cb971a034de1996","unresolved":false,"context_lines":[{"line_number":760,"context_line":"                SmartQos.create_qos(new_qos, lun_id)"},{"line_number":761,"context_line":"            LOG.info(_LI(\"Retype LUN(id: %(lun_id)s) smartqos from \""},{"line_number":762,"context_line":"                         \"%(old_qos_value)s to %(new_qos)s success.\")"},{"line_number":763,"context_line":"                     % {\"lun_id\": lun_id,"},{"line_number":764,"context_line":"                        \"old_qos_value\": old_qos_value,"},{"line_number":765,"context_line":"                        \"new_qos\": new_qos})"},{"line_number":766,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_470b4b24","line":763,"in_reply_to":"9a41bdd9_f2fb6079","updated":"2015-07-24 02:34:30.000000000","message":"Done","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4c2552f6e3ed97df7e12795de2b4bd0ea3a99b5c","unresolved":false,"context_lines":[{"line_number":871,"context_line":""},{"line_number":872,"context_line":"        LOG.debug((\u0027Determine changes when retype. migration: \u0027"},{"line_number":873,"context_line":"                   \u0027%(migration)s, change_opts: %(change_opts)s\u0027)"},{"line_number":874,"context_line":"                  % {\u0027migration\u0027: migration,"},{"line_number":875,"context_line":"                     \u0027change_opts\u0027: change_opts})"},{"line_number":876,"context_line":"        return migration, change_opts, lun_id"},{"line_number":877,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_b2ddd8e1","line":874,"updated":"2015-07-15 11:12:45.000000000","message":"% -\u003e ,","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6f707a7e195a9f34607921472cb971a034de1996","unresolved":false,"context_lines":[{"line_number":871,"context_line":""},{"line_number":872,"context_line":"        LOG.debug((\u0027Determine changes when retype. migration: \u0027"},{"line_number":873,"context_line":"                   \u0027%(migration)s, change_opts: %(change_opts)s\u0027)"},{"line_number":874,"context_line":"                  % {\u0027migration\u0027: migration,"},{"line_number":875,"context_line":"                     \u0027change_opts\u0027: change_opts})"},{"line_number":876,"context_line":"        return migration, change_opts, lun_id"},{"line_number":877,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_acf0f6c9","line":874,"in_reply_to":"9a41bdd9_b2ddd8e1","updated":"2015-07-24 02:34:30.000000000","message":"Done","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"780369cbb4538b98965fdefeba5780dc924be119","unresolved":false,"context_lines":[{"line_number":883,"context_line":""},{"line_number":884,"context_line":"        QOS_KEYS \u003d [\u0027MAXIOPS\u0027, \u0027MINIOPS\u0027, \u0027MINBANDWidth\u0027,"},{"line_number":885,"context_line":"                    \u0027MAXBANDWidth\u0027, \u0027LATENCY\u0027, \u0027IOTYPE\u0027]"},{"line_number":886,"context_line":"        for key, value in qos_info.iteritems():"},{"line_number":887,"context_line":"            if key.upper() in QOS_KEYS:"},{"line_number":888,"context_line":"                if key.upper() \u003d\u003d \u0027LATENCY\u0027 and value \u003d\u003d \u00270\u0027:"},{"line_number":889,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_07ba6c0a","line":886,"updated":"2015-07-14 18:57:03.000000000","message":"Use items instead - https://wiki.openstack.org/wiki/Python3.","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6f707a7e195a9f34607921472cb971a034de1996","unresolved":false,"context_lines":[{"line_number":883,"context_line":""},{"line_number":884,"context_line":"        QOS_KEYS \u003d [\u0027MAXIOPS\u0027, \u0027MINIOPS\u0027, \u0027MINBANDWidth\u0027,"},{"line_number":885,"context_line":"                    \u0027MAXBANDWidth\u0027, \u0027LATENCY\u0027, \u0027IOTYPE\u0027]"},{"line_number":886,"context_line":"        for key, value in qos_info.iteritems():"},{"line_number":887,"context_line":"            if key.upper() in QOS_KEYS:"},{"line_number":888,"context_line":"                if key.upper() \u003d\u003d \u0027LATENCY\u0027 and value \u003d\u003d \u00270\u0027:"},{"line_number":889,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_ecea7eda","line":886,"in_reply_to":"9a41bdd9_07ba6c0a","updated":"2015-07-24 02:34:30.000000000","message":"Done","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"98f478bbc06f104a60d8865b9905e353cfabed49","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                qos_id \u003d self.restclient.get_qosid_by_lunid(lun_id)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"                if qos_id:"},{"line_number":130,"context_line":"                    # Add a step to parse volume type."},{"line_number":131,"context_line":"                    self.remove_qos_lun(lun_id, qos_id)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"                self.restclient.delete_lun(lun_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_e908c52a","line":130,"updated":"2015-07-25 10:42:43.000000000","message":"# Add a step to parse volume type -  isn\u0027t exact?","commit_id":"0e0f0cbbeded85dc40e1cbcb00f4cab19368a345"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"0af9cafbf83fec435f2cb1ccbd06395e3afa9766","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                qos_id \u003d self.restclient.get_qosid_by_lunid(lun_id)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"                if qos_id:"},{"line_number":130,"context_line":"                    # Add a step to parse volume type."},{"line_number":131,"context_line":"                    self.remove_qos_lun(lun_id, qos_id)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"                self.restclient.delete_lun(lun_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_82ea17ab","line":130,"in_reply_to":"3a50d1a3_e908c52a","updated":"2015-07-27 12:00:10.000000000","message":"Done","commit_id":"0e0f0cbbeded85dc40e1cbcb00f4cab19368a345"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"98f478bbc06f104a60d8865b9905e353cfabed49","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"                self.restclient.delete_lun(lun_id)"},{"line_number":134,"context_line":"        else:"},{"line_number":135,"context_line":"            LOG.warning(_LW(\"Can\u0027t find %s on the array.\"), lun_id)"},{"line_number":136,"context_line":"            return False"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_ee11ab5e","line":135,"updated":"2015-07-25 10:42:43.000000000","message":"\"Can\u0027t find the Lun %s on the array\" is better?","commit_id":"0e0f0cbbeded85dc40e1cbcb00f4cab19368a345"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"0af9cafbf83fec435f2cb1ccbd06395e3afa9766","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"                self.restclient.delete_lun(lun_id)"},{"line_number":134,"context_line":"        else:"},{"line_number":135,"context_line":"            LOG.warning(_LW(\"Can\u0027t find %s on the array.\"), lun_id)"},{"line_number":136,"context_line":"            return False"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_22d22301","line":135,"in_reply_to":"3a50d1a3_ee11ab5e","updated":"2015-07-27 12:00:10.000000000","message":"Done","commit_id":"0e0f0cbbeded85dc40e1cbcb00f4cab19368a345"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"19dd47c5f974804789f1022bf4dc4037fb57f3e4","unresolved":false,"context_lines":[{"line_number":796,"context_line":"        }"},{"line_number":797,"context_line":""},{"line_number":798,"context_line":"        lun_info \u003d self.restclient.get_lun_info(lun_id)"},{"line_number":799,"context_line":"        lun_opts[\u0027LUNType\u0027] \u003d int(lun_info[\u0027ALLOCTYPE\u0027])"},{"line_number":800,"context_line":"        if lun_info[\u0027DATATRANSFERPOLICY\u0027]:"},{"line_number":801,"context_line":"            lun_opts[\u0027policy\u0027] \u003d lun_info[\u0027DATATRANSFERPOLICY\u0027]"},{"line_number":802,"context_line":"        if lun_info[\u0027SMARTCACHEPARTITIONID\u0027]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_64e490df","line":799,"updated":"2015-07-28 06:19:23.000000000","message":"Replace (int, long) with six.integer_types","commit_id":"1503687b6017139403bd02132b72b9f4019cc61f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4f7df19ba25483be9d86922614a54d27da35901b","unresolved":false,"context_lines":[{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        try:"},{"line_number":730,"context_line":"            if migration:"},{"line_number":731,"context_line":"                LOG.debug((\"Begin to migration LUN(id: %(lun_id)s) with \""},{"line_number":732,"context_line":"                           \"change %(change_opts)s\"),"},{"line_number":733,"context_line":"                          {\"lun_id\": lun_id, \"change_opts\": change_opts})"},{"line_number":734,"context_line":"                if self._migrate_volume(volume, host, new_type):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_a0a727a6","line":731,"updated":"2015-07-31 12:04:06.000000000","message":"Should be either \"Begin to migrate\" or \"Beginning migration\".\n\nAlso remove () around the string.","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b6430e89b27b0c79e81862ba36865f156f007da2","unresolved":false,"context_lines":[{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        try:"},{"line_number":730,"context_line":"            if migration:"},{"line_number":731,"context_line":"                LOG.debug((\"Begin to migration LUN(id: %(lun_id)s) with \""},{"line_number":732,"context_line":"                           \"change %(change_opts)s\"),"},{"line_number":733,"context_line":"                          {\"lun_id\": lun_id, \"change_opts\": change_opts})"},{"line_number":734,"context_line":"                if self._migrate_volume(volume, host, new_type):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_06170955","line":731,"in_reply_to":"3a50d1a3_a0a727a6","updated":"2015-07-31 16:22:33.000000000","message":"Thanks, done.","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4f7df19ba25483be9d86922614a54d27da35901b","unresolved":false,"context_lines":[{"line_number":742,"context_line":"                self.modify_lun(lun_id, change_opts)"},{"line_number":743,"context_line":"                return True"},{"line_number":744,"context_line":"        except Exception as err:"},{"line_number":745,"context_line":"                msg \u003d (_(\"Retype volume error. %s\") % err)"},{"line_number":746,"context_line":"                LOG.error(msg)"},{"line_number":747,"context_line":"                return False"},{"line_number":748,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_80f1cb97","line":745,"updated":"2015-07-31 12:04:06.000000000","message":"Need six.text_type() around err to make sure there is no unicode conversion error when formatting the string.\n\nAlso looks like this is only used in LOG.error, so this should have _LE(). Better option would be to get rid of the string formatting and move that into the logger call, e.g.:\n\nLOG.error(_LE(\u0027Retype volume error. %s\u0027), err)\n\nor my preference would be:\n\nLOG.exception(_LE(\u0027Retype volume error:\u0027))\n\nand get rid of the \"as err\" from the exception line.","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b6430e89b27b0c79e81862ba36865f156f007da2","unresolved":false,"context_lines":[{"line_number":742,"context_line":"                self.modify_lun(lun_id, change_opts)"},{"line_number":743,"context_line":"                return True"},{"line_number":744,"context_line":"        except Exception as err:"},{"line_number":745,"context_line":"                msg \u003d (_(\"Retype volume error. %s\") % err)"},{"line_number":746,"context_line":"                LOG.error(msg)"},{"line_number":747,"context_line":"                return False"},{"line_number":748,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_e1a6870e","line":745,"in_reply_to":"3a50d1a3_80f1cb97","updated":"2015-07-31 16:22:33.000000000","message":"Thanks, done.","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4f7df19ba25483be9d86922614a54d27da35901b","unresolved":false,"context_lines":[{"line_number":797,"context_line":"            if old_qos_id:"},{"line_number":798,"context_line":"                self.remove_qos_lun(lun_id, old_qos_id)"},{"line_number":799,"context_line":"            if new_qos:"},{"line_number":800,"context_line":"                SmartQos \u003d smartx.SmartQos(self.restclient)"},{"line_number":801,"context_line":"                SmartQos.create_qos(new_qos, lun_id)"},{"line_number":802,"context_line":"            LOG.info(_LI(\"Retype LUN(id: %(lun_id)s) smartqos from \""},{"line_number":803,"context_line":"                         \"%(old_qos_value)s to %(new_qos)s success.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_c0da73e9","line":800,"updated":"2015-07-31 12:04:06.000000000","message":"Don\u0027t make the variable look like the class name. Something like smart_qos would be better.","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b6430e89b27b0c79e81862ba36865f156f007da2","unresolved":false,"context_lines":[{"line_number":797,"context_line":"            if old_qos_id:"},{"line_number":798,"context_line":"                self.remove_qos_lun(lun_id, old_qos_id)"},{"line_number":799,"context_line":"            if new_qos:"},{"line_number":800,"context_line":"                SmartQos \u003d smartx.SmartQos(self.restclient)"},{"line_number":801,"context_line":"                SmartQos.create_qos(new_qos, lun_id)"},{"line_number":802,"context_line":"            LOG.info(_LI(\"Retype LUN(id: %(lun_id)s) smartqos from \""},{"line_number":803,"context_line":"                         \"%(old_qos_value)s to %(new_qos)s success.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_21d22f5c","line":800,"in_reply_to":"3a50d1a3_c0da73e9","updated":"2015-07-31 16:22:33.000000000","message":"Done","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4f7df19ba25483be9d86922614a54d27da35901b","unresolved":false,"context_lines":[{"line_number":801,"context_line":"                SmartQos.create_qos(new_qos, lun_id)"},{"line_number":802,"context_line":"            LOG.info(_LI(\"Retype LUN(id: %(lun_id)s) smartqos from \""},{"line_number":803,"context_line":"                         \"%(old_qos_value)s to %(new_qos)s success.\")"},{"line_number":804,"context_line":"                     % {\u0027lun_id\u0027: lun_id,"},{"line_number":805,"context_line":"                        \u0027old_qos_value\u0027: old_qos_value,"},{"line_number":806,"context_line":"                        \u0027new_qos\u0027: new_qos})"},{"line_number":807,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_a0df27d5","line":804,"updated":"2015-07-31 12:04:06.000000000","message":"Change % to , to pass the formatting values into the logger as an argument for the logger to handle if/when needed.","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b6430e89b27b0c79e81862ba36865f156f007da2","unresolved":false,"context_lines":[{"line_number":801,"context_line":"                SmartQos.create_qos(new_qos, lun_id)"},{"line_number":802,"context_line":"            LOG.info(_LI(\"Retype LUN(id: %(lun_id)s) smartqos from \""},{"line_number":803,"context_line":"                         \"%(old_qos_value)s to %(new_qos)s success.\")"},{"line_number":804,"context_line":"                     % {\u0027lun_id\u0027: lun_id,"},{"line_number":805,"context_line":"                        \u0027old_qos_value\u0027: old_qos_value,"},{"line_number":806,"context_line":"                        \u0027new_qos\u0027: new_qos})"},{"line_number":807,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_811f8308","line":804,"in_reply_to":"3a50d1a3_a0df27d5","updated":"2015-07-31 16:22:33.000000000","message":"Done","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4f7df19ba25483be9d86922614a54d27da35901b","unresolved":false,"context_lines":[{"line_number":910,"context_line":"        if old_qos !\u003d new_qos:"},{"line_number":911,"context_line":"            change_opts[\u0027qos\u0027] \u003d ([old_qos_id, old_qos], new_qos)"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        LOG.debug((\"Determine changes when retype. migration: \""},{"line_number":914,"context_line":"                   \"%(migration)s, change_opts: %(change_opts)s\"),"},{"line_number":915,"context_line":"                  {\u0027migration\u0027: migration, \u0027change_opts\u0027: change_opts})"},{"line_number":916,"context_line":"        return migration, change_opts, lun_id"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_006cdb06","line":913,"updated":"2015-07-31 12:04:06.000000000","message":"Remove extra () around string.","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b6430e89b27b0c79e81862ba36865f156f007da2","unresolved":false,"context_lines":[{"line_number":910,"context_line":"        if old_qos !\u003d new_qos:"},{"line_number":911,"context_line":"            change_opts[\u0027qos\u0027] \u003d ([old_qos_id, old_qos], new_qos)"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        LOG.debug((\"Determine changes when retype. migration: \""},{"line_number":914,"context_line":"                   \"%(migration)s, change_opts: %(change_opts)s\"),"},{"line_number":915,"context_line":"                  {\u0027migration\u0027: migration, \u0027change_opts\u0027: change_opts})"},{"line_number":916,"context_line":"        return migration, change_opts, lun_id"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_81e6a314","line":913,"in_reply_to":"3a50d1a3_006cdb06","updated":"2015-07-31 16:22:33.000000000","message":"Done","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"da658237ed53bc6d6362bc251e279e4b02de40cb","unresolved":false,"context_lines":[{"line_number":740,"context_line":"                self.modify_lun(lun_id, change_opts)"},{"line_number":741,"context_line":"                return True"},{"line_number":742,"context_line":"        except Exception:"},{"line_number":743,"context_line":"                LOG.exception(_LE(\u0027Retype volume error:\u0027))"},{"line_number":744,"context_line":"                return False"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"    def modify_lun(self, lun_id, change_opts):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a50d1a3_1b43be6d","line":743,"updated":"2015-08-02 02:30:34.000000000","message":"End the message with \".\" or maybe you wanted to include the exception.","commit_id":"0baddceae10cd8d6b99328ee04f4bbbfd9784d9a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f7d9b85bbc4717988e928c2036e25b7f40d718b2","unresolved":false,"context_lines":[{"line_number":740,"context_line":"                self.modify_lun(lun_id, change_opts)"},{"line_number":741,"context_line":"                return True"},{"line_number":742,"context_line":"        except Exception:"},{"line_number":743,"context_line":"                LOG.exception(_LE(\u0027Retype volume error:\u0027))"},{"line_number":744,"context_line":"                return False"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"    def modify_lun(self, lun_id, change_opts):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a50d1a3_565d9bea","line":743,"in_reply_to":"3a50d1a3_1b43be6d","updated":"2015-08-02 03:56:03.000000000","message":"With the use of LOG.exception this is correct add it is.","commit_id":"0baddceae10cd8d6b99328ee04f4bbbfd9784d9a"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"99934a6ff89d814915cc7fb8bc1433c257c96c6d","unresolved":false,"context_lines":[{"line_number":740,"context_line":"                self.modify_lun(lun_id, change_opts)"},{"line_number":741,"context_line":"                return True"},{"line_number":742,"context_line":"        except Exception:"},{"line_number":743,"context_line":"                LOG.exception(_LE(\u0027Retype volume error:\u0027))"},{"line_number":744,"context_line":"                return False"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"    def modify_lun(self, lun_id, change_opts):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a50d1a3_4c2c2f4a","line":743,"in_reply_to":"3a50d1a3_565d9bea","updated":"2015-08-02 07:30:19.000000000","message":"Thanks for educating!","commit_id":"0baddceae10cd8d6b99328ee04f4bbbfd9784d9a"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"da658237ed53bc6d6362bc251e279e4b02de40cb","unresolved":false,"context_lines":[{"line_number":741,"context_line":"                return True"},{"line_number":742,"context_line":"        except Exception:"},{"line_number":743,"context_line":"                LOG.exception(_LE(\u0027Retype volume error:\u0027))"},{"line_number":744,"context_line":"                return False"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"    def modify_lun(self, lun_id, change_opts):"},{"line_number":747,"context_line":"        if change_opts[\u0027partitionid\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a50d1a3_3b46ba7b","line":744,"updated":"2015-08-02 02:30:34.000000000","message":"Why not raise exception?","commit_id":"0baddceae10cd8d6b99328ee04f4bbbfd9784d9a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f7d9b85bbc4717988e928c2036e25b7f40d718b2","unresolved":false,"context_lines":[{"line_number":741,"context_line":"                return True"},{"line_number":742,"context_line":"        except Exception:"},{"line_number":743,"context_line":"                LOG.exception(_LE(\u0027Retype volume error:\u0027))"},{"line_number":744,"context_line":"                return False"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"    def modify_lun(self, lun_id, change_opts):"},{"line_number":747,"context_line":"        if change_opts[\u0027partitionid\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a50d1a3_f66ce79e","line":744,"in_reply_to":"3a50d1a3_3b46ba7b","updated":"2015-08-02 03:56:03.000000000","message":"False is the correct return for this call. That will tell the higher layers that the driver was not able to perform the retype for whatever reason and it can then know to do something like a full migration to complete the request.","commit_id":"0baddceae10cd8d6b99328ee04f4bbbfd9784d9a"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"99934a6ff89d814915cc7fb8bc1433c257c96c6d","unresolved":false,"context_lines":[{"line_number":741,"context_line":"                return True"},{"line_number":742,"context_line":"        except Exception:"},{"line_number":743,"context_line":"                LOG.exception(_LE(\u0027Retype volume error:\u0027))"},{"line_number":744,"context_line":"                return False"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"    def modify_lun(self, lun_id, change_opts):"},{"line_number":747,"context_line":"        if change_opts[\u0027partitionid\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a50d1a3_acfcd3b5","line":744,"in_reply_to":"3a50d1a3_f66ce79e","updated":"2015-08-02 07:30:19.000000000","message":"Looks like higher layer treats returning False and Exception as same. I think higher layer should make decisions based on type of exception. eg. In case of VolumeNotFound fallback mechanism shouldn\u0027t be tried.","commit_id":"0baddceae10cd8d6b99328ee04f4bbbfd9784d9a"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"da658237ed53bc6d6362bc251e279e4b02de40cb","unresolved":false,"context_lines":[{"line_number":859,"context_line":"                    \"Can\u0027t find cache name on the array, cache name is: \""},{"line_number":860,"context_line":"                    \"%(name)s.\") % {\u0027name\u0027: new_cache_name})"},{"line_number":861,"context_line":"                LOG.error(msg)"},{"line_number":862,"context_line":"                raise exception.CinderException(msg)"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"        new_partition_id \u003d None"},{"line_number":865,"context_line":"        new_partition_name \u003d new_opts[\u0027partitionname\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a50d1a3_3b3d5add","line":862,"updated":"2015-08-02 02:30:34.000000000","message":"VolumeBackendException","commit_id":"0baddceae10cd8d6b99328ee04f4bbbfd9784d9a"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"da658237ed53bc6d6362bc251e279e4b02de40cb","unresolved":false,"context_lines":[{"line_number":871,"context_line":"                    \"Can\u0027t find partition name on the array, partition name \""},{"line_number":872,"context_line":"                    \"is: %(name)s.\") % {\u0027name\u0027: new_partition_name})"},{"line_number":873,"context_line":"                LOG.error(msg)"},{"line_number":874,"context_line":"                raise exception.CinderException(msg)"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"        # smarttier"},{"line_number":877,"context_line":"        if old_opts[\u0027policy\u0027] !\u003d new_opts[\u0027policy\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a50d1a3_db2476c7","line":874,"updated":"2015-08-02 02:30:34.000000000","message":"VolumeBackendException","commit_id":"0baddceae10cd8d6b99328ee04f4bbbfd9784d9a"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"ac2bed720e9ab1c84bd20aba8bb51ba076bceb1b","unresolved":false,"context_lines":[{"line_number":757,"context_line":"                self.modify_lun(lun_id, change_opts)"},{"line_number":758,"context_line":"                return True"},{"line_number":759,"context_line":"        except Exception:"},{"line_number":760,"context_line":"                LOG.exception(_LE(\u0027Retype volume error:\u0027))"},{"line_number":761,"context_line":"                return False"},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"    def modify_lun(self, lun_id, change_opts):"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_bdbdfb69","line":760,"updated":"2015-08-05 02:09:42.000000000","message":"Here need exception msg in log.","commit_id":"56ad94328b848d50c7258a038dee1993eaad62e7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2e270d7657230d94427f507768dd7b7c74df6041","unresolved":false,"context_lines":[{"line_number":757,"context_line":"                self.modify_lun(lun_id, change_opts)"},{"line_number":758,"context_line":"                return True"},{"line_number":759,"context_line":"        except Exception:"},{"line_number":760,"context_line":"                LOG.exception(_LE(\u0027Retype volume error:\u0027))"},{"line_number":761,"context_line":"                return False"},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"    def modify_lun(self, lun_id, change_opts):"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_2b616a05","line":760,"in_reply_to":"1a4dcd0f_bdbdfb69","updated":"2015-08-06 02:19:30.000000000","message":"Done","commit_id":"56ad94328b848d50c7258a038dee1993eaad62e7"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"ac2bed720e9ab1c84bd20aba8bb51ba076bceb1b","unresolved":false,"context_lines":[{"line_number":874,"context_line":"            if new_cache_id is None:"},{"line_number":875,"context_line":"                msg \u003d (_("},{"line_number":876,"context_line":"                    \"Can\u0027t find cache name on the array, cache name is: \""},{"line_number":877,"context_line":"                    \"%(name)s.\") % {\u0027name\u0027: new_cache_name})"},{"line_number":878,"context_line":"                LOG.error(msg)"},{"line_number":879,"context_line":"                raise exception.CinderException(msg)"},{"line_number":880,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_3d27abcb","line":877,"updated":"2015-08-05 02:09:42.000000000","message":"Use _LE here.","commit_id":"56ad94328b848d50c7258a038dee1993eaad62e7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2e270d7657230d94427f507768dd7b7c74df6041","unresolved":false,"context_lines":[{"line_number":874,"context_line":"            if new_cache_id is None:"},{"line_number":875,"context_line":"                msg \u003d (_("},{"line_number":876,"context_line":"                    \"Can\u0027t find cache name on the array, cache name is: \""},{"line_number":877,"context_line":"                    \"%(name)s.\") % {\u0027name\u0027: new_cache_name})"},{"line_number":878,"context_line":"                LOG.error(msg)"},{"line_number":879,"context_line":"                raise exception.CinderException(msg)"},{"line_number":880,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_2e9c375c","line":877,"in_reply_to":"1a4dcd0f_3d27abcb","updated":"2015-08-06 02:19:30.000000000","message":"I think _LE is needed only when the message text passed into LOG.error() directly.\nhttp://docs.openstack.org/developer/oslo.i18n/guidelines.html#choosing-a-marker-function","commit_id":"56ad94328b848d50c7258a038dee1993eaad62e7"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"ac2bed720e9ab1c84bd20aba8bb51ba076bceb1b","unresolved":false,"context_lines":[{"line_number":886,"context_line":"            if new_partition_id is None:"},{"line_number":887,"context_line":"                msg \u003d (_("},{"line_number":888,"context_line":"                    \"Can\u0027t find partition name on the array, partition name \""},{"line_number":889,"context_line":"                    \"is: %(name)s.\") % {\u0027name\u0027: new_partition_name})"},{"line_number":890,"context_line":"                LOG.error(msg)"},{"line_number":891,"context_line":"                raise exception.CinderException(msg)"},{"line_number":892,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_bd32db0e","line":889,"updated":"2015-08-05 02:09:42.000000000","message":"Use _LE here","commit_id":"56ad94328b848d50c7258a038dee1993eaad62e7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2e270d7657230d94427f507768dd7b7c74df6041","unresolved":false,"context_lines":[{"line_number":886,"context_line":"            if new_partition_id is None:"},{"line_number":887,"context_line":"                msg \u003d (_("},{"line_number":888,"context_line":"                    \"Can\u0027t find partition name on the array, partition name \""},{"line_number":889,"context_line":"                    \"is: %(name)s.\") % {\u0027name\u0027: new_partition_name})"},{"line_number":890,"context_line":"                LOG.error(msg)"},{"line_number":891,"context_line":"                raise exception.CinderException(msg)"},{"line_number":892,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_ceccb36c","line":889,"in_reply_to":"1a4dcd0f_bd32db0e","updated":"2015-08-06 02:19:30.000000000","message":"ditto","commit_id":"56ad94328b848d50c7258a038dee1993eaad62e7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"80920d6feb198365c89b9105437f21e0ee07e227","unresolved":false,"context_lines":[{"line_number":772,"context_line":"                return True"},{"line_number":773,"context_line":"        except Exception:"},{"line_number":774,"context_line":"                LOG.exception(_LE(\u0027Retype volume error.\u0027))"},{"line_number":775,"context_line":"                return False"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    def modify_lun(self, lun_id, change_opts):"},{"line_number":778,"context_line":"        if change_opts[\u0027partitionid\u0027]:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_cc25040b","line":775,"updated":"2015-08-08 21:21:02.000000000","message":"Please add a unit test for failed retype.","commit_id":"923993c9b4228d94b42c5f3f471af63a4bb3f9a5"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"83d73f0f40f602a8ca70f2566119a115a23fd5c0","unresolved":false,"context_lines":[{"line_number":772,"context_line":"                return True"},{"line_number":773,"context_line":"        except Exception:"},{"line_number":774,"context_line":"                LOG.exception(_LE(\u0027Retype volume error.\u0027))"},{"line_number":775,"context_line":"                return False"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    def modify_lun(self, lun_id, change_opts):"},{"line_number":778,"context_line":"        if change_opts[\u0027partitionid\u0027]:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_628714d8","line":775,"in_reply_to":"1a4dcd0f_cc25040b","updated":"2015-08-09 14:26:34.000000000","message":"Done","commit_id":"923993c9b4228d94b42c5f3f471af63a4bb3f9a5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"80920d6feb198365c89b9105437f21e0ee07e227","unresolved":false,"context_lines":[{"line_number":890,"context_line":"                    \"Can\u0027t find cache name on the array, cache name is: \""},{"line_number":891,"context_line":"                    \"%(name)s.\") % {\u0027name\u0027: new_cache_name})"},{"line_number":892,"context_line":"                LOG.error(msg)"},{"line_number":893,"context_line":"                raise exception.CinderException(msg)"},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"        new_partition_id \u003d None"},{"line_number":896,"context_line":"        new_partition_name \u003d new_opts[\u0027partitionname\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_2c1028a8","line":893,"updated":"2015-08-08 21:21:02.000000000","message":"Please use exception.VolumeBackendAPIException(data\u003dmsg) instead of CinderException.\n\nAlso please add a assertRaises test for the exception.","commit_id":"923993c9b4228d94b42c5f3f471af63a4bb3f9a5"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"83d73f0f40f602a8ca70f2566119a115a23fd5c0","unresolved":false,"context_lines":[{"line_number":890,"context_line":"                    \"Can\u0027t find cache name on the array, cache name is: \""},{"line_number":891,"context_line":"                    \"%(name)s.\") % {\u0027name\u0027: new_cache_name})"},{"line_number":892,"context_line":"                LOG.error(msg)"},{"line_number":893,"context_line":"                raise exception.CinderException(msg)"},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"        new_partition_id \u003d None"},{"line_number":896,"context_line":"        new_partition_name \u003d new_opts[\u0027partitionname\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_026df031","line":893,"in_reply_to":"1a4dcd0f_2c1028a8","updated":"2015-08-09 14:26:34.000000000","message":"Done","commit_id":"923993c9b4228d94b42c5f3f471af63a4bb3f9a5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"80920d6feb198365c89b9105437f21e0ee07e227","unresolved":false,"context_lines":[{"line_number":903,"context_line":"                    \"is: %(name)s.\") % {\u0027name\u0027: new_partition_name})"},{"line_number":904,"context_line":"                LOG.error(msg)"},{"line_number":905,"context_line":"                raise exception.CinderException(msg)"},{"line_number":906,"context_line":""},{"line_number":907,"context_line":"        # smarttier"},{"line_number":908,"context_line":"        if old_opts[\u0027policy\u0027] !\u003d new_opts[\u0027policy\u0027]:"},{"line_number":909,"context_line":"            change_opts[\u0027policy\u0027] \u003d (old_opts[\u0027policy\u0027], new_opts[\u0027policy\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_4c11f4ae","line":906,"updated":"2015-08-08 21:21:02.000000000","message":"Please use exception.VolumeBackendAPIException(data\u003dmsg) instead of CinderException.\n\nPlease add an assertRaises test for the exception.","commit_id":"923993c9b4228d94b42c5f3f471af63a4bb3f9a5"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"83d73f0f40f602a8ca70f2566119a115a23fd5c0","unresolved":false,"context_lines":[{"line_number":903,"context_line":"                    \"is: %(name)s.\") % {\u0027name\u0027: new_partition_name})"},{"line_number":904,"context_line":"                LOG.error(msg)"},{"line_number":905,"context_line":"                raise exception.CinderException(msg)"},{"line_number":906,"context_line":""},{"line_number":907,"context_line":"        # smarttier"},{"line_number":908,"context_line":"        if old_opts[\u0027policy\u0027] !\u003d new_opts[\u0027policy\u0027]:"},{"line_number":909,"context_line":"            change_opts[\u0027policy\u0027] \u003d (old_opts[\u0027policy\u0027], new_opts[\u0027policy\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_c2762806","line":906,"in_reply_to":"1a4dcd0f_4c11f4ae","updated":"2015-08-09 14:26:34.000000000","message":"Done","commit_id":"923993c9b4228d94b42c5f3f471af63a4bb3f9a5"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"e347d357e872098e554c2143d3aad2b07a8ca06e","unresolved":false,"context_lines":[{"line_number":746,"context_line":"    def retype(self, ctxt, volume, new_type, diff, host):"},{"line_number":747,"context_line":"        \"\"\"Convert the volume to be of the new type.\"\"\""},{"line_number":748,"context_line":"        LOG.debug(\"enter: retype: id\u003d%(id)s, new_type\u003d%(new_type)s, \""},{"line_number":749,"context_line":"                  \"diff\u003d%(diff)s, host\u003d%(host)s\", {\u0027id\u0027: volume[\u0027id\u0027],"},{"line_number":750,"context_line":"                                                   \u0027new_type\u0027: new_type,"},{"line_number":751,"context_line":"                                                   \u0027diff\u0027: diff,"},{"line_number":752,"context_line":"                                                   \u0027host\u0027: host})"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_f430b0a0","line":749,"updated":"2015-08-10 08:38:24.000000000","message":"Add a \u0027.\u0027 to the EOL.","commit_id":"c6cca999c484050ba053bb59985fb288cfc98341"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b851c8b7227b395d02eb835b2f801b0545e6832f","unresolved":false,"context_lines":[{"line_number":746,"context_line":"    def retype(self, ctxt, volume, new_type, diff, host):"},{"line_number":747,"context_line":"        \"\"\"Convert the volume to be of the new type.\"\"\""},{"line_number":748,"context_line":"        LOG.debug(\"enter: retype: id\u003d%(id)s, new_type\u003d%(new_type)s, \""},{"line_number":749,"context_line":"                  \"diff\u003d%(diff)s, host\u003d%(host)s\", {\u0027id\u0027: volume[\u0027id\u0027],"},{"line_number":750,"context_line":"                                                   \u0027new_type\u0027: new_type,"},{"line_number":751,"context_line":"                                                   \u0027diff\u0027: diff,"},{"line_number":752,"context_line":"                                                   \u0027host\u0027: host})"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_fc7085a6","line":749,"in_reply_to":"1a4dcd0f_f430b0a0","updated":"2015-08-10 14:01:27.000000000","message":"Done","commit_id":"c6cca999c484050ba053bb59985fb288cfc98341"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"474f21e4f9c818846854e43fe51430f4e39bc689","unresolved":false,"context_lines":[{"line_number":770,"context_line":"                # Modify lun to change policy"},{"line_number":771,"context_line":"                self.modify_lun(lun_id, change_opts)"},{"line_number":772,"context_line":"                return True"},{"line_number":773,"context_line":"        except Exception:"},{"line_number":774,"context_line":"                LOG.exception(_LE(\u0027Retype volume error.\u0027))"},{"line_number":775,"context_line":"                return False"},{"line_number":776,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_a9a086a6","line":773,"updated":"2015-08-10 13:16:49.000000000","message":"Bad indentation in exception.","commit_id":"c6cca999c484050ba053bb59985fb288cfc98341"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b851c8b7227b395d02eb835b2f801b0545e6832f","unresolved":false,"context_lines":[{"line_number":770,"context_line":"                # Modify lun to change policy"},{"line_number":771,"context_line":"                self.modify_lun(lun_id, change_opts)"},{"line_number":772,"context_line":"                return True"},{"line_number":773,"context_line":"        except Exception:"},{"line_number":774,"context_line":"                LOG.exception(_LE(\u0027Retype volume error.\u0027))"},{"line_number":775,"context_line":"                return False"},{"line_number":776,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_bc6d1d9b","line":773,"in_reply_to":"1a4dcd0f_a9a086a6","updated":"2015-08-10 14:01:27.000000000","message":"Done","commit_id":"c6cca999c484050ba053bb59985fb288cfc98341"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"79cb558c1152747260237b6598fe4056cdde5738","unresolved":false,"context_lines":[{"line_number":898,"context_line":"            if new_cache_id is None:"},{"line_number":899,"context_line":"                msg \u003d (_("},{"line_number":900,"context_line":"                    \"Can\u0027t find cache name on the array, cache name is: \""},{"line_number":901,"context_line":"                    \"%(name)s.\") % {\u0027name\u0027: new_cache_name})"},{"line_number":902,"context_line":"                LOG.error(msg)"},{"line_number":903,"context_line":"                raise exception.VolumeBackendAPIException(msg)"},{"line_number":904,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a4dcd0f_f1cacc19","line":901,"updated":"2015-08-11 06:47:16.000000000","message":"Should use _LE","commit_id":"688ea872dfa3f57916483c1b6668ef7d8996e2f0"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"b78f12671f85ce0cca1477298acd3b40ad9937e5","unresolved":false,"context_lines":[{"line_number":898,"context_line":"            if new_cache_id is None:"},{"line_number":899,"context_line":"                msg \u003d (_("},{"line_number":900,"context_line":"                    \"Can\u0027t find cache name on the array, cache name is: \""},{"line_number":901,"context_line":"                    \"%(name)s.\") % {\u0027name\u0027: new_cache_name})"},{"line_number":902,"context_line":"                LOG.error(msg)"},{"line_number":903,"context_line":"                raise exception.VolumeBackendAPIException(msg)"},{"line_number":904,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a4dcd0f_3e9dee09","line":901,"in_reply_to":"1a4dcd0f_e3aa0119","updated":"2015-08-13 00:55:31.000000000","message":"Sure, it is. Thanks Ankit.","commit_id":"688ea872dfa3f57916483c1b6668ef7d8996e2f0"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"dc3ed832064148645bfc87c1f2ecf8f44f067125","unresolved":false,"context_lines":[{"line_number":898,"context_line":"            if new_cache_id is None:"},{"line_number":899,"context_line":"                msg \u003d (_("},{"line_number":900,"context_line":"                    \"Can\u0027t find cache name on the array, cache name is: \""},{"line_number":901,"context_line":"                    \"%(name)s.\") % {\u0027name\u0027: new_cache_name})"},{"line_number":902,"context_line":"                LOG.error(msg)"},{"line_number":903,"context_line":"                raise exception.VolumeBackendAPIException(msg)"},{"line_number":904,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a4dcd0f_e3aa0119","line":901,"in_reply_to":"1a4dcd0f_f1cacc19","updated":"2015-08-11 07:04:38.000000000","message":"_ is correct in this case.\n\nref: http://docs.openstack.org/developer/oslo.i18n/guidelines.html#choosing-a-marker-function","commit_id":"688ea872dfa3f57916483c1b6668ef7d8996e2f0"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"79cb558c1152747260237b6598fe4056cdde5738","unresolved":false,"context_lines":[{"line_number":910,"context_line":"            if new_partition_id is None:"},{"line_number":911,"context_line":"                msg \u003d (_("},{"line_number":912,"context_line":"                    \"Can\u0027t find partition name on the array, partition name \""},{"line_number":913,"context_line":"                    \"is: %(name)s.\") % {\u0027name\u0027: new_partition_name})"},{"line_number":914,"context_line":"                LOG.error(msg)"},{"line_number":915,"context_line":"                raise exception.VolumeBackendAPIException(msg)"},{"line_number":916,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a4dcd0f_91d108d0","line":913,"updated":"2015-08-11 06:47:16.000000000","message":"Here too.","commit_id":"688ea872dfa3f57916483c1b6668ef7d8996e2f0"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"dc3ed832064148645bfc87c1f2ecf8f44f067125","unresolved":false,"context_lines":[{"line_number":910,"context_line":"            if new_partition_id is None:"},{"line_number":911,"context_line":"                msg \u003d (_("},{"line_number":912,"context_line":"                    \"Can\u0027t find partition name on the array, partition name \""},{"line_number":913,"context_line":"                    \"is: %(name)s.\") % {\u0027name\u0027: new_partition_name})"},{"line_number":914,"context_line":"                LOG.error(msg)"},{"line_number":915,"context_line":"                raise exception.VolumeBackendAPIException(msg)"},{"line_number":916,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a4dcd0f_4373b5e7","line":913,"in_reply_to":"1a4dcd0f_91d108d0","updated":"2015-08-11 07:04:38.000000000","message":"Same as above _ is correct in this case.","commit_id":"688ea872dfa3f57916483c1b6668ef7d8996e2f0"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"fb4c612972be16368ff58ad5d159ebfb71cb09ef","unresolved":false,"context_lines":[{"line_number":774,"context_line":"                # Modify lun to change policy"},{"line_number":775,"context_line":"                self.modify_lun(lun_id, change_opts)"},{"line_number":776,"context_line":"                return True"},{"line_number":777,"context_line":"        except Exception:"},{"line_number":778,"context_line":"            LOG.exception(_LE(\u0027Retype volume error.\u0027))"},{"line_number":779,"context_line":"            return False"},{"line_number":780,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_f2096cde","line":777,"updated":"2015-08-19 05:24:19.000000000","message":"Try to catch specific exceptions if you can predict and log differently for better debug.","commit_id":"36a6fd5cc8a675f842d354d27a73d1c74dc0615d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9676e71029232c303c16b4a89668b25d145f2562","unresolved":false,"context_lines":[{"line_number":774,"context_line":"                # Modify lun to change policy"},{"line_number":775,"context_line":"                self.modify_lun(lun_id, change_opts)"},{"line_number":776,"context_line":"                return True"},{"line_number":777,"context_line":"        except Exception:"},{"line_number":778,"context_line":"            LOG.exception(_LE(\u0027Retype volume error.\u0027))"},{"line_number":779,"context_line":"            return False"},{"line_number":780,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_ef309a03","line":777,"in_reply_to":"fa1b9901_f2096cde","updated":"2015-08-19 09:49:18.000000000","message":"Done, thanks!","commit_id":"36a6fd5cc8a675f842d354d27a73d1c74dc0615d"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"fb4c612972be16368ff58ad5d159ebfb71cb09ef","unresolved":false,"context_lines":[{"line_number":779,"context_line":"            return False"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":"    def modify_lun(self, lun_id, change_opts):"},{"line_number":782,"context_line":"        if change_opts[\u0027partitionid\u0027]:"},{"line_number":783,"context_line":"            old, new \u003d change_opts[\u0027partitionid\u0027]"},{"line_number":784,"context_line":"            old_id \u003d old[0]"},{"line_number":785,"context_line":"            old_name \u003d old[1]"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_7279dc2e","line":782,"updated":"2015-08-19 05:24:19.000000000","message":"There is a potential danger here:\nIf partitionid does not exist in change_opts, change_opts[\u0027partitionid\u0027] will raise KeyError. You can try change_opts.get(\"partitionid\").\nIf the key does not exist, it returns None.\n\nI know you run determine_changes_when_retype before this method, but you cannot make sure this method is not called somewhere else.","commit_id":"36a6fd5cc8a675f842d354d27a73d1c74dc0615d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9676e71029232c303c16b4a89668b25d145f2562","unresolved":false,"context_lines":[{"line_number":779,"context_line":"            return False"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":"    def modify_lun(self, lun_id, change_opts):"},{"line_number":782,"context_line":"        if change_opts[\u0027partitionid\u0027]:"},{"line_number":783,"context_line":"            old, new \u003d change_opts[\u0027partitionid\u0027]"},{"line_number":784,"context_line":"            old_id \u003d old[0]"},{"line_number":785,"context_line":"            old_name \u003d old[1]"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_aa0610cc","line":782,"in_reply_to":"fa1b9901_7279dc2e","updated":"2015-08-19 09:49:18.000000000","message":"Thanks, done.","commit_id":"36a6fd5cc8a675f842d354d27a73d1c74dc0615d"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"fb4c612972be16368ff58ad5d159ebfb71cb09ef","unresolved":false,"context_lines":[{"line_number":796,"context_line":"                      \"old_id\": old_id, \"old_name\": old_name,"},{"line_number":797,"context_line":"                      \"new_id\": new_id, \"new_name\": new_name})"},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"        if change_opts[\u0027cacheid\u0027]:"},{"line_number":800,"context_line":"            old, new \u003d change_opts[\u0027cacheid\u0027]"},{"line_number":801,"context_line":"            old_id \u003d old[0]"},{"line_number":802,"context_line":"            old_name \u003d old[1]"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_929a7062","line":799,"updated":"2015-08-19 05:24:19.000000000","message":"The same to the above.","commit_id":"36a6fd5cc8a675f842d354d27a73d1c74dc0615d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9676e71029232c303c16b4a89668b25d145f2562","unresolved":false,"context_lines":[{"line_number":796,"context_line":"                      \"old_id\": old_id, \"old_name\": old_name,"},{"line_number":797,"context_line":"                      \"new_id\": new_id, \"new_name\": new_name})"},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"        if change_opts[\u0027cacheid\u0027]:"},{"line_number":800,"context_line":"            old, new \u003d change_opts[\u0027cacheid\u0027]"},{"line_number":801,"context_line":"            old_id \u003d old[0]"},{"line_number":802,"context_line":"            old_name \u003d old[1]"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_4a6f3492","line":799,"in_reply_to":"fa1b9901_929a7062","updated":"2015-08-19 09:49:18.000000000","message":"Done","commit_id":"36a6fd5cc8a675f842d354d27a73d1c74dc0615d"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"fb4c612972be16368ff58ad5d159ebfb71cb09ef","unresolved":false,"context_lines":[{"line_number":813,"context_line":"                      \u0027old_id\u0027: old_id, \"old_name\": old_name,"},{"line_number":814,"context_line":"                      \u0027new_id\u0027: new_id, \"new_name\": new_name})"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"        if change_opts[\u0027policy\u0027]:"},{"line_number":817,"context_line":"            old_policy, new_policy \u003d change_opts[\u0027policy\u0027]"},{"line_number":818,"context_line":"            self.restclient.change_lun_smarttier(lun_id, new_policy)"},{"line_number":819,"context_line":"            LOG.info(_LI(\"Retype LUN(id: %(lun_id)s) smarttier policy from \""}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_52a5b89f","line":816,"updated":"2015-08-19 05:24:19.000000000","message":"The same to the above.","commit_id":"36a6fd5cc8a675f842d354d27a73d1c74dc0615d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9676e71029232c303c16b4a89668b25d145f2562","unresolved":false,"context_lines":[{"line_number":813,"context_line":"                      \u0027old_id\u0027: old_id, \"old_name\": old_name,"},{"line_number":814,"context_line":"                      \u0027new_id\u0027: new_id, \"new_name\": new_name})"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"        if change_opts[\u0027policy\u0027]:"},{"line_number":817,"context_line":"            old_policy, new_policy \u003d change_opts[\u0027policy\u0027]"},{"line_number":818,"context_line":"            self.restclient.change_lun_smarttier(lun_id, new_policy)"},{"line_number":819,"context_line":"            LOG.info(_LI(\"Retype LUN(id: %(lun_id)s) smarttier policy from \""}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_ca6264ad","line":816,"in_reply_to":"fa1b9901_52a5b89f","updated":"2015-08-19 09:49:18.000000000","message":"Done","commit_id":"36a6fd5cc8a675f842d354d27a73d1c74dc0615d"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"fb4c612972be16368ff58ad5d159ebfb71cb09ef","unresolved":false,"context_lines":[{"line_number":822,"context_line":"                      \u0027old_policy\u0027: old_policy,"},{"line_number":823,"context_line":"                      \u0027new_policy\u0027: new_policy})"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"        if change_opts[\u0027qos\u0027]:"},{"line_number":826,"context_line":"            old_qos, new_qos \u003d change_opts[\u0027qos\u0027]"},{"line_number":827,"context_line":"            old_qos_id \u003d old_qos[0]"},{"line_number":828,"context_line":"            old_qos_value \u003d old_qos[1]"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_72a0fc90","line":825,"updated":"2015-08-19 05:24:19.000000000","message":"The same to the above.","commit_id":"36a6fd5cc8a675f842d354d27a73d1c74dc0615d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9676e71029232c303c16b4a89668b25d145f2562","unresolved":false,"context_lines":[{"line_number":822,"context_line":"                      \u0027old_policy\u0027: old_policy,"},{"line_number":823,"context_line":"                      \u0027new_policy\u0027: new_policy})"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"        if change_opts[\u0027qos\u0027]:"},{"line_number":826,"context_line":"            old_qos, new_qos \u003d change_opts[\u0027qos\u0027]"},{"line_number":827,"context_line":"            old_qos_id \u003d old_qos[0]"},{"line_number":828,"context_line":"            old_qos_value \u003d old_qos[1]"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_2a744066","line":825,"in_reply_to":"fa1b9901_72a0fc90","updated":"2015-08-19 09:49:18.000000000","message":"Done","commit_id":"36a6fd5cc8a675f842d354d27a73d1c74dc0615d"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"fb4c612972be16368ff58ad5d159ebfb71cb09ef","unresolved":false,"context_lines":[{"line_number":954,"context_line":"            qos_info \u003d self.restclient.get_qos_info(qos_id)"},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"        QOS_KEYS \u003d [\u0027MAXIOPS\u0027, \u0027MINIOPS\u0027, \u0027MINBANDWidth\u0027,"},{"line_number":957,"context_line":"                    \u0027MAXBANDWidth\u0027, \u0027LATENCY\u0027, \u0027IOTYPE\u0027]"},{"line_number":958,"context_line":"        for key, value in qos_info.items():"},{"line_number":959,"context_line":"            if key.upper() in QOS_KEYS:"},{"line_number":960,"context_line":"                if key.upper() \u003d\u003d \u0027LATENCY\u0027 and value \u003d\u003d \u00270\u0027:"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_f262ccac","line":957,"updated":"2015-08-19 05:24:19.000000000","message":"I am sure that these QoS keys are badly needed if you implement QoS support for your driver, so put them in a list accessible to all the related code instead of putting it here locally for this method.","commit_id":"36a6fd5cc8a675f842d354d27a73d1c74dc0615d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9676e71029232c303c16b4a89668b25d145f2562","unresolved":false,"context_lines":[{"line_number":954,"context_line":"            qos_info \u003d self.restclient.get_qos_info(qos_id)"},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"        QOS_KEYS \u003d [\u0027MAXIOPS\u0027, \u0027MINIOPS\u0027, \u0027MINBANDWidth\u0027,"},{"line_number":957,"context_line":"                    \u0027MAXBANDWidth\u0027, \u0027LATENCY\u0027, \u0027IOTYPE\u0027]"},{"line_number":958,"context_line":"        for key, value in qos_info.items():"},{"line_number":959,"context_line":"            if key.upper() in QOS_KEYS:"},{"line_number":960,"context_line":"                if key.upper() \u003d\u003d \u0027LATENCY\u0027 and value \u003d\u003d \u00270\u0027:"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_aa2cd002","line":957,"in_reply_to":"fa1b9901_f262ccac","updated":"2015-08-19 09:49:18.000000000","message":"Thanks, done.","commit_id":"36a6fd5cc8a675f842d354d27a73d1c74dc0615d"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"d9d60a5d7e1dc77a7cfc95db84c8ec23e246ffe7","unresolved":false,"context_lines":[{"line_number":775,"context_line":"                self.modify_lun(lun_id, change_opts)"},{"line_number":776,"context_line":"                return True"},{"line_number":777,"context_line":"        except exception.VolumeBackendAPIException:"},{"line_number":778,"context_line":"            LOG.exception(_LE(\u0027Retype volume error.\u0027))"},{"line_number":779,"context_line":"            return False"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":"    def modify_lun(self, lun_id, change_opts):"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa1b9901_83660feb","line":778,"updated":"2015-08-21 13:49:17.000000000","message":"I suggest adding the specifics to this logging statement. Something like: \"Retype volume error due to VolumeBackendAPIException\" or something like that.","commit_id":"fcdcb10f818a0a8c286e9eb5ee4090da36bed9bc"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1372ab10c4d8c56ec70e69fe14cd3e5d8689c1d8","unresolved":false,"context_lines":[{"line_number":775,"context_line":"                self.modify_lun(lun_id, change_opts)"},{"line_number":776,"context_line":"                return True"},{"line_number":777,"context_line":"        except exception.VolumeBackendAPIException:"},{"line_number":778,"context_line":"            LOG.exception(_LE(\u0027Retype volume error.\u0027))"},{"line_number":779,"context_line":"            return False"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":"    def modify_lun(self, lun_id, change_opts):"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa1b9901_a66b21f0","line":778,"in_reply_to":"fa1b9901_83660feb","updated":"2015-08-21 13:59:27.000000000","message":"With LOG.exception, the logger will actually log out the full exception information, including the exception type. I think this is probably fine in this case.","commit_id":"fcdcb10f818a0a8c286e9eb5ee4090da36bed9bc"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"d9d60a5d7e1dc77a7cfc95db84c8ec23e246ffe7","unresolved":false,"context_lines":[{"line_number":942,"context_line":"        if old_qos !\u003d new_qos:"},{"line_number":943,"context_line":"            change_opts[\u0027qos\u0027] \u003d ([old_qos_id, old_qos], new_qos)"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"        LOG.debug(\"Determine changes when retype. migration: \""},{"line_number":946,"context_line":"                  \"%(migration)s, change_opts: %(change_opts)s.\","},{"line_number":947,"context_line":"                  {\u0027migration\u0027: migration, \u0027change_opts\u0027: change_opts})"},{"line_number":948,"context_line":"        return migration, change_opts, lun_id"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa1b9901_a3f1d302","line":945,"updated":"2015-08-21 13:49:17.000000000","message":"migration -\u003e Migration ?","commit_id":"fcdcb10f818a0a8c286e9eb5ee4090da36bed9bc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"dbd4143121007d358bbb4a921e06717cfba972d5","unresolved":false,"context_lines":[{"line_number":942,"context_line":"        if old_qos !\u003d new_qos:"},{"line_number":943,"context_line":"            change_opts[\u0027qos\u0027] \u003d ([old_qos_id, old_qos], new_qos)"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"        LOG.debug(\"Determine changes when retype. migration: \""},{"line_number":946,"context_line":"                  \"%(migration)s, change_opts: %(change_opts)s.\","},{"line_number":947,"context_line":"                  {\u0027migration\u0027: migration, \u0027change_opts\u0027: change_opts})"},{"line_number":948,"context_line":"        return migration, change_opts, lun_id"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa1b9901_44f1cf94","line":945,"in_reply_to":"fa1b9901_a3f1d302","updated":"2015-08-21 19:09:16.000000000","message":"Done","commit_id":"fcdcb10f818a0a8c286e9eb5ee4090da36bed9bc"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ce2f1d4bd9d2d99ba9e6cce59f80f27ee51e724a","unresolved":false,"context_lines":[{"line_number":894,"context_line":"                    \"Can\u0027t find cache name on the array, cache name is: \""},{"line_number":895,"context_line":"                    \"%(name)s.\") % {\u0027name\u0027: new_cache_name})"},{"line_number":896,"context_line":"                LOG.error(msg)"},{"line_number":897,"context_line":"                raise exception.VolumeBackendAPIException(msg)"},{"line_number":898,"context_line":""},{"line_number":899,"context_line":"        new_partition_id \u003d None"},{"line_number":900,"context_line":"        new_partition_name \u003d new_opts[\u0027partitionname\u0027]"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa1b9901_8009f3df","line":897,"updated":"2015-08-23 15:09:00.000000000","message":"exception.VolumeBackendAPIException(data\u003dmsg)","commit_id":"a82668929e8d1a776a9eaa061bb309f33a5fac2f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"1cb7edb282860dfd2bfdb20aa4dba7838e95905b","unresolved":false,"context_lines":[{"line_number":894,"context_line":"                    \"Can\u0027t find cache name on the array, cache name is: \""},{"line_number":895,"context_line":"                    \"%(name)s.\") % {\u0027name\u0027: new_cache_name})"},{"line_number":896,"context_line":"                LOG.error(msg)"},{"line_number":897,"context_line":"                raise exception.VolumeBackendAPIException(msg)"},{"line_number":898,"context_line":""},{"line_number":899,"context_line":"        new_partition_id \u003d None"},{"line_number":900,"context_line":"        new_partition_name \u003d new_opts[\u0027partitionname\u0027]"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa1b9901_cc45e4b3","line":897,"in_reply_to":"fa1b9901_8009f3df","updated":"2015-08-24 01:21:04.000000000","message":"Done, thanks!","commit_id":"a82668929e8d1a776a9eaa061bb309f33a5fac2f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ce2f1d4bd9d2d99ba9e6cce59f80f27ee51e724a","unresolved":false,"context_lines":[{"line_number":906,"context_line":"                    \"Can\u0027t find partition name on the array, partition name \""},{"line_number":907,"context_line":"                    \"is: %(name)s.\") % {\u0027name\u0027: new_partition_name})"},{"line_number":908,"context_line":"                LOG.error(msg)"},{"line_number":909,"context_line":"                raise exception.VolumeBackendAPIException(msg)"},{"line_number":910,"context_line":""},{"line_number":911,"context_line":"        # smarttier"},{"line_number":912,"context_line":"        if old_opts[\u0027policy\u0027] !\u003d new_opts[\u0027policy\u0027]:"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa1b9901_200ee7e5","line":909,"updated":"2015-08-23 15:09:00.000000000","message":"Same","commit_id":"a82668929e8d1a776a9eaa061bb309f33a5fac2f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"1cb7edb282860dfd2bfdb20aa4dba7838e95905b","unresolved":false,"context_lines":[{"line_number":906,"context_line":"                    \"Can\u0027t find partition name on the array, partition name \""},{"line_number":907,"context_line":"                    \"is: %(name)s.\") % {\u0027name\u0027: new_partition_name})"},{"line_number":908,"context_line":"                LOG.error(msg)"},{"line_number":909,"context_line":"                raise exception.VolumeBackendAPIException(msg)"},{"line_number":910,"context_line":""},{"line_number":911,"context_line":"        # smarttier"},{"line_number":912,"context_line":"        if old_opts[\u0027policy\u0027] !\u003d new_opts[\u0027policy\u0027]:"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa1b9901_6c1138af","line":909,"in_reply_to":"fa1b9901_200ee7e5","updated":"2015-08-24 01:21:04.000000000","message":"Done, thanks!","commit_id":"a82668929e8d1a776a9eaa061bb309f33a5fac2f"}],"cinder/volume/drivers/huawei/huawei_utils.py":[{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"fb4c612972be16368ff58ad5d159ebfb71cb09ef","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                LOG.error(_LE(\"Capabilities value must be specified as \""},{"line_number":117,"context_line":"                              \"\u0027\u003cis\u003e True\u0027 or \u0027\u003cis\u003e true\u0027.\"))"},{"line_number":118,"context_line":"            else:"},{"line_number":119,"context_line":"                opts[key] \u003d words[1].lower()"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        if (scope in opts_capability) and (key in opts_value):"},{"line_number":122,"context_line":"            if (scope in opts_associate) and (opts_associate[scope] \u003d\u003d key):"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_121c2011","line":119,"updated":"2015-08-19 05:24:19.000000000","message":"What is words[1] supposed to mean? Add some explanations.","commit_id":"36a6fd5cc8a675f842d354d27a73d1c74dc0615d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9676e71029232c303c16b4a89668b25d145f2562","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                LOG.error(_LE(\"Capabilities value must be specified as \""},{"line_number":117,"context_line":"                              \"\u0027\u003cis\u003e True\u0027 or \u0027\u003cis\u003e true\u0027.\"))"},{"line_number":118,"context_line":"            else:"},{"line_number":119,"context_line":"                opts[key] \u003d words[1].lower()"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        if (scope in opts_capability) and (key in opts_value):"},{"line_number":122,"context_line":"            if (scope in opts_associate) and (opts_associate[scope] \u003d\u003d key):"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_ca2fc4f4","line":119,"in_reply_to":"fa1b9901_121c2011","updated":"2015-08-19 09:49:18.000000000","message":"Done","commit_id":"36a6fd5cc8a675f842d354d27a73d1c74dc0615d"}],"cinder/volume/drivers/huawei/rest_client.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"780369cbb4538b98965fdefeba5780dc924be119","unresolved":false,"context_lines":[{"line_number":1245,"context_line":"        # Lun only in one lungroup."},{"line_number":1246,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":1247,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":1248,"context_line":"                lun_group_id \u003d item[\u0027ID\u0027]"},{"line_number":1249,"context_line":""},{"line_number":1250,"context_line":"        return lun_group_id"},{"line_number":1251,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_87443c1b","line":1248,"updated":"2015-07-14 18:57:03.000000000","message":"break here or just return.","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6f707a7e195a9f34607921472cb971a034de1996","unresolved":false,"context_lines":[{"line_number":1245,"context_line":"        # Lun only in one lungroup."},{"line_number":1246,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":1247,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":1248,"context_line":"                lun_group_id \u003d item[\u0027ID\u0027]"},{"line_number":1249,"context_line":""},{"line_number":1250,"context_line":"        return lun_group_id"},{"line_number":1251,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_4c2292a4","line":1248,"in_reply_to":"9a41bdd9_87443c1b","updated":"2015-07-24 02:34:30.000000000","message":"Done","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"add5d7ff7baa1e4e14f611ac621717637d378b09","unresolved":false,"context_lines":[{"line_number":1394,"context_line":"        return result[\u0027data\u0027][\u0027PRODUCTVERSION\u0027]"},{"line_number":1395,"context_line":""},{"line_number":1396,"context_line":"    def find_available_qos(self, qos):"},{"line_number":1397,"context_line":"        \"\"\"\"Find available QoS in array.\"\"\""},{"line_number":1398,"context_line":"        qos_id \u003d None"},{"line_number":1399,"context_line":"        lunlist \u003d []"},{"line_number":1400,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_7756622b","line":1397,"updated":"2015-07-15 10:54:57.000000000","message":"in array -\u003e on array","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6f707a7e195a9f34607921472cb971a034de1996","unresolved":false,"context_lines":[{"line_number":1394,"context_line":"        return result[\u0027data\u0027][\u0027PRODUCTVERSION\u0027]"},{"line_number":1395,"context_line":""},{"line_number":1396,"context_line":"    def find_available_qos(self, qos):"},{"line_number":1397,"context_line":"        \"\"\"\"Find available QoS in array.\"\"\""},{"line_number":1398,"context_line":"        qos_id \u003d None"},{"line_number":1399,"context_line":"        lunlist \u003d []"},{"line_number":1400,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_cc454243","line":1397,"in_reply_to":"9a41bdd9_7756622b","updated":"2015-07-24 02:34:30.000000000","message":"Done","commit_id":"a4fcb321c2490de153c12efef11745e03ff29e6f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"04b25d50ed7a6b15891bbd110149b5c96b6d69ae","unresolved":false,"context_lines":[{"line_number":1464,"context_line":"                           \"TYPE\": 273})"},{"line_number":1465,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1466,"context_line":""},{"line_number":1467,"context_line":"        self._assert_rest_result(result, \u0027Add cache to cache error.\u0027)"},{"line_number":1468,"context_line":""},{"line_number":1469,"context_line":"    def remove_lun_from_cache(self, lun_id, cache_id):"},{"line_number":1470,"context_line":"        url \u003d self.url + \"/SMARTCACHEPARTITION/REMOVE_ASSOCIATE\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_77a57245","line":1467,"updated":"2015-07-25 01:08:37.000000000","message":"cache -\u003e lun.","commit_id":"b79acbcba5a0bf6fcf0f47aefb420ddb682cf76d"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"c5c9e313843ee13e25ada34df573ed2ce947abf2","unresolved":false,"context_lines":[{"line_number":1464,"context_line":"                           \"TYPE\": 273})"},{"line_number":1465,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1466,"context_line":""},{"line_number":1467,"context_line":"        self._assert_rest_result(result, \u0027Add cache to cache error.\u0027)"},{"line_number":1468,"context_line":""},{"line_number":1469,"context_line":"    def remove_lun_from_cache(self, lun_id, cache_id):"},{"line_number":1470,"context_line":"        url \u003d self.url + \"/SMARTCACHEPARTITION/REMOVE_ASSOCIATE\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_fd288335","line":1467,"in_reply_to":"3a50d1a3_77a57245","updated":"2015-07-25 07:43:23.000000000","message":"Done","commit_id":"b79acbcba5a0bf6fcf0f47aefb420ddb682cf76d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4f7df19ba25483be9d86922614a54d27da35901b","unresolved":false,"context_lines":[{"line_number":1287,"context_line":"                           \"DATATRANSFERPOLICY\": smarttier_policy})"},{"line_number":1288,"context_line":""},{"line_number":1289,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1290,"context_line":"        self._assert_rest_result(result, \u0027Change lun smarttier policy error.\u0027)"},{"line_number":1291,"context_line":""},{"line_number":1292,"context_line":"    def get_qosid_by_lunid(self, lun_id):"},{"line_number":1293,"context_line":"        \"\"\"Get QoS id by lun id.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_2046b77b","line":1290,"updated":"2015-07-31 12:04:06.000000000","message":"Needs _() translation marker around error message string.","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b6430e89b27b0c79e81862ba36865f156f007da2","unresolved":false,"context_lines":[{"line_number":1287,"context_line":"                           \"DATATRANSFERPOLICY\": smarttier_policy})"},{"line_number":1288,"context_line":""},{"line_number":1289,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1290,"context_line":"        self._assert_rest_result(result, \u0027Change lun smarttier policy error.\u0027)"},{"line_number":1291,"context_line":""},{"line_number":1292,"context_line":"    def get_qosid_by_lunid(self, lun_id):"},{"line_number":1293,"context_line":"        \"\"\"Get QoS id by lun id.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_c1a90b92","line":1290,"in_reply_to":"3a50d1a3_2046b77b","updated":"2015-07-31 16:22:33.000000000","message":"Done","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4f7df19ba25483be9d86922614a54d27da35901b","unresolved":false,"context_lines":[{"line_number":1427,"context_line":"                           \"ID\": cacheid})"},{"line_number":1428,"context_line":""},{"line_number":1429,"context_line":"        result \u003d self.call(url, data, \"GET\")"},{"line_number":1430,"context_line":"        self._assert_rest_result(result, \u0027Get smartcache by cache id error.\u0027)"},{"line_number":1431,"context_line":""},{"line_number":1432,"context_line":"        return result[\u0027data\u0027]"},{"line_number":1433,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_e058cf59","line":1430,"updated":"2015-07-31 12:04:06.000000000","message":"_()","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b6430e89b27b0c79e81862ba36865f156f007da2","unresolved":false,"context_lines":[{"line_number":1427,"context_line":"                           \"ID\": cacheid})"},{"line_number":1428,"context_line":""},{"line_number":1429,"context_line":"        result \u003d self.call(url, data, \"GET\")"},{"line_number":1430,"context_line":"        self._assert_rest_result(result, \u0027Get smartcache by cache id error.\u0027)"},{"line_number":1431,"context_line":""},{"line_number":1432,"context_line":"        return result[\u0027data\u0027]"},{"line_number":1433,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_a1763f3d","line":1430,"in_reply_to":"3a50d1a3_e058cf59","updated":"2015-07-31 16:22:33.000000000","message":"Done","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4f7df19ba25483be9d86922614a54d27da35901b","unresolved":false,"context_lines":[{"line_number":1439,"context_line":"                           \"TYPE\": 273})"},{"line_number":1440,"context_line":""},{"line_number":1441,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1442,"context_line":"        self._assert_rest_result(result, \u0027Remove lun from cache error.\u0027)"},{"line_number":1443,"context_line":""},{"line_number":1444,"context_line":"    def find_available_qos(self, qos):"},{"line_number":1445,"context_line":"        \"\"\"\"Find available QoS on the array.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_80578b25","line":1442,"updated":"2015-07-31 12:04:06.000000000","message":"_()","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b6430e89b27b0c79e81862ba36865f156f007da2","unresolved":false,"context_lines":[{"line_number":1439,"context_line":"                           \"TYPE\": 273})"},{"line_number":1440,"context_line":""},{"line_number":1441,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1442,"context_line":"        self._assert_rest_result(result, \u0027Remove lun from cache error.\u0027)"},{"line_number":1443,"context_line":""},{"line_number":1444,"context_line":"    def find_available_qos(self, qos):"},{"line_number":1445,"context_line":"        \"\"\"\"Find available QoS on the array.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_817b0329","line":1442,"in_reply_to":"3a50d1a3_80578b25","updated":"2015-07-31 16:22:33.000000000","message":"Done","commit_id":"8ca991bb9035db3536f19155cd6eab0b73f25bb3"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"474f21e4f9c818846854e43fe51430f4e39bc689","unresolved":false,"context_lines":[{"line_number":1289,"context_line":"        url \u003d self.url + \"/lun/\" + lunid"},{"line_number":1290,"context_line":"        data \u003d json.dumps({\"TYPE\": \"11\","},{"line_number":1291,"context_line":"                           \"ID\": lunid,"},{"line_number":1292,"context_line":"                           \"DATATRANSFERPOLICY\": smarttier_policy})"},{"line_number":1293,"context_line":""},{"line_number":1294,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1295,"context_line":"        self._assert_rest_result("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_738b4869","line":1292,"updated":"2015-08-10 13:16:49.000000000","message":"https://www.python.org/dev/peps/pep-0008/#indentation The closing brace/bracket/parenthesis on multi-line constructs may either line up under the first non-whitespace character of the last line of list. Lets write as Guido suggests.","commit_id":"c6cca999c484050ba053bb59985fb288cfc98341"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"474f21e4f9c818846854e43fe51430f4e39bc689","unresolved":false,"context_lines":[{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"        url \u003d self.url + \"/SMARTCACHEPARTITION/\" + cacheid"},{"line_number":1420,"context_line":"        data \u003d json.dumps({\"TYPE\": \"273\","},{"line_number":1421,"context_line":"                           \"ID\": cacheid})"},{"line_number":1422,"context_line":""},{"line_number":1423,"context_line":"        result \u003d self.call(url, data, \"GET\")"},{"line_number":1424,"context_line":"        self._assert_rest_result("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_f3f518ed","line":1421,"updated":"2015-08-10 13:16:49.000000000","message":"Same as above.","commit_id":"c6cca999c484050ba053bb59985fb288cfc98341"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"474f21e4f9c818846854e43fe51430f4e39bc689","unresolved":false,"context_lines":[{"line_number":1431,"context_line":"        data \u003d json.dumps({\"ID\": cache_id,"},{"line_number":1432,"context_line":"                           \"ASSOCIATEOBJTYPE\": 11,"},{"line_number":1433,"context_line":"                           \"ASSOCIATEOBJID\": lun_id,"},{"line_number":1434,"context_line":"                           \"TYPE\": 273})"},{"line_number":1435,"context_line":""},{"line_number":1436,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1437,"context_line":"        self._assert_rest_result(result, _(\u0027Remove lun from cache error.\u0027))"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_93ddb472","line":1434,"updated":"2015-08-10 13:16:49.000000000","message":"Same as above.","commit_id":"c6cca999c484050ba053bb59985fb288cfc98341"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e4a4616109bc4fc8758cef5bb9606773da5ac6e8","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"        self._assert_rest_result(result, _(\u0027Add lun to partition error.\u0027))"},{"line_number":1410,"context_line":""},{"line_number":1411,"context_line":"    def remove_lun_from_partition(self, lun_id, partition_id):"},{"line_number":1412,"context_line":""},{"line_number":1413,"context_line":"        url \u003d (self.url + \u0027/lun/associate/cachepartition?ID\u003d\u0027 + partition_id"},{"line_number":1414,"context_line":"               + \u0027\u0026ASSOCIATEOBJTYPE\u003d11\u0026ASSOCIATEOBJID\u003d\u0027 + lun_id)"},{"line_number":1415,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_0403b0b9","line":1412,"updated":"2015-08-24 03:36:31.000000000","message":"Extra blank line.","commit_id":"d4ffae7e1aae1d00c004ffcd573031a641090129"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e4a4616109bc4fc8758cef5bb9606773da5ac6e8","unresolved":false,"context_lines":[{"line_number":1427,"context_line":"                    return item[\u0027ID\u0027]"},{"line_number":1428,"context_line":""},{"line_number":1429,"context_line":"    def get_cache_info_by_id(self, cacheid):"},{"line_number":1430,"context_line":""},{"line_number":1431,"context_line":"        url \u003d self.url + \"/SMARTCACHEPARTITION/\" + cacheid"},{"line_number":1432,"context_line":"        data \u003d json.dumps({\"TYPE\": \"273\","},{"line_number":1433,"context_line":"                           \"ID\": cacheid})"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_240034aa","line":1430,"updated":"2015-08-24 03:36:31.000000000","message":"Extra blank line.","commit_id":"d4ffae7e1aae1d00c004ffcd573031a641090129"}]}
