)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":18479,"name":"Slade Baumann","email":"baumann@us.ibm.com","username":"baumann"},"change_message_id":"f1cd47973f73039903234c70d4325d36958d895a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Huawei: add manage/unmanage volume support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add manage/unmanage volume support for Huawei"},{"line_number":10,"context_line":"drivers. Aslo implemented the required"},{"line_number":11,"context_line":"manage_exsiting_get_size function."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueplant huawei-support-manage-volume"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a26ad4f_a9e60eb2","line":10,"updated":"2015-10-30 18:42:52.000000000","message":"Aslo -\u003e Also\n\nAnother suggestion could be to change \"implemented\" to \"implement\" to keep the tense the same as the first line or alternatively making \"Add\" to \"Added\" in the first line to keep them both past tense. Minor, but just a thought.","commit_id":"c16643ef16bb57172257f77536f4a282a4929c19"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"aa25d78927ff61c34fb6fd301d90f8968dc28651","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Huawei: add manage/unmanage volume support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add manage/unmanage volume support for Huawei"},{"line_number":10,"context_line":"drivers. Aslo implemented the required"},{"line_number":11,"context_line":"manage_exsiting_get_size function."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueplant huawei-support-manage-volume"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a26ad4f_a62ab88e","line":10,"in_reply_to":"1a26ad4f_a9e60eb2","updated":"2015-10-31 00:48:49.000000000","message":"Done","commit_id":"c16643ef16bb57172257f77536f4a282a4929c19"},{"author":{"_account_id":18479,"name":"Slade Baumann","email":"baumann@us.ibm.com","username":"baumann"},"change_message_id":"f1cd47973f73039903234c70d4325d36958d895a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add manage/unmanage volume support for Huawei"},{"line_number":10,"context_line":"drivers. Aslo implemented the required"},{"line_number":11,"context_line":"manage_exsiting_get_size function."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueplant huawei-support-manage-volume"},{"line_number":14,"context_line":"Change-Id: I964d49b9979b710bca445c2d209099dcea64d3da"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a26ad4f_e903a640","line":11,"updated":"2015-10-30 18:42:52.000000000","message":"manage_exsiting_get_size -\u003e manage_existing_get_size","commit_id":"c16643ef16bb57172257f77536f4a282a4929c19"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"aa25d78927ff61c34fb6fd301d90f8968dc28651","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add manage/unmanage volume support for Huawei"},{"line_number":10,"context_line":"drivers. Aslo implemented the required"},{"line_number":11,"context_line":"manage_exsiting_get_size function."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueplant huawei-support-manage-volume"},{"line_number":14,"context_line":"Change-Id: I964d49b9979b710bca445c2d209099dcea64d3da"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a26ad4f_461ac47e","line":11,"in_reply_to":"1a26ad4f_e903a640","updated":"2015-10-31 00:48:49.000000000","message":"Done","commit_id":"c16643ef16bb57172257f77536f4a282a4929c19"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"a87b40b3e2707824b86337e19ca6809f475811b5","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Add manage/unmanage volume support for Huawei"},{"line_number":10,"context_line":"drivers. Aslo implemented the required"},{"line_number":11,"context_line":"manage_exsiting_get_size function."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueplant huawei-support-manage-volume"},{"line_number":14,"context_line":"Change-Id: I964d49b9979b710bca445c2d209099dcea64d3da"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a26ad4f_a35dca16","line":12,"updated":"2015-10-30 21:33:59.000000000","message":"This should also have a DocImpact since you are adding capabilities to the driver.","commit_id":"c16643ef16bb57172257f77536f4a282a4929c19"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"aa25d78927ff61c34fb6fd301d90f8968dc28651","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Add manage/unmanage volume support for Huawei"},{"line_number":10,"context_line":"drivers. Aslo implemented the required"},{"line_number":11,"context_line":"manage_exsiting_get_size function."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueplant huawei-support-manage-volume"},{"line_number":14,"context_line":"Change-Id: I964d49b9979b710bca445c2d209099dcea64d3da"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a26ad4f_26154848","line":12,"in_reply_to":"1a26ad4f_a35dca16","updated":"2015-10-31 00:48:49.000000000","message":"Done","commit_id":"c16643ef16bb57172257f77536f4a282a4929c19"},{"author":{"_account_id":18479,"name":"Slade Baumann","email":"baumann@us.ibm.com","username":"baumann"},"change_message_id":"f1cd47973f73039903234c70d4325d36958d895a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"drivers. Aslo implemented the required"},{"line_number":11,"context_line":"manage_exsiting_get_size function."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueplant huawei-support-manage-volume"},{"line_number":14,"context_line":"Change-Id: I964d49b9979b710bca445c2d209099dcea64d3da"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a26ad4f_69c8f622","line":13,"updated":"2015-10-30 18:42:52.000000000","message":"Should be \"Implements: blueprint huawei-support-manage-volume\"","commit_id":"c16643ef16bb57172257f77536f4a282a4929c19"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"aa25d78927ff61c34fb6fd301d90f8968dc28651","unresolved":false,"context_lines":[{"line_number":10,"context_line":"drivers. Aslo implemented the required"},{"line_number":11,"context_line":"manage_exsiting_get_size function."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueplant huawei-support-manage-volume"},{"line_number":14,"context_line":"Change-Id: I964d49b9979b710bca445c2d209099dcea64d3da"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a26ad4f_c60ed43a","line":13,"in_reply_to":"1a26ad4f_69c8f622","updated":"2015-10-31 00:48:49.000000000","message":"Done","commit_id":"c16643ef16bb57172257f77536f4a282a4929c19"}],"cinder/tests/unit/test_huawei_drivers.py":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"a87b40b3e2707824b86337e19ca6809f475811b5","unresolved":false,"context_lines":[{"line_number":2619,"context_line":"                              self.driver.manage_existing,"},{"line_number":2620,"context_line":"                              test_volume, external_ref)"},{"line_number":2621,"context_line":""},{"line_number":2622,"context_line":"        # Have already in a map."},{"line_number":2623,"context_line":"        with mock.patch.object(huawei_driver.HuaweiBaseDriver,"},{"line_number":2624,"context_line":"                               \u0027check_lun_name_and_id\u0027,"},{"line_number":2625,"context_line":"                               return_value\u003d{\u0027PARENTNAME\u0027: \u0027StoragePool001\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_6306d21e","line":2622,"updated":"2015-10-30 21:33:59.000000000","message":"Suggest: \"Already exists in a map.\"","commit_id":"c16643ef16bb57172257f77536f4a282a4929c19"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"aa25d78927ff61c34fb6fd301d90f8968dc28651","unresolved":false,"context_lines":[{"line_number":2619,"context_line":"                              self.driver.manage_existing,"},{"line_number":2620,"context_line":"                              test_volume, external_ref)"},{"line_number":2621,"context_line":""},{"line_number":2622,"context_line":"        # Have already in a map."},{"line_number":2623,"context_line":"        with mock.patch.object(huawei_driver.HuaweiBaseDriver,"},{"line_number":2624,"context_line":"                               \u0027check_lun_name_and_id\u0027,"},{"line_number":2625,"context_line":"                               return_value\u003d{\u0027PARENTNAME\u0027: \u0027StoragePool001\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_49017504","line":2622,"in_reply_to":"1a26ad4f_6306d21e","updated":"2015-10-31 00:48:49.000000000","message":"Done","commit_id":"c16643ef16bb57172257f77536f4a282a4929c19"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e3318ce156cc7cbaa914a419f7b4f7e593f6d1c1","unresolved":false,"context_lines":[{"line_number":1613,"context_line":"        self.driver.terminate_connection(test_volume, FakeConnector)"},{"line_number":1614,"context_line":"        self.assertTrue(self.driver.restclient.terminateFlag)"},{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":"    def test_get_volume_status(self):"},{"line_number":1617,"context_line":"        self.driver.restclient.login()"},{"line_number":1618,"context_line":"        data \u003d self.driver.get_volume_stats()"},{"line_number":1619,"context_line":"        self.assertEqual(\u00272.0.1\u0027, data[\u0027driver_version\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa80f949_f182dfff","line":1616,"updated":"2015-11-04 19:01:07.000000000","message":"Looks like we need to rename this test. It could be done in the following patch","commit_id":"253d51ada934d39e79599b71b8c01400124325cc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e3318ce156cc7cbaa914a419f7b4f7e593f6d1c1","unresolved":false,"context_lines":[{"line_number":2532,"context_line":"        self.assertEqual(metadata, lun_info[\u0027metadata\u0027])"},{"line_number":2533,"context_line":""},{"line_number":2534,"context_line":"    def test_manage_existing_get_size_fail(self):"},{"line_number":2535,"context_line":"        self.driver.restclient.login()"},{"line_number":2536,"context_line":"        # Neither source-name nor source-id is specified."},{"line_number":2537,"context_line":"        external_ref \u003d {}"},{"line_number":2538,"context_line":"        self.assertRaises(exception.ManageExistingInvalidReference,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa80f949_b1a457a6","line":2535,"updated":"2015-11-04 19:01:07.000000000","message":"IMO, we need to split this test to several to test only one case per test. The same comment for the tests below","commit_id":"253d51ada934d39e79599b71b8c01400124325cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"6b09c1698d18133e259c9a3a2f1c0f8795391a88","unresolved":false,"context_lines":[{"line_number":2532,"context_line":"        self.assertEqual(metadata, lun_info[\u0027metadata\u0027])"},{"line_number":2533,"context_line":""},{"line_number":2534,"context_line":"    def test_manage_existing_get_size_fail(self):"},{"line_number":2535,"context_line":"        self.driver.restclient.login()"},{"line_number":2536,"context_line":"        # Neither source-name nor source-id is specified."},{"line_number":2537,"context_line":"        external_ref \u003d {}"},{"line_number":2538,"context_line":"        self.assertRaises(exception.ManageExistingInvalidReference,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa80f949_e982e051","line":2535,"in_reply_to":"fa80f949_b1a457a6","updated":"2015-11-06 04:47:26.000000000","message":"Done","commit_id":"253d51ada934d39e79599b71b8c01400124325cc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"821b519addfbe411ad644b7f97bec85d41a3151d","unresolved":false,"context_lines":[{"line_number":2532,"context_line":"        self.assertEqual(metadata, lun_info[\u0027metadata\u0027])"},{"line_number":2533,"context_line":""},{"line_number":2534,"context_line":"    def test_manage_existing_get_size_invalid_reference(self):"},{"line_number":2535,"context_line":"        self.driver.restclient.login()"},{"line_number":2536,"context_line":"        # Neither source-name nor source-id is specified."},{"line_number":2537,"context_line":"        external_ref \u003d {}"},{"line_number":2538,"context_line":"        self.assertRaises(exception.ManageExistingInvalidReference,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_8d5a4129","line":2535,"updated":"2015-12-10 19:42:44.000000000","message":"This line should be moved to the setUp method. It could be done in the following patch.","commit_id":"6c444d82075d3b916ee4489e39fda2ec5f66d052"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"821b519addfbe411ad644b7f97bec85d41a3151d","unresolved":false,"context_lines":[{"line_number":2574,"context_line":"                                              mock_get_lun_info):"},{"line_number":2575,"context_line":"        self.driver.restclient.login()"},{"line_number":2576,"context_line":""},{"line_number":2577,"context_line":"        external_ref \u003d {\u0027source-name\u0027: \u0027LUN1\u0027,"},{"line_number":2578,"context_line":"                        \u0027source-id\u0027: \u0027ID1\u0027}"},{"line_number":2579,"context_line":"        size \u003d self.driver.manage_existing_get_size(test_volume,"},{"line_number":2580,"context_line":"                                                    external_ref)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_ed62e5d7","line":2577,"updated":"2015-12-10 19:42:44.000000000","message":"Please, use ddt library here instead of almost the same lines #2577-2590.\n\nThe same comment is related for the tests below","commit_id":"6c444d82075d3b916ee4489e39fda2ec5f66d052"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"8ce19543c839f6d7e78b93cbb66f50be69224c50","unresolved":false,"context_lines":[{"line_number":2047,"context_line":"            ex \u003d self.assertRaises(exception.ManageExistingInvalidReference,"},{"line_number":2048,"context_line":"                                   self.driver.manage_existing,"},{"line_number":2049,"context_line":"                                   test_volume, external_ref)"},{"line_number":2050,"context_line":"            self.assertIsNotNone(re.search(\u0027LUN status is not Normal\u0027, ex.msg))"},{"line_number":2051,"context_line":""},{"line_number":2052,"context_line":"    @mock.patch.object(rest_client.RestClient, \u0027get_hypermetro_pairs\u0027,"},{"line_number":2053,"context_line":"                       return_value\u003d[{\u0027LOCALOBJID\u0027: \u0027ID1\u0027}])"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a7b0d38_c52b2b93","line":2050,"range":{"start_line":2050,"start_character":58,"end_line":2050,"end_character":61},"updated":"2015-12-26 06:50:20.000000000","message":"Normal \u003d\u003d\u003e normal","commit_id":"08c81a3fcf1db899b928d5a2b7cddf3dda487e4d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9c31ec42c96cf66115582af20403d92bc40ab6e1","unresolved":false,"context_lines":[{"line_number":2269,"context_line":"        return fake_fabric_mapping"},{"line_number":2270,"context_line":""},{"line_number":2271,"context_line":""},{"line_number":2272,"context_line":"@ddt.ddt"},{"line_number":2273,"context_line":"class HuaweiFCDriverTestCase(test.TestCase):"},{"line_number":2274,"context_line":""},{"line_number":2275,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_5ed9d955","line":2272,"updated":"2016-01-06 19:02:51.000000000","message":"I don\u0027t see ddt actually being used with these tests. This should probably be removed.","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0b78ad01ed6c3ab67b44768f5c9a45e9a9bc0884","unresolved":false,"context_lines":[{"line_number":2269,"context_line":"        return fake_fabric_mapping"},{"line_number":2270,"context_line":""},{"line_number":2271,"context_line":""},{"line_number":2272,"context_line":"@ddt.ddt"},{"line_number":2273,"context_line":"class HuaweiFCDriverTestCase(test.TestCase):"},{"line_number":2274,"context_line":""},{"line_number":2275,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_0a46ac7a","line":2272,"in_reply_to":"fa69d971_5ed9d955","updated":"2016-01-07 12:27:48.000000000","message":"Done","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"6985dfe9f8a74352a9bc8522cf9e2a8210cbee03","unresolved":false,"context_lines":[{"line_number":2139,"context_line":"        ex \u003d self.assertRaises(exception.ManageExistingInvalidReference,"},{"line_number":2140,"context_line":"                               self.driver.manage_existing,"},{"line_number":2141,"context_line":"                               test_volume, external_ref)"},{"line_number":2142,"context_line":"        self.assertIsNotNone(re.search(\u0027Has already in a LUN group\u0027,"},{"line_number":2143,"context_line":"                                       ex.msg))"},{"line_number":2144,"context_line":""},{"line_number":2145,"context_line":"    @ddt.data({\u0027source-name\u0027: \u0027LUN1\u0027}, {\u0027source-id\u0027: \u0027ID1\u0027})"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_5fb41cf1","line":2142,"range":{"start_line":2142,"start_character":39,"end_line":2142,"end_character":67},"updated":"2016-01-12 19:06:17.000000000","message":"This string needs to be changed to \u0027Already exists in a LUN group\u0027. This is causing the unit test here to fail.","commit_id":"08195bc74d0c468f469a7ea76d489520b1454121"}],"cinder/volume/drivers/huawei/huawei_driver.py":[{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"1e47646c8c9951b321d1c12697624f34dffdfa4c","unresolved":false,"context_lines":[{"line_number":850,"context_line":"        lun_pool \u003d lun_info.get(\u0027PARENTNAME\u0027)"},{"line_number":851,"context_line":"        LOG.debug(\"Pool the LUN belongs to is: %s.\", lun_pool)"},{"line_number":852,"context_line":"        if pool !\u003d lun_pool:"},{"line_number":853,"context_line":"            msg \u003d (_(\"The specified LUN is not belongs to the given pool: %s.\")"},{"line_number":854,"context_line":"                   % pool)"},{"line_number":855,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":856,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_e5ddfde0","line":853,"updated":"2015-11-01 15:10:43.000000000","message":"is not belongs to -\u003e does not belong to","commit_id":"763e12a090c5461a5f88f0df89dfe8098c6f3a0f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"d3b45c89b0fa0cc12c450286aa99a63f60b851aa","unresolved":false,"context_lines":[{"line_number":850,"context_line":"        lun_pool \u003d lun_info.get(\u0027PARENTNAME\u0027)"},{"line_number":851,"context_line":"        LOG.debug(\"Pool the LUN belongs to is: %s.\", lun_pool)"},{"line_number":852,"context_line":"        if pool !\u003d lun_pool:"},{"line_number":853,"context_line":"            msg \u003d (_(\"The specified LUN is not belongs to the given pool: %s.\")"},{"line_number":854,"context_line":"                   % pool)"},{"line_number":855,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":856,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_1695cd3d","line":853,"in_reply_to":"1a26ad4f_e5ddfde0","updated":"2015-11-02 11:16:44.000000000","message":"Done","commit_id":"763e12a090c5461a5f88f0df89dfe8098c6f3a0f"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"1e47646c8c9951b321d1c12697624f34dffdfa4c","unresolved":false,"context_lines":[{"line_number":857,"context_line":"        # Check whether the LUN have snapshot."},{"line_number":858,"context_line":"        if lun_info.get(\u0027SNAPSHOTIDS\u0027):"},{"line_number":859,"context_line":"            msg \u003d _(\"Can\u0027t import LUN: %s to Cinder. Have snapshot associated\""},{"line_number":860,"context_line":"                    \" to it.\") % lun_id"},{"line_number":861,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"        # Check whether the LUN have already in a map."}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_c549e1b8","line":860,"updated":"2015-11-01 15:10:43.000000000","message":"Have -\u003e has\nto -\u003e with","commit_id":"763e12a090c5461a5f88f0df89dfe8098c6f3a0f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"d3b45c89b0fa0cc12c450286aa99a63f60b851aa","unresolved":false,"context_lines":[{"line_number":857,"context_line":"        # Check whether the LUN have snapshot."},{"line_number":858,"context_line":"        if lun_info.get(\u0027SNAPSHOTIDS\u0027):"},{"line_number":859,"context_line":"            msg \u003d _(\"Can\u0027t import LUN: %s to Cinder. Have snapshot associated\""},{"line_number":860,"context_line":"                    \" to it.\") % lun_id"},{"line_number":861,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"        # Check whether the LUN have already in a map."}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_167ced1d","line":860,"in_reply_to":"1a26ad4f_c549e1b8","updated":"2015-11-02 11:16:44.000000000","message":"Done","commit_id":"763e12a090c5461a5f88f0df89dfe8098c6f3a0f"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"1e47646c8c9951b321d1c12697624f34dffdfa4c","unresolved":false,"context_lines":[{"line_number":862,"context_line":""},{"line_number":863,"context_line":"        # Check whether the LUN have already in a map."},{"line_number":864,"context_line":"        if lun_info.get(\u0027EXPOSEDTOINITIATOR\u0027) \u003d\u003d \u0027true\u0027:"},{"line_number":865,"context_line":"            msg \u003d (_(\"Can\u0027t import LUN: %s to Cinder. Have already in a map.\")"},{"line_number":866,"context_line":"                   % lun_id)"},{"line_number":867,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":868,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_65c9ed25","line":865,"updated":"2015-11-01 15:10:43.000000000","message":"Have -\u003e Has","commit_id":"763e12a090c5461a5f88f0df89dfe8098c6f3a0f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"d3b45c89b0fa0cc12c450286aa99a63f60b851aa","unresolved":false,"context_lines":[{"line_number":862,"context_line":""},{"line_number":863,"context_line":"        # Check whether the LUN have already in a map."},{"line_number":864,"context_line":"        if lun_info.get(\u0027EXPOSEDTOINITIATOR\u0027) \u003d\u003d \u0027true\u0027:"},{"line_number":865,"context_line":"            msg \u003d (_(\"Can\u0027t import LUN: %s to Cinder. Have already in a map.\")"},{"line_number":866,"context_line":"                   % lun_id)"},{"line_number":867,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":868,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_b6741936","line":865,"in_reply_to":"1a26ad4f_65c9ed25","updated":"2015-11-02 11:16:44.000000000","message":"Done","commit_id":"763e12a090c5461a5f88f0df89dfe8098c6f3a0f"},{"author":{"_account_id":16793,"name":"Liucheng Jiang","email":"jiangliucheng@huawei.com","username":"Jiangliucheng"},"change_message_id":"a00c0c44ea25706c9a3739116e0661675b533e19","unresolved":false,"context_lines":[{"line_number":877,"context_line":"        model_update.update({\u0027provider_location\u0027: lun_id})"},{"line_number":878,"context_line":"        return model_update"},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"    def check_lun_name_and_id(self, name, id):"},{"line_number":881,"context_line":"        \"\"\"\"Make sure we can find the LUN by the given name or id.\"\"\""},{"line_number":882,"context_line":"        if name:"},{"line_number":883,"context_line":"            lun_id \u003d self.restclient.get_volume_by_name(name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_4c918346","line":880,"updated":"2015-10-31 03:15:28.000000000","message":"The main perpose of this function is to get lun info. Function name should be get_lun_info/get_external_ref_info/(or others).  :)\n\nAnd, it\u0027s and internal function, should start with _ .","commit_id":"763e12a090c5461a5f88f0df89dfe8098c6f3a0f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"d3b45c89b0fa0cc12c450286aa99a63f60b851aa","unresolved":false,"context_lines":[{"line_number":877,"context_line":"        model_update.update({\u0027provider_location\u0027: lun_id})"},{"line_number":878,"context_line":"        return model_update"},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"    def check_lun_name_and_id(self, name, id):"},{"line_number":881,"context_line":"        \"\"\"\"Make sure we can find the LUN by the given name or id.\"\"\""},{"line_number":882,"context_line":"        if name:"},{"line_number":883,"context_line":"            lun_id \u003d self.restclient.get_volume_by_name(name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_9619ddd9","line":880,"in_reply_to":"1a26ad4f_4c918346","updated":"2015-11-02 11:16:44.000000000","message":"Done","commit_id":"763e12a090c5461a5f88f0df89dfe8098c6f3a0f"},{"author":{"_account_id":16793,"name":"Liucheng Jiang","email":"jiangliucheng@huawei.com","username":"Jiangliucheng"},"change_message_id":"a00c0c44ea25706c9a3739116e0661675b533e19","unresolved":false,"context_lines":[{"line_number":895,"context_line":"            lun_info \u003d self.restclient.get_lun_info(id)"},{"line_number":896,"context_line":"            return lun_info"},{"line_number":897,"context_line":"        msg \u003d _(\u0027Must specify source-name or source-id.\u0027)"},{"line_number":898,"context_line":"        raise exception.ManageExistingInvalidReference(msg)"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":"    def unmanage(self, volume):"},{"line_number":901,"context_line":"        \"\"\"Export Huawei volume from Cinder.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_4c8ae31c","line":898,"updated":"2015-10-31 03:15:28.000000000","message":"raise exception.ManageExistingInvalidReference(existing_ref\u003dref, reason\u003dreason). Reference to emc/hitachi/ibm/netapp...(no dell)","commit_id":"763e12a090c5461a5f88f0df89dfe8098c6f3a0f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"d3b45c89b0fa0cc12c450286aa99a63f60b851aa","unresolved":false,"context_lines":[{"line_number":895,"context_line":"            lun_info \u003d self.restclient.get_lun_info(id)"},{"line_number":896,"context_line":"            return lun_info"},{"line_number":897,"context_line":"        msg \u003d _(\u0027Must specify source-name or source-id.\u0027)"},{"line_number":898,"context_line":"        raise exception.ManageExistingInvalidReference(msg)"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":"    def unmanage(self, volume):"},{"line_number":901,"context_line":"        \"\"\"Export Huawei volume from Cinder.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_343d57c4","line":898,"in_reply_to":"1a26ad4f_4c8ae31c","updated":"2015-11-02 11:16:44.000000000","message":"Done","commit_id":"763e12a090c5461a5f88f0df89dfe8098c6f3a0f"},{"author":{"_account_id":16793,"name":"Liucheng Jiang","email":"jiangliucheng@huawei.com","username":"Jiangliucheng"},"change_message_id":"a00c0c44ea25706c9a3739116e0661675b533e19","unresolved":false,"context_lines":[{"line_number":902,"context_line":"        volume_id \u003d volume[\u0027id\u0027]"},{"line_number":903,"context_line":"        LOG.debug(\"Unmanage volume: %s\", volume_id)"},{"line_number":904,"context_line":"        lun_name \u003d huawei_utils.encode_name(volume_id)"},{"line_number":905,"context_line":"        lun_id \u003d self.restclient.get_volume_by_name(lun_name)"},{"line_number":906,"context_line":"        if not lun_id:"},{"line_number":907,"context_line":"            LOG.error(_LE(\"Can\u0027t find LUN on the array for volume: %s.\"),"},{"line_number":908,"context_line":"                      volume_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_ecc96f5a","line":905,"updated":"2015-10-31 03:15:28.000000000","message":"sometimes lun_id is 0. \u0027if not lun_id\u0027 is all right?","commit_id":"763e12a090c5461a5f88f0df89dfe8098c6f3a0f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"d3b45c89b0fa0cc12c450286aa99a63f60b851aa","unresolved":false,"context_lines":[{"line_number":902,"context_line":"        volume_id \u003d volume[\u0027id\u0027]"},{"line_number":903,"context_line":"        LOG.debug(\"Unmanage volume: %s\", volume_id)"},{"line_number":904,"context_line":"        lun_name \u003d huawei_utils.encode_name(volume_id)"},{"line_number":905,"context_line":"        lun_id \u003d self.restclient.get_volume_by_name(lun_name)"},{"line_number":906,"context_line":"        if not lun_id:"},{"line_number":907,"context_line":"            LOG.error(_LE(\"Can\u0027t find LUN on the array for volume: %s.\"),"},{"line_number":908,"context_line":"                      volume_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_569ca55c","line":905,"in_reply_to":"1a26ad4f_ecc96f5a","updated":"2015-11-02 11:16:44.000000000","message":"lun_id is a str here. It will be \"0\", not 0, thanks.","commit_id":"763e12a090c5461a5f88f0df89dfe8098c6f3a0f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"67b386749cd6d80407c976751d82a9a5f999efd9","unresolved":false,"context_lines":[{"line_number":962,"context_line":"    def unmanage(self, volume):"},{"line_number":963,"context_line":"        \"\"\"Export Huawei volume from Cinder.\"\"\""},{"line_number":964,"context_line":"        volume_id \u003d volume[\u0027id\u0027]"},{"line_number":965,"context_line":"        LOG.debug(\"Unmanage volume: %s\", volume_id)"},{"line_number":966,"context_line":"        lun_name \u003d huawei_utils.encode_name(volume_id)"},{"line_number":967,"context_line":"        lun_id \u003d self.restclient.get_volume_by_name(lun_name)"},{"line_number":968,"context_line":"        if not lun_id:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_c1f70cf4","line":965,"updated":"2015-11-03 12:03:00.000000000","message":"Missing . after \"%s\".","commit_id":"4b4ccf4283fffa52b620eae1e7681cb6560d5762"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"09686f64db69fbbc260adaa5b58ea8852473e189","unresolved":false,"context_lines":[{"line_number":962,"context_line":"    def unmanage(self, volume):"},{"line_number":963,"context_line":"        \"\"\"Export Huawei volume from Cinder.\"\"\""},{"line_number":964,"context_line":"        volume_id \u003d volume[\u0027id\u0027]"},{"line_number":965,"context_line":"        LOG.debug(\"Unmanage volume: %s\", volume_id)"},{"line_number":966,"context_line":"        lun_name \u003d huawei_utils.encode_name(volume_id)"},{"line_number":967,"context_line":"        lun_id \u003d self.restclient.get_volume_by_name(lun_name)"},{"line_number":968,"context_line":"        if not lun_id:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_c82f0fa0","line":965,"in_reply_to":"fa80f949_c1f70cf4","updated":"2015-11-04 02:18:09.000000000","message":"Done","commit_id":"4b4ccf4283fffa52b620eae1e7681cb6560d5762"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"67b386749cd6d80407c976751d82a9a5f999efd9","unresolved":false,"context_lines":[{"line_number":975,"context_line":"                   \u0027new_name\u0027: new_name})"},{"line_number":976,"context_line":"        self.restclient.rename_lun(lun_id, new_name)"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"    def manage_existing_get_size(self, volume, external_ref):"},{"line_number":979,"context_line":"        \"\"\"Get the size of the existing volume.\"\"\""},{"line_number":980,"context_line":"        lun_info \u003d self._get_lun_by_ref(external_ref)"},{"line_number":981,"context_line":"        size \u003d float(lun_info.get(\u0027CAPACITY\u0027)) // constants.CAPACITY_UNIT"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_e19a50c5","line":978,"updated":"2015-11-03 12:03:00.000000000","message":"\"volume\" is not used.","commit_id":"4b4ccf4283fffa52b620eae1e7681cb6560d5762"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e3318ce156cc7cbaa914a419f7b4f7e593f6d1c1","unresolved":false,"context_lines":[{"line_number":960,"context_line":"                   \u0027new_name\u0027: new_name})"},{"line_number":961,"context_line":"        self.restclient.rename_lun(lun_id, new_name)"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"        model_update \u003d {}"},{"line_number":964,"context_line":"        model_update.update({\u0027provider_location\u0027: lun_id})"},{"line_number":965,"context_line":"        return model_update"},{"line_number":966,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa80f949_31de2712","line":963,"updated":"2015-11-04 19:01:07.000000000","message":"Could be replaced to \nreturn {\u0027provider_location\u0027: lun_id}","commit_id":"253d51ada934d39e79599b71b8c01400124325cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"6b09c1698d18133e259c9a3a2f1c0f8795391a88","unresolved":false,"context_lines":[{"line_number":960,"context_line":"                   \u0027new_name\u0027: new_name})"},{"line_number":961,"context_line":"        self.restclient.rename_lun(lun_id, new_name)"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"        model_update \u003d {}"},{"line_number":964,"context_line":"        model_update.update({\u0027provider_location\u0027: lun_id})"},{"line_number":965,"context_line":"        return model_update"},{"line_number":966,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa80f949_6edcb6e4","line":963,"in_reply_to":"fa80f949_31de2712","updated":"2015-11-06 04:47:26.000000000","message":"Done","commit_id":"253d51ada934d39e79599b71b8c01400124325cc"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"75e2537790ec176f0e3b22c03cb39368b18538c2","unresolved":false,"context_lines":[{"line_number":848,"context_line":"    def _check_lun_valid_for_manage(self, lun_info, external_ref):"},{"line_number":849,"context_line":"        lun_id \u003d lun_info.get(\u0027ID\u0027)"},{"line_number":850,"context_line":"        # Check whether the LUN have snapshot."},{"line_number":851,"context_line":"        snapshots \u003d lun_info.get(\u0027SNAPSHOTIDS\u0027)"},{"line_number":852,"context_line":"        if snapshots and snapshots[1:-1]:"},{"line_number":853,"context_line":"            msg \u003d _(\"Can\u0027t import LUN %s to Cinder. Has snapshot associated\""},{"line_number":854,"context_line":"                    \" with it.\") % lun_id"}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_572524c0","line":851,"updated":"2015-11-06 22:39:26.000000000","message":"Won\u0027t \u0027snapshots[1:-1]\u0027 be checking that at least 3 snapshots exist (as opposed to just one)?\n\nAlso could default to [] in line above by using \"lun_info.get(\u0027SNAPSHOTIDS\u0027, [])\" so we remove first part of the if.","commit_id":"6c444d82075d3b916ee4489e39fda2ec5f66d052"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0be1770f022bac2fa3a36b54051d6b710c99a042","unresolved":false,"context_lines":[{"line_number":848,"context_line":"    def _check_lun_valid_for_manage(self, lun_info, external_ref):"},{"line_number":849,"context_line":"        lun_id \u003d lun_info.get(\u0027ID\u0027)"},{"line_number":850,"context_line":"        # Check whether the LUN have snapshot."},{"line_number":851,"context_line":"        snapshots \u003d lun_info.get(\u0027SNAPSHOTIDS\u0027)"},{"line_number":852,"context_line":"        if snapshots and snapshots[1:-1]:"},{"line_number":853,"context_line":"            msg \u003d _(\"Can\u0027t import LUN %s to Cinder. Has snapshot associated\""},{"line_number":854,"context_line":"                    \" with it.\") % lun_id"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_6c7bfb7b","line":851,"in_reply_to":"da85f559_572524c0","updated":"2015-11-19 12:40:56.000000000","message":"If there is no item in it, the snapshot is like \"[]\", it\u0027s a string.The chars \"[\" and \"]\" will always be there.","commit_id":"6c444d82075d3b916ee4489e39fda2ec5f66d052"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"75e2537790ec176f0e3b22c03cb39368b18538c2","unresolved":false,"context_lines":[{"line_number":864,"context_line":"                existing_ref\u003dexternal_ref, reason\u003dmsg)"},{"line_number":865,"context_line":""},{"line_number":866,"context_line":"        for pair in hypermetro_pairs:"},{"line_number":867,"context_line":"            if pair.get(\u0027LOCALOBJID\u0027) \u003d\u003d lun_id:"},{"line_number":868,"context_line":"                msg \u003d (_(\"Can\u0027t import LUN %s to Cinder. Has already in a \""},{"line_number":869,"context_line":"                         \"HyperMetroPair.\") % lun_id)"},{"line_number":870,"context_line":"                raise exception.ManageExistingInvalidReference("}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_5a13095d","line":867,"updated":"2015-11-06 22:39:26.000000000","message":"May want to rephrase to something like  \"Can\u0027t import LUN %s to Cinder because it is already being used in a HyperMetroPair.\" \n\nAlso seeing a lot of references to this same, may want to define this once and just plug the \"in a %s\" part of it","commit_id":"6c444d82075d3b916ee4489e39fda2ec5f66d052"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0be1770f022bac2fa3a36b54051d6b710c99a042","unresolved":false,"context_lines":[{"line_number":864,"context_line":"                existing_ref\u003dexternal_ref, reason\u003dmsg)"},{"line_number":865,"context_line":""},{"line_number":866,"context_line":"        for pair in hypermetro_pairs:"},{"line_number":867,"context_line":"            if pair.get(\u0027LOCALOBJID\u0027) \u003d\u003d lun_id:"},{"line_number":868,"context_line":"                msg \u003d (_(\"Can\u0027t import LUN %s to Cinder. Has already in a \""},{"line_number":869,"context_line":"                         \"HyperMetroPair.\") % lun_id)"},{"line_number":870,"context_line":"                raise exception.ManageExistingInvalidReference("}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_4794d041","line":867,"in_reply_to":"da85f559_5a13095d","updated":"2015-11-19 12:40:56.000000000","message":"Done","commit_id":"6c444d82075d3b916ee4489e39fda2ec5f66d052"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"6d8fef02ead87c9e7627af83b8ee1c72e71ef42d","unresolved":false,"context_lines":[{"line_number":935,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":936,"context_line":"                existing_ref\u003dexternal_ref, reason\u003dmsg)"},{"line_number":937,"context_line":""},{"line_number":938,"context_line":"        # Check whether the LUN has already in a map."},{"line_number":939,"context_line":"        if lun_info.get(\u0027EXPOSEDTOINITIATOR\u0027) \u003d\u003d \u0027true\u0027:"},{"line_number":940,"context_line":"            msg \u003d (_(\"Can\u0027t import LUN %s to Cinder. Has already in a map.\")"},{"line_number":941,"context_line":"                   % lun_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_db4b1858","line":938,"updated":"2015-12-11 01:08:55.000000000","message":"If LUN doesn\u0027t in LUN group, it will not in a map.","commit_id":"6c444d82075d3b916ee4489e39fda2ec5f66d052"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"821b519addfbe411ad644b7f97bec85d41a3151d","unresolved":false,"context_lines":[{"line_number":950,"context_line":"        lun_info \u003d self._get_lun_by_ref(external_ref)"},{"line_number":951,"context_line":"        lun_id \u003d lun_info.get(\u0027ID\u0027)"},{"line_number":952,"context_line":"        lun_pool \u003d lun_info.get(\u0027PARENTNAME\u0027)"},{"line_number":953,"context_line":"        LOG.debug(\"Storage pool of existing volume: %s.\", lun_pool)"},{"line_number":954,"context_line":"        if pool !\u003d lun_pool:"},{"line_number":955,"context_line":"            msg \u003d (_(\"The specified LUN does not belong to the given \""},{"line_number":956,"context_line":"                     \"pool: %s.\") % pool)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_8de001fc","line":953,"updated":"2015-12-10 19:42:44.000000000","message":"Please, add volume id to the log message. It will be helpful for troubleshooting.","commit_id":"6c444d82075d3b916ee4489e39fda2ec5f66d052"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9c31ec42c96cf66115582af20403d92bc40ab6e1","unresolved":false,"context_lines":[{"line_number":848,"context_line":"    def _check_lun_valid_for_manage(self, lun_info, external_ref):"},{"line_number":849,"context_line":"        lun_id \u003d lun_info.get(\u0027ID\u0027)"},{"line_number":850,"context_line":"        # Check whether the LUN is Normal."},{"line_number":851,"context_line":"        if (lun_info.get(\u0027HEALTHSTATUS\u0027) !\u003d constants.STATUS_HEALTH):"},{"line_number":852,"context_line":"            msg \u003d _(\"Can\u0027t import LUN %s to Cinder. LUN status is not \""},{"line_number":853,"context_line":"                    \"normal.\") % lun_id"},{"line_number":854,"context_line":"            raise exception.ManageExistingInvalidReference("}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_3ea425b8","line":851,"updated":"2016-01-06 19:02:51.000000000","message":"Outer () not needed on the condition check.","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9c31ec42c96cf66115582af20403d92bc40ab6e1","unresolved":false,"context_lines":[{"line_number":864,"context_line":""},{"line_number":865,"context_line":"        for pair in hypermetro_pairs:"},{"line_number":866,"context_line":"            if pair.get(\u0027LOCALOBJID\u0027) \u003d\u003d lun_id:"},{"line_number":867,"context_line":"                msg \u003d (_(\"Can\u0027t import LUN %s to Cinder. Has already in a \""},{"line_number":868,"context_line":"                         \"HyperMetroPair.\") % lun_id)"},{"line_number":869,"context_line":"                raise exception.ManageExistingInvalidReference("},{"line_number":870,"context_line":"                    existing_ref\u003dexternal_ref, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_5e8eb92e","line":867,"updated":"2016-01-06 19:02:51.000000000","message":"Has already what? I think this needs to be rephrased. Has already been imported.","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0b78ad01ed6c3ab67b44768f5c9a45e9a9bc0884","unresolved":false,"context_lines":[{"line_number":864,"context_line":""},{"line_number":865,"context_line":"        for pair in hypermetro_pairs:"},{"line_number":866,"context_line":"            if pair.get(\u0027LOCALOBJID\u0027) \u003d\u003d lun_id:"},{"line_number":867,"context_line":"                msg \u003d (_(\"Can\u0027t import LUN %s to Cinder. Has already in a \""},{"line_number":868,"context_line":"                         \"HyperMetroPair.\") % lun_id)"},{"line_number":869,"context_line":"                raise exception.ManageExistingInvalidReference("},{"line_number":870,"context_line":"                    existing_ref\u003dexternal_ref, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_ac7a1d22","line":867,"in_reply_to":"fa69d971_5e8eb92e","updated":"2016-01-07 12:27:48.000000000","message":"Here it just means the LUN we want to import have been used in a HyperMetroPair, so we don\u0027t allow to import this LUN to Cinder. Here this LUN have not imported to Cinder yet. It\u0027s just a check whether this LUN allowed to be imported to Cinder. Thanks.","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9c31ec42c96cf66115582af20403d92bc40ab6e1","unresolved":false,"context_lines":[{"line_number":877,"context_line":"                # Can\u0027t check whether the LUN has SplitMirror with it,"},{"line_number":878,"context_line":"                # just pass the check and log it."},{"line_number":879,"context_line":"                split_mirrors \u003d []"},{"line_number":880,"context_line":"                LOG.warning(_LW(\u0027No License for SplitMirror.\u0027))"},{"line_number":881,"context_line":"            else:"},{"line_number":882,"context_line":"                msg \u003d _(\"Failed to get SplitMirror.\")"},{"line_number":883,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_bea6d5ab","line":880,"updated":"2016-01-06 19:02:51.000000000","message":"License should probably start with a lower case l here.","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0b78ad01ed6c3ab67b44768f5c9a45e9a9bc0884","unresolved":false,"context_lines":[{"line_number":877,"context_line":"                # Can\u0027t check whether the LUN has SplitMirror with it,"},{"line_number":878,"context_line":"                # just pass the check and log it."},{"line_number":879,"context_line":"                split_mirrors \u003d []"},{"line_number":880,"context_line":"                LOG.warning(_LW(\u0027No License for SplitMirror.\u0027))"},{"line_number":881,"context_line":"            else:"},{"line_number":882,"context_line":"                msg \u003d _(\"Failed to get SplitMirror.\")"},{"line_number":883,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_cc975138","line":880,"in_reply_to":"fa69d971_bea6d5ab","updated":"2016-01-07 12:27:48.000000000","message":"Done","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9c31ec42c96cf66115582af20403d92bc40ab6e1","unresolved":false,"context_lines":[{"line_number":890,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":891,"context_line":""},{"line_number":892,"context_line":"            if (mirror.get(\u0027PRILUNID\u0027) \u003d\u003d lun_id) or (lun_id in target_luns):"},{"line_number":893,"context_line":"                msg \u003d (_(\"Can\u0027t import LUN %s to Cinder. Has already in a \""},{"line_number":894,"context_line":"                         \"SplitMirror.\") % lun_id)"},{"line_number":895,"context_line":"                raise exception.ManageExistingInvalidReference("},{"line_number":896,"context_line":"                    existing_ref\u003dexternal_ref, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_9e70b141","line":893,"updated":"2016-01-06 19:02:51.000000000","message":"Has already been imported?","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0b78ad01ed6c3ab67b44768f5c9a45e9a9bc0884","unresolved":false,"context_lines":[{"line_number":890,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":891,"context_line":""},{"line_number":892,"context_line":"            if (mirror.get(\u0027PRILUNID\u0027) \u003d\u003d lun_id) or (lun_id in target_luns):"},{"line_number":893,"context_line":"                msg \u003d (_(\"Can\u0027t import LUN %s to Cinder. Has already in a \""},{"line_number":894,"context_line":"                         \"SplitMirror.\") % lun_id)"},{"line_number":895,"context_line":"                raise exception.ManageExistingInvalidReference("},{"line_number":896,"context_line":"                    existing_ref\u003dexternal_ref, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_ec6ed5fe","line":893,"in_reply_to":"fa69d971_9e70b141","updated":"2016-01-07 12:27:48.000000000","message":"Same to line 867, we found the LUN has been used on array, so not allowed to import.","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9c31ec42c96cf66115582af20403d92bc40ab6e1","unresolved":false,"context_lines":[{"line_number":903,"context_line":"                # Can\u0027t check whether the LUN has migration task with it,"},{"line_number":904,"context_line":"                # just pass the check and log it."},{"line_number":905,"context_line":"                migration_tasks \u003d []"},{"line_number":906,"context_line":"                LOG.warning(_LW(\u0027No License for migration.\u0027))"},{"line_number":907,"context_line":"            else:"},{"line_number":908,"context_line":"                msg \u003d _(\"Failed to get migration task.\")"},{"line_number":909,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_dea14995","line":906,"updated":"2016-01-06 19:02:51.000000000","message":"Lower case l in license.","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0b78ad01ed6c3ab67b44768f5c9a45e9a9bc0884","unresolved":false,"context_lines":[{"line_number":903,"context_line":"                # Can\u0027t check whether the LUN has migration task with it,"},{"line_number":904,"context_line":"                # just pass the check and log it."},{"line_number":905,"context_line":"                migration_tasks \u003d []"},{"line_number":906,"context_line":"                LOG.warning(_LW(\u0027No License for migration.\u0027))"},{"line_number":907,"context_line":"            else:"},{"line_number":908,"context_line":"                msg \u003d _(\"Failed to get migration task.\")"},{"line_number":909,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_2c506d31","line":906,"in_reply_to":"fa69d971_dea14995","updated":"2016-01-07 12:27:48.000000000","message":"Done","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9c31ec42c96cf66115582af20403d92bc40ab6e1","unresolved":false,"context_lines":[{"line_number":911,"context_line":"        for migration in migration_tasks:"},{"line_number":912,"context_line":"            if lun_id in (migration.get(\u0027PARENTID\u0027),"},{"line_number":913,"context_line":"                          migration.get(\u0027TARGETLUNID\u0027)):"},{"line_number":914,"context_line":"                msg \u003d (_(\"Can\u0027t import LUN %s to Cinder. Has already in a \""},{"line_number":915,"context_line":"                         \"migration task.\") % lun_id)"},{"line_number":916,"context_line":"                raise exception.ManageExistingInvalidReference("},{"line_number":917,"context_line":"                    existing_ref\u003dexternal_ref, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_feae8d7f","line":914,"updated":"2016-01-06 19:02:51.000000000","message":"Has already what?","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9c31ec42c96cf66115582af20403d92bc40ab6e1","unresolved":false,"context_lines":[{"line_number":919,"context_line":"        # Check whether the LUN exists in a LUN copy task."},{"line_number":920,"context_line":"        lun_copy \u003d lun_info.get(\u0027LUNCOPYIDS\u0027)"},{"line_number":921,"context_line":"        if lun_copy and lun_copy[1:-1]:"},{"line_number":922,"context_line":"            msg \u003d (_(\"Can\u0027t import LUN %s to Cinder. Has already in \""},{"line_number":923,"context_line":"                     \"a LUN copy task.\") % lun_id)"},{"line_number":924,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":925,"context_line":"                existing_ref\u003dexternal_ref, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_dec86957","line":922,"updated":"2016-01-06 19:02:51.000000000","message":"Same.","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9c31ec42c96cf66115582af20403d92bc40ab6e1","unresolved":false,"context_lines":[{"line_number":927,"context_line":"        # Check whether the LUN exists in a remote replication task."},{"line_number":928,"context_line":"        rmt_replication \u003d lun_info.get(\u0027REMOTEREPLICATIONIDS\u0027)"},{"line_number":929,"context_line":"        if rmt_replication and rmt_replication[1:-1]:"},{"line_number":930,"context_line":"            msg \u003d (_(\"Can\u0027t import LUN %s to Cinder. Has already in \""},{"line_number":931,"context_line":"                     \"a remote replication task.\") % lun_id)"},{"line_number":932,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":933,"context_line":"                existing_ref\u003dexternal_ref, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_7ec37d38","line":930,"updated":"2016-01-06 19:02:51.000000000","message":"Same.","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9c31ec42c96cf66115582af20403d92bc40ab6e1","unresolved":false,"context_lines":[{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        # Check whether the LUN exists in a LUN mirror."},{"line_number":936,"context_line":"        if self.restclient.is_lun_in_mirror(lun_id):"},{"line_number":937,"context_line":"            msg \u003d (_(\"Can\u0027t import LUN %s to Cinder. Has already in \""},{"line_number":938,"context_line":"                     \"a LUN mirror.\") % lun_id)"},{"line_number":939,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":940,"context_line":"                existing_ref\u003dexternal_ref, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_fee52ddb","line":937,"updated":"2016-01-06 19:02:51.000000000","message":"Same.","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9c31ec42c96cf66115582af20403d92bc40ab6e1","unresolved":false,"context_lines":[{"line_number":941,"context_line":""},{"line_number":942,"context_line":"        # Check whether the LUN has already in LUN group."},{"line_number":943,"context_line":"        if lun_info.get(\u0027ISADD2LUNGROUP\u0027) \u003d\u003d \u0027true\u0027:"},{"line_number":944,"context_line":"            msg \u003d (_(\"Can\u0027t import LUN %s to Cinder. Has already in a LUN \""},{"line_number":945,"context_line":"                     \"group.\") % lun_id)"},{"line_number":946,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":947,"context_line":"                existing_ref\u003dexternal_ref, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_decf0954","line":944,"updated":"2016-01-06 19:02:51.000000000","message":"Same.","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c06d7f3d7dbde6683caccb9bd41df781bbb0c7a6","unresolved":false,"context_lines":[{"line_number":864,"context_line":""},{"line_number":865,"context_line":"        for pair in hypermetro_pairs:"},{"line_number":866,"context_line":"            if pair.get(\u0027LOCALOBJID\u0027) \u003d\u003d lun_id:"},{"line_number":867,"context_line":"                msg \u003d (_(\"Can\u0027t import LUN %s to Cinder. Has already in a \""},{"line_number":868,"context_line":"                         \"HyperMetroPair.\") % lun_id)"},{"line_number":869,"context_line":"                raise exception.ManageExistingInvalidReference("},{"line_number":870,"context_line":"                    existing_ref\u003dexternal_ref, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa69d971_a4a4b44a","line":867,"updated":"2016-01-11 15:21:36.000000000","message":"Thanks for your explanation in patchset 13, but my point was this is not a complete sentence. It is not grammatically correct. \"Has already in a HyperMetroPair\" is not a complete sentence.\n\nThis some issue is repeated several times throughout.","commit_id":"2fb532e2f015c093b573dfa1d5e14f1631a9ba0a"}],"cinder/volume/drivers/huawei/rest_client.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"67b386749cd6d80407c976751d82a9a5f999efd9","unresolved":false,"context_lines":[{"line_number":1859,"context_line":""},{"line_number":1860,"context_line":"        return result.get(\u0027data\u0027) or []"},{"line_number":1861,"context_line":""},{"line_number":1862,"context_line":"    def get_target_luns(self, id):"},{"line_number":1863,"context_line":"        url \u003d (\"/SPLITMIRRORTARGETLUN/targetLUN?TYPE\u003d228\u0026PARENTID\u003d0\u0026\""},{"line_number":1864,"context_line":"               \"PARENTTYPE\u003d220\")"},{"line_number":1865,"context_line":"        result \u003d self.call(url, None, \"GET\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_e12570ae","line":1862,"updated":"2015-11-03 12:03:00.000000000","message":"\"id\" is not used.","commit_id":"4b4ccf4283fffa52b620eae1e7681cb6560d5762"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"09686f64db69fbbc260adaa5b58ea8852473e189","unresolved":false,"context_lines":[{"line_number":1859,"context_line":""},{"line_number":1860,"context_line":"        return result.get(\u0027data\u0027) or []"},{"line_number":1861,"context_line":""},{"line_number":1862,"context_line":"    def get_target_luns(self, id):"},{"line_number":1863,"context_line":"        url \u003d (\"/SPLITMIRRORTARGETLUN/targetLUN?TYPE\u003d228\u0026PARENTID\u003d0\u0026\""},{"line_number":1864,"context_line":"               \"PARENTTYPE\u003d220\")"},{"line_number":1865,"context_line":"        result \u003d self.call(url, None, \"GET\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_c334d0df","line":1862,"in_reply_to":"fa80f949_e12570ae","updated":"2015-11-04 02:18:09.000000000","message":"Done","commit_id":"4b4ccf4283fffa52b620eae1e7681cb6560d5762"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"75e2537790ec176f0e3b22c03cb39368b18538c2","unresolved":false,"context_lines":[{"line_number":1849,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1850,"context_line":"        msg \u003d _(\u0027Get HyperMetroPair error.\u0027)"},{"line_number":1851,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1852,"context_line":""},{"line_number":1853,"context_line":"        return result.get(\u0027data\u0027) or []"},{"line_number":1854,"context_line":""},{"line_number":1855,"context_line":"    def get_split_mirrors(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_3ac5e55a","line":1852,"updated":"2015-11-06 22:39:26.000000000","message":"Optionally could use result.get(\u0027data\u0027, [])","commit_id":"6c444d82075d3b916ee4489e39fda2ec5f66d052"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0be1770f022bac2fa3a36b54051d6b710c99a042","unresolved":false,"context_lines":[{"line_number":1849,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1850,"context_line":"        msg \u003d _(\u0027Get HyperMetroPair error.\u0027)"},{"line_number":1851,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1852,"context_line":""},{"line_number":1853,"context_line":"        return result.get(\u0027data\u0027) or []"},{"line_number":1854,"context_line":""},{"line_number":1855,"context_line":"    def get_split_mirrors(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_e74864ce","line":1852,"in_reply_to":"da85f559_3ac5e55a","updated":"2015-11-19 12:40:56.000000000","message":"Done","commit_id":"6c444d82075d3b916ee4489e39fda2ec5f66d052"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"75e2537790ec176f0e3b22c03cb39368b18538c2","unresolved":false,"context_lines":[{"line_number":1867,"context_line":"        msg \u003d _(\u0027Get target LUN of SplitMirror error.\u0027)"},{"line_number":1868,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1869,"context_line":""},{"line_number":1870,"context_line":"        target_luns \u003d []"},{"line_number":1871,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":1872,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":1873,"context_line":"                target_luns.append(item.get(\u0027ID\u0027))"}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_5a7c6920","line":1870,"updated":"2015-11-06 22:39:26.000000000","message":"Optionally could do \"for item in result.get(\u0027data\u0027, [])\"","commit_id":"6c444d82075d3b916ee4489e39fda2ec5f66d052"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0be1770f022bac2fa3a36b54051d6b710c99a042","unresolved":false,"context_lines":[{"line_number":1867,"context_line":"        msg \u003d _(\u0027Get target LUN of SplitMirror error.\u0027)"},{"line_number":1868,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1869,"context_line":""},{"line_number":1870,"context_line":"        target_luns \u003d []"},{"line_number":1871,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":1872,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":1873,"context_line":"                target_luns.append(item.get(\u0027ID\u0027))"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_6759d48d","line":1870,"in_reply_to":"da85f559_5a7c6920","updated":"2015-11-19 12:40:56.000000000","message":"Done","commit_id":"6c444d82075d3b916ee4489e39fda2ec5f66d052"}],"releasenotes/notes/huawei-support-manage-volume-2a746cd05621423d.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9c31ec42c96cf66115582af20403d92bc40ab6e1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"features:"},{"line_number":2,"context_line":"  - Add manage/unmanage volume support."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"fa69d971_61051c0f","line":2,"updated":"2016-01-06 19:02:51.000000000","message":"Needs to say for what driver(s).","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0b78ad01ed6c3ab67b44768f5c9a45e9a9bc0884","unresolved":false,"context_lines":[{"line_number":1,"context_line":"features:"},{"line_number":2,"context_line":"  - Add manage/unmanage volume support."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"fa69d971_af3f6fb2","line":2,"in_reply_to":"fa69d971_61051c0f","updated":"2016-01-07 12:27:48.000000000","message":"Done","commit_id":"ca74483c51d4fef1b16e44507f8830e997f31247"}]}
